基于A(yíng)RM平臺的MP3軟解碼算法研究與實(shí)現
3.1 解碼器引擎初始化
用MP3文件初始化解碼器,初始化過(guò)程中,解碼器讀取每一幀的幀頭信息而不對數據進(jìn)行解碼,快速計算出該文件的播放時(shí)間,并根據文件大小以秒或分鐘為單位內建解碼位置索引。解碼位置索引的目的是為了快速的根據時(shí)間定位待解碼數據在文件中的位置。本文引用地址:http://dyxdggzs.com/article/201610/306022.htm
數據流緩存提供的功能有以下幾點(diǎn):
初始化:該功能申請堆中的一塊內存,用于以后存放緩存數據。
注銷(xiāo):負責釋放初始化時(shí)申請的內存。
寫(xiě)入數據:向緩存的當前寫(xiě)入位置后寫(xiě)入指定大小的數據。
跳過(guò)指定大小數據:將當前讀取位置移動(dòng)到指定位置。
獲取錯誤信息:返回操作過(guò)程中產(chǎn)生的錯誤信息。
幀同步:將讀取位置跳轉到下一幀開(kāi)始位置。該操作的主要算法是每次讀取緩存11個(gè)比特,若這些比特全為1,則把其當做下一幀的開(kāi)始位置。通過(guò)研究可知,該種算法并不能準確判斷下一幀的開(kāi)始,但這種算法不進(jìn)行幀頭解碼,也不會(huì )漏掉數據。從時(shí)間和空間上講,都是一種比較好的選擇。
解碼引擎以幀為解碼單位,每次輸出一幀的解碼輸出結構,結構中包括pcm數據、長(cháng)度、采樣率、聲道數,播放時(shí)間等信息。
評論