欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

波形文件的播放方法與裝置的制作方法

文檔序號:2823538閱讀:243來源:國知局
專利名稱:波形文件的播放方法與裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種聲音文件的播放方法與裝置,特別地,涉及一種波形文件的播放方法與裝置。
背景技術(shù)
聲音的WAV文件即波形文件,是微軟公司開發(fā)的音頻文件格式,它來源于對聲音模擬波形的采樣。用不同的采樣頻率對聲音的模擬波形進行采樣可以得到一系列離散的采樣點,以不同的量化位數(shù),一般為8比特或16比特,把這些采樣點的值轉(zhuǎn)換成二進制數(shù),然后存入磁盤,這就產(chǎn)生了波形文件。
由于波形文件記錄聲音的波形,因而只要采樣頻率高、量化位數(shù)高、機器速度快,利用該格式記錄的聲音文件能夠和原聲基本一致,質(zhì)量非常高,但這樣做的代價就是文件太大。例如,一首4分鐘左右44KHz采樣的立體聲音樂就要占用30至40MB的存儲空間。
IMA(交互式多媒體協(xié)議)ADPCM(自適應差分脈沖編碼調(diào)制)算法,是一種針對16比特或者更高比特的聲音波形數(shù)據(jù)的有損壓縮算法,它將聲音流中每次采樣的16比特數(shù)據(jù)以4比特存儲,所以壓縮比為1∶4。而壓縮/解壓縮算法非常簡單,所以是一種低空間消耗、高質(zhì)量聲音獲得的好途徑。著名的WestWood在它的許多游戲里都使用了該技術(shù),如沙丘II、命令與征服、紅色警戒等,保存聲音的數(shù)據(jù)文件后綴名為.AUD的大多用IMA ADPCM算法壓縮。
然而,對于IMA ADPCM格式的波形文件,如何實現(xiàn)播放總時長計算及定時播放功能,目前尚無解決方案。

發(fā)明內(nèi)容
本發(fā)明的目的在于,實現(xiàn)IMA ADPCM格式的波形文件的播放總時長計算及定時播放功能。
根據(jù)本發(fā)明的第一方面,提供一種IMA ADPCM格式的波形文件的播放方法,包括以下步驟將文件的總數(shù)據(jù)長度減去所有塊的數(shù)據(jù)頭長度,確定總壓縮數(shù)據(jù)長度;以及將總壓縮數(shù)據(jù)長度除以每秒鐘的壓縮數(shù)據(jù)長度,確定播放總時長。
在第一方面中,優(yōu)選地,所有塊的數(shù)據(jù)頭長度通過以下步驟確定將總數(shù)據(jù)長度除以每個塊的長度,確定塊總數(shù);根據(jù)所述塊總數(shù)與聲道數(shù)及單聲道數(shù)據(jù)頭字節(jié)數(shù)的乘積,確定所有塊的數(shù)據(jù)頭長度。
優(yōu)選地,播放方法在微控制器上實現(xiàn)。
優(yōu)選地,在確定播放總時長之后,還包括以下定時播放步驟將塊總數(shù)乘以選定播放時間與所述播放總時長之比,確定需跳過的塊數(shù)。進一步優(yōu)選地,在確定需跳過的塊數(shù)之后,定時播放步驟還包括將需跳過的塊數(shù)乘以每個塊的長度,確定需跳過的字節(jié)數(shù)。
根據(jù)本發(fā)明的第二方面,提供一種IMA ADPCM格式的波形文件的播放裝置,該播放裝置包括總壓縮數(shù)據(jù)長度確定裝置,用于將文件的總數(shù)據(jù)長度減去所有塊的數(shù)據(jù)頭長度,確定總壓縮數(shù)據(jù)長度;以及播放總時長確定裝置,用于將總壓縮數(shù)據(jù)長度除以每秒鐘的壓縮數(shù)據(jù)長度,確定播放總時長。
在第二方面中,優(yōu)選地,總壓縮數(shù)據(jù)長度確定裝置包括所有塊的數(shù)據(jù)頭長度確定裝置,其用于將總數(shù)據(jù)長度除以每個塊的長度,確定塊總數(shù);并根據(jù)塊總數(shù)與聲道數(shù)及單聲道數(shù)據(jù)頭字節(jié)數(shù)的乘積,確定所有塊的數(shù)據(jù)頭長度。
優(yōu)選地,播放裝置利用微控制器實現(xiàn)。
優(yōu)選地,播放裝置還包括定時播放裝置,所述定時播放裝置包括需跳過的塊數(shù)確定裝置,用于將塊總數(shù)乘以選定播放時間與播放總時長之比,確定需跳過的塊數(shù)。進一步優(yōu)選地,定時播放裝置還包括需跳過的字節(jié)數(shù)確定裝置,用于將需跳過的塊數(shù)乘以每個塊的長度,確定需跳過的字節(jié)數(shù)。
按照本發(fā)明,出于計算精度和復雜度的平衡考慮,在確定播放總時長時,將文件各數(shù)據(jù)塊的數(shù)據(jù)頭中一個未被壓縮的采樣點忽略不計,這樣,在犧牲較小精度的前提下削減了計算的復雜度,從而簡化了計算。


