欧美在线观看视频网站,亚洲熟妇色自偷自拍另类,啪啪伊人网,中文字幕第13亚洲另类,中文成人久久久久影院免费观看 ,精品人妻人人做人人爽,亚洲a视频

一種傳輸視頻壓縮編碼結(jié)果的方法和裝置的制作方法

文檔序號(hào):7652216閱讀:196來源:國知局
專利名稱:一種傳輸視頻壓縮編碼結(jié)果的方法和裝置的制作方法
技術(shù)領(lǐng)域
本發(fā)明涉及一種視頻信號(hào)傳輸技術(shù),特別涉及一種實(shí)時(shí)傳輸視頻壓縮編碼結(jié)果的方法和裝置。
背景技術(shù)
目前,在對(duì)視頻圖像進(jìn)行端到端的傳輸時(shí),為節(jié)省傳輸所需的帶寬資源,通常要對(duì)傳輸?shù)囊曨l圖像進(jìn)行壓縮編碼。目前的視頻編碼算法通常以宏塊為單位進(jìn)行,在編碼過程中,首先將當(dāng)前幀逐行輸入緩存單元,當(dāng)?shù)竭_(dá)可以編碼的基礎(chǔ)數(shù)據(jù)量后,編碼單元由緩存單元中取出原始視頻數(shù)據(jù),按宏塊為單位進(jìn)行編碼,并在完成每個(gè)宏塊的編碼后,將該編碼結(jié)果存儲(chǔ)到預(yù)先設(shè)置好的存儲(chǔ)單元中。到當(dāng)前幀的數(shù)據(jù)編碼結(jié)束后,觸發(fā)外部數(shù)據(jù)通道將存儲(chǔ)單元中當(dāng)前幀的編碼結(jié)果讀走,進(jìn)行后續(xù)處理或進(jìn)行傳輸。
舉個(gè)例子說明上述過程,當(dāng)采用MPEG4對(duì)視頻圖像進(jìn)行壓縮編碼時(shí),宏塊大小為16行×16列。由于數(shù)據(jù)是逐行輸入,因此相應(yīng)地,可以進(jìn)行編碼的基礎(chǔ)數(shù)據(jù)量為16行,也就是說,當(dāng)輸入緩存單元的當(dāng)前幀數(shù)據(jù)達(dá)到16行后,編碼單元開始啟動(dòng)編碼,讀取緩存單元中的16行數(shù)據(jù)按宏塊進(jìn)行編碼。每完成一個(gè)宏塊的編碼,編碼單元將該編碼結(jié)果存儲(chǔ)到預(yù)設(shè)的存儲(chǔ)單元中。圖1為進(jìn)行MPEG4編碼時(shí),輸入過程與編碼過程的關(guān)系示意圖。如圖1所示,通常視頻數(shù)據(jù)的輸入速度總是低于壓縮編碼的速度,當(dāng)緩存單元準(zhǔn)備好16行數(shù)據(jù)后,編碼單元開始編碼該16行數(shù)據(jù),同時(shí),緩存單元開始接收輸入的下一組16行數(shù)據(jù)。由于壓縮編碼速度高于數(shù)據(jù)的輸入速度,因此當(dāng)編碼單元在T1時(shí)刻已編碼完成當(dāng)前的16行數(shù)據(jù)時(shí),緩存單元還未將下一組16行數(shù)據(jù)準(zhǔn)備好;那么在T1時(shí)刻到下一組16行數(shù)據(jù)準(zhǔn)備好的T2時(shí)刻間,形成了壓縮編碼空閑時(shí)隙,也稱為當(dāng)前幀編碼的絕對(duì)空閑時(shí)間,這段時(shí)間內(nèi),編碼器內(nèi)部總線是空閑的。另外,在圖1中的T1時(shí)刻前的實(shí)際編碼時(shí)間內(nèi),系統(tǒng)總線也并不是全部處于被占用狀態(tài),在該時(shí)間內(nèi),總線還是會(huì)存在一些細(xì)碎的空閑時(shí)隙,將這些在實(shí)際編碼時(shí)間內(nèi)的空閑時(shí)隙稱為當(dāng)前幀編碼的相對(duì)空閑時(shí)間。當(dāng)?shù)竭_(dá)T2時(shí)刻后,編碼單元繼續(xù)進(jìn)行下一組16行數(shù)據(jù)的編碼。直到當(dāng)前幀編碼結(jié)束,再由低速數(shù)據(jù)傳輸通道傳出存儲(chǔ)單元中完整幀壓縮編碼結(jié)果,即利用幀間的非編碼時(shí)間傳輸當(dāng)前幀的編碼結(jié)果??傮w看來,一幀壓縮編碼及傳輸?shù)臅r(shí)間總耗費(fèi)如圖2所示。
由圖2能直觀地看到,在上述的編碼結(jié)果傳輸方式中,在絕對(duì)空閑時(shí)間內(nèi),總線上沒有數(shù)據(jù)傳輸,另外,在相對(duì)空閑時(shí)間內(nèi)(圖2中未示出)總線也同樣處于空閑狀態(tài),這些空閑時(shí)間內(nèi)的總線空閑均造成了系統(tǒng)資源的極大浪費(fèi),并且在相臨幀編碼之間耗費(fèi)大量非編碼時(shí)間,消極影響了幀率控制能力。另外,當(dāng)壓縮的視頻幀尺寸越小,絕對(duì)空閑時(shí)間會(huì)越長(zhǎng),資源浪費(fèi)越大。當(dāng)壓縮的視頻幀尺寸較大時(shí),壓縮后的編碼數(shù)據(jù)量也相對(duì)較大,對(duì)于存儲(chǔ)單元中的存儲(chǔ)空間要求也就越大,事實(shí)上,也是對(duì)硬件配置的較高要求。

