• / 13
  • 下載費用:30 金幣  

一種實現可伸縮視頻碼流高并行度重寫的編碼方法.pdf

摘要
申請專利號:

CN201310185434.9

申請日:

2013.05.17

公開號:

CN103281535B

公開日:

2015.01.07

當前法律狀態:

授權

有效性:

有權

法律詳情: 授權|||著錄事項變更IPC(主分類):H04N 7/26變更事項:發明人變更前:吳剛 李厚強 王洪濤 程曦銘變更后:李厚強 吳剛 王洪濤 程曦銘|||實質審查的生效IPC(主分類):H04N 7/26申請日:20130517|||公開
IPC分類號: H04N19/176(2014.01)I; H04N19/30(2014.01)I; H04N19/103(2014.01)I; H04N19/91(2014.01)I 主分類號: H04N19/176
申請人: 中國科學技術大學
發明人: 李厚強; 吳剛; 王洪濤; 程曦銘
地址: 230026 安徽省合肥市包河區金寨路96號
優先權:
專利代理機構: 北京凱特來知識產權代理有限公司 11260 代理人: 鄭立明;趙鎮勇
PDF完整版下載: PDF下載
法律狀態
申請(專利)號:

CN201310185434.9

授權公告號:

103281535B|||||||||

法律狀態公告日:

2015.01.07|||2014.07.30|||2013.10.09|||2013.09.04

法律狀態類型:

授權|||著錄事項變更|||實質審查的生效|||公開

摘要

本發明公開了一種實現可伸縮視頻碼流高并行度重寫的編碼方法,該方法包括:當某一訪問單元的基本層中雙向預測片的宏塊為直接Direct或跳過Skip模式時,檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列中已解碼圖像的信息;若是,則將當前宏塊的模式更改為普通預測模式;并計算出普通預測模式下當前宏塊的運動矢量差;利用普通預測模式對所述當前宏塊的運動矢量差及當前宏塊在Direct或Skip模式時的殘差信息與紋理信息進行熵編碼的處理,獲得當前宏塊可并行重寫的碼流。通過采用本發明公開的編碼方法,提高了重寫時的并行度及重寫速度,滿足了在實時度較高的環境下使用的需求。

權利要求書

權利要求書
1.   一種實現可伸縮視頻碼流高并行度重寫的編碼方法,其特征在于,該方法包括:
當某一訪問單元的基本層中雙向預測片的宏塊為直接Direct或跳過Skip模式時,檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列中已解碼圖像的信息;
若是,則將當前宏塊的模式更改為普通預測模式;并計算出普通預測模式下當前宏塊的運動矢量差;利用普通預測模式對所述當前宏塊的運動矢量差及當前宏塊在Direct或Skip模式時的殘差信息與紋理信息進行熵編碼的處理,獲得當前宏塊可并行重寫的碼流。

2.   根據權利要求1所述的方法,其特征在于,計算所述普通預測模式下當前宏塊的運動矢量差步驟包括:
獲取當前宏塊在普通預測模式下的運動矢量預測值;
將當前宏塊的原始運動矢量與獲取到的普通預測模式下的運動矢量預測值作差,獲得普通預測模式下的運動矢量差。

3.   根據權利要求1或2所述的方法,其特征在于,所述將當前宏塊的模式更改為普通預測模式包括:
根據當前宏塊在Direct或Skip模式時,所使用的單向或雙向預測模式,更改為對應的普通單向預測模式或普通雙向預測模式。

4.   根據權利要求3所述的方法,其特征在于,所述根據當前宏塊在Direct或Skip模式時,所使用的單向或雙向預測模式,更改為對應的普通單向預測模式或普通雙向預測模式包括:
當前宏塊在Direct或Skip模式時,refIdxL0<0,refIdxL1≥0,則mb_type=B_L1_S×L;
當前宏塊在Direct或Skip模式時,refIdxL0≥0,refIdxL1<0,則mb_type=B_L0_S×L;
當前宏塊在Direct或Skip模式時,refIdxL0≥0,refIdxL1≥0,則mb_type=B_Bi_S×L;
其中,refIdxL0表示前向參考隊列中的參考幀,其大于等于0時可用,否則不可用;refIdxL1表示后向參考隊列中的參考幀其大于等于0時可用,否則不可用;mb_type表示當前宏塊修改后的普通預測模式;其中的B_L1與B_L0均為單向預測模式,分別表示后向預測模式與前向預測模式;B_Bi表示雙向預測模式;S×L表示當前宏塊的分割大小為S×L像素。

