專利名稱:一種音頻碼流的重同步方法及重同步裝置的制作方法
技術(shù)領(lǐng)域:
本發(fā)明主要涉及音頻解碼處理領(lǐng)域,特別是指一種音頻碼流的重同步方法及重同步裝置。
背景技術(shù):
音頻文件通常以音頻碼流的形式存在,如MPEG (Moving Picture ExpertsGroup, 動(dòng)態(tài)影像壓縮)Audio Layerl (MPl)、MPEG Audio Layer2 (MP2), MPEG Audio Layer3 (MP3) 等。以 MP3 (Moving Picture Experts Group AudioLayer3,一種音頻壓縮方式)為例,一個(gè) MP3文件的基本組成單元是幀,各音頻幀的頭部是一個(gè)4字節(jié)的幀頭,然后是若干字節(jié)的音頻數(shù)據(jù),如圖1所示。幀頭的前11個(gè)bits (比特)均為1(如不需要支持MPEG2.5,則可認(rèn)為是12bits),作為同步字標(biāo)識(shí),標(biāo)志著音頻幀的起始,幀頭中還包含ID (Identity,身份標(biāo)識(shí)碼)、碼率、采樣率和聲道數(shù)等重要信息。解碼器在解碼一個(gè)音頻碼流文件時(shí),從第一幀的幀頭開始,先解析幀頭,獲得當(dāng)前幀的基本信息,然后解析音頻數(shù)據(jù),重構(gòu)出一幀PCM(Pulse CodeModulation,脈碼調(diào)制)信號(hào),這個(gè)過(guò)程逐幀重復(fù)進(jìn)行。正常情況下,解碼完當(dāng)前幀碼流后,緊接著就是下一幀碼流的幀頭,因此解碼過(guò)程可以正常進(jìn)行,也就是說(shuō),解碼器只要實(shí)現(xiàn)了第一幀碼流的同步,后續(xù)碼流的同步可以自動(dòng)實(shí)現(xiàn)。但是當(dāng)進(jìn)行快進(jìn),快退等碼流拖動(dòng)操作后,送入解碼器的碼流一般不是從一幀的幀頭開始;或者某一幀碼流中存在錯(cuò)誤,碼流的同步,解碼過(guò)程被中斷時(shí), 解碼器都需要實(shí)現(xiàn)碼流的重新同步,也即定位最鄰近的下一幀碼流的起始位置,從該幀碼流開始重復(fù)上述的解析幀頭,解析音頻數(shù)據(jù),重構(gòu)PCM信號(hào)的過(guò)程,圖2是對(duì)所述過(guò)程的直觀描述。如前所述,每一幀碼流的前Ilbits取值均為1,作為同步字標(biāo)識(shí),因此一般通過(guò)搜索同步字標(biāo)識(shí)來(lái)實(shí)現(xiàn)重同步,即在碼流中逐字節(jié)向前搜索,只要某字節(jié)Sbits取值均為1, 而下一個(gè)字節(jié)的前:3bits取值均為1,則認(rèn)為該字節(jié)即為一幀碼流的第一個(gè)字節(jié)。這種重同步方法過(guò)程簡(jiǎn)單,運(yùn)算量很小。但是由于音頻碼流數(shù)據(jù)中也存在符合條件的偽同步字,而該方法缺乏必要的校驗(yàn)機(jī)制,因此極易實(shí)現(xiàn)錯(cuò)誤的重同步。解碼器在解碼一個(gè)音頻幀時(shí),如果不是從幀頭開始解碼,則解碼過(guò)程無(wú)法正常進(jìn)行,可能中途退出解碼過(guò)程;即使完成解碼過(guò)程,重構(gòu)的PCM信號(hào)中也會(huì)含有沖擊噪聲;錯(cuò)誤嚴(yán)重時(shí)解碼器會(huì)死機(jī)或崩潰。以上雖然主要是以MP3碼流為例進(jìn)行說(shuō)明,但對(duì)于其它格式的音頻碼流來(lái)說(shuō),也存在同樣的問(wèn)題,因此,迫切需要一種新的音頻碼流重同步方案。
發(fā)明內(nèi)容
本發(fā)明提出一種音頻碼流的重同步方法及重同步裝置,在重同步過(guò)程中引入校驗(yàn)機(jī)制,從而能夠?qū)崿F(xiàn)準(zhǔn)確的重同步,使得解碼過(guò)程能夠順利的繼續(xù)進(jìn)行。本發(fā)明的技術(shù)方案是這樣實(shí)現(xiàn)的一種音頻碼流的重同步方法,包括
搜索音頻碼流中的待選同步字;搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭;對(duì)所述幀頭進(jìn)行校驗(yàn),校驗(yàn)通過(guò)后,以所述幀頭開始重新進(jìn)行解碼。優(yōu)選的,對(duì)所述幀頭進(jìn)行校驗(yàn)具體包括根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法,如果所述幀頭合法,則校驗(yàn)通過(guò)。優(yōu)選的,根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法后還包括計(jì)算包含所述幀頭的音頻幀的幀長(zhǎng);根據(jù)所述音頻幀的幀長(zhǎng)定位和提取下一個(gè)音頻幀的幀頭;根據(jù)幀頭中的參數(shù)值判斷所述幀頭與所述下一個(gè)音頻幀的幀頭是否一致,如果一致,則校驗(yàn)通過(guò)。優(yōu)選的,根據(jù)所述音頻幀的幀長(zhǎng)定位和提取下一個(gè)音頻幀的幀頭后還包括根據(jù)所述下一個(gè)音頻幀的幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述下一個(gè)音頻幀的幀頭是
否合法。優(yōu)選的,計(jì)算包含所述幀頭的音頻幀的幀長(zhǎng)前還包括根據(jù)幀頭中的參數(shù)值判斷所述幀頭與參考幀頭是否一致,如果一致,則校驗(yàn)通過(guò)。一種音頻碼流的重同步裝置,包括搜索模塊,用于搜索音頻碼流中的待選同步字;提取模塊,用于搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭;校驗(yàn)?zāi)K,用于對(duì)所述幀頭進(jìn)行校驗(yàn);解碼模塊,用于校驗(yàn)通過(guò)后,以所述幀頭開始重新進(jìn)行解碼。優(yōu)選的,所述校驗(yàn)?zāi)K包括第一判斷模塊,用于根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法。優(yōu)選的,所述校驗(yàn)?zāi)K還包括計(jì)算模塊,用于計(jì)算包含所述幀頭的音頻幀的幀長(zhǎng);定位模塊,用于根據(jù)所述音頻幀的幀長(zhǎng)定位和提取下一個(gè)音頻幀的幀頭;第二判斷模塊,用于根據(jù)幀頭中的參數(shù)值判斷所述幀頭與所述下一個(gè)音頻幀的幀頭是否一致。優(yōu)選的,所述校驗(yàn)?zāi)K還包括第三判斷模塊,用于根據(jù)所述下一個(gè)音頻幀的幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述下一個(gè)音頻幀的幀頭是否合法。優(yōu)選的,所述校驗(yàn)?zāi)K還包括第四判斷模塊,用于根據(jù)幀頭中的參數(shù)值判斷所述幀頭與參考幀頭是否一致。本發(fā)明技術(shù)方案在重同步過(guò)程中引入校驗(yàn)機(jī)制,通過(guò)判斷根據(jù)待選同步字提取的幀頭是否是正確的幀頭,從而能夠保證解碼過(guò)程的順利進(jìn)行,避免了偽同步字對(duì)重同步的影響。
為了更清楚地說(shuō)明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)
4有技術(shù)描述中所需要使用的附圖作簡(jiǎn)單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來(lái)講,在不付出創(chuàng)造性勞動(dòng)性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖1為一種音頻碼流的結(jié)構(gòu)示意圖;圖2為現(xiàn)有技術(shù)中解碼過(guò)程的流程示意圖;圖3為本發(fā)明一種音頻碼流的重同步方法第一實(shí)施例的流程示意圖;圖4為本發(fā)明一種音頻碼流的重同步方法第二實(shí)施例的流程示意圖;圖5為本發(fā)明一種音頻碼流的重同步裝置第一實(shí)施例的組成結(jié)構(gòu)示意圖。
具體實(shí)施例方式下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例?;诒景l(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有作出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。需要說(shuō)明的是,為了更好的說(shuō)明技術(shù)方案,在以下各實(shí)施例中,都是以MP3這種音頻碼流為例對(duì)各實(shí)施例的技術(shù)方案進(jìn)行說(shuō)明,本領(lǐng)域技術(shù)人員可以理解,所述技術(shù)方案不僅適合MP3,還適合MP1、MP2以及其它各種格式類型的音頻碼流,并不能因此而對(duì)本發(fā)明的保護(hù)范圍有任何的限定。參照?qǐng)D3,為本發(fā)明一種音頻碼流的重同步方法第一實(shí)施例的流程示意圖,包括步驟S310、搜索音頻碼流中的待選同步字。需要進(jìn)行重同步操作時(shí),解碼過(guò)程可能是從碼流緩存buffer中間的某個(gè)位置開始,因此先要移除碼流buffer中已經(jīng)解碼的碼流,同時(shí)讀入新的碼流,填滿碼流buffer。假設(shè)存儲(chǔ)MP3 碼流的碼流 buffer 為數(shù)組 unsigned char MP3StreamBuf [BUF_ LEN],BUF_LEN的典型取值為2000。一幀碼流的最大長(zhǎng)度是17^Bytes,因此BUF_LEN取值為2000能確保碼流buffer處于充滿狀態(tài)時(shí),可以含有完整的一幀碼流和下一幀碼流的幀頭,確保同步算法可以基于此碼流buffer正常進(jìn)行,同時(shí)BUF_LEN取值越小,需要的I/ 0(IN/0UT,輸入輸出)內(nèi)存也就越少。因?yàn)閹^的前11個(gè)bits均為1作為同步字標(biāo)識(shí),標(biāo)志著音頻幀的起始。所以搜索連續(xù)的Ilbits是否均為1,從而搜索出音頻碼流中的待選同步字。如果沒有搜索到同步字,則將碼流buffer中的最后3字節(jié)搬移到buffer頭部,讀入新碼流填滿碼流buffer,重復(fù)搜索過(guò)程。步驟S320、以所述待選同步字為起點(diǎn)提取幀頭。搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭。幀頭是以同步字為起點(diǎn)的連續(xù)4字節(jié)或多個(gè)字節(jié),將所述4個(gè)或多個(gè)字節(jié)的數(shù)據(jù)進(jìn)行拼接即可得到幀頭Headword。步驟S330、對(duì)所述幀頭進(jìn)行校驗(yàn),校驗(yàn)通過(guò)后,以所述幀頭開始重新進(jìn)行解碼。如果校驗(yàn)不通過(guò),則從所述步驟S310重新開始。對(duì)所述幀頭進(jìn)行的校驗(yàn)包括合法性校驗(yàn)、兼容性校驗(yàn)和一致性校驗(yàn)等,從而判斷所述提取的幀頭是否是正確的幀頭。只有找到正確的幀頭,才能正確的進(jìn)行解碼操作,實(shí)現(xiàn)音頻碼流的重同步,避免偽同步字對(duì)重同步的影響。
參照?qǐng)D4,示出了本發(fā)明一種音頻碼流的重同步方法第二實(shí)施例的流程示意圖,包括步驟S410、搜索音頻碼流中的待選同步字。步驟S420、以所述待選同步字為起點(diǎn)提取幀頭。搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭。幀頭是以同步字為起點(diǎn)的連續(xù)4字節(jié)或多個(gè)字節(jié),將所述4個(gè)或多個(gè)字節(jié)的數(shù)據(jù)進(jìn)行拼接即可得到幀頭Headword。步驟S430、判斷所述幀頭是否合法。根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法,如果所述幀頭合法,則校驗(yàn)通過(guò)。如果所述幀頭非法,則應(yīng)跳過(guò)此同步字,填充碼流后繼續(xù)搜索同步字,回到所述步驟 S410。判斷幀頭合法性就是檢測(cè)其中的各數(shù)據(jù)項(xiàng)的值是否有非法值(保留值)。下表列出了幀頭中數(shù)據(jù)項(xiàng)為非法值的一種情況。
權(quán)利要求
1.一種音頻碼流的重同步方法,其特征在于,包括 搜索音頻碼流中的待選同步字;搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭; 對(duì)所述幀頭進(jìn)行校驗(yàn),校驗(yàn)通過(guò)后,以所述幀頭開始重新進(jìn)行解碼。
2.根據(jù)權(quán)利要求1所述的重同步方法,其特征在于,對(duì)所述幀頭進(jìn)行校驗(yàn)具體包括 根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法,如果所述幀頭合法,則校驗(yàn)通過(guò)。
3.根據(jù)權(quán)利要求2所述的重同步方法,其特征在于,根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法后還包括計(jì)算包含所述幀頭的音頻幀的幀長(zhǎng);根據(jù)所述音頻幀的幀長(zhǎng)定位和提取下一個(gè)音頻幀的幀頭;根據(jù)幀頭中的參數(shù)值判斷所述幀頭與所述下一個(gè)音頻幀的幀頭是否一致,如果一致, 則校驗(yàn)通過(guò)。
4.根據(jù)權(quán)利要求3所述的重同步方法,其特征在于,根據(jù)所述音頻幀的幀長(zhǎng)定位和提取下一個(gè)音頻幀的幀頭后還包括根據(jù)所述下一個(gè)音頻幀的幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述下一個(gè)音頻幀的幀頭是否合法。
5.根據(jù)權(quán)利要求4所述的重同步方法,其特征在于,計(jì)算包含所述幀頭的音頻幀的幀長(zhǎng)前還包括根據(jù)幀頭中的參數(shù)值判斷所述幀頭與參考幀頭是否一致,如果一致,則校驗(yàn)通過(guò)。
6.一種音頻碼流的重同步裝置,其特征在于,包括 搜索模塊,用于搜索音頻碼流中的待選同步字;提取模塊,用于搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭;校驗(yàn)?zāi)K,用于對(duì)所述幀頭進(jìn)行校驗(yàn);解碼模塊,用于校驗(yàn)通過(guò)后,以所述幀頭開始重新進(jìn)行解碼。
7.根據(jù)權(quán)利要求6所述的重同步裝置,其特征在于,所述校驗(yàn)?zāi)K包括 第一判斷模塊,用于根據(jù)所述幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述幀頭是否合法。
8.根據(jù)權(quán)利要求7所述的重同步裝置,其特征在于,所述校驗(yàn)?zāi)K還包括 計(jì)算模塊,用于計(jì)算包含所述幀頭的音頻幀的幀長(zhǎng);定位模塊,用于根據(jù)所述音頻幀的幀長(zhǎng)定位和提取下一個(gè)音頻幀的幀頭; 第二判斷模塊,用于根據(jù)幀頭中的參數(shù)值判斷所述幀頭與所述下一個(gè)音頻幀的幀頭是否一致。
9.根據(jù)權(quán)利要求8所述的重同步裝置,其特征在于,所述校驗(yàn)?zāi)K還包括第三判斷模塊,用于根據(jù)所述下一個(gè)音頻幀的幀頭中各數(shù)據(jù)項(xiàng)的值判斷所述下一個(gè)音頻幀的幀頭是否合法。
10.根據(jù)權(quán)利要求9所述的重同步裝置,其特征在于,所述校驗(yàn)?zāi)K還包括 第四判斷模塊,用于根據(jù)幀頭中的參數(shù)值判斷所述幀頭與參考幀頭是否一致。
全文摘要
本發(fā)明公開了一種音頻碼流的重同步方法及重同步裝置。所述方法包括搜索音頻碼流中的待選同步字;搜索到所述待選同步字后,以所述待選同步字為起點(diǎn)提取幀頭;對(duì)所述幀頭進(jìn)行校驗(yàn),校驗(yàn)通過(guò)后,以所述幀頭開始重新進(jìn)行解碼。本發(fā)明在重同步過(guò)程中引入校驗(yàn)機(jī)制,從而能夠?qū)崿F(xiàn)準(zhǔn)確的重同步,使得解碼過(guò)程能夠順利的繼續(xù)進(jìn)行。
文檔編號(hào)H04N7/56GK102238393SQ20101016536
公開日2011年11月9日 申請(qǐng)日期2010年4月30日 優(yōu)先權(quán)日2010年4月30日
發(fā)明者鄧昊 申請(qǐng)人:北京中星微電子有限公司