優(yōu)先權(quán)要求
本申請(qǐng)要求2014年12月11日提交的、名稱(chēng)為“用于并行視頻編碼的碼率控制”、序號(hào)為14/567,600的美國(guó)專(zhuān)利申請(qǐng)的優(yōu)先權(quán),并且通過(guò)引用將該美國(guó)專(zhuān)利申請(qǐng)的全文并入本文中。
背景技術(shù):
在許多媒體應(yīng)用中,視覺(jué)質(zhì)量是用戶(hù)體驗(yàn)的重要方面。在媒體壓縮/解壓縮(編解碼器)系統(tǒng)中,視覺(jué)質(zhì)量可主要基于使用的壓縮格式。視頻編碼器壓縮視頻信息,以便更多信息能夠通過(guò)給定帶寬發(fā)送或者存儲(chǔ)在給定存儲(chǔ)空間等中。隨后可經(jīng)將信號(hào)或數(shù)據(jù)解碼或解壓縮以向用戶(hù)顯示的解碼器,將壓縮的信號(hào)或數(shù)據(jù)解碼。
諸如h.264/mpeg-4高級(jí)視頻編碼(avc)標(biāo)準(zhǔn)、高效率視頻編碼(hevc)標(biāo)準(zhǔn)和vp8(rf36386)/vp9的標(biāo)準(zhǔn)化編解碼器確保所有符合標(biāo)準(zhǔn)的解碼器將能夠?qū)⒎蠘?biāo)準(zhǔn)的壓縮視頻解碼。標(biāo)準(zhǔn)化編解碼器定義稱(chēng)為假定參考解碼器(hrd)的接收器模型。為符合標(biāo)準(zhǔn),編碼器必須創(chuàng)建可由hrd解碼的比特流。hrd指定一個(gè)或更多個(gè)緩沖器,如編碼圖片緩沖器(cpb)和解碼圖片緩沖器(dpb)。hrd可采用由傳輸比特率、緩沖器大小和初始解碼器緩沖器充滿度參數(shù)化的漏桶模型。在以恒定或近恒定比特率傳送視頻數(shù)據(jù)時(shí),緩沖在編碼器和解碼器側(cè)用于適應(yīng)壓縮視頻的比特率變化。比特率變化是壓縮給定視頻幀所需要的比特?cái)?shù)量例如隨幀類(lèi)型(例如幀內(nèi)或幀間編碼)的變化而改變的結(jié)果。
經(jīng)編碼技術(shù)獲得的變換系數(shù)可量化為量化參數(shù)(qp)的函數(shù)。較大的qp值以較低質(zhì)量為代價(jià),產(chǎn)生較大的壓縮,而較低的qp值以降低的壓縮率為代價(jià),實(shí)現(xiàn)較大的視覺(jué)質(zhì)量。作為滿足hrd緩沖器約束的碼率控制的方式,可為給定幀調(diào)制qp,以控制生成的比特的數(shù)量(即,幀大?。?。一般情況下,負(fù)責(zé)為給定幀確定qp值的碼率控制模塊需要以前的編碼幀使用的比特?cái)?shù)量,以控制當(dāng)前幀的編碼過(guò)程,從而達(dá)到目標(biāo)比特率和滿足緩沖器約束。
隨著視頻編解碼器的復(fù)雜性不斷增大,并行處理在視頻編碼應(yīng)用中正變得更加重要。然而,通過(guò)并行編碼體系結(jié)構(gòu),先前的編碼幀使用的比特?cái)?shù)量可能不可用于負(fù)責(zé)為隨后編碼的幀確定qp值的碼率控制模塊。因此,能夠執(zhí)行此類(lèi)技術(shù)的并行視頻編碼器碼率控制技術(shù)和系統(tǒng)在市場(chǎng)中是有利的。
附圖說(shuō)明
在附圖中以示例的方式而非限制的方式示出本文中所述的材料。為示圖的簡(jiǎn)明和清晰起見(jiàn),圖中所示元素不一定按比例畫(huà)出。例如,為清晰起見(jiàn),一些元素的尺寸相對(duì)其它元素可能被放大。此外,在認(rèn)為適當(dāng)之處,已在圖中重復(fù)附圖標(biāo)記以指示對(duì)應(yīng)的或類(lèi)似的元素。在圖中:
圖1a是根據(jù)一些實(shí)施例的并行視頻編碼體系結(jié)構(gòu)的示意圖;
圖1b是根據(jù)一些實(shí)施例的并行視頻編碼器體系結(jié)構(gòu)的示意圖;
圖2a是示出根據(jù)一些實(shí)施例的、適合用于初始視頻幀的并行視頻編碼碼率控制方法的流程圖;
圖2b是示出根據(jù)一些實(shí)施例的、適合用于隨后視頻幀的并行視頻編碼碼率控制方法的流程圖;
圖3a、3b和3c是示出根據(jù)一些實(shí)施例的、用于估計(jì)前面緊鄰幀的大小的技術(shù)的框圖;
圖3d是示出根據(jù)一些實(shí)施例的、根據(jù)幀類(lèi)型估計(jì)前面緊鄰幀的大小的方法的流程圖;
圖3e是示出根據(jù)一些實(shí)施例的、用于估計(jì)前面緊鄰幀的大小的技術(shù)的框圖;
圖3f是示出根據(jù)一些實(shí)施例的、在用于估計(jì)前面緊鄰幀的大小的多個(gè)技術(shù)中動(dòng)態(tài)選擇的方法的流程圖;
圖4是示出根據(jù)一些實(shí)施例的、配置用于并行視頻編碼碼率控制的碼率控制模塊的框圖;
圖5是示出根據(jù)一些實(shí)施例的、包括配置用于并行視頻編碼碼率控制的碼率控制模塊的視頻處理系統(tǒng)的框圖;
圖6是根據(jù)一些實(shí)施例的圖形處理器的一實(shí)施例的框圖;
圖7是根據(jù)一些實(shí)施例的圖形處理引擎的另一實(shí)施例的框圖;
圖8是根據(jù)一些實(shí)施例的數(shù)據(jù)處理系統(tǒng)的框圖;以及
圖9是根據(jù)一些實(shí)施例布置的示范移動(dòng)裝置的圖形。
具體實(shí)施方式
參照附圖來(lái)描述一個(gè)或更多個(gè)實(shí)施例。雖然詳細(xì)地示出并且論述了特定的配置和布置,但應(yīng)理解的是,這樣做只是為了說(shuō)明的目的。相關(guān)領(lǐng)域技術(shù)人員將認(rèn)識(shí)到,在不脫離本說(shuō)明書(shū)的精神和范圍的情況下,其它配置和布置是可能的。相關(guān)領(lǐng)域技術(shù)人員將明白,本文中描述的技術(shù)和/或布置除了可用于本文中詳細(xì)所述的系統(tǒng)和應(yīng)用外,還可用于多種其它系統(tǒng)和應(yīng)用中。
在以下詳細(xì)描述中參照了附圖,這些附圖形成本文的一部分并且示出示范實(shí)施例。此外,要理解的是,在不脫離要求保護(hù)的主題的范圍的情況下,可利用其它實(shí)施例,并且可進(jìn)行結(jié)構(gòu)的和/或邏輯的變化。因此,不應(yīng)從限制的意義上來(lái)理解下面的詳細(xì)描述,并且要求保護(hù)的主題的范圍只由隨附權(quán)利要求書(shū)及其等效物來(lái)限定。
在下面的描述中,陳述了許多細(xì)節(jié),然而,本領(lǐng)域技術(shù)人員將明白,可在沒(méi)有這些特定細(xì)節(jié)的情況下實(shí)踐實(shí)施例。以框圖形式示出而不是詳細(xì)示出公知的方法和裝置,以免混淆更重要的方面。此說(shuō)明書(shū)通篇對(duì)“一實(shí)施例(anembodiment)”或“一個(gè)實(shí)施例(oneembodiment)”的引用表示結(jié)合該實(shí)施例描述的特定的特征、結(jié)構(gòu)、功能或特性包括在至少一個(gè)實(shí)施例中。因此,短語(yǔ)“在一實(shí)施例中”或“在一個(gè)實(shí)施例中”在本說(shuō)明書(shū)通篇各個(gè)位置的多次出現(xiàn)不一定指同一實(shí)施例。此外,可在一個(gè)或更多個(gè)實(shí)施例中以任何適合的方式組合在一實(shí)施例的上下文中描述的特定的特征、結(jié)構(gòu)、功能或特性。例如,第一實(shí)施例可在以下的任何情況與第二實(shí)施例組合:與這兩個(gè)實(shí)施例關(guān)聯(lián)的特定的特征、結(jié)構(gòu)、功能或特性相互不排斥。
在示范實(shí)施例的描述和隨附權(quán)利要求書(shū)中使用時(shí),除非上下文另外明確指示,否則,意在使單數(shù)形式“一(a)”、“一(an)”和“該(the)”還包括復(fù)數(shù)形式。也將理解,術(shù)語(yǔ)“和/或”在本文中使用時(shí)指的是并且涵蓋一個(gè)或更多個(gè)關(guān)聯(lián)的所列項(xiàng)的任何的和所有的可能組合。
在本說(shuō)明書(shū)通篇和在權(quán)利要求書(shū)中使用時(shí),加有術(shù)語(yǔ)“至少之一”或“一個(gè)或更多個(gè)”的項(xiàng)目清單能夠表示所列項(xiàng)的任何組合。例如,短語(yǔ)“a、b或c至少之一”能夠表示:a;b;c;a和b;a和c;b和c;或a、b和c。
術(shù)語(yǔ)“耦合”和“連接”連同其衍生詞可在本文中用于描述在組件之間的功能或結(jié)構(gòu)關(guān)系。應(yīng)理解,并不打算使這些術(shù)語(yǔ)成為彼此的同義詞。相反,在特定的實(shí)施例中,“連接”可用于指兩個(gè)或更多個(gè)元素相互的直接的物理、光學(xué)或電氣接觸。“耦合”可用于指兩個(gè)或更多個(gè)元素相互的、直接的或間接的(它們之間有其它元素插入)物理、光學(xué)或電氣接觸,和/或指這兩個(gè)或更多個(gè)元素相互合作或交互(例如,如在因果關(guān)系中)。
根據(jù)計(jì)算機(jī)存儲(chǔ)器內(nèi)的對(duì)數(shù)據(jù)比特進(jìn)行的操作的符號(hào)表示和算法來(lái)呈現(xiàn)本文中提供的詳細(xì)描述的一些部分。除非另外具體說(shuō)明,否則,如從下面的論述中顯而易見(jiàn)的,要領(lǐng)會(huì)在本說(shuō)明書(shū)通篇中,利用諸如“計(jì)算(calculating)”、“計(jì)算(computing)”、“確定(determing)”、“估計(jì)(estimating)”、“存儲(chǔ)(storing)”、“收集(collecting)”、“顯示(displaying)”、“接收(receiving)”、“鞏固(consolidating)”、“生成(generating)”、“更新(updating)”或諸如此類(lèi)的術(shù)語(yǔ)的論述指的是計(jì)算機(jī)系統(tǒng)或類(lèi)似電子計(jì)算裝置的動(dòng)作和過(guò)程,計(jì)算機(jī)系統(tǒng)或類(lèi)似電子計(jì)算裝置將表示為在包括寄存器和存儲(chǔ)器的計(jì)算機(jī)系統(tǒng)的電路內(nèi)的物理(電子)量的數(shù)據(jù)操縱和變換成類(lèi)似地表示為在計(jì)算機(jī)系統(tǒng)存儲(chǔ)器或寄存器或其它此類(lèi)信息存儲(chǔ)、傳輸或顯示裝置內(nèi)的物理量的其它數(shù)據(jù)。
雖然以下描述陳述了可例如在諸如片上系統(tǒng)(soc)體系結(jié)構(gòu)的體系結(jié)構(gòu)中體現(xiàn)的實(shí)施例。但本文中描述的技術(shù)和/或布置的實(shí)現(xiàn)不限于特定的體系結(jié)構(gòu)和/或計(jì)算系統(tǒng),并且可由用于類(lèi)似用途的任何體系結(jié)構(gòu)和/或計(jì)算系統(tǒng)實(shí)現(xiàn)。采用例如多個(gè)集成電路(ic)芯片和/或封裝的各種體系結(jié)構(gòu)和/或諸如機(jī)頂盒、智能電話等各種計(jì)算裝置和/或消費(fèi)電子(ce)裝置可實(shí)現(xiàn)本文中描述的技術(shù)和/或布置。此外,雖然以下描述可陳述諸如邏輯實(shí)現(xiàn)、系統(tǒng)組件的類(lèi)型和相互關(guān)系、邏輯分割/集成選擇等許多特定細(xì)節(jié),但可在沒(méi)有此類(lèi)特定細(xì)節(jié)的情況下實(shí)踐要求保護(hù)的主題。此外,例如可能未詳細(xì)示出諸如控制結(jié)構(gòu)和完全軟件指令序列的一些材料,以免混淆本文中公開(kāi)的材料。
本文中公開(kāi)的材料的某些部分用硬件實(shí)現(xiàn),例如實(shí)現(xiàn)為圖形處理器中的邏輯電路。某些其它部分可用硬件、固件、軟件或其任何組合實(shí)現(xiàn)。本文中公開(kāi)的至少一些材料也可實(shí)現(xiàn)為存儲(chǔ)在機(jī)器可讀媒體上、可由一個(gè)或更多個(gè)處理器(圖形處理器和/或中央處理器)讀取和執(zhí)行的指令。機(jī)器可讀媒體可包括用于以機(jī)器(例如,計(jì)算裝置)可讀形式存儲(chǔ)或傳送信息的任何媒體和/或機(jī)構(gòu)。例如,機(jī)器可讀媒體可包括:只讀存儲(chǔ)器(rom);隨機(jī)存取存儲(chǔ)器(ram);磁盤(pán)存儲(chǔ)媒體;光學(xué)存儲(chǔ)媒體;閃速存儲(chǔ)器裝置;電氣、光學(xué)、聲學(xué)或其它類(lèi)似非暫時(shí)性有形媒體。
本文中描述的方法、裝置、設(shè)備、計(jì)算平臺(tái)及制品涉及視頻編碼。下面描述一個(gè)或更多個(gè)系統(tǒng)、設(shè)備、方法和計(jì)算機(jī)可讀媒體,所述一個(gè)或更多個(gè)系統(tǒng)、設(shè)備、方法和計(jì)算機(jī)可讀媒體用于確定在正與一個(gè)或更多個(gè)其它視頻幀并行編碼的視頻幀的qp確定中將采用的目標(biāo)比特?cái)?shù)量(即,目標(biāo)幀大小或目標(biāo)比特率)。在另外的實(shí)施例中,所述系統(tǒng)、設(shè)備、方法或計(jì)算機(jī)可讀媒體還可基于確定的qp生成一個(gè)或更多個(gè)編碼視頻數(shù)據(jù)流。
在本文中詳細(xì)描述的一些實(shí)施例中,提供滿足在并行視頻編碼器中的hrd緩沖器約束的低復(fù)雜性的碼率控制。由于用于將幀編碼的一個(gè)視頻編碼管線使用的實(shí)際比特?cái)?shù)量可能不可用于根據(jù)并行幀編碼的同步而將另一幀編碼的另一并行視頻編碼管線,因此,由一種或更多種方法估計(jì)由前面緊鄰幀使用的比特的數(shù)量。在另外的實(shí)施例中,為估計(jì)前面緊鄰視頻幀大小所采用的技術(shù)隨用于前面緊鄰視頻幀的信息的可用性的變化而在幀之間動(dòng)態(tài)改變,信息的可用性可隨幀同步而改變。因此,前面緊鄰視頻幀大小的估計(jì)可為給定幀采用第一技術(shù),并且隨后為隨后幀采用第二技術(shù)。在另外的實(shí)施例中,以取決于為前面緊鄰幀估計(jì)的幀大小的方式,更新緩沖器充滿度。在另外的實(shí)施例中,根據(jù)當(dāng)前幀類(lèi)型、為前面緊鄰幀估計(jì)的比特率和更新的緩沖器充滿度,確定當(dāng)前幀的比特率。
在一些實(shí)施例中,如基于根據(jù)本文中實(shí)施例確定的用于當(dāng)前幀的目標(biāo)比特率確定和/或修改的qp用于量化與視頻數(shù)據(jù)塊(chunk)關(guān)聯(lián)的變換系數(shù)。隨后,可將量化的變換系數(shù)和量化參數(shù)編碼到比特流中以在解碼器使用。解碼器隨后可采用任何已知技術(shù)將比特流解壓縮/解碼以再現(xiàn)用于向最終用戶(hù)呈現(xiàn)/顯示的幀。
圖1a是根據(jù)一些實(shí)施例的并行視頻編碼體系結(jié)構(gòu)100的示意圖。在示出的示范實(shí)施例中,接收作為并行編碼器101的多個(gè)視頻數(shù)據(jù)輸入102的幀5、10、15。在一些實(shí)施例中,幀5、10、15是例如與時(shí)間系列關(guān)聯(lián)的連續(xù)視頻幀n、n+1、n+2等的序列。并行編碼器101用于將幀5、10、15并行編碼,并且輸出對(duì)應(yīng)的編碼的流103、104、105,隨后可以用任何方式組合和/或復(fù)用這些編碼的流,這是因?yàn)楸疚闹械膶?shí)施例在此方面不受限制。并行編碼體系結(jié)構(gòu)100例如可由配置成將從任何上游源接收的輸入視頻幀5、10、15編碼的視頻壓縮-解壓縮(編解碼器)實(shí)現(xiàn)。在示范實(shí)施例中,體系結(jié)構(gòu)100由與諸如h.264/mpeg-4avc標(biāo)準(zhǔn)、hevc標(biāo)準(zhǔn)、vp8標(biāo)準(zhǔn)、vp9標(biāo)準(zhǔn)的一個(gè)或更多個(gè)標(biāo)準(zhǔn)兼容的編解碼器實(shí)現(xiàn)。
圖1b是進(jìn)一步示出根據(jù)一些實(shí)施例的并行視頻編碼器101的示意圖。并行視頻編碼器101具有配置成將三個(gè)連續(xù)視頻幀n、n+1和n+2并行編碼的多個(gè)編碼管線107、108和109。編碼管線107還包括經(jīng)耦合以接收輸入視頻幀n的視頻分析模塊110、耦合到模塊110的輸出的碼率控制模塊120、耦合到模塊120的輸出的運(yùn)動(dòng)估計(jì)和模式判定模塊130及耦合到模塊130的輸出的變換/量化和熵編碼模塊140。編碼管線108還包括經(jīng)耦合以接收輸入視頻幀n+1的視頻分析模塊112、耦合到模塊112的輸出的碼率控制模塊122、耦合到模塊122的輸出的運(yùn)動(dòng)估計(jì)和模式判定模塊132及耦合到模塊132的輸出的變換/量化和熵編碼模塊142。編碼管線109還包括經(jīng)耦合以接收輸入視頻幀n+2的視頻分析模塊114、耦合到模塊114的輸出的碼率控制模塊124、耦合到模塊124的輸出的運(yùn)動(dòng)估計(jì)和模式判定模塊134及耦合到模塊134的輸出的變換/量化和熵編碼模塊144。
在一些實(shí)施例中,并行碼率編碼器的編碼管線將幀編碼,而無(wú)需用于將在一系列的連續(xù)幀內(nèi)的、該幀前面緊鄰的視頻幀編碼的比特?cái)?shù)量的先驗(yàn)知識(shí)。在圖1b示出的示范實(shí)施例中,每個(gè)碼率控制模塊120、122、124還耦合到用于將第(n-2)個(gè)幀編碼的目標(biāo)比特率輸入和幀大?。ū忍?cái)?shù)量)。例如,用于幀n-2的比特?cái)?shù)量從變換、量化和熵模塊140輸出并且輸入到碼率控制模塊124中。碼率控制模塊120、122、124缺乏在其前面緊鄰幀中使用的比特?cái)?shù)量的輸入,這是因?yàn)樵诓⑿芯幋a體系結(jié)構(gòu)內(nèi),在一個(gè)或更多個(gè)碼率控制計(jì)算將由碼率控制模塊針對(duì)當(dāng)前幀n執(zhí)行時(shí),用于幀n-1的比特?cái)?shù)量尚未由變換、量化和熵模塊輸出。在示范體系結(jié)構(gòu)中,在管線107、108、109之間的同步使得處理當(dāng)前幀n的每個(gè)并行碼率控制模塊120、122、124將接收在當(dāng)前幀前面緊鄰的幀前面緊鄰的幀n-2的比特大小作為輸入。因此,在碼率控制模塊120開(kāi)始處理幀n時(shí),僅有關(guān)幀n-2使用的比特?cái)?shù)量的信息可用。類(lèi)似地,在碼率控制模塊122開(kāi)始處理幀n+1時(shí),僅有關(guān)幀n-1使用的比特?cái)?shù)量的信息可用。最后,在碼率控制模塊124開(kāi)始處理幀n+2時(shí),僅有關(guān)幀n使用的比特?cái)?shù)量的信息可用。
并行視頻編碼器101例示三個(gè)并行視頻編碼管線,其中比特?cái)?shù)量用于將在該幀前面緊鄰的視頻幀編碼。然而,可擴(kuò)展并行性(例如,到4個(gè)管線),在此情況下,可擴(kuò)展本文中描述的適應(yīng)用于將視頻幀n-1編碼的比特?cái)?shù)量的先驗(yàn)知識(shí)的缺乏的技術(shù)和系統(tǒng)(例如,以處理在n-2幀編碼中使用的比特的缺乏)。雖然碼率控制隨著增大的并行性而變得更困難,但采用本文中在并行編碼器101的上下文中針對(duì)幀n-1描述的技術(shù)和體系結(jié)構(gòu)來(lái)估計(jì)用于n-2幀、n-3幀、并且甚至n-4幀的比特?cái)?shù)量可以是可能的。
在一些實(shí)施例中,當(dāng)前視頻幀的處理包括至少部分基于從先前的視頻幀處理生成的一個(gè)或更多個(gè)中間參數(shù),估計(jì)用于先前的視頻幀的比特?cái)?shù)量。例如,進(jìn)一步參照?qǐng)D1b,對(duì)于編碼管線109,碼率控制模塊124用于使用用于視頻幀n+1的比特?cái)?shù)量的估計(jì)來(lái)為視頻幀n+2確定目標(biāo)比特?cái)?shù)量,基于從運(yùn)動(dòng)估計(jì)和模式判定模塊132和/或碼率控制模塊122和/或視頻分析模塊112可獲得的一個(gè)或更多個(gè)中間參數(shù)或信息確定用于視頻幀n+1的比特?cái)?shù)量的估計(jì)。在另外的實(shí)施例中,比較來(lái)自編碼管線108的中間參數(shù)或信息和從編碼管線109可獲得的信息和/或中間參數(shù),以確定用于視頻幀n+2的大小。
圖2a是示出根據(jù)一些實(shí)施例的、適合用于初始視頻幀的并行視頻編碼碼率控制方法201的流程圖。方法201可由諸如編碼器101的并行編碼器在并行視頻編碼碼率控制的自舉(bootstrapping)階段期間執(zhí)行。在方法201中,基于目標(biāo)比特率、緩沖器約束和編碼結(jié)構(gòu),確定用于前兩個(gè)幀的目標(biāo)比特?cái)?shù)量。編碼結(jié)構(gòu)指定可在圖片組(gop)中出現(xiàn)的幀類(lèi)型,諸如未參考另外的一個(gè)幀或多個(gè)幀來(lái)預(yù)測(cè)的幀內(nèi)幀(i幀)和參考另外的一個(gè)幀或多個(gè)幀來(lái)預(yù)測(cè)的幀間預(yù)測(cè)幀。預(yù)測(cè)幀還可包括:參考先前的一個(gè)幀或多個(gè)幀來(lái)預(yù)測(cè)的、并且在其它幀的預(yù)測(cè)中可供使用的p幀;參考先前的或隨后的一個(gè)幀或多個(gè)幀來(lái)預(yù)測(cè)的、但在其它幀的預(yù)測(cè)中不可供使用的雙向幀(b幀);和/或參考另外的一個(gè)幀或多個(gè)幀來(lái)預(yù)測(cè)的、并且可供在分級(jí)編碼結(jié)構(gòu)中的預(yù)測(cè)中使用的參考雙向幀(b參考幀)。
對(duì)于幀1編碼,在操作205計(jì)算目標(biāo)大小。由于第一幀始終為i幀,因此,第一幀的目標(biāo)大小通常為目標(biāo)平均比特率的若干倍。隨后,在操作207由已知的任何一種或更多種技術(shù)確定緩沖器充滿度。在操作209,通過(guò)已知的任何一種或更多種技術(shù)確定qp。在操作211,由已知的任何一種或更多種技術(shù)確定編碼模式和執(zhí)行運(yùn)動(dòng)估計(jì),并且在操作213,由已知的任何一種或更多種技術(shù)對(duì)幀1進(jìn)行變換并且進(jìn)行熵編碼。
對(duì)于幀2編碼,在操作215,基于在操作207確定的緩沖器充滿度更新和在操作209確定的qp,計(jì)算目標(biāo)大小。在針對(duì)長(zhǎng)度為l幀、平均目標(biāo)比特率為t/幀的圖片組(gop)中的僅ip編碼結(jié)構(gòu)的一個(gè)示例中,用于第一個(gè)p幀的目標(biāo)碼率或大小將為:
在操作217,將在第二幀的編碼前的緩沖器充滿度計(jì)算為:
在操作219,基于目標(biāo)碼率、選擇的碼率失真模型,確定對(duì)應(yīng)的qp:
在一些實(shí)施例中,給出以下模型函數(shù):
其中c1和c2是常數(shù)。在操作221,由已知的任何一種或更多種技術(shù)確定編碼模式和執(zhí)行運(yùn)動(dòng)估計(jì),并且在操作223,由已知的任何一種或更多種技術(shù)對(duì)幀2進(jìn)行變換并且進(jìn)行熵編碼。
圖2b是示出根據(jù)一些實(shí)施例的、適合用于第三個(gè)和隨后的視頻幀(本文中表示為幀n)的并行視頻編碼碼率控制方法202的流程圖。在一些實(shí)施例中,碼率控制模塊(例如,圖1b中的碼率控制模塊120)為接收到給定并行編碼管線中的每個(gè)幀執(zhí)行方法202。如圖2b中所示,在操作230,執(zhí)行視頻分析,其可用于為接收的幀n估計(jì)空間和時(shí)間預(yù)測(cè)失真。對(duì)于一些實(shí)施例,可在操作230確定空間和時(shí)間復(fù)雜性,而對(duì)于其它實(shí)施例,只可確定空間或時(shí)間復(fù)雜性之一??墒褂萌魏芜m合的技術(shù)確定空間和/或時(shí)間復(fù)雜性。在一些實(shí)施例中,基于幀n的幀間預(yù)測(cè)失真,估計(jì)時(shí)間復(fù)雜性。幀內(nèi)預(yù)測(cè)失真、幀間預(yù)測(cè)失真或兩者的度量可基于諸如絕對(duì)差之和(sad)、失真求和或諸如此類(lèi)的統(tǒng)計(jì)度量。
在一些實(shí)施例中,在操作233,基于在操作230執(zhí)行的分析和編碼結(jié)構(gòu),將當(dāng)前幀n確定為場(chǎng)景變化幀、黃金幀(vp8/vp9)、長(zhǎng)期參考幀(avc、hev)、i幀或常規(guī)幀間幀(例如,p或b幀)。在操作232,估計(jì)用于前面緊鄰幀n-1的比特?cái)?shù)量。在一些實(shí)施例中,操作232與幀類(lèi)型判定操作233同時(shí)執(zhí)行。在一些實(shí)施例中,幀大小估計(jì)操作232取決于在執(zhí)行操作232時(shí)作為中間幀編碼參數(shù)值可用于碼率控制模塊的n-1幀信息??苫诳捎玫?i>n-1幀信息來(lái)執(zhí)行用于估計(jì)n-1幀大小的多種方法的一種或另一種方法。在操作232,指示從先前的視頻幀可獲得的中間參數(shù)的同步信息可用于在各種估計(jì)算法之間選擇。因此,由于在幀n與幀n-1的并行編碼之間的同步變化,在操作232的幀n-1大小估計(jì)可在方法202的第一次迭代中以第一方式進(jìn)行,而在操作232的幀n-1大小估計(jì)可在方法202的第二次迭代中以第二方式進(jìn)行。
圖3a、3b和3c是示出根據(jù)一些實(shí)施例的、用于估計(jì)前面緊鄰幀n-1的大小的方法301、302、303的框圖??稍诓僮?32執(zhí)行方法301、302、303中的任一種以估計(jì)幀n-1大小。
先參照?qǐng)D3a,在方法301中,基于包括與幀n-1關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真(pd)的中間參數(shù)357,估計(jì)幀n-1大小。中間參數(shù)357是視頻分析操作230(圖2b)的結(jié)果。如圖3a中進(jìn)一步所示,還基于幀n-1qp(中間參數(shù)359),估計(jì)n-1大小。方法301因此需要在兩個(gè)并行編碼管線之間的同步/延遲,以使得在n幀編碼管線到達(dá)幀n-1估計(jì)操作232的時(shí)侯,在n-1編碼管線中已執(zhí)行視頻分析和qp確定。如圖3a中進(jìn)一步所示,還基于包括用于幀n-2的實(shí)際比特?cái)?shù)量(參數(shù)355)的幀n-2信息,估計(jì)n-1大小。在一些實(shí)施例中,也可基于來(lái)自n-2編碼的中間參數(shù),估計(jì)n-1大小,來(lái)自n-2編碼的中間參數(shù)例如包括與幀n-2關(guān)聯(lián)的估計(jì)的pd(中間參數(shù)351)和幀n-2qp(中間參數(shù)353)。隨后,可比較用于n-2幀的實(shí)際比特率和用于n-2幀和n-1幀的估計(jì)的pd值和qp值,以獲得幀n-1大小的良好估計(jì)。在一些實(shí)施例中,將幀n-1大小估計(jì)為:
接著參照?qǐng)D3b,在方法302中,基于是與幀n-1關(guān)聯(lián)的真實(shí)或?qū)嶋H預(yù)測(cè)失真(pd)的中間參數(shù)367,估計(jì)幀n-1大小。在執(zhí)行用于當(dāng)前幀n的碼率控制計(jì)算前已經(jīng)完成幀n-1編碼模式(例如,跳過(guò)(skip)、幀內(nèi)(intra)、幀間(inter)等)和運(yùn)動(dòng)估計(jì)的情況下,可利用實(shí)際pd而不是估計(jì)的pd。因此,如圖3b中進(jìn)一步所示,還可根據(jù)或基于幀n-1qp連同幀n-2的實(shí)際比特?cái)?shù)量、以及包括n-2幀qp的幀n-2中間參數(shù)和用于幀n-2的實(shí)際pd(中間參數(shù)361),確定幀n-1大小。
在一些實(shí)施例中,如圖3b中通過(guò)虛線進(jìn)一步所示,也可至少部分基于幀n-1的編碼模式(中間參數(shù)371)和幀n-1運(yùn)動(dòng)向量信息(中間參數(shù)373),確定幀n-1大小??杀容^幀n-1的編碼模式和幀n-2的編碼模式(例如,中間參數(shù)372、374),并且也可在還基于在幀n-2中使用的實(shí)際比特?cái)?shù)量估計(jì)幀n-1大小中利用在幀n-1與n-2之間的運(yùn)動(dòng)向量分布變化。作為一個(gè)示例,可基于按照跳過(guò)來(lái)編碼的塊的數(shù)量的比率和/或按照幀內(nèi)來(lái)編碼的塊的數(shù)量的比率和/或帶有相同運(yùn)動(dòng)向量的塊的數(shù)量的比率,估計(jì)幀n-1大小。因此,如果當(dāng)前幀簡(jiǎn)單,帶有例如80%的塊按照跳過(guò)來(lái)編碼,則可比較為剩余20%(其中可能10%為幀內(nèi)編碼,并且10%為幀間編碼)確定的真實(shí)預(yù)測(cè)誤差和用于n-2幀的類(lèi)似參數(shù)值,以估計(jì)n-1幀大小將如何與n-2大小比較。
接著參照?qǐng)D3c,在方法303中基于為幀n-1確定的目標(biāo)比特?cái)?shù)量和為n-2幀估計(jì)的先前大小,估計(jì)幀n-1大小。在一些實(shí)施例中,基于為幀n-1確定的目標(biāo)比特?cái)?shù)量(中間參數(shù)373)、幀n-2估計(jì)的比特(中間參數(shù)371)和用于幀n-2的實(shí)際比特?cái)?shù)量,估計(jì)n-1幀大小。在一些實(shí)施例中,將n-1幀大小計(jì)算為:
在一些實(shí)施例中,至少部分基于先前的幀類(lèi)型,估計(jì)與先前的幀關(guān)聯(lián)的比特?cái)?shù)量。方法301、302、303中的任一種的執(zhí)行還可基于n-1幀具有適當(dāng)?shù)念?lèi)型。隨后可以備選方式估計(jì)用于非限定幀類(lèi)型的n-1幀的大小。圖3d是示出根據(jù)一些實(shí)施例的、用于根據(jù)n-1幀類(lèi)型估計(jì)前面緊鄰幀n-1的大小的方法304的流程圖。在方法304中,確定n-1幀類(lèi)型,并且如果n-1幀是關(guān)鍵幀,如幀內(nèi)編碼幀或場(chǎng)景變化幀,則在操作375估計(jì)幀n-1比特。在一些實(shí)施例中,在操作375,根據(jù)用于上一i幀的實(shí)際比特率、在n-1幀中的失真與上一i幀的失真的比率和在上一i幀中的qp與n-1幀的qp的比率,估計(jì)幀n-1比特率:
響應(yīng)n-1幀轉(zhuǎn)而是黃金幀,方法304繼續(xù)到操作377,其中根據(jù)在n-1幀中的失真與上一幀間黃金幀中的失真的比率和上一幀間黃金幀中的qp與n-1幀中的qp的比率,估計(jì)幀n-1比特率:
對(duì)于等式(7)和等式(8),在一些實(shí)施例中,如上所述基于視頻分析,估計(jì)用于至少幀n-1的失真值。在其它實(shí)施例中,也基于為上一i幀執(zhí)行的視頻分析操作,估計(jì)用于該幀的失真值。在其它實(shí)施例中,在等式(7)中為至少上一i幀利用實(shí)際pd,并且在一些此類(lèi)實(shí)施例中,用于n-1幀的實(shí)際pd在因并行幀編碼級(jí)之間的同步所允許而可用時(shí)也被使用。
如果幀n-1轉(zhuǎn)而是第一i幀或第一黃金幀,則方法304繼續(xù)到操作378,其中在一些實(shí)施例中,將n-1比特率估計(jì)為幀比特率目標(biāo):
如果未滿足用于幀n-1類(lèi)型的任一上述條件,則n-1幀比特估計(jì)還基于n-2幀類(lèi)型。在一些實(shí)施例中,如果n-2幀是諸如i幀、場(chǎng)景變化幀、黃金幀的關(guān)鍵幀,則方法304繼續(xù)到操作378,其中采用等式(9)估計(jì)用于幀n-1的比特率。
如果未滿足關(guān)于幀n-1或n-2的任一上述幀類(lèi)型條件,則在操作380確定n-1幀大小,其中可依賴(lài)從n-1幀編碼可獲得的中間參數(shù),執(zhí)行方法301、302或303中的任一種。
在一些實(shí)施例中,在n-1幀編碼管線與n幀編碼管線之間的同步可使得在幀n碼率控制前已經(jīng)完成幀n-1的變換和量化。對(duì)于此類(lèi)實(shí)施例,可采用圖3e中示出的方法,估計(jì)用于幀n-1的比特?cái)?shù)量。n-1幀大小估計(jì)操作232至少部分基于包括非零量化系數(shù)和/或零系數(shù)的一個(gè)或更多個(gè)統(tǒng)計(jì)的中間參數(shù)381。正好在用于幀n-1的實(shí)際比特?cái)?shù)量在熵編碼后為已知之前,量化系數(shù)作為中間參數(shù)可用。
如上所述,估計(jì)在n-1幀編碼中使用的比特?cái)?shù)量的各種方法依賴(lài)有關(guān)n-1幀的不同信息。圖3f是示出根據(jù)一些實(shí)施例的、用于在用于估計(jì)前面緊鄰幀的大小的多個(gè)技術(shù)中動(dòng)態(tài)選擇的方法306的流程圖。根據(jù)n-1:n幀編碼同步,方法306響應(yīng)幀n-1量化系數(shù)為可用,繼續(xù)通過(guò)方法305(圖3e)來(lái)估計(jì)幀n-1的大小。在備選中,方法305響應(yīng)實(shí)際pd為可用,繼續(xù)通過(guò)方法302來(lái)估計(jì)幀n-1大小。在備選中,方法305基于在方法301中估計(jì)的pd,繼續(xù)估計(jì)幀n-1大小。最后,如果在幀n-1與幀n編碼之間存在極少延遲,并且極少n-1幀信息在幀n碼率控制級(jí)可用,則方法305繼續(xù)通過(guò)方法303來(lái)估計(jì)幀n-1大小。
在圖3a-3f的上下文中如上所述估計(jì)了n-1幀大小之后,并行視頻編碼碼率控制方法202(圖2b)繼續(xù)到操作235,其中基于n-1的估計(jì)的大小,更新緩沖器充滿度。在一些實(shí)施例中,在操作235,基于在用于n-2幀的實(shí)際與估計(jì)的比特率之間的差和在用于n-1幀的估計(jì)的比特率與平均比特率之間的差的函數(shù),更新緩沖器充滿度。在一個(gè)此類(lèi)實(shí)施例中,緩沖器充滿度更新為:
其中,c4是常數(shù)。在一些實(shí)施例中,在緩沖器充滿度[n-1]小于緩沖器大小的一半時(shí),c4在1到~1.5的范圍中,以及在緩沖器充滿度[n-1]大于緩沖器大小的一半時(shí),c4對(duì)于可變比特率(vbr)編碼為1,并且對(duì)于恒定比特率(cbr)在0.9到~1的范圍中。
在一些實(shí)施例中,用于當(dāng)前視頻幀n的目標(biāo)比特率確定依賴(lài)當(dāng)前幀類(lèi)型。仍參照?qǐng)D2b,并行視頻編碼碼率控制方法202繼續(xù)基于幀n的類(lèi)型和/或幀n-2的類(lèi)型,為當(dāng)前幀n確定目標(biāo)比特?cái)?shù)量。在幀n不是常規(guī)幀間編碼幀的情況下,在操作237確定用于當(dāng)前幀n的目標(biāo)比特?cái)?shù)量。如果當(dāng)前幀n是幀內(nèi)幀或場(chǎng)景變化幀,則被優(yōu)化用于此類(lèi)幀的任何目標(biāo)大小確定方法可在操作237用于基于由以前gop使用的比特?cái)?shù)量和更新的緩沖器充滿度,確定幀n目標(biāo)比特率。技術(shù)領(lǐng)域中存在用于確定幀內(nèi)幀或場(chǎng)景變化幀的目標(biāo)大小的許多專(zhuān)用技術(shù)/算法,并且本文中的實(shí)施例在此方面不受限制。類(lèi)似地,如果當(dāng)前幀n轉(zhuǎn)而是黃金幀或長(zhǎng)期參考幀,則在操作237能夠利用適合用于此類(lèi)幀的任何關(guān)鍵幀目標(biāo)大小確定方法。此處同樣地,技術(shù)領(lǐng)域中存在用于確定黃金幀或長(zhǎng)期參考幀的目標(biāo)大小的許多專(zhuān)用技術(shù)/算法,并且本文中的實(shí)施例在此方面不受限制。
在一些實(shí)施例中,用于當(dāng)前視頻幀n的目標(biāo)比特率確定依賴(lài)當(dāng)前幀類(lèi)型和先前的幀類(lèi)型。在幀n是常規(guī)幀間編碼幀(例如,p幀、b參考幀、非參考b幀或廣義雙向預(yù)測(cè)p幀)的情況下,根據(jù)幀n-2是否為關(guān)鍵幀而在操作239或242確定用于當(dāng)前幀n的目標(biāo)比特率。如果n-2幀不是關(guān)鍵幀,則基于估計(jì)的幀n-1比特率和幀n緩沖器充滿度,確定用于幀n的目標(biāo)比特率。在一些示范實(shí)施例中,在編碼結(jié)構(gòu)為僅ip,并且n-1幀是關(guān)鍵幀的情況下,可在操作239將幀n目標(biāo)碼率計(jì)算為:
對(duì)于n-1幀不是關(guān)鍵幀的ip編碼,在一些實(shí)施例中在操作239將p幀n目標(biāo)比特率轉(zhuǎn)而計(jì)算為:
其中c5是常數(shù),例如在0.1到~0.5的范圍中。
如果n-2幀轉(zhuǎn)而是關(guān)鍵幀,則在操作242基于用于n-2幀的實(shí)際比特率、用于幀n-1的估計(jì)的比特率和更新的緩沖器充滿度,確定目標(biāo)比特率。例如,在一些實(shí)施例中,在僅ip的編碼結(jié)構(gòu)中,在操作242可計(jì)算p幀n目標(biāo)碼率:
值得注意的是,通過(guò)使用類(lèi)似方案,上述示范實(shí)施例可易于擴(kuò)展到包括b參考幀和/或非參考b幀的編碼結(jié)構(gòu)。在方法202的每次迭代完成后,通過(guò)任何已知技術(shù),基于確定的目標(biāo)比特率將當(dāng)前幀n進(jìn)行量化、變換、熵編碼等。
圖4是進(jìn)一步示出根據(jù)一些實(shí)施例的、配置用于并行視頻編碼碼率控制的碼率控制模塊120的框圖。碼率控制模塊120可例如用于執(zhí)行并行視頻編碼碼率控制方法202。如圖4中所示,碼率控制模塊120包括耦合到視頻分析模塊110的輸出端口以接收有關(guān)幀n的視頻分析信息的輸入端口。碼率控制模塊120還包括用于確定當(dāng)前幀n的幀類(lèi)型的幀類(lèi)型判定模塊425。
碼率控制模塊120還包括具有經(jīng)耦合以接收幀n的輸入的幀n-1大小估計(jì)模塊427。在一些實(shí)施例中,幀n-1大小估計(jì)模塊427還包括經(jīng)耦合以接收用于n-2幀的估計(jì)的比特?cái)?shù)量的輸入。在一些實(shí)施例中,幀n-1大小估計(jì)模塊427還經(jīng)耦合以接收諸如實(shí)際pd的n-1幀信息或在碼率控制模塊120外部生成的其它中間信息的可用性的指示。例如,在圖4中示出的示范實(shí)施例中,大小估計(jì)模塊427經(jīng)耦合以接收來(lái)自應(yīng)用層控制器490的n-1幀中間參數(shù)信息491。在一些實(shí)施例中,幀n-1大小估計(jì)模塊427包括用于執(zhí)行在圖3a-3f的上下文中在本文中別處描述的任何n-1幀大小估計(jì)方法的邏輯。
幀n-1大小估計(jì)模塊427的輸出耦合到編碼緩沖器充滿度更新模塊429的輸入。在一些實(shí)施例中,編碼緩沖器充滿度更新模塊429包括用于至少部分基于從大小估計(jì)模塊427接收的n-1大小估計(jì),更新緩沖器充滿度的邏輯。目標(biāo)比特率判定模塊431和目標(biāo)比特率判定模塊432選擇性地用于例如采用上面在圖2b的上下文中描述的技術(shù),根據(jù)幀n類(lèi)型和/或n-2幀,確定幀n的目標(biāo)大小。目標(biāo)比特率判定模塊431包括用于例如采用上面在圖2b的上下文中描述的技術(shù),確定i幀、場(chǎng)景變化幀、黃金幀或長(zhǎng)期參考幀的目標(biāo)大小的邏輯。目標(biāo)比特率判定模塊432包括用于例如采用上面在圖2b的上下文中描述的技術(shù),基于用于n-1的估計(jì)的比特?cái)?shù)量和/或n-2幀比特?cái)?shù)量,確定幀n目標(biāo)比特?cái)?shù)量的邏輯。碼率控制模塊120還包括輸出端口,該輸出端口經(jīng)耦合以例如基于來(lái)自目標(biāo)比特率判定模塊431或目標(biāo)比特率判定模塊432的輸出,提供用于幀n的目標(biāo)比特?cái)?shù)量。
圖5是根據(jù)一些實(shí)施例布置的、配置成并行編碼視頻的示范系統(tǒng)500的框圖。如圖5中所示,系統(tǒng)500可包括圖形處理單元(gpu)501、一個(gè)或更多個(gè)中央處理單元502和存儲(chǔ)器庫(kù)503。也如圖所示,gpu501包括多個(gè)并行碼率控制模塊120和多個(gè)并行變換、量化和熵編碼模塊140。在示范系統(tǒng)500中,電子存儲(chǔ)器503可存儲(chǔ)視頻內(nèi)容,如視頻幀和/或視頻比特流。
圖形處理單元501可包括可提供如本文中論述的操作的任何數(shù)量和類(lèi)型的圖形處理單元。此類(lèi)操作可經(jīng)軟件或硬件或其組合實(shí)現(xiàn)。在一實(shí)施例中,可通過(guò)邏輯電路來(lái)實(shí)現(xiàn)圖形處理單元501的示出模塊。例如,圖形處理單元501可包括專(zhuān)用于操縱視頻數(shù)據(jù)以生成壓縮的圖像數(shù)據(jù)的電路。一個(gè)或更多個(gè)中央處理單元502可包括任何數(shù)量和類(lèi)型的處理單元或模塊,其可提供用于系統(tǒng)500的控制和其它高級(jí)功能。存儲(chǔ)器503可以是任何類(lèi)型的存儲(chǔ)器,如易失性存儲(chǔ)器(例如,靜態(tài)隨機(jī)存取存儲(chǔ)器(sdram)、動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)等)或非易失性存儲(chǔ)器(例如,閃速存儲(chǔ)器等)等等。在一些實(shí)施例中,存儲(chǔ)器503配置成存儲(chǔ)視頻數(shù)據(jù),如幀級(jí)中間編碼參數(shù)、量化的變換系數(shù)、估計(jì)的幀大小或本文中論述的任何其它視頻數(shù)據(jù)。在非限制性示例中,存儲(chǔ)器503由gpu501的高速緩沖存儲(chǔ)器實(shí)現(xiàn)。在一些實(shí)施例中,并行碼率控制模塊120和并行變換、量化和熵編碼模塊140經(jīng)圖形處理單元501的執(zhí)行單元(eu)實(shí)現(xiàn)。每個(gè)eu例如可包括可編程邏輯或電路,其可提供廣泛的可編程邏輯功能。在一些實(shí)施例中,通過(guò)諸如固定功能電路或諸如此類(lèi)的專(zhuān)用硬件來(lái)實(shí)現(xiàn)并行碼率控制模塊120和并行變換、量化和熵編碼模塊140。固定功能電路可提供可映射到用于固定用途或功能的專(zhuān)用邏輯的固定功能入口點(diǎn)集。
可用軟件、固件和/或硬件和/或其任何組合來(lái)實(shí)現(xiàn)本文中描述的系統(tǒng)的各種組件。例如,系統(tǒng)400或系統(tǒng)500的各種組件可至少部分由諸如在例如智能電話或其它移動(dòng)計(jì)算裝置的計(jì)算系統(tǒng)中可找到的計(jì)算片上系統(tǒng)(soc)的硬件提供。本領(lǐng)域技術(shù)人員可認(rèn)識(shí)到,本文中描述的系統(tǒng)可包括尚未在對(duì)應(yīng)圖形中示出的另外組件。例如,本文中論述的系統(tǒng)可包括為清晰起見(jiàn)而尚未示出的、諸如比特流復(fù)用器或去復(fù)用器模塊和諸如此類(lèi)的另外組件。
雖然本文中論述的示范方法的實(shí)現(xiàn)可包括以示出順序執(zhí)行示出的所有操作,但本公開(kāi)在此方面不受限制,并且在各種示例中,本文中示例過(guò)程的實(shí)現(xiàn)可包括示出的操作的僅子集,以與所示順序不同的順序執(zhí)行的操作或另外的操作。
另外,可響應(yīng)由一個(gè)或更多個(gè)計(jì)算機(jī)程序產(chǎn)品提供的指令,執(zhí)行本文中論述的任何一個(gè)或更多個(gè)操作。此類(lèi)程序產(chǎn)品可包括提供指令的信號(hào)承載媒體,指令在由例如處理器執(zhí)行時(shí),可提供本文中描述的功能性??梢砸粋€(gè)或更多個(gè)機(jī)器可讀媒體的任何形式提供計(jì)算機(jī)程序產(chǎn)品。因此,例如,包括一個(gè)或更多個(gè)圖形處理單元或處理器核的處理器可響應(yīng)由一個(gè)或更多個(gè)機(jī)器可讀媒體輸送到處理器的程序代碼和/或指令或指令集,執(zhí)行本文中示例過(guò)程的一個(gè)或更多個(gè)框。通常,機(jī)器可讀媒體可輸送程序代碼和/或指令或指令集形式的軟件,其可促使本文中描述的任何裝置和/或系統(tǒng)實(shí)現(xiàn)并行編碼器101、碼率控制模塊120、系統(tǒng)500或如本文中論述的任何其它模塊或組件的至少部分。
在本文中描述的任何實(shí)現(xiàn)中使用時(shí),術(shù)語(yǔ)“模塊”指的是配置成提供本文中描述的功能性的軟件邏輯、固件邏輯、硬件邏輯和/或電路的任何組合。軟件可實(shí)施為軟件包、代碼和/或指令集或指令,并且在本文中描述的任何實(shí)現(xiàn)中使用時(shí),“硬件”可例如單獨(dú)或以任何組合方式包括硬連線電路、可編程電路、狀態(tài)機(jī)電路、固定功能電路、執(zhí)行單元電路和/或存儲(chǔ)由可編程電路執(zhí)行的指令的固件。這些模塊可全體或單獨(dú)實(shí)施為形成更大系統(tǒng)的一部分的電路,例如,集成電路(ic)、片上系統(tǒng)(soc)等等。
圖6是圖形處理器600的框圖,圖形處理器可以是離散圖形處理單元,或者可以是集成有多個(gè)處理核的圖形處理器。在一些實(shí)施例中,圖形處理器經(jīng)到圖形處理器上的寄存器的存儲(chǔ)器映射的i/o接口并且通過(guò)放入處理器存儲(chǔ)器中的命令進(jìn)行通信。在一些實(shí)施例中,圖形處理器600包括用于對(duì)存儲(chǔ)器進(jìn)行存取的存儲(chǔ)器接口614。存儲(chǔ)器接口614能夠是到本地存儲(chǔ)器、一個(gè)或更多個(gè)內(nèi)部高速緩存、一個(gè)或更多個(gè)共享的外部高速緩存和/或到系統(tǒng)存儲(chǔ)器的接口。
在一些實(shí)施例中,圖形處理器600也包括用于驅(qū)動(dòng)顯示輸出數(shù)據(jù)到顯示裝置620的顯示控制器602。顯示控制器602包括用于一個(gè)或更多個(gè)重疊平面以顯示和構(gòu)成多層視頻或用戶(hù)界面元素的硬件。在一些實(shí)施例中,圖形處理器600包括視頻編解碼器引擎606,該視頻編解碼器引擎606用于將媒體向一個(gè)或更多個(gè)媒體編碼格式、從一個(gè)或更多個(gè)媒體編碼格式或在這些格式之間進(jìn)行編碼、解碼或轉(zhuǎn)碼,這些格式包括但不限于諸如mpeg-2的運(yùn)動(dòng)圖像專(zhuān)家組(mpeg)格式、諸如h.264/mpeg-4avc的高級(jí)視頻編碼(avc)格式及運(yùn)動(dòng)圖像和電視工程師學(xué)會(huì)(smpte)421m/vc1和諸如jpeg和運(yùn)動(dòng)jpeg(mjpeg)格式的聯(lián)合圖像專(zhuān)家組(jpeg)格式。
在一些實(shí)施例中,圖形處理器600包括塊圖像傳送(blit)引擎604,引擎604用于執(zhí)行二維(2d)光柵化操作,例如包括比特邊界塊傳送。然而,在一個(gè)實(shí)施例中,使用圖形處理引擎(gpe)610的一個(gè)或更多個(gè)組件執(zhí)行2d圖形操作。在一些實(shí)施例中,圖形處理引擎610是用于執(zhí)行包括三維(3d)圖形操作和媒體操作的圖形操作的計(jì)算引擎。
在一些實(shí)施例中,gpe610包括3d管線612,3d管線612用于執(zhí)行3d操作,如使用對(duì)3d基本形狀(例如,矩形、三角形等)起作用的處理功能渲染三維圖像和場(chǎng)景。3d管線612包括在元素內(nèi)執(zhí)行各種任務(wù)和/或派生執(zhí)行線程給3d/媒體子系統(tǒng)615的可編程和固定功能元素。雖然3d管線612能夠用于執(zhí)行媒體操作,但gpe610的一實(shí)施例也包括專(zhuān)門(mén)用于執(zhí)行諸如視頻后處理和圖像增強(qiáng)的媒體操作的媒體管線616。
在一些實(shí)施例中,媒體管線616包括固定功能或可編程邏輯單元,固定功能或可編程邏輯單元用于執(zhí)行一個(gè)或更多個(gè)專(zhuān)用媒體操作,如替代或代表視頻編解碼器引擎606的視頻解碼加速、視頻去交織和視頻編碼加速。在一些實(shí)施例中,媒體管線616另外包括用于派生線程以在3d/媒體子系統(tǒng)615上執(zhí)行的線程派生單元。派生的線程為在3d/媒體子系統(tǒng)615中包括的一個(gè)或更多個(gè)圖形執(zhí)行單元上的媒體操作執(zhí)行計(jì)算。
在一些實(shí)施例中,3d/媒體子系統(tǒng)615包括用于執(zhí)行由3d管線612和媒體管線616派生的線程的邏輯。在一個(gè)實(shí)施例中,這些管線將線程執(zhí)行請(qǐng)求發(fā)送到3d/媒體子系統(tǒng)615,子系統(tǒng)615包括用于仲裁和調(diào)度各種請(qǐng)求到可用線程執(zhí)行資源的線程調(diào)度邏輯。執(zhí)行資源包括用于處理3d和媒體線程的圖形執(zhí)行單元的陣列。在一些實(shí)施例中,3d/媒體子系統(tǒng)615包括用于線程指令和數(shù)據(jù)的一個(gè)或更多個(gè)內(nèi)部高速緩存。在一些實(shí)施例中,該子系統(tǒng)也包括用于在線程之間共享數(shù)據(jù)和存儲(chǔ)輸出數(shù)據(jù)的共享存儲(chǔ)器,共享存儲(chǔ)器包括寄存器和可尋址存儲(chǔ)器。
圖7是根據(jù)一些實(shí)施例的圖形處理器的圖形處理引擎610的框圖。在一個(gè)實(shí)施例中,gpe610是圖6中示出的gpe610的一個(gè)版本。圖7中與本文中任何其它圖形的元素具有相同附圖標(biāo)號(hào)(或名稱(chēng))的元素能夠以類(lèi)似于本文中其它地方描述的方式的任何方式操作或運(yùn)轉(zhuǎn),但不限于這樣。
在一些實(shí)施例中,gpe610與命令流傳送器(commandstreamer)703耦合,命令流傳送器703提供命令流到gpe3d管線712和媒體管線716。在一些實(shí)施例中,命令流傳送器703耦合到存儲(chǔ)器,存儲(chǔ)器能夠是系統(tǒng)存儲(chǔ)器或是內(nèi)部高速緩沖存儲(chǔ)器和共享高速緩沖存儲(chǔ)器中的一個(gè)或更多個(gè)。在一些實(shí)施例中,命令流傳送器703接收來(lái)自存儲(chǔ)器的命令,并且將命令發(fā)送到3d管線712和/或媒體管線716。3d管線和媒體管線通過(guò)經(jīng)相應(yīng)管線內(nèi)的邏輯執(zhí)行操作或者通過(guò)將一個(gè)或更多個(gè)執(zhí)行線程調(diào)度到執(zhí)行單元陣列714來(lái)處理命令。在一些實(shí)施例中,執(zhí)行單元陣列714是可縮放的,使得陣列包括基于gpe610的目標(biāo)功率和性能級(jí)別的可變數(shù)量的執(zhí)行單元。
在一些實(shí)施例中,采樣引擎730與存儲(chǔ)器(例如,高速緩沖存儲(chǔ)器或系統(tǒng)存儲(chǔ)器)和執(zhí)行單元陣列714耦合。在一些實(shí)施例中,采樣引擎730提供用于執(zhí)行單元陣列714的、允許執(zhí)行陣列714從存儲(chǔ)器讀取圖形和媒體數(shù)據(jù)的存儲(chǔ)器存取機(jī)構(gòu)。在一些實(shí)施例中,采樣引擎730包括用于為媒體執(zhí)行專(zhuān)用圖像采樣操作的邏輯。
在一些實(shí)施例中,采樣引擎730中的專(zhuān)用媒體采樣邏輯包括去噪/去交織模塊732、運(yùn)動(dòng)估計(jì)模塊734以及圖像縮放和濾波模塊736。在一些實(shí)施例中,去噪/去交織模塊732包括用于對(duì)解碼的視頻數(shù)據(jù)執(zhí)行去噪或去交織算法中的一個(gè)或更多個(gè)的邏輯。去交織邏輯將交織的視頻內(nèi)容的交替場(chǎng)組合成視頻的單個(gè)幀。去噪邏輯降低或去除來(lái)自視頻和圖像數(shù)據(jù)的數(shù)據(jù)噪聲。在一些實(shí)施例中,去噪邏輯和去交織邏輯是運(yùn)動(dòng)自適應(yīng)的,并且基于在視頻數(shù)據(jù)中檢測(cè)到的運(yùn)動(dòng)量使用空間或時(shí)間濾波。在一些實(shí)施例中,去噪/去交織模塊732包括專(zhuān)用運(yùn)動(dòng)檢測(cè)邏輯(例如,在運(yùn)動(dòng)估計(jì)引擎734內(nèi))。
在一些實(shí)施例中,運(yùn)動(dòng)估計(jì)引擎734通過(guò)對(duì)視頻數(shù)據(jù)執(zhí)行諸如運(yùn)動(dòng)向量估計(jì)和預(yù)測(cè)的視頻加速功能,為視頻操作提供硬件加速。運(yùn)動(dòng)估計(jì)引擎確定描述在連續(xù)視頻幀之間圖像數(shù)據(jù)的變換的運(yùn)動(dòng)向量。在一些實(shí)施例中,圖形處理器媒體編解碼器使用視頻運(yùn)動(dòng)估計(jì)引擎734在宏塊級(jí)別對(duì)視頻執(zhí)行操作,這些操作要不然可能計(jì)算太密集而無(wú)法使用通用處理器執(zhí)行。在一些實(shí)施例中,運(yùn)動(dòng)估計(jì)引擎734通??捎糜趫D形處理器組件以輔助對(duì)視頻數(shù)據(jù)內(nèi)運(yùn)動(dòng)的方向或大小靈敏或與其相適應(yīng)的視頻解碼和處理功能。
在一些實(shí)施例中,圖像縮放和濾波模塊736執(zhí)行圖像處理操作以增強(qiáng)生成的圖像和視頻的視覺(jué)質(zhì)量。在一些實(shí)施例中,縮放和濾波模塊736在將圖像和視頻數(shù)據(jù)提供到執(zhí)行單元陣列714前在采樣操作期間處理數(shù)據(jù)。
在一些實(shí)施例中,gpe610包括數(shù)據(jù)端口744,其提供另外的機(jī)構(gòu)以供圖形子系統(tǒng)對(duì)存儲(chǔ)器進(jìn)行存取。在一些實(shí)施例中,數(shù)據(jù)端口744促進(jìn)用于包括渲染目標(biāo)寫(xiě)入、恒定緩沖器讀取、暫時(shí)存儲(chǔ)器空間讀取/寫(xiě)入及媒體表面存取的操作的存儲(chǔ)器存取。在一些實(shí)施例中,數(shù)據(jù)端口744包括高速緩沖存儲(chǔ)器空間以高速緩存對(duì)存儲(chǔ)器的存取。高速緩沖存儲(chǔ)器能夠是單個(gè)數(shù)據(jù)高速緩存,或者分成用于經(jīng)數(shù)據(jù)端口對(duì)存儲(chǔ)器進(jìn)行存取的多個(gè)子系統(tǒng)的多個(gè)高速緩存(例如,渲染緩沖器高速緩存、恒定緩沖器高速緩存等)。在一些實(shí)施例中,在執(zhí)行單元陣列714中的執(zhí)行單元上執(zhí)行的線程通過(guò)經(jīng)將gpe610的每個(gè)子系統(tǒng)耦合的數(shù)據(jù)分布互連交換消息,與數(shù)據(jù)端口進(jìn)行通信。
圖8是根據(jù)一些實(shí)施例的數(shù)據(jù)處理系統(tǒng)800的框圖。數(shù)據(jù)處理系統(tǒng)800包括一個(gè)或更多個(gè)處理器802和一個(gè)或更多個(gè)圖形處理器501,并且可以是單個(gè)處理器臺(tái)式系統(tǒng)、多處理器工作站系統(tǒng)或具有大量處理器802或處理器核807的服務(wù)器系統(tǒng)。在一個(gè)實(shí)施例中,數(shù)據(jù)處理系統(tǒng)800是在移動(dòng)、手持式或嵌入式裝置中使用的片上系統(tǒng)(soc)集成電路。
數(shù)據(jù)處理系統(tǒng)800的一實(shí)施例能夠包括以下項(xiàng)或者包含在其內(nèi):基于服務(wù)器的游戲平臺(tái)、包括游戲和媒體控制臺(tái)的游戲控制臺(tái)、移動(dòng)游戲控制臺(tái)、手持式游戲控制臺(tái)或在線游戲控制臺(tái)。在一些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)800是移動(dòng)電話、智能電話、平板計(jì)算裝置或移動(dòng)因特網(wǎng)裝置。數(shù)據(jù)處理系統(tǒng)800也能夠包括諸如以下項(xiàng)的可穿戴裝置、與其耦合或者集成在其內(nèi):智能手表可穿戴裝置、智能眼鏡裝置、增強(qiáng)現(xiàn)實(shí)裝置或虛擬現(xiàn)實(shí)裝置。在一些實(shí)施例中,數(shù)據(jù)處理系統(tǒng)800是具有一個(gè)或更多個(gè)處理器802和由一個(gè)或更多個(gè)圖形處理器501生成的圖形界面的電視或機(jī)頂盒裝置。
在一些實(shí)施例中,一個(gè)或更多個(gè)處理器802各自包括用于處理指令的一個(gè)或更多個(gè)處理器核807,指令在被執(zhí)行時(shí),執(zhí)行用于系統(tǒng)和用戶(hù)軟件的操作。在一些實(shí)施例中,一個(gè)或更多個(gè)處理器核807的每個(gè)核配置成處理特定指令集809。在一些實(shí)施例中,指令集809可促進(jìn)復(fù)雜指令集計(jì)算(cisc)、精簡(jiǎn)指令集計(jì)算(risc)或經(jīng)極長(zhǎng)指令字(vliw)的計(jì)算。多個(gè)處理器核807可各自處理不同指令集809,不同指令集可包括促進(jìn)其它指令集的仿真的指令。處理器核807也可包括其它處理裝置,如數(shù)字信號(hào)處理器(dsp)。
在一些實(shí)施例中,處理器802包括高速緩沖存儲(chǔ)器804。視體系結(jié)構(gòu)而定,處理器802能夠具有單個(gè)內(nèi)部高速緩存或多級(jí)內(nèi)部高速緩存。在一些實(shí)施例中,在處理器802的各種組件之間共享高速緩沖存儲(chǔ)器。在一些實(shí)施例中,處理器802也使用外部高速緩存(例如,第3級(jí)(l3)高速緩存或末級(jí)高速緩存(llc))(未示出),通過(guò)使用已知高速緩存一致性技術(shù),可在處理器核807之間共享外部高速緩存。寄存器堆806另外包括在處理器802中,寄存器堆806可包括用于存儲(chǔ)不同類(lèi)型的數(shù)據(jù)的不同類(lèi)型的寄存器(例如,整數(shù)寄存器、浮點(diǎn)寄存器、狀態(tài)寄存器和指令指針寄存器)。一些寄存器可以是通用寄存器,而其它寄存器對(duì)處理器802的設(shè)計(jì)而言可以是特定的。
在一些實(shí)施例中,處理器802耦合到處理器總線810,以在處理器802與系統(tǒng)800中的其它組件之間傳送數(shù)據(jù)信號(hào)。系統(tǒng)800使用示范“集線器”系統(tǒng)體系結(jié)構(gòu),包括存儲(chǔ)器控制器集線器816和輸入輸出(i/o)控制器集線器830。存儲(chǔ)器控制器集線器816促進(jìn)在存儲(chǔ)器裝置與系統(tǒng)800的其它組件之間的通信,而i/o控制器集線器(ich)830提供經(jīng)本地i/o總線到i/o裝置的連接。
存儲(chǔ)器裝置820能夠是動(dòng)態(tài)隨機(jī)存取存儲(chǔ)器(dram)裝置、靜態(tài)隨機(jī)存取存儲(chǔ)器(sram)裝置、閃速存儲(chǔ)器裝置或具有適合性能以充當(dāng)過(guò)程存儲(chǔ)器的某一其它存儲(chǔ)器裝置。存儲(chǔ)器820能夠存儲(chǔ)數(shù)據(jù)822和指令821以在處理器802執(zhí)行過(guò)程時(shí)使用。存儲(chǔ)器控制器集線器816也與可選外部圖形處理器812耦合,處理器112可與處理器802中的一個(gè)或更多個(gè)圖形處理器808進(jìn)行通信以執(zhí)行圖形和媒體操作。
在一些實(shí)施例中,ich830允許外設(shè)經(jīng)高速i/o總線連接到存儲(chǔ)器820和處理器802。i/o外設(shè)包括音頻控制器846、固件接口828、無(wú)線收發(fā)器826(例如,wi-fi、藍(lán)牙)、數(shù)據(jù)存儲(chǔ)裝置824(例如,硬盤(pán)驅(qū)動(dòng)器、閃速存儲(chǔ)器等)及用于耦合遺留裝置(例如,個(gè)人系統(tǒng)2(ps/2))到系統(tǒng)的遺留i/o控制器。一個(gè)或更多個(gè)通用串行總線(usb)控制器842連接輸入裝置,如鍵盤(pán)和鼠標(biāo)組合844。網(wǎng)絡(luò)控制器834也可耦合到ich830。在一些實(shí)施例中,高性能網(wǎng)絡(luò)控制器(未示出)耦合到處理器總線810。
如圖9中所示,裝置900可包括外殼902、顯示器904、輸入/輸出(i/o)裝置906、攝像機(jī)905、910及天線908。裝置900也可包括導(dǎo)航特征912。顯示器904可包括用于顯示對(duì)移動(dòng)計(jì)算裝置適當(dāng)?shù)男畔⒌娜魏芜m合的顯示單元。i/o裝置906可包括用于將信息輸入移動(dòng)計(jì)算裝置中的任何適合的i/o裝置。i/o裝置906的示例可包括字母數(shù)字鍵盤(pán)、數(shù)字小鍵盤(pán)、觸摸板、輸入鍵、按鈕、開(kāi)關(guān)、搖壁開(kāi)關(guān)、麥克風(fēng)、揚(yáng)聲器、語(yǔ)音識(shí)別裝置和軟件等等。信息也可通過(guò)麥克風(fēng)(未示出)輸入到裝置900中,或者可由語(yǔ)音識(shí)別裝置數(shù)字化。實(shí)施例在此上下文中不受限制。在一些實(shí)施例中,裝置900還包括數(shù)據(jù)處理系統(tǒng)800。
可使用硬件元素、軟件元素或兩者的組合實(shí)現(xiàn)本文中描述的實(shí)施例。硬件元素或模塊的示例包括:處理器、微處理器、電路、電路元素(例如,晶體管、電阻器、電容器、電感器等等)、集成電路、專(zhuān)用集成電路(asic)、可編程邏輯裝置(pld)、數(shù)字信號(hào)處理器(dsp)、現(xiàn)場(chǎng)可編程門(mén)陣列(fpga)、邏輯門(mén)、寄存器、半導(dǎo)體裝置、芯片、微芯片、芯片集等等。軟件元素或模塊的示例包括:應(yīng)用、計(jì)算機(jī)程序、應(yīng)用程序、系統(tǒng)程序、機(jī)器程序、操作系統(tǒng)軟件、中間件、固件、例程、子例程、函數(shù)、方法、過(guò)程、軟件接口、應(yīng)用編程接口(api)、指令集、計(jì)算代碼、計(jì)算機(jī)代碼、代碼段、計(jì)算機(jī)代碼段、數(shù)據(jù)字、值、符號(hào)或其任何組合。確定是否使用硬件元素和/或軟件元素實(shí)現(xiàn)一實(shí)施例可根據(jù)為設(shè)計(jì)選擇考慮的任何數(shù)量的因素而改變,這些因素諸如但不限于:期望的計(jì)算速率、功率電平、耐熱性、處理周期預(yù)算、輸入數(shù)據(jù)速率、輸出數(shù)據(jù)速率、存儲(chǔ)器資源、數(shù)據(jù)總線速度及其它設(shè)計(jì)或性能約束。
可由在機(jī)器可讀存儲(chǔ)媒體上存儲(chǔ)的代表性指令實(shí)現(xiàn)至少一個(gè)實(shí)施例的一個(gè)或更多個(gè)方面。此類(lèi)指令可在其由機(jī)器執(zhí)行期間完全或至少部分駐留在主存儲(chǔ)器內(nèi)和/或處理器內(nèi),存儲(chǔ)指令的主存儲(chǔ)器和處理器部分隨后也構(gòu)成機(jī)器可讀存儲(chǔ)媒體。可編程邏輯電路可具有由實(shí)現(xiàn)計(jì)算機(jī)可讀媒體的處理器配置的寄存器、狀態(tài)機(jī)等。經(jīng)過(guò)編程的此類(lèi)邏輯電路隨后可被理解成已在物理上變換成落入在本文中描述的實(shí)施例的范圍內(nèi)的系統(tǒng)。表示處理器內(nèi)的各種邏輯的指令在由機(jī)器讀取時(shí)也可促使機(jī)器制成遵循本文中描述的體系結(jié)構(gòu)的邏輯和/或執(zhí)行本文中描述的技術(shù)。稱(chēng)為單元設(shè)計(jì)(celldesign)的此類(lèi)表示或ip核可存儲(chǔ)在有形機(jī)器可讀媒體上,并且提供到各種客戶(hù)或生產(chǎn)設(shè)施以加載到實(shí)際形成邏輯或處理器的制造機(jī)器中。
雖然已參照實(shí)施例描述了本文中陳述的某些特征,但并不打算從限制的意義來(lái)解釋本說(shuō)明書(shū)。因此,本公開(kāi)有關(guān)領(lǐng)域的技術(shù)人員明白本文中描述的實(shí)現(xiàn)的各種修改及其它實(shí)現(xiàn),這些被認(rèn)為是在本公開(kāi)的精神和范圍內(nèi)。
以下示例涉及特定示范實(shí)施例。
在一個(gè)或更多個(gè)第一實(shí)施例中,用于并行視頻編碼的設(shè)備包括一個(gè)或更多個(gè)編碼管線,用于處理先前的視頻幀或其部分,并且用于生成指示編碼過(guò)程的一個(gè)或更多個(gè)中間參數(shù)。設(shè)備還包括另外的編碼管線,用于處理當(dāng)前視頻幀或其部分。另外的編碼管線包括碼率控制器,碼率控制器還包括先前的視頻幀大小估計(jì)模塊,該模塊包括用于至少部分基于一個(gè)或更多個(gè)中間參數(shù),估計(jì)用于先前的視頻幀的比特率的邏輯。碼率控制器還包括耦合到大小估計(jì)模塊的緩沖器充滿度更新模塊,緩沖器充滿度更新模塊包括用于至少部分基于比特率估計(jì),更新緩沖器充滿度的邏輯。碼率控制器還包括目標(biāo)比特率判定模塊,目標(biāo)比特率判定模塊包括用于至少部分基于比特率估計(jì)和緩沖器充滿度更新,為當(dāng)前視頻幀確定目標(biāo)比特率的邏輯。
為促進(jìn)第一實(shí)施例,估計(jì)模塊用于以取決于指示從先前的視頻幀處理可獲得的中間參數(shù)的同步信息的方式,估計(jì)先前的幀的比特率。
為促進(jìn)第一實(shí)施例,一個(gè)或更多個(gè)編碼管線還包括用于處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀或其部分的第一編碼管線、用于處理在第二視頻幀前面緊鄰的第三視頻幀的第二編碼管線。大小估計(jì)模塊包括用于根據(jù)至少以下之一,估計(jì)第一視頻幀比特率的邏輯:第一中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的目標(biāo)比特率、與第二視頻幀關(guān)聯(lián)的實(shí)際比特率和與第二視頻幀關(guān)聯(lián)的估計(jì)的比特率;第二中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真(pd)和與第一視頻幀關(guān)聯(lián)的量化參數(shù)(qp)值、與第二視頻幀關(guān)聯(lián)的qp值及與第二視頻幀關(guān)聯(lián)的實(shí)際比特率;第三中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的實(shí)際pd、與第二視頻幀關(guān)聯(lián)的實(shí)際pd和與第二視頻幀關(guān)聯(lián)的實(shí)際比特率;或者第四中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的量化系數(shù)的統(tǒng)計(jì)。
為促進(jìn)上面剛描述的實(shí)施例,大小估計(jì)模塊包括用于基于與第一視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真和qp值和與第二視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真、qp值和實(shí)際比特率,估計(jì)第一視頻幀比特率的邏輯。
為促進(jìn)上述的實(shí)施例,大小估計(jì)模塊還包括用于基于第一視頻幀的實(shí)際預(yù)測(cè)失真、編碼模式和運(yùn)動(dòng)向量估計(jì)、第二視頻幀的實(shí)際預(yù)測(cè)失真和第二視頻幀的實(shí)際比特率的函數(shù),估計(jì)第一視頻幀比特率的邏輯。
為促進(jìn)上述的實(shí)施例,大小估計(jì)模塊還包括用于執(zhí)行以下操作的邏輯:響應(yīng)第一視頻幀的實(shí)際pd為可用,基于第一視頻幀的實(shí)際pd,估計(jì)第一視頻幀比特率,以及響應(yīng)第一視頻幀的實(shí)際pd為不可用,基于與第一視頻幀關(guān)聯(lián)的估計(jì)的pd或目標(biāo)比特率,估計(jì)第一視頻幀比特率。
為促進(jìn)第一實(shí)施例,一個(gè)或更多個(gè)編碼管線還包括用于處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀或其部分的第一編碼管線、用于處理在第二視頻幀前面緊鄰的第三視頻幀的第二編碼管線,以及大小估計(jì)模塊還包括用于至少部分基于從第二視頻幀處理生成的一個(gè)或更多個(gè)中間參數(shù),估計(jì)第一視頻幀比特率的邏輯。
為促進(jìn)第一實(shí)施例,碼率控制器還包括用于至少部分基于先前的幀類(lèi)型,確定與先前的幀關(guān)聯(lián)的比特率的邏輯。
為促進(jìn)上面剛描述的實(shí)施例,一個(gè)或更多個(gè)編碼管線還包括用于處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀或其部分的第一編碼管線和用于處理在第二視頻幀前面緊鄰的第三視頻幀的第二編碼管線。碼率控制器還包括用于響應(yīng)第一幀為第一幀內(nèi)幀,或者響應(yīng)第二視頻幀為幀內(nèi)幀、場(chǎng)景變化幀或黃金幀,將第一視頻幀比特率估計(jì)為目標(biāo)比特率的邏輯。
為促進(jìn)第一實(shí)施例,一個(gè)或更多個(gè)編碼管線還包括用于處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀或其部分的第一編碼管線和用于處理在第二視頻幀前面緊鄰的第三視頻幀的第二編碼管線。緩沖器充滿度更新模塊還包括用于基于在用于第二視頻幀的實(shí)際與估計(jì)的比特率之間的差和在用于第一視頻幀的估計(jì)的比特率與平均比特率之間的差的函數(shù),更新緩沖器充滿度的邏輯。
為促進(jìn)第一實(shí)施例,碼率控制器還包括用于以取決于當(dāng)前幀類(lèi)型和先前的幀類(lèi)型的方式,為當(dāng)前視頻幀確定目標(biāo)比特率的邏輯。
在一個(gè)或更多個(gè)第二實(shí)施例中,視頻編碼器包括一個(gè)或更多個(gè)編碼管線,用于處理先前的視頻幀或其部分,并且用于生成指示編碼過(guò)程的一個(gè)或更多個(gè)中間參數(shù)。視頻編碼器還包括用于編碼當(dāng)前視頻幀或其部分的另外的編碼管線,其中另外的編碼管線包括帶有用于執(zhí)行以下操作的部件的碼率控制器:至少部分基于一個(gè)或更多個(gè)中間參數(shù),估計(jì)用于先前的視頻幀的比特率;至少部分基于比特率估計(jì),更新緩沖器充滿度;以及至少部分基于比特率估計(jì)和緩沖器充滿度更新,為當(dāng)前視頻幀確定目標(biāo)比特率。
在一個(gè)或更多個(gè)第三實(shí)施例中,用于并行視頻編碼的計(jì)算機(jī)實(shí)現(xiàn)的方法包括:通過(guò)一個(gè)或更多個(gè)編碼管線,處理一個(gè)或更多個(gè)先前的視頻幀或其部分,并且生成指示處理的一個(gè)或更多個(gè)中間參數(shù)。方法還包括:通過(guò)另一編碼管線,處理當(dāng)前視頻幀或其部分,其中處理當(dāng)前視頻幀還包括:至少部分基于一個(gè)或更多個(gè)中間參數(shù),估計(jì)用于先前的視頻幀的比特率;至少部分基于比特率估計(jì),更新緩沖器充滿度;以及至少部分基于比特率估計(jì)和緩沖器充滿度更新,為當(dāng)前視頻幀確定目標(biāo)比特率。
為促進(jìn)上面剛描述的第三實(shí)施例,估計(jì)先前的幀的比特率取決于指示從先前的視頻幀處理可獲得的中間參數(shù)的同步信息。
為促進(jìn)上面剛描述的第三實(shí)施例,估計(jì)先前的視頻幀的比特率還包括:響應(yīng)第一視頻幀的實(shí)際pd為可用,基于第一視頻幀的實(shí)際pd,估計(jì)第一視頻幀比特率,以及響應(yīng)第一視頻幀的實(shí)際pd為不可用,基于與第一視頻幀關(guān)聯(lián)的估計(jì)的pd或目標(biāo)比特率,估計(jì)第一視頻幀比特率。
為促進(jìn)上述的第三實(shí)施例,處理一個(gè)或更多個(gè)先前的視頻幀還包括:處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀,以及處理在第一視頻幀前面緊鄰的第二視頻幀。根據(jù)至少以下之一,估計(jì)第一視頻幀比特率:第一中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的目標(biāo)比特率、與第二視頻幀關(guān)聯(lián)的實(shí)際比特率和與第二視頻幀關(guān)聯(lián)的估計(jì)的比特率;第二中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真(pd)和與第一視頻幀關(guān)聯(lián)的量化參數(shù)(qp)值、與第二視頻幀關(guān)聯(lián)的qp值及與第二視頻幀關(guān)聯(lián)的實(shí)際比特率;第三中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的實(shí)際pd、與第二視頻幀關(guān)聯(lián)的實(shí)際pd和與第二視頻幀關(guān)聯(lián)的實(shí)際比特率;或者第四中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的量化系數(shù)的統(tǒng)計(jì)。
為促進(jìn)上面剛描述的第三實(shí)施例,基于與第一視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真和qp值和與第二視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真、qp值和實(shí)際比特率,估計(jì)第一視頻幀比特率。
為促進(jìn)上述的第三實(shí)施例,基于第一視頻幀的實(shí)際預(yù)測(cè)失真、編碼模式和運(yùn)動(dòng)向量估計(jì)、第二視頻幀的實(shí)際預(yù)測(cè)失真和第二視頻幀的實(shí)際比特率的函數(shù),估計(jì)第一視頻幀比特率。
為促進(jìn)上述的第三實(shí)施例,處理一個(gè)或更多個(gè)先前的視頻幀還包括:處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀,以及處理在第一視頻幀前面緊鄰的第二視頻幀。估計(jì)先前的幀比特率還包括至少部分基于從第二視頻幀處理生成的一個(gè)或更多個(gè)中間參數(shù),估計(jì)第一視頻幀比特率。
為促進(jìn)第三實(shí)施例,至少部分基于先前的幀類(lèi)型,估計(jì)與先前的幀關(guān)聯(lián)的比特率。
為促進(jìn)上面剛描述的第三實(shí)施例,處理先前的視頻幀還包括:處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀,以及處理在第一視頻幀前面緊鄰的第二視頻幀。響應(yīng)第一幀為第一幀內(nèi)幀,或者響應(yīng)第二視頻幀為幀內(nèi)幀、場(chǎng)景變化幀或黃金幀,將第一視頻幀比特率估計(jì)為目標(biāo)比特率。
為促進(jìn)第三實(shí)施例,處理先前的視頻幀還包括:處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀,以及處理在第一視頻幀前面緊鄰的第二視頻幀?;谠谟糜诘诙曨l幀的實(shí)際與估計(jì)的比特率之間的差和在用于第一視頻幀的估計(jì)的比特率與平均比特率之間的差的函數(shù),更新緩沖器充滿度。
為促進(jìn)第三實(shí)施例,為當(dāng)前視頻幀確定目標(biāo)比特率取決于當(dāng)前幀類(lèi)型和先前的幀類(lèi)型。
在一個(gè)或更多個(gè)第四實(shí)施例中,一個(gè)或更多個(gè)機(jī)器可讀媒體,在其上面存儲(chǔ)有多個(gè)指令,多個(gè)指令在計(jì)算裝置上執(zhí)行時(shí),促使計(jì)算裝置執(zhí)行第三實(shí)施例的任何一個(gè)實(shí)施例。
在一個(gè)或更多個(gè)第四實(shí)施例中,一個(gè)或更多個(gè)機(jī)器可讀媒體,在其上面存儲(chǔ)有多個(gè)指令,多個(gè)指令在計(jì)算裝置上執(zhí)行時(shí),促使計(jì)算裝置執(zhí)行并行視頻編碼的方法,方法包括:通過(guò)一個(gè)或更多個(gè)編碼管線,處理一個(gè)或更多個(gè)先前的視頻幀或其部分,并且生成指示處理的一個(gè)或更多個(gè)中間參數(shù),以及通過(guò)另一編碼管線,處理當(dāng)前視頻幀或其部分。處理當(dāng)前視頻幀還包括:至少部分基于一個(gè)或更多個(gè)中間參數(shù),估計(jì)用于先前的視頻幀的比特率;至少部分基于估計(jì)的比特率,更新緩沖器充滿度;以及至少部分基于比特率估計(jì)和緩沖器充滿度更新,為當(dāng)前視頻幀確定目標(biāo)比特率。
為促進(jìn)上面剛描述的第五實(shí)施例,媒體還包括在其上面存儲(chǔ)的指令,指令在由計(jì)算裝置執(zhí)行時(shí),促使裝置執(zhí)行還包括以下操作的方法:處理在當(dāng)前視頻幀前面緊鄰的第一視頻幀,以及處理在第一視頻幀前面緊鄰的第二視頻幀。指令還促使處理器根據(jù)至少以下之一,估計(jì)第一視頻幀比特率:第一中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的目標(biāo)比特率、與第二視頻幀關(guān)聯(lián)的實(shí)際比特率和與第二視頻幀關(guān)聯(lián)的估計(jì)的比特率;第二中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的估計(jì)的預(yù)測(cè)失真(pd)和與第一視頻幀關(guān)聯(lián)的量化參數(shù)(qp)值、與第二視頻幀關(guān)聯(lián)的qp值及與第二視頻幀關(guān)聯(lián)的實(shí)際比特率;第三中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的實(shí)際pd、與第二視頻幀關(guān)聯(lián)的實(shí)際pd和與第二視頻幀關(guān)聯(lián)的實(shí)際比特率;或者第四中間參數(shù)集,包括與第一視頻幀關(guān)聯(lián)的量化系數(shù)的統(tǒng)計(jì)。
將認(rèn)識(shí)到的是,實(shí)施例不限于如此描述的示范實(shí)施例,而是能夠在不脫離隨附權(quán)利要求書(shū)的范圍的情況下通過(guò)修改和變化來(lái)實(shí)踐。例如,上述實(shí)施例可包括特征的特定組合。然而,上述實(shí)施例在此方面不受限制,并且在實(shí)施例中,上述實(shí)施例可包括:只執(zhí)行此類(lèi)特征的子集,執(zhí)行不同順序的此類(lèi)特征,執(zhí)行此類(lèi)特征的不同組合,和/或執(zhí)行與明確列出的那些特征不同的另外特征。因此,應(yīng)參照隨附權(quán)利要求書(shū)連同此類(lèi)權(quán)利要求享有的等效物的完全范圍來(lái)確定范圍。