包括在多個(gè)獨(dú)立編碼流之間的共享運(yùn)動(dòng)估計(jì)的視頻編碼的制作方法
【專利說明】包括在多個(gè)獨(dú)立編碼流之間的共享運(yùn)動(dòng)估計(jì)的視頻編碼
[0001]相關(guān)申請的交叉引用
[0002]本申請要求2012年12月14日提交的美國實(shí)用申請?zhí)?3/714,870的優(yōu)先權(quán),該專利的公開全部被明確地并入本文。
【背景技術(shù)】
[0003]最近,隨著技術(shù)的進(jìn)步和網(wǎng)絡(luò)帶寬的增長,對用于視頻流式傳送和視頻會(huì)議的應(yīng)用的要求明顯增加了。例如,報(bào)告了在2011年來自Netflix的業(yè)務(wù)已經(jīng)由所有網(wǎng)絡(luò)數(shù)據(jù)流的大約60%組成。視頻流式傳送和視頻會(huì)議一般利用以不同的分辨率、質(zhì)量和/或比特率從同一源到多個(gè)流的視頻編碼。因?yàn)槎鄠€(gè)接收機(jī)客戶端的帶寬條件和解碼能力常常改變,不同的客戶端可能不能夠消費(fèi)來自給定源的相同流。將同一源編碼成多個(gè)流的過程常常被稱為同播(simulcast)。
[0004]當(dāng)前的硬件加速同播實(shí)現(xiàn)常常獨(dú)立地對每個(gè)圖片進(jìn)行編碼。一般通過串行過程或并行過程以過程之間的最少數(shù)據(jù)交換來執(zhí)行編碼。
【附圖說明】
[0005]本文描述的材料作為示例而不是作為限制在附圖中示出。為了說明的簡單和清楚,在附圖中示出的元件不一定按比例繪制。例如,為了清楚,一些元件的尺寸可相對于其它元件被放大。此外,在被考慮為適當(dāng)時(shí),參考標(biāo)簽在附圖當(dāng)中重復(fù)以指示相應(yīng)的或類似的元件。在附圖中:
[0006]圖1是常規(guī)編碼系統(tǒng)的不意圖;
[0007]圖2是不例視頻編碼系統(tǒng)的不意圖;
[0008]圖3是不例視頻編碼系統(tǒng)的不意圖;
[0009]圖4是不出不例視頻編碼過程的流程圖;
[0010]圖5是在操作中的不例視頻編碼過程的不意圖;
[0011]圖6是不例視頻編碼系統(tǒng)的不意圖;
[0012]圖7是示例系統(tǒng)的示意圖;以及
[0013]圖8是都根據(jù)本公開的至少一些實(shí)現(xiàn)布置的示例系統(tǒng)的示意圖。
【具體實(shí)施方式】
[0014]現(xiàn)在參考附圖描述一個(gè)或多個(gè)實(shí)施例或?qū)崿F(xiàn)。雖然討論了特定的配置和布置,應(yīng)理解,這僅為了例證性目的而完成。相關(guān)領(lǐng)域中的技術(shù)人員將認(rèn)識到,可使用其它配置和布置而不偏離本描述的精神和范圍。對相關(guān)領(lǐng)域中的技術(shù)人員將明顯,本文描述的技術(shù)和/或布置也可在除了在本文描述的系統(tǒng)和應(yīng)用以外的各種其它系統(tǒng)和應(yīng)用中使用。
[0015]雖然下面的描述闡述了可在架構(gòu)(例如片上系統(tǒng)(SoC)架構(gòu))中表明的各種實(shí)現(xiàn),本文描述的技術(shù)和/或布置的實(shí)現(xiàn)并不限于特定的架構(gòu)和/或計(jì)算系統(tǒng)并可為了類似的目的由任何架構(gòu)和/或計(jì)算系統(tǒng)實(shí)現(xiàn)。例如,使用例如多個(gè)集成電路(IC)芯片和/或封裝、和/或各種計(jì)算設(shè)備和/或消費(fèi)電子(CE)設(shè)備(例如機(jī)頂盒、智能電話等)的各種架構(gòu)可實(shí)現(xiàn)本文描述的技術(shù)和/或布置。此外,雖然下面的描述可闡述很多特定的細(xì)節(jié),例如邏輯實(shí)現(xiàn)、系統(tǒng)部件的類型和相互關(guān)系、邏輯分區(qū)/集成選擇等,所主張的主題可在沒有這樣的特定細(xì)節(jié)的情況下被實(shí)踐。在其它實(shí)例中,一些材料例如控制架構(gòu)和完整的軟件指令序列可能沒有詳細(xì)示出,以便不使本文公開的材料難理解。
[0016]本文公開的材料可在硬件、固件、軟件、或其任何組合中實(shí)現(xiàn)。本文公開的材料也可被實(shí)現(xiàn)為存儲(chǔ)在機(jī)器可讀介質(zhì)上的指令,其可由一個(gè)或多個(gè)處理器讀取和執(zhí)行。機(jī)器可讀介質(zhì)可包括用于存儲(chǔ)或傳輸以機(jī)器(例如計(jì)算設(shè)備)可讀的形式的信息的任何介質(zhì)和/或機(jī)制。例如,機(jī)器可讀介質(zhì)可包括:只讀存儲(chǔ)器(ROM);隨機(jī)存取存儲(chǔ)器(RAM);磁盤存儲(chǔ)介質(zhì);光存儲(chǔ)介質(zhì);閃存設(shè)備;電、光、聲或其它形式的傳播信號(例如載波、紅外信號、數(shù)字信號等)及其它。
[0017]在說明書中對“一個(gè)實(shí)現(xiàn)”、“實(shí)現(xiàn)”、“示例實(shí)現(xiàn)”等的提及指示所述實(shí)現(xiàn)可包括特定的特征、架構(gòu)、或特性,但每個(gè)實(shí)施例可能不一定包括特定的特征、架構(gòu)、或特性。而且,這樣的短語并不一定指同一實(shí)現(xiàn)。此外,當(dāng)結(jié)合實(shí)現(xiàn)描述特定的特征、架構(gòu)、或特性時(shí),主張結(jié)合其它實(shí)現(xiàn)(無論是否在本文中被明確地描述)來實(shí)施這樣的特征、架構(gòu)、或特性是在本領(lǐng)域中的技術(shù)人員的知識范圍內(nèi)的。
[0018]下面描述包括用于在多個(gè)獨(dú)立編碼流之間的共享運(yùn)動(dòng)估計(jì)的操作的系統(tǒng)、裝置、制品、以及方法。
[0019]如上所述,在一些情況下,常規(guī)硬件加速同播實(shí)現(xiàn)常常獨(dú)立地對每個(gè)圖片進(jìn)行編碼。一般通過串行過程或并行過程以過程之間的最少數(shù)據(jù)交換來執(zhí)行編碼。這樣的過程可能是效率低的,因?yàn)樗鼈兛赡軣o法利用由前面的編碼過程創(chuàng)建的信息。因此,這樣的同播解決方案可能在其吞吐量和功率效率方面被限制。
[0020]如下面將更詳細(xì)描述的,在多個(gè)獨(dú)立編碼流之間的共享運(yùn)動(dòng)估計(jì)的操作可包括用于硬件加速同播的通用算法。這種方法利用在各種比特流編碼過程之間的有效信息流,以增加同播編碼的吞吐量并同時(shí)降低總功率使用。可在實(shí)際上任何現(xiàn)有的視頻編碼譯碼器(例如Mpeg2、VCl、H.264_AVC/SVC、VP8、HEVC等,以及可能的未來編碼譯碼器標(biāo)準(zhǔn))上應(yīng)用的在這里呈現(xiàn)的算法通常足夠了。而且,因?yàn)楫?dāng)前視頻編碼譯碼器一般共享相同的基本編碼部件(例如運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、頻域變換、熵編碼等),本文提出的技術(shù)可應(yīng)用于混合編碼譯碼器編碼。例如,本文提出的技術(shù)可應(yīng)用于混合編碼譯碼器編碼,其中編碼器可操作來在同一源上同時(shí)產(chǎn)生AVC和VP8比特流。
[0021]圖1是常規(guī)編碼系統(tǒng)100的示意圖。如所示,同播編碼可包括具有第一獨(dú)立編碼流102和第二獨(dú)立編碼流104的雙流同播編碼過程。原始視頻源110可以經(jīng)由中間向下采樣I模塊112被向下采樣到中間視頻1114中。中間運(yùn)動(dòng)估計(jì)I模塊116可至少部分地基于中間視頻1114來執(zhí)行運(yùn)動(dòng)估計(jì),并將結(jié)果輸出到?jīng)Q定性運(yùn)動(dòng)估計(jì)I模塊118。決定性運(yùn)動(dòng)估計(jì)I模塊118可至少部分地基于來自中間運(yùn)動(dòng)估計(jì)I模塊116的中間運(yùn)動(dòng)估計(jì)以及原始視頻源110,來向輸出模塊120提供決定性運(yùn)動(dòng)估計(jì),中間運(yùn)動(dòng)估計(jì)I模塊116和原始視頻源110中的每個(gè)在第一獨(dú)立編碼流102的過程內(nèi)被完全隔離。
[0022]此外,在第二獨(dú)立編碼流104中,原始視頻源110可經(jīng)由目標(biāo)向下采樣模塊140被向下采樣到目標(biāo)視頻源150中。目標(biāo)視頻源150可經(jīng)由中間向下采樣2模塊152被向下采樣到中間視頻2154中。中間運(yùn)動(dòng)估計(jì)2模塊156可至少部分地基于中間視頻2154來執(zhí)行運(yùn)動(dòng)估計(jì)并向決定性運(yùn)動(dòng)估計(jì)2模塊158輸出結(jié)果。決定性運(yùn)動(dòng)估計(jì)2模塊158可至少部分地基于來自中間運(yùn)動(dòng)估計(jì)2模塊156的中間運(yùn)動(dòng)估計(jì)以及目標(biāo)視頻源150來向輸出模塊160提供決定性運(yùn)動(dòng)估計(jì)。在操作中,第二獨(dú)立編碼流104不將運(yùn)動(dòng)估計(jì)數(shù)據(jù)直接反饋到第一獨(dú)立編碼流102。
[0023]如所示,常規(guī)編碼系統(tǒng)100 —般可包括雙流同播編碼過程。每個(gè)編碼具有兩層分級運(yùn)動(dòng)估計(jì)過程,其包含向下采樣,后面是在低分辨率層上的運(yùn)動(dòng)估計(jì),然后是在原始分辨率層上的運(yùn)動(dòng)估計(jì)。第二流編碼的源來自從原始源的向下采樣。
[0024]圖2是根據(jù)本公開的至少一些實(shí)現(xiàn)布置的示例視頻編碼系統(tǒng)200的示意圖。在所示實(shí)現(xiàn)中,視頻編碼系統(tǒng)200可包括為了清楚起見沒有在圖2中示出的額外物品。例如,視頻編碼系統(tǒng)200可包括處理器、射頻型(RF)收發(fā)機(jī)、和/或天線。此外,視頻編碼系統(tǒng)200可包括為了清楚起見沒有在圖2中示出的額外物品,例如揚(yáng)聲器、麥克風(fēng)、加速度計(jì)、存儲(chǔ)器、路由器、網(wǎng)絡(luò)接口邏輯等。
[0025]如在本文使用,術(shù)語“編碼器”可以指編碼器和/或解碼器。類似地,如在本文使用的,術(shù)語“編碼”可以指經(jīng)由編碼器進(jìn)行編碼和/或經(jīng)由解碼器進(jìn)行解碼。
[0026]同播編碼通常包括向下采樣過程(對于原始分辨率的流不包括),后面是運(yùn)動(dòng)估計(jì)、運(yùn)動(dòng)補(bǔ)償、量化和熵編碼等過程。運(yùn)動(dòng)估計(jì)算法常常包含分級運(yùn)動(dòng)搜索步驟的一層或多層。因?yàn)檫\(yùn)動(dòng)估計(jì)和向下采樣通常是最耗費(fèi)時(shí)間和功率昂貴的過程,這些過程在下面的圖中被強(qiáng)調(diào)。
[0027]如所示,同播編碼可包括具有第一獨(dú)立編碼流202和第二獨(dú)立編碼流204的雙流同播編碼過程。第一獨(dú)立編碼流202可根據(jù)第一編碼標(biāo)準(zhǔn)來被編碼,而第二獨(dú)立編碼流204可根據(jù)與關(guān)聯(lián)于第一獨(dú)立編碼流202的第一編碼標(biāo)準(zhǔn)不同的第二編碼標(biāo)準(zhǔn)來被編碼。在第二獨(dú)立編碼流204中,原始視頻源210可經(jīng)由目標(biāo)向下采樣模塊240被向下采樣到目標(biāo)視頻源250中。目標(biāo)視頻源250可經(jīng)由中間向下采樣I模塊252被向下采樣到中間視頻1254中。中間運(yùn)動(dòng)估計(jì)I模塊256可至少部分地基于中間視頻1254來執(zhí)行運(yùn)動(dòng)估計(jì),并將結(jié)果輸出到?jīng)Q定性運(yùn)動(dòng)估計(jì)I模塊258。決定性運(yùn)動(dòng)估計(jì)I模塊258可至少部分地基于來自中間運(yùn)動(dòng)估計(jì)I模塊256的中間運(yùn)動(dòng)估計(jì)以及目標(biāo)視頻源250來向輸出模塊260提供決定性運(yùn)動(dòng)估計(jì)。在操作中,第二獨(dú)立編碼流204將運(yùn)動(dòng)估計(jì)數(shù)據(jù)直接反饋到第一獨(dú)立編碼流202。
[0028]在第一獨(dú)立編碼流202中,決定性運(yùn)動(dòng)估計(jì)2模塊268可至少部分地基于來自與第二獨(dú)立編碼流204相關(guān)聯(lián)的決定性運(yùn)動(dòng)估計(jì)I模塊258的運(yùn)動(dòng)估計(jì),以及原始視頻源210,來向輸出模塊270提供決定性運(yùn)動(dòng)估計(jì)。相應(yīng)地,第二獨(dú)立編碼流204將運(yùn)動(dòng)估計(jì)數(shù)據(jù)直接反饋到第一獨(dú)立編碼流202。
[0029]在操作中,第二運(yùn)動(dòng)邏輯模塊(例如決定性運(yùn)動(dòng)估計(jì)I模塊258)可配置成在第二獨(dú)立編碼流204內(nèi)執(zhí)行目標(biāo)視頻源250的決定性運(yùn)動(dòng)估計(jì)。目標(biāo)視頻源250可以是原始視頻源210的向下采樣版本。原始視頻源210可與第一獨(dú)立編碼流202相關(guān)聯(lián),且目標(biāo)視頻源250可與第二獨(dú)立編碼流204相關(guān)聯(lián)。第一運(yùn)動(dòng)邏輯模塊(例如決定性運(yùn)動(dòng)估計(jì)2模塊268)可配置成至少部分地基于在第二獨(dú)立編碼流204內(nèi)的目標(biāo)視頻源250的決定性運(yùn)動(dòng)估計(jì),來執(zhí)行在第一獨(dú)立編碼流202內(nèi)的原始視頻源210的決定性運(yùn)動(dòng)估計(jì)。
[0030]在一些示例中,一個(gè)或多個(gè)熵編碼器模塊(未示出,見例如下面圖3的熵編碼模塊310)可通信地耦合到第一運(yùn)動(dòng)邏輯模塊(例如決定性運(yùn)動(dòng)估計(jì)2模塊268)和第二邏輯模塊(例如決定性運(yùn)動(dòng)估計(jì)I模塊258)。這樣的熵編碼器可配置成:對于目標(biāo)視頻源250的決定性運(yùn)動(dòng)估計(jì),至少部分地基于所執(zhí)行的決定性運(yùn)動(dòng)估計(jì),來對來自第二獨(dú)立編碼流204的輸出260進(jìn)行編碼,以便包括在多流同播中,以從目標(biāo)視頻源250產(chǎn)生編碼的第二輸出;以及對于原始視頻源210,至少部分地基于所執(zhí)行的決定性運(yùn)動(dòng)估計(jì),對來自第一獨(dú)立編碼流202的輸出270進(jìn)行編碼,以便包括在多流同播中,以從原始視頻源210產(chǎn)生編碼的第一輸出。
[0031]在一些示例中,視頻編碼系統(tǒng)200的目標(biāo)向下采樣邏輯模塊240可配置成執(zhí)行從原始視頻源210到目標(biāo)視頻源250的目標(biāo)向下采樣以提供目標(biāo)視頻源250??稍谀繕?biāo)視頻源250的決定性運(yùn)動(dòng)估計(jì)的執(zhí)行之前執(zhí)行目標(biāo)向下采樣。中間向下采樣邏輯模塊252可通信地耦合到目標(biāo)向下采樣邏輯模塊240,并可配置成執(zhí)行從目標(biāo)視頻源250到中間視頻254的中間向下采樣。中間運(yùn)動(dòng)邏輯模塊256可通信地耦合到中間向下采樣邏輯模塊252,并可配置成至