視頻編碼方法及視頻編碼器的制造方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及視頻技術(shù)領(lǐng)域,尤其涉及一種視頻編碼方法及視頻編碼器。
【背景技術(shù)】
[0002]在移動(dòng)攝像設(shè)備中,由于高分辨率和高幀率視頻的廣泛應(yīng)用,編解碼器對(duì)片外存儲(chǔ)器的訪問帶寬需求極大,大量的片外存儲(chǔ)訪問帶來的高功耗減少了系統(tǒng)的可持續(xù)工作時(shí)間。同時(shí),視頻編碼模塊常常和顯示模塊、通訊模塊、計(jì)算模塊等集成在一個(gè)系統(tǒng)中并行運(yùn)行,共享帶寬,其所分配到的帶寬資源常常不能滿足正常編碼的需要,制約了視頻編碼器的實(shí)際性能,增大了視頻編碼器的設(shè)計(jì)難度。
[0003]在各種視頻編碼標(biāo)準(zhǔn)中,采用的幀類型有幀內(nèi)預(yù)測(cè)幀(I幀)和幀間預(yù)測(cè)幀。其中幀間預(yù)測(cè)幀又分為前向預(yù)測(cè)幀(P幀)和雙向預(yù)測(cè)幀(B幀)。在最新的H264和HEVC視頻編碼標(biāo)準(zhǔn)中,P幀可以支持后向預(yù)測(cè),B幀的兩個(gè)參考幀可以分別位于前向和后向,也可以全部位于前向或后向。
[0004]不同類型幀編碼時(shí)視頻編碼器對(duì)片外存儲(chǔ)器的訪問可以參考圖1,包含當(dāng)前幀數(shù)據(jù)的讀取,運(yùn)動(dòng)估計(jì)和補(bǔ)償模塊對(duì)參考幀(用于參考的幀)數(shù)據(jù)的讀取,重建幀數(shù)據(jù)的寫出和編碼碼流的寫出等,其中前三項(xiàng)占據(jù)了絕大多數(shù)帶寬。運(yùn)動(dòng)估計(jì)和補(bǔ)償模塊常需要一個(gè)滑動(dòng)窗存儲(chǔ)器用于緩存讀取的參考幀數(shù)據(jù),其所需帶寬與所用的參考幀數(shù)量和滑動(dòng)窗的高度成正比。
[0005]為了減少帶寬和提高編碼速度,常用的實(shí)時(shí)視頻編碼器設(shè)計(jì)大都不采用多參考幀和B幀,而僅僅采用I幀和P幀進(jìn)行編碼。仍參考圖1,用于參考的I幀比起用于參考的P幀不需要運(yùn)動(dòng)估計(jì),其所需片外訪問帶寬較少。但是I幀壓縮率通常較低,實(shí)驗(yàn)證明,頻繁的插入I幀不僅會(huì)使編碼碼率增大,而且會(huì)引入視頻閃爍的感覺。所以,大部分實(shí)時(shí)視頻編碼的幀結(jié)構(gòu)都是采用少量I幀中插入大量連續(xù)P幀的結(jié)構(gòu),如=IPPP……PIPPP……P。
[0006]即使這樣的編碼結(jié)構(gòu),在高分辨率和高幀率下,其帶寬仍然是可觀的。以分辨率為4kX2k (單位為像素)、巾貞率為60中貞/秒(f/s)、8比特(Bit)像素值的4:2:0視頻為例,HEVC編碼器(編碼單元設(shè)為32X32)如果需要支持垂直方向偏移64的運(yùn)動(dòng)向量,其有效片外存儲(chǔ)器訪問帶寬超過了 4GB/s。
[0007]為了減小實(shí)時(shí)編碼器的帶寬需求,現(xiàn)有的編碼器優(yōu)化設(shè)計(jì)方案,主要有增加片上緩存和對(duì)重建幀進(jìn)行壓縮傳輸?shù)?。在部分?yōu)化設(shè)計(jì)中,通過將滑動(dòng)窗擴(kuò)展成相同高度的行緩存(Iinebuffer),來減少運(yùn)動(dòng)估計(jì)的數(shù)據(jù)的重復(fù)讀取,但是其代價(jià)極大;在前述4kX2k視頻編碼的例子中,采用片上IinebufTer可使編碼有效帶寬降低到2.lGB/s,但僅亮度分量所需的片上Iinebuffer容量就要614kB。另一些優(yōu)化設(shè)計(jì)中提出了幀緩存壓縮的方法,但局限在于:采用無損壓縮時(shí)壓縮率受視頻內(nèi)容影響不穩(wěn)定,其節(jié)省帶寬的效果也是不確定的;采用有損壓縮時(shí),視頻損失會(huì)通過幀間預(yù)測(cè)積累,造成編碼圖像質(zhì)量的明顯下降。
【發(fā)明內(nèi)容】
[0008]本發(fā)明技術(shù)方案解決的是現(xiàn)有的視頻編碼方案對(duì)帶寬和功耗需求高的問題。
[0009]為解決上述問題,本發(fā)明實(shí)施例提供一種視頻編碼方法,包括:
[0010]基于視頻編碼的幀結(jié)構(gòu)確定至少一圖像組,所述視頻編碼的幀結(jié)構(gòu)包括若干參考中貞及相鄰參考巾貞之間的若干非參考巾貞,距離一參考巾貞最近的非參考巾貞和參考該一參考巾貞的參考幀組成一圖像組,所述距離一參考幀最近是指與該一參考幀的距離小于或等于與其他參考幀的距離;
[0011 ] 依次對(duì)圖像組進(jìn)行編碼。
[0012]可選的,對(duì)于每一圖像組,先對(duì)各幀的第X個(gè)編碼單元進(jìn)行編碼,再對(duì)各幀的第(χ+l)個(gè)編碼單元進(jìn)行編碼;其中,I ( χ<Χ, X為每一幀所包含的編碼單元的總數(shù)。
[0013]可選的,所述視頻編碼方法還包括:每一編碼單元編碼后,輸出編碼單元編碼后的碼流數(shù)據(jù)至片外碼流緩存。
[0014]可選的,所述視頻編碼方法還包括:在對(duì)一圖像組進(jìn)行編碼前,從片外存儲(chǔ)器讀取參考幀的數(shù)據(jù);在對(duì)各幀的第X個(gè)編碼單元進(jìn)行編碼后,將運(yùn)動(dòng)估計(jì)滑動(dòng)窗的數(shù)據(jù)更新為對(duì)應(yīng)于第(χ+l)個(gè)編碼單元的運(yùn)動(dòng)估計(jì)滑動(dòng)窗的數(shù)據(jù)。
[0015]可選的,所述非參考幀為nP幀。
[0016]一種用于實(shí)現(xiàn)上述視頻編碼方法的視頻編碼器,包括:
[0017]傳輸模塊,適于傳輸圖像組的數(shù)據(jù);
[0018]編碼控制模塊,適于儲(chǔ)存編碼所需的圖像組控制參數(shù)、幀控制參數(shù)和編碼單元控制參數(shù);所述編碼控制模塊包括圖像組控制寄存器、M+1組幀控制寄存器和M+1組編碼單元行緩存,所述圖像組的每一幀分別對(duì)應(yīng)一組幀控制寄存器和一組編碼單元行緩存;所述圖像組中非參考巾貞的數(shù)量小于或等于M, M彡I ;
[0019]編碼模塊,適于基于所述編碼控制模塊儲(chǔ)存的控制參數(shù),對(duì)圖像組的數(shù)據(jù)進(jìn)行編碼。
[0020]可選的,所述傳輸模塊適于按如下順序傳輸編碼單元的數(shù)據(jù):先依次傳輸各幀的第X個(gè)編碼單元的數(shù)據(jù),再依次傳輸各幀的第(Χ+l)個(gè)編碼單元的數(shù)據(jù),其中,I ( x<X,X為每一幀所包含的編碼單元的總數(shù);在所述編碼模塊對(duì)一個(gè)編碼單元進(jìn)行編碼后,再傳輸下一個(gè)編碼單元的數(shù)據(jù)。
[0021]可選的,所述視頻編碼器還包括:幀內(nèi)預(yù)測(cè)模塊,所述幀內(nèi)預(yù)測(cè)模塊包括Μ+1組像素值行緩存,所述圖像組的每一幀分別對(duì)應(yīng)一組像素值行緩存。
[0022]可選的,所述視頻編碼器還包括:
[0023]運(yùn)動(dòng)估計(jì)和補(bǔ)償模塊,適于輸入編碼單元的數(shù)據(jù)和運(yùn)動(dòng)估計(jì)移動(dòng)窗的數(shù)據(jù),基于圖像組控制參數(shù)和幀控制參數(shù)進(jìn)行運(yùn)動(dòng)估計(jì)和補(bǔ)償處理;
[0024]選擇模塊,適于選擇所述幀內(nèi)預(yù)測(cè)模塊的輸出或所述運(yùn)動(dòng)估計(jì)和補(bǔ)償模塊的輸出作為預(yù)測(cè)編碼單元的數(shù)據(jù);
[0025]殘差處理模塊,適于輸入編碼單元的數(shù)據(jù)和所述預(yù)測(cè)編碼單元的數(shù)據(jù),輸出殘差數(shù)據(jù);
[0026]變換與量化模塊,適于基于編碼單元控制參數(shù)對(duì)所述殘差數(shù)據(jù)進(jìn)行變換與量化處理;
[0027]所述編碼模塊適于基于編碼單元控制參數(shù)對(duì)變換與量化處理后的殘差數(shù)據(jù)進(jìn)行編碼。
[0028]可選的,所述視頻編碼器還包括:
[0029]反量化與反變換模塊,適于對(duì)變換與量化處理后的殘差數(shù)據(jù)進(jìn)行反量化與反變換處理;
[0030]重建處理模塊,適于輸入反量化與反變換處理后的殘差數(shù)據(jù)和所述預(yù)測(cè)編碼單元的數(shù)據(jù),輸出重建編碼單元的數(shù)據(jù);
[0031]濾波模塊,適于對(duì)所述重建編碼單元的數(shù)據(jù)進(jìn)行濾波處理。
[0032]與現(xiàn)有技術(shù)相比,本發(fā)明技術(shù)方案至少具有以下有益效果:
[0033]利用非參考幀不需要重建的特點(diǎn),根據(jù)帶寬受限的情況,在視頻編碼的相鄰參考幀之間插入若干非參考幀,以減少重建幀的輸出。相比使用大量行緩存來緩存運(yùn)動(dòng)估計(jì)參考幀數(shù)據(jù)的方法,本發(fā)明技術(shù)方案僅需要增加少量片上存儲(chǔ)器,就可以同等降低視頻編碼所需的帶寬;并且可以根據(jù)需要,通過增加非參考幀的數(shù)量以取得更顯著的降低帶寬和功耗的效果。
[0034]相比傳統(tǒng)的幀緩存有損再壓縮方法,本發(fā)明技術(shù)方案的編碼視頻質(zhì)量損失極少。相比傳統(tǒng)的幀緩存無損再壓縮方法,本發(fā)明技術(shù)方案可以穩(wěn)定的減少帶寬需求,且與視頻內(nèi)容無關(guān)。進(jìn)一步,本發(fā)明技術(shù)方案可以與幀緩存無損壓縮合并使用,使節(jié)省帶寬的效果疊加。
[0035]本發(fā)明技術(shù)方案可以根據(jù)可用帶寬情況,自適應(yīng)的調(diào)整編碼幀結(jié)構(gòu),因此可以在帶寬動(dòng)態(tài)變化的情況下,保持穩(wěn)定的編碼幀率。
【附圖說明】
[0036]圖1是視頻編碼中參考幀的片外存儲(chǔ)訪問的示意圖;
[0037]圖2是視頻編碼中非參考幀的片外存儲(chǔ)訪問的示意圖;
[0038]圖3是本發(fā)明實(shí)施例的視頻編碼方法的流程示意圖;
[0039]圖4是本發(fā)明實(shí)施例的視頻編碼的幀結(jié)構(gòu)示意圖;
[0040]圖5是本發(fā)明實(shí)施例的圖像組中編碼單元的編碼處理順序示意圖;
[0041]圖6是本發(fā)明實(shí)施例的視頻編碼器的結(jié)構(gòu)示意圖。
【具體實(shí)施方式】
[0042]考慮到編碼幀是否用于后續(xù)預(yù)測(cè)參考,會(huì)影響其對(duì)帶寬的需求,如圖2所示,非參考幀(即不用于參考的幀)的重建幀不需要寫到片外存儲(chǔ)器中,其中,不用于參考的I幀、P幀和B幀,在本文中分別稱為nl幀、nP幀和nB幀。因此,本發(fā)明技術(shù)方案利用非參考幀不需要重建的特點(diǎn),根據(jù)帶寬受限的情況,在視頻編碼的相鄰參考幀之間插入若干非參考幀,以減少重建幀的輸出。進(jìn)一步,通過對(duì)運(yùn)