為更好地理解本發(fā)明,下面結(jié)合附圖和具體實施方式
對本發(fā)明作進一步說明,其中圖1是IMA ADPCM格式的波形文件的結(jié)構(gòu)示意圖。
具體實施例方式
參照圖1,圖1是IMA ADPCM格式的波形文件的結(jié)構(gòu)示意圖。該文件由文件頭和數(shù)據(jù)碼流組成,數(shù)據(jù)碼流以塊為單位,塊是最小的單獨解碼單元。每塊的大小在文件頭中用塊長度(BlockAlign)來標識,除此之外,文件頭中還包含以下信息采樣率(SmplRate)指聲音信號在“模-數(shù)”轉(zhuǎn)換過程中單位時間內(nèi)采樣的次數(shù),單位為采樣個數(shù)/秒;每采樣點位數(shù)(BitsPerSmpl)指記錄每次采樣值數(shù)值大小的位數(shù),即每個采樣點所用的比特個數(shù)。對于IMA ADPCM格式的波形文件,該參數(shù)為4比特;聲道數(shù)(Channels)聲音通道的個數(shù),是指一次采樣所記錄產(chǎn)生的聲音波形個數(shù),單聲道為1,雙聲道為2;總數(shù)據(jù)長度(DataSize)指所有塊的總字節(jié)個數(shù)。
IMA ADPCM格式的波形文件有單聲道和雙聲道之分,對單聲道文件而言,每個塊有4字節(jié)的數(shù)據(jù)頭2字節(jié)用來標識一組原始的未被壓縮的數(shù)據(jù),另外2字節(jié)用來表示所用的解碼索引;對雙聲道文件而言,數(shù)據(jù)頭就是8字節(jié)。塊中其余數(shù)據(jù)則為壓縮后的ADPCM數(shù)據(jù),如前所述,所有塊的數(shù)據(jù)總長度在波形文件的文件頭中指出。
根據(jù)本發(fā)明,要確定IMA ADPCM格式的波形文件的播放總時長,為簡化計算的復雜度,不考慮各塊數(shù)據(jù)頭中的采樣點,如單聲道文件數(shù)據(jù)頭4個字節(jié)中或雙聲道文件數(shù)據(jù)頭8個字節(jié)中所包含的一個未壓縮采樣點。
首先,通過將文件的總數(shù)據(jù)長度減去所有塊的數(shù)據(jù)頭長度,可確定文件的總壓縮數(shù)據(jù)長度。這里,可將總數(shù)據(jù)長度除以每個塊的長度,來計算塊總數(shù),再將塊總數(shù)與聲道數(shù)及單聲道數(shù)據(jù)頭字節(jié)數(shù)相乘,來確定所有塊的數(shù)據(jù)頭長度。而總數(shù)據(jù)長度、每個塊的長度及聲道數(shù)信息可從文件頭中獲得。
其次,將計算的總壓縮數(shù)據(jù)長度除以每秒鐘的壓縮數(shù)據(jù)長度,可計算出播放總時長。本領(lǐng)域技術(shù)人員了解,聲音文件每秒鐘的壓縮數(shù)據(jù)長度可由聲道數(shù)與每采樣點位數(shù)及采樣率三者相乘再除以8獲得,其中除以8的運算可通過在計算機中右移3位實現(xiàn),這樣,播放總時長就能夠確定。
本發(fā)明尤其適合在運算能力較差、對運算精度要求不是很高的處理器件如微控制器(MCU)上實現(xiàn)。為盡可能提高精度,可使用毫秒作為播放總時長的計算結(jié)果單位??紤]到微控制器32位計算溢出的問題,最后再將總時長單位從秒轉(zhuǎn)化為毫秒,否則會因數(shù)據(jù)太大而導致溢出錯誤。
因此,IMA ADPCM格式的波形文件的播放總時長可按下式計算,其中TotalTime為播放總時長,計算結(jié)果單位為毫秒TotalTime=[DataSize-(4*Channels)*(DataSize/BlockAlign)]/[(Channels*BitsPerSmpl*SmplRate)>>3]*1000在確定了播放總時長的基礎(chǔ)上,可進一步根據(jù)輸入的選定播放時間實現(xiàn)定時播放。因解碼時需利用數(shù)據(jù)頭中的信息,所以定時播放時需要跳過的字節(jié)個數(shù)必須是塊長度的整數(shù)倍,因而,可直接計算需要跳過的塊個數(shù),然后再轉(zhuǎn)化為需要跳過的字節(jié)數(shù)。
通過將文件的塊總數(shù)乘以選定播放時間與播放總時長之比,就能夠確定需要跳過的塊個數(shù)。接下來,再將需要跳過的塊個數(shù)乘以每個塊的長度,就確定了需要跳過的字節(jié)數(shù)。
因此,可按下式計算定時播放時需要跳過的塊個數(shù),其中PassBlkNum為需要跳過的塊個數(shù),SeekPos為需要跳過的時間,單位為毫秒PassBlkNum=(DataSize/BlockAlign*(SeekPos/1000)/(TotalTime/1000));在這里,同樣考慮了微控制器32位溢出的問題。相應地,定時播放時需要跳過的字節(jié)數(shù)可按下式計算,其中PassByteNum為要跳過的字節(jié)數(shù),它必須是塊長度的整數(shù)倍PassByteNum=PassBlkNum*BlockAlign本發(fā)明中,由于各塊數(shù)據(jù)頭中包含的一個采樣點沒有參與到運算中,每個塊會有一個采樣點的精度損失。在聲道數(shù)為1且塊長度為512字節(jié)的情況下,精度損失約為1/1000秒。比如對于采樣率為48K的數(shù)據(jù)來講,48000個塊會損失48000個采樣點,也就是1秒鐘的數(shù)據(jù);而48000個決所包含的采樣點數(shù)目為48000*(512-4)*2,相應時間為[48000*(512-4)*2]/48000=1016秒,因此,相當于1016秒會有1秒的損失。另外,利用微控制器實現(xiàn)本發(fā)明時,考慮到微控制器的整數(shù)除法和32位溢出的問題,也會有一些精度損失。
本發(fā)明可應用于帶有錄音功能的MP3播放器、從網(wǎng)絡下載聲音文件等多種場合,這對本領(lǐng)域技術(shù)人員來講是顯然的。
顯而易見,在此描述的本發(fā)明可以有許多變化,這種變化不能認為偏離本發(fā)明的精神和范圍。因此,所有對本領(lǐng)域技術(shù)人員顯而易見的改變,都包括在本權(quán)利要求書的涵蓋范圍之內(nèi)。
權(quán)利要求
1.一種IMA ADPCM格式的波形文件的播放方法,包括以下步驟將文件的總數(shù)據(jù)長度減去所有塊的數(shù)據(jù)頭長度,確定總壓縮數(shù)據(jù)長度;以及將所述總壓縮數(shù)據(jù)長度除以每秒鐘的壓縮數(shù)據(jù)長度,確定播放總時長。
2.如權(quán)利要求1所述的播放方法,其特征在于,所述所有塊的數(shù)據(jù)頭長度通過以下步驟確定將總數(shù)據(jù)長度除以每個塊的長度,確定塊總數(shù);根據(jù)所述塊總數(shù)與聲道數(shù)及單聲道數(shù)據(jù)頭字節(jié)數(shù)的乘積,確定所有塊的數(shù)據(jù)頭長度。
3.如權(quán)利要求2所述的播放方法,其特征在于,所述播放方法在微控制器上實現(xiàn)。
4.如權(quán)利要求2或3所述的播放方法,其特征在于,在確定播放總時長之后,還包括定時播放步驟,所述定時播放步驟包括將所述塊總數(shù)乘以選定播放時間與所述播放總時長之比,確定需跳過的塊數(shù)。
5.如權(quán)利要求4所述的播放方法,其特征在于,在確定需跳過的塊數(shù)之后,所述定時播放步驟還包括將所述需跳過的塊數(shù)乘以每個塊的長度,確定需跳過的字節(jié)數(shù)。
6.一種IMA ADPCM格式的波形文件的播放裝置,包括總壓縮數(shù)據(jù)長度確定裝置,用于將文件的總數(shù)據(jù)長度減去所有塊的數(shù)據(jù)頭長度,確定總壓縮數(shù)據(jù)長度;以及播放總時長確定裝置,用于將所述總壓縮數(shù)據(jù)長度除以每秒鐘的壓縮數(shù)據(jù)長度,確定播放總時長。
7.如權(quán)利要求6所述的播放裝置,其特征在于,所述總壓縮數(shù)據(jù)長度確定裝置包括所有塊的數(shù)據(jù)頭長度確定裝置,其用于將總數(shù)據(jù)長度除以每個塊的長度,確定塊總數(shù);并根據(jù)所述塊總數(shù)與聲道數(shù)及單聲道數(shù)據(jù)頭字節(jié)數(shù)的乘積,確定所有塊的數(shù)據(jù)頭長度。
8.如權(quán)利要求7所述的播放裝置,其特征在于,所述播放裝置利用微控制器實現(xiàn)。
9.如權(quán)利要求7或8所述的播放裝置,其特征在于,所述播放裝置還包括定時播放裝置,所述定時播放裝置包括需跳過的塊數(shù)確定裝置,用于將所述塊總數(shù)乘以選定播放時間與所述播放總時長之比,確定需跳過的塊數(shù)。
10.如權(quán)利要求9所述的播放裝置,其特征在于,所述定時播放裝置還包括需跳過的字節(jié)數(shù)確定裝置,用于將所述需跳過的塊數(shù)乘以每個塊的長度,確定需跳過的字節(jié)數(shù)。
全文摘要
本發(fā)明公開了一種IMA ADPCM格式的波形文件的播放方法及裝置,該方法包括以下步驟將文件的總數(shù)據(jù)長度減去所有塊的數(shù)據(jù)頭長度,確定總壓縮數(shù)據(jù)長度;以及將總壓縮數(shù)據(jù)長度除以每秒鐘的壓縮數(shù)據(jù)長度,確定播放總時長。并在此基礎(chǔ)上根據(jù)輸入的選定播放時間實現(xiàn)定時播放功能。本發(fā)明將文件各塊的數(shù)據(jù)頭中一個未被壓縮的采樣點忽略不計,在犧牲較小精度的前提下削減了計算的復雜度,從而簡化了計算。
文檔編號G10H7/00GK1753081SQ20051011518
公開日2006年3月29日 申請日期2005年11月15日 優(yōu)先權(quán)日2005年11月15日
發(fā)明者王大治 申請人:北京中星微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1
乳源| 平乐县| 海晏县| 利川市| 安阳县| 集贤县| 宝坻区| 琼海市| 泰兴市| 西安市| 宜都市| 庆安县| 苍南县| 南安市| 上思县| 庐江县| 土默特右旗| 博客| 开远市| 罗源县| 晴隆县| 北宁市| 台州市| 莒南县| 灌阳县| 遂昌县| 靖安县| 阜新市| 沿河| 肃南| 宁蒗| 恩平市| 宁远县| 翼城县| 丹寨县| 新乡市| 友谊县| 个旧市| 布尔津县| 香港| 抚远县|