發(fā)明內(nèi)容
有鑒于此,本發(fā)明提供一種傳輸視頻壓縮編碼結(jié)果的方法和裝置,能夠節(jié)省系統(tǒng)資源。
為實(shí)現(xiàn)上述目的,本發(fā)明采用如下的技術(shù)方案一種傳輸視頻壓縮編碼結(jié)果的方法,包括a、設(shè)置先進(jìn)先出存儲(chǔ)器FIFO的最大容量和輸出閾值;b、對(duì)輸入的當(dāng)前幀數(shù)據(jù)編碼,將編碼結(jié)果數(shù)據(jù)輸入FIFO中;在當(dāng)前幀的編碼過程中,每當(dāng)FIFO中的數(shù)據(jù)量達(dá)到輸出閾值時(shí),控制輸出FIFO中的編碼結(jié)果數(shù)據(jù);c、當(dāng)前幀數(shù)據(jù)編碼完成后,控制輸出FIFO中剩余的編碼結(jié)果數(shù)據(jù),并返回步驟b,直到輸出所有的視頻幀編碼結(jié)果數(shù)據(jù)。
較佳地,步驟a中根據(jù)當(dāng)前幀的編碼結(jié)果的產(chǎn)生速度和FIFO中數(shù)據(jù)的輸出速度設(shè)置FIFO的最大容量和輸出閾值。
較佳地,根據(jù)編碼視頻幀的尺寸、幀內(nèi)像素?cái)?shù)據(jù)的圖像復(fù)雜度、編碼單元的編碼速度以及編碼的目標(biāo)幀率確定所述編碼結(jié)果產(chǎn)生速度。
較佳地,根據(jù)FIFO與編碼結(jié)果數(shù)據(jù)的接收設(shè)備間傳輸通道的數(shù)據(jù)傳輸速率和該傳輸通道對(duì)于FIFO讀信號(hào)的響應(yīng)時(shí)間確定所述FIFO中數(shù)據(jù)的輸出速度。
較佳地,步驟b中FIFO每次輸出的編碼結(jié)果數(shù)據(jù)為與設(shè)置的輸出閾值等量的編碼結(jié)果數(shù)據(jù)。
較佳地,步驟b中所述控制輸出為向外部編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第一控制信號(hào),通知該接收設(shè)備讀取FIFO中的編碼結(jié)果數(shù)據(jù)。
較佳地,步驟c中所述控制輸出FIFO中剩余的編碼結(jié)果數(shù)據(jù)為向外部編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第二控制信號(hào),并攜帶FIFO中的剩余數(shù)據(jù)量,通知該接收設(shè)備讀取FIFO中剩余的編碼結(jié)果數(shù)據(jù)。
較佳地,所述編碼結(jié)果數(shù)據(jù)優(yōu)先在當(dāng)前幀編碼的絕對(duì)空閑時(shí)間內(nèi)進(jìn)行輸出。
較佳地,若所述編碼結(jié)果數(shù)據(jù)能夠在當(dāng)前幀編碼的絕對(duì)空閑時(shí)間內(nèi)完成輸出,則將FIFO的輸出閾值和最大容量設(shè)置為等于編碼的基礎(chǔ)數(shù)據(jù)量壓縮后的編碼結(jié)果數(shù)據(jù)量;若所述編碼結(jié)果數(shù)據(jù)未能在當(dāng)前幀編碼的絕對(duì)空閑時(shí)間內(nèi)完成輸出,則設(shè)置FIFO的輸出閾值為小于編碼的基礎(chǔ)數(shù)據(jù)量壓縮后的編碼結(jié)果數(shù)據(jù)量;設(shè)置FIFO的最大容量為大于FIFO的輸出閾值且小于編碼的基礎(chǔ)數(shù)據(jù)量壓縮后的編碼結(jié)果數(shù)據(jù)量。
一種傳輸視頻壓縮編碼結(jié)果的裝置,包括緩存單元、編碼單元、FIFO和傳輸控制單元;所述緩存單元,用于接收輸入的當(dāng)前幀數(shù)據(jù),并觸發(fā)編碼單元開始編碼;所述編碼單元,用于在接收到所述緩存單元的觸發(fā)信號(hào)后,從緩存單元中讀取視頻數(shù)據(jù),并進(jìn)行編碼,將編碼結(jié)果數(shù)據(jù)順序存儲(chǔ)到FIFO中;所述FIFO,用于存儲(chǔ)所述編碼單元發(fā)送的編碼結(jié)果數(shù)據(jù);所述傳輸控制單元,用于設(shè)置所述FIFO的最大容量和輸出閾值,監(jiān)測(cè)所述FIFO中的數(shù)據(jù)量,在當(dāng)前幀的編碼過程中,每當(dāng)所述FIFO中的數(shù)據(jù)量達(dá)到輸出閾值時(shí),控制所述FIFO輸出編碼結(jié)果數(shù)據(jù);在當(dāng)前幀完成編碼后,控制所述FIFO輸出剩余的編碼結(jié)果數(shù)據(jù)。
較佳地,所述傳輸控制單元,用于在監(jiān)測(cè)到所述FIFO中的數(shù)據(jù)量達(dá)到設(shè)置的輸出閾值時(shí),向編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第一控制信號(hào),通知該設(shè)備讀取所述FIFO中的編碼結(jié)果數(shù)據(jù);還用于在當(dāng)前幀完成編碼后,向編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第二控制信號(hào),并攜帶所述FIFO中的剩余數(shù)據(jù)量,通知該設(shè)備讀取所述FIFO中剩余的編碼結(jié)果數(shù)據(jù)。
由上述技術(shù)方案可見,本發(fā)明中,利用先進(jìn)先出存儲(chǔ)器(FIFO)作為存儲(chǔ)編碼結(jié)果的存儲(chǔ)單元,首先設(shè)置FIFO的最大容量和輸出閾值,然后編碼單元將每個(gè)宏塊編碼后的結(jié)果順序存儲(chǔ)在FIFO中,在當(dāng)前幀的編碼過程中,當(dāng)FIFO中的可讀編碼結(jié)果數(shù)據(jù)量達(dá)到輸出閾值時(shí),即輸出與設(shè)置的輸出閾值等量的編碼結(jié)果數(shù)據(jù);在當(dāng)前幀編碼結(jié)束后,再輸出FIFO中剩余的數(shù)據(jù)。由于在本發(fā)明的方法和裝置中,編碼結(jié)果的存儲(chǔ)單元為FIFO,因此可以實(shí)現(xiàn)編碼結(jié)果讀寫的同時(shí)進(jìn)行,在未完成當(dāng)前幀的全部編碼前,可以傳輸部分編碼結(jié)果數(shù)據(jù),具體從FIFO中讀數(shù)據(jù)的時(shí)間由設(shè)置的輸出閾值來控制。這樣,在當(dāng)前幀的編碼過程中,可以很好地利用包括相對(duì)空閑時(shí)間和絕對(duì)空閑時(shí)間在內(nèi)的空閑時(shí)隙內(nèi)的總線資源,傳輸部分編碼結(jié)果數(shù)據(jù),大大減少了當(dāng)前幀編碼全部結(jié)束后,用于傳輸編碼結(jié)果數(shù)據(jù)的時(shí)間,以節(jié)省整個(gè)編碼與傳輸過程中占用的系統(tǒng)資源。
更進(jìn)一步地,為使系統(tǒng)資源得到最佳利用,在設(shè)置FIFO的最大容量和輸出閾值時(shí),要結(jié)合當(dāng)前幀編碼結(jié)果的產(chǎn)生速度和FIFO中數(shù)據(jù)的輸出速度來綜合考慮,以最大限度利用系統(tǒng)空閑資源、且不影響編碼等其它資源的占用。


