專利名稱:視頻數(shù)據(jù)的打包、編解碼方法及裝置及系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及視頻通信技術(shù)領(lǐng)域,尤其涉及一種視頻數(shù)據(jù)傳輸技術(shù)。
背景技術(shù):
在視頻編解碼系統(tǒng)中,可以將圖像劃分成若干圖像塊或者宏塊,并以塊或宏塊為 單位進(jìn)行運(yùn)動(dòng)估計(jì),將運(yùn)動(dòng)估計(jì)后的殘差進(jìn)行變換、量化,最后對(duì)量化系數(shù)進(jìn)行熵編碼,將 熵編碼后得到的信息寫入碼流中。在碼流中包含了連續(xù)圖像編碼信息,并可稱其為視頻流。為將所述視頻流發(fā)送給 解碼端,則在編碼端還需要對(duì)所得到的視頻流經(jīng)過數(shù)據(jù)分組、歸類等打包處理將其分成若 干含有編碼數(shù)據(jù)的數(shù)據(jù)包,以便通過數(shù)據(jù)包經(jīng)特定網(wǎng)絡(luò)將相應(yīng)的視頻流傳輸至解碼端。其 中,打包處理的目的在于將視頻流進(jìn)行分割以便其可以適合在相應(yīng)網(wǎng)絡(luò)中傳輸。在視頻編解碼系統(tǒng)中,解碼端在接收到編碼端發(fā)來的視頻流對(duì)應(yīng)的數(shù)據(jù)包之后會(huì) 以一定規(guī)則將數(shù)據(jù)包中的內(nèi)容以一定方式組合起來,并經(jīng)反量化、反變換、運(yùn)動(dòng)補(bǔ)償處理后 得到重建圖像。在視頻編碼過程中,在將圖像分割成宏塊后還可以將宏塊以一定組織方式組合在 一起稱之為slice (條帶),且相應(yīng)的條帶可以組合為相應(yīng)的條帶集。此時(shí),若可以針對(duì)相應(yīng) 的條帶或條帶集采用合理的打包處理方式,則將有效處理網(wǎng)絡(luò)丟包及誤差擴(kuò)散的現(xiàn)象。目前,在H. 264標(biāo)準(zhǔn),針對(duì)條帶及條帶集采用的打包方式包括將編碼條帶數(shù)據(jù)得 到的碼流將被封裝在一個(gè)NAL(網(wǎng)絡(luò)提取層)單元中,并將單個(gè)NAL單元打成一個(gè)數(shù)據(jù)包。 在AVS標(biāo)準(zhǔn)中,采用的打包方式包括首先將碼流中每兩個(gè)相鄰的起始碼前綴(0x000001) 之間的數(shù)據(jù)轉(zhuǎn)換為一個(gè)NAL單元,然后,再將單個(gè)NAL單元打成一個(gè)數(shù)據(jù)包。在實(shí)現(xiàn)本發(fā)明過程中,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)中至少存在如下問題在上述針對(duì)視頻流的打包方式中,未考慮條帶的劃分方式及圖像中條帶的組合關(guān) 系等因素,使得相應(yīng)的打包方式處理網(wǎng)絡(luò)丟包及抗誤差的能力大大降低,進(jìn)而導(dǎo)致視頻傳 輸性能下降。
發(fā)明內(nèi)容
本發(fā)明的實(shí)施例提供了一種視頻流傳輸?shù)姆椒把b置,以有效提高抗網(wǎng)絡(luò)丟包及 抗誤差的能力,及解碼性能,改善視頻傳輸效果。本發(fā)明實(shí)施例提供了一種視頻數(shù)據(jù)的打包方法,包括獲取待發(fā)送的條帶集,所述的條帶集包括一個(gè)或多個(gè)條帶;根據(jù)條帶集中的各條帶之間的編碼方式對(duì)條帶集中包含的一個(gè)或多個(gè)條帶進(jìn)行 打包操作。本發(fā)明實(shí)施例提供了一種視頻數(shù)據(jù)的打包裝置,包括條帶集獲取單元,用于獲取待發(fā)送的條帶集,所述的條帶集包括一個(gè)或多個(gè)條 帶;
打包操作單元,用于根據(jù)所述條帶集獲取單元獲取的條帶集中的各條帶之間的編 碼方式對(duì)條帶集中包含的一個(gè)或多個(gè)條帶進(jìn)行打包操作。一種視頻編碼的方法,包括在編碼條帶過程中,在宏塊數(shù)據(jù)編碼結(jié)束后寫入熵編碼填充符號(hào),所述宏塊包含 條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè)宏塊。一種視頻編碼裝置,包括條帶編碼單元,用于對(duì)當(dāng)前條帶進(jìn)行編碼操作;熵編碼填充符號(hào)寫入單元,用于在所述條帶編碼單元編碼條帶過程中,在宏塊數(shù) 據(jù)編碼結(jié)束后寫入熵編碼填充符號(hào),所述宏塊包含條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊 之前的至少一個(gè)宏塊。 一種視頻解碼的方法,包括在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后讀取熵編碼填充符號(hào),所述宏塊包含 條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè)宏塊;讀取熵編碼填充符號(hào)后,檢測(cè)條帶解碼是否結(jié)束。一種視頻解碼裝置,包括熵編碼填充符號(hào)讀取單元,用于在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后讀取 熵編碼填充符號(hào),所述宏塊包含條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè)宏 塊;判斷單元,用于在所述熵編碼填充符號(hào)讀取單元讀取到的熵編碼填充符號(hào)后,檢 測(cè)條帶解碼是否結(jié)束。一種視頻編碼的方法,包括在條帶熵編碼結(jié)束后,根據(jù)條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù) 目進(jìn)行條帶數(shù)據(jù)碼流的填充操作。一種視頻編碼裝置,包括條帶編碼單元,用于對(duì)當(dāng)前條帶進(jìn)行編碼操作;碼流填充單元,用于在所述條帶編碼單元結(jié)束針對(duì)條帶的熵編碼后,根據(jù)條帶熵 編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目進(jìn)行條帶數(shù)據(jù)碼流的填充操作。一種視頻解碼的方法,包括在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后,在比特流指針在比特流指針當(dāng)前位 置后指定位置檢測(cè)條帶解碼是否結(jié)束,所述指定位置根據(jù)編碼端在條帶熵編碼結(jié)束時(shí)熵編 碼可能寫入碼流的最大比特?cái)?shù)目確定。一種視頻解碼裝置,包括解碼單元,用于對(duì)當(dāng)前條帶進(jìn)行解碼操作;解碼判斷單元,用于在所述解碼單元在完成宏塊數(shù)據(jù)解碼結(jié)束后,在比特流指針 在比特流指針當(dāng)前位置后指定位置檢測(cè)條帶解碼是否結(jié)束,其中,所述指定位置根據(jù)編碼 端在條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目確定。由上述本發(fā)明的實(shí)施例提供的技術(shù)方案可以看出,本發(fā)明實(shí)施例由于采用了根據(jù) 條帶之間的編碼方式對(duì)視頻流進(jìn)行打包處理的實(shí)現(xiàn)方案,從而可以保證在通過對(duì)打包后的 數(shù)據(jù)包進(jìn)行視頻流傳輸?shù)倪^程中,可以有效處理網(wǎng)絡(luò)丟包及誤差擴(kuò)散的現(xiàn)象,提高視頻編解碼系統(tǒng)的性能。本發(fā)明實(shí)施例中,由于在編碼條帶過程中,向碼流中寫入了相應(yīng)的結(jié)束參 數(shù)信息,從而使得在解碼端可以快速、準(zhǔn)確識(shí)別出條帶結(jié)束點(diǎn),從而提高解碼的準(zhǔn)確性,進(jìn) 一步提高了視頻編解碼系統(tǒng)的性能。
圖1為本發(fā)明實(shí)施例中的條帶集劃分示意圖;圖2為本發(fā)明實(shí)施例提供的裝置的結(jié)構(gòu)示意圖;圖3為本發(fā)明實(shí)施例提供的一種編解碼裝置及系統(tǒng)的結(jié)構(gòu)示意圖;圖4為本發(fā)明實(shí)施例提供的另一種編解碼裝置及系統(tǒng)的結(jié)構(gòu)示意圖。
具體實(shí)施例方式本發(fā)明實(shí)施例中,在獲取待發(fā)送的包含一個(gè)或多個(gè)條帶的條帶集后,可以根據(jù)條 帶集中的各條帶之間的編碼方式對(duì)條帶集中包含的一個(gè)或多個(gè)條帶進(jìn)行打包操作。其中, 所述的編碼方式可以但不限于包括獨(dú)立編碼方式或非獨(dú)立編號(hào)方式等。本發(fā)明實(shí)施例中,具體可以根據(jù)條帶集參數(shù)的設(shè)置情況以及網(wǎng)絡(luò)傳輸條件等,以 條帶集或者條帶集中的若干條帶為單位進(jìn)行打包,所述的條帶集中包含一個(gè)或多個(gè)條帶, 所述的條帶可以包括按照掃描順序連續(xù)的宏塊,例如,按照光柵掃描順序連續(xù)的宏塊。其 中,相應(yīng)的條帶集參數(shù)可以包括但不僅限于用于標(biāo)識(shí)當(dāng)前條帶是否屬于當(dāng)前條帶集的參 數(shù),或者,用于標(biāo)識(shí)當(dāng)前條帶集中條帶是否具有編解碼獨(dú)立性的參數(shù)(即對(duì)條帶編碼過程 中是否采用了獨(dú)立編碼方式進(jìn)行編碼的參數(shù)),以及其它與當(dāng)前條帶集打包相關(guān)的參數(shù),等等。本發(fā)明實(shí)施例中,根據(jù)條帶集參數(shù)對(duì)條帶集進(jìn)行打包操作的過程具體可以包括 若條帶集中均為采用獨(dú)立編碼方式編碼的條帶,則將條帶集中的各條帶分別各自獨(dú)立封裝 于一個(gè)數(shù)據(jù)包中;若條帶集中包含至少一個(gè)采用非獨(dú)立編碼方式編碼的條帶,即條帶集中 包含未采用獨(dú)立編碼方式編碼的條帶,則將條帶集中的各條帶組合封裝于一個(gè)數(shù)據(jù)包中。在上述打包處理過程中,當(dāng)需要在一個(gè)數(shù)據(jù)包中封裝一個(gè)條帶集中的多個(gè)條帶 時(shí),則還可以根據(jù)當(dāng)前網(wǎng)絡(luò)帶寬情況進(jìn)行打包處理,具體可以為首先,可以根據(jù)當(dāng)前網(wǎng)絡(luò) 帶寬確定一個(gè)數(shù)據(jù)包中可以封裝的條帶數(shù)目,之后,根據(jù)所述可以封裝的條帶數(shù)目,將條帶 集中的條帶封裝于一個(gè)或多個(gè)符合當(dāng)前網(wǎng)絡(luò)帶寬傳輸要求的數(shù)據(jù)包中。進(jìn)一步地,本發(fā)明實(shí)施例中,可以采用的打包方式包括當(dāng)網(wǎng)絡(luò)帶寬可保證將條帶集中所有條帶一起打包傳輸時(shí),則根據(jù)當(dāng)前條帶集參數(shù) 的設(shè)置,可以將條帶集中的所有條帶作為一個(gè)整體進(jìn)行打包。當(dāng)網(wǎng)絡(luò)帶寬不能保證將條帶 集中所有條帶一起打包時(shí),或者,根據(jù)當(dāng)前條帶集參數(shù)確定不適合將整個(gè)條帶集一起打包 時(shí),則可以根據(jù)網(wǎng)絡(luò)帶寬的情況對(duì)條帶集進(jìn)行適當(dāng)分組,將條帶集中的若干條帶分開進(jìn)行 打包,即以條帶集中的若干個(gè)條帶為單位進(jìn)行打包。其中,在當(dāng)網(wǎng)絡(luò)帶寬可保證條帶集中所有條帶一起打包的情況下,若當(dāng)前條帶集 中的至少一個(gè)條帶與其他條帶之間不具有編解碼獨(dú)立性(即未采用獨(dú)立編碼方式進(jìn)行編 碼,而是采用條帶之間依賴其他條帶的數(shù)據(jù)的編碼方式進(jìn)行編碼),則可以將當(dāng)前條帶集中 的所有條帶作為一個(gè)整體進(jìn)行打包。否則,即當(dāng)前條帶集中所有條帶之間具有編碼獨(dú)立性,可以將條帶集中的各個(gè)條帶單獨(dú)進(jìn)行打包,即在丟掉單個(gè)包時(shí)也不影響針對(duì)條帶集中其它 數(shù)據(jù)包的解碼,以保證相應(yīng)的抗誤碼性能。本發(fā)明實(shí)施例中,若需要對(duì)條帶集中多于一個(gè)數(shù)目的條帶一起打包,則相對(duì)于現(xiàn) 有技術(shù)中采用的打包處理方式,需要在原有基于單個(gè)條帶打包模式的基礎(chǔ)上進(jìn)行相應(yīng)的操 作,以適應(yīng)新的打包形式的需求;例如,對(duì)于基于起始碼前綴的碼流(如AVS視頻流等),可 以不再將條帶之間的起始碼分割去掉,只去掉第一個(gè)條帶前的起始碼,對(duì)于需要封裝于同 一數(shù)據(jù)包中的該條帶集中的其他條帶,則保留相應(yīng)的條帶起始碼,之后,將多個(gè)條帶映射成 一個(gè)NAL單元;或者,對(duì)于基于NAL單元的碼流,不再將單個(gè)條帶映射成一個(gè)NAL單元,而是 將需要的多個(gè)條帶一起組合成一個(gè)NAL單元。需要說明的是,本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部 分步驟是可以通過程序來指令相關(guān)的硬件來完成,所述的程序可以存儲(chǔ)于一計(jì)算機(jī)可讀取 存儲(chǔ)介質(zhì)中,該程序在執(zhí)行時(shí),包括本發(fā)明實(shí)施例中描述的全部或部分處理步驟,其中,所 述的存儲(chǔ)介質(zhì)可以但不限于為R0M/RAM、磁碟或光盤等。為便于對(duì)本發(fā)明實(shí)施例的理解,下在將結(jié)合附圖對(duì)本發(fā)明實(shí)施例的具體實(shí)施方式
進(jìn)行詳細(xì)說明。假設(shè),采用以下兩個(gè)相關(guān)參數(shù)標(biāo)識(shí)條帶集(Dslicejetjndex參數(shù)即條帶集序號(hào),用于標(biāo)識(shí)圖像內(nèi)的不同條帶集,具有 相同slice_set_index值的條帶屬于同一條帶集;(2)slice_independency參數(shù)即條帶獨(dú)立性標(biāo)志,用于標(biāo)識(shí)當(dāng)前條帶集內(nèi)各條 帶是否具有編解碼獨(dú)立性,例如,可以采用slicejnd印endency值為1時(shí)表示當(dāng)前條帶內(nèi) 宏塊編解碼時(shí)只能使用本條帶內(nèi)的數(shù)據(jù),slicejncbpendency值為0時(shí)表示當(dāng)前條帶內(nèi)宏 塊編解碼時(shí)可以使用本幅圖像內(nèi)具有相同slice_set_index的條帶數(shù)據(jù),即同一條帶集中 的其他條帶對(duì)應(yīng)的數(shù)據(jù)。相應(yīng)的條帶集劃分的方式可以參照?qǐng)D1所示,其中,A,B0, C,Bi,D,B2, E為各個(gè)條 帶;Row 0 Row 7為圖像中的8個(gè)宏塊行,0 7為宏塊行在圖像中的垂直位置;Col 0 Clo 7為圖像中8個(gè)宏塊列,O 7為宏塊列在圖像中的水平位置。假設(shè)A,C,D同屬一個(gè)條帶集,BO, Bi, B2屬于另一個(gè)條帶集,條帶E屬于第三個(gè)條 帶集;則可以令 A,C,D 三個(gè)條帶 slice_set_index 為 0,B0,B1,B2 三條帶 slice_set_index 為 1 ;E 的 slice_set_index 為 2 ;各條帶對(duì)應(yīng)的slice_independency值可以設(shè)置為A,C,D三個(gè)條帶的slice_independency值分別設(shè)置為1,1,1, BO, B1, B2三個(gè)條帶的slice_independency值分別設(shè) 置為0,0,0 ;條帶E獨(dú)自屬于一個(gè)條帶集,故其slice_independency值可以設(shè)置為1。根據(jù)上述slice_independency值的設(shè)置可知A,C,D三個(gè)條帶中任一條帶內(nèi)宏塊 的解碼處理不能使用其他兩個(gè)條帶的數(shù)據(jù);B0,B1,B2三個(gè)條帶中任一條帶內(nèi)宏塊的解碼 處理可以使用其他兩個(gè)條帶的數(shù)據(jù);E條帶內(nèi)宏塊的解碼處理不能使用其它條帶的數(shù)據(jù)。針對(duì)圖1所示的圖像,當(dāng)網(wǎng)絡(luò)帶寬可保證條帶集中所有條帶一起打包時(shí),具體可 以采用以下打包處理方式對(duì)各條帶進(jìn)行打包(1)針對(duì)條帶A,C,D的打包方式由于條帶集1中的三個(gè)條帶A,C,D編解碼具有獨(dú)立性,因此可以將A,C,D三個(gè)條帶任意組合進(jìn)行打包;若為了保證一定的抗誤碼性能,則可以將A,C,D分開進(jìn)行打包,這 樣,若其中任意一個(gè)包丟失將不會(huì)影響針對(duì)其它包的解碼操作;(2)針對(duì)條帶B0,Bi, B2的打包方式由于條帶集2中的三個(gè)條帶B0,Bi, B2編解碼不具有獨(dú)立性,因此可以將B0,Bi, B2三個(gè)條帶整體進(jìn)行打包;例如,對(duì)于AVS的碼流,只需將BO條帶碼流前的起始碼前綴去 掉,到B2條帶的數(shù)據(jù)結(jié)束為止,映射成一個(gè)NAL單元;對(duì)于以NAL為單元的H. 264標(biāo)準(zhǔn)中, 則可以將條帶B0,Bi,B2的數(shù)據(jù)組合成一個(gè)NAL單元;(3)針對(duì)條帶E的打包方式由于條帶E獨(dú)自成為一個(gè)條帶集,且其編碼具有獨(dú)立性,故可以對(duì)其單獨(dú)進(jìn)行打 包。本發(fā)明實(shí)施例還提供了一種視頻數(shù)據(jù)的打包裝置,其具體實(shí)現(xiàn)結(jié)構(gòu)如圖2所示, 可以包括以下處理單元(1)條帶集獲取單元,用于獲取待發(fā)送的條帶集,所述的條帶集包括一個(gè)或多個(gè) 條帶,其中,所述的條帶可以為按照掃描順序連續(xù)的宏塊,如按照光柵掃描順序連續(xù)的宏塊 等;(2)打包操作單元,用于根據(jù)所述條帶集獲取單元獲取的條帶集中的各條帶之間 的編碼方式對(duì)條帶集中包含的一個(gè)或多個(gè)條帶進(jìn)行打包操作;該打包操作單元具體可以包括以下至少一個(gè)單元第一打包處理單元,用于在條帶集中均為采用獨(dú)立編碼方式編碼的條帶時(shí),將條 帶集中的各條帶分別各自獨(dú)立封裝于一個(gè)數(shù)據(jù)包中;第二打包處理單元,用于在條帶集中包含至少一個(gè)采用非獨(dú)立編碼方式編碼的條 帶(即條帶集中包含未采用獨(dú)立編碼方式編碼的條帶)時(shí),將條帶集中的各條帶組合封裝 于一個(gè)數(shù)據(jù)包中。可選地,為靈活適應(yīng)網(wǎng)絡(luò)帶寬對(duì)數(shù)據(jù)傳輸?shù)囊螅鄳?yīng)的第二打包處理單元具體 可以包括以下單元條帶數(shù)目確定單元,用于根據(jù)當(dāng)前網(wǎng)絡(luò)帶寬確定一個(gè)數(shù)據(jù)包中可以封裝的條帶數(shù) 目,以便于根據(jù)該條帶數(shù)目確定數(shù)據(jù)包的大??;打包執(zhí)行單元,用于根據(jù)所述條帶數(shù)據(jù)確定單元確定的數(shù)據(jù)包中可以封裝的條帶 數(shù)目,將條帶集中的條帶封裝于一個(gè)或多個(gè)數(shù)據(jù)包中,即以所述條帶數(shù)目個(gè)條帶為單位進(jìn) 行數(shù)據(jù)包的封裝操作??蛇x地,針對(duì)不同的碼流,該第二打包處理單元可以包括基于起始碼前綴的碼流打包單元,用于將多個(gè)條帶中的第一個(gè)條帶的起始碼前綴 去掉,其他條帶的起始碼前綴保留,再將多個(gè)條帶映射稱為一個(gè)NAL單元;或者,基于NAL單元的碼流打包單元,用于將需要組合打包的若干個(gè)條帶數(shù)據(jù)組合成一 個(gè)NAL單元。另外,在一些視頻編解碼技術(shù)中,在編碼過程中,寫入碼流中的條帶數(shù)據(jù)的比特長 度具有不可預(yù)測(cè)的特性,從而使得解碼端無法準(zhǔn)確獲知碼流中條帶數(shù)據(jù)的長度,使得解碼 過程無法可靠地進(jìn)行解碼操作
為此,本發(fā)明實(shí)施例還提供了一種視頻數(shù)據(jù)的編解碼方案,以使得在視頻數(shù)據(jù)處 理過程中,可以在對(duì)相應(yīng)的數(shù)據(jù)進(jìn)行編碼或解碼處理過程中,能夠準(zhǔn)確確定當(dāng)前條帶是否 編碼或解碼結(jié)束。現(xiàn)有技術(shù)中,在CABAC編碼條帶結(jié)束時(shí),需要在條帶結(jié)尾寫入1比特結(jié)束當(dāng)前條帶 編碼,若只在條帶編碼結(jié)束時(shí)寫入該比特,解碼端只能在條帶最后一個(gè)宏塊解碼結(jié)束后讀 取該比特,但解碼端無法獲知當(dāng)前解碼宏塊是否是當(dāng)條帶的最后一個(gè)宏塊,故只能在每個(gè) 宏塊解碼結(jié)束后讀取一比特,然后進(jìn)行條帶解碼結(jié)束判斷。根據(jù)CABAC編解碼特性,若在錯(cuò) 誤的位置讀取該比特則可能導(dǎo)致比特流指針偏移錯(cuò)誤,從而可能導(dǎo)致條帶解碼提前(即仍 存在未被解碼的宏塊的情況)結(jié)束。為此,本發(fā)明實(shí)施例中,在編碼端編碼條帶過程中,可以在宏塊數(shù)據(jù)編碼結(jié)束后寫 入熵編碼填充符號(hào),其中,相應(yīng)的宏塊包含條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的 至少一個(gè)宏塊,即除了需要在條帶的最后一個(gè)宏塊編碼結(jié)束后寫入熵編碼填充符號(hào)外,還需要在條帶中的最后一個(gè)宏塊之前的至少一個(gè)宏塊編碼結(jié)束后寫入相應(yīng)的熵編碼填充符號(hào)。在上述寫入熵編碼填充符號(hào)的操作過程中,對(duì)于條帶中的最后一個(gè)宏塊之前的至 少一個(gè)宏塊,具體可以在編碼一宏塊或一宏塊行或指定數(shù)目宏塊后,寫入熵編碼填充符號(hào)。 其中,若采用指定數(shù)目宏塊后寫入相應(yīng)的熵編碼填充符號(hào),則可以根據(jù)在編解碼端預(yù)先設(shè) 置該指定數(shù)目宏塊的具體數(shù)目。在寫入熵編碼填充符號(hào)的操作過程中,對(duì)于條帶中的最后一個(gè)宏塊,在在碼流中 寫入的熵編碼填充符號(hào)后,若字節(jié)不對(duì)齊,則還可以進(jìn)行比特填充處理,并在填充至字節(jié)對(duì) 齊位置處結(jié)束編碼。例如,在寫入一比特’ 1’后,判斷字節(jié)是否對(duì)齊,若字節(jié)不對(duì)齊則寫入 比特’ 0’至字節(jié)對(duì)齊為止結(jié)束編碼,若字節(jié)對(duì)齊,則結(jié)束條帶編碼。相應(yīng)的熵編碼填充符號(hào)可以為一比特填充符號(hào),也可以為多比特填充符號(hào)??蛇x 地,還可以將條帶中的最后一個(gè)宏塊之前的宏塊對(duì)應(yīng)的熵編碼填充符號(hào)的值與條帶中的最 后一個(gè)宏塊對(duì)應(yīng)的熵編碼填充符號(hào)的值相反;例如,若條帶最后一編碼宏塊(即最后一個(gè) 宏塊)的熵編碼填充符號(hào)的值為預(yù)先設(shè)定好的數(shù)值,且為’ 0’或’ 1’ ;則條帶非最后一編碼 宏塊(即最后一個(gè)宏塊之前的宏塊)的所述熵編碼填充符號(hào)的值為預(yù)先設(shè)定好的數(shù)值與條 帶最后一編碼宏塊的所述熵編碼填充符號(hào)的值相反,為’ 1’或’ 0’。與上述編碼端處理過程對(duì)應(yīng),本發(fā)明實(shí)施例中,在解碼端解碼條帶過程中,可以在 宏塊數(shù)據(jù)解碼結(jié)束后讀取熵編碼填充符號(hào),同樣,相應(yīng)的宏塊包含條帶中的最后一個(gè)宏塊 及最后一個(gè)宏塊之前的至少一個(gè)宏塊;并在讀取到的熵編碼填充符號(hào)后,檢測(cè)條帶解碼是 否結(jié)束,若條帶解碼未結(jié)束,則繼續(xù)解碼條帶中的下一個(gè)宏塊,直到條帶解碼結(jié)束。其中,檢測(cè)條帶解碼是否結(jié)束的操作過程可以采用以下任一處理方式(1)處理方式一若當(dāng)前比特流指針位于字節(jié)對(duì)齊處,則判斷比特流指針下一字節(jié)對(duì)齊處是否為起 始碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束;或者,判斷比特流指針下一字節(jié)對(duì)齊 處是否為0x80,并且0x80后是否為起始碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束;(2)處理方式二若當(dāng)前比特流指針位于字節(jié)對(duì)齊處,則判斷當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi)容是否等于填充模板,所述填充模板為1 << (7-n),其中η為碼流指針在當(dāng)前字節(jié)的位置 偏移,若等于填充模板,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束;(3)處理方式三若當(dāng)前比特流指針位于字節(jié)對(duì)齊處,則判斷當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi) 容是否等于填充模板,所述填充模板為1 << (7-n),其中η為碼流指針在當(dāng)前字節(jié)的位置 偏移,若等于填充模板,則判斷比特流指針下一字節(jié)對(duì)齊處是否為起始碼,若是,則條帶解 碼結(jié)束,否則,條帶解碼未結(jié)束;或者,判斷比特流指針下一字節(jié)對(duì)齊處是否為0x80,并且 0x80后是否為起始碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束;若不等于填充模板, 則條帶解碼未結(jié)束。下面將對(duì)該實(shí)施例的具體實(shí)現(xiàn)過程進(jìn)行詳細(xì)地說明。(1)編碼端在編碼端,針對(duì)一宏塊或一宏塊行或指定數(shù)目宏塊后編碼結(jié)束之后寫入一比特 信息作為CABAC填充比特(即熵編碼填充符號(hào)),該CABAC填充比特可以記為cabac_mb_ stuffing_bit0在編碼端,若條帶編碼結(jié)束,則執(zhí)行條帶編碼結(jié)束的操作,該條帶編碼結(jié)束的操作 過程記為is_end_0f_sIiceO ;該is_end_0f_sIiceO的具體過程可以包括在條帶數(shù)據(jù) 結(jié)尾寫入1比特’ 1’,并判斷字節(jié)是否對(duì)齊,若字節(jié)已對(duì)齊則結(jié)束當(dāng)前條帶編碼,否則,填充 比特’ 0’至字節(jié)對(duì)齊為止條帶編碼結(jié)束。其中,編碼端在條帶中的最后一個(gè)宏塊編碼結(jié)束后寫入的CABAC填充比特的值為 預(yù)先約定好的數(shù)值,可以為’ 0’或’ 1’,條帶中的其它宏塊編碼結(jié)束時(shí)所寫入的CABAC填充 比特?cái)?shù)值則不做規(guī)定,若為提高編碼效率,則條帶中的其它宏塊編碼結(jié)束時(shí)所寫入的數(shù)值 可以與條帶中的最后一個(gè)宏塊對(duì)應(yīng)的CABAC填充比特?cái)?shù)值相反。例如,條帶中最后一個(gè)宏 塊的CABAC填充比特?cái)?shù)值為’ 1’,則條帶其它宏塊的CABAC填充比特的值應(yīng)為’ 0’。(2)解碼端在解碼端,解碼完一宏塊或一宏塊行或指定數(shù)目宏塊后讀取所述CABAC填充比特 cabac_mb_stuffing_bit,并執(zhí)行解碼端條帶判斷操作is_end_0f_slice (),該過程具體可 以包括若當(dāng)前字節(jié)已對(duì)齊則判斷當(dāng)前比特流指針后32位是否為0x80000001 (即1個(gè)字 節(jié)加了 24比特的起始碼),若是,則當(dāng)前條帶解碼結(jié)束,否則,繼續(xù)解碼下一宏塊;若當(dāng)前 字節(jié)未對(duì)齊,則判斷當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi)容是否等于填充模板stuffing pattern并且從字節(jié)對(duì)齊處開始的24比特是否為起始碼0x000001,若是,則當(dāng)前條帶解碼 結(jié)束,否則,繼續(xù)解碼下一宏塊,其中,所述stuffing pattern為1 << (7_n),其中η為碼 流指針在當(dāng)前字節(jié)的位置偏移,數(shù)值范圍為0 7。通過上述處理過程可以看出,由于編碼端在針對(duì)一個(gè)宏塊或一個(gè)宏塊行或指定數(shù) 目的宏塊編碼結(jié)束后寫入了相應(yīng)的CABAC填充比特,使得在解碼端執(zhí)行的針對(duì)一個(gè)宏塊或 一個(gè)宏塊行或指定數(shù)目的宏塊解碼結(jié)束后可以讀取相應(yīng)的CABAC填充比特,因而,不會(huì)導(dǎo) 致條帶中的最后一個(gè)宏塊(即條帶結(jié)束宏塊)的編碼及解碼特殊化。這樣,當(dāng)解碼端解碼 完一個(gè)宏塊或一個(gè)宏塊行或指定數(shù)目的宏塊且讀取完相應(yīng)的CABAC填充比特后,比特流指 針位置與編碼端的一致,故可以使用采用上述iS_end_of_Slice()操作進(jìn)行條帶解碼結(jié)束 判斷,并可以保證判斷結(jié)果的準(zhǔn)確性。
本發(fā)明實(shí)施例還提供了一種視頻編碼裝置,其具體實(shí)現(xiàn)結(jié)構(gòu)如圖3所示,可以包 括條帶編碼單元501,用于對(duì)當(dāng)前條帶進(jìn)行編碼操作;熵編碼填充符號(hào)寫入單元502,用于在所述條帶編碼單元501編碼條帶過程中,在 宏塊數(shù)據(jù)編碼結(jié)束后寫入熵編碼填充符號(hào),所述宏塊包含條帶中的最后一個(gè)宏塊及最后一 個(gè)宏塊之前的至少一個(gè)宏塊。其中,相應(yīng)的熵編碼填充符號(hào)可以但不限于為一比特信息,且 對(duì)于條帶中的最后一個(gè)宏塊之前的至少一個(gè)宏塊,可以在編碼一宏塊或一宏塊行或指定數(shù) 目宏塊后,寫入相應(yīng)的熵編碼填充符號(hào)。。本發(fā)明實(shí)施例還提供了一種視頻解碼裝置,其具體實(shí)現(xiàn)結(jié)構(gòu)仍參照?qǐng)D3所示,可 以包括熵編碼填充符號(hào)讀取單元503,用于在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后讀 取熵編碼填充符號(hào),所述宏塊包含條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè) 宏塊;判斷單元504,用于在所述熵編碼填充符號(hào)讀取單元503讀取到的熵編碼填充符 號(hào)后,檢測(cè)條帶解碼是否結(jié)束;進(jìn)一步地,該判斷單元具體可以包括第一判斷操作單元5041,用于在當(dāng)前比特流指針位于字節(jié)對(duì)齊處的情況下,判斷 比特流指針下一字節(jié)對(duì)齊處是否為起始碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束; 或者,判斷比特流指針下一字節(jié)對(duì)齊處是否為0x80,并且0x80后是否為起始碼,若是,則條 帶解碼結(jié)束,否則,條帶解碼未結(jié)束;第二判斷操作單元5042,用于在當(dāng)前比特流指針位于字節(jié)對(duì)齊處的情況下,判斷 當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi)容是否等于填充模板,所述填充模板為1 << (7-n), 其中η為碼流指針在當(dāng)前字節(jié)的位置偏移,若等于填充模板,則條帶解碼結(jié)束,否則,條帶 解碼未結(jié)束;或者,第三判斷操作單元5043,用于在當(dāng)前比特流指針位于字節(jié)對(duì)齊處的情 況下,判斷當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi)容是否等于填充模板,所述填充模板為1 << (7-n),其中η為碼流指針在當(dāng)前字節(jié)的位置偏移,若等于填充模板,則通知所述第一 判斷操作單元;若不等于填充模板,則條帶解碼未結(jié)束。本發(fā)明實(shí)施例還提供了編解碼系統(tǒng),仍參照?qǐng)D3所示,由相應(yīng)的的視頻編碼裝置 及相應(yīng)的視頻解碼裝置組成,且相應(yīng)的視頻編碼裝置及視頻解碼裝置具體采用的編碼及解 碼過程在之前的方法實(shí)施例中已經(jīng)詳細(xì)描述,故在此不再一一詳述。本發(fā)明實(shí)施例中,為使得解碼端能夠正確解碼,還提供了一種視頻編解碼處理方 案。在該方案中(1)編碼端編碼端在條帶熵編碼結(jié)束后,根據(jù)條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大 比特?cái)?shù)目進(jìn)行條帶數(shù)據(jù)碼流的填充操作。進(jìn)一步地,在條帶數(shù)據(jù)碼流的填充操作過程中,可以先計(jì)算上述可能寫入碼流的 最大比特?cái)?shù)目減去條帶編碼結(jié)束操作寫入碼流中的比特?cái)?shù)目后獲得的差值,之后,在碼流 中填充該差值對(duì)應(yīng)的比特?cái)?shù)目;例如,可以使用比特’ 0’或’ 1’進(jìn)行相應(yīng)的填充條帶數(shù)據(jù)的 操作。
(2)角軍碼端解碼端在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后,在比特流指針在比特流指針 當(dāng)前位置后指定位置檢測(cè)條帶解碼是否結(jié)束(即是否已經(jīng)到達(dá)條帶結(jié)尾處理),其中,相應(yīng) 的指定位置為比特流指針當(dāng)前位置之后的若干指定比特位,且相應(yīng)的若干指定比特位即為 編碼端在條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目??蛇x地,在解碼端,該若 干指定比特位可以為預(yù)先設(shè)定好的數(shù)值。在完成條帶解碼是否結(jié)束的判斷后,便可以根據(jù)相應(yīng)的檢測(cè)判斷結(jié)果做進(jìn)一步地 條帶解碼操作。以CABAC編碼為例,本發(fā)明實(shí)施例在編碼端具體可以根據(jù)CABAC編碼特性計(jì)算出 條帶編碼結(jié)束時(shí)寫入編碼結(jié)束符號(hào)后可能寫入碼流的最大比特?cái)?shù)目,之后,編碼端在針對(duì) 條帶的各個(gè)宏塊進(jìn)行編碼過程中,若當(dāng)前編碼宏塊為條帶的最后一個(gè)宏塊,則根據(jù)上述可 能寫入碼流的最大比特?cái)?shù)目填充碼流,其中,填充寫入碼流的比特?cái)?shù)值(“0”或“1”)可由 編碼端自行決定,然后進(jìn)行iS_end_of_Slice()操作。對(duì)應(yīng)的,仍以CABAC解碼為例,在解碼端解碼條帶,并解碼完一宏塊后,在比特流 指針?biāo)府?dāng)前位置之后若干比特位開始進(jìn)行iS_end_of_Slice()操作,以判斷條帶解碼是 否結(jié)束,相應(yīng)的若干比特位為上述可能寫入碼流的最大比特?cái)?shù)目。采用上述編解碼方案的原理在于CABAC編解碼的算術(shù)引擎精度是有限的,因此 條帶編碼結(jié)束寫入編碼結(jié)束符號(hào)后算術(shù)引擎所能寫入碼流中的比特?cái)?shù)目是有限的。根據(jù)這 一特性在該實(shí)施例中便可以在條帶編碼結(jié)束時(shí)寫入額外的填充比特,這樣,解碼端解碼完 一個(gè)宏塊后便可以獲知比特流指針需從何處開始進(jìn)行條帶解碼結(jié)束判斷。例如,可能寫入 碼流的最大比特?cái)?shù)目為34,編碼端條帶編碼結(jié)束寫入結(jié)束符號(hào)后,算術(shù)引擎向碼流中寫入 了 3比特信息,為此,編碼端再此之后再額外寫入34-3 = 31比特信息;這樣,解碼端每解碼 完一個(gè)宏塊后,相應(yīng)的比特流指針便可以從當(dāng)前位置34個(gè)比特為之后進(jìn)行條帶解碼結(jié)束 判斷,從而可以準(zhǔn)確判斷當(dāng)前條帶解碼是否結(jié)束。本發(fā)明實(shí)施例還提供了 一種視頻編碼裝置,其具體實(shí)現(xiàn)結(jié)構(gòu)如圖4所示,具體可 以包括條帶編碼單元601,用于對(duì)當(dāng)前條帶進(jìn)行編碼操作;碼流填充單元602,用于在所述條帶編碼單元601結(jié)束針對(duì)條帶的熵編碼后,根據(jù) 條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目進(jìn)行條帶數(shù)據(jù)碼流的填充操作。對(duì)應(yīng)的,本發(fā)明實(shí)施例還提供了一種視頻解碼裝置,其具體實(shí)現(xiàn)結(jié)構(gòu)仍參照?qǐng)D4 所示,具體可以包括解碼單元603,用于對(duì)當(dāng)前條帶進(jìn)行解碼操作;解碼判斷單元604,用于在所述解碼單元603在完成宏塊數(shù)據(jù)解碼結(jié)束后,在比特 流指針在比特流指針當(dāng)前位置后指定位置檢測(cè)條帶解碼是否結(jié)束,其中,所述指定位置根 據(jù)編碼端在條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目確定。本發(fā)明實(shí)施例還提供了編解碼系統(tǒng),仍參照?qǐng)D4所示,由相應(yīng)的視頻編碼裝置及 相應(yīng)的視頻解碼裝置組成,且相應(yīng)的視頻編碼裝置及視頻解碼裝置具體采用的編碼及解碼 過程在之前的方法實(shí)施例中已經(jīng)詳細(xì)描述,故在此不再一一詳述。本領(lǐng)域普通技術(shù)人員可以理解實(shí)現(xiàn)上述實(shí)施例方法中的全部或部分流程,是可以通過計(jì)算機(jī)程序來指令相關(guān)的硬件來完成,所述的程序可存儲(chǔ)于一計(jì)算機(jī)可讀取存儲(chǔ) 介質(zhì)中,該程序在執(zhí)行時(shí),可包括如上述各方法的實(shí)施例的流程。其中,所述的存儲(chǔ)介質(zhì) 可為磁碟、光盤、只讀存儲(chǔ)記憶體(Read-only Memory, ROM)或隨機(jī)存儲(chǔ)記憶體(Random AccessMemory, RAM)等。綜上所述,由于采用了根據(jù)條帶集參數(shù)(即條帶集編碼方式)對(duì)包含一個(gè)或多個(gè) 條帶的條帶集進(jìn)行打包處理,從而可以提高抗網(wǎng)絡(luò)丟包及抗誤差的能力,改善視頻傳輸效 果;例如,當(dāng)條帶集中的各個(gè)條帶之間采用獨(dú)立編碼方式進(jìn)行編碼時(shí),則可以將條帶集中的 各條帶分別打包到不同的數(shù)據(jù)包中,從而可以提高視頻傳輸過程中的抗丟包的能力。進(jìn)一 步地,在將多個(gè)條帶打包到一個(gè)數(shù)據(jù)包的過程中還可以根據(jù)網(wǎng)絡(luò)帶寬進(jìn)行打包,從而使得 打包后的數(shù)據(jù)包可以很好地適應(yīng)網(wǎng)絡(luò)傳輸環(huán)境。以上所述,僅為本發(fā)明較佳的具體實(shí)施方式
,但本發(fā)明的保護(hù)范圍并不局限于此, 任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范圍內(nèi),可輕易想到的變化或替換, 都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。因此,本發(fā)明的保護(hù)范圍應(yīng)該以權(quán)利要求的保護(hù)范圍 為準(zhǔn)。
權(quán)利要求
1.一種視頻編碼的方法,其特征在于,包括在編碼條帶過程中,在宏塊數(shù)據(jù)編碼結(jié)束后寫入熵編碼填充符號(hào),所述宏塊包含條帶 中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè)宏塊。
2.根據(jù)權(quán)利要求1所述方法,其特征在于,所述寫入熵編碼填充符號(hào)的操作包括對(duì)于條帶中的最后一個(gè)宏塊之前的至少一個(gè)宏塊,在編碼一宏塊或一宏塊行或指定數(shù) 目宏塊后,寫入所述熵編碼填充符號(hào)。
3.根據(jù)權(quán)利要求1所述方法,其特征在于,所述寫入熵編碼填充符號(hào)的操作包括對(duì)于 條帶中的最后一個(gè)宏塊,在在碼流中寫入的熵編碼填充符號(hào)后,若字節(jié)不對(duì)齊,則進(jìn)行比特 填充至字節(jié)對(duì)齊為止。
4.根據(jù)權(quán)利要求1、2或3所述方法,其特征在于,所述熵編碼填充符號(hào)為一比特填充符號(hào)。
5.根據(jù)權(quán)利要求1、2或3所述方法,其特征在于,所述寫入熵編碼填充符號(hào)的操作包括將條帶中的最后一個(gè)宏塊之前的宏塊對(duì)應(yīng)的熵編碼填充符號(hào)的值與條帶中的最后一 個(gè)宏塊對(duì)應(yīng)的熵編碼填充符號(hào)的值相反。
6.一種視頻編碼裝置,其特征在于,包括 條帶編碼單元,用于對(duì)當(dāng)前條帶進(jìn)行編碼操作;熵編碼填充符號(hào)寫入單元,用于在所述條帶編碼單元編碼條帶過程中,在宏塊數(shù)據(jù)編 碼結(jié)束后寫入熵編碼填充符號(hào),所述宏塊包含條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前 的至少一個(gè)宏塊。
7.一種視頻解碼的方法,其特征在于,包括在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后讀取熵編碼填充符號(hào),所述宏塊包含條帶 中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè)宏塊; 讀取熵編碼填充符號(hào)后,檢測(cè)條帶解碼是否結(jié)束。
8.根據(jù)權(quán)利要求7所述方法,其特征在于,所述讀取熵編碼填充符號(hào)的操作包括在解 碼完一宏塊或一宏塊行或指定數(shù)目宏塊后,讀取所述熵編碼填充符號(hào)。
9.根據(jù)權(quán)利要求7所述方法,其特征在于,所述熵編碼填充符號(hào)為一比特填充符號(hào)。
10.根據(jù)權(quán)利要求7、8或9所述方法,其特征在于,所述檢測(cè)條帶解碼是否結(jié)束的操作 包括若當(dāng)前比特流指針位于字節(jié)對(duì)齊處,則判斷比特流指針后是否為起始碼,若是,則條帶 解碼結(jié)束,否則,條帶解碼未結(jié)束;或者,判斷比特流指針后是否為0x80,并且0x80后是否 為起始碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束; 或者,若當(dāng)前比特流指針不位于字節(jié)對(duì)齊處,則判斷當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi)容 是否等于填充模板,所述填充模板為1 << (7-n),其中n為碼流指針在當(dāng)前字節(jié)的位置偏 移,<<為左移符號(hào),若等于填充模板,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束; 或者,若當(dāng)前比特流指針不位于字節(jié)對(duì)齊處,則判斷當(dāng)前比特流指針后至字節(jié)對(duì)齊處的內(nèi)容 是否等于填充模板,所述填充模板為1 << (7-n),其中n為碼流指針在當(dāng)前字節(jié)的位置偏移,并且判斷比特流指針下一字節(jié)對(duì)齊處是否為起始碼,若是,則條帶解碼結(jié)束,否則,條帶 解碼未結(jié)束;或者,判斷比特流指針下一字節(jié)對(duì)齊處是否為0x80,并且0x80后是否為起始 碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束;若不等于填充模板,則條帶解碼未結(jié)束。
11.一種視頻解碼裝置,其特征在于,包括熵編碼填充符號(hào)讀取單元,用于在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后讀取熵編 碼填充符號(hào),所述宏塊包含條帶中的最后一個(gè)宏塊及最后一個(gè)宏塊之前的至少一個(gè)宏塊;判斷單元,用于在所述熵編碼填充符號(hào)讀取單元讀取到的熵編碼填充符號(hào)后,檢測(cè)條 帶解碼是否結(jié)束。
12.根據(jù)權(quán)利要求11所述裝置,其特征在于,所述判斷單元包括第一判斷操作單元,用于在當(dāng)前比特流指針位于字節(jié)對(duì)齊處的情況下,判斷比特流指 針下一字節(jié)對(duì)齊處是否為起始碼,若是,則條帶解碼結(jié)束,否則,條帶解碼未結(jié)束;或者,判 斷比特流指針下一字節(jié)對(duì)齊處是否為0x80,并且0x80后是否為起始碼,若是,則條帶解碼 結(jié)束,否則,條帶解碼未結(jié)束;第二判斷操作單元,用于在當(dāng)前比特流指針位于字節(jié)對(duì)齊處的情況下,判斷當(dāng)前比特 流指針后至字節(jié)對(duì)齊處的內(nèi)容是否等于填充模板,所述填充模板為1 << (7-n),其中n為 碼流指針在當(dāng)前字節(jié)的位置偏移,若等于填充模板,則條帶解碼結(jié)束,否則,條帶解碼未結(jié) 束;或者,第三判斷操作單元,用于在當(dāng)前比特流指針位于字節(jié)對(duì)齊處的情況下,判斷當(dāng)前 比特流指針后至字節(jié)對(duì)齊處的內(nèi)容是否等于填充模板,所述填充模板為1 << (7-n),其中 n為碼流指針在當(dāng)前字節(jié)的位置偏移,若等于填充模板,則通知所述第一判斷操作單元;若 不等于填充模板,則條帶解碼未結(jié)束。
13.—種視頻編碼的方法,其特征在于,包括在條帶熵編碼結(jié)束后,根據(jù)條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目進(jìn) 行條帶數(shù)據(jù)碼流的填充操作。
14.根據(jù)權(quán)利要求13所述方法,其特征在于,所述條帶數(shù)據(jù)碼流的填充操作包括計(jì)算所述可能寫入碼流的最大比特?cái)?shù)目減去條帶編碼結(jié)束操作寫入碼流中的比特?cái)?shù)目后獲得的差值,并在碼流中填充該差值對(duì)應(yīng)的比特?cái)?shù)目。
15.一種視頻編碼裝置,其特征在于,包括條帶編碼單元,用于對(duì)當(dāng)前條帶進(jìn)行編碼操作;碼流填充單元,用于在所述條帶編碼單元結(jié)束針對(duì)條帶的熵編碼后,根據(jù)條帶熵編碼 結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目進(jìn)行條帶數(shù)據(jù)碼流的填充操作。
16.一種視頻解碼的方法,其特征在于,包括在解碼條帶過程中,在宏塊數(shù)據(jù)解碼結(jié)束后,在比特流指針在比特流指針當(dāng)前位置后 指定位置檢測(cè)條帶解碼是否結(jié)束,所述指定位置根據(jù)編碼端在條帶熵編碼結(jié)束時(shí)熵編碼可 能寫入碼流的最大比特?cái)?shù)目確定。
17.—種視頻解碼裝置,其特征在于,包括解碼單元,用于對(duì)當(dāng)前條帶進(jìn)行解碼操作;解碼判斷單元,用于在所述解碼單元在完成宏塊數(shù)據(jù)解碼結(jié)束后,在比特流指針在比 特流指針當(dāng)前位置后指定位置檢測(cè)條帶解碼是否結(jié)束,其中,所述指定位置根據(jù)編碼端在 條帶熵編碼結(jié)束時(shí)熵編碼可能寫入碼流的最大比特?cái)?shù)目確定。
全文摘要
一種視頻數(shù)據(jù)的打包方法及裝置,其主要包括首先,獲取待發(fā)送的條帶集,所述的條帶集包括一個(gè)或多個(gè)條帶;之后,根據(jù)條帶集中的各條帶之間的編碼方式對(duì)條帶集中包含的一個(gè)或多個(gè)條帶進(jìn)行打包操作。本發(fā)明實(shí)施例由于采用了根據(jù)條帶之間的編碼方式對(duì)視頻流進(jìn)行打包處理的實(shí)現(xiàn)方案,從而可以保證在通過對(duì)打包后的數(shù)據(jù)包進(jìn)行視頻流傳輸?shù)倪^程中,可以有效處理網(wǎng)絡(luò)丟包及誤差擴(kuò)散的現(xiàn)象,提高視頻編解碼系統(tǒng)的性能。
文檔編號(hào)H04N7/26GK101998141SQ201010135828
公開日2011年3月30日 申請(qǐng)日期2008年6月19日 優(yōu)先權(quán)日2008年6月19日
發(fā)明者何蕓, 毛振, 鄭建鏵, 鄭蕭楨 申請(qǐng)人:華為技術(shù)有限公司;清華大學(xué)