專利名稱:一種傳輸視頻壓縮編碼結果的方法和裝置的制作方法
技術領域:
本發(fā)明涉及一種視頻信號傳輸技術,特別涉及一種實時傳輸視頻壓縮編碼結果的方法和裝置。
背景技術:
目前,在對視頻圖像進行端到端的傳輸時,為節(jié)省傳輸所需的帶寬資源,通常要對傳輸?shù)囊曨l圖像進行壓縮編碼。目前的視頻編碼算法通常以宏塊為單位進行,在編碼過程中,首先將當前幀逐行輸入緩存單元,當?shù)竭_可以編碼的基礎數(shù)據(jù)量后,編碼單元由緩存單元中取出原始視頻數(shù)據(jù),按宏塊為單位進行編碼,并在完成每個宏塊的編碼后,將該編碼結果存儲到預先設置好的存儲單元中。到當前幀的數(shù)據(jù)編碼結束后,觸發(fā)外部數(shù)據(jù)通道將存儲單元中當前幀的編碼結果讀走,進行后續(xù)處理或進行傳輸。
舉個例子說明上述過程,當采用MPEG4對視頻圖像進行壓縮編碼時,宏塊大小為16行×16列。由于數(shù)據(jù)是逐行輸入,因此相應地,可以進行編碼的基礎數(shù)據(jù)量為16行,也就是說,當輸入緩存單元的當前幀數(shù)據(jù)達到16行后,編碼單元開始啟動編碼,讀取緩存單元中的16行數(shù)據(jù)按宏塊進行編碼。每完成一個宏塊的編碼,編碼單元將該編碼結果存儲到預設的存儲單元中。圖1為進行MPEG4編碼時,輸入過程與編碼過程的關系示意圖。如圖1所示,通常視頻數(shù)據(jù)的輸入速度總是低于壓縮編碼的速度,當緩存單元準備好16行數(shù)據(jù)后,編碼單元開始編碼該16行數(shù)據(jù),同時,緩存單元開始接收輸入的下一組16行數(shù)據(jù)。由于壓縮編碼速度高于數(shù)據(jù)的輸入速度,因此當編碼單元在T1時刻已編碼完成當前的16行數(shù)據(jù)時,緩存單元還未將下一組16行數(shù)據(jù)準備好;那么在T1時刻到下一組16行數(shù)據(jù)準備好的T2時刻間,形成了壓縮編碼空閑時隙,也稱為當前幀編碼的絕對空閑時間,這段時間內,編碼器內部總線是空閑的。另外,在圖1中的T1時刻前的實際編碼時間內,系統(tǒng)總線也并不是全部處于被占用狀態(tài),在該時間內,總線還是會存在一些細碎的空閑時隙,將這些在實際編碼時間內的空閑時隙稱為當前幀編碼的相對空閑時間。當?shù)竭_T2時刻后,編碼單元繼續(xù)進行下一組16行數(shù)據(jù)的編碼。直到當前幀編碼結束,再由低速數(shù)據(jù)傳輸通道傳出存儲單元中完整幀壓縮編碼結果,即利用幀間的非編碼時間傳輸當前幀的編碼結果??傮w看來,一幀壓縮編碼及傳輸?shù)臅r間總耗費如圖2所示。
由圖2能直觀地看到,在上述的編碼結果傳輸方式中,在絕對空閑時間內,總線上沒有數(shù)據(jù)傳輸,另外,在相對空閑時間內(圖2中未示出)總線也同樣處于空閑狀態(tài),這些空閑時間內的總線空閑均造成了系統(tǒng)資源的極大浪費,并且在相臨幀編碼之間耗費大量非編碼時間,消極影響了幀率控制能力。另外,當壓縮的視頻幀尺寸越小,絕對空閑時間會越長,資源浪費越大。當壓縮的視頻幀尺寸較大時,壓縮后的編碼數(shù)據(jù)量也相對較大,對于存儲單元中的存儲空間要求也就越大,事實上,也是對硬件配置的較高要求。
發(fā)明內容
有鑒于此,本發(fā)明提供一種傳輸視頻壓縮編碼結果的方法和裝置,能夠節(jié)省系統(tǒng)資源。
為實現(xiàn)上述目的,本發(fā)明采用如下的技術方案一種傳輸視頻壓縮編碼結果的方法,包括a、設置先進先出存儲器FIFO的最大容量和輸出閾值;b、對輸入的當前幀數(shù)據(jù)編碼,將編碼結果數(shù)據(jù)輸入FIFO中;在當前幀的編碼過程中,每當FIFO中的數(shù)據(jù)量達到輸出閾值時,控制輸出FIFO中的編碼結果數(shù)據(jù);c、當前幀數(shù)據(jù)編碼完成后,控制輸出FIFO中剩余的編碼結果數(shù)據(jù),并返回步驟b,直到輸出所有的視頻幀編碼結果數(shù)據(jù)。
較佳地,步驟a中根據(jù)當前幀的編碼結果的產生速度和FIFO中數(shù)據(jù)的輸出速度設置FIFO的最大容量和輸出閾值。
較佳地,根據(jù)編碼視頻幀的尺寸、幀內像素數(shù)據(jù)的圖像復雜度、編碼單元的編碼速度以及編碼的目標幀率確定所述編碼結果產生速度。
較佳地,根據(jù)FIFO與編碼結果數(shù)據(jù)的接收設備間傳輸通道的數(shù)據(jù)傳輸速率和該傳輸通道對于FIFO讀信號的響應時間確定所述FIFO中數(shù)據(jù)的輸出速度。
較佳地,步驟b中FIFO每次輸出的編碼結果數(shù)據(jù)為與設置的輸出閾值等量的編碼結果數(shù)據(jù)。
較佳地,步驟b中所述控制輸出為向外部編碼結果數(shù)據(jù)的接收設備發(fā)送第一控制信號,通知該接收設備讀取FIFO中的編碼結果數(shù)據(jù)。
較佳地,步驟c中所述控制輸出FIFO中剩余的編碼結果數(shù)據(jù)為向外部編碼結果數(shù)據(jù)的接收設備發(fā)送第二控制信號,并攜帶FIFO中的剩余數(shù)據(jù)量,通知該接收設備讀取FIFO中剩余的編碼結果數(shù)據(jù)。
較佳地,所述編碼結果數(shù)據(jù)優(yōu)先在當前幀編碼的絕對空閑時間內進行輸出。
較佳地,若所述編碼結果數(shù)據(jù)能夠在當前幀編碼的絕對空閑時間內完成輸出,則將FIFO的輸出閾值和最大容量設置為等于編碼的基礎數(shù)據(jù)量壓縮后的編碼結果數(shù)據(jù)量;若所述編碼結果數(shù)據(jù)未能在當前幀編碼的絕對空閑時間內完成輸出,則設置FIFO的輸出閾值為小于編碼的基礎數(shù)據(jù)量壓縮后的編碼結果數(shù)據(jù)量;設置FIFO的最大容量為大于FIFO的輸出閾值且小于編碼的基礎數(shù)據(jù)量壓縮后的編碼結果數(shù)據(jù)量。
一種傳輸視頻壓縮編碼結果的裝置,包括緩存單元、編碼單元、FIFO和傳輸控制單元;所述緩存單元,用于接收輸入的當前幀數(shù)據(jù),并觸發(fā)編碼單元開始編碼;所述編碼單元,用于在接收到所述緩存單元的觸發(fā)信號后,從緩存單元中讀取視頻數(shù)據(jù),并進行編碼,將編碼結果數(shù)據(jù)順序存儲到FIFO中;所述FIFO,用于存儲所述編碼單元發(fā)送的編碼結果數(shù)據(jù);所述傳輸控制單元,用于設置所述FIFO的最大容量和輸出閾值,監(jiān)測所述FIFO中的數(shù)據(jù)量,在當前幀的編碼過程中,每當所述FIFO中的數(shù)據(jù)量達到輸出閾值時,控制所述FIFO輸出編碼結果數(shù)據(jù);在當前幀完成編碼后,控制所述FIFO輸出剩余的編碼結果數(shù)據(jù)。
較佳地,所述傳輸控制單元,用于在監(jiān)測到所述FIFO中的數(shù)據(jù)量達到設置的輸出閾值時,向編碼結果數(shù)據(jù)的接收設備發(fā)送第一控制信號,通知該設備讀取所述FIFO中的編碼結果數(shù)據(jù);還用于在當前幀完成編碼后,向編碼結果數(shù)據(jù)的接收設備發(fā)送第二控制信號,并攜帶所述FIFO中的剩余數(shù)據(jù)量,通知該設備讀取所述FIFO中剩余的編碼結果數(shù)據(jù)。
由上述技術方案可見,本發(fā)明中,利用先進先出存儲器(FIFO)作為存儲編碼結果的存儲單元,首先設置FIFO的最大容量和輸出閾值,然后編碼單元將每個宏塊編碼后的結果順序存儲在FIFO中,在當前幀的編碼過程中,當FIFO中的可讀編碼結果數(shù)據(jù)量達到輸出閾值時,即輸出與設置的輸出閾值等量的編碼結果數(shù)據(jù);在當前幀編碼結束后,再輸出FIFO中剩余的數(shù)據(jù)。由于在本發(fā)明的方法和裝置中,編碼結果的存儲單元為FIFO,因此可以實現(xiàn)編碼結果讀寫的同時進行,在未完成當前幀的全部編碼前,可以傳輸部分編碼結果數(shù)據(jù),具體從FIFO中讀數(shù)據(jù)的時間由設置的輸出閾值來控制。這樣,在當前幀的編碼過程中,可以很好地利用包括相對空閑時間和絕對空閑時間在內的空閑時隙內的總線資源,傳輸部分編碼結果數(shù)據(jù),大大減少了當前幀編碼全部結束后,用于傳輸編碼結果數(shù)據(jù)的時間,以節(jié)省整個編碼與傳輸過程中占用的系統(tǒng)資源。
更進一步地,為使系統(tǒng)資源得到最佳利用,在設置FIFO的最大容量和輸出閾值時,要結合當前幀編碼結果的產生速度和FIFO中數(shù)據(jù)的輸出速度來綜合考慮,以最大限度利用系統(tǒng)空閑資源、且不影響編碼等其它資源的占用。
圖1為目前進行MPEG4編碼時,輸入過程與編碼過程的關系示意圖。
圖2為現(xiàn)有的一幀壓縮編碼及傳輸?shù)臅r間總耗費。
圖3為本發(fā)明提供的傳輸視頻壓縮編碼結果的方法總體流程圖。
圖4為本發(fā)明中傳輸視頻壓縮編碼結構的裝置總體結構圖。
圖5為本發(fā)明實施例中傳輸視頻壓縮編碼結果的方法具體流程圖。
圖6為依照本發(fā)明的方式,MPEG4一幀壓縮編碼及傳輸時間的總耗費示意圖。
圖7為本發(fā)明實施例中傳輸視頻壓縮編碼結果的系統(tǒng)具體結構圖。
具體實施例方式
為使本發(fā)明的目的、技術手段和優(yōu)點更加清楚明白,以下結合附圖,并舉實施例對本發(fā)明作進一步詳細說明。
本發(fā)明的基本思想是充分利用包括相對空閑時間和絕對空閑時間在內的空閑時隙,以最大化系統(tǒng)資源利用率,節(jié)省編碼和傳輸過程中占用的總的系統(tǒng)資源。
圖3為本發(fā)明提供的傳輸視頻壓縮編碼結果的方法總體流程圖。如圖3所示,該方法包括步驟301,設置編碼結果存儲單元FIFO的最大容量和輸出閾值。
步驟302,對輸入的當前幀數(shù)據(jù)進行壓縮編碼,將編碼結果輸入FIFO中;在當前幀的編碼過程中,當FIFO中的可讀數(shù)據(jù)量達到輸出閾值時,控制輸出FIFO中的編碼結果數(shù)據(jù)。
步驟303,當前幀數(shù)據(jù)編碼完成后,輸出FIFO中剩余的編碼結果數(shù)據(jù),并返回步驟302,直到輸出所有的視頻幀編碼數(shù)據(jù)。
至此,本發(fā)明提供的傳輸視頻壓縮編碼結果的方法總體流程結束。本發(fā)明還提供了傳輸視頻壓縮編碼結果的裝置。圖4即為本發(fā)明中傳輸視頻壓縮編碼結果的裝置總體結構圖。如圖4所示,該裝置包括緩存單元、編碼單元、FIFO和傳輸控制單元。
在圖4所示的裝置中,緩存單元,用于接收輸入的當前幀視頻數(shù)據(jù),每當輸入的數(shù)據(jù)量達到編碼基礎數(shù)據(jù)量的整數(shù)倍時,緩存單元觸發(fā)編碼單元開始編碼。
編碼單元,接收到緩存單元的觸發(fā)信號后,從緩存單元中讀取視頻數(shù)據(jù),并按宏塊開始編碼,將編碼結果順序存儲到FIFO中。
FIFO,用于存儲編碼單元發(fā)送的編碼結果數(shù)據(jù)。
傳輸控制單元,用于設置FIFO的最大容量和輸出閾值,監(jiān)測FIFO中的可讀數(shù)據(jù)量,在當前幀的編碼過程中,每當達到輸出閾值時,控制FIFO輸出編碼結果數(shù)據(jù);在當前幀完成編碼后,控制FIFO輸出剩余的編碼結果數(shù)據(jù)。
具體地,傳輸控制單元可以通過發(fā)送不同的控制信號,實現(xiàn)在當前幀編碼的不同階段,控制輸出FIFO中編碼結果數(shù)據(jù)。優(yōu)選的方式可以為在編碼過程中,向外部接收編碼結果數(shù)據(jù)的接收設備發(fā)送第一控制信號,通知該接收設備讀取定量的編碼結果數(shù)據(jù);在編碼完成后,發(fā)送第二控制信號,通知接收設備讀取剩余的編碼結果數(shù)據(jù)。
由上述可見,本發(fā)明的方法和裝置中,將編碼單元的編碼結果存儲到FIFO中,這樣,在當前幀的編碼過程中,可以利用包括相對空閑時間和絕對空閑時間在內的空閑時隙實現(xiàn)編碼結果的傳輸,于是,當當前幀編碼結束時,需要傳輸?shù)木幋a結果數(shù)據(jù)量大大減小,節(jié)省了用于幀間傳輸?shù)姆蔷幋a時間的耗費,節(jié)省了系統(tǒng)資源。
上述即為本發(fā)明的總體概述,下面以傳輸MPEG4編碼結果為例,說明本發(fā)明的具體實施方式
。
實施例本實施例中,采用的編碼算法為MPEG4,其宏塊大小為16×16,也就是說編碼的基礎數(shù)據(jù)量為16行。編碼結果傳輸給接收端模塊,進行后續(xù)處理或解碼觀看。
圖5為本發(fā)明實施例中傳輸視頻壓縮編碼結果的方法具體流程圖。如圖5所示,該方法包括步驟501,設置編碼結果存儲單元FIFO的最大容量和輸出閾值。
本步驟中,設置FIFO最大容量和輸出閾值的具體方式可以為根據(jù)編碼結果的平均產生速度和FIFO中數(shù)據(jù)的輸出速度設置,使得既限制FIFO所占的存儲空間盡量小、又防止FIFO中的數(shù)據(jù)溢出。優(yōu)選地,使FIFO中數(shù)據(jù)的輸出盡量利用當前視頻編碼的絕對空閑時間進行,在本實施例中,也就是利用每16行的絕對空閑時間進行編碼結果數(shù)據(jù)的傳輸。具體地,編碼結果的平均產生速度與編碼視頻幀的尺寸、幀內像素數(shù)據(jù)的圖像復雜度、編碼單元的編碼速度以及編碼的目標幀率有關。FIFO中數(shù)據(jù)的輸出速度與傳輸通道的數(shù)據(jù)傳輸速率和該傳輸通道對于FIFO讀信號的反映速度有關。顯然,本領域技術人員能夠依據(jù)上述指標,進行FIFO最大容量和輸出閾值的設置。
優(yōu)選地,根據(jù)編碼結果產生速度和FIFO中數(shù)據(jù)輸出速度的匹配關系可以如下設置輸出閾值和最大容量如果16行數(shù)據(jù)壓縮后的編碼結果數(shù)據(jù)量能夠在每16行的絕對空閑時間內傳輸完畢,那么可以將FIFO中的輸出閾值設置為16行數(shù)據(jù)壓縮后的編碼結果數(shù)據(jù)量,將最大容量設置為與輸出閾值相等。這樣,能夠保證在編碼單元完成16行數(shù)據(jù)的編碼后,開始進行編碼結果的傳輸,從而保證在總線最空閑的階段傳輸數(shù)據(jù)。通常,對于小尺寸的視頻幀(如VGA、CIF和QCIF大小的視頻幀),由于其編碼結果的數(shù)據(jù)量較小,其每16行的編碼空閑段遠大于進行編碼的時間段,也就是說,圖2中空閑段A2與非空閑段A1間的比例較大,對于這類的視頻幀比較容易滿足上述條件,適合采用上述的輸出閾值設置;但對于16行數(shù)據(jù)壓縮后的編碼結果數(shù)據(jù)量很大(如D1格式等的大尺寸視頻幀的編碼)的視頻幀,其每16行的絕對空閑時間很短,甚至會為0,由于絕對空閑時間縮短、加之需要傳輸?shù)慕Y果數(shù)據(jù)量較大,這類的視頻幀很難在每16行的絕對空閑時間內將16行編碼后的數(shù)據(jù)結果傳輸完畢;另外,在編碼結果數(shù)據(jù)的輸出速度很慢的情況下,也有可能在每16行的絕對空閑時間內無法將16行編碼后的數(shù)據(jù)結果傳輸完畢;對于上述這些在絕對空閑時間內無法將編碼結果數(shù)據(jù)傳輸完畢的視頻幀,可以在設置輸出閾值時,使該閾值小于16行數(shù)據(jù)壓縮后的編碼結果數(shù)據(jù)量,從而能夠較早地開始傳輸編碼結果數(shù)據(jù),以利用相對空閑時間盡量多地傳輸編碼結果數(shù)據(jù)。這樣,大大減少了編碼結果數(shù)據(jù)存儲空間的大小、縮短了幀間用于傳輸編碼結果數(shù)據(jù)的時間。根據(jù)對輸出閾值的上述設置,再結合前述的各項指標即可以設置FIFO的最大容量。
下面通過一個具體的例子說明上述輸出閾值和最大容量設置假定16行當前幀數(shù)據(jù)的輸入時間為IN_N,IN_N取決于當前視頻幀的尺寸和幀率等;16行當前幀數(shù)據(jù)壓縮時間為ENC_N,ENC_N取決于幀內像素數(shù)據(jù)的圖像復雜度和壓縮工作時鐘等;16行內的絕對空閑時間(即本發(fā)明中所述的編碼空閑時隙)IDLE_A_N為輸入時間與壓縮時間之差,即IDLE_A_N=IN_N-EN_N;16行內相對空閑時間IDLE_R_N為編碼過程中的空閑時間。16行壓縮數(shù)據(jù)輸出時間為TRN_N=(TRN_A_N+WAIT_N*COMPRESSED_N/THD_N);其中,TRN_A_N為16行壓縮數(shù)據(jù)輸出實際傳輸時間,TRN_A_N取決于16行數(shù)據(jù)的編碼結果數(shù)據(jù)量和輸出的數(shù)據(jù)通道傳輸速率等;WAIT_N為每次壓縮數(shù)據(jù)輸出請求等待時間,WAIT_N取決于編碼結果數(shù)據(jù)接收設備的反應速率等;COMPRESSED_N為16行數(shù)據(jù)的編碼結果數(shù)據(jù)量;THD_N為設置的FIFO輸出閾值;FIFO的最大容量為FIFO_N。
基于上述各個物理量的表示,F(xiàn)IFO輸出閾值和最大容量可以如下設置一、當TRN_N<=IDLE_A_N時,也就是說,16行編碼結果數(shù)據(jù)能夠在絕對空閑時間(即編碼過程中的空閑時隙)內傳輸完畢,則將FIFO輸出閾值和FIFO的最大容量均設置為與16行數(shù)據(jù)編碼后的編碼結果數(shù)據(jù)量相等,即THD_N=FIFO_N=COMPRESSED_N。這樣,對于當前幀的編碼結果數(shù)據(jù),將在每16行數(shù)據(jù)編碼完成后,即開始傳輸,并且在絕對空閑時間內完成傳輸,同時,保證FIFO占用的空間盡量小。
二、當TRN_N=(IDLE_A_N+IDLE_R_N*X),且0<X<1時,也就是說,16行編碼結果數(shù)據(jù)不能在絕對空閑時間內傳輸完畢,但能在16行內的絕對空閑時間與相對空閑時間的總時間內傳輸完畢。這時,將FIFO輸出閾值設置為小于16行數(shù)據(jù)的編碼結果數(shù)據(jù)量,具體可以為THD_N<=COMPRESSED_N*(1-X),而將FIFO的最大容量設置為大于COMPRESSED_N*(1-X)且小于16行數(shù)據(jù)的編碼結果數(shù)據(jù)量,以一方面保證FIFO不溢出,另一方面盡量節(jié)省FIFO占用的空間;同時可以根據(jù)WAIT_N動態(tài)調整FIFO的輸出閾值和最大容量,使TRN_N取最小值。由于16行的編碼數(shù)據(jù)無法在16行數(shù)據(jù)的絕對空閑時間內完成傳輸,因此,將FIFO的輸出閾值設置為小于16行數(shù)據(jù)的編碼結果數(shù)據(jù)量,以在完成16行數(shù)據(jù)中的部分數(shù)據(jù)編碼時,即開始傳輸編碼結果數(shù)據(jù),從而盡可能地利用編碼過程中的相對空閑時間傳輸編碼結果數(shù)據(jù),同時將FIFO的最大容量作適當調整以保證不溢出,且盡量節(jié)省占用的空間。
三、當TRN_N>(IDLE_A_N+IDLE_R_N)時,也就是說,16行編碼結果數(shù)據(jù)無法在16行內的絕對空閑時間與相對空閑時間的總時間內傳輸完畢,這種情況下,即將FIFO輸出閾值設置為小于16行數(shù)據(jù)的編碼結果數(shù)據(jù)量,具體可以根據(jù)WAIT_N的取值,適當?shù)卦O置一個大于0且小于等于1的Y,將FIFO輸出閾值設置為THD_N=COMPRESSED_N*Y,以使TRN_N取最小值,F(xiàn)IFO的最大容量設置為大于輸出閾值且小于COMPRESSED_N,以節(jié)省FIFO所占的空間。與第二種情況類似,本情況中也將在未完成16行數(shù)據(jù)的編碼時,已經開始利用編碼過程中的相對空閑時間傳輸編碼結果數(shù)據(jù),與第二種情況的差別在于,開始傳輸編碼結果數(shù)據(jù)的時間可能更早,以盡可能地利用系統(tǒng)的空閑資源;同時,適當設置FIFO的最大容量,保證不溢出且盡量少占用空間。
在上述輸出閾值和最大容量的設置過程中,之所以選擇16行為標準是因為,眾多的壓縮編碼算法中,進行編碼的宏塊大小為16行×16列。經實驗結果證明,根據(jù)上述方式設置FIFO的最大容量和輸出閾值后,在當前幀編碼結束時,F(xiàn)IFO中剩余的編碼結果數(shù)據(jù)量最小,因此幀間用于傳輸編碼結果的時間也最短,最大程度地節(jié)省了系統(tǒng)資源。
通過下述步驟實現(xiàn)視頻幀序列的編碼以及編碼結果的傳輸。
步驟502,將視頻幀序列中的第一幀設為當前幀。
步驟503,對當前幀數(shù)據(jù)進行編碼,并按照步驟501中的設置控制輸出FIFO中的編碼結果數(shù)據(jù)。
本步驟中,對當前幀數(shù)據(jù)進行編碼時,以宏塊為單位進行,如前所述本實施例中的宏塊大小為16×16,具體編碼過程包括輸入當前幀的第一組編碼數(shù)據(jù)(即16行數(shù)據(jù)),編碼單元對這一組編碼數(shù)據(jù)按宏塊進行編碼,并將每個宏塊的編碼結果數(shù)據(jù)依次存儲到FIFO中;然后,編碼單元等候下一組編碼數(shù)據(jù)輸入完畢,開始對下一組編碼數(shù)據(jù)進行編碼和存儲,直到編碼完當前幀的所有數(shù)據(jù)。
在上述當前幀數(shù)據(jù)進行編碼的過程中,F(xiàn)IFO中的數(shù)據(jù)不斷累積。當FIFO中的數(shù)據(jù)量達到步驟501中設置的輸出閾值后,控制輸出FIFO中的編碼結果數(shù)據(jù)數(shù)據(jù)。
具體地,控制輸出的方式可以為當FIFO中的數(shù)據(jù)量達到輸出閾值后,向編碼結果數(shù)據(jù)的接收設備發(fā)送第一控制信號,通知該設備讀取FIFO中的編碼結果數(shù)據(jù);該設備接收到該第一控制信號后,響應該通知,從FIFO中讀取編碼結果數(shù)據(jù)。由于其響應的過程可長可短,因此,如前所述,該響應時間也就作為步驟501中設置FIFO輸出閾值和最大容量的參考因素之一了。
在輸出編碼結果數(shù)據(jù)時,輸出的數(shù)據(jù)量可以自行設置,優(yōu)選的輸出數(shù)據(jù)量為,與設置的輸出閾值等量。如前所述,優(yōu)選地,輸出閾值可以設置為16行數(shù)據(jù)的編碼結果數(shù)據(jù)量,這樣,可以在編碼單元等待一組編碼數(shù)據(jù)輸入完畢的過程中,也即圖2所示的空閑段進行編碼結果數(shù)據(jù)的傳輸。在這段時間內,系統(tǒng)總線最閑,可以達到最高的編碼結果數(shù)據(jù)傳輸效率。
步驟504,在完成當前幀的編碼后,將FIFO中剩余的編碼結果數(shù)據(jù)輸出。
由于完成當前幀的編碼后,可能FIFO中的剩余數(shù)據(jù)量低于步驟501中設置的輸出閾值,因此,在當前幀編碼結束后,一次性將FIFO中剩余的編碼結果數(shù)據(jù)全部輸出。具體地,可以向編碼結果數(shù)據(jù)的接收設備發(fā)送第二控制信號,并將FIFO中的剩余數(shù)據(jù)量攜帶在其中,通知該設備讀取該剩余數(shù)據(jù);編碼結果數(shù)據(jù)的接收設備接收該第二控制信號,并根據(jù)其中攜帶的剩余數(shù)據(jù)量,從FIFO中讀取所有的剩余編碼結果數(shù)據(jù)。
至此,即完成了當前幀數(shù)據(jù)的編碼和傳輸。圖6為依照上述方式MPEG4一幀壓縮編碼及傳輸時間的總耗費示意圖。通過與圖2的比較可以看出,時間總耗費大大減小。
步驟505,判斷當前幀是否為視頻幀序列的最后一幀,若是,則結束本流程,否則,執(zhí)行步驟506。
步驟506,將視頻幀序列中的下一幀設為當前幀,返回步驟503。
至此,完成了所有視頻幀序列的編碼和傳輸,本發(fā)明的方法流程結束。這里要說明的是,在執(zhí)行完步驟504后,可以直接執(zhí)行步驟505和506,開始下一幀數(shù)據(jù)的傳輸,這樣,可以提高編碼后的幀率;也可以在步驟505之前,在下一幀進行編碼前的空閑時間內,利用空閑的系統(tǒng)資源執(zhí)行其它操作??傊?,應用本發(fā)明的方法后,減小了一幀壓縮編碼及傳輸時間的總耗費,節(jié)省了系統(tǒng)資源。
上述即為本實施例中傳輸壓縮編碼結果的方法具體實施方式
。本實施例還提供了傳輸壓縮編碼結果的系統(tǒng),可以用于實施上述方法。圖7即為本實施例中傳輸MPEG4編碼結果的系統(tǒng)具體結構圖。如圖7所示,該系統(tǒng)包括MPEG4編碼器和接收端模塊。其中,MPEG4編碼器即為圖4所示傳輸視頻編碼結果裝置的一種具體實施方式
。該MPEG4編碼器包括緩存單元、編碼單元、FIFO和傳輸控制單元。
在圖7所示的系統(tǒng)中,MPEG4編碼器的緩存單元,用于接收輸入的當前幀視頻數(shù)據(jù),每當輸入的數(shù)據(jù)量達到編碼基礎數(shù)據(jù)量的整數(shù)倍時,也就是16行數(shù)據(jù)的整數(shù)倍時,緩存單元觸發(fā)編碼單元開始編碼。
編碼單元,接收到緩存單元的觸發(fā)信號后,從緩存單元中讀取16行視頻數(shù)據(jù),并按宏塊開始編碼,將編碼結果順序存儲到FIFO中。
傳輸控制單元,用于設置FIFO的最大容量和輸出閾值,監(jiān)測FIFO中的數(shù)據(jù)量,在當前幀的編碼過程中,每當達到輸出閾值時,向接收端模塊輸出第一控制信號,通知接收端模塊讀取FIFO中的編碼結果數(shù)據(jù);在當前幀完成編碼后,向接收端模塊輸出第二控制信號,并攜帶FIFO中的剩余數(shù)據(jù)量,通知接收端模塊讀取FIFO中剩余的編碼結果數(shù)據(jù)。
接收端模塊,用于接收傳輸控制單元的控制信號,并判斷該控制信號的類型,當確定該控制信號為第一控制信號時,由FIFO中讀取定量的編碼結果數(shù)據(jù);當確定控制信號為第二控制信號時,提取控制信號中攜帶的剩余數(shù)據(jù)量,從FIFO中讀取所有的剩余編碼結果數(shù)據(jù)。
利用上述系統(tǒng),即能夠實現(xiàn)編碼過程與傳輸過程同時進行的目的,最終在完整幀壓縮編碼之后的剩余編碼結果數(shù)據(jù)將遠遠小于完整幀的編碼結果數(shù)據(jù),則在相臨幀編碼之間用于結果數(shù)據(jù)傳輸?shù)姆蔷幋a時間得到極大的縮減,節(jié)省系統(tǒng)的資源。同時,對于編碼結果數(shù)據(jù)的傳輸,由于在幀內編碼期間,分時地進行編碼結果數(shù)據(jù)的傳輸,因此能夠相對地實現(xiàn)編碼結果數(shù)據(jù)的均勻輸出。
在上述本發(fā)明的具體實施例中,均以進行MPEG4的編碼為例說明的本發(fā)明的具體實施方式
。事實上,當采用其它諸如H.263等編碼方式時,本發(fā)明的方法和裝置仍然適用,區(qū)別在于進行編碼的基礎數(shù)據(jù)量因宏塊大小的不同可能有所改變。這里就不再贅述。
以上僅為本發(fā)明的較佳實施例而已,并非用于限定本發(fā)明的保護范圍。凡在本發(fā)明的精神和原則之內,所作的任何修改、等同替換、改進等,均應包含在本發(fā)明的保護范圍之內。
權利要求
1.一種傳輸視頻壓縮編碼結果的方法,其特征在于,該方法包括a、設置先進先出存儲器FIFO的最大容量和輸出閾值;b、對輸入的當前幀數(shù)據(jù)編碼,將編碼結果數(shù)據(jù)輸入FIFO中;在當前幀的編碼過程中,每當FIFO中的數(shù)據(jù)量達到輸出閾值時,控制輸出FIFO中的編碼結果數(shù)據(jù);c、當前幀數(shù)據(jù)編碼完成后,控制輸出FIFO中剩余的編碼結果數(shù)據(jù),并返回步驟b,直到輸出所有的視頻幀編碼結果數(shù)據(jù)。
2.根據(jù)權利要求1所述的方法,其特征在于,步驟a中根據(jù)當前幀的編碼結果產生速度和FIFO中數(shù)據(jù)的輸出速度設置FIFO的最大容量和輸出閾值。
3.根據(jù)權利要求2所述的方法,其特征在于,根據(jù)編碼視頻幀的尺寸、幀內像素數(shù)據(jù)的圖像復雜度、編碼單元的編碼速度以及編碼的目標幀率確定所述編碼結果產生速度。
4.根據(jù)權利要求2所述的方法,其特征在于,根據(jù)FIFO與編碼結果數(shù)據(jù)的接收設備間傳輸通道的數(shù)據(jù)傳輸速率和該傳輸通道對于FIFO讀信號的響應時間確定所述FIFO中數(shù)據(jù)的輸出速度。
5.根據(jù)權利要求1所述的方法,其特征在于,步驟b中FIFO每次輸出的編碼結果數(shù)據(jù)為與設置的輸出閾值等量的編碼結果數(shù)據(jù)。
6.根據(jù)權利要求1所述的方法,其特征在于,步驟b中所述控制輸出為向外部編碼結果數(shù)據(jù)的接收設備發(fā)送第一控制信號,通知該接收設備讀取FIFO中的編碼結果數(shù)據(jù)。
7.根據(jù)權利要求1所述的方法,其特征在于,步驟c中所述控制輸出FIFO中剩余的編碼結果數(shù)據(jù)為向外部編碼結果數(shù)據(jù)的接收設備發(fā)送第二控制信號,并攜帶FIFO中的剩余數(shù)據(jù)量,通知該接收設備讀取FIFO中剩余的編碼結果數(shù)據(jù)。
8.根據(jù)權利要求1到7中任意一項所述的方法,其特征在于,所述編碼結果數(shù)據(jù)優(yōu)先在當前幀編碼的絕對空閑時間內進行輸出。
9.根據(jù)權利要求8所述的方法,其特征在于,若所述編碼結果數(shù)據(jù)能夠在當前幀編碼的絕對空閑時間內完成輸出,則將FIFO的輸出閾值和最大容量設置為等于編碼的基礎數(shù)據(jù)量壓縮后的編碼結果數(shù)據(jù)量;若所述編碼結果數(shù)據(jù)未能在當前幀編碼的絕對空閑時間內完成輸出,則設置FIFO的輸出閾值為小于編碼的基礎數(shù)據(jù)量壓縮后的編碼結果數(shù)據(jù)量;設置FIFO的最大容量為大于FIFO的輸出閾值且小于編碼的基礎數(shù)據(jù)量壓縮后的編碼結果數(shù)據(jù)量。
10.一種傳輸視頻壓縮編碼結果的裝置,其特征在于,該裝置包括緩存單元、編碼單元、FIFO和傳輸控制單元;所述緩存單元,用于接收輸入的當前幀數(shù)據(jù),并觸發(fā)編碼單元開始編碼;所述編碼單元,用于在接收到所述緩存單元的觸發(fā)信號后,從緩存單元中讀取視頻數(shù)據(jù),并進行編碼,將編碼結果數(shù)據(jù)順序存儲到FIFO中;所述FIFO,用于存儲所述編碼單元發(fā)送的編碼結果數(shù)據(jù);所述傳輸控制單元,用于設置所述FIFO的最大容量和輸出閾值,監(jiān)測所述FIFO中的數(shù)據(jù)量,在當前幀的編碼過程中,每當所述FIFO中的數(shù)據(jù)量達到輸出閾值時,控制所述FIFO輸出編碼結果數(shù)據(jù);在當前幀完成編碼后,控制所述FIFO輸出剩余的編碼結果數(shù)據(jù)。
11.根據(jù)權利要求10所述的裝置,其特征在于,所述傳輸控制單元,用于在監(jiān)測到所述FIFO中的數(shù)據(jù)量達到設置的輸出閾值時,向編碼結果數(shù)據(jù)的接收設備發(fā)送第一控制信號,通知該設備讀取所述FIFO中的編碼結果數(shù)據(jù);還用于在當前幀完成編碼后,向編碼結果數(shù)據(jù)的接收設備發(fā)送第二控制信號,并攜帶所述FIFO中的剩余數(shù)據(jù)量,通知該設備讀取所述FIFO中剩余的編碼結果數(shù)據(jù)。
全文摘要
本發(fā)明公開了一種傳輸視頻壓縮編碼結果的方法,包括a.設置先進先出存儲器FIFO的最大容量和輸出閾值;b.接收輸入的當前幀數(shù)據(jù),并對接收到的數(shù)據(jù)進行壓縮編碼,將編碼結果輸入FIFO中;每當FIFO中的可讀數(shù)據(jù)量達到輸出閾值時,控制輸出FIFO中的編碼結果數(shù)據(jù);c.當前幀數(shù)據(jù)編碼完成后,控制輸出FIFO中剩余的編碼結果數(shù)據(jù),并返回步驟b,直到輸出所有的視頻幀編碼數(shù)據(jù)。本發(fā)明還公開了一種傳輸視頻壓縮編碼結果的裝置,包括緩存單元、編碼單元、FIFO和傳輸控制單元。應用本發(fā)明的方法和裝置,可以很好地利用編碼與輸入數(shù)據(jù)間空閑時隙內的總線資源,能夠節(jié)省整個編碼與傳輸過程中占用的系統(tǒng)資源。
文檔編號H04N7/24GK101039429SQ20071009894
公開日2007年9月19日 申請日期2007年4月29日 優(yōu)先權日2007年4月29日
發(fā)明者陳東瑛 申請人:北京中星微電子有限公司