圖1為目前進(jìn)行MPEG4編碼時(shí),輸入過程與編碼過程的關(guān)系示意圖。
圖2為現(xiàn)有的一幀壓縮編碼及傳輸?shù)臅r(shí)間總耗費(fèi)。
圖3為本發(fā)明提供的傳輸視頻壓縮編碼結(jié)果的方法總體流程圖。
圖4為本發(fā)明中傳輸視頻壓縮編碼結(jié)構(gòu)的裝置總體結(jié)構(gòu)圖。
圖5為本發(fā)明實(shí)施例中傳輸視頻壓縮編碼結(jié)果的方法具體流程圖。
圖6為依照本發(fā)明的方式,MPEG4一幀壓縮編碼及傳輸時(shí)間的總耗費(fèi)示意圖。
圖7為本發(fā)明實(shí)施例中傳輸視頻壓縮編碼結(jié)果的系統(tǒng)具體結(jié)構(gòu)圖。
具體實(shí)施例方式
為使本發(fā)明的目的、技術(shù)手段和優(yōu)點(diǎn)更加清楚明白,以下結(jié)合附圖,并舉實(shí)施例對(duì)本發(fā)明作進(jìn)一步詳細(xì)說明。
本發(fā)明的基本思想是充分利用包括相對(duì)空閑時(shí)間和絕對(duì)空閑時(shí)間在內(nèi)的空閑時(shí)隙,以最大化系統(tǒng)資源利用率,節(jié)省編碼和傳輸過程中占用的總的系統(tǒng)資源。
圖3為本發(fā)明提供的傳輸視頻壓縮編碼結(jié)果的方法總體流程圖。如圖3所示,該方法包括步驟301,設(shè)置編碼結(jié)果存儲(chǔ)單元FIFO的最大容量和輸出閾值。
步驟302,對(duì)輸入的當(dāng)前幀數(shù)據(jù)進(jìn)行壓縮編碼,將編碼結(jié)果輸入FIFO中;在當(dāng)前幀的編碼過程中,當(dāng)FIFO中的可讀數(shù)據(jù)量達(dá)到輸出閾值時(shí),控制輸出FIFO中的編碼結(jié)果數(shù)據(jù)。
步驟303,當(dāng)前幀數(shù)據(jù)編碼完成后,輸出FIFO中剩余的編碼結(jié)果數(shù)據(jù),并返回步驟302,直到輸出所有的視頻幀編碼數(shù)據(jù)。
至此,本發(fā)明提供的傳輸視頻壓縮編碼結(jié)果的方法總體流程結(jié)束。本發(fā)明還提供了傳輸視頻壓縮編碼結(jié)果的裝置。圖4即為本發(fā)明中傳輸視頻壓縮編碼結(jié)果的裝置總體結(jié)構(gòu)圖。如圖4所示,該裝置包括緩存單元、編碼單元、FIFO和傳輸控制單元。
在圖4所示的裝置中,緩存單元,用于接收輸入的當(dāng)前幀視頻數(shù)據(jù),每當(dāng)輸入的數(shù)據(jù)量達(dá)到編碼基礎(chǔ)數(shù)據(jù)量的整數(shù)倍時(shí),緩存單元觸發(fā)編碼單元開始編碼。
編碼單元,接收到緩存單元的觸發(fā)信號(hào)后,從緩存單元中讀取視頻數(shù)據(jù),并按宏塊開始編碼,將編碼結(jié)果順序存儲(chǔ)到FIFO中。
FIFO,用于存儲(chǔ)編碼單元發(fā)送的編碼結(jié)果數(shù)據(jù)。
傳輸控制單元,用于設(shè)置FIFO的最大容量和輸出閾值,監(jiān)測(cè)FIFO中的可讀數(shù)據(jù)量,在當(dāng)前幀的編碼過程中,每當(dāng)達(dá)到輸出閾值時(shí),控制FIFO輸出編碼結(jié)果數(shù)據(jù);在當(dāng)前幀完成編碼后,控制FIFO輸出剩余的編碼結(jié)果數(shù)據(jù)。
具體地,傳輸控制單元可以通過發(fā)送不同的控制信號(hào),實(shí)現(xiàn)在當(dāng)前幀編碼的不同階段,控制輸出FIFO中編碼結(jié)果數(shù)據(jù)。優(yōu)選的方式可以為在編碼過程中,向外部接收編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第一控制信號(hào),通知該接收設(shè)備讀取定量的編碼結(jié)果數(shù)據(jù);在編碼完成后,發(fā)送第二控制信號(hào),通知接收設(shè)備讀取剩余的編碼結(jié)果數(shù)據(jù)。
由上述可見,本發(fā)明的方法和裝置中,將編碼單元的編碼結(jié)果存儲(chǔ)到FIFO中,這樣,在當(dāng)前幀的編碼過程中,可以利用包括相對(duì)空閑時(shí)間和絕對(duì)空閑時(shí)間在內(nèi)的空閑時(shí)隙實(shí)現(xiàn)編碼結(jié)果的傳輸,于是,當(dāng)當(dāng)前幀編碼結(jié)束時(shí),需要傳輸?shù)木幋a結(jié)果數(shù)據(jù)量大大減小,節(jié)省了用于幀間傳輸?shù)姆蔷幋a時(shí)間的耗費(fèi),節(jié)省了系統(tǒng)資源。
上述即為本發(fā)明的總體概述,下面以傳輸MPEG4編碼結(jié)果為例,說明本發(fā)明的具體實(shí)施方式

