本發(fā)明涉及視頻通話技術(shù)領(lǐng)域,尤其涉及一種用于多人視頻通話的視頻處理方法及服務(wù)器。
背景技術(shù):
近年來,隨著電子技術(shù)的不斷發(fā)展,多人視頻通話在家庭遠(yuǎn)程聚會(huì)、公司遠(yuǎn)程會(huì)議、遠(yuǎn)程教育、互動(dòng)直播等場景中有著廣泛的應(yīng)用。在這些應(yīng)用中,每個(gè)參與通話的終端設(shè)備,需要將本機(jī)的視頻畫面?zhèn)鬏數(shù)絤cu(microcontrollerunit,微控制單元)服務(wù)器,mcu服務(wù)器需要首先對(duì)所有終端的視頻進(jìn)行解碼,然后按照終端的布局要求對(duì)所有的視頻流畫面進(jìn)行合成,最后對(duì)合成畫面進(jìn)行編碼后發(fā)送給每個(gè)參與通話的視頻終端。
對(duì)于多人視頻通話服務(wù)的提供商而言,mcu服務(wù)器需要具有非常強(qiáng)的計(jì)算能力來編碼高分辨率的合成視頻,是整個(gè)系統(tǒng)的瓶頸所在。假設(shè)某個(gè)多人通話中有9個(gè)參與者,每個(gè)參與者上傳視頻的分辨率為240x240,那么在mcu服務(wù)器上需要實(shí)時(shí)對(duì)9路分辨率為240x240的視頻進(jìn)行解碼,根據(jù)客戶終端設(shè)備指定的布局,分別合成出9路分辨率為720x720的視頻流,然后對(duì)9路720x720的視頻進(jìn)行編碼,需要極高的計(jì)算量。因此,如何有效的降低視頻處理的計(jì)算量,進(jìn)而降低mcu服務(wù)器的成本,是一項(xiàng)亟待解決的問題。
技術(shù)實(shí)現(xiàn)要素:
本發(fā)明提供了一種用于多人視頻通話的視頻處理方法,能夠有效降低多人視頻通話過程中視頻處理的計(jì)算量,進(jìn)而降低服務(wù)器的成本。
本發(fā)明提供了一種用于多人視頻通話的視頻處理方法,應(yīng)用于服務(wù)器,所述服務(wù)器分配有n個(gè)邏輯計(jì)算單元,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,所述方法包括:
基于第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果;
所述第一邏輯計(jì)算單元基于所述第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
所述第一邏輯計(jì)算單元對(duì)所述合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出所述合成圖像編碼后的合成流。
優(yōu)選地,所述基于第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果包括:
對(duì)當(dāng)前接收到的所述第一終端設(shè)備上傳的每條視頻流分別進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果。
優(yōu)選地,所述對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果后還包括:
將所述預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,所述共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存。
優(yōu)選地,所述第一邏輯計(jì)算單元基于所述第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像后還包括:
記錄所述合成圖像中的每個(gè)圖像子區(qū)域與所述第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系。
優(yōu)選地,所述第一邏輯計(jì)算單元對(duì)所述合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出所述合成圖像編碼后的合成流包括:
基于記錄的所述合成圖像中的每個(gè)圖像子區(qū)域與所述第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系,確定每個(gè)圖像子區(qū)域?qū)?yīng)的所述第一終端設(shè)備上傳的視頻流的編號(hào);
基于所述視頻流的編號(hào)從所述共享內(nèi)存中查找出所述視頻流的幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果;
基于所述幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果完成圖像編碼;
輸出圖像編碼后的合成流。
一種用于多人視頻通話的服務(wù)器,所述服務(wù)器分配有n個(gè)邏輯計(jì)算單元,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量;
所述服務(wù)器中的第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻的預(yù)測結(jié)果;
所述第一邏輯計(jì)算單元基于所述第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
所述第一邏輯計(jì)算單元對(duì)所述合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出所述合成圖像編碼后的合成流。
優(yōu)選地,所述第一邏輯計(jì)算單元包括:
解碼模塊,用于對(duì)當(dāng)前接收到的所述第一終端設(shè)備上傳的每條視頻流分別進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
幀內(nèi)預(yù)測和幀間預(yù)測模塊,用于對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果。
優(yōu)選地,所述第一邏輯計(jì)算單元還包括:
存儲(chǔ)模塊,用于將所述預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,所述共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存。
優(yōu)選地,所述第一邏輯計(jì)算單元還包括:
記錄模塊,用于記錄所述合成圖像中的每個(gè)圖像子區(qū)域與所述第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系。
優(yōu)選地,所述第一邏輯計(jì)算單元包括:
確定模塊,用于基于記錄的所述合成圖像中的每個(gè)圖像子區(qū)域與所述第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系,確定每個(gè)圖像子區(qū)域?qū)?yīng)的所述第一終端設(shè)備上傳的視頻流的編號(hào);
查找模塊,用于基于所述視頻流的編號(hào)從所述共享內(nèi)存中查找出所述視頻流的幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果;
編碼模塊,用于基于所述幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果完成圖像編碼;
輸出模塊,用于輸出圖像編碼后的合成流。
由上述方案可知,本發(fā)明提供的一種用于多人視頻通話的視頻處理方法,應(yīng)用于服務(wù)器,服務(wù)器分配有n個(gè)邏輯計(jì)算單元,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,當(dāng)需要對(duì)多人視頻通話的視頻進(jìn)行處理時(shí),首先基于第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果,然后第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中每條視頻流構(gòu)成合成圖像中的一個(gè)圖像子區(qū)域;然后第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。本發(fā)明對(duì)合成和編碼流水線進(jìn)行了優(yōu)化,將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算一路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù),在編碼合成流時(shí),每路合成流的編碼器直接利用所有圖像子區(qū)域的預(yù)測結(jié)果,完成剩余的編碼操作,顯著降低了整個(gè)系統(tǒng)的計(jì)算量。
附圖說明
為了更清楚地說明本發(fā)明實(shí)施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對(duì)實(shí)施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實(shí)施例,對(duì)于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動(dòng)的前提下,還可以根據(jù)這些附圖獲得其他的附圖。
圖1為本發(fā)明公開的一種用于多人視頻通話的視頻處理方法實(shí)施例1的方法流程圖;
圖2為本發(fā)明公開的一種用于多人視頻通話的視頻處理方法實(shí)施例2的方法流程圖;
圖3為本發(fā)明公開的一種用于多人視頻通話的視頻處理方法實(shí)施例3的方法流程圖;
圖4為本發(fā)明公開的一種用于多人視頻通話的視頻處理方法實(shí)施例4的方法流程圖;
圖5為本發(fā)明公開的一種用于多人視頻通話的視頻處理方法實(shí)施例5的方法流程圖;
圖6為本發(fā)明公開的一種用于多人視頻通話的服務(wù)器實(shí)施例1的結(jié)構(gòu)示意圖;
圖7為本發(fā)明公開的一種用于多人視頻通話的服務(wù)器實(shí)施例2的結(jié)構(gòu)示意圖;
圖8為本發(fā)明公開的一種用于多人視頻通話的服務(wù)器實(shí)施例3的結(jié)構(gòu)示意圖;
圖9為本發(fā)明公開的一種用于多人視頻通話的服務(wù)器實(shí)施例4的結(jié)構(gòu)示意圖;
圖10為本發(fā)明公開的一種用于多人視頻通話的服務(wù)器實(shí)施例5的結(jié)構(gòu)示意圖。
具體實(shí)施方式
下面將結(jié)合本發(fā)明實(shí)施例中的附圖,對(duì)本發(fā)明實(shí)施例中的技術(shù)方案進(jìn)行清楚、完整地描述,顯然,所描述的實(shí)施例僅僅是本發(fā)明一部分實(shí)施例,而不是全部的實(shí)施例。基于本發(fā)明中的實(shí)施例,本領(lǐng)域普通技術(shù)人員在沒有做出創(chuàng)造性勞動(dòng)前提下所獲得的所有其他實(shí)施例,都屬于本發(fā)明保護(hù)的范圍。
對(duì)于mcu服務(wù)器而言,解碼n路視頻流的計(jì)算量記為cd,合成n路視頻流的計(jì)算量記為cc,而編碼n路視頻的計(jì)算量記為ce。三者之間關(guān)系大致為:cc≈0.5cd和ce>10cd。由此可知,編碼n路視頻流的計(jì)算任務(wù)是整個(gè)系統(tǒng)的計(jì)算瓶頸,約占90%左右的計(jì)算量。
在現(xiàn)有技術(shù)中,每一路合成圖像都包含n路上傳圖像的內(nèi)容,只是n路圖像在不同合成圖像中的排列位置不同。比如參與者a的合成流中a的本地視頻(即原視頻)被顯示到終端設(shè)備m的左上角,而在參與者b的合成流中b的本地視頻(即原視頻)被顯示到終端設(shè)備n的左上角。
如果能在編碼輸出合成流的過程中,利用到合成流各圖像塊之間的相關(guān)性,在編碼過程中共享計(jì)算的中間結(jié)果,那么就可能有效降低整個(gè)系統(tǒng)的所需計(jì)算資源。
因此,本發(fā)明基于上述思路,如圖1所示,提供了一種用于多人視頻通話的視頻處理方法實(shí)施例1的方法流程圖,該方法應(yīng)用于服務(wù)器,其中,服務(wù)器分配有n個(gè)邏輯計(jì)算單元,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,所述方法可以包括以下步驟:
s101、基于第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci(即處理器中包含的任意一個(gè)邏輯計(jì)算單元),對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備(即任意一個(gè)終端設(shè)備)上傳的每條視頻流進(jìn)行預(yù)測,并分別生成每條視頻流的預(yù)測結(jié)果。為了描述更加清楚,將處理器中的任意一個(gè)邏輯計(jì)算單元定義為第一邏輯單元,將任意一個(gè)終端設(shè)備定義為第一終端設(shè)備。
s102、第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
s103、第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在上述實(shí)施例中,當(dāng)需要對(duì)多人視頻通話的視頻進(jìn)行處理時(shí),首先基于第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果,然后第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像;然后第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。本發(fā)明對(duì)合成和編碼流水線進(jìn)行了優(yōu)化,將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算一路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù),在編碼合成流時(shí),每路合成流的編碼器直接利用所有圖像子區(qū)域的預(yù)測結(jié)果,完成剩余的編碼操作,顯著降低了整個(gè)系統(tǒng)的計(jì)算量。
如圖2所示,為本發(fā)明提供的一種用于多人視頻通話的視頻處理方法實(shí)施例2的方法流程圖,該方法應(yīng)用于服務(wù)器,其中,服務(wù)器分配有n個(gè)邏輯計(jì)算單元,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,所述方法可以包括以下步驟:
s201、對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
s202、對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
s203、第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
s204、第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在實(shí)施例1的基礎(chǔ)上具體通過對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流分別進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊,并對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果。將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算一路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù)。
如圖3所示,為本發(fā)明提供的一種用于多人視頻通話的視頻處理方法實(shí)施例3的方法流程圖,該方法應(yīng)用于服務(wù)器,其中,服務(wù)器分配有n個(gè)邏輯計(jì)算單元,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,所述方法可以包括以下步驟:
s301、對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
s302、對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果pi,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
s303、將預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存;
將預(yù)測結(jié)果pi存儲(chǔ)到所有邏輯計(jì)算單元都可以訪問到的共享內(nèi)存中。
s304、第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
s305、第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在實(shí)施例2的基礎(chǔ)上,進(jìn)一步將預(yù)測結(jié)果存儲(chǔ)至每個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存,通過將每條視頻流的預(yù)測結(jié)果存儲(chǔ)至所有邏輯計(jì)算單元均能訪問到的內(nèi)存,使得每個(gè)邏輯計(jì)算單元在輸出合成流時(shí)能夠共享每條視頻流的預(yù)測結(jié)果,進(jìn)而減少了在輸出合成流時(shí)的計(jì)算量。
如圖4所示,為本發(fā)明提供的一種用于多人視頻通話的視頻處理方法實(shí)施例4的方法流程圖,該方法應(yīng)用于服務(wù)器,其中,服務(wù)器分配有n個(gè)邏輯計(jì)算單元,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,所述方法可以包括以下步驟:
s401、對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
s402、對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果pi,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
s403、將預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存;
將預(yù)測結(jié)果pi存儲(chǔ)到所有邏輯計(jì)算單元都可以訪問到的共享內(nèi)存中。
s404、第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
s405、記錄合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系;
得到合成圖像cii后,同時(shí)需要記錄每個(gè)圖像子區(qū)域(每個(gè)圖像子區(qū)域?qū)?yīng)于一條原始視頻流)與各原始視頻流,即終端設(shè)備上傳的視頻流的對(duì)應(yīng)關(guān)系。
s406、第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例進(jìn)一步對(duì)合成圖像中的每個(gè)圖像子區(qū)域和第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系進(jìn)行記錄,通過對(duì)對(duì)應(yīng)關(guān)系進(jìn)行記錄能夠建立合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的聯(lián)系。
如圖5所示,為本發(fā)明提供的一種用于多人視頻通話的視頻處理方法實(shí)施例5的方法流程圖,該方法應(yīng)用于服務(wù)器,其中,服務(wù)器分配有n個(gè)邏輯計(jì)算單元,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,所述方法可以包括以下步驟:
s501、對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
s502、對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果pi,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
s503、將預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存;
將預(yù)測結(jié)果pi存儲(chǔ)到所有邏輯計(jì)算單元都可以訪問到的共享內(nèi)存中。
s504、第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
s505、記錄合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系;
得到合成圖像cii后,同時(shí)需要記錄每個(gè)圖像子區(qū)域(每個(gè)圖像子區(qū)域?qū)?yīng)于一路原始視頻流)與各原始視頻流,即終端設(shè)備上傳的視頻流的對(duì)應(yīng)關(guān)系。
s506、基于記錄的合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系,確定每個(gè)圖像子區(qū)域?qū)?yīng)的第一終端設(shè)備上傳的視頻流的編號(hào);
對(duì)于每個(gè)圖像子區(qū)域,首先根據(jù)記錄的合成圖像中每個(gè)圖像子區(qū)域與終端設(shè)備上傳的視頻流的對(duì)應(yīng)關(guān)系,找到對(duì)應(yīng)的終端設(shè)備上傳的視頻流的編號(hào)。
s507、基于所述視頻流的編號(hào)從共享內(nèi)存中查找出視頻流的幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果;
然后根據(jù)視頻流的編號(hào)從共享內(nèi)存中找到已經(jīng)計(jì)算好的與編號(hào)對(duì)應(yīng)的視頻流的幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果。
s508、基于幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果完成圖像編碼;
根據(jù)、幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果,通過計(jì)算預(yù)測值、對(duì)殘差進(jìn)行變換、量化、熵編碼等完成圖像編碼。
s509、輸出圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
本文方法與原有方法的計(jì)算量比較如下,解碼n路視頻流的計(jì)算量記為cd,合成n路視頻流的計(jì)算量記為cc,而編碼n路視頻的計(jì)算量記為ce。原有方法的計(jì)算量大致如下:cold=n×(cd+cc+ce)≈n×ce;
根據(jù)業(yè)界公認(rèn)的標(biāo)準(zhǔn),幀內(nèi)預(yù)測和幀間預(yù)測部分計(jì)算大致為整個(gè)圖像編碼任務(wù)的1/2。
而通過本發(fā)明的方法的計(jì)算量大致為:
兩者的計(jì)算量比值:
當(dāng)n=3時(shí),r值約為2/3;當(dāng)n=4時(shí),r值約為5/8;當(dāng)n越大時(shí),該值越接近1/2,即本文算法將計(jì)算量降低到原來的1/2左右。
綜上所述,本發(fā)明對(duì)合成和編碼流水線進(jìn)行了優(yōu)化,將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算1路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù),在編碼合成流時(shí),每路合成流的編碼器直接利用所有圖像子區(qū)域的預(yù)測結(jié)果,完成剩余的編碼操作,顯著降低了整個(gè)系統(tǒng)的計(jì)算量。
如圖6所示,提供了一種用于多人視頻通話的服務(wù)器實(shí)施例1的結(jié)構(gòu)示意圖,服務(wù)器分配有n個(gè)邏輯計(jì)算單元601,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,其中:
第一邏輯計(jì)算單元601對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci(即處理器中包含的任意一個(gè)邏輯計(jì)算單元),對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備(即任意一個(gè)終端設(shè)備)上傳的每條視頻流進(jìn)行預(yù)測,并分別生成每條視頻流的預(yù)測結(jié)果。為了描述更加清楚,將處理器中的任意一個(gè)邏輯計(jì)算單元定義為第一邏輯單元,將任意一個(gè)終端設(shè)備定義為第一終端設(shè)備。
第一邏輯計(jì)算單元601基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
第一邏輯計(jì)算單元601對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在上述實(shí)施例中,當(dāng)需要對(duì)多人視頻通話的視頻進(jìn)行處理時(shí),首先基于第一邏輯計(jì)算單元對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行預(yù)測,分別生成每條視頻流的預(yù)測結(jié)果,然后第一邏輯計(jì)算單元基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像;然后第一邏輯計(jì)算單元對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。本發(fā)明對(duì)合成和編碼流水線進(jìn)行了優(yōu)化,將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算一路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù),在編碼合成流時(shí),每路合成流的編碼器直接利用所有圖像子區(qū)域的預(yù)測結(jié)果,完成剩余的編碼操作,顯著降低了整個(gè)系統(tǒng)的計(jì)算量。
如圖7所示,為本發(fā)明提供的一種用于多人視頻通話的服務(wù)器實(shí)施例2的結(jié)構(gòu)示意圖,服務(wù)器分配有n個(gè)邏輯計(jì)算單元701,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,其中:
解碼模塊7011,用于對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
幀內(nèi)預(yù)測和幀間預(yù)測模塊7012,用于對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
第一邏輯計(jì)算單元701基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
第一邏輯計(jì)算單元701對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在實(shí)施例1的基礎(chǔ)上具體通過對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流分別進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊,并對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果。將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算一路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù)。
如圖8所示,為本發(fā)明提供的一種用于多人視頻通話的服務(wù)器實(shí)施例3的結(jié)構(gòu)示意圖,服務(wù)器分配有n個(gè)邏輯計(jì)算單元801,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,其中:
解碼模塊8011,用于對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
幀內(nèi)預(yù)測和幀間預(yù)測模塊8012,用于對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果pi,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
存儲(chǔ)模塊8013,用于將預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存;
將預(yù)測結(jié)果pi存儲(chǔ)到邏輯計(jì)算單元c1-cn都可以訪問到的共享內(nèi)存中。
第一邏輯計(jì)算單元801基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
第一邏輯計(jì)算單元801對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在實(shí)施例2的基礎(chǔ)上,進(jìn)一步將預(yù)測結(jié)果存儲(chǔ)至每個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存,通過將每條視頻流的預(yù)測結(jié)果存儲(chǔ)至所有邏輯計(jì)算單元均能訪問到的內(nèi)存,使得每個(gè)邏輯計(jì)算單元在輸出合成流時(shí)能夠共享每條視頻流的預(yù)測結(jié)果,進(jìn)而減少了在輸出合成流時(shí)的計(jì)算量。
如圖9所示,為本發(fā)明提供的一種用于多人視頻通話的服務(wù)器實(shí)施例4的結(jié)構(gòu)示意圖,服務(wù)器分配有n個(gè)邏輯計(jì)算單元901,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,其中:
解碼模塊9011,用于對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
幀內(nèi)預(yù)測和幀間預(yù)測模塊9012,用于對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果pi,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
存儲(chǔ)模塊9013,用于將預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存;
將預(yù)測結(jié)果pi存儲(chǔ)到邏輯計(jì)算單元c1-cn都可以訪問到的共享內(nèi)存中。
第一邏輯計(jì)算單元901基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
記錄模塊9014,用于記錄合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系;
得到合成圖像cii后,同時(shí)需要記錄每個(gè)圖像子區(qū)域每個(gè)圖像子區(qū)域?qū)?yīng)于一條原始視頻流)與各原始視頻流,即終端設(shè)備上傳的視頻流的對(duì)應(yīng)關(guān)系。
第一邏輯計(jì)算單元901對(duì)合成圖像中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼后,輸出合成圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
綜上所述,在上述實(shí)施例的基礎(chǔ)上,本實(shí)施例進(jìn)一步對(duì)合成圖像中的每個(gè)圖像子區(qū)域和第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系進(jìn)行記錄,通過對(duì)對(duì)應(yīng)關(guān)系進(jìn)行記錄能夠建立合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的聯(lián)系。
如圖10所示,為本發(fā)明提供的一種用于多人視頻通話的服務(wù)器實(shí)施例5的結(jié)構(gòu)示意圖,服務(wù)器分配有n個(gè)邏輯計(jì)算單元1001,標(biāo)記為c1、c2、…cn,其中,n為參與多人視頻通話的終端設(shè)備數(shù)量,其中:
解碼模塊10011,用于對(duì)當(dāng)前接收到的第一終端設(shè)備上傳的每條視頻流進(jìn)行解碼,得到每條視頻流對(duì)應(yīng)的圖像塊;
對(duì)于編號(hào)為i(i=1,2,…,n)的邏輯計(jì)算單元ci,首先對(duì)當(dāng)前接收到的第i路用戶終端設(shè)備上傳的任意一條視頻流進(jìn)行解碼,將解碼后得到的每條視頻流對(duì)應(yīng)的圖像塊標(biāo)記為ii。
幀內(nèi)預(yù)測和幀間預(yù)測模塊10012,用于對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果;
邏輯計(jì)算單元ci對(duì)解碼后得到的圖像塊進(jìn)行幀內(nèi)預(yù)測和幀間預(yù)測,生成預(yù)測結(jié)果pi,其中,預(yù)測結(jié)果可包含分塊模式、運(yùn)動(dòng)矢量等。
存儲(chǔ)模塊10013,用于將預(yù)測結(jié)果存儲(chǔ)至共享內(nèi)存,共享內(nèi)存為n個(gè)邏輯計(jì)算單元均能訪問到的內(nèi)存;
將預(yù)測結(jié)果pi存儲(chǔ)到所有邏輯計(jì)算單元都可以訪問到的共享內(nèi)存中。
第一邏輯計(jì)算單元1001基于第一終端設(shè)備上傳的每條視頻流的順序,對(duì)接收到的所有視頻流進(jìn)行合成,生成合成圖像,其中,每條視頻流構(gòu)成所述合成圖像中的一個(gè)圖像子區(qū)域;
每個(gè)邏輯計(jì)算單元ci根據(jù)個(gè)性化的布局,即將n路終端設(shè)備上傳的視頻流按照預(yù)設(shè)的順序進(jìn)行排列,對(duì)視頻流進(jìn)行合成,生成合成圖像cii。
記錄模塊10014,用于記錄合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系;
得到合成圖像cii后,同時(shí)需要記錄每個(gè)圖像子區(qū)域(每個(gè)圖像子區(qū)域?qū)?yīng)于一路原始視頻流)與各原始視頻流,即終端設(shè)備上傳的視頻流的對(duì)應(yīng)關(guān)系。
確定模塊10015,用于基于記錄的合成圖像中的每個(gè)圖像子區(qū)域與第一終端設(shè)備上傳的每條視頻流的對(duì)應(yīng)關(guān)系,確定每個(gè)圖像子區(qū)域?qū)?yīng)的第一終端設(shè)備上傳的視頻流的編號(hào);
對(duì)于每個(gè)圖像子區(qū)域,首先根據(jù)記錄的合成圖像中每個(gè)圖像子區(qū)域與終端設(shè)備上傳的視頻流的對(duì)應(yīng)關(guān)系,找到對(duì)應(yīng)的終端設(shè)備上傳的視頻流編號(hào)。
查找模塊10016,用于基于視頻流的編號(hào)從共享內(nèi)存中查找出視頻流的幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果;
然后根據(jù)視頻流的編號(hào)從共享內(nèi)存中找到已經(jīng)計(jì)算好的與編號(hào)對(duì)應(yīng)的視頻流的幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果。
編碼模塊10017,用于基于幀內(nèi)預(yù)測結(jié)果和幀間預(yù)測結(jié)果完成圖像編碼;
根據(jù)視頻流編號(hào)、幀內(nèi)預(yù)測和幀間預(yù)測結(jié)果,通過計(jì)算預(yù)測值、對(duì)殘差進(jìn)行變換、量化、熵編碼等完成圖像編碼。
輸出模塊10018,用于輸出圖像編碼后的合成流。
每個(gè)邏輯計(jì)算單元ci對(duì)合成流cii中的每個(gè)圖像子區(qū)域進(jìn)行圖像編碼,每個(gè)邏輯計(jì)算單元ci輸出編碼后的合成流。
本文方法與原有方法的計(jì)算量比較如下,解碼n路視頻流的計(jì)算量記為cd,合成n路視頻流的計(jì)算量記為cc,而編碼n路視頻的計(jì)算量記為ce。原有方法的計(jì)算量大致如下:cold=n×(cd+cc+ce)≈n×ce;
根據(jù)業(yè)界公認(rèn)的標(biāo)準(zhǔn),幀內(nèi)預(yù)測和幀間預(yù)測部分計(jì)算大致為整個(gè)圖像編碼任務(wù)的1/2。
而通過本發(fā)明的方法的計(jì)算量大致為:
兩者的計(jì)算量比值:
當(dāng)n=3時(shí),r值約為2/3;當(dāng)n=4時(shí),r值約為5/8;當(dāng)n越大時(shí),該值越接近1/2,即本文算法將計(jì)算量降低到原來的1/2左右。
綜上所述,本發(fā)明對(duì)合成和編碼流水線進(jìn)行了優(yōu)化,將視頻編碼中的預(yù)測階段提前,每個(gè)邏輯計(jì)算單元分別計(jì)算1路原始視頻流的幀內(nèi)/幀間預(yù)測任務(wù),在編碼合成流時(shí),每路合成流的編碼器直接利用所有圖像子區(qū)域的預(yù)測結(jié)果,完成剩余的編碼操作,顯著降低了整個(gè)系統(tǒng)的計(jì)算量。
本實(shí)施例方法所述的功能如果以軟件功能單元的形式實(shí)現(xiàn)并作為獨(dú)立的產(chǎn)品銷售或使用時(shí),可以存儲(chǔ)在一個(gè)計(jì)算設(shè)備可讀取存儲(chǔ)介質(zhì)中。基于這樣的理解,本發(fā)明實(shí)施例對(duì)現(xiàn)有技術(shù)做出貢獻(xiàn)的部分或者該技術(shù)方案的部分可以以軟件產(chǎn)品的形式體現(xiàn)出來,該軟件產(chǎn)品存儲(chǔ)在一個(gè)存儲(chǔ)介質(zhì)中,包括若干指令用以使得一臺(tái)計(jì)算設(shè)備(可以是個(gè)人計(jì)算機(jī),服務(wù)器,移動(dòng)計(jì)算設(shè)備或者網(wǎng)絡(luò)設(shè)備等)執(zhí)行本發(fā)明各個(gè)實(shí)施例所述方法的全部或部分步驟。而前述的存儲(chǔ)介質(zhì)包括:u盤、移動(dòng)硬盤、只讀存儲(chǔ)器(rom,read-onlymemory)、隨機(jī)存取存儲(chǔ)器(ram,randomaccessmemory)、磁碟或者光盤等各種可以存儲(chǔ)程序代碼的介質(zhì)。
本說明書中各個(gè)實(shí)施例采用遞進(jìn)的方式描述,每個(gè)實(shí)施例重點(diǎn)說明的都是與其它實(shí)施例的不同之處,各個(gè)實(shí)施例之間相同或相似部分互相參見即可。
對(duì)所公開的實(shí)施例的上述說明,使本領(lǐng)域?qū)I(yè)技術(shù)人員能夠?qū)崿F(xiàn)或使用本發(fā)明。對(duì)這些實(shí)施例的多種修改對(duì)本領(lǐng)域的專業(yè)技術(shù)人員來說將是顯而易見的,本文中所定義的一般原理可以在不脫離本發(fā)明的精神或范圍的情況下,在其它實(shí)施例中實(shí)現(xiàn)。因此,本發(fā)明將不會(huì)被限制于本文所示的這些實(shí)施例,而是要符合與本文所公開的原理和新穎特點(diǎn)相一致的最寬的范圍。