一、實(shí)驗(yàn)?zāi)康?/h1>
了解MP3文件的結(jié)構(gòu),掌握MP3音頻解碼的原理,并實(shí)現(xiàn)基于SYSBIOS系統(tǒng),將MP3格式的音頻解碼為PCM格式。
二、實(shí)驗(yàn)原理
1、MP3音頻格式
MP3是一種音頻壓縮技術(shù),其全稱(chēng)是動(dòng)態(tài)影像專(zhuān)家壓縮標(biāo)準(zhǔn)音頻層面3(Moving Picture Experts Group Audio Layer III),簡(jiǎn)稱(chēng)為MP3。它被設(shè)計(jì)用來(lái)大幅度地降低音頻數(shù)據(jù)量。
利用 MPEG Audio Layer 3 的技術(shù),將音樂(lè)以1:10 甚至 1:12 的壓縮率,壓縮成容量較小的文件,而對(duì)于大多數(shù)用戶來(lái)說(shuō)重放的音質(zhì)與最初的不壓縮音頻相比沒(méi)有明顯的下降。
傳統(tǒng)的MP3算法需要完成大量的高精度浮點(diǎn)計(jì)算,其解碼速度和效率依賴于通用浮點(diǎn)運(yùn)算單元的支持。大部分的專(zhuān)用MP3解碼播放系統(tǒng)均需要使用DSP處理器或浮點(diǎn)協(xié)處理器處理浮點(diǎn)指令并完成高速浮點(diǎn)運(yùn)算過(guò)程。
2、MP3編解碼
MP3音頻壓縮包含編碼和解碼兩部分,編碼是將原始信號(hào)轉(zhuǎn)換成電平信號(hào)的過(guò)程,解碼即是逆過(guò)程,人耳感受聲音的頻率范圍是20Hz-20kHz,MP3截掉了大量的冗余信號(hào)和無(wú)關(guān)的信號(hào),編碼器將原始聲音變換到頻率域,經(jīng)過(guò)量化和編碼形成MP3位流。解碼器要簡(jiǎn)單得多,它的任務(wù)是從編碼后的譜線成分中,經(jīng)過(guò)反量化和逆變換,提取出聲音信號(hào)。
(1)編碼:從信息論的觀點(diǎn)來(lái)看,描述信源的數(shù)據(jù)是信息和數(shù)據(jù)冗余之和,即:數(shù)據(jù)=信息+數(shù)據(jù)冗余。音頻信號(hào)在時(shí)域和頻域上具有相關(guān)性,也即存在數(shù)據(jù)冗余。將音頻作為一個(gè)信源,音頻編碼的實(shí)質(zhì)是減少音頻中的冗余。通常我們采用的是PCM編碼,PCM通過(guò)抽樣、量化、編碼三個(gè)步驟將連續(xù)變化的模擬信號(hào)轉(zhuǎn)換為數(shù)字信號(hào)。
(2)解碼:編碼的逆過(guò)程,將MP3文件解碼成PCM數(shù)據(jù)流輸出。
3、MP3文件結(jié)構(gòu)
MP3文件數(shù)據(jù)由多個(gè)幀組成,幀是MP3文件最小組成單位。每個(gè)幀又由幀頭、附加信息和聲音數(shù)據(jù)組成。每個(gè)幀播放時(shí)間是0.026秒,其長(zhǎng)度隨位率的不同而不等。有些MP3文件末尾有些額外字節(jié)存放非聲音數(shù)據(jù)的說(shuō)明信息。
MP3文件大體上分為三個(gè)部分:ID3V2+音頻數(shù)據(jù)+ID3V1。
ID3一般位于一個(gè)MP3文件的開(kāi)頭或末尾的若干字節(jié)內(nèi),記錄該MP3文件的歌手、標(biāo)題、專(zhuān)輯名稱(chēng)、年代、風(fēng)格等信息,ID3分為兩個(gè)版本,V1版ID3在文件末尾的固定128字節(jié),以TAG字符開(kāi)頭,若沒(méi)有則認(rèn)為無(wú)ID3V1信息,V2版ID3位于MP3的開(kāi)頭,長(zhǎng)度可變。
4、音頻數(shù)據(jù)解析
每個(gè)幀都有一個(gè)幀頭,長(zhǎng)度是四個(gè)字節(jié),幀后面可能有2字節(jié)的CRC校驗(yàn),取決于幀頭的第16位,為0則無(wú)校驗(yàn),為1則有校驗(yàn),后面是可變長(zhǎng)度的附加信息,對(duì)于標(biāo)準(zhǔn)的MP3文件來(lái)說(shuō),其長(zhǎng)度是32字節(jié),緊接其后的是壓縮的聲音數(shù)據(jù),當(dāng)解碼器讀到此處時(shí)就進(jìn)行解碼了。
5、libmp3lame庫(kù)
lame是一個(gè)有名的開(kāi)源MP3編解碼庫(kù),使用lame庫(kù)只需要包含lame.h頭文件。
6、SYS/BIOS 操作系統(tǒng)
SYS/BIOS 是一個(gè)可擴(kuò)展的實(shí)時(shí)的操作系統(tǒng)(可拓展的實(shí)時(shí)內(nèi)核)。
(1)具有非??焖俚捻憫?yīng)時(shí)間(在中斷和任務(wù)切換時(shí)達(dá)到較短的延遲),響應(yīng)時(shí)間的確定性。
(2)SYS/BIOS提供了搶占式多線程,硬件抽象,實(shí)時(shí)分析和配置工具。
(3)優(yōu)化的內(nèi)存分配和堆棧管理(盡量少的消耗和碎片)。
(4)SYS/BIOS的設(shè)計(jì)是為了最大限度地減少對(duì)內(nèi)存和CPU的要求.
能夠?qū)崿F(xiàn)系統(tǒng)的模塊化并可裁剪。
(5)用于實(shí)時(shí)調(diào)度和同步的應(yīng)用程序或?qū)崟r(shí)的設(shè)備。
TASK任務(wù)
TASK任務(wù)模塊是操作系統(tǒng)中最基本的模塊,每個(gè)任務(wù)是一個(gè)單獨(dú)的線程,各個(gè)線程(任務(wù))具有各自的優(yōu)先級(jí)。SYS/BIOS任務(wù)對(duì)象是被任務(wù)模塊管理的線程。
(1)任務(wù)模塊動(dòng)態(tài)調(diào)度和搶占任務(wù)是基于任務(wù)的優(yōu)先級(jí)和任務(wù)當(dāng)前執(zhí)行的狀態(tài)的。這確保了處理器總是給予最高優(yōu)先級(jí)的線程準(zhǔn)備運(yùn)行。
(2)SYS/BIOS的系統(tǒng)組件可以動(dòng)態(tài)及靜態(tài)創(chuàng)建任務(wù),可以通過(guò)調(diào)用Task_create()動(dòng)態(tài)創(chuàng)建Task對(duì)象,也可以在配置中靜態(tài)創(chuàng)建Task對(duì)象。
(3)動(dòng)態(tài)和靜態(tài)創(chuàng)建任務(wù)的主要區(qū)別是:動(dòng)態(tài)創(chuàng)建的線程可以在運(yùn)行時(shí)刪除,而靜態(tài)創(chuàng)建的任務(wù)占用更少的內(nèi)存資源。
7、程序流程設(shè)計(jì)
程序流程設(shè)計(jì)中首先要進(jìn)行使能SD并配置SD設(shè)備驅(qū)動(dòng),接著初始化SD設(shè)備,檢測(cè)SD卡的狀態(tài),注冊(cè)SD卡的讀寫(xiě)方式,然后在SD卡內(nèi)創(chuàng)建PCM文件,打開(kāi)MP3文件后初始化文件指針到起始點(diǎn),接著初始化解碼器數(shù)據(jù)結(jié)構(gòu)并配置成解碼模式,最后執(zhí)行MP3文件解析,解碼完成后卸載設(shè)備即可。
三、操作現(xiàn)象
1、實(shí)驗(yàn)設(shè)備
2、硬件連接
(1)將工程目錄下的song.mp3文件拷貝到SD卡后,把SD卡插入卡槽內(nèi)。
(3)將撥碼開(kāi)關(guān)撥到DEBUG模式01111,連接實(shí)驗(yàn)箱電源,撥動(dòng)電源開(kāi)關(guān)上電。
3、軟件操作
導(dǎo)入工程,選擇Demo文件夾下的對(duì)應(yīng)工程
編譯工程,生成可執(zhí)行文件
將CCS連接開(kāi)發(fā)板并加載程序
點(diǎn)擊運(yùn)行程序
運(yùn)行程序后,Console 窗口會(huì)打印信息,正在處理音頻數(shù)據(jù)。
大概等待1分鐘,解碼完成。
實(shí)驗(yàn)結(jié)束后,先點(diǎn)擊黃色按鈕暫停程序運(yùn)行,再點(diǎn)擊紅色按鈕退出CCS與實(shí)驗(yàn)板的連接,最后實(shí)驗(yàn)箱斷電即可。
-
驅(qū)動(dòng)器
+關(guān)注
關(guān)注
52文章
8236瀏覽量
146365 -
PCM
+關(guān)注
關(guān)注
1文章
195瀏覽量
53227 -
SD卡
+關(guān)注
關(guān)注
2文章
565瀏覽量
63901 -
CRC校驗(yàn)
+關(guān)注
關(guān)注
0文章
84瀏覽量
15209 -
音頻解碼
+關(guān)注
關(guān)注
0文章
26瀏覽量
16509
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論