實(shí)施例本實(shí)施例中,采用的編碼算法為MPEG4,其宏塊大小為16×16,也就是說編碼的基礎(chǔ)數(shù)據(jù)量為16行。編碼結(jié)果傳輸給接收端模塊,進(jìn)行后續(xù)處理或解碼觀看。
圖5為本發(fā)明實(shí)施例中傳輸視頻壓縮編碼結(jié)果的方法具體流程圖。如圖5所示,該方法包括步驟501,設(shè)置編碼結(jié)果存儲(chǔ)單元FIFO的最大容量和輸出閾值。
本步驟中,設(shè)置FIFO最大容量和輸出閾值的具體方式可以為根據(jù)編碼結(jié)果的平均產(chǎn)生速度和FIFO中數(shù)據(jù)的輸出速度設(shè)置,使得既限制FIFO所占的存儲(chǔ)空間盡量小、又防止FIFO中的數(shù)據(jù)溢出。優(yōu)選地,使FIFO中數(shù)據(jù)的輸出盡量利用當(dāng)前視頻編碼的絕對(duì)空閑時(shí)間進(jìn)行,在本實(shí)施例中,也就是利用每16行的絕對(duì)空閑時(shí)間進(jìn)行編碼結(jié)果數(shù)據(jù)的傳輸。具體地,編碼結(jié)果的平均產(chǎn)生速度與編碼視頻幀的尺寸、幀內(nèi)像素?cái)?shù)據(jù)的圖像復(fù)雜度、編碼單元的編碼速度以及編碼的目標(biāo)幀率有關(guān)。FIFO中數(shù)據(jù)的輸出速度與傳輸通道的數(shù)據(jù)傳輸速率和該傳輸通道對(duì)于FIFO讀信號(hào)的反映速度有關(guān)。顯然,本領(lǐng)域技術(shù)人員能夠依據(jù)上述指標(biāo),進(jìn)行FIFO最大容量和輸出閾值的設(shè)置。
優(yōu)選地,根據(jù)編碼結(jié)果產(chǎn)生速度和FIFO中數(shù)據(jù)輸出速度的匹配關(guān)系可以如下設(shè)置輸出閾值和最大容量如果16行數(shù)據(jù)壓縮后的編碼結(jié)果數(shù)據(jù)量能夠在每16行的絕對(duì)空閑時(shí)間內(nèi)傳輸完畢,那么可以將FIFO中的輸出閾值設(shè)置為16行數(shù)據(jù)壓縮后的編碼結(jié)果數(shù)據(jù)量,將最大容量設(shè)置為與輸出閾值相等。這樣,能夠保證在編碼單元完成16行數(shù)據(jù)的編碼后,開始進(jìn)行編碼結(jié)果的傳輸,從而保證在總線最空閑的階段傳輸數(shù)據(jù)。通常,對(duì)于小尺寸的視頻幀(如VGA、CIF和QCIF大小的視頻幀),由于其編碼結(jié)果的數(shù)據(jù)量較小,其每16行的編碼空閑段遠(yuǎn)大于進(jìn)行編碼的時(shí)間段,也就是說,圖2中空閑段A2與非空閑段A1間的比例較大,對(duì)于這類的視頻幀比較容易滿足上述條件,適合采用上述的輸出閾值設(shè)置;但對(duì)于16行數(shù)據(jù)壓縮后的編碼結(jié)果數(shù)據(jù)量很大(如D1格式等的大尺寸視頻幀的編碼)的視頻幀,其每16行的絕對(duì)空閑時(shí)間很短,甚至?xí)?,由于絕對(duì)空閑時(shí)間縮短、加之需要傳輸?shù)慕Y(jié)果數(shù)據(jù)量較大,這類的視頻幀很難在每16行的絕對(duì)空閑時(shí)間內(nèi)將16行編碼后的數(shù)據(jù)結(jié)果傳輸完畢;另外,在編碼結(jié)果數(shù)據(jù)的輸出速度很慢的情況下,也有可能在每16行的絕對(duì)空閑時(shí)間內(nèi)無法將16行編碼后的數(shù)據(jù)結(jié)果傳輸完畢;對(duì)于上述這些在絕對(duì)空閑時(shí)間內(nèi)無法將編碼結(jié)果數(shù)據(jù)傳輸完畢的視頻幀,可以在設(shè)置輸出閾值時(shí),使該閾值小于16行數(shù)據(jù)壓縮后的編碼結(jié)果數(shù)據(jù)量,從而能夠較早地開始傳輸編碼結(jié)果數(shù)據(jù),以利用相對(duì)空閑時(shí)間盡量多地傳輸編碼結(jié)果數(shù)據(jù)。這樣,大大減少了編碼結(jié)果數(shù)據(jù)存儲(chǔ)空間的大小、縮短了幀間用于傳輸編碼結(jié)果數(shù)據(jù)的時(shí)間。根據(jù)對(duì)輸出閾值的上述設(shè)置,再結(jié)合前述的各項(xiàng)指標(biāo)即可以設(shè)置FIFO的最大容量。
下面通過一個(gè)具體的例子說明上述輸出閾值和最大容量設(shè)置假定16行當(dāng)前幀數(shù)據(jù)的輸入時(shí)間為IN_N,IN_N取決于當(dāng)前視頻幀的尺寸和幀率等;16行當(dāng)前幀數(shù)據(jù)壓縮時(shí)間為ENC_N,ENC_N取決于幀內(nèi)像素?cái)?shù)據(jù)的圖像復(fù)雜度和壓縮工作時(shí)鐘等;16行內(nèi)的絕對(duì)空閑時(shí)間(即本發(fā)明中所述的編碼空閑時(shí)隙)IDLE_A_N為輸入時(shí)間與壓縮時(shí)間之差,即IDLE_A_N=IN_N-EN_N;16行內(nèi)相對(duì)空閑時(shí)間IDLE_R_N為編碼過程中的空閑時(shí)間。16行壓縮數(shù)據(jù)輸出時(shí)間為TRN_N=(TRN_A_N+WAIT_N*COMPRESSED_N/THD_N);其中,TRN_A_N為16行壓縮數(shù)據(jù)輸出實(shí)際傳輸時(shí)間,TRN_A_N取決于16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量和輸出的數(shù)據(jù)通道傳輸速率等;WAIT_N為每次壓縮數(shù)據(jù)輸出請(qǐng)求等待時(shí)間,WAIT_N取決于編碼結(jié)果數(shù)據(jù)接收設(shè)備的反應(yīng)速率等;COMPRESSED_N為16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量;THD_N為設(shè)置的FIFO輸出閾值;FIFO的最大容量為FIFO_N。
基于上述各個(gè)物理量的表示,F(xiàn)IFO輸出閾值和最大容量可以如下設(shè)置一、當(dāng)TRN_N<=IDLE_A_N時(shí),也就是說,16行編碼結(jié)果數(shù)據(jù)能夠在絕對(duì)空閑時(shí)間(即編碼過程中的空閑時(shí)隙)內(nèi)傳輸完畢,則將FIFO輸出閾值和FIFO的最大容量均設(shè)置為與16行數(shù)據(jù)編碼后的編碼結(jié)果數(shù)據(jù)量相等,即THD_N=FIFO_N=COMPRESSED_N。這樣,對(duì)于當(dāng)前幀的編碼結(jié)果數(shù)據(jù),將在每16行數(shù)據(jù)編碼完成后,即開始傳輸,并且在絕對(duì)空閑時(shí)間內(nèi)完成傳輸,同時(shí),保證FIFO占用的空間盡量小。
二、當(dāng)TRN_N=(IDLE_A_N+IDLE_R_N*X),且0<X<1時(shí),也就是說,16行編碼結(jié)果數(shù)據(jù)不能在絕對(duì)空閑時(shí)間內(nèi)傳輸完畢,但能在16行內(nèi)的絕對(duì)空閑時(shí)間與相對(duì)空閑時(shí)間的總時(shí)間內(nèi)傳輸完畢。這時(shí),將FIFO輸出閾值設(shè)置為小于16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量,具體可以為THD_N<=COMPRESSED_N*(1-X),而將FIFO的最大容量設(shè)置為大于COMPRESSED_N*(1-X)且小于16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量,以一方面保證FIFO不溢出,另一方面盡量節(jié)省FIFO占用的空間;同時(shí)可以根據(jù)WAIT_N動(dòng)態(tài)調(diào)整FIFO的輸出閾值和最大容量,使TRN_N取最小值。由于16行的編碼數(shù)據(jù)無法在16行數(shù)據(jù)的絕對(duì)空閑時(shí)間內(nèi)完成傳輸,因此,將FIFO的輸出閾值設(shè)置為小于16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量,以在完成16行數(shù)據(jù)中的部分?jǐn)?shù)據(jù)編碼時(shí),即開始傳輸編碼結(jié)果數(shù)據(jù),從而盡可能地利用編碼過程中的相對(duì)空閑時(shí)間傳輸編碼結(jié)果數(shù)據(jù),同時(shí)將FIFO的最大容量作適當(dāng)調(diào)整以保證不溢出,且盡量節(jié)省占用的空間。
三、當(dāng)TRN_N>(IDLE_A_N+IDLE_R_N)時(shí),也就是說,16行編碼結(jié)果數(shù)據(jù)無法在16行內(nèi)的絕對(duì)空閑時(shí)間與相對(duì)空閑時(shí)間的總時(shí)間內(nèi)傳輸完畢,這種情況下,即將FIFO輸出閾值設(shè)置為小于16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量,具體可以根據(jù)WAIT_N的取值,適當(dāng)?shù)卦O(shè)置一個(gè)大于0且小于等于1的Y,將FIFO輸出閾值設(shè)置為THD_N=COMPRESSED_N*Y,以使TRN_N取最小值,F(xiàn)IFO的最大容量設(shè)置為大于輸出閾值且小于COMPRESSED_N,以節(jié)省FIFO所占的空間。與第二種情況類似,本情況中也將在未完成16行數(shù)據(jù)的編碼時(shí),已經(jīng)開始利用編碼過程中的相對(duì)空閑時(shí)間傳輸編碼結(jié)果數(shù)據(jù),與第二種情況的差別在于,開始傳輸編碼結(jié)果數(shù)據(jù)的時(shí)間可能更早,以盡可能地利用系統(tǒng)的空閑資源;同時(shí),適當(dāng)設(shè)置FIFO的最大容量,保證不溢出且盡量少占用空間。
在上述輸出閾值和最大容量的設(shè)置過程中,之所以選擇16行為標(biāo)準(zhǔn)是因?yàn)椋姸嗟膲嚎s編碼算法中,進(jìn)行編碼的宏塊大小為16行×16列。經(jīng)實(shí)驗(yàn)結(jié)果證明,根據(jù)上述方式設(shè)置FIFO的最大容量和輸出閾值后,在當(dāng)前幀編碼結(jié)束時(shí),F(xiàn)IFO中剩余的編碼結(jié)果數(shù)據(jù)量最小,因此幀間用于傳輸編碼結(jié)果的時(shí)間也最短,最大程度地節(jié)省了系統(tǒng)資源。
通過下述步驟實(shí)現(xiàn)視頻幀序列的編碼以及編碼結(jié)果的傳輸。
步驟502,將視頻幀序列中的第一幀設(shè)為當(dāng)前幀。
步驟503,對(duì)當(dāng)前幀數(shù)據(jù)進(jìn)行編碼,并按照步驟501中的設(shè)置控制輸出FIFO中的編碼結(jié)果數(shù)據(jù)。
本步驟中,對(duì)當(dāng)前幀數(shù)據(jù)進(jìn)行編碼時(shí),以宏塊為單位進(jìn)行,如前所述本實(shí)施例中的宏塊大小為16×16,具體編碼過程包括輸入當(dāng)前幀的第一組編碼數(shù)據(jù)(即16行數(shù)據(jù)),編碼單元對(duì)這一組編碼數(shù)據(jù)按宏塊進(jìn)行編碼,并將每個(gè)宏塊的編碼結(jié)果數(shù)據(jù)依次存儲(chǔ)到FIFO中;然后,編碼單元等候下一組編碼數(shù)據(jù)輸入完畢,開始對(duì)下一組編碼數(shù)據(jù)進(jìn)行編碼和存儲(chǔ),直到編碼完當(dāng)前幀的所有數(shù)據(jù)。
在上述當(dāng)前幀數(shù)據(jù)進(jìn)行編碼的過程中,F(xiàn)IFO中的數(shù)據(jù)不斷累積。當(dāng)FIFO中的數(shù)據(jù)量達(dá)到步驟501中設(shè)置的輸出閾值后,控制輸出FIFO中的編碼結(jié)果數(shù)據(jù)數(shù)據(jù)。
具體地,控制輸出的方式可以為當(dāng)FIFO中的數(shù)據(jù)量達(dá)到輸出閾值后,向編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第一控制信號(hào),通知該設(shè)備讀取FIFO中的編碼結(jié)果數(shù)據(jù);該設(shè)備接收到該第一控制信號(hào)后,響應(yīng)該通知,從FIFO中讀取編碼結(jié)果數(shù)據(jù)。由于其響應(yīng)的過程可長(zhǎng)可短,因此,如前所述,該響應(yīng)時(shí)間也就作為步驟501中設(shè)置FIFO輸出閾值和最大容量的參考因素之一了。
在輸出編碼結(jié)果數(shù)據(jù)時(shí),輸出的數(shù)據(jù)量可以自行設(shè)置,優(yōu)選的輸出數(shù)據(jù)量為,與設(shè)置的輸出閾值等量。如前所述,優(yōu)選地,輸出閾值可以設(shè)置為16行數(shù)據(jù)的編碼結(jié)果數(shù)據(jù)量,這樣,可以在編碼單元等待一組編碼數(shù)據(jù)輸入完畢的過程中,也即圖2所示的空閑段進(jìn)行編碼結(jié)果數(shù)據(jù)的傳輸。在這段時(shí)間內(nèi),系統(tǒng)總線最閑,可以達(dá)到最高的編碼結(jié)果數(shù)據(jù)傳輸效率。
步驟504,在完成當(dāng)前幀的編碼后,將FIFO中剩余的編碼結(jié)果數(shù)據(jù)輸出。
由于完成當(dāng)前幀的編碼后,可能FIFO中的剩余數(shù)據(jù)量低于步驟501中設(shè)置的輸出閾值,因此,在當(dāng)前幀編碼結(jié)束后,一次性將FIFO中剩余的編碼結(jié)果數(shù)據(jù)全部輸出。具體地,可以向編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第二控制信號(hào),并將FIFO中的剩余數(shù)據(jù)量攜帶在其中,通知該設(shè)備讀取該剩余數(shù)據(jù);編碼結(jié)果數(shù)據(jù)的接收設(shè)備接收該第二控制信號(hào),并根據(jù)其中攜帶的剩余數(shù)據(jù)量,從FIFO中讀取所有的剩余編碼結(jié)果數(shù)據(jù)。
至此,即完成了當(dāng)前幀數(shù)據(jù)的編碼和傳輸。圖6為依照上述方式MPEG4一幀壓縮編碼及傳輸時(shí)間的總耗費(fèi)示意圖。通過與圖2的比較可以看出,時(shí)間總耗費(fèi)大大減小。
步驟505,判斷當(dāng)前幀是否為視頻幀序列的最后一幀,若是,則結(jié)束本流程,否則,執(zhí)行步驟506。
步驟506,將視頻幀序列中的下一幀設(shè)為當(dāng)前幀,返回步驟503。
至此,完成了所有視頻幀序列的編碼和傳輸,本發(fā)明的方法流程結(jié)束。這里要說明的是,在執(zhí)行完步驟504后,可以直接執(zhí)行步驟505和506,開始下一幀數(shù)據(jù)的傳輸,這樣,可以提高編碼后的幀率;也可以在步驟505之前,在下一幀進(jìn)行編碼前的空閑時(shí)間內(nèi),利用空閑的系統(tǒng)資源執(zhí)行其它操作??傊?,應(yīng)用本發(fā)明的方法后,減小了一幀壓縮編碼及傳輸時(shí)間的總耗費(fèi),節(jié)省了系統(tǒng)資源。
上述即為本實(shí)施例中傳輸壓縮編碼結(jié)果的方法具體實(shí)施方式
。本實(shí)施例還提供了傳輸壓縮編碼結(jié)果的系統(tǒng),可以用于實(shí)施上述方法。圖7即為本實(shí)施例中傳輸MPEG4編碼結(jié)果的系統(tǒng)具體結(jié)構(gòu)圖。如圖7所示,該系統(tǒng)包括MPEG4編碼器和接收端模塊。其中,MPEG4編碼器即為圖4所示傳輸視頻編碼結(jié)果裝置的一種具體實(shí)施方式
。該MPEG4編碼器包括緩存單元、編碼單元、FIFO和傳輸控制單元。
在圖7所示的系統(tǒng)中,MPEG4編碼器的緩存單元,用于接收輸入的當(dāng)前幀視頻數(shù)據(jù),每當(dāng)輸入的數(shù)據(jù)量達(dá)到編碼基礎(chǔ)數(shù)據(jù)量的整數(shù)倍時(shí),也就是16行數(shù)據(jù)的整數(shù)倍時(shí),緩存單元觸發(fā)編碼單元開始編碼。
編碼單元,接收到緩存單元的觸發(fā)信號(hào)后,從緩存單元中讀取16行視頻數(shù)據(jù),并按宏塊開始編碼,將編碼結(jié)果順序存儲(chǔ)到FIFO中。
傳輸控制單元,用于設(shè)置FIFO的最大容量和輸出閾值,監(jiān)測(cè)FIFO中的數(shù)據(jù)量,在當(dāng)前幀的編碼過程中,每當(dāng)達(dá)到輸出閾值時(shí),向接收端模塊輸出第一控制信號(hào),通知接收端模塊讀取FIFO中的編碼結(jié)果數(shù)據(jù);在當(dāng)前幀完成編碼后,向接收端模塊輸出第二控制信號(hào),并攜帶FIFO中的剩余數(shù)據(jù)量,通知接收端模塊讀取FIFO中剩余的編碼結(jié)果數(shù)據(jù)。
接收端模塊,用于接收傳輸控制單元的控制信號(hào),并判斷該控制信號(hào)的類型,當(dāng)確定該控制信號(hào)為第一控制信號(hào)時(shí),由FIFO中讀取定量的編碼結(jié)果數(shù)據(jù);當(dāng)確定控制信號(hào)為第二控制信號(hào)時(shí),提取控制信號(hào)中攜帶的剩余數(shù)據(jù)量,從FIFO中讀取所有的剩余編碼結(jié)果數(shù)據(jù)。
利用上述系統(tǒng),即能夠?qū)崿F(xiàn)編碼過程與傳輸過程同時(shí)進(jìn)行的目的,最終在完整幀壓縮編碼之后的剩余編碼結(jié)果數(shù)據(jù)將遠(yuǎn)遠(yuǎn)小于完整幀的編碼結(jié)果數(shù)據(jù),則在相臨幀編碼之間用于結(jié)果數(shù)據(jù)傳輸?shù)姆蔷幋a時(shí)間得到極大的縮減,節(jié)省系統(tǒng)的資源。同時(shí),對(duì)于編碼結(jié)果數(shù)據(jù)的傳輸,由于在幀內(nèi)編碼期間,分時(shí)地進(jìn)行編碼結(jié)果數(shù)據(jù)的傳輸,因此能夠相對(duì)地實(shí)現(xiàn)編碼結(jié)果數(shù)據(jù)的均勻輸出。
在上述本發(fā)明的具體實(shí)施例中,均以進(jìn)行MPEG4的編碼為例說明的本發(fā)明的具體實(shí)施方式
。事實(shí)上,當(dāng)采用其它諸如H.263等編碼方式時(shí),本發(fā)明的方法和裝置仍然適用,區(qū)別在于進(jìn)行編碼的基礎(chǔ)數(shù)據(jù)量因宏塊大小的不同可能有所改變。這里就不再贅述。
以上僅為本發(fā)明的較佳實(shí)施例而已,并非用于限定本發(fā)明的保護(hù)范圍。凡在本發(fā)明的精神和原則之內(nèi),所作的任何修改、等同替換、改進(jìn)等,均應(yīng)包含在本發(fā)明的保護(hù)范圍之內(nèi)。
權(quán)利要求
1.一種傳輸視頻壓縮編碼結(jié)果的方法,其特征在于,該方法包括a、設(shè)置先進(jìn)先出存儲(chǔ)器FIFO的最大容量和輸出閾值;b、對(duì)輸入的當(dāng)前幀數(shù)據(jù)編碼,將編碼結(jié)果數(shù)據(jù)輸入FIFO中;在當(dāng)前幀的編碼過程中,每當(dāng)FIFO中的數(shù)據(jù)量達(dá)到輸出閾值時(shí),控制輸出FIFO中的編碼結(jié)果數(shù)據(jù);c、當(dāng)前幀數(shù)據(jù)編碼完成后,控制輸出FIFO中剩余的編碼結(jié)果數(shù)據(jù),并返回步驟b,直到輸出所有的視頻幀編碼結(jié)果數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟a中根據(jù)當(dāng)前幀的編碼結(jié)果產(chǎn)生速度和FIFO中數(shù)據(jù)的輸出速度設(shè)置FIFO的最大容量和輸出閾值。
3.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)編碼視頻幀的尺寸、幀內(nèi)像素?cái)?shù)據(jù)的圖像復(fù)雜度、編碼單元的編碼速度以及編碼的目標(biāo)幀率確定所述編碼結(jié)果產(chǎn)生速度。
4.根據(jù)權(quán)利要求2所述的方法,其特征在于,根據(jù)FIFO與編碼結(jié)果數(shù)據(jù)的接收設(shè)備間傳輸通道的數(shù)據(jù)傳輸速率和該傳輸通道對(duì)于FIFO讀信號(hào)的響應(yīng)時(shí)間確定所述FIFO中數(shù)據(jù)的輸出速度。
5.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b中FIFO每次輸出的編碼結(jié)果數(shù)據(jù)為與設(shè)置的輸出閾值等量的編碼結(jié)果數(shù)據(jù)。
6.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟b中所述控制輸出為向外部編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第一控制信號(hào),通知該接收設(shè)備讀取FIFO中的編碼結(jié)果數(shù)據(jù)。
7.根據(jù)權(quán)利要求1所述的方法,其特征在于,步驟c中所述控制輸出FIFO中剩余的編碼結(jié)果數(shù)據(jù)為向外部編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第二控制信號(hào),并攜帶FIFO中的剩余數(shù)據(jù)量,通知該接收設(shè)備讀取FIFO中剩余的編碼結(jié)果數(shù)據(jù)。
8.根據(jù)權(quán)利要求1到7中任意一項(xiàng)所述的方法,其特征在于,所述編碼結(jié)果數(shù)據(jù)優(yōu)先在當(dāng)前幀編碼的絕對(duì)空閑時(shí)間內(nèi)進(jìn)行輸出。
9.根據(jù)權(quán)利要求8所述的方法,其特征在于,若所述編碼結(jié)果數(shù)據(jù)能夠在當(dāng)前幀編碼的絕對(duì)空閑時(shí)間內(nèi)完成輸出,則將FIFO的輸出閾值和最大容量設(shè)置為等于編碼的基礎(chǔ)數(shù)據(jù)量壓縮后的編碼結(jié)果數(shù)據(jù)量;若所述編碼結(jié)果數(shù)據(jù)未能在當(dāng)前幀編碼的絕對(duì)空閑時(shí)間內(nèi)完成輸出,則設(shè)置FIFO的輸出閾值為小于編碼的基礎(chǔ)數(shù)據(jù)量壓縮后的編碼結(jié)果數(shù)據(jù)量;設(shè)置FIFO的最大容量為大于FIFO的輸出閾值且小于編碼的基礎(chǔ)數(shù)據(jù)量壓縮后的編碼結(jié)果數(shù)據(jù)量。
10.一種傳輸視頻壓縮編碼結(jié)果的裝置,其特征在于,該裝置包括緩存單元、編碼單元、FIFO和傳輸控制單元;所述緩存單元,用于接收輸入的當(dāng)前幀數(shù)據(jù),并觸發(fā)編碼單元開始編碼;所述編碼單元,用于在接收到所述緩存單元的觸發(fā)信號(hào)后,從緩存單元中讀取視頻數(shù)據(jù),并進(jìn)行編碼,將編碼結(jié)果數(shù)據(jù)順序存儲(chǔ)到FIFO中;所述FIFO,用于存儲(chǔ)所述編碼單元發(fā)送的編碼結(jié)果數(shù)據(jù);所述傳輸控制單元,用于設(shè)置所述FIFO的最大容量和輸出閾值,監(jiān)測(cè)所述FIFO中的數(shù)據(jù)量,在當(dāng)前幀的編碼過程中,每當(dāng)所述FIFO中的數(shù)據(jù)量達(dá)到輸出閾值時(shí),控制所述FIFO輸出編碼結(jié)果數(shù)據(jù);在當(dāng)前幀完成編碼后,控制所述FIFO輸出剩余的編碼結(jié)果數(shù)據(jù)。
11.根據(jù)權(quán)利要求10所述的裝置,其特征在于,所述傳輸控制單元,用于在監(jiān)測(cè)到所述FIFO中的數(shù)據(jù)量達(dá)到設(shè)置的輸出閾值時(shí),向編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第一控制信號(hào),通知該設(shè)備讀取所述FIFO中的編碼結(jié)果數(shù)據(jù);還用于在當(dāng)前幀完成編碼后,向編碼結(jié)果數(shù)據(jù)的接收設(shè)備發(fā)送第二控制信號(hào),并攜帶所述FIFO中的剩余數(shù)據(jù)量,通知該設(shè)備讀取所述FIFO中剩余的編碼結(jié)果數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種傳輸視頻壓縮編碼結(jié)果的方法,包括a.設(shè)置先進(jìn)先出存儲(chǔ)器FIFO的最大容量和輸出閾值;b.接收輸入的當(dāng)前幀數(shù)據(jù),并對(duì)接收到的數(shù)據(jù)進(jìn)行壓縮編碼,將編碼結(jié)果輸入FIFO中;每當(dāng)FIFO中的可讀數(shù)據(jù)量達(dá)到輸出閾值時(shí),控制輸出FIFO中的編碼結(jié)果數(shù)據(jù);c.當(dāng)前幀數(shù)據(jù)編碼完成后,控制輸出FIFO中剩余的編碼結(jié)果數(shù)據(jù),并返回步驟b,直到輸出所有的視頻幀編碼數(shù)據(jù)。本發(fā)明還公開了一種傳輸視頻壓縮編碼結(jié)果的裝置,包括緩存單元、編碼單元、FIFO和傳輸控制單元。應(yīng)用本發(fā)明的方法和裝置,可以很好地利用編碼與輸入數(shù)據(jù)間空閑時(shí)隙內(nèi)的總線資源,能夠節(jié)省整個(gè)編碼與傳輸過程中占用的系統(tǒng)資源。
文檔編號(hào)H04N7/24GK101039429SQ20071009894
公開日2007年9月19日 申請(qǐng)日期2007年4月29日 優(yōu)先權(quán)日2007年4月29日
發(fā)明者陳東瑛 申請(qǐng)人:北京中星微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評(píng)論。精彩留言會(huì)獲得點(diǎn)贊!
1
徐水县| 邳州市| 滁州市| 崇信县| 湖州市| 阿瓦提县| 红桥区| 太仓市| 开鲁县| 淅川县| 南康市| 迁西县| 肃宁县| 三江| 天水市| 永新县| 松桃| 宜兰市| 灵丘县| 房产| 甘孜| 蓬安县| 闽清县| 巴林右旗| 简阳市| 巴马| 明水县| 浏阳市| 罗田县| 沁水县| 交城县| 阳东县| 米泉市| 普兰县| 会宁县| 吐鲁番市| 涞源县| 海原县| 宁强县| 商洛市| 蓝田县|