該比特流分別發(fā)送給合并輸出模塊和其他計(jì)算子系統(tǒng)的并行解碼器;
[0055]314)并行HEVC視頻編碼器將比例縮放和量化后的數(shù)據(jù)同時(shí)發(fā)送給編碼幀內(nèi)估計(jì)模塊和編碼幀內(nèi)預(yù)測(cè)模塊,同時(shí)結(jié)合幀內(nèi)預(yù)測(cè)數(shù)據(jù)產(chǎn)生幀內(nèi)預(yù)測(cè)值。
[0056]步驟3)中的幀間預(yù)測(cè)包括以下步驟:
[0057]321)并行HEVC視頻編碼器在編碼器控制模塊控制下,獲取當(dāng)前待編碼的CTU幀單元信息;
[0058]322)并行解碼器根據(jù)解碼器控制模塊的控制下,其他計(jì)算子系統(tǒng)對(duì)應(yīng)線程中的CTU幀單元的編碼比特流,在熵解碼模塊中進(jìn)行解碼,進(jìn)行比例縮放和反變換后發(fā)送給解碼去塊效應(yīng)及取樣適應(yīng)偏置濾波模塊產(chǎn)生當(dāng)前CTU幀單元的預(yù)測(cè)幀,并且通過參考幀緩存器發(fā)送給并行HEVC視頻編碼器中的編碼運(yùn)動(dòng)估計(jì)模塊和編碼運(yùn)動(dòng)補(bǔ)償模塊,用以產(chǎn)生幀間預(yù)測(cè)值;
[0059]323)并行HEVC視頻編碼器將當(dāng)前待編碼的CTU幀單元信息與幀間預(yù)測(cè)值產(chǎn)生殘差后,進(jìn)行比例縮放和量化并發(fā)送到熵編碼模塊中進(jìn)行編碼,產(chǎn)生當(dāng)前待編碼的CTU幀單元的編碼比特流,并將該比特流分別發(fā)送給合并輸出模塊和其他計(jì)算子系統(tǒng)的并行解碼器;
[0060]324)并行HEVC視頻編碼器將比例縮放和量化后的數(shù)據(jù)同時(shí)發(fā)送給編碼運(yùn)動(dòng)估計(jì)模塊和編碼運(yùn)動(dòng)補(bǔ)償模塊,同時(shí)結(jié)合幀間預(yù)測(cè)數(shù)據(jù)產(chǎn)生幀間預(yù)測(cè)值。
[0061]并行HEVC編碼方法中的編碼方式包括OWF方式、WPP方式、Tiles方式和Slices方式,這些并行編碼方式都是將當(dāng)前編碼幀劃分為多個(gè)不相重疊的區(qū)域,每一個(gè)區(qū)域采用一個(gè)線程進(jìn)行編碼,從而將原來單線程順序編碼轉(zhuǎn)換為多線程并行編碼,提高編碼速度。
[0062]分布式計(jì)算機(jī)系統(tǒng)共有N個(gè)計(jì)算子系統(tǒng)參與對(duì)當(dāng)前輸入視頻序列的并行編碼,當(dāng)前幀劃分為M個(gè)不重疊區(qū)域,由HEVC編碼器并發(fā)M個(gè)線程對(duì)當(dāng)前幀進(jìn)行并行編碼。本發(fā)明方法的每一個(gè)子系統(tǒng)都包含一個(gè)并行解碼模塊和一個(gè)并行HEVC編碼模塊:并行解碼模塊的作用是對(duì)其它子系統(tǒng)的編碼比特流進(jìn)行解碼重建其它子系統(tǒng)編碼的CTU,供該子系統(tǒng)的并行HEVC編碼模塊進(jìn)行幀內(nèi)預(yù)測(cè)和進(jìn)行去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波,并用于在該子系統(tǒng)中形成完整的幀間預(yù)測(cè)用參考幀,供后續(xù)幀間預(yù)測(cè)編碼使用;并行HEVC編碼模塊的作用是運(yùn)行分配到該子系統(tǒng)的一個(gè)或多個(gè)并發(fā)編碼線程進(jìn)行編碼。每一個(gè)子系統(tǒng)的并行HEVC編碼模塊輸出的編碼比特流將通過子系統(tǒng)間的互連網(wǎng)絡(luò)傳輸?shù)狡渌酉到y(tǒng),以便其它子系統(tǒng)能夠用并行解碼模塊對(duì)當(dāng)前編碼幀進(jìn)行完全重建,輸出到其它子系統(tǒng)的參考幀緩存中,做為后續(xù)幀間預(yù)測(cè)編碼的參考幀。同時(shí)每一個(gè)子系統(tǒng)的并行HEVC編碼模塊輸出的編碼比特流將輸出到一個(gè)比特流合并輸出模塊。該模塊可以位于分布式計(jì)算機(jī)系統(tǒng)中任何一個(gè)合適的子系統(tǒng)中。比特流合并輸出模塊將對(duì)各子系統(tǒng)輸出的編碼比特流進(jìn)行合并,并加上相應(yīng)的語法元素形成最終輸出的符合HEVC標(biāo)準(zhǔn)的視頻編碼比特流。
[0063]本發(fā)明方法中的各子系統(tǒng)編碼運(yùn)行原理如下。假設(shè)子系統(tǒng)分配到K個(gè)并行編碼線程。則該子系統(tǒng)會(huì)并發(fā)K個(gè)視頻編碼線程進(jìn)行HEVC視頻編碼。
[0064]假設(shè)子系統(tǒng)分配到的第i個(gè)線程對(duì)當(dāng)前幀第i個(gè)區(qū)域進(jìn)行編碼。
[0065]子系統(tǒng)的并行解碼模塊由標(biāo)準(zhǔn)的HEVC解碼器的各模塊構(gòu)成主要包括:熵解碼模塊、比例縮放和反變換模塊、幀內(nèi)/幀間選擇模塊、運(yùn)動(dòng)補(bǔ)償模塊、幀內(nèi)預(yù)測(cè)模塊、去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波模塊和解碼器控制模塊等。與傳統(tǒng)HEVC解碼器的主要區(qū)別在于:
[0066]1.并行解碼模塊對(duì)其它子系統(tǒng)的已編碼CTU經(jīng)HEVC解碼后得到相應(yīng)的CTU圖像數(shù)據(jù)。這些CTU圖像數(shù)據(jù)經(jīng)過去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波后輸出到參考幀緩存,和該子系統(tǒng)并行HEVC編碼模塊中去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波模塊輸出的當(dāng)前幀中的重建CTU圖像數(shù)據(jù)合并形成當(dāng)前編碼幀的重建圖像,做為后續(xù)幀間預(yù)測(cè)編碼時(shí)的參考幀;
[0067]2.并行解碼模塊解碼得到的其它子系統(tǒng)編碼的當(dāng)前幀的CTU圖像數(shù)據(jù)在未經(jīng)過去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波時(shí)將直接輸出給該子系統(tǒng)的并行HEVC編碼模塊,以便該子系統(tǒng)的并行HEVC編碼模塊對(duì)其編碼圖像區(qū)域和其它子系統(tǒng)編碼圖像區(qū)域相鄰的邊界部分進(jìn)行編碼時(shí)可以利用這些CTU圖像數(shù)據(jù)進(jìn)行幀內(nèi)預(yù)測(cè)、去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波,如圖4中箭頭A所指的從并行解碼模塊向線程i視頻編碼模塊進(jìn)行的數(shù)據(jù)傳輸;
[0068]3.該子系統(tǒng)并行解碼模塊在對(duì)其它子系統(tǒng)編碼區(qū)域邊界部分進(jìn)行解碼時(shí),其中幀內(nèi)預(yù)測(cè)和去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波可直接使用該子系統(tǒng)中并行HEVC編碼模塊中對(duì)該子系統(tǒng)編碼CTU進(jìn)行重建的圖像數(shù)據(jù),如圖4中箭頭A所指的從線程i視頻編碼模塊向并行編碼模塊進(jìn)行的數(shù)據(jù)傳輸。
[0069]并行HEVC編碼模塊與傳統(tǒng)的HEVC編碼器的主要區(qū)別在于:
[0070]1.熵編碼模塊根據(jù)具體編碼模式配置,在WPP和OWF并行方式下,將該線程熵編碼的上下文模型參數(shù)傳輸給該子系統(tǒng)的根據(jù)HEVC標(biāo)準(zhǔn)依編碼次序隨后啟動(dòng)的編碼緊鄰區(qū)域的并行編碼線程和其它子系統(tǒng)的根據(jù)HEVC標(biāo)準(zhǔn)依編碼次序隨后啟動(dòng)的編碼緊鄰區(qū)域的并行編碼線程,以便其它并行編碼線程進(jìn)行熵編碼;
[0071]2.編碼器控制模塊可接收該子系統(tǒng)編碼緊鄰區(qū)域的根據(jù)HEVC標(biāo)準(zhǔn)在該線程之前啟動(dòng)的并行編碼線程和其它子系統(tǒng)編碼緊鄰區(qū)域的根據(jù)HEVC標(biāo)準(zhǔn)在該線程之前啟動(dòng)的并行編碼線程的編碼控制參數(shù)和熵編碼上下文模型參數(shù),并利用其它并行編碼線程和其它子系統(tǒng)并行編碼線程的熵編碼上下文模型參數(shù)控制調(diào)整該線程熵編碼模塊的上下文模型;
[0072]3.編碼器控制模塊可將該并行線程編碼器的編碼參數(shù)傳輸給該子系統(tǒng)的其它并行編碼線程和其它子系統(tǒng)的并行編碼線程,以便進(jìn)行碼率控制和率失真控制等控制;
[0073]4.幀內(nèi)預(yù)測(cè)模塊、幀內(nèi)估計(jì)模塊和去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波模塊可直接使用該子系統(tǒng)并行解碼模塊的CTU圖像重建數(shù)據(jù)進(jìn)行幀內(nèi)預(yù)測(cè)、估計(jì)和去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波,從并行解碼模塊向線程i視頻編碼模塊進(jìn)行的數(shù)據(jù)傳輸;
[0074]5.該并行線程編碼模塊重建的CTU圖像數(shù)據(jù)經(jīng)過去塊效應(yīng)濾波和取樣適應(yīng)偏置濾波后將數(shù)據(jù)存放于參考幀緩存中對(duì)應(yīng)于當(dāng)前幀第i個(gè)區(qū)域的位置,以便和該子系統(tǒng)其它并行線程編碼模塊的輸出重建圖像數(shù)據(jù)以及并行解碼模塊輸出的重建圖像數(shù)據(jù)合并形成當(dāng)前幀的重建幀,做為后續(xù)幀間預(yù)測(cè)編碼的參考幀。
[0075]如圖5所示,下面以采用WPP方式進(jìn)行并行HEVC編碼為例對(duì)本發(fā)明方法進(jìn)行舉例說明。
[0076]進(jìn)行WPP方式編碼時(shí),視頻幀中并行編碼區(qū)域的劃分可采取任何按符合HEVC標(biāo)準(zhǔn)規(guī)定劃分方法進(jìn)行劃分。在此實(shí)施說明中假設(shè)一個(gè)圖像幀劃分為一個(gè)Slice。WPP并行編碼方式將Slice內(nèi)的CTU按行劃分,每一行用一個(gè)線程進(jìn)行編碼。圖中給出了視頻圖像一幀只劃分為一個(gè)Slice情況下的不意圖。圖中的視頻幀圖像包含4行CTU,每一行CTU米用一個(gè)線程進(jìn)行編碼,線程編號(hào)和CTU行號(hào)相同。同時(shí)假設(shè)當(dāng)前編碼幀為視頻圖像序列中的第j幀編碼幀,前面的編碼幀已完成編碼。
[0077]根據(jù)HEVC標(biāo)準(zhǔn),在WPP并行編碼時(shí),第一行的CTU按照正常方式進(jìn)行編碼;第二行開始其后的每一行編碼在前一行前兩個(gè)CTU編碼完成后開始進(jìn)行編碼。第二行開始其后每行的熵編碼的上下文模型根據(jù)需要根據(jù)前一行已編碼完的兩個(gè)CTU的上下文模型得出。
[0078]對(duì)于WPP并行編碼采用本發(fā)明的方法時(shí),每個(gè)子系統(tǒng)可分配一個(gè)編碼線程也可分配多個(gè)編碼線程。當(dāng)子系統(tǒng)分配多個(gè)編碼線程時(shí),在一個(gè)子系統(tǒng)上的多個(gè)編碼線程之間的協(xié)調(diào)運(yùn)行按照通常的多核系統(tǒng)并行編碼方式運(yùn)行。而多個(gè)子系統(tǒng)間編碼線程之間的協(xié)調(diào)運(yùn)行按照本發(fā)明所提供的方法進(jìn)行協(xié)調(diào)運(yùn)行。下面以每個(gè)子系統(tǒng)分配一個(gè)編碼線程為例說明本發(fā)明提供的子系統(tǒng)間編碼線程協(xié)調(diào)運(yùn)行的方法。
[0079]假設(shè)整個(gè)系統(tǒng)配置如下:需要編碼的視頻圖像共有N行CTU,分布式計(jì)算機(jī)系統(tǒng)共有N+1個(gè)子系統(tǒng),其中有N個(gè)編碼子系統(tǒng)負(fù)責(zé)進(jìn)行編碼,I個(gè)合并子系統(tǒng)專門負(fù)責(zé)各子系統(tǒng)編碼后的比特流合并,該合并子系統(tǒng)功能也放在任意一計(jì)算能力合適的編碼子系統(tǒng)中進(jìn)行完成。假設(shè)第i個(gè)編碼子系統(tǒng)分配到第i個(gè)WPP編碼線程,在對(duì)當(dāng)前幀開始編碼前,每一個(gè)子系統(tǒng)都已經(jīng)存儲(chǔ)所需編碼的當(dāng)前輸入視頻幀,并已經(jīng)通過對(duì)其它子系統(tǒng)編碼視頻碼流進(jìn)行解碼獲得所有參考幀圖像數(shù)據(jù)。
[0080]編碼子系統(tǒng)中并行HEVC編碼模塊運(yùn)行如下:
[0081]對(duì)輸入視頻當(dāng)前編碼幀進(jìn)行編碼時(shí)從第I個(gè)子系統(tǒng)開始編碼,第I個(gè)子系統(tǒng)對(duì)第I行CTU進(jìn)行編碼,編碼后的比特流通過子系統(tǒng)間的互連網(wǎng)絡(luò)傳輸給其它子系統(tǒng),并將熵編碼的上下文模型參數(shù)通過互連網(wǎng)絡(luò)傳輸給第2個(gè)子系統(tǒng);當(dāng)?shù)诙€(gè)子系統(tǒng)獲得第I行第二個(gè)CTU熵編碼的上下文模型參數(shù)后開始按照WPP方式進(jìn)行第二行CTU的編碼,編碼后的比特流通過子系統(tǒng)間的互連網(wǎng)絡(luò)傳輸給其它子系統(tǒng),并將熵編碼的上下文模型參數(shù)通過互連網(wǎng)絡(luò)傳輸給第3個(gè)子系統(tǒng);第3個(gè)子系統(tǒng)及以后的子系統(tǒng)在獲得前一個(gè)行第二個(gè)CTU熵編碼的上下文模型參數(shù)后開始按照WPP方式進(jìn)行第該子系統(tǒng)對(duì)應(yīng)行的CTU的編碼,編碼后的比特流通過子系統(tǒng)間的互連網(wǎng)絡(luò)傳輸給其它子系統(tǒng),并將熵編碼的上下文模型參數(shù)通過互連網(wǎng)絡(luò)傳輸給下一個(gè)子系統(tǒng)。同時(shí)各子系統(tǒng)中的并行HEVC編碼模塊對(duì)該子系統(tǒng)編碼的CTU進(jìn)行重建,輸出到該子系統(tǒng)的參考幀緩存中當(dāng)前重建幀對(duì)應(yīng)的CTU位置。如果當(dāng)前編碼幀的CTU進(jìn)行的是幀內(nèi)預(yù)測(cè)編碼,則第i行的幀內(nèi)預(yù)測(cè)的參考數(shù)據(jù)是第i_l行CTU的重建數(shù)據(jù),需要從該子系統(tǒng)其它并行子系統(tǒng)碼