專利名稱:一種視頻編解碼方法及系統(tǒng)的制作方法
技術領域:
本發(fā)明涉及通信領域的網(wǎng)絡電視技術,尤其涉及一種視頻編解碼方法及系統(tǒng)。
背景技術:
目前,高級視頻編碼標準中都包含幀間預測功能。幀間預測是利用相鄰幀的重建圖像來預測當前幀,以更好的消除圖像之間的時間冗余。如圖1所示,幀間預測中分為前向預測P幀和雙向預測B幀。在參考幀中搜索與當前幀編碼單元(編碼單元可以是HEVC標準中的編碼單元(CU, Coding Unit)或最大編碼單元(IXU, Large Coding Unit),也可以是H.264等標準中的宏模塊(MB, MacroBlock)或宏模塊對(MBP, MacroBlock Pair))最接近的一個編碼單元,該編碼單元作為當前編碼單元的預測值,只需要把預測殘差和運動矢量進行編碼,即可在解碼端重構出當前編碼單元。如圖2所示,編碼單元按照光柵掃描的順序依次進行編碼,直到整幀圖像處理完成。
由于當前幀中的每一個編碼單元進行編碼時,都需要在參考幀中進行運動搜索,所以要對參考幀進行多次訪問。如果每次都從片外同步動態(tài)隨機存儲器(SDRAM, Synchronous Dynamic Random Access Memory)中訪問參考巾貞,那讀取參考巾貞的延時就會非常大,通常在芯片中都會加入一個片上的RAM來作為緩沖,計算單元只需要訪問片上RAM中的數(shù)據(jù),這樣速度就會提高很多。同時相鄰塊之間可以復用已經(jīng)讀取到片上RAM中的數(shù)據(jù), 這樣就進一步節(jié)省了帶寬,如圖3所示,其中的橫向數(shù)據(jù)和縱向數(shù)據(jù)都可以充分復用。
但是,圖像的寬度增大時,例如4K*2K的視頻每行是4ΚΒ亮度分量,如果縱向搜索范圍為256,則至少需要4Κ*512 = 2ΜΒ的內(nèi)存,會嚴重增大芯片的面積和成本。所以現(xiàn)有芯片中一般只采用橫向復用的方式,如圖4所示,使用一個搜索窗進行參考幀的數(shù)據(jù)搬移。同一行編碼單元可以復用片內(nèi)參考幀數(shù)據(jù),在編碼下一行時,就必須重新加載參考幀,這就導致了縱向復用的缺失,存在很多的重復讀取。圖5為使用條帶(Slice)進行劃分時的情況, 區(qū)域參考幀的數(shù)據(jù)搬移的策略與圖4類似。
以4K*2K的視頻為例,如果編碼單元的大小為64,在搜索范圍為整像素256時,P 幀單參考幀時每行編碼單元亮度分量至少需要加載(256*2+64) *3840 = 2211840Β,整幅圖象亮度分量需要2211840Β*34 = 75.2ΜΒ,是單幀亮度分量的9倍,60fps時亮度分量帶寬就是75.2*60 = 4.5GB,B幀則翻倍為9GB,多參考B幀則需要更多。如果再考慮上色度分量, 特別是在YUV4:4:4模式時,帶寬還要增加。而目前DDR3-160064bit的理論帶寬只有12GB, 實際帶寬不到10GB,顯然會造出性能的瓶頸。如何能降低外存帶寬占用,提高芯片的性能就是需要解決的問題。發(fā)明內(nèi)容
有鑒于此,本發(fā)明的主要目的在于提供一種視頻編解碼方法及系統(tǒng),能夠提高視頻編碼運動搜索中的參考幀的復用率,降低 外存帶寬占用,從而提高視頻編解碼芯片的性倉泛。
為達到上述目的,本發(fā)明的技術方案是這樣實現(xiàn)的:
本發(fā)明提供一種視頻編碼方法,包括:
將當前編碼圖像或編碼圖像Tile劃分為一個或多個編碼單元組(GOC);
在每個GOC內(nèi)部,按照之字型(ZigZag)掃描順序?qū)γ總€編碼單元進行編碼;
將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流。
上述方法中,該方法還包括:完成當前編碼圖像或編碼圖像Tile的編碼過程中, 需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
上述方法中,所述將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC為:
將當前編碼圖像或編碼圖像Tile以編碼單元行或編碼單元列為單位進行劃分, 其中N個編碼單元行或N個編碼單元列為一個G0C,不滿N個編碼單元行或N個編碼單元列的也記為一個GOC ;
其中,所述N為大于I且小于等于當前編碼圖像或編碼圖像Tile的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)的正整數(shù)。
上述方法中,所述在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼為:
在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行編碼,在不滿N個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行編碼,在只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行編碼;
當前編碼圖像或編碼圖像Tile中劃分的多個GOC之間按照光柵掃描順序進行編碼。
本發(fā)明還提供一種視頻解碼方法,包括:
將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;
從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼。
上述方法中,該方法還包括:
完成當前解碼圖像或解碼圖像Tile的解碼過程中,如果碼流中存在Slice劃分, 則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
上述方法中,所述將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC為:
將當前解碼圖像或解碼圖像Tile以編碼單元行或編碼單元列為單位進行劃分, 其中N個編碼單元行或N個編碼單元列為一個G0C,不滿N個編碼單元行或N個編碼單元列的也記為一個GOC ;
其中,所述N為大于I且小于等于當前解碼圖像或解碼圖像Tile的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)的正整數(shù)。
上述方法中,所述根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照 ZigZag掃描順序?qū)γ總€編碼單元進行解碼為:
根據(jù)所述編碼單元行數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行解碼,在不滿N個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行解碼,在只有I個編碼單元行或只有I個編碼單元 列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行解碼;
當前解碼圖像或解碼圖像Tile中劃分的多個GOC之間按照光柵掃描順序進行解碼。
本發(fā)明還提供一種視頻編解碼方法,包括上述的視頻編碼方法和視頻解碼方法。
本發(fā)明還提供一種視頻編碼系統(tǒng),包括:G0C劃分單元、編碼單元、寫入單元;其中,
GOC劃分單元,用于將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC ;
編碼單元,用于在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;
寫入單元,用于將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流。
上述系統(tǒng)中,該系統(tǒng)還包括:
Slice劃分單元,用于完成當前編碼圖像或編碼圖像Tile的編碼過程中,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
本發(fā)明還提供一種視頻解碼系統(tǒng),包括:G0C劃分單元、獲取單元、解碼單元;其中,
GOC劃分單元,用于將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;
獲取單元,用于從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù);
解碼單元,用于根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照 ZigZag掃描順序?qū)γ總€編碼單元進行解碼。
上述系統(tǒng)中,該系統(tǒng)還包括:
Slice劃分單元,用于完成當前解碼圖像或解碼圖像Tile的解碼過程中,如果碼流中存在Slice劃分,則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
本發(fā)明還提供一種視頻編解碼系統(tǒng),包括:視頻編碼子系統(tǒng)、視頻解碼子系統(tǒng);其中,
視頻編碼子系統(tǒng),用于將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC ; 在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼JfGOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;
視頻解碼子系統(tǒng),用于將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ; 從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼。
上述系統(tǒng)中,
所述視頻編碼子系統(tǒng)還用于,完成當前編碼圖像或編碼圖像Tile的編碼過程中, 需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;
所述視頻解碼子系統(tǒng)還用于,完成當前解碼圖像或解碼圖像Tile的解碼過程中, 如果碼流中存在Slice劃分,則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
本發(fā)明提供的視頻編解碼方法及系統(tǒng),編碼端將當前編碼圖像或編碼圖像Tile 劃分為一個或多個GOC ;在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼; 將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流; 解碼端將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼;能夠在不影響視頻編碼壓縮率的情況下,提高視頻編碼運動搜索中的參考幀的復用率,可以降低芯片中30% 60 %的外存帶寬占用,從而提高視頻編解碼芯片的性能。
圖1是現(xiàn)有技術中幀間預測示意圖2是現(xiàn)有技術中編碼單元及掃面順序示意圖3是現(xiàn)有技術中整行參考數(shù)據(jù)搬移示意圖4是現(xiàn)有技術中區(qū)域參考數(shù)據(jù)搬移示意圖5是現(xiàn)有技術中使用Slice時區(qū)域參考數(shù)據(jù)搬移示意圖6是本發(fā)明實現(xiàn)視頻編碼方法的實施例一的流程示意圖7是本發(fā)明中N等于2時GOC的劃分示意圖8是本發(fā)明中N等于3時GOC的劃分示意圖9是本發(fā)明中N等于2時ZigZag掃描順序的編碼示意圖10是本發(fā)明中N等于3時ZigZag掃描順序的編碼示意圖11是本發(fā)明中ZigZag掃描順序中區(qū)域參考幀搬移示意圖12a是本發(fā)明中N等于2時按照ZigZag邊界進行Slice劃分的示意圖12b是本發(fā)明中N等于2時按照ZigZag邊界進行Leaf-QJ aligned Slice劃分的示意圖13是本發(fā)明中N等于3時按照ZigZag邊界進行Slice劃分的示意圖14是本發(fā)明中N等于2時按照矩形邊界進行Slice劃分的示意圖15是本發(fā)明中N等于3時按照矩形邊界進行Slice劃分的示意圖16是本發(fā)明中N等于2時按照ZigZag邊界進行Slice劃分時區(qū)域參考幀搬移示意圖17是本發(fā)明中N等于3時按照ZigZag邊界進行Slice劃分時區(qū)域參考幀搬移示意圖18是本發(fā)明實現(xiàn)視頻解碼方法的實施例一的流程示意圖19是本發(fā)明實現(xiàn)視頻編碼方法的實施例二的流程示意圖20是本發(fā)明中N等于2時Tile模式下GOC的劃分示意圖21是本發(fā)明中N等于2時Tile模式下ZigZag掃描順序的編碼示意圖22是本發(fā)明中Tile模式下N等于2時按照ZigZag邊界進行Slice劃分示意圖23是本發(fā)明實現(xiàn)視頻解碼方法的實施例二的流程示意圖24是本發(fā)明實現(xiàn) 視頻編解碼系統(tǒng)的結構示意圖。
具體實施方式
本發(fā)明的基本思想是:編碼端將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC ;在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;解碼端將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼。
下面通過附圖及具體實施例對本發(fā)明再做進一步的詳細說明。
本發(fā)明提供一種視頻編碼方法,包括整幀模式下的視頻編碼方法和Tile模式下的視頻編碼方法。
圖6是本發(fā)明實現(xiàn)視頻編碼方法的實施例一的流程示意圖,為整幀模式下的視頻編碼方法,如圖6所示,該方法包括以下步驟:
步驟601,將當前編碼圖像劃分為一個或多個GOC ;
具體的,一個編碼圖像中包括多個編碼單元,在編碼端,將當前編碼圖像以編碼單元行或編碼單元列為單位進行劃分,其中N個編碼單元行或N個或編碼單元列為一組,記為一個G0C,最后不滿N個編碼單元行或N個或編碼單元列的也記為一組;其中,N為正整數(shù), 且為大于I且小于等于當前編碼圖像的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)。
例如,圖7和圖8分別為整幀模式下N等于2和3時GOC的劃分示意圖,如圖7和圖8所示,圖中的虛線為劃分后的GOC的邊界。
步驟602,在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;
具體的,在每個GOC內(nèi)部,從按照光柵掃描順序?qū)幋a單元進行編碼,修改為按照之字型(ZigZag)掃描順序?qū)幋a單兀進行編碼,如圖9和圖10所不的箭頭方向;在不滿N 個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,同樣按照ZigZag掃描順序?qū)幋a單元進行編碼,對于只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行編碼;其中,當前編碼圖像中劃分的多個GOC之間仍然按照光柵掃描順序進行編碼;這樣,如圖11中的陰影區(qū)域,同一個GOC中的兩行編碼單元就可以復用片內(nèi)的參考幀區(qū)域。
步驟603,將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;
具體的,將GOC中包含的編碼單元行數(shù)N或編碼單元列數(shù)N寫入到碼流中,然后按照現(xiàn)有標準中的規(guī)定完成當前編碼圖像的編碼處理,主要包括運動估計、幀內(nèi)預測、變換量化、環(huán)路濾波和熵編碼等處理。
步驟604,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;
具體的,完成當前編碼圖像的編碼處理過程中,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分,按照ZigZag邊界進行劃分如圖12a、圖 12b和圖13所示的粗實線所示,按照矩形邊界進行劃分如圖14和圖15所示的粗實線所示; 對于屬于不同Slice的編碼單元,只要還屬于同一個GOC內(nèi),仍然可以復用片內(nèi)的參考幀區(qū)域,例如,復用的參考幀區(qū)域可以如圖16和圖17中的陰影部分。
圖18是本發(fā)明實現(xiàn)視頻解碼方法的實施例一的流程示意圖,為整幀模式下的視頻解碼方法,如圖18所示,該方法包括以下 步驟:
步驟1801,將當前解碼圖像劃分為一個或多個GOC ;
具體的,一個解碼圖像中包括多個編碼單元,在解碼端,將當前解碼圖像以編碼單元行或編碼單元列為單位進行劃分,其中N個編碼單元行或N個或編碼單元列為一組,記為一個G0C,最后不滿N個編碼單元行或N個或編碼單元列的也記為一組;其中,N為正整數(shù), 且為大于I且小于等于當前解碼圖像的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)。
例如,圖7和圖8分別為整幀模式下N等于2和3時GOC的劃分示意圖,如圖7和圖8所示,圖中的虛線為劃分后的GOC的邊界。
步驟1802,從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)該編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼;
具體的,從碼流中譯碼獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),根據(jù)該編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,從按照光柵掃描順序?qū)幋a單元進行解碼,修改為按照ZigZag掃描順序?qū)幋a單元進行解碼,如圖9和圖10所示的箭頭方向;在不滿N個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,同樣按照ZigZag掃描順序?qū)幋a單元進行解碼,對于只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行解碼;其中,當前解碼圖像中劃分的多個GOC之間仍然按照光柵掃描順序進行解碼;這樣,如圖11中的陰影區(qū)域,同一個GOC中的兩行編碼單元就可以復用片內(nèi)的參考幀區(qū)域。
步驟1803,完成當前解碼圖像的解碼處理;
具體的,按照現(xiàn)有標準的規(guī)定完成當前解碼圖像的解碼處理,主要包括熵解碼、反變換量化、運動補償、幀間預測、環(huán)路濾波等處理。
步驟1804,碼流中存在Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;
具體的,如果碼流中有已經(jīng)進行Slice劃分的標識,則表示碼流中存在Slice劃分;碼流中存在Slice劃分時,將當前解碼圖像中的GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分,按照ZigZag邊界進行劃分如圖12a、圖12b和圖13所示的粗實線所示, 按照矩形邊界進行劃分如圖14和圖15所示的粗實線所示;對于屬于不同Slice的編碼單元,只要還屬于同一個GOC內(nèi),仍然可以復用片內(nèi)的參考幀區(qū)域,例如,復用的參考幀區(qū)域可以如圖16和圖17中的陰影部分。
圖19是本發(fā)明實現(xiàn)視頻編碼方法的實施例二的流程示意圖,為Tile模式下的視頻編碼方法,如圖19所示,該方法包括以下步驟:
步驟1901,將編碼圖像Tile劃分為一個或多個GOC ;
具體的,一個編碼圖像Tile中包括多個編碼單元,在編碼端,將編碼圖像Tile以編碼單元行或編碼單元列為單位進行劃分,其中N個編碼單元行或N個或編碼單元列為一組,記為一個G0C,最后不滿N個編碼單元行或N個或編碼單元列的也記為一組;其中,N為正整數(shù),且為大于I且小于等于編碼圖像Tile的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)。
例如,如圖20所示,圖中的虛線為劃分后的GOC的邊界,粗實線為當前編碼圖像 Tile邊界。
步驟1902,在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;
具體的,在每個GOC 內(nèi)部,從按照光柵掃描順序?qū)幋a單元進行編碼,修改為按照ZigZag掃描順序?qū)幋a單元進行編碼,如圖21所示的箭頭方向;在不滿N個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,同樣按照ZigZag掃描順序?qū)幋a單元進行編碼,對于只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行編碼;其中,編碼圖像Tile中劃分的多個GOC之間仍然按照光柵掃描順序進行編碼;這樣, 在一個編碼圖像Tile內(nèi),同一個GOC中的兩行編碼單元就可以復用片內(nèi)的參考幀區(qū)域。
步驟1903,將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;
具體的,將GOC中包含的編碼單元行數(shù)N或編碼單元列數(shù)N寫入到碼流中,然后按照現(xiàn)有標準中的規(guī)定完成編碼圖像Tile的編碼處理,主要包括運動估計、幀內(nèi)預測、變換量化。環(huán)路濾波和熵編碼等處理。
步驟1904,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;
具體的,完成編碼圖像Tile的編碼處理過程中,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分,按照ZigZag邊界進行劃分如圖22所示的粗實線所示;對于同一個Tile內(nèi)的不同Slice的編碼單元,只要還屬于同一個GOC內(nèi),仍然可以復用片內(nèi)的參考幀區(qū)域。
圖23是本發(fā)明實現(xiàn)視頻解碼方法的實施例二的流程示意圖,為Tile模式下的視頻解碼方法,如圖23所示,該方法包括以下步驟:
步驟2301,將解碼圖像Tile劃分為一個或多個GOC ;
具體的,一個解碼圖像中包括多個編碼單元,在解碼端,將解碼圖像Tile以編碼單元行或編碼單元列為單位進行劃分,其中N個編碼單元行或N個或編碼單元列為一組,記為一個G0C,最后不滿N個編碼單元行或N個或編碼單元列的也記為一組;其中,N為正整數(shù),且為大于I且小于等于解碼圖像Tile的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)。
例如,如圖20所示,圖中的虛線為劃分后的GOC的邊界,粗實線為當前編碼圖像 Tile邊界。
步驟2302,從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)該編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼;
具體的,從碼流中譯碼獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),根據(jù)該編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,從按照光柵掃描順序?qū)幋a單元進行解碼,修改為按照ZigZag掃描順序?qū)幋a單元進行解碼,如圖21所示的箭頭方向;在不滿N 個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,同樣按照ZigZag掃描順序?qū)幋a單元進行解碼,對于只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行解碼;其中,解碼圖像Tile中劃分的多個GOC之間仍然按照光柵掃描順序進行解碼;這樣同一個GOC中的兩行編碼單元就可以復用片內(nèi)的參考幀區(qū)域。
步驟2303,完成解碼圖像Tile的解碼處理;
具體的,按照現(xiàn)有標準的規(guī)定完成解碼圖像Tile的解碼處理,主要包括熵解碼、 反變換量化、運動補償、幀間預測、環(huán)路濾波等處理。
步驟2304,碼流中存 在Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;
具體的,如果碼流中有已經(jīng)進行Slice劃分的標識,則表示碼流中存在Slice劃分;碼流中存在Slice劃分時,將解碼圖像Tile中的GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分,按照ZigZag邊界進行劃分如圖22所示的粗實線所示;對于同一 Tile 內(nèi)不同Slice的編碼單元,只要還屬于同一個GOC內(nèi),仍然可以復用片內(nèi)的參考幀區(qū)域。
為實現(xiàn)上述方法,本發(fā)明還提供一種視頻編解碼系統(tǒng),圖24是本發(fā)明實現(xiàn)視頻編解碼系統(tǒng)的結構示意圖,如圖24所示,該系統(tǒng)包括:視頻編碼子系統(tǒng)10、視頻解碼子系統(tǒng) 20 ;其中,
視頻編碼子系統(tǒng)10,用于將當前編碼圖像或編碼圖像Tile劃分為一個或多個 GOC ;在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;完成當前編碼圖像或編碼圖像Tile的編碼過程中, 需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;
視頻解碼子系統(tǒng)20,用于將當前解碼圖像或解碼圖像Tile劃分為一個或多個 GOC ;從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼;完成當前解碼圖像的解碼過程中,如果碼流中存在Slice劃分,則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
所述視頻編碼子系統(tǒng)10進一步包括:G0C劃分單元11、編碼單元12、寫入單元13、 Slice劃分單元14 ;其中,
GOC劃分單元11,用于將當前編碼圖像或編碼圖像Tile劃分為一個或多個G0C;
編碼單元12,用于在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;
寫入單元13,用于將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;
Slice劃分單元14,用于完成當前編碼圖像或編碼圖像Tile的編碼過程中,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
所述視頻解碼子系統(tǒng)20進一步包括:G0C劃分單元21、獲取單元22、解碼單元23、 Slice劃分單元24 ;其中,
GOC劃分單元21,用于將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;
獲取單元22,用于從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù);
解碼單元23,用于根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照 ZigZag掃描順序?qū)γ總€編碼單元進行解碼;
Slice劃分單元24,用于完成當前解碼圖像或解碼圖像Tile的解碼過程中,如果碼流中存在Slice劃分,則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
以上所述,僅為 本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍,凡在本發(fā)明的精神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應包含在本發(fā)明的保護范圍之內(nèi)。
權利要求
1.一種視頻編碼方法,其特征在于,該方法包括:將當前編碼圖像或編碼圖像Tile劃分為一個或多個編碼單元組(GOC);在每個GOC內(nèi)部,按照之字型(ZigZag)掃描順序?qū)γ總€編碼單元進行編碼;將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流。
2.根據(jù)權利要求1所述的方法,其特征在于,該方法還包括:完成當前編碼圖像或編碼圖像Tile的編碼過程中,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
3.根據(jù)權利要求1所述的方法,其特征在于,所述將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC為:將當前編碼圖像或編碼圖像Tile以編碼單元行或編碼單元列為單位進行劃分,其中N 個編碼單元行或N個編碼單元列為一個G0C,不滿N個編碼單元行或N個編碼單元列的也記為一個GOC ;其中,所述N為大于I且小于等于當前編碼圖像或編碼圖像Tile的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)的正整數(shù)。
4.根據(jù)權利要求1所述的方法,其特征在于,所述在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼為:在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行編碼,在不滿N個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行編碼,在只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行編碼;當前編碼圖像或編碼圖像Tile中劃分的多個GOC之間按照光柵掃描順序進行編碼。
5.一種視頻解碼方法,其特征在于,該方法包括:將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼。
6.根據(jù)權利要求5所述的方法,其特征在于,該方法還包括:完成當前解碼圖像或解碼圖像Tile的解碼過程中,如果碼流中存在Slice劃分,則將 GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
7.根據(jù)權利要求5所述的方法,其特征在于,所述將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC為:將當前解碼圖像或解碼圖像Tile以編碼單元行或編碼單元列為單位進行劃分,其中N 個編碼單元行或N個編碼單元列為一個G0C,不滿N個編碼單元行 或N個編碼單元列的也記為一個GOC ;其中,所述N為大于I且小于等于當前解碼圖像或解碼圖像Tile的實際編碼單元行數(shù)或?qū)嶋H編碼單元列數(shù)的正整數(shù)。
8.根據(jù)權利要求5所述的方法,其特征在于,所述根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼為:根據(jù)所述編碼單元行數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行解碼, 在不滿N個編碼單元行或不滿N個編碼單元列的GOC內(nèi)部,按照ZigZag掃描順序?qū)幋a單元進行解碼,在只有I個編碼單元行或只有I個編碼單元列的GOC內(nèi)部,按照光柵掃描順序?qū)幋a單元進行解碼;當前解碼圖像或解碼圖像Tile中劃分的多個GOC之間按照光柵掃描順序進行解碼。
9.一種視頻編解碼方法,其特征在于,該方法包括如權利要求1至4任一項所述的視頻編碼方法、以及如權利要求5至8任一項所述的視頻解碼方法。
10.一種視頻編碼系統(tǒng),其特征在于,該系統(tǒng)包括:G0C劃分單元、編碼單元、寫入單元; 其中,GOC劃分單元,用于將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC ;編碼單元,用于在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼; 寫入單元,用于將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流。
11.根據(jù)權利要求10所述的系統(tǒng),其特征在于,該系統(tǒng)還包括:Slice劃分單元,用于完成當前編碼圖像或編碼圖像Tile的編碼過程中,需要進行 Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
12.一種視頻解碼系統(tǒng),其特征在于,該系統(tǒng)包括:G0C劃分單元、獲取單元、解碼單元; 其中,GOC劃分單元,用于將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;獲取單元,用于從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù);解碼單元,用于根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag 掃描順序?qū)γ總€編碼單元進行解碼。
13.根據(jù)權利要求12所述的系統(tǒng),其特征在于,該系統(tǒng)還包括:Slice劃分單元,用于完成當前解碼圖像或解碼圖像Tile的解碼過程中,如果碼流中存在Slice劃分,則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
14.一種視頻編解碼系統(tǒng),其特征包括,該系統(tǒng)包括:視頻編碼子系統(tǒng)、視頻解碼子系統(tǒng);其中,視頻編碼子系統(tǒng),用 于將當前編碼圖像或編碼圖像Tile劃分為一個或多個GOC ;在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行編碼;將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;視頻解碼子系統(tǒng),用于將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC ;從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼。
15.根據(jù)權利要求14所述的系統(tǒng),其特征在于,所述視頻編碼子系統(tǒng)還用于,完成當前編碼圖像或編碼圖像Tile的編碼過程中,需要進行Slice劃分時,將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分;所述視頻解碼子系統(tǒng)還用于,完成當前解碼圖像或解碼圖像Tile的解碼過程中,如果碼流中存在Slice劃分,則將GOC按照ZigZag邊界進行劃分或按照矩形邊界進行劃分。
全文摘要
本發(fā)明公開一種視頻編解碼方法及系統(tǒng),該系統(tǒng)包括視頻編碼子系統(tǒng)將當前編碼圖像或編碼圖像Tile劃分為一個或多個編碼單元組(GOC);在每個GOC內(nèi)部,按照之字型(ZigZag)掃描順序?qū)γ總€編碼單元進行編碼;將GOC中包含的編碼單元行數(shù)或編碼單元列數(shù)寫入碼流;視頻解碼子系統(tǒng)將當前解碼圖像或解碼圖像Tile劃分為一個或多個GOC;從碼流中獲取GOC中包含的編碼單元行數(shù)或編碼單元列數(shù),并根據(jù)所述編碼單元行數(shù)或編碼單元列數(shù)在每個GOC內(nèi)部,按照ZigZag掃描順序?qū)γ總€編碼單元進行解碼。根據(jù)本發(fā)明的技術方案,能夠提高視頻編碼運動搜索中的參考幀的復用率,降低外存帶寬占用,從而提高視頻編解碼芯片的性能。
文檔編號H04N7/26GK103220507SQ201210018330
公開日2013年7月24日 申請日期2012年1月19日 優(yōu)先權日2012年1月19日
發(fā)明者梁立偉, 王寧 申請人:中興通訊股份有限公司