5.   根據權利要求1所述的方法,其特征在于,所述檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列中已解碼圖像的信息包括:
若當前宏塊的運動矢量預測值通過與其臨近宏塊的運動信息得到,則判定獲取當前宏塊的運動矢量預測值時未使用參考隊列中已解碼圖像的信息;
若當前運動矢量預測值獲取過程中用到其他訪問單元的信息,則判定獲取當前宏塊的運動矢量預測值時使用了參考隊列中已解碼圖像的信息。

6.   根據權利要求5所述的方法,其特征在于,所述當前運動矢量預測值獲取過程中用到其他訪問單元的信息包括:
當前宏塊的運動矢量預測值獲取過程中使用了參考隊列里第一個參考幀中與當前宏塊位置一致的宏塊的信息;其中,所述參考隊列里第一個參考幀中與當前宏塊位置一致的宏塊的信息需要從已解碼圖像緩存中獲得。

7.   根據權利要求1所述的方法,其特征在于,所述當前宏塊在Direct或Skip模式時的殘差信息包括:
若當前宏塊的模式在更改之前為Skip模式,則將其殘差信息設置為0,作為在Skip模式下的殘差信息;
若當前宏塊的模式在更改之前為Direct模式,則直接使用其在Direct模式下的殘差信息。

8.   根據權利要求1或7所述的方法,其特征在于,所述進行熵編碼的處理包括:
對當前宏塊在Direct或Skip模式時的殘差信息進行離散余弦變換與量化處理,獲得量化后的殘差信息;
使用普通預測模式對當前宏塊的運動矢量差、量化后的殘差信息與紋理信息進行熵編碼的處理。

9.   根據權利要求1所述的方法,其特征在于,所述獲得當前宏塊可并行重寫的碼流之后還包括:
利用網絡抽象層NAL對所述可并行重寫的碼流進行封裝,并發送至可重寫器。

10.   根據權利要求9所述的方法,其特征在于,所述發送至可重寫器之后包括:
對每個網絡抽象層單元進行解析,將屬于相同訪問單元的網絡抽象層單元歸類;
獨立并行的對不同訪問單元中網絡抽象層單元的數據進行重寫;具體的:熵解碼得到訪問單元中每一層的信息,根據訪問單元內不同層之間的層間預測關系,恢復出每一層的運動矢量差、紋理與殘差信息;對所述每一層的運動矢量差、紋理與殘差信息進行轉換重寫以及熵編碼的處理,獲得重寫后的碼流;
將并行重寫后的碼流,按照訪問單元的先后順序排序后打包成NAL。

說明書

