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