專利名稱::視頻編碼器和編碼方法
技術(shù)領(lǐng)域:
:本發(fā)明涉及視頻編碼領(lǐng)域,特別涉及一種視頻編碼器和編碼方法。
背景技術(shù):
:視頻是指由一系列時間上相關(guān)的圖像組成的序列。其中的每幅圖像稱為一個幀,每個幀又可以劃分為若干個塊,通常塊為正方形或矩形,視頻編碼以塊為基本單位進行編碼,視頻編碼中常用的塊有16X16,8X16,16X8,8X8,4X4等,這些塊的大小都是以像素為單位,像素則是指構(gòu)成圖像的點,是構(gòu)成圖像的最小單元,亞像素是通過整像素進行插值濾波產(chǎn)生的,如1/2或1/4像素等。視頻編碼塊按照所承載的信息類別又可分為亮度塊和色度塊,在主流的視頻編碼標(biāo)準(zhǔn)中通常把按照一定比例組成的亮度塊和色度塊的集合稱為一個宏塊。如圖l(a)所示,對于4:2:0格式的圖像,每個宏塊的大小為16X16,可以包括l個16X16的亮度塊,以及2個8X8的色度塊。視頻編碼是指在給定的碼率帶寬下,在保持一定的視頻圖像質(zhì)量的前提下,有效的減少表達(dá)視頻信息所需數(shù)據(jù)量的技術(shù),它以視頻信號的高度相關(guān)性和人眼的視覺特性為出發(fā)點,通過恰當(dāng)?shù)木幋a方式,來消除各種相關(guān)性和人眼特性所產(chǎn)生的冗余。隨著人們對視頻的需求越來越大,對編碼速度的要求也就越來越高。為了滿足實時編碼視頻的需求,現(xiàn)有技術(shù)中的視頻編碼器采用了宏塊級的VLSI(VeryLargeScaleintergratedCircuit)體系結(jié)構(gòu)。參見圖1(b),該VLSI體系結(jié)構(gòu)為四級流水,包括了五個主要功能模塊,包括整像素運動估計模塊,亞像素運動估計模塊,幀內(nèi)預(yù)測、變換和量化模塊,熵編碼模塊以及環(huán)路去塊效應(yīng)濾波模塊。輸入圖像所承載的原始視頻數(shù)據(jù),經(jīng)過整像素運動估計、亞像素運動估計的處理以及幀內(nèi)預(yù)測編碼的各模式處理,由特定的模式選擇算法決定預(yù)測編碼的模式,并將待編碼數(shù)據(jù)與重建圖像參考數(shù)據(jù)按照某種算法得到的殘差進行變換編碼以及量化,最后進行熵編碼,輸出碼流。同時,還需要對量化后的數(shù)據(jù)進行反量化和反變換以得到重建數(shù)據(jù)作為下一段待編碼數(shù)據(jù)的參考圖像數(shù)據(jù)。其中環(huán)路濾波一般是可選的增強技術(shù),由于變換以及量化等都是以塊為單位進行,因此重建的圖像在塊的邊界可能會出現(xiàn)不連續(xù),形成重建圖象的明顯缺陷,特別是當(dāng)量化粗糙的時候尤為明顯,這種現(xiàn)象稱為塊效應(yīng)。為了去除塊效應(yīng),部分視頻編碼算法中可以對重建圖像以整幀為單位進行環(huán)路濾波,以獲得更好的參考幀質(zhì)量,供幀間預(yù)測參考。其中整像素運動估計模塊作為第一級流水級、亞像素運動估計模塊作為第二級流水級,幀內(nèi)預(yù)測、變換/量化模塊作為第三級流水級,熵編碼模塊和環(huán)路去塊效應(yīng)濾波模塊可以并行執(zhí)行,作為第四級流水級。在對現(xiàn)有技術(shù)進行分析后,發(fā)明人發(fā)現(xiàn)現(xiàn)有技術(shù)至少具有如下缺點現(xiàn)有技術(shù)中流水級之間的數(shù)據(jù)交互,主要利用總線或共享內(nèi)存,但不論共享內(nèi)存還是總線,都需要通過時分復(fù)用的方式來被多個模塊訪問,這樣就可能使得一些模塊在需要訪問共享內(nèi)存或者總線時需要等待其他模塊釋放共享內(nèi)存或總線的使用權(quán),使得處理效率嚴(yán)重降低,影響了整個編碼器運行的流暢程度,影響了數(shù)據(jù)處理的速度。數(shù)據(jù)通路上缺少獨立的數(shù)據(jù)加載模塊流水級,增加了第一級流水級的負(fù)擔(dān),因此,較為明顯的影響了流水線的吞吐率,減慢了數(shù)據(jù)處理的速度。
發(fā)明內(nèi)容本發(fā)明實施例提供了一種視頻編碼器和編碼方法。所述技術(shù)方案如下—種視頻編碼器,包括數(shù)據(jù)加載模塊,用于讀入待編碼宏塊和重建圖像參考數(shù)據(jù),將讀入的待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第一存儲模塊;所述第一存儲模塊,用于接收并存儲所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);整像素運動估計模塊,用于讀取所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述待編碼宏塊進行整像素級運動搜索,得到整像素運動估計信息,將所述整像素運動估計信息,所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第二存儲模塊;所述第二存儲模塊,用于接收并存儲所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);亞像素運動估計模塊,用于讀取所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行亞像素插值濾波和亞像素級運動搜索,得到亞像素運動估計信息,將所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第三存儲模塊;所述第三存儲模塊,用于接收并存儲所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);綜合處理模塊,用于讀取所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行幀內(nèi)預(yù)測,結(jié)合所述亞像素運動估計信息,得到預(yù)測殘差和表征編碼方式的輔助信息,對所述預(yù)測殘差變換和量化,掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu)和所述表征編碼方式的輔助信息,將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊;所述第四存儲模塊,用于接收并存儲所述轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息;熵編碼模塊,用于讀取所述殘差數(shù)據(jù)和所述表征編碼方式的輔助信息,進行熵編碼,將得到的二進制碼流輸出。所述編碼器還包括環(huán)路濾波模塊,用于對所述重建圖像參考數(shù)據(jù)進行環(huán)路濾波。所述綜合處理模塊還包括反變換量化單元,用于將量化后的殘差塊進行反量化,反變換,結(jié)合指定塊的數(shù)據(jù)形成重建圖像。所述綜合處理模塊還包括第一存儲單元,用于將所述重建圖像存入外部存儲器;第二存儲單元,用于將所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中;由所述熵編碼模塊通過所述第四存儲模塊的端口讀出,并將所述重建圖像存入所述外部存儲器;第三存儲單元,用于將所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中,由所述環(huán)路濾波模塊通過所述第四存儲模塊的端口讀出,并對所述重建圖像進行環(huán)路濾波后,存入所述外部存儲器。所述編碼器還包括第一掃描單元,用于掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊;第二掃描單元,用于掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給所述熵編碼模塊。所述編碼器中的各個模塊之間還傳遞包括但不限于編碼端預(yù)設(shè)參數(shù)的數(shù)據(jù)?!N視頻編碼方法,包括數(shù)據(jù)加載模塊讀入待編碼宏塊和重建圖像參考數(shù)據(jù);所述數(shù)據(jù)加載模塊將讀入的待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第一存儲模塊;所述第一存儲模塊接收并存儲所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);整像素運動估計模塊讀取所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述待編碼宏塊進行整像素級運動搜索,得到整像素運動估計信息,將所述整像素運動估計信息,所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第二存儲模塊;所述第二存儲模塊接收并存儲所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);亞像素運動估計模塊讀取所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行亞像素插值濾波和亞像素級運動搜索,得到亞像素運動估計信息,將所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第三存儲模塊;所述第三存儲模塊接收并存儲所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);所述綜合處理模塊讀取所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行幀內(nèi)預(yù)測,結(jié)合所述亞像素運動估計信息,得到預(yù)測殘差和表征編碼方式的輔助信息,對所述預(yù)測殘差變換和量化,掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息發(fā)送給第四存儲模塊;所述第四存儲模塊接收并存儲所述轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息;所述熵編碼模塊讀取所述殘差數(shù)據(jù)和所述表征編碼方式的輔助信息,進行熵編碼,將得到的二進制碼流輸出。所述預(yù)測殘差變換和量化之后還包括將量化后的殘差塊進行反量化,反變換,結(jié)合指定塊的數(shù)據(jù)形成重建圖像。所述重建圖像存入外部存儲器;或,所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中;由所述熵編碼模塊通過所述第四存儲模塊的端口讀出,并將所述重建圖像存入所述外部存儲器;或,將所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中,由所述環(huán)路濾波模塊通過所述第四存儲模塊的端口讀出,并對所述重建圖像進行環(huán)路濾波后,存入所述外部存儲器。所述熵編碼模塊接收所述第四存儲模塊發(fā)送的殘差數(shù)據(jù)之前,還包括掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊;或,掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給所述熵編碼模塊。所述第四存儲模塊接收并存儲所述轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息,之后還包括環(huán)路濾波模塊對所述重建圖像參考數(shù)據(jù)以整幀為單位進行環(huán)路濾波,并將濾波后的重建圖像參考數(shù)據(jù)存入外部存儲器。所述編碼器中的各個模塊之間還傳遞包括但不限于編碼端預(yù)設(shè)參數(shù)的數(shù)據(jù)。本發(fā)明實施例提供的技術(shù)方案的有益效果是本發(fā)明改進了視頻編碼器中的流水級結(jié)構(gòu),包括,增加了獨立的數(shù)據(jù)加載模塊,流水級之間以及流水級與外部存儲器之間采用雙端口存儲器模塊進行數(shù)據(jù)交互,克服了原有利用總線或共享內(nèi)存進行數(shù)據(jù)交互所導(dǎo)致的低效率問題,簡化了數(shù)據(jù)交互的控制邏輯,提高了流水級之間數(shù)據(jù)傳輸?shù)乃俣取T撘曨l編碼器的級間數(shù)據(jù)交互均在宏塊級進行,數(shù)據(jù)結(jié)構(gòu)一致,簡化了控制流程,有效的提高吞吐率以及降低延遲,可以對高清視頻源進行實時的編碼。為了更清楚地說明本發(fā)明實施例或現(xiàn)有技術(shù)中的技術(shù)方案,下面將對實施例或現(xiàn)有技術(shù)描述中所需要使用的附圖作簡單地介紹,顯而易見地,下面描述中的附圖僅僅是本發(fā)明的一些實施例,對于本領(lǐng)域普通技術(shù)人員來講,在不付出創(chuàng)造性勞動性的前提下,還可以根據(jù)這些附圖獲得其他的附圖。圖l(a)是現(xiàn)有技術(shù)提供的4:2:0圖像格式的亮度與色度組合示意圖;圖1(b)是現(xiàn)有技術(shù)提供的一種編碼方法的示意圖;圖2是本發(fā)明實施例1提供的一種視頻編碼器的結(jié)構(gòu)示意圖;圖3是本發(fā)明實施例2提供的一種視頻編碼方法的方法流程圖;圖4是本發(fā)明實施例2提供的一種視頻編碼方法的宏塊級流水示意圖;圖5是本發(fā)明實施例2提供的一種視頻編碼方法中1/4亞像素精度插值示意圖。具體實施例方式為使本發(fā)明的目的、技術(shù)方案和優(yōu)點更加清楚,下面將結(jié)合附圖對本發(fā)明實施方式作進一步地詳細(xì)描述。實施例1為了提高編碼時數(shù)據(jù)處理的效率,本發(fā)明實施例提供了一種視頻編碼器,參見圖2,該編碼器包括數(shù)據(jù)加載模塊201,用于讀入待編碼宏塊和重建圖像參考數(shù)據(jù),將讀入的待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第一存儲模塊202;第一存儲模塊202,用于接收并存儲數(shù)據(jù)加載模塊201發(fā)送的待編碼宏塊和重建圖像參考數(shù)據(jù);整像素運動估計模塊203,用于讀取第一存儲模塊202中的待編碼宏塊和重建圖像參考數(shù)據(jù),根據(jù)待編碼宏塊進行整像素級運動搜索,得到整像素運動估計信息,將整像素運動估計信息,待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第二存儲模塊204;第二存儲模塊204,用于接收并存儲整像素運動估計模塊203發(fā)送的整像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù);亞像素運動估計模塊205,用于讀取第二存儲模塊204中的整像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù),根據(jù)整像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù),進行亞像素插值濾波和亞像素級運動搜索,得到亞像素運動估計信息,將亞像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第三存儲模塊206;第三存儲模塊206,用于接收并存儲亞像素運動估計模塊205發(fā)送的亞像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù);綜合處理模塊207,用于讀取第三存儲模塊206中的亞像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù),進行幀內(nèi)預(yù)測,結(jié)合亞像素運動估計信息,得到預(yù)測殘差和表征編碼方式的輔助信息,對預(yù)測殘差變換和量化,掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)和表征編碼方式的輔助信息發(fā)送給第四存儲模塊208;綜合處理模塊207還包括反變換量化單元2071,用于將量化后的殘差塊進行反量化,反變換,結(jié)合指定塊的數(shù)據(jù)形成重建圖像。第一存儲單元2072,用于將重建圖像存入外部存儲器;第二存儲單元2073,用于將重建圖像通過第四存儲模塊208的端口暫存在第四存儲模塊208中,由熵編碼模塊210通過第四存儲模塊208的端口讀出,并將重建圖像存入外部存儲器;第三存儲單元2074,用于將重建圖像通過第四存儲模塊208的端口暫存在第四存儲模塊208中,由環(huán)路濾波模塊209通過第四存儲模塊208的端口讀出,并對重建圖像進行環(huán)路濾波后,存入外部存儲器;第四存儲模塊208,用于接收并存儲綜合處理模塊207發(fā)送的轉(zhuǎn)換后的殘差數(shù)據(jù)和表征編碼方式的輔助信息;該編碼器進一步包括環(huán)路濾波模塊209,用于對重建圖像以整幀為單位進行環(huán)路濾波,以獲得更好的參考幀質(zhì)量,供幀間預(yù)測參考。熵編碼模塊210,用于讀取第四存儲模塊208中的轉(zhuǎn)換后的殘差數(shù)據(jù)和表征編碼方式的輔助信息,進行熵編碼,將得到的二進制碼流輸出。第一掃描單元2075,用于掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊208;第二掃描單元2101,用于掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給所述熵編碼模塊。需要說明的是,第一掃描單元2075和第二掃描單元2101執(zhí)行的"掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu)",既可以在綜合處理模塊207中進行,也可以在熵編碼模塊210中進行,該掃描過程只要在熵編碼之前進行即可。需要說明的是,若重建圖象參考數(shù)據(jù)通過第四存儲模塊208的端口暫存,則重建圖象參考數(shù)據(jù)既可以由環(huán)路濾波模塊209從第四存儲模塊208的端口讀出,并對其進行環(huán)路濾波后,存入外部存儲器,也可以在編碼器不選用環(huán)路濾波模塊209時,由熵編碼模塊210從第四存儲模塊208的端口讀出,并將重建圖像存入外部存儲器。需要說明的是,各個模塊在工作時所傳遞的數(shù)據(jù)還包括但不限于一些編碼時需要的設(shè)定參數(shù),這些預(yù)設(shè)參數(shù)可以用流水級之間逐級傳遞的方式傳遞,也可以將預(yù)設(shè)參數(shù)存儲在全局存儲器(或寄存器)中,某一級流水級使用時直接從全局存儲器(寄存器)中讀取。需要說明的是,本發(fā)明對幀模式和場模式的圖像都統(tǒng)一適用,所以不再區(qū)分幀和場,統(tǒng)一稱為幀。本發(fā)明改進了視頻編碼器中的流水級結(jié)構(gòu),包括,增加了獨立的數(shù)據(jù)加載模塊,流水級之間以及流水級與外部存儲器之間采用雙端口存儲器模塊進行數(shù)據(jù)交互,克服了原有利用總線或共享內(nèi)存進行數(shù)據(jù)交互所導(dǎo)致的低效率問題,簡化了數(shù)據(jù)交互的控制邏輯,提高了流水級之間數(shù)據(jù)傳輸?shù)乃俣?。該視頻編碼器的級間數(shù)據(jù)交互均在宏塊級進行,數(shù)據(jù)結(jié)構(gòu)一致,簡化了控制流程,有效的提高吞吐率以及降低延遲,可以對高清視頻源進行實時的編碼。實施例2為了提高編碼時數(shù)據(jù)處理的效率,本發(fā)明實施例提供了一種視頻編碼方法,參見圖3,該方法包括301:數(shù)據(jù)加載模塊201讀入待編碼宏塊和重建圖像參考數(shù)據(jù);其中,待編碼宏塊具體是指原始視頻數(shù)據(jù)中的待編碼宏塊,該重建圖像參考數(shù)據(jù)是與當(dāng)前接收的原始視頻數(shù)據(jù)中待編碼宏塊相對應(yīng)的。302:數(shù)據(jù)加載模塊201將讀入的待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第一存儲模塊202;303:第一存儲模塊202接收并存儲數(shù)據(jù)加載模塊201發(fā)送的待編碼宏塊和重建圖像參考數(shù)據(jù);304:整像素運動估計模塊203讀取第一存儲模塊202中存儲的待編碼宏塊和重建圖像參考數(shù)據(jù),根據(jù)該待編碼宏塊進行整像素級運動搜索,得到整像素運動估計信息,將該整像素運動估計信息,待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第二存儲模塊204;其中,整像素級運動搜索即是在多種不同預(yù)測模式下,在整像素級計算待編碼宏塊和某一個(或某幾個)參考幀(參考幀來自重建圖像參考數(shù)據(jù))在預(yù)設(shè)的搜索范圍內(nèi)的匹配程度(該匹配程度常用"絕對殘差和"表示),取每個預(yù)測模式中匹配程度最高的宏塊,作為該預(yù)測模式下的最佳匹配宏塊(即匹配程度最高的宏塊),將最佳匹配宏塊的相關(guān)信息作為整像素運動估計信息。其中,整像素運動估計信息包括整像素級運動搜索得到的運動矢量、匹配程度等信息。305:第二存儲模塊204接收并存儲整像素運動估計模塊203發(fā)送的整像素運動估計信息,待編碼宏塊和重建圖像參考數(shù)據(jù);306:亞像素運動估計模塊205讀取第二存儲模塊204中的整像素運動估計信息,根據(jù)該整像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù),進行亞像素插值濾波和亞像素級運動搜索,得到亞像素運動估計信息,將該亞像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第三存儲模塊206;其中,亞像素運動估計信息包括亞像素插值濾波和亞像素級運動搜索得到的運動矢量、匹配程度等信息。307:第三存儲模塊206接收并存儲亞像素運動估計模塊205發(fā)送的亞像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù);308:綜合處理模塊207讀取第三存儲模塊206中的亞像素運動估計信息、待編碼宏塊和重建圖像參考數(shù)據(jù),進行幀內(nèi)預(yù)測,結(jié)合亞像素運動估計得到的信息,形成預(yù)測殘差和表征編碼方式的輔助信息,對預(yù)測殘差變換和量化,掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)和表征編碼方式的輔助信息發(fā)送給第四存儲模塊208;具體地,將亞像素運動估計得到的最佳匹配塊的匹配程度與幀內(nèi)預(yù)測得到的預(yù)測塊的匹配程度,進行比較,得出最終的最佳匹配塊,選擇該最佳匹配塊對應(yīng)的預(yù)測方式,并根據(jù)待編碼宏塊與最佳匹配塊計算得到的殘差進行變化編碼(如離散余弦變換DCT等),按照預(yù)設(shè)的量化等級進行量化;其中,表征編碼方式的輔助信息包括表征預(yù)測方式的信息以及其他表征編碼方式的編信息,該輔助信息有些是編碼端設(shè)定的參數(shù),有些是幀內(nèi)預(yù)測和幀間預(yù)測進行模式選擇后的預(yù)測信息。其中,幀內(nèi)預(yù)測,是指在待編碼宏塊所在幀內(nèi),根據(jù)已經(jīng)編碼完畢的重建宏塊數(shù)據(jù),預(yù)測待編碼宏塊,并記錄預(yù)測方法以及預(yù)測得到的宏塊與待編碼宏塊的匹配程度,其預(yù)測方法有多種,本發(fā)明不做具體限定。其中,變換和量化的方法有多種,本發(fā)明不做具體限定。其中,亞像素運動估計的目的是減少待編碼宏塊與最佳匹配宏塊之間的殘差,降低碼率,提高壓縮效率,提高運動估計的精度。其中,掃描的方法有多種,本發(fā)明不做具體限定。進一步地,步驟308后還包括將量化后的殘差塊進行反量化,反變換,結(jié)合指定塊的數(shù)據(jù)形成重建圖像。重建圖像既可以存入外部存儲器;也可以通過第四存儲模塊的端口暫存在第四存儲模塊中,由熵編碼模塊通過第四存儲模塊的端口讀出,并存入外部存儲器。上述指定塊是指,亞像素運動估計得到的最佳匹配塊的匹配程度與幀內(nèi)預(yù)測得到的預(yù)測塊的匹配程度,進行比較,得到的匹配程度最高的塊,即最終的最佳匹配塊。309:第四存儲模塊208接收綜合處理模塊207發(fā)送轉(zhuǎn)換后的殘差數(shù)據(jù)和表征編碼方式的輔助信息,并將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給熵編碼模塊210;進一步地,環(huán)路濾波模塊209讀取重建圖像數(shù)據(jù),對重建圖像以整幀為單位進行環(huán)路濾波;其中,環(huán)路去塊效應(yīng)濾波是為了獲得更好的參考幀質(zhì)量,供幀間預(yù)測參考。需要說明的是,環(huán)路去塊效應(yīng)濾波是可選的增強技術(shù),如果選用環(huán)路去塊效應(yīng)濾波,則重建圖像先存入第四存儲模塊208中,然后經(jīng)過環(huán)路去塊效應(yīng)濾波后,再存入外部存儲器。如果不選用環(huán)路去塊效應(yīng)濾波,則重建圖像既可以直接存入外部存儲器,也可以通過第四存儲模塊的端口暫存,然后由熵編碼模塊從第四存儲模塊的讀出,并將重建圖象存入外部存儲器。310:熵編碼模塊210讀取第四存儲模塊208中的殘差數(shù)據(jù)和表征編碼方式的輔助信息,進行熵編碼,將得到的二進制碼流輸出。需要說明的是,執(zhí)行步驟308中的"掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu)",也可以在步驟309之后,步驟310之中進行,則有綜合處理模塊輸出量化后的宏塊,第四存儲模塊接收量化后的宏塊,將該宏塊發(fā)送給熵編碼模塊,熵編碼模塊掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),根據(jù)處理后的殘差數(shù)據(jù)進行熵編碼,將得到的二進制碼流輸出。以上步驟301-步驟310的過程中,編碼是一個宏塊級的流水編碼過程,在處理一個編碼圖像幀的多個宏塊時,各個模塊的工作是并行的,即各個模塊分為5級流水級進行工作,各個流水級在不同時間段所處理的宏塊可由下表所示。<table>tableseeoriginaldocumentpage13</column></row><table>為方便描述,按照宏塊編碼的次序,對當(dāng)前編碼圖像幀的所有宏塊從1開始依次進行編號,編號為N的宏塊記為"宏塊N"。本實施例中表達(dá)某模塊"處理第X個宏塊"時,如果第X個宏塊存在,則該模塊按實施例中所描述方法處理,如果第X個宏塊不存在(例如處理第N-3個宏塊,而N=1時),則指該模塊閑置不作處理。本發(fā)明實施例中用端口A和端口B來表示存儲模塊的兩個端口(一個存儲的情況下)或兩組端口(多個并列存儲的情況下)。同樣,本發(fā)明實施例所提到的模塊的輸入端口A和輸出端口B,可以是指一個端口,也可以是指并列的一組端口。如圖4所示,在第N個時間段,第一級流水級中,數(shù)據(jù)加載模塊通過外部存儲器控制,從外部存儲器中讀入待編碼宏塊,該待編碼宏塊為原始視頻中的宏塊N,通過第一存儲模塊的端口A寫入第一存儲模塊。同時,通過外部存儲器控制,從外部存儲器中讀入宏塊N對應(yīng)的重建圖像參考數(shù)據(jù),并通過第一存儲模塊的端口A寫入第一存儲模塊。如圖4所示,在第N個時間段,第二級流水級中,整像素運動估計模塊通過第一存儲模塊的端口B,從第一存儲模塊中讀出待編碼的宏塊N-1以及宏塊N-1對應(yīng)的重建圖像參考數(shù)據(jù),并按照多種不同的預(yù)測模式,根據(jù)讀出的數(shù)據(jù)進行整像素運動搜索,在整像素級計算出待編碼宏塊N-1和某一個(或某幾個)參考幀(參考幀來自重建圖像參考數(shù)據(jù))在一定的搜索范圍內(nèi)的匹配程度(該匹配程度常用絕對殘差和表示),取每個預(yù)測模式中匹配程度最高的宏塊,作為該預(yù)測模式下的最佳匹配宏塊(即匹配程度最高的宏塊)。并將待編碼宏塊數(shù)據(jù),重建圖像參考數(shù)據(jù)以及與最佳匹配塊相關(guān)的數(shù)據(jù)通過第二存儲模塊的端口A寫入第二存儲模塊。如圖4所示,在第N個時間段,第三級流水級中,亞像素運動估計模塊通過第二存儲模塊的端口B從第二存儲模塊中,讀入待編碼宏塊N-2的數(shù)據(jù)、重建圖像參考數(shù)據(jù)以及與最佳匹配塊相關(guān)的數(shù)據(jù),根據(jù)讀入的數(shù)據(jù)通過亞像素插值濾波,在整像素運動估計找出的最佳匹配塊的周圍一定范圍內(nèi)的整像素數(shù)據(jù)之間,插入亞像素(如1/2或1/4等)(如圖5所示),然后作亞像素運動級運動搜索,具體地,按照不同的預(yù)測模式,在亞像素級計算出待編碼宏塊N-1和某一個(或某幾個)參考幀(參考幀來自重建圖像參考數(shù)據(jù))在一定的搜索范圍內(nèi)的匹配程度(該匹配程度常用絕對殘差和表示),取每個預(yù)測模式中匹配程度最高的宏塊,作為該預(yù)測模式下的最佳匹配宏塊(即匹配程度最高的宏塊)。然后,將待編碼宏塊數(shù)據(jù),重建圖像參考數(shù)據(jù)以及亞像素運動估計產(chǎn)生的數(shù)據(jù)通過第三存儲模塊的端口A寫入第三存儲模塊。如圖4所示,在第N個時間段,第四級流水級中,綜合處理模塊通過第三存儲模塊的端口B,從第三存儲模塊中讀出第個待編碼宏塊N-3數(shù)據(jù),重建圖像參考數(shù)據(jù)以及亞像素運動估計產(chǎn)生的數(shù)據(jù)。首先進行幀內(nèi)預(yù)測,即在待編碼宏塊所在幀內(nèi),根據(jù)已經(jīng)編碼完畢的重建宏塊數(shù)據(jù),預(yù)測待編碼宏塊,并記錄預(yù)測方法以及預(yù)測得到的宏塊與待編碼宏塊的匹配程度。然后,將運動估計得到的最佳匹配塊的匹配程度與幀內(nèi)預(yù)測得到的預(yù)測塊的匹配程度,進行比較,得出最終的最佳匹配塊,并形成表征預(yù)測方式的信息,以及其他一些表征編碼方式的輔助信息,然后根據(jù)待編碼塊與最佳匹配塊進行計算,將得到的殘差進行變化編碼(如離散余弦變換DCT等),接著按照預(yù)設(shè)的量化等級進行量化。最后,按照預(yù)設(shè)的掃描順序(如zig-zag等)將變換以及量化后的殘差塊按照預(yù)設(shè)的順序,形成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu)(如AVS(AudioVideoCodingStandard,數(shù)字音視頻編解碼技術(shù)標(biāo)準(zhǔn))中的游程-非零系數(shù)對,其中游程表示非零系數(shù)之前的零的個數(shù)),將此殘差塊和表征編碼方式的輔助信息通過第四存儲模塊的端口A寫入第四存儲模塊。進一步地,第四級流水級還需要將量化后的殘差塊進行反量化,反變換,結(jié)合最佳匹配塊的數(shù)據(jù)形成重建圖像。重建圖像既可以在第四級流水級通過外部存儲器控制存入外部存儲器;也可以通過存第四儲模塊的端口A暫存在第四存儲模塊中,再由第五級流水級的熵編碼模塊通過第四存儲模塊的端口B讀出,并通過外部存儲器控制將重建圖像存入外部存儲器;或由第五級流水級的環(huán)路濾波模塊通過第四存儲模塊的端口B讀出,并對重建圖像進行環(huán)路濾波后,通過外部存儲器控制將濾波后的重建圖像存入外部存儲器。如圖4所示,在第N個時間段,第五級流水級中,環(huán)路濾波模塊和熵編碼模塊在同一流水級,環(huán)路濾波模塊對重建圖像以整幀為單位進行環(huán)路濾波,以獲得更好的參考幀質(zhì)量,供幀間預(yù)測參考。熵編碼模塊通過第四存儲模塊的端口B從第四存儲模塊中讀出宏塊N-4的適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu)和表征編碼方式的輔助信息,并按照預(yù)設(shè)的熵編碼算法進行編碼,從而輸出最終的二進制碼流。需要說明的是,各個模塊在工作時所傳遞的數(shù)據(jù)還包括但不限于一些編碼時需要的設(shè)定參數(shù),這些預(yù)設(shè)參數(shù)可以用流水級之間逐級傳遞的方式傳遞,也可以將預(yù)設(shè)參數(shù)存儲在全局存儲器(或寄存器)中,某一級流水級使用時直接從全局存儲器(寄存器)中讀取。本發(fā)明改進了視頻編碼器中的流水級結(jié)構(gòu),包括,增加了獨立的數(shù)據(jù)加載模塊,流水級之間以及流水級與外部存儲器之間采用雙端口存儲器模塊進行數(shù)據(jù)交互,克服了原有利用總線或共享內(nèi)存進行數(shù)據(jù)交互所導(dǎo)致的低效率問題,簡化了數(shù)據(jù)交互的控制邏輯,提高了流水級之間數(shù)據(jù)傳輸?shù)乃俣取T撘曨l編碼器的級間數(shù)據(jù)交互均在宏塊級進行,數(shù)據(jù)結(jié)構(gòu)一致,簡化了控制流程,有效的提高吞吐率以及降低延遲,可以對高清視頻源進行實時的編碼。本發(fā)明實施例可以利用軟件實現(xiàn),相應(yīng)的軟件程序可以存儲在可讀取的存儲介質(zhì)中,例如,計算機的硬盤、緩存或光盤中。以上所述僅為本發(fā)明的較佳實施例,并不用以限制本發(fā)明,凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、合并、拆分、改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。權(quán)利要求一種視頻編碼器,其特征在于,包括數(shù)據(jù)加載模塊,用于讀入待編碼宏塊和重建圖像參考數(shù)據(jù),將讀入的待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第一存儲模塊;所述第一存儲模塊,用于接收并存儲所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);整像素運動估計模塊,用于讀取所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述待編碼宏塊進行整像素級運動搜索,得到整像素運動估計信息,將所述整像素運動估計信息,所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第二存儲模塊;所述第二存儲模塊,用于接收并存儲所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);亞像素運動估計模塊,用于讀取所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行亞像素插值濾波和亞像素級運動搜索,得到亞像素運動估計信息,將所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第三存儲模塊;所述第三存儲模塊,用于接收并存儲所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);綜合處理模塊,用于讀取所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行幀內(nèi)預(yù)測,結(jié)合所述亞像素運動估計信息,得到預(yù)測殘差和表征編碼方式的輔助信息,對所述預(yù)測殘差變換和量化,掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu)和所述表征編碼方式的輔助信息,將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊;所述第四存儲模塊,用于接收并存儲所述轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息;熵編碼模塊,用于讀取所述殘差數(shù)據(jù)和所述表征編碼方式的輔助信息,進行熵編碼,將得到的二進制碼流輸出。2.如權(quán)利要求1所述的視頻編碼器,其特征在于,所述編碼器還包括環(huán)路濾波模塊,用于對所述重建圖像參考數(shù)據(jù)進行環(huán)路濾波。3.如權(quán)利要求1所述的視頻編碼器,其特征在于,所述綜合處理模塊還包括反變換量化單元,用于將量化后的殘差塊進行反量化,反變換,結(jié)合指定塊的數(shù)據(jù)形成重建圖像。4.如權(quán)利要求3所述的視頻編碼器,其特征在于,所述綜合處理模塊還包括第一存儲單元,用于將所述重建圖像存入外部存儲器;第二存儲單元,用于將所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中,由所述熵編碼模塊通過所述第四存儲模塊的端口讀出,并將所述重建圖像存入所述外部存儲器;第三存儲單元,用于將所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中,由所述環(huán)路濾波模塊通過所述第四存儲模塊的端口讀出,并對所述重建圖像進行環(huán)路濾波后,存入所述外部存儲器。5.如權(quán)利要求1所述的視頻編碼器,其特征在于,所述編碼器還包括第一掃描單元,用于掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊;第二掃描單元,用于掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給所述熵編碼模塊。6.如權(quán)利要求1至5所述的視頻編碼器,其特征在于,所述編碼器中的各個模塊之間還傳遞包括但不限于編碼端預(yù)設(shè)參數(shù)的數(shù)據(jù)。7.—種視頻編碼方法,其特征在于,包括數(shù)據(jù)加載模塊讀入待編碼宏塊和重建圖像參考數(shù)據(jù);所述數(shù)據(jù)加載模塊將讀入的待編碼宏塊和重建圖像參考數(shù)據(jù)發(fā)送給第一存儲模塊;所述第一存儲模塊接收并存儲所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);整像素運動估計模塊讀取所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述待編碼宏塊進行整像素級運動搜索,得到整像素運動估計信息,將所述整像素運動估計信息,所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第二存儲模塊;所述第二存儲模塊接收并存儲所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);亞像素運動估計模塊讀取所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),根據(jù)所述整像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行亞像素插值濾波和亞像素級運動搜索,得到亞像素運動估計信息,將所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù)發(fā)送給第三存儲模塊;所述第三存儲模塊接收并存儲所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù);所述綜合處理模塊讀取所述亞像素運動估計信息、所述待編碼宏塊和所述重建圖像參考數(shù)據(jù),進行幀內(nèi)預(yù)測,結(jié)合所述亞像素運動估計信息,得到預(yù)測殘差和表征編碼方式的輔助信息,對所述預(yù)測殘差變換和量化,掃描量化后的宏塊,讀取宏塊的殘差數(shù)據(jù),將讀取的殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息發(fā)送給第四存儲模塊;所述第四存儲模塊接收并存儲所述轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息;所述熵編碼模塊讀取所述殘差數(shù)據(jù)和所述表征編碼方式的輔助信息,進行熵編碼,將得到的二進制碼流輸出。8.如權(quán)利要求7所述的方法,其特征在于,所述預(yù)測殘差變換和量化之后還包括將量化后的殘差塊進行反量化,反變換,結(jié)合指定塊的數(shù)據(jù)形成重建圖像。9.如權(quán)利要求8所述的方法,其特征在于,所述重建圖像存入外部存儲器;或,所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中,由所述熵編碼模塊通過所述第四存儲模塊的端口讀出,并將所述重建圖像存入所述外部存儲器;或,將所述重建圖像通過所述第四存儲模塊的端口暫存在所述第四存儲模塊中,由所述環(huán)路濾波模塊通過所述第四存儲模塊的端口讀出,并對所述重建圖像進行環(huán)路濾波后,存入所述外部存儲器。10.如權(quán)利要求7所述的方法,其特征在于,所述熵編碼模塊接收所述第四存儲模塊發(fā)送的殘差數(shù)據(jù)之前,還包括掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給第四存儲模塊;或,掃描量化后的宏塊數(shù)據(jù),讀取宏塊的殘差數(shù)據(jù),將所述殘差數(shù)據(jù)轉(zhuǎn)換成適合熵編碼處理的數(shù)據(jù)結(jié)構(gòu),將轉(zhuǎn)換后的殘差數(shù)據(jù)發(fā)送給所述熵編碼模塊。11.如權(quán)利要求7所述的方法,其特征在于,所述第四存儲模塊接收并存儲所述轉(zhuǎn)換后的殘差數(shù)據(jù)和所述表征編碼方式的輔助信息,之后還包括環(huán)路濾波模塊對所述重建圖像參考數(shù)據(jù)以整幀為單位進行環(huán)路濾波,并將濾波后的重建圖像參考數(shù)據(jù)存入外部存儲器。12.如權(quán)利要求7至11所述的視頻編碼器,其特征在于,所述編碼器中的各個模塊之間還傳遞包括但不限于編碼端預(yù)設(shè)參數(shù)的數(shù)據(jù)。全文摘要本發(fā)明公開了一種視頻編碼器和編碼方法,屬于視頻編碼領(lǐng)域。該編碼器分為五級流水,包括數(shù)據(jù)加載模塊、第一存儲模塊、整像素運動估計模塊、第二存儲模塊、亞像素運動估計模塊、第三存儲模塊、綜合處理模塊、第四存儲模塊以及環(huán)路濾波模塊和熵編碼模塊。還提出了一種視頻編碼方法。本發(fā)明的五級流水模塊之間利用雙端口存儲器模塊進行數(shù)據(jù)交互,簡化了數(shù)據(jù)交互的控制邏輯,提高了流水級之間數(shù)據(jù)傳輸?shù)乃俣?。該視頻編碼器的級間數(shù)據(jù)交互均在宏塊級進行,數(shù)據(jù)結(jié)構(gòu)一致,簡化了控制流程,有效的提高吞吐率以及降低延遲,可以對高清視頻源進行實時的編碼。文檔編號H04N7/50GK101707716SQ20091023797公開日2010年5月12日申請日期2009年11月19日優(yōu)先權(quán)日2009年11月19日發(fā)明者何蕓,佟欣,安達(dá),朱炳強,榮耀程,袁媛申請人:清華大學(xué)