專利名稱:Ogg格式碼流的數(shù)據(jù)處理方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)據(jù)處理領(lǐng)域,特別涉及一種適用于0gg格式碼流的數(shù)據(jù)處理方法。
背景技術(shù):
0gg Vorbis是一種新的音頻壓縮格式。音頻數(shù)據(jù)經(jīng)Vobis編碼算法轉(zhuǎn)換成 Vorbis流, 一般采用0gg流容器來裝載Vorbis原始流。0gg Vorbis碼流的基 本單位是頁(page),各頁順序4并4妄構(gòu)成一個碼流。頁由頁頭(page header) 和頁實體(page body)構(gòu)成。頁頭中包含頁序號、同步字、段數(shù)、段值表等信 息,頁實體用來裝載Vorbis原始流。Vorbis原始流的基本單位為數(shù)據(jù)包 (packet ), 一個it悟包^"應(yīng)一幀Vorbis ;馬流或用來^刀始4b Ogg Vorbis解石馬器 的一個Vorbis頭凄t據(jù)。
其中,第一個頁實體中只裝載身份頭數(shù)據(jù)包(IdentificationHeader packet ),其余頁實體中裝載數(shù)量不固定的數(shù)據(jù)包。 一個數(shù)據(jù)包不一定完整地放 置于一個頁實體中,可以放置于相鄰的多個頁實體中。
Ogg Vorbis數(shù)據(jù)包被分解成長度為255字節(jié)的若干段和最后一個長度小于 255字節(jié)的段。在段值表中記錄了各段的長度,以字節(jié)為單位,取值范圍為 0-255。這些段可以分別放置于多個頁中,因此段長值小于255即表示該數(shù)據(jù)段 是一個數(shù)據(jù)包的最后 一個數(shù)據(jù)段。
圖1是Ogg Vorbis碼流的結(jié)構(gòu)示意圖。圖中共顯示了 n~n+3號4個完整 0gg頁。第n頁的頁實體包含數(shù)據(jù)包m和數(shù)據(jù)包m+l這兩個完整的數(shù)據(jù)包,以 及數(shù)據(jù)包m+2的前半部分。第n+l頁的頁實體中含有凝:據(jù)包m+2的后半部分和 數(shù)據(jù)包m+3的第一部分。第n+2頁的頁實體中含有數(shù)據(jù)包m+3的第二部分。第n+3頁的頁實體中含有數(shù)據(jù)包m+3的第三部分和完整的數(shù)據(jù)包m+4。
Vorbis解碼器核心實現(xiàn)代碼一般以通用解碼庫的形式發(fā)布,用戶通過集成 API實現(xiàn)0gg Vorbis碼流的解碼。Vorbis解碼器首先解析0gg Vorbis碼流的 頁頭,獲得當前頁的基本信息。在確定數(shù)據(jù)的正確性后,從頁實體中提取出 Vorbis原始流,并對其進行解碼。 一般的,需要在解碼器中開辟兩個數(shù)據(jù)緩沖 區(qū), 一個是存儲來自外部的0gg Vorbis碼流的0gg Vorbis碼流緩沖區(qū),另一 個是存儲待解碼Vorbis原始流的待解碼緩沖區(qū)。在進行Vorbis解碼前,將0gg Vorbis碼流的頁實體部分,即Vorbis原始流,/人Ogg Vorbis碼流緩沖區(qū)中復(fù) 制到待解碼緩沖區(qū)中,直到將待解碼緩沖區(qū)充滿。Vorbis解碼器正常工作的前 提是待解碼緩沖區(qū)中至少存儲了一個連續(xù)、完整的數(shù)據(jù)包。由于一個完整的數(shù) 據(jù)包有可能放置于Ogg Vorbis碼流的多個頁實體中,因此,需要一種機制確保 待解碼緩沖區(qū)中裝載有至少一個完整的數(shù)據(jù)包。
為了確保待解碼緩沖區(qū)中裝載有至少一個完整的數(shù)據(jù)包,常用的方法是將 待解碼緩沖區(qū)的尺寸設(shè)置得比較大,比如6144Bytes。圖2是常用的一種0gg Vorbis碼流數(shù)據(jù)拼接的方法流程圖。首先判斷輸入待解碼緩沖區(qū)中的Vorbis 原始流是否足夠多,通常要求能夠裝滿整個緩沖區(qū)。如果未能裝滿,則繼續(xù)解 析Ogg Vorbis碼流H沖區(qū)中的頁頭,從Ogg Vorbis碼流緩沖區(qū)中讀耳又新的 Vorbis原始流置入待解碼緩沖區(qū),直至裝滿整個待解碼緩沖區(qū);如果待解碼緩 沖區(qū)已裝滿,則開始對Vorbis原始流進行解碼。這時的解碼li沖區(qū)中的Vorbis 原始流數(shù)據(jù)包個數(shù)會出現(xiàn)兩種情況, 一種情況是不含有完整的數(shù)據(jù)包,此時解 碼器將無法正常工作;另一種情況是待解碼緩沖區(qū)中裝載有至少一個完整的數(shù) 據(jù)包,解碼器可以正常解碼第一個數(shù)據(jù)包,而后由于無法準確判定待解碼緩沖 區(qū)中的剩余碼流是否含有完整的數(shù)據(jù)包,便認為當前待解碼緩沖區(qū)中的Vorbis 原始流不夠多,需要將剩余的Vorbis原始流搬移到待解碼緩沖區(qū)最前端,并從 Ogg Vorbis碼流緩沖區(qū)中讀耳又Vorbis原始流與剩余的Ogg Vorbis原始流拼接, 以填充待解碼緩沖區(qū)中的剩余空間。由于數(shù)據(jù)包的尺寸可大可小。當數(shù)據(jù)包尺寸很大時,待解碼緩沖區(qū)處于填滿狀態(tài)時仍可能不含有完整數(shù)據(jù)包,此時對待
解碼緩沖區(qū)中的Voribs原始流進行解碼,解碼器無法正常工作,甚至?xí)罎ⅲ?當數(shù)據(jù)包尺寸較小時,待解碼緩沖區(qū)中可能含有多個完整Vorbis數(shù)據(jù)包,僅對 一個數(shù)據(jù)包進行解碼后就進行數(shù)據(jù)搬移和讀取會導(dǎo)致頻繁的且不必要的數(shù)據(jù)訪 問和復(fù)制,降低了解碼器的工作效率,增加了系統(tǒng)的功耗。
另外,此方法需要在解碼器中開辟兩個緩沖區(qū),分別用于存儲0gg Vorbis 碼流和存儲待解碼的Vorbis原始流,對系統(tǒng)內(nèi)存的需求大,實現(xiàn)成本高。
發(fā)明內(nèi)容
有鑒于此,本發(fā)明的目的在于提供一種用于0gg Vorbis碼流解碼的數(shù)據(jù)拼 接方法,通過解析0gg頁頭,獲取0gg頁實體中裝載的完整數(shù)據(jù)包的個數(shù),以 實現(xiàn)對不完整數(shù)據(jù)包的拼接。
為達到上述目的,本發(fā)明提供一種Ogg格式碼流的數(shù)據(jù)處理方法,包括以 下步驟
1) 將待解碼0gg碼流數(shù)據(jù)放入待解碼緩沖區(qū)直至裝滿;
2) 搜索解碼緩沖區(qū)中是否存在頁頭,如果是,轉(zhuǎn)入步驟3),否則,轉(zhuǎn)入 步驟4 );
3 )將搜索到的頁頭刪除,并將該頁頭前后的屬于同 一數(shù)據(jù)包的數(shù)據(jù)進行拼 接,再將該頁頭對應(yīng)的完整數(shù)據(jù)包進行解碼,隨后返回步驟2);
4)將解碼緩沖區(qū)中的未解碼數(shù)據(jù)搬移至解碼緩沖區(qū)最前端,并返回步驟1)。
在步驟3)之前,還包括解析待解碼緩沖區(qū)中的第一個0gg頁頭,并統(tǒng) 計該頁頭所對應(yīng)的頁實體中所包含的完整數(shù)據(jù)包的個lt,當統(tǒng)計結(jié)果為大于等 于1時,則執(zhí)行步驟3 );否則,刪除待解碼緩沖區(qū)中的該頁頭,返回步驟2 )。
所述0gg碼流數(shù)據(jù)為0gg Vorbis碼流數(shù)據(jù)。
所述將該頁頭前后的屬于同一數(shù)據(jù)包的數(shù)據(jù)進行拼接,為判斷該頁頭是
否處于待解碼緩沖區(qū)的最前端,如果是,則不進行拼接;否則,將該頁頭后的 待解碼數(shù)據(jù)與該頁頭前的數(shù)據(jù)進行拼接。
在步驟2)之前,還包括,判斷待解碼緩沖區(qū)中是否包含完整的0gg頁, 具體為
A) 判斷待解碼緩沖區(qū)中的0gg Vorbis碼流字節(jié)數(shù)是否小于0gg頁的最小 長度;如果小于,則判定待解碼緩沖區(qū)中不包含完整的0gg頁,否則,將執(zhí)行 步驟B);
B) 判斷待解碼緩沖區(qū)中的Ogg Vorbis碼流字節(jié)數(shù)是否大于頁頭長度,如 果大于,執(zhí)行步驟C),否則,則判定待解碼緩沖區(qū)中不包含完整的Ogg頁;
C) 判斷待解碼緩沖區(qū)中的Ogg Vorbis碼流字節(jié)數(shù)是否小于頁長值,如果小 于,則判定待解碼緩沖區(qū)中不包含完整的Ogg頁;否則,判定待解碼緩沖區(qū)中 包含完整的Ogg頁。
所述頁頭長度的獲得,具體為解析待解碼緩沖區(qū)中的第一個頁頭,獲取 這個頁的段數(shù)值,其頁頭長度為Ogg頁最小長度值與段數(shù)值之和,
所述頁長值為頁實體長度與頁頭長度之和,頁實體長度為段值表中各段段 值之和。
所述將解碼緩沖區(qū)中的未解碼數(shù)據(jù)搬移至解碼緩沖區(qū)最前端,為如果待 解碼緩沖區(qū)中的第 一個0gg頁頭位于待解碼緩沖區(qū)的最前端,則刪除待解碼緩沖 區(qū)中的0gg碼流數(shù)據(jù);否則,刪除解碼緩沖區(qū)中的第一個頁頭之前的所有數(shù)據(jù), 將該頁頭及其之后的碼流數(shù)據(jù)搬移至待解碼緩沖區(qū)的最前端。
在步驟l)之前還包括判斷外部是否存在待解碼Ogg碼流數(shù)據(jù),為如 果存在,則返回所述步驟l),否則結(jié)束對Ogg碼流數(shù)據(jù)的處理。
由以上的技術(shù)方案可見,本發(fā)明提供的Ogg碼流數(shù)據(jù)處理方法,通過解析 0gg頁頭,統(tǒng)計頁實體中裝載的完整數(shù)據(jù)包的個數(shù),如果統(tǒng)計結(jié)果大于等于l, 則對所有完整的數(shù)據(jù)包進行解碼,否則對Ogg碼流數(shù)據(jù)進行處理。避免了不必
要的碼流讀取和搬移操作,保證了解碼過程的連續(xù)性,提高了解碼器的效率, 降低了系統(tǒng)的功耗。
另外,本發(fā)明提供的數(shù)據(jù)拼接的方法只使用了一個緩沖區(qū),該緩沖區(qū)用來 完成對0gg頁頭的解析和對0gg碼流凄t據(jù)的處理,減少了對系統(tǒng)內(nèi)存的需求, 降低了實現(xiàn)的成本。
圖l是0gg Vorbis碼流的結(jié)構(gòu)示意圖2是現(xiàn)有技術(shù)中0gg Vorbis碼流的數(shù)據(jù)對并接方法;
圖3是本發(fā)明提供的數(shù)據(jù)拼接方法流程示意圖。
圖4是本發(fā)明提供的數(shù)據(jù)拼接方法的一種實施例示意圖。
具體實施例方式
為使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下參照附圖并舉實
施例,對本發(fā)明進一步詳細說明。
圖3是本發(fā)明提供的數(shù)據(jù)拼接方法流程示意圖。該方法包括
步驟301,將待解碼的0gg碼流數(shù)據(jù)放入待解碼緩沖區(qū)中,直至裝滿整個
待解碼緩沖區(qū)。
其中待解碼數(shù)據(jù)是符合Ogg封裝格式的碼流數(shù)據(jù),通常情況下,音頻數(shù)據(jù) 為0gg Vorbis石馬流, 一見頻l丈l居為0gg Theora石馬;危。
步驟302,搜索解碼緩沖區(qū)中是否存在頁頭,如果是,轉(zhuǎn)入步驟303,否則, 轉(zhuǎn)入步驟304;
步驟303,將4叟索到的第一個0gg頁頭刪除,并將該頁頭前后的屬于同一 數(shù)據(jù)包的數(shù)據(jù)進行拼接,再將該頁頭對應(yīng)的完整數(shù)據(jù)包進行解碼,隨后返回步 驟302;
步驟304,將解碼緩沖區(qū)中的未解碼數(shù)據(jù)搬移至解碼緩沖區(qū)最前端,并返回步驟301。
圖4是本發(fā)明提供的數(shù)據(jù)拼接方法的一種實施例示意圖。其中,待解碼數(shù)
據(jù)以O(shè)gg Vorbis碼流為例,該方法包括以下步-驟
步驟401,獲取Ogg Vorbis碼流,并將Ogg Vorbis碼流復(fù)制到待解碼緩 沖區(qū)中,直至裝滿整個待解碼緩沖區(qū),執(zhí)行步驟402。
步驟402,統(tǒng)計待解碼緩沖區(qū)中第一個Ogg頁頭(簡稱第一個頁頭)所 對應(yīng)的頁長值,判斷待解碼緩沖區(qū)是否包含完整的0gg頁(簡稱頁)。如果包 含,則執(zhí)行步驟403,否則,執(zhí)行步驟404。在本實施例中,統(tǒng)計待解碼緩沖區(qū) 中的第一個頁頭所對應(yīng)的頁長值,具體為
解析第一個0gg頁的頁頭,獲取該頁的段值表和段數(shù)值。段數(shù)值與ogg頁 的最小長度之和為該頁的頁頭長度,段值表中各段長度值之和為該頁的頁實體 長度,該頁的頁頭長度與頁實體長度之和為該頁的頁長。
其中Ogg頁的最小長度通常為27個字節(jié)。
在本實施例中,判斷待解碼緩沖區(qū)中是否包含完整的Ogg頁,包括以下步
驟
A) 判斷待解碼緩沖區(qū)中的Ogg Vorbis碼流字節(jié)數(shù)是否小于Ogg頁的最小 長度。如果小于,則判定待解碼緩沖區(qū)中不包含完整的Ogg頁,否則,將執(zhí)行 步驟B);
通常,Ogg頁的最小長度為27個字節(jié)。
B) 解析待解碼緩沖區(qū)中的第一個頁頭,獲^^這個頁的段數(shù)值,其頁頭長 度為Ogg頁最小長度值與段數(shù)值之和,判斷待解碼緩沖區(qū)中的Ogg Vorbis碼流 字節(jié)數(shù)是否大于頁頭長度,如果大于,執(zhí)行步驟C),否則,則判定待解碼緩沖 區(qū)中不包含完整的Ogg頁;
C) 經(jīng)解析,獲取第一個頁頭的段值表,頁實體長度為段值表中各段段值 之和,頁長值為頁實體長度與頁頭長度之和,判斷待解碼緩沖區(qū)中的Ogg Vorbi s 碼流字節(jié)數(shù)是否小于頁長值,如果小于,則判定待解碼緩沖區(qū)中不包含完整的0gg頁;否則,判定待解碼緩沖區(qū)中包含完整的0gg頁。
步驟403,判斷待解碼緩沖區(qū)中第一個頁頭所對應(yīng)的頁中是否包含完整的 數(shù)據(jù)包;如果是,則執(zhí)行步驟405,否則執(zhí)行步驟407。 這個步驟具體為
a )利用頁頭中的段值表數(shù)據(jù)統(tǒng)計得出第 一個頁頭所對應(yīng)的頁中完整數(shù)據(jù)包 的個數(shù)。由于, 一個完整的數(shù)據(jù)包通常被分解成長度為255的若干段和最后一 個長度小于255的段,在段值表中段的長度值在0-255范圍內(nèi)。這些段可以分 別放置于多個頁中,因此段長值小于255即表示該段是一個數(shù)據(jù)包的最后一段。
所以,第一個頁頭的段值表中段的長度值小于255的段數(shù)便為第一個頁頭 所對應(yīng)的頁中完整凄t據(jù)包的個數(shù)。這里分兩種情況,將第一個頁頭所對應(yīng)的頁 作為當前頁, 一種情況是一個數(shù)據(jù)包的碼流數(shù)據(jù)部分在當前頁中,部分在前一 頁中,如圖1中的數(shù)據(jù)包m+2存在于n和n+l兩個頁中。此時,該數(shù)據(jù)包裝載 于前一頁中的碼流數(shù)據(jù)已保留在待解碼緩沖區(qū)中。另 一種情況是當前頁的第一 個數(shù)據(jù)包中的數(shù)據(jù)完全存在于當前頁中,當然當前頁也可能與相臨的下一頁共 有數(shù)據(jù)包,如圖1中的第n頁。每個數(shù)據(jù)包有且僅有一個長度小于255字節(jié)的 段,長度小于255字節(jié)的段即為一個數(shù)據(jù)包的最后一段,因此統(tǒng)計Ogg頁段值 表中段長值小于255的個數(shù),就可以得到在獲取當前頁頁實體中的Vobis原始 流后,可以得到的完整數(shù)據(jù)包個數(shù),即使第一個數(shù)據(jù)包的部分數(shù)據(jù)段可能存在 于前一頁中。
b)判斷第一個頁頭所對應(yīng)的頁中完整數(shù)據(jù)包的個數(shù)是否大于等于1;如 果是,則判定待解碼緩沖區(qū)中含有完整的數(shù)據(jù)包;否則,判定該頁中不包含完 整的數(shù)據(jù)包。
步驟404,判斷待解碼緩沖區(qū)中的第一個頁頭是否處于待解碼緩沖區(qū)的最 前端;如果是,則刪除待解碼緩沖區(qū)中的Ogg Vorbis碼流,執(zhí)行步驟408;否 則,刪除解碼緩沖區(qū)中的第一個頁頭之前的所有數(shù)據(jù),將該頁頭及其之后的碼
流數(shù)據(jù)搬移至待解碼緩沖區(qū)的最前端,隨后執(zhí)行步驟4 08 。
在本步驟中,如果判定待解碼緩沖區(qū)中的第一個頁頭不在待解碼緩沖區(qū)的 最前端,這意味著待解碼緩沖區(qū)的最前端還存在一部分數(shù)據(jù),該數(shù)據(jù)與第一個 頁頭所對應(yīng)的頁實體中的第一段組成一個完整的數(shù)據(jù)包,而且該數(shù)據(jù)還是上一 頁的一部分,為了保證頁的完整性,需將這部分數(shù)據(jù)刪除,那么本步驟處理后, 第一個頁頭所對應(yīng)的頁實體中的第一段是個不完整的數(shù)據(jù)包,因此,在后續(xù)解 碼過程中,將不會這一段數(shù)據(jù)進行解碼而從其后的數(shù)據(jù)包開始解碼。
步驟405,刪除待解碼緩沖區(qū)中的第一個頁頭,并對第一個頁頭對應(yīng)的頁 所包含的完整數(shù)據(jù)包進行解碼,執(zhí)行步驟406。
在這個步驟中,如果第一個頁頭位于待解碼緩沖區(qū)的最前端,則在刪除第 一個頁頭之后,直接對完整的數(shù)據(jù)包進行解碼;否則,在刪除第一個頁頭之后, 需將該頁頭兩端的Vorbis原始流進行拼接,再對完整的數(shù)據(jù)包進行解碼。
步驟406,判斷待解碼緩沖區(qū)中是否還存在Ogg頁頭;如果存在,則返回 步驟402;否則,抽j亍步驟408。
由于每個Ogg頁頭中都含有同步字信息,當查找到待解碼緩沖區(qū)中含存在 同步字信息,便可判定待解碼緩沖區(qū)中還存在Ogg頁頭。
步驟407,刪除待解碼緩沖區(qū)中的第一個頁頭,并判斷待解碼緩沖區(qū)中是 否還存在Ogg頁頭;如果存在,則執(zhí)行步驟403;否則,將待解碼緩沖區(qū)中的 Vorbis原始流搬移至待解碼緩沖區(qū)的最前端,執(zhí)行步驟408。
步驟408,判斷外部是否還有待解碼的Ogg Vorbis碼流文件;如果有,則 返回步驟401;否則,結(jié)束數(shù)據(jù)處理。
由上述的實施例可見,本發(fā)明提供的數(shù)據(jù)拼接方法,通過解析0gg頁頭, 統(tǒng)計頁實體中裝載的完整數(shù)據(jù)包的個數(shù),如果統(tǒng)計結(jié)果大于等于1,則對完整 的數(shù)據(jù)包進行解碼,否則對0gg碼流數(shù)據(jù)進行搬移和/或拼接處理。避免了不必 要的碼流讀取和搬移操作,保證了解碼過程的連續(xù)性,提高了解碼器的效率,
降低了系統(tǒng)的功耗。另夕卜,本發(fā)明提供的數(shù)據(jù)拼接的方法只使用了一個緩沖區(qū), 該緩沖區(qū)完成對0gg頁頭的解析,對數(shù)據(jù)包的提取,拼接,減少了對系統(tǒng)內(nèi)存 的需求,降4氐了實現(xiàn)的成本。
綜上所述,以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保 護范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進等, 均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
1、一種0gg格式碼流的數(shù)據(jù)處理方法,其特征在于,包括以下步驟1)將待解碼0gg碼流數(shù)據(jù)放入待解碼緩沖區(qū)直至裝滿;2)搜索解碼緩沖區(qū)中是否存在頁頭,如果是,轉(zhuǎn)入步驟3),否則,轉(zhuǎn)入步驟4);3)將搜索到的頁頭刪除,并將該頁頭前后的屬于同一數(shù)據(jù)包的數(shù)據(jù)進行拼接,再將該頁頭對應(yīng)的完整數(shù)據(jù)包進行解碼,隨后返回步驟2);4)將解碼緩沖區(qū)中的未解碼數(shù)據(jù)搬移至解碼緩沖區(qū)最前端,并返回步驟1)。
2、 如權(quán)利要求l所述的方法,其特征在于,在步驟3)之前,還包括解 析待解碼緩沖區(qū)中的第一個Ogg頁頭,并統(tǒng)計該頁頭所對應(yīng)的頁實體中所包含 的完整數(shù)據(jù)包的個數(shù),當統(tǒng)計結(jié)果為大于等于1時,則執(zhí)行步驟3);否則,刪 除待解碼緩沖區(qū)中的該頁頭,返回步驟2)。
3、 如權(quán)利要求2所述的方法,其特征在于所述0gg碼流數(shù)據(jù)為0gg Vorbis 碼流數(shù)據(jù)。
4、 如權(quán)利要求3所述的方法,其特征在于,所述將該頁頭前后的屬于同一 數(shù)據(jù)包的數(shù)據(jù)進行拼接,為判斷該頁頭是否處于待解碼緩沖區(qū)的最前端,如 果是,則不進行拼接;否則,將該頁頭后的待解碼數(shù)據(jù)與該頁頭前的數(shù)據(jù)進行 拼接。
5、 如權(quán)利要求3所述的方法,其特征在于,在步驟2)之前,還包括,判 斷待解碼緩沖區(qū)中是否包含完整的0gg頁,具體為A) 判斷待解碼緩沖區(qū)中的0gg Vorbis碼流字節(jié)數(shù)是否小于0gg頁的最 小長度;如果小于,則判定待解碼緩沖區(qū)中不包含完整的0gg頁,否則,將執(zhí) 行步驟B);B) 判斷待解碼緩沖區(qū)中的0gg Vorbis碼流字節(jié)數(shù)是否大于頁頭長度, 如果大于,執(zhí)行步驟C),否則,則判定待解碼緩沖區(qū)中不包含完整的0gg頁; C) 判斷待解碼緩沖區(qū)中的0gg Vorbis碼流字節(jié)lt是否小于頁長值,如 果小于,則判定待解碼緩沖區(qū)中不包含完整的0gg頁;否則,判定待解碼緩沖 區(qū)中包含完整的0gg頁。
6、 如權(quán)利要求5所述的方法,其特征在于,所述頁頭長度的獲得,具體為 解析待解碼緩沖區(qū)中的第一個頁頭,獲取這個頁的段數(shù)值,其頁頭長度為0gg 頁最小長度值與段數(shù)值之和,
7、 如權(quán)利要求5所述的方法,其特征在于,所述頁長值為頁實體長度與頁 頭長度之和,頁實體長度為段值表中各段段值之和。
8、 如權(quán)利要求3所述的方法,其特征在于,所述將解碼緩沖區(qū)中的未解碼 數(shù)據(jù)搬移至解碼緩沖區(qū)最前端,為如果待解碼緩沖區(qū)中的第一個Ogg頁頭位于 待解碼緩沖區(qū)的最前端,則刪除待解碼緩沖區(qū)中的Ogg碼流數(shù)據(jù);否則,刪除解 碼緩沖區(qū)中的第一個頁頭之前的所有數(shù)據(jù),將該頁頭及其之后的碼流數(shù)據(jù)搬移 至待解碼緩沖區(qū)的最前端。
9、 如權(quán)利要求l所述的方法,其特征在于,在步驟l)之前還包括判斷 外部是否存在待解碼Ogg碼流數(shù)據(jù),為如果存在,則返回所述步驟l),否則 結(jié)束對0gg碼流lt據(jù)的處理。
全文摘要
本發(fā)明提供的Ogg格式碼流的數(shù)據(jù)處理方法,通過解析Ogg頁頭,統(tǒng)計頁實體中裝載的完整數(shù)據(jù)包的個數(shù),如果統(tǒng)計結(jié)果大于等于1,則對完整的數(shù)據(jù)包進行解碼,否則對Ogg碼流數(shù)據(jù)進行搬移和/或拼接處理。避免了不必要的碼流讀取和搬移操作,保證了解碼過程的連續(xù)性,提高了解碼器的效率,降低了系統(tǒng)的功耗。
文檔編號H03M7/30GK101345531SQ20081011856
公開日2009年1月14日 申請日期2008年8月19日 優(yōu)先權(quán)日2008年8月19日
發(fā)明者昊 鄧 申請人:北京中星微電子有限公司