原创 [Video and Audio Data Processing] 將PCM16LE雙聲道音頻採樣數據轉換爲PCM8音頻採樣數據

0. 代碼 extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <stdio.h> #i

原创 [Algorithm] 計算機算法在數學證明中都是可推導的嗎?

0. 背景 題主是計算機小白,近期開始對算法產生興趣。數學因爲其極強的自洽性而成爲現代科學的主流敘事語言,但是現代數學本身仍舊有很多定理和猜想尚需純粹的理論證明。 而計算機科學正像其他科學一樣,肯定有很多未知的領域尚需探索,但是有

原创 [Video and Audio Data Processing] 分離RGB24像素數據中的R、G、B分量

0. Visual Studio 2019可編譯通過的代碼如下: RGB24格式的每個像素的三個分量是連續存儲的。一幀寬高分別爲w、h的RGB24圖像一共佔用wh3 Byte的存儲空間。 RGB24格式規定首先存儲第一個像素的R、

原创 [Video and Audio Data Processing] 截取部分PCM16LE單聲道音頻採樣數據

0. 代碼 extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <stdio.h> #i

原创 [Video and Audio Data Processing] AAC音頻碼流解析

0. AAC介紹 AAC音頻文件的每一幀都由一個ADTS頭和AAC ES(AAC音頻數據)組成。 以下是wiki的介紹:https://wiki.multimedia.cx/index.php?title=ADTS 0.1 其

原创 [Video and Audio Data Processing] RGB24格式像素數據封裝爲BMP圖像

0. BMP格式重點介紹 0.1 BMP採用的是小端(Little Endian)存儲方式 這種存儲方式中“RGB24”格式的像素的分量存儲的先後順序爲B、G、R。由於RGB24格式存儲的順序是R、G、B,所以需要將“R”和“B”

原创 [Video and Audio Data Processing]將PCM16LE雙聲道音頻採樣數據轉換爲WAVE格式音頻數據

0. 代碼 代碼還是用的雷神寫的,我幾乎每句代碼都寫了註解,可以在visual studio 2019成功跑通運行。 音源獲取地址: https://github.com/leixiaohua1020/simplest_media

原创 [Video and Audio Data Processing] 將PCM16LE雙聲道音頻採樣數據的聲音速度提高一倍

0. 代碼 extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <stdio.h> #i

原创 [Video and Audio Data Processing] 計算兩個YUV420P像素數據的PSNR

0. 背景 主要是對比兩張YUV圖片中亮度分量Y的PSNR; PSNR通常用於質量評價,就是計算受損圖像與原始圖像之間的差別,以此來評價受損圖像的質量。 mse的計算公式如下: PSNR計算公式如下: 其中M,N分別爲圖像的寬

原创 [Linux Device Driver] 調整串口log打印等級命令

這兩個命令我老忘,乾脆寫篇博客,當做了筆記。 echo “8 8 8 8”>/proc/sys/kernel/printk echo “0 0 0 0”>/proc/sys/kernel/printk

原创 [Video and Audio Data Processing] H.264視頻碼流解析

0. 基本概念 0.1 視頻碼流在視頻播放器中的位置如下所示: H.264原始碼流(又稱爲“裸流”)是由一個一個的NALU組成的。他們的結構如下圖所示。 0.2 更準確來說,原始的NALU單元組成如下: [start code

原创 [C++] 青蛙跳臺階問題

0. 題幹 一隻小青蛙,每次跳臺階,他可以一下跳一個臺階,或者兩個臺階,問假設有n個臺階,這隻青蛙一共有多種跳的方法 1. 分析解決 列出一個臺階,1種方法;兩個臺階,2種方法; 3個臺階的時候,青蛙可以從第一個臺階跳上去,也可以

原创 [c++] 兩個int類型的數值互換

0. 題幹 int 類型的兩個數,a = 7, b = 9,不借用任何變量,將a和b的值互換,並打印輸出:a = 9; b = 7 主要是用異或的思想; 1. 代碼 #include<iostream> //#include<al

原创 [Video and Audio Data Processing] PCM 16 bit左右聲道數據分離

0. 代碼如下 extern "C" { #ifdef __cplusplus #define __STDC_CONSTANT_MACROS #endif } extern "C" { #include <stdio.h>

原创 [從零開始] 使用FFmpeg對ogg音頻文件進行處理

0. 背景 FFmpeg是一套可以用來記錄、轉換數字音頻、視頻,並能將其轉化爲流的開源計算機程序。它包括了目前領先的音/視頻編碼庫libavcodec。其作者是法國天才程序員Fabrice Bellard; 他還有一個更重要的代表