說明書一種實現可伸縮視頻碼流高并行度重寫的編碼方法
技術領域
本發明涉及視頻編碼技術領域,尤其涉及一種實現可伸縮視頻碼流高并行度重寫的編碼方法。
背景技術
數字視頻技術在通信和廣播領域獲得了日益廣泛的應用,如網上可視會議、網上購物、遠程教學、遠程醫療、網上展示廳、視頻點播、視頻聊天等等。雖然視頻信息具有一系列優點,如直觀性、確切性、高效性、廣泛性等,但是由于視頻信息量太大,如果不經過壓縮直接使用原始數據,一個普通的電影就會占用幾十甚至幾百G Bytes(字節)的空間,這些數據若從互聯網上下載的話,那么以現有的帶寬則將耗費大量的時間。因此,要使視頻得到有效的應用,必須解決視頻壓縮編碼問題,一方面編碼后的視頻既要有較大的壓縮比,另一方面又要保證編碼后的視頻仍有一定的質量。
2003年3月,國際電信聯盟和國際標準化組織(ITU?T/ISO)正式公布了H.264/AVC視頻壓縮標準。相比于以往的壓縮標準,H.264/AVC具有出眾的性能,簡單的說,與H.263或MPEG?4Part2相比,在同樣質量下,其數碼率能降低一半左右;或者說在同樣碼率下,其信噪比明顯提高,因此它在國際上受到了廣泛地重視和歡迎。
雖然H.264/AVC劃分了幾種不同等級的視頻質量,但是由于目前播放視頻的終端大到高清電視,小到MP4或手機都有,它們的處理能力千差萬別,需要視頻的分辨率和質量也是各不相同,用H.264/AVC編碼出來的碼流不可能都適用,因此在2003年10月,運動圖像專家組(MPEG)提出了SVC(Scalable Video Coding,可伸縮視頻編碼)的方案,作為H.264/AVC視頻編碼標準的擴展—H.264/SVC。可伸縮視頻編碼技術旨在把不同分辨率、不同質量的同一個視頻編碼成一個可伸縮的碼流,不同的接收端只提取自己需要的分辨率和質量的那部分碼流,可以根據實際需要適應不同的網絡環境和終端解碼能力。
可伸縮視頻編碼碼流能提供一個空間、時間、質量可伸縮的碼流,從這個碼流中可以抽取子碼流,以滿足網絡傳輸速率以及終端用戶對視頻在尺寸、幀率和質量等方面的需求。在可伸縮視頻編碼的碼流中,最低質量層被稱作基本層,增強空間分辨率、時間分辨率或者信噪比強度的層被稱作增強層。其中,為實現空間可伸縮性,可以利用層間的運動、紋理和殘差信息,使用分層編碼方法;為實現時間可伸縮性,采用分級雙向預測幀編碼方法;為實現信噪比可伸縮性,可以使用粗粒度可伸縮性和中粒度可伸縮性兩種方法,這兩種方法采用與空間可伸縮性相似的層間預測方法。
可伸縮視頻編碼的碼流中,每一個視頻幀是一個訪問單元,它包含了一個基本層和一個或多個增強層,每一層使用了不同的方式和參數,例如,使用空間可伸縮或質量可伸縮對該幀進行編碼。在編碼過程中,每一幀的每一層中都包含若干個宏塊,每次以一個宏塊為一個獨立單元,按照幀內預測(IntraPrediction)或者幀間預測(InterPrediction)模式以及層間預測(Inter?layer Prediction)模式進行編碼。幀內預測與幀間預測模式與H.264/AVC完全相同,預測數據都由重建數據得到。在幀內(Intra)預測模式中,預測數據從當前宏塊附近區域已編碼宏塊得到。幀內(Inter)預測模式中,預測數據由一個或多個參考幀經過運動補償(MC)得到,參考幀是指先前編碼好的幀。而H.264/SVC特有的層間預測模式,每一幀的每一層預測數據從當前幀比當前層低的那些層得到。
可伸縮視頻編碼H.264/SVC的基本層碼流是兼容H.264/AVC格式的,使用H.264/AVC的解碼器就能得到基本層的視頻。由于基本層視頻一般都是低分辨率、低質量的,而一些老式設備只能解碼H.264/AVC的碼流,對H.264/SVC增強層的碼流無法解析。因而,需要借助可伸縮視頻編碼的可重寫技術(Rewriter)解決這個問題,該技術利用同一個訪問單元(Access Unit)不同層之間的預測關系,把每層依賴底層的運動、紋理和殘差信息進行重新計算,得到符合H.264/AVC的運動、紋理和殘差信息。
由于使用現有H.264/SVC碼流編碼技術中,每一幀之間解碼、重寫存在依賴關系,導致了重寫時并行度低,重寫速度慢,尤其是在標清、超清視頻及實時度要求較高的應用場景下,由于并行度不高,重寫速度不能很好的滿足實時的需求。
發明內容
本發明的目的是提供一種實現可伸縮視頻碼流高并行度重寫的編碼方法,提高了重寫時的并行度及重寫速度。
本發明的目的是通過以下技術方案實現的:
一種實現可伸縮視頻碼流高并行度重寫的編碼方法,該方法包括:
當某一訪問單元的基本層中雙向預測片的宏塊為直接Direct或跳過Skip模式時,檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列中已解碼圖像的信息;
若是,則將當前宏塊的模式更改為普通預測模式;并計算出普通預測模式下當前宏塊的運動矢量差;利用普通預測模式對所述當前宏塊的運動矢量差及當前宏塊在Direct或Skip模式時的殘差信息與紋理信息進行熵編碼的處理,獲得當前宏塊可并行重寫的碼流。
由上述本發明提供的技術方案可以看出,通過檢測每一宏塊對其他訪問單元依賴情況,并解除當前宏塊對其他訪問單元的依賴關系;通過這種方式獲得的編碼碼流,其每一訪問單元在重寫時可以獨立并行的進行重寫,提高了重寫時的并行度及重寫效率,滿足了在實時度較高的環境下使用的需求。
附圖說明
為了更清楚地說明本發明實施例的技術方案,下面將對實施例描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發明的一些實施例,對于本領域的普通技術人員來講,在不付出創造性勞動的前提下,還可以根據這些附圖獲得其他附圖。
圖1為本發明實施例提供的一種宏塊排列的示意圖方法;
圖2為本發明實施例一提供的一種實現可伸縮視頻碼流高并行度重寫的編碼方法的流程圖;
圖3為本發明實施例二提供的又一種實現可伸縮視頻碼流高并行度重寫的編碼方法的流程圖;
圖4為本發明實施例二提供的一種碼流并行重寫的方法的流程圖。
具體實施方式
下面結合本發明實施例中的附圖,對本發明實施例中的技術方案進行清楚、完整地描述,顯然,所描述的實施例僅僅是本發明一部分實施例,而不是全部的實施例。基于本發明的實施例,本領域普通技術人員在沒有做出創造性勞動前提下所獲得的所有其他實施例,都屬于本發明的保護范圍。
首先,結合附圖1,詳細介紹當前宏塊與臨近宏塊特點。如圖1所示,為宏塊排列的示意圖。其中,包含當前宏塊臨近塊A、B、C和D。
1、在編碼當前宏塊時,需獲得臨塊的已編碼運動信息,主要包括運動矢量(用于指示參考的塊相對于當前塊的位移,用mvLXN表示)和參考幀號(refIdxLXN),其中LX可以為L0或L1,表示使用前向參考隊列(List0)或使用后向參考隊列(List1);N可以為A、B或C,用于表示對應塊的信息(如果宏塊C數據不可用,則使用宏塊D代替)。
如果塊N不可用(例如,相鄰宏塊A、B或C不可用),或者其模式為幀內預測(Intra Prediciton),或者它沒有使用LX參考隊列,則令,相應的mvLXN=(0,0);(0,0)表示水平與垂直分量均為0;refIdxLXN=?1(為?1時表示沒有參考幀);否則mvLXN和refIdxLXN分別為該塊使用LX參考隊列得到的運動矢量信息和參考幀號。
2、臨近塊通常使用每個參考隊列的最小參考幀號refIdxLX值設置為refIdxLXN的值,即:
refIdxL0=Min(refIdxL0A,refIdxL0B,refIdxL0C);
refIdxL1=Min(refIdxL1A,refIdxL1B,refIdxL1C);
directZeroPredictionFlag=0。
其中,directZeroPredictionFlag為標志位,用于指示Direct模式下是否將預測的運動矢量強制為(0,0);賦值為1時強制為(0,0);賦值為0時按正常情況賦值。
3、若前向參考隊列(List0)和后向參考隊列(List1)都不可用,則refIdxL0和refIdxL1都小于0;此時,可將refIdxL0與賦值refIdxL1為0,將directZeroPredictionFlag賦值為1,表示為:directZeroPredictionFlag=1;此時,mvL0=(0,0);mvL1=(0,0)。
另一方面,如果mvL0為(0,0),并且mvL1為(0,0)(List0與List1不可用);或者參考隊列List1中第一幀與當前宏塊位置相同的宏塊MBCol的模式為幀內預測模式,或者相鄰宏塊可用時,令標志位UseTemporalDirectFlag=0;否則,令標志位UseTemporalDirectFlag=1。
1、當標志位UseTemporalDirectFlag=1時,則編碼當前宏塊時,從已解碼圖像緩存中獲得后向參考幀隊列(List1)里第一個參考幀中與當前編碼宏塊地址一致的同位置宏塊的運動矢量信息mvCol和參考幀號refIdxCol:
1)如果同位置宏塊使用了前向參考隊列(List0),則mvCol和refIdxCol分別為使用前向參考隊列(List0)后得到的運動矢量和參考幀號;
2)若同位置宏塊使用了后向參考隊列(List1),則mvCol和refIdxCol分別為使用后向參考隊列(List1)后得到的運動矢量和參考幀號。
2、如果得到的同位置宏塊的mvCol較小(例如,水平與垂直的分量都在[?1,1]范圍內);則標志位colZeroFlag=1,否則colZeroFlag=0。
3、如果colZeroFlag為1,并且使用了對應參考隊列LX的第一幀,則相應的mvLX=(0,0)。
參考幀隊列里第一個參考幀中與當前編碼宏塊地址一致的同位置宏塊的信息需要從已解碼的信息中獲得,因此,當前宏塊使用了后向參考幀隊列里第一個參考幀中與當前編碼宏塊地址一致的同位置宏塊的信息時,表示當前宏塊與該同位置宏塊所屬的訪問單元存在了依賴關系。
實施例一
圖2為本發明實施例一提供的一種實現可伸縮視頻碼流高并行度重寫的編碼方法,如圖2所示,主要包括如下步驟:
步驟21、當某一訪問單元的基本層中雙向預測片的宏塊為直接(Direct)或跳過(Skip)模式時,檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列中已解碼圖像的信息。
通常情況下,僅有訪問單元中基本層雙向預測片(B片)的宏塊為跳過模式或直接模式時,在空間直接預測模式下的運動矢量預測值獲取過程中可能需要用到其他訪問單元的信息,因此,本發明實施例為加快計算效率,僅針對基本層中雙向預測片的宏塊進行檢測。
若當前宏塊的運動矢量預測值僅通過與其臨近宏塊(如圖1中左邊、上面和左上角的宏塊)的運動信息得到的,則可直接使用常規方式進行編碼;否則,判定當前宏塊在重寫時與其他訪問單元存在依賴關系,轉入步驟22。
步驟22、若是,則將當前宏塊的模式更改為普通預測模式;并計算出普通預測模式下當前宏塊的運動矢量差;利用普通預測模式對所述當前宏塊的運動矢量差及當前宏塊在Direct或Skip模式時的殘差信息與紋理信息進行熵編碼的處理,獲得當前宏塊可并行重寫的碼流。
若檢測到當前宏塊在重寫時與其他訪問單元存在依賴關系,則根據其運動、紋理和殘差信息修改成不需要用到其他訪問單元內塊的信息的模式(雙向預測片的宏塊主要包含三種模式:Direct、Skip與普通預測模式)。
利用修改后的模式對所述當前宏塊的運動矢量差及當前宏塊在Direct或Skip模式時的殘差信息與紋理信息進行熵編碼的處理,得到編碼后可并行重寫的H.264/SVC碼流。
本發明實施例通過檢測每一宏塊對其他訪問單元依賴情況,并解除當前宏塊對其他訪問單元的依賴關系;通過這種方式獲得的編碼碼流,其每一訪問單元在重寫時可以獨立并行的進行重寫,提高了重寫時的并行度及重寫效率,滿足了在實時度較高的環境下使用的需求。
實施例二
為了便于理解本發明,現結合附圖3?4對本發明做進一步介紹,如圖3所示,該方法主要包括如下步驟:
步驟31、判斷一訪問單元的基本層中雙向預測片的宏塊是否為Direct或Skip模式;若是,則轉入步驟32;否則,轉入步驟34。
雙向預測片(B片)的宏塊主要包括三種模式:Direct、Skip與普通預測模式(普通模式為除去Direct與Skip模式之外的模式,例如,普通前向預測模式下16×16像素大小的宏塊:B_L0_16x16;普通后向預測模式下16×16像素大小的宏塊:B_L1_16x16;普通雙向預測模式下16×16像素大小的宏塊:B_Bi_16x16;普通前向預測模式下16×8像素大小的宏塊:B_L0_L0_16x8等)。當其處于Direct或Skip模式時,運動矢量預測值獲取過程中可能需要用到其他訪問單元的信息;而普通預測模式下,則不存在此問題;因此,本步驟需要將Direct或Skip模式的宏塊篩選出來,以便通過后續步驟去除其與其他訪問單元之間的依賴關系。
步驟32、檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列中已解碼圖像的信息;若是,則轉入步驟33;否則,轉入步驟34。
獲取當前宏塊的運動矢量預測值包括兩種情況:1)通過與其臨近宏塊(如圖1中左邊、上面和左上角的宏塊)的運動信息得到的,此時,標志位UseTemporalDirectFlag=0;2)運動矢量預測值獲取過程中用到其他訪問單元的信息(例如,使用參考隊列中已解碼圖像的信息),此時,標志位UseTemporalDirectFlag=1;作為舉例而非限定,由于參考幀隊列里第一個參考幀中與當前編碼宏塊地址一致的同位置宏塊的信息需要從已解碼的信息中獲得,因此,可通過檢測獲取當前宏塊的運動矢量預測值時是否使用了參考隊列里第一個參考幀中與當前宏塊位置一致的宏塊的信息來判斷是否使用了參考隊列中已解碼圖像的信息。
若為第一種情況,則可直接使用常規的編碼方法進行編碼;若為第二種情況,則表明當前宏塊在重寫時與其他訪問單元存在依賴關系,需要轉入步驟33做進一步處理。
步驟33、將當前宏塊的模式更改為普通預測模式。
首先,查看當前宏塊的大小,例如,當前宏塊為16×16像素大小,則更改為16×16普通預測模式;再根據當前宏塊在Direct或Skip模式時,所使用的單向(List0或者List1單獨使用)或雙向(List0與List1同時使用)預測模式,更改為對應的普通單向預測模式或普通雙向預測模式;例如,當前宏塊為單向(前向或后向)Direct模式,大小為16×16像素;則更改為16×16單向(前向或后向)普通預測模式。其他的分區大小如16×8、8×16和8×8等相應更改為對應的預測模式。
其中,根據當前宏塊在Direct或Skip模式時,所使用的單向(List0或者List1單獨使用)或雙向(List0與List1同時使用)預測模式,更改為對應的普通單向預測模式或普通雙向預測模式,可以寫為:
當前宏塊在Direct或Skip模式時,refIdxL0<0,refIdxL1≥0,則mb_type=B_L1_S×L;
當前宏塊在Direct或Skip模式時,refIdxL0≥0,refIdxL1<0,則mb_type=B_L0_S×L;
當前宏塊在Direct或Skip模式時,refIdxL0≥0,refIdxL1≥0,則mb_type=B_Bi_S×L;
其中,refIdxLX<0表示對應的參考幀不可用,refIdxLX≥0表示對應的參考幀可用;mb_type表示當前宏塊修改后的普通預測模式;其中的B_L1與B_L0均為單向預測模式,分別表示后向預測模式與前向預測模式;B_Bi表示雙向預測模式;S×L表示當前宏塊的分割大小為S×L像素(其大小不會因為模式的更改而發生變化),例如,若當前宏塊分割大小為16×16像素,則相應的S與L均為16;若當前宏塊分割大小為16×8,則相應的S與L分別為16與8;其他分割大小與上述情況類似,標準中有對應的mb_type值。
然后,使用更改后的預測模式獲取當前宏塊的運動矢量差。具體的:獲取當前宏塊在更改后的預測模式下的運動矢量預測值;將當前宏塊的原始運動矢量與獲取到的運動矢量預測值作差,獲得對應的運動矢量差。可表示為:MVDLX=MvLX?MvPLX。其中,MvDLX表示運動矢量差,MvLX表示當前宏塊的原始運動矢量,MvPLX表示獲取到的運動矢量預測值。
最后,將獲得運動矢量差,與當前宏塊在Direct或Skip模式時的殘差信息與紋理信息保存。由于本發明實施例對宏塊的模式進行了轉換,因此,需要將殘差信息寫成之前Direct或Skip模式的殘差信息,以保證兩次預測和編碼出來的宏塊完全一樣。本發明實施例中,若當前宏塊的模式在更改之前為Skip模式,則將其殘差信息設置為0,作為在Skip模式下的殘差信息;若當前宏塊的模式在更改之前為Direct模式,則直接使用其在Direct模式下的殘差信息。
步驟34、編碼當前宏塊。
通過步驟33的處理,已經將解除了當前宏塊與其他訪問單元的依賴關系,因此,可以使用常規的方式對其進行編碼。例如,對當前宏塊在Direct或Skip模式時的殘差信息進行離散余弦變換(DCT)與量化處理,獲得量化后的殘差信息;使用普通預測模式對當前宏塊的運動矢量差、量化后的殘差信息與紋理信息進行熵編碼的處理,得到編碼后可并行重寫的H.264/SVC碼流。
步驟35、利用網絡抽象層NAL對所述可并行重寫的碼流進行封裝,并發送至可重寫器對所述碼流重寫。
步驟36、對所述可并行重寫的碼流進行重寫。
由于現有技術在進行碼流的重寫時需要維護已解碼圖像緩存(DPB)的關系,每個訪問單元必須要等到在它解碼順序之前的訪問單元解碼完成后才能重寫,這種依賴關系使得重寫過程不能并行,相應的重寫速度也較低。
而利用本發明實施例的編碼方法獲得的碼流解除了當前宏塊與其他訪問單元的依賴關系,因此,可以實現碼流的并行重寫。
如圖4所示,其具體步驟如下:首先,對每個網絡抽象層單元進行解析,將屬于相同訪問單元的網絡抽象層單元歸類。
然后,獨立并行的對不同訪問單元中網絡抽象層單元的數據進行重寫。具體的:熵解碼H.264/SVC碼流得到訪問單元中每一層的信息(由于熵編碼后的數據都是被壓縮后的2進制數據,熵解碼后才能正常讀取);再對需要重寫的那一層進行H.264/AVC格式的編碼:編碼時,若某一訪問單元的某一個宏塊沒有使用H.264/SVC的層間預測模式,則完全按照H.264/AVC方式編碼;如果參考了低層的數據(層間預測模式中某一幀的某一層預測數據從比當前幀中當前層低的其他層中得到),則需要從下至上計算出當前需要重寫層的實際數據,再按照H.264/AVC方式編碼,即,根據訪問單元內不同層之間的層間預測關系,恢復出每一層的運動矢量差、紋理與殘差信息;對所述每一層的運動矢量差、紋理與殘差信息進行轉換重寫以及熵編碼的處理,獲得重寫后的H.264/AVC碼流;最后,將并行重寫后的碼流,按照訪問單元的先后順序排序后打包成NAL。
實驗數據表明,基于現有技術的編碼方式對分辨率為1080i的視頻序列編碼后,再利用現有技術中重寫方式進行重寫,其重寫速度僅為:8.6幀/秒,且只能單線程重寫。
然而,基于本發明實施例的編碼方法獲得的解除依賴關系的碼流,再利用上述方法重寫時的速度,遠遠高于現有技術。如表1所示,本發明實施例中對碼流重寫時的并行度較高,且單線程的速度也遠遠高于現有技術中的重寫速度。
CPU線程數速度(幀/秒)115.8230.4342.6452.2559.1
表1
其中,測試機器基本參數為:CPU:Intel Xeon [email protected];內存:31.9GB。
本發明實施例通過檢測每一宏塊對其他訪問單元依賴情況,并解除當前宏塊對其他訪問單元的依賴關系;通過這種方式獲得的編碼碼流,其每一訪問單元在重寫時可以獨立并行的進行重寫,提高了重寫時的并行度及重寫效率,滿足了在實時度較高的環境下使用的需求。
通過以上的實施方式的描述,本領域的技術人員可以清楚地了解到上述實施例可以通過軟件實現,也可以借助軟件加必要的通用硬件平臺的方式來實現。基于這樣的理解,上述實施例的技術方案可以以軟件產品的形式體現出來,該軟件產品可以存儲在一個非易失性存儲介質(可以是CD?ROM,U盤,移動硬盤等)中,包括若干指令用以使得一臺計算機設備(可以是個人計算機,服務器,或者網絡設備等)執行本發明各個實施例所述的方法。
以上所述,僅為本發明較佳的具體實施方式,但本發明的保護范圍并不局限于此,任何熟悉本技術領域的技術人員在本發明披露的技術范圍內,可輕易想到的變化或替換,都應涵蓋在本發明的保護范圍之內。因此,本發明的保護范圍應該以權利要求書的保護范圍為準。

關 鍵 詞:
一種 實現 伸縮 視頻 碼流高 并行 重寫 編碼 方法
  專利查詢網所有資源均是用戶自行上傳分享,僅供網友學習交流,未經上傳用戶書面授權,請勿作他用。
關于本文
本文標題:一種實現可伸縮視頻碼流高并行度重寫的編碼方法.pdf
鏈接地址:http://www.rgyfuv.icu/p-6420269.html
關于我們 - 網站聲明 - 網站地圖 - 資源地圖 - 友情鏈接 - 網站客服客服 - 聯系我們

[email protected] 2017-2018 zhuanlichaxun.net網站版權所有
經營許可證編號:粵ICP備17046363號-1 
 


收起
展開
山东11选5中奖结果走势图