淺壓縮又稱夾層壓縮,是一種視頻壓縮級別,可以有效降低視頻帶寬,并能保持視頻整體質(zhì)量,壓縮比通常為2:1到8:1。根據(jù)這一壓縮比,4K、8K節(jié)目都可以用10G接口進(jìn)行傳輸,這極大降低了網(wǎng)絡(luò)設(shè)備成本。LiveVideoStackCon 2023上海站邀請到楊海濤老師為我們介紹AVS標(biāo)準(zhǔn)組以及上海海思等硬件廠商在無損質(zhì)量等級視頻淺壓縮領(lǐng)域的實(shí)踐與探索。
文/楊海濤
非常榮幸能夠有機(jī)會和大家交流AVS最新制定的視頻壓縮標(biāo)準(zhǔn)——感知無損壓縮。顧名思義,感知無損強(qiáng)調(diào)壓縮圖像的質(zhì)量達(dá)到無損等級。最開始時(shí)起名是輕壓縮,與重壓縮相對,主要強(qiáng)調(diào)在編解碼的過程中相對較低的計(jì)算復(fù)雜度。之后從效果考慮,又將其稱為淺壓縮,相對于深壓縮,淺壓縮更加強(qiáng)調(diào)較低的壓縮比。在標(biāo)準(zhǔn)即將定稿時(shí),AVS標(biāo)準(zhǔn)組內(nèi)達(dá)成一致——PLC,即感知無損壓縮,強(qiáng)調(diào)壓縮視頻的質(zhì)量等級。 今天我將會從應(yīng)用與需求、AVS PLC標(biāo)準(zhǔn)概述、高性能并行處理機(jī)制、底層編碼工具、CVR碼控與質(zhì)量優(yōu)化以及未來展望六個(gè)部分展開介紹。
-01-
應(yīng)用與需求
淺壓縮應(yīng)用的場景是顯示接口和內(nèi)容制作。這兩個(gè)場景平時(shí)H.265以及AVS系列壓縮是沒有涉及的。顯示接口包括HDMI、DP等接口,包括有線無線的傳輸,它們共同的特點(diǎn)是信道的帶寬非常充裕,隨之而來要求無損的畫質(zhì)。在這些接口上傳輸?shù)膬?nèi)容都達(dá)到了數(shù)字無損的質(zhì)量等級,沒有任何的失真。 既然質(zhì)量這么好,為什么還要壓縮呢? 以DP1.4標(biāo)準(zhǔn)為例,其帶寬是32Gbps,在這樣的帶寬下,如果不做任何的壓縮直接傳輸信號,可以傳一路4K60幀每秒的數(shù)據(jù)。但如果做一個(gè)8K60幀每秒的數(shù)據(jù)傳輸,這樣的物理信道沒有辦法承載。
面對這些問題,一種辦法是將物理信道繼續(xù)拓寬,將線加粗,但這種方法并不是特別的方便,線加粗了可能就沒有辦法彎折。另一個(gè)辦法就是去進(jìn)行壓縮,減低物理帶寬的要求,這就是接口壓縮。在內(nèi)容制作方面,通常前端的專業(yè)攝像機(jī)會采集yuv或者rgb格式的信號,傳遞到媒體工作站以后再編輯內(nèi)容,所有的工作都在磁盤文件上進(jìn)行,磁盤的讀寫是一個(gè)非常大的瓶頸。目前解決的辦法是在信號到達(dá)媒體工作站以后轉(zhuǎn)化成一種非常方便編輯的格式,這種格式要求必須是單張圖片的編解碼,而不允許圖像間的預(yù)測編碼。這樣每張圖片編輯之后,內(nèi)容可以直接進(jìn)行儲存。
在技術(shù)需求上淺壓縮與深壓縮有很大的區(qū)別。淺壓縮的內(nèi)容不僅直接會在顯示屏上顯示,還會在后臺進(jìn)行分發(fā)域編碼,從而作為母本使用。其色彩格式通常都是yuv444、rgb等非常高質(zhì)量的格式。 淺壓縮的色彩位深在標(biāo)準(zhǔn)里面是支持8-16比特。同時(shí)支持信號無損和視覺無損。淺壓縮典型的壓縮比是3倍到10倍,這與視頻分發(fā)有顯著的不同。在進(jìn)行H.265編碼時(shí),典型的碼率,例如1080p,通常會在2兆到4兆之間,這已經(jīng)是非常高質(zhì)量的視頻了。典型壓縮比在200:1,甚至500:1,這是所謂的深壓縮或者重壓縮。從這里就可以明顯的看到使用淺壓縮,即便壓縮完其碼率也會達(dá)到百兆或者千兆的量級。
另一個(gè)非常大的區(qū)別在于淺壓縮要求非常低的延遲,特別是接口的壓縮要求,做到行級的延遲。淺壓縮還要求高并行度。淺壓縮信號規(guī)格非常高,這樣的內(nèi)容做信號做實(shí)時(shí)處理一定要并行。還有一點(diǎn)值得一提,淺壓縮因?yàn)橐紤]成本以及在特定場景是否能真正使用,所以在標(biāo)準(zhǔn)制定的過程中,自身就帶有碼控算法。隨機(jī)訪問剛剛已經(jīng)提到,不管是制作域還是接口,都要求單張圖片的隨機(jī)存取。低復(fù)雜度在顯示接口和內(nèi)容制作兩個(gè)領(lǐng)域有一點(diǎn)不同。內(nèi)容制作對于成本的要求相對寬松,因?yàn)槠渚幗獯a器實(shí)現(xiàn)很多是基于工作站的軟件實(shí)現(xiàn)。但是工作接口的標(biāo)準(zhǔn)實(shí)現(xiàn)最終是在芯片中,而芯片會廣泛的嵌入到各種消費(fèi)設(shè)備中,對于成本的約束非常緊,在標(biāo)準(zhǔn)指定中就需要控制算法的復(fù)雜度。在內(nèi)容制作中還有一個(gè)特殊的要求,在多次迭代編碼的過程中不引入顯著的質(zhì)量劣化。
-02-
AVS PLC標(biāo)準(zhǔn)概述
2021年8月的會議上,我們正式提出了標(biāo)準(zhǔn)的需求。AVS標(biāo)準(zhǔn)組之前沒有為淺壓縮制定過標(biāo)準(zhǔn),國內(nèi)也沒有相應(yīng)的標(biāo)準(zhǔn)。所以在制定標(biāo)準(zhǔn)的時(shí)候,仔細(xì)地討論了不同應(yīng)用的不同需求,提出了定bpp壓縮而非定比壓縮、像素行級地延遲、規(guī)定碼控模型和區(qū)分顯示接口與制作域需求技術(shù)需求四個(gè)方面的需求。 之后我們收到了兩份CfP技術(shù)方案,這兩個(gè)方案都是很好的嘗試,但是在評估過程中發(fā)現(xiàn)了一些問題。首先我們提出的標(biāo)準(zhǔn)和碼控是強(qiáng)結(jié)合的,但是收到的方案中并沒有碼控的部分。另外,方案應(yīng)受到硬件的約束,以便在低成本的接口芯片中實(shí)現(xiàn)。在發(fā)現(xiàn)這些問題之后,我們成立了淺壓縮專題組,通過“云封閉開發(fā)”的方式工作。 標(biāo)準(zhǔn)的制定可以分為如下幾個(gè)階段: 2022年3月,此時(shí)的重點(diǎn)在控制邊解碼器成本。6月份,我們完善了基礎(chǔ)的碼控算法,提供了一個(gè)CBR的碼控模型。之后更進(jìn)一步優(yōu)化硬件流水方案。 在2022年年底的時(shí)候,再一次面向低成本進(jìn)行一次收斂,成為業(yè)界最優(yōu)的低成本方案。 2023年的3月份,針對擴(kuò)展測試所發(fā)現(xiàn)的質(zhì)量問題又進(jìn)行了一輪技術(shù)的研討和收斂。最后在4月,完成了標(biāo)準(zhǔn)制定并發(fā)布了FCD版本。
質(zhì)量評估采用非常高質(zhì)量的圖片,包括RGB和YUV444兩種格式,主要覆蓋的位深為8比特和10比特,16比特也在后期的拓展中進(jìn)行了非常充分的評估。 內(nèi)容分為兩類,一類是攝像機(jī)采集的自然內(nèi)容,一類是計(jì)算機(jī)生成內(nèi)容。具體的評估參考了ISO29170-2標(biāo)準(zhǔn)。該標(biāo)準(zhǔn)包含兩部分:一部分是交替閃爍法,一部分是并排對比法。 交替閃爍法是指將編碼前和編碼后的圖像,按照8赫茲交替播放,如果能看到任何閃爍,就說明圖像質(zhì)量不過關(guān)。
這是一個(gè)非常嚴(yán)格標(biāo)準(zhǔn)。在實(shí)際使用過程中,并沒有條件去看到編碼前的圖像,所以并排對比法更為常用。該方法是在兩個(gè)屏幕或者一個(gè)屏幕分為兩半,展示相同的部分,同時(shí)指出失真的地方,即交替閃爍法閃爍的地方,讓大家觀看。如果大家看不到,則通過測試。在測試時(shí)對測試設(shè)備有一定的要求。首先要確認(rèn)顯示器、播放設(shè)備支持高比特位深,還要保證顯示接口未對傳輸圖像做任何處理,如果還不放心可以使用灰階樣圖驗(yàn)證是否具有高位深顯示能力。 在實(shí)際操作時(shí)發(fā)現(xiàn),不管是8比特的顯示器還是10比特的顯示器,在發(fā)生失真的時(shí)候,交替閃爍法測試其失真強(qiáng)度都是一致的,所以在后續(xù)標(biāo)準(zhǔn)制定過程中,為了簡化并且讓更多的單位參與進(jìn)來,就使用8比特的顯示器進(jìn)行所有的測試。
今年4月份AVS標(biāo)準(zhǔn)組在鵬城實(shí)驗(yàn)室組織了一場非常詳細(xì)的測試:使用27張測試圖片,包括相機(jī)采集以及計(jì)算機(jī)生成的圖片,覆蓋了RGB、YUV444等多種格式。經(jīng)過數(shù)據(jù)的篩選和分析,最終27條內(nèi)容中25條通過了閃爍測試,27條全部通過了并排對比測試。
除了對PLC標(biāo)準(zhǔn)方案做通過性畫質(zhì)評估,也和業(yè)界已有的DSC規(guī)范進(jìn)行了對比評估,評估結(jié)果如左下角的表格所示。
這是標(biāo)準(zhǔn)的架構(gòu)圖。整張圖像傳輸進(jìn)來以后,會進(jìn)行Slice劃分。由于塊的高度決定緩存的行數(shù),所以將其劃分成16*2大小的CU。另外,盡管標(biāo)準(zhǔn)文本中含有DCT變換模塊,但為達(dá)成低成本目標(biāo),在接口與幀存兩個(gè)檔次中都關(guān)閉了DCT。
-03-
高性能并行處理機(jī)制
底層并行是指三個(gè)分量并行進(jìn)行熵編碼和熵解碼的操作。 熵編碼是視頻編解碼過程中的瓶頸所在,為了解決這樣的瓶頸問題,真正達(dá)到8k 60幀或者120幀的實(shí)時(shí)編解碼,就需要對各個(gè)分量進(jìn)行并行處理。將每個(gè)分量的壓縮碼流獨(dú)立打包,使得每個(gè)分量都有自己獨(dú)立的熵編碼器和熵解碼器。再通過子流交織的操作,保證三個(gè)分量是同步的。
右上角是子流片的格式。子流片的大小和處理圖像的位深有關(guān)。以16*2大小的CU為例,10比特的內(nèi)容,乘以32,原始數(shù)值就是320比特。再加上16比特的頭開銷。在數(shù)據(jù)payload前會加一個(gè)二比特的數(shù)據(jù)頭,這個(gè)數(shù)據(jù)頭會說明子流片屬于哪個(gè)YUV的分量,在解碼的過程中就可以進(jìn)行區(qū)分。在編碼端輸入圖像之后,會輸出YUV三個(gè)分量的語法元素。語法元素在等待進(jìn)行熵編碼的操作時(shí),會分發(fā)到各自所屬的熵編碼器,編碼完之后會打成子流片。然后放在三個(gè)分量各自的位流緩沖區(qū)里,在統(tǒng)一機(jī)制下,進(jìn)行子流片的交織,形成單一的碼流,傳遞到解碼端,從而保證分量的同步,而不出現(xiàn)任何錯(cuò)誤。解碼端在接收到單一的碼流之后,首先要做的事情就是解交織,解交織之后,把三個(gè)分量對應(yīng)的子流片分別放到各自的位置緩沖區(qū)里解碼,得到最終的重建的像素。
YUV的三個(gè)分量或者RGB編程YCOCG之后其信號復(fù)雜度是不同的。Y分量比較難編碼,一個(gè)編碼塊編碼后產(chǎn)生的Y分量與UV分量的子流片數(shù)量可能極不均衡。采用編碼端的子流交織機(jī)制可保證解碼端同時(shí)拿到一個(gè)編碼塊的三個(gè)分量的編碼數(shù)據(jù)。編碼端會根據(jù)YUV三個(gè)分量的復(fù)雜度進(jìn)行緩沖,保證解碼端不需要再做任何額外的緩沖。
高層并行更好理解,指拿到圖像之后,劃成矩形的條帶——slice。各個(gè)slice之間可以進(jìn)行并行編碼,本質(zhì)上是一個(gè)可伸縮的架構(gòu),隨著視頻規(guī)格的上升,例如從4k到8k,從30幀到60幀,想支持更高的規(guī)格,在硬件設(shè)計(jì)時(shí)只要添加更多的處理單元或者硬件核即可。 需要特別提出,條帶的劃分只有在水平方向并排排列的條帶才可以進(jìn)行并行處理。核心原因在于硬件處理圖像時(shí)是按照一行一行像素進(jìn)行處理的。解碼端需要保證解碼完一行或者兩行之后立刻進(jìn)行輸出。
這一行可能分屬于不同的slice,例如slice0和slice1,這個(gè)時(shí)候就需要一些特殊的操作。簡單的方法也有,每一行打一個(gè)slice,這樣的方法當(dāng)然可以,但是slice之間是沒有空間預(yù)測的,壓縮效率非常差,所以設(shè)置一個(gè)較大的slice仍然是必要的。Slice0 和slice1每編碼完一個(gè)高度為2的塊行,會進(jìn)行碼流的交織。接收端需要設(shè)置slice塊行數(shù)據(jù)的位流緩沖區(qū),這樣才能保證同時(shí)將slice0和slice1的第1行數(shù)據(jù)送到不同的硬件核上進(jìn)行解碼。這是一個(gè)和硬件耦合非常緊密的設(shè)計(jì)。
-04-
底層編碼工具
底層工具可以簡單的分為兩類,一類是常規(guī)的編碼工具,一類是異常處理工具。 常規(guī)編碼工具,主要用于提供基礎(chǔ)的壓縮效率。出于成本的考慮,我們選擇了三種工具。首先塊預(yù)測主要依靠上面一行的像素,以及左邊重建的像素,進(jìn)行方向性的角度預(yù)測。其優(yōu)勢在于具有非常高的并行度,框內(nèi)所有像素都可以同時(shí)獲得其預(yù)測值,但是在紋理變化區(qū)域就沒有辦法進(jìn)行很好的適配。右上角的點(diǎn)預(yù)測則可以很好地處理這種復(fù)雜紋理的圖像。通過在每一個(gè)像素點(diǎn)上進(jìn)行獨(dú)立的預(yù)測、殘差編碼和重建,第1個(gè)像素點(diǎn)的重建會被用作相鄰的第2個(gè)像素點(diǎn)的預(yù)測。該方式的預(yù)測效率是最高的,但有一個(gè)非常致命的問題,其硬件性能非常差。為此我們進(jìn)行了一些約束,在一個(gè)塊所有像素進(jìn)行處理時(shí),保證其需要串行處理的像素?cái)?shù)量最大為3。
首先進(jìn)行偶數(shù)列的預(yù)測,使用黃色的像素點(diǎn)預(yù)測塊里面第1行的像素。在獲得第1行像素之后,再繼續(xù)向下預(yù)測以獲得第2行的像素。完成這兩步之后利用左右的水平方向的預(yù)測進(jìn)行所有奇數(shù)列像素點(diǎn)的預(yù)測和編碼。最后一個(gè)工具是塊復(fù)制,主要用于處理屏幕內(nèi)容。面向顯示的壓縮所處理很多內(nèi)容都是由計(jì)算機(jī)生成的,比如辦公軟件word、Excel等文檔中的文字、表格邊框等。這些內(nèi)容的典型特征是有非常銳利的邊緣以及非常豐富的高頻,重復(fù)性也非常強(qiáng)。通過以2×2為塊單位的塊復(fù)制能夠達(dá)到很好的效果,在典型內(nèi)容上能夠獲得遠(yuǎn)高于塊預(yù)測和點(diǎn)預(yù)測的壓縮效率。三個(gè)常規(guī)工具組合在一起,提供了非常好的基礎(chǔ)壓縮效率支撐。 兩個(gè)異常處理工具,第一個(gè)是原始值模式。這個(gè)模式就是 PCM模式,主要為了防止編碼膨脹。
在一些特殊的情況下預(yù)測編碼,反而會使得編碼之后的比特?cái)?shù)高于直接編碼原始值的比特?cái)?shù),一旦發(fā)現(xiàn)這種情況就需要退回到原始值的編碼。第二個(gè)模式是回退模式。因?yàn)槲覀凂詈狭艘粋€(gè)CBR碼控,碼控的核心是確定QP,確定QP之后編碼出來的比特其實(shí)與預(yù)計(jì)的目標(biāo)還是有上下浮動(dòng)的情況,即碼控不可能做到比特級的精準(zhǔn)。這就需要有一種機(jī)制能夠強(qiáng)制地將壓縮比特控制在一個(gè)閾值之下,避免buffer的溢出。這個(gè)回退模式更多的進(jìn)行兜底處理。
在實(shí)踐過程中,我們發(fā)現(xiàn)16x2塊級的預(yù)測并不能夠非常好的適配紋理內(nèi)容突變的場景。通過不斷探索,我們發(fā)現(xiàn)將預(yù)測做到子塊級可以很好的解決上述的問題。 為此我們開發(fā)了相應(yīng)的幾個(gè)算法:第一個(gè)算法是直接劃分更小的子塊,每個(gè)子塊獨(dú)立進(jìn)行DC預(yù)測,這樣的擴(kuò)展確實(shí)能夠減輕主觀失真。第二個(gè)算法是子塊DC補(bǔ)償。
一個(gè)編碼完成后,如果它的平坦區(qū)域編碼效果不理想,可以通過這樣的補(bǔ)救措施,在4×2或者8×1的級別上額外的傳輸原始值與當(dāng)前重建值的差值,在補(bǔ)償之后效果明顯提高,編碼質(zhì)量非常好。 在很多典型圖像里,文字之間背景是平坦的,但文字之內(nèi)是非常復(fù)雜的,通常會采用塊復(fù)制的方式處理。如果文字間隔能夠使用空間預(yù)測,例如豎直方向的預(yù)測等,可以顯著改善文字之間水平方向的條狀失真。右上角的子塊插值預(yù)測是為了處理一種比較少見但對畫質(zhì)影響很大的情況。
如果當(dāng)前編碼塊的所有預(yù)測方法都已失效,例如當(dāng)前編碼塊是一個(gè)平坦的塊,但無論是上方還是左方的參考都是噪聲,沒有辦法獲得有效的預(yù)測值,則可能在這個(gè)平坦區(qū)域帶來人眼可察覺的編碼失真。這個(gè)問題可以通過直接編碼整個(gè)塊的DC值,再去編碼塊里每個(gè)像素相對于DC值的差值。該模式下,當(dāng)前圖像塊來是完全獨(dú)立編碼的,不依賴左側(cè)和上方的像素。所有模式結(jié)合起來,在一些非常小的、非常容易忽略的地方,甚至特別敏感的平坦區(qū),都會有很好的處理效果。
無論預(yù)測模式多差,如果能夠用非常小的量化補(bǔ)償進(jìn)行處理,其主觀效果都可以接受,無非多花一點(diǎn)比特而已。但這就對量化機(jī)制提出了要求,需要其支撐非常精細(xì)的調(diào)節(jié)。 與一般標(biāo)準(zhǔn)不同的是,我們的標(biāo)準(zhǔn)基于右移量化。以AVS為例,AVS2和AVS3是進(jìn)行分?jǐn)?shù)量化。QP每增加8,量化步長就會加倍。精細(xì)的調(diào)節(jié)一個(gè)量化操作,通常包含一個(gè)乘法和一個(gè)右移的操作。頻繁的進(jìn)行高性能處理,對于硬件來說是一個(gè)很大的問題。所以我們?nèi)∠顺朔ú僮鳎蚜炕唵蔚幕啚橛乙啤]有乘法也就意味著量化步長就是不斷q step加倍的過程。量化是分不同等級的。CU級量化會根據(jù)塊的復(fù)雜度在編碼端進(jìn)行分析。分別分析亮度和色度,來劃分其屬于哪一個(gè)復(fù)雜度等級,從而推導(dǎo)出對應(yīng)的QP。
QP的推導(dǎo)過程是編、解碼端同時(shí)進(jìn)行的,這與傳統(tǒng)編解碼標(biāo)準(zhǔn)不同。傳統(tǒng)的分發(fā)域重壓縮標(biāo)準(zhǔn),QP會在編碼端推導(dǎo)出來之后再傳遞給解碼端。除了CU的基礎(chǔ)QP,在每一個(gè)2×2的子塊,還可以進(jìn)行額外的調(diào)節(jié)。根據(jù)當(dāng)前此塊上參考的紋理復(fù)雜度分析,如果判斷當(dāng)前子塊比較平坦,會額外在CU QP基礎(chǔ)上進(jìn)行減1或者減2的操作,用更高質(zhì)量進(jìn)行編碼;如果子塊比較復(fù)雜,就維持CU QP不變。 除了子塊量化,還有逐點(diǎn)量化,逐點(diǎn)量化是跟上文提到的點(diǎn)預(yù)測組合應(yīng)用的。如果一個(gè)點(diǎn)的殘差比較大,就說明這個(gè)區(qū)域是難以預(yù)測的,QP需要相對分配的較大一點(diǎn),反之則說明區(qū)域比較好預(yù)測,是一個(gè)平坦區(qū)域。平坦區(qū)域需要進(jìn)行重點(diǎn)的保護(hù),需要將QP進(jìn)一步的減小。
系數(shù)編碼的核心概念是在每個(gè)系數(shù)分組上進(jìn)行半定長編碼。在高性能處理中是沒有辦法進(jìn)行變長編碼的,處理性能不符合要求。半定長編碼會在一個(gè)系數(shù)組中所包含的殘差中尋找其公共碼長,并在編碼塊的頭信息里面?zhèn)鬟f。用同樣的長度對系數(shù)組內(nèi)所有殘差做定長編碼,對熵編碼的性能有非常大的提升。
RDO計(jì)算是編碼側(cè)一種操作。這里需要特別指出,由于采用的是CBR碼控,要保證buffer不溢出,在選擇RDO的過程中更加傾向于低比特。RGB的內(nèi)容會轉(zhuǎn)化成YCoCg之后再進(jìn)行編碼。 在高層并行時(shí),矩形slice需要進(jìn)行并行處理。圖像的寬和高都要和CU的16×2進(jìn)行對齊。常見的對齊方法是大家所熟悉的padding。Padding有兩種方法,一種是在圖像的右側(cè)進(jìn)行,其優(yōu)點(diǎn)在于復(fù)雜度較低,但編碼可能會不均衡。第二種方法是在每個(gè)slice的右側(cè)做,可以解決編碼不均衡的問題,但同時(shí)會面臨另外一個(gè)問題——每一個(gè)硬件的核心都需要進(jìn)行填充,會帶來額外的成本增加。標(biāo)準(zhǔn)中同時(shí)支持了兩種padding的方式,大家可以按需選擇。
-05-
CBR碼控與質(zhì)量優(yōu)化
上圖是H.264標(biāo)準(zhǔn)中描述的漏桶模型,編碼一個(gè)塊時(shí)會把它的編碼比特輸出到碼控buffer里通過constant bit rate平滑處理。由于塊的復(fù)雜度不斷變化,有復(fù)雜的噪聲區(qū),也有很簡單的平坦區(qū),所以在定速率處理完每個(gè)塊時(shí),真正進(jìn)入到buffer的碼率是波動(dòng)的。
碼控有兩個(gè)主要的輸入,第一個(gè)輸入是當(dāng)前塊兒到底是復(fù)雜還是簡單?第二個(gè)輸入是buffer目前到底是空還是滿?碼控的輸出是亮度分量與色度分量的QP。核心思想在于判斷圖像編碼中一個(gè)編碼塊之前所有塊整體是好編還是難編。當(dāng)然只有這些信息是不夠的,在前面所有塊處理完之后,會對塊的復(fù)雜度做一個(gè)簡單的分類,將其分為5個(gè)復(fù)雜度等級。每一個(gè)等級會有對應(yīng)預(yù)測編碼比特,這樣就有了較為充分的信息,從而對當(dāng)前的塊進(jìn)行更好的碼率規(guī)劃以及碼率分配。
碼控對于最終的壓縮效率影響可以達(dá)到10%甚至20%多,碼控相對應(yīng)也要進(jìn)行一些調(diào)優(yōu)。最開始分析塊時(shí),決定當(dāng)前塊是復(fù)雜還是簡單。如何定義復(fù)雜與簡單,并不是僅僅看紋理的復(fù)雜度,實(shí)質(zhì)上復(fù)雜與簡單,是好編與難編的同義詞。即使是看起來很復(fù)雜的塊,如果能夠編成很小的塊,它依然是一個(gè)簡單塊。為此我們進(jìn)行了一個(gè)區(qū)分,如果一個(gè)屏幕內(nèi)容能夠用塊復(fù)制很好去壓縮,也會將其認(rèn)為是一個(gè)簡單塊。這樣的操作,對于質(zhì)量的改善是非常明顯的。 在整體碼控中特別需要關(guān)注平坦區(qū)。在一個(gè)復(fù)雜區(qū)域中間的平坦區(qū)是最難處理的地方。在處理這些地方時(shí),會首先判斷目前buffer是否滿,如果buffer不是很滿,即便一個(gè)相對簡單的內(nèi)容,也會為其分配更多的比特來保證區(qū)域的質(zhì)量。在加入上述碼控調(diào)優(yōu)之后,復(fù)雜區(qū)域中間的平坦區(qū)域的質(zhì)量有非常顯著的提升。
在碼控最開始的時(shí)候,存在一個(gè)delay,其作用是為了在buffer里累積一定量的初始比特。這樣在后面進(jìn)行CBR傳輸時(shí),可避免發(fā)生buffer下溢的情況。即便發(fā)生了buffer下溢,標(biāo)準(zhǔn)中也存在下溢填充的機(jī)制進(jìn)行兜底。碼控需要使用buffer充溢度作為輸入。但是在slice初始與結(jié)尾時(shí),真實(shí)水位并不匹配碼控需求。這兩個(gè)地方需要用虛擬的buffer充溢度進(jìn)行碼控調(diào)節(jié)。壓縮非常依賴上方參考的像素行,如果上方像素行不可得,會出現(xiàn)較大的編碼壓力。如果上方像素行不可得,需要為第一行的像素分配更多的比特,使其有更好的質(zhì)量,避免slice的邊界出現(xiàn)失真。首列也存在相似的問題。首列左側(cè)的像素也是不可得,這會對塊復(fù)制產(chǎn)生影響。塊復(fù)制向左搜不到時(shí),會向上搜索以提升重建圖像質(zhì)量。
-06-
未來展望
目前已經(jīng)啟動(dòng)了面向制作域的AVS422和AVS444的壓縮。這里也分為兩部分。一部分是攝像機(jī)側(cè),或者說采集域做視頻壓縮。可以擴(kuò)展目前僅支持40的AVS3標(biāo)準(zhǔn)方案來支持42以及44色彩格式,從而可以使用專業(yè)攝像機(jī)采集并壓縮更高色彩保真度的視頻內(nèi)容。具體到制作域,其壓縮需求又有些許不同。AVS標(biāo)準(zhǔn)組也正計(jì)劃做一個(gè)新的制作域標(biāo)準(zhǔn),從而滿足對軟件非常友好的高并行度、低復(fù)雜度的制作域單幀編輯操作需求。另外在三維醫(yī)學(xué)影像編碼領(lǐng)域,要求做到數(shù)學(xué)無損,或者主觀無損,從技術(shù)上也可以歸到淺壓縮,在這里AVS標(biāo)準(zhǔn)組進(jìn)行了統(tǒng)一的標(biāo)準(zhǔn)規(guī)劃。
編輯:黃飛
?
評論