專利名稱:一種對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)方法與系統(tǒng)的制作方法
技術(shù)領(lǐng)域:
本發(fā)明涉及^L頻壓縮編碼技術(shù),尤其涉及一種對多路視頻源同時進(jìn)行壓縮 編碼的方法與系統(tǒng)。
背景技術(shù):
現(xiàn)有技術(shù)中,對視頻進(jìn)行壓縮編碼時, 一次只能對一路視頻源輸出的圖像 幀進(jìn)行壓縮編碼處理;當(dāng)需要對多路視頻源進(jìn)行壓縮編碼時,只能依次對各路 視頻源進(jìn)行處理,不能同時對多路^L頻源進(jìn)行壓縮編碼處理。這是因?yàn)?,現(xiàn)有 技術(shù)中,定義了視頻壓縮編碼過程中所需的一系列全局變量,如果對多路視頻 源同時啟動多路編碼操作,則由于每路編碼操作都需要使用這些全局變量,勢 必相互影響,最終將導(dǎo)致整個系統(tǒng)崩潰。
而在實(shí)際應(yīng)用中,某些場合可能需要同時傳送多路視頻源的圖像,例如 當(dāng)兩個用戶通過網(wǎng)絡(luò)進(jìn)行視頻聊天時,通過本地攝像頭將自己的頭像傳送到對 端的聊天窗口中,這時,需要將攝像頭獲取的圖像壓縮編碼后通過網(wǎng)絡(luò)傳送, 如果聊天一方還希望將本地的一個視頻文件傳送給對方,此時需要啟動第二路 視頻壓縮編碼?,F(xiàn)有技術(shù)中,在這種情況下需要用戶先停止本地攝像頭的輸出, 再啟動希望轉(zhuǎn)送的視頻文件,這不僅給用戶帶來使用上的麻煩,而且需要中斷 當(dāng)前的聊天圖像傳送,對用戶當(dāng)前使用的業(yè)務(wù)造成影響。
發(fā)明內(nèi)容
本發(fā)明4是供一種對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)方法與系統(tǒng),用以 解決現(xiàn)有技術(shù)中存在的不能同時對多路視頻源進(jìn)行壓縮編碼的問題。
本發(fā)明方法包括預(yù)先將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并
編譯連接存儲到庫文件;
當(dāng)需要啟動對多路視頻源同時進(jìn)行壓縮編碼時,執(zhí)行下列步驟 為每 一 路#見頻源新建 一 個實(shí)例;
通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量 值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用相應(yīng)庫函數(shù)對該路3見 頻源圖像幀進(jìn)行壓縮編碼。
所述預(yù)先將^L頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,具體包括
將與碼率控制相關(guān)的變量封裝到碼率控制結(jié)構(gòu)體中;
將與編碼狀態(tài)相關(guān)的變量封裝到編碼狀態(tài)結(jié)構(gòu)體中; 將與碼流狀態(tài)相關(guān)的變量封裝到碼流狀態(tài)結(jié)構(gòu)體中。 所述為每一路^L頻源新建一個實(shí)例,具體為
為每一路^f見頻源新建一個對應(yīng)的C+十編碼器類,在所述0++編碼器類中封 裝編碼器實(shí)現(xiàn);現(xiàn)頻壓縮編碼的相應(yīng)功能。
所述封裝編碼器實(shí)現(xiàn)視頻壓縮編碼的相應(yīng)功能,具體包括
在所述編碼器類中,為編碼器實(shí)現(xiàn)視頻壓縮編碼所需執(zhí)行的每一項(xiàng)具體功
能定義相應(yīng)的成員函數(shù);
通過順序啟動所述編碼器類中定義的成員函數(shù)調(diào)用相關(guān)庫函數(shù),實(shí)現(xiàn)對一
路一見頻源圖像幀的壓縮編碼。
所述通過順序啟動編碼器類中定義的成員函數(shù)調(diào)用相關(guān)庫函數(shù),實(shí)現(xiàn)對一
路視頻源圖像幀的壓縮編碼,具體包括
啟動設(shè)置CPU類型成員函數(shù),調(diào)用相關(guān)庫函數(shù)給CPU類型變量賦值; 啟動編碼初始化成員函數(shù),調(diào)用相關(guān)庫函數(shù)對壓縮編碼所需的相關(guān)變量進(jìn)
行初始化;
啟動圖像幀編碼成員函數(shù),調(diào)用相關(guān)庫函數(shù)實(shí)現(xiàn)對一個圖像幀進(jìn)行壓縮編 碼,并寫入壓縮后文件的碼流緩沖區(qū)中;
啟動編碼后處理成員函數(shù),調(diào)用相關(guān)庫函數(shù)輸出碼流給壓縮后文件,并在處理完視頻源的全部圖^f象幀后釋放相應(yīng)資源。
根據(jù)本發(fā)明的上述方法,所述編碼器讀取到 一路視頻源圖像文件的文件頭 信息后,根據(jù)該文件頭信息獲得對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量
值,并將相關(guān)變量值傳遞給為該路視頻源新建的一個對應(yīng)0++編碼器類中的對
應(yīng)指針。
所述0++編碼器類中定義的指針至少包括碼率控制指針和編碼狀態(tài)指針; 在啟動編碼器類中的編碼初始化成員函數(shù)后,調(diào)用相關(guān)庫函數(shù)由所述碼率 控制指針和編碼狀態(tài)指針攜帶獲得的對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān) 變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的對應(yīng)變量進(jìn)行初始化。
本發(fā)明還提供一種對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)系統(tǒng),包括 第一功能模塊,用于將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并編 譯連接存儲到庫文件;
第二功能模塊,用于為每一路視頻源新建一個實(shí)例;
第三功能模塊,用于通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻壓 縮編碼的相關(guān)變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用相 應(yīng)庫函數(shù)對該路視頻源圖像幀進(jìn)行壓縮編碼。
所述庫文件中包括三個結(jié)構(gòu)體,分別為
封裝碼率控制相關(guān)變量的碼率控制結(jié)構(gòu)體;
封裝編碼狀態(tài)相關(guān)變量的編碼狀態(tài)結(jié)構(gòu)體;以及
封裝碼流狀態(tài)相關(guān)變量的碼流狀態(tài)結(jié)構(gòu)體。
所述第二功能模塊為每一路視頻源新建的對應(yīng)實(shí)例為C"H"編碼器類,在所
述C+十編碼器類中封裝碼器實(shí)現(xiàn)視頻壓縮編碼的相應(yīng)功能。 本發(fā)明有益效果如下
在本發(fā)明方法中,預(yù)先將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并 編譯連接存儲到庫文件;當(dāng)需要啟動對多路視頻源同時進(jìn)行壓縮編碼時,為每 一路視頻源新建一個實(shí)例;通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻
壓縮編碼的相關(guān)變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用 相應(yīng)庫函數(shù)對該路視頻源圖像幀進(jìn)行壓縮編碼,從而實(shí)現(xiàn)同時對多路視頻源進(jìn)
行壓縮編碼。由于本發(fā)明預(yù)先將^L頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中, 不存在全局變量,且每一路一見頻源對應(yīng)一個實(shí)例,由實(shí)例中定義的指針實(shí)現(xiàn)對 結(jié)構(gòu)體中的變量的操作,從而使得多個視頻源壓縮編碼操作可以不相關(guān)地并行 執(zhí)行。
另外,采用本發(fā)明,僅需存儲一個庫文件(在庫文件中存儲本發(fā)明的相應(yīng) 結(jié)構(gòu)體以及各種庫函數(shù)),通過為每一路視頻源新建一個實(shí)例(如C十+編碼器 類),用實(shí)例中封裝的相應(yīng)成員函數(shù)來調(diào)用相關(guān)庫函數(shù)進(jìn)行變量賦值以及完成 對視頻圖像的壓縮編碼功能。這種實(shí)現(xiàn)方式,不僅節(jié)省系統(tǒng)的存儲資源,同時 使得庫文件中本身的源代碼對上層應(yīng)用來說是透明的,更有利于源代碼的保 護(hù)。
圖1為本發(fā)明全局結(jié)構(gòu)體及變量封裝示意圖2為本發(fā)明實(shí)施例中€++編碼器類所包含的成員函數(shù)和成員變量示意 圖3為本發(fā)明對多路^L頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)系統(tǒng)結(jié)構(gòu)示意圖。
具體實(shí)施例方式
本發(fā)明提供一種對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)方法,包括 預(yù)先將—見頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并編譯連接存儲到庫 文件;
當(dāng)需要啟動對多膝現(xiàn)頻源同時進(jìn)行壓縮編碼時,為每一路視頻源新建一個 實(shí)例;通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行;現(xiàn)頻壓縮編碼的相關(guān)變量 值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用相應(yīng)庫函數(shù)對該路視
頻源圖像幀進(jìn)行壓縮編碼。
下面結(jié)合附圖,對本發(fā)明方法加以詳細(xì)闡述。
參見圖1,為本發(fā)明全局結(jié)構(gòu)體及變量封裝示意圖?,F(xiàn)有技術(shù)中,定義了 視頻壓縮編碼過程中所需的一系列全局變量,如幀尺寸、比特數(shù)、壓縮參數(shù)、
峰值信噪比(PSNR)以及控制參數(shù)等,這些全局變量在頭文件中指定;還有 一些^f又在某個壓縮編碼相關(guān)文件(如預(yù)測文件、變換文件、量化文件、濾波文 件和熵編碼文件等)中使用的變量也被定義為全局變量,在對應(yīng)的文件中指定; 還包括有一些小的結(jié)構(gòu)體(每個結(jié)構(gòu)體中封裝有一些相關(guān)變量),如碼率控制 結(jié)構(gòu)體、編碼狀態(tài)結(jié)構(gòu)體和碼流狀態(tài)結(jié)構(gòu)體。 其中
幀尺寸用于記栽壓縮幀的比特數(shù); 比特數(shù)記載已壓縮存入到碼流緩沖區(qū)中的比特數(shù); 壓縮參數(shù)記載圖像寬、高以及CPU類型等壓縮參數(shù); 峰值信噪比(PSNR):為評價壓縮圖像質(zhì)量的客觀評價標(biāo)準(zhǔn)變量,用于查 看編碼效率;
控制記載I幀、P幀、B幀的量化參數(shù),是否打開碼率控制、目標(biāo)碼率 等控制信息;
碼率控制結(jié)構(gòu)體包括根據(jù)帶寬控制壓縮所用碼率機(jī)制的各個變量; 編碼狀態(tài)結(jié)構(gòu)體包括在編碼每一幀時標(biāo)識當(dāng)前編碼狀態(tài)的各個變量; 碼流狀態(tài)包括寫入壓縮后文件的碼留緩沖區(qū)信息,具體的緩沖區(qū)寫位置 等信息。
本發(fā)明將現(xiàn)有技術(shù)在頭文件中指定的全局變量(如幀尺寸、比特數(shù)、壓縮 參數(shù)、PSNR以及控制參數(shù)等)全部封裝到編碼狀態(tài)結(jié)構(gòu)體中;并將現(xiàn)有技術(shù) 中僅在某個壓縮編碼相關(guān)文件中指定的全局變量,根據(jù)其指示的狀態(tài)信息封裝 到碼率控制結(jié)構(gòu)體中,或封裝到編碼狀態(tài)結(jié)構(gòu)體中。也就是說,本發(fā)明將現(xiàn)有 技術(shù)中與視頻壓縮編碼相關(guān)的所有全局變量和結(jié)構(gòu)體都封裝到三個大的結(jié)構(gòu) 體中,分別為碼率控制結(jié)構(gòu)體、編碼狀態(tài)結(jié)構(gòu)體、碼流狀態(tài)結(jié)構(gòu)體。
本發(fā)明每個結(jié)構(gòu)體所包含的變量如下
A) 碼率控制結(jié)構(gòu)體包括現(xiàn)有技術(shù)中原有碼率控制結(jié)構(gòu)體的全部變量以
及現(xiàn)有技術(shù)在壓縮編碼相關(guān)文件中指定的與碼率控制相關(guān)的全局變量;
B) 編碼狀態(tài)結(jié)構(gòu)體包括現(xiàn)有技術(shù)中原有編碼狀態(tài)結(jié)構(gòu)體的全部變量以 及現(xiàn)有技術(shù)頭文件中指定的所有全局變量,還包括現(xiàn)有技術(shù)在壓縮編碼相關(guān)文 件中的指定的與編碼狀態(tài)相關(guān)的全局變量;
C) 碼流狀態(tài)結(jié)構(gòu)體包括現(xiàn)有技術(shù)中原有碼流狀態(tài)結(jié)構(gòu)體的全部變量。 完成了所有全局結(jié)構(gòu)體及變量的封裝以后,進(jìn)行編譯連接,為上層調(diào)用提
供庫(lib)文件。所述庫文件中,除了包括編譯后的本發(fā)明提供的三個結(jié)構(gòu)體 外,還包括實(shí)現(xiàn)圖像幀壓縮編碼相應(yīng)功能的若干個庫函數(shù),每一個庫函數(shù)包含 一個或多個本發(fā)明所提供的全局結(jié)構(gòu)體中的變量參數(shù),具體的庫函數(shù)及每一個 庫函數(shù)所包含的具體參數(shù)與現(xiàn)有技術(shù)相同,本發(fā)明對此不作限定。
為了實(shí)現(xiàn)同時對多路^見頻源進(jìn)行壓縮編碼,需要為每一路^L頻源新建一個 實(shí)例,通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量 值,對庫文件相應(yīng)結(jié)構(gòu)體中的對應(yīng)變量進(jìn)行賦值,并調(diào)用相應(yīng)庫函數(shù)對該路視 頻源圖像幀進(jìn)行壓縮編碼。
下面以給爭一路視頻源新建一個對應(yīng)的C十+編碼器類( 一個C十+編碼器類 對應(yīng)一個實(shí)例)為例,描述同時對多路視頻源進(jìn)行壓縮編碼的具體實(shí)現(xiàn)方法。
首先,在所述€++編碼器類中封裝編碼器實(shí)現(xiàn)視頻壓縮編碼的相應(yīng)功能。 具體地,在編碼器類中,為編碼器實(shí)現(xiàn)視頻壓縮編碼所需執(zhí)行的每一項(xiàng)具體功 能定義相應(yīng)的成員函數(shù);如圖2所示,例如定義的成員函數(shù)為
1)設(shè)置CPU類型成員函數(shù)根據(jù)CPU的類型變量,設(shè)置其類型為多 媒體擴(kuò)展指令集(Multi-media Extension, MMX)、流式SIMD擴(kuò)展指令集 (Streaming SIMD Extension, SSE )、流式SIMD擴(kuò)展指令集2( Streaming SIMD Extension 2, SSE2 )類型;
2) 編碼初始化成員函數(shù)對編碼器主要參數(shù)如圖像的寬、高、量化參數(shù) 等進(jìn)行初始化。
3) 圖像幀編碼成員函數(shù)對視頻序列中一幀圖像進(jìn)行編碼。
4) 編碼后處理成員函數(shù)在編碼過程中輸出壓縮編碼后的視頻文件,在 編碼結(jié)束后對編碼過程中分配的資源進(jìn)行釋放。
還"&置三個成員變量,分別為 碼率控制指針、編碼狀態(tài)指針和CPU類型。
通過順序啟動上述編碼器類中定義的成員函數(shù)調(diào)用相關(guān)庫函數(shù),實(shí)現(xiàn)對一 路視頻源圖像幀的壓縮編碼。 具體實(shí)現(xiàn)過程為
(1) 編碼器讀取到一路視頻源圖像文件的文件頭信息后,根據(jù)該文件頭 信息獲得對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量值,并將相關(guān)變量值傳遞 給為該路視頻源新建的一個對應(yīng)0++編碼器類中的碼率控制指針和編碼狀態(tài) 指針。
(2) 啟動編碼器類中的設(shè)置CPU類型成員函數(shù),設(shè)置CPU類型,并通 過CPU類型變量傳遞給相關(guān)庫函數(shù),給庫文件中的CPU類型變量賦值。該設(shè) 置CPU類型成員函數(shù)所調(diào)用的具體庫函數(shù)在定義C十+編碼器類的頭文件中預(yù) 先約定。
(3) 接著啟動編碼初始化成員函數(shù),調(diào)用相關(guān)庫函數(shù)由碼率控制指針和 編碼狀態(tài)指針攜帶獲得的對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量值,對庫 文件中存儲的三個結(jié)構(gòu)體中的對應(yīng)變量進(jìn)行初始化;具體初始化變量,例如
壓縮參數(shù)變量圖像的寬、高;
量化參數(shù);包括I幀、P幀、B幀的量化參數(shù),以及一共需要壓縮多個幀, 多長時間傳輸一個I幀等;
還包括是否打開碼率控制以及目標(biāo)碼率等信息。 具體需要初始化的變量與現(xiàn)有技術(shù)相同,本發(fā)明對此不作限定。
該編碼初始化成員函數(shù)所調(diào)用的具體庫函數(shù)在定義C+十編碼器類的頭文 件中預(yù)先約定。
(4) 接著啟動圖像幀編碼成員函數(shù),調(diào)用相關(guān)庫函數(shù)實(shí)現(xiàn)對一個圖像幀 進(jìn)行壓縮編碼。在對該路視頻源進(jìn)行圖像壓縮編碼時,需要的相關(guān)參數(shù)值已通
過上述步驟(3)對相關(guān)變量初始化后唯一確定,具體的壓縮編碼方法為現(xiàn)有
技術(shù),本發(fā)明對此不作限定。壓縮后的碼流先寫入壓縮后文件的碼流緩沖區(qū)中 暫存。
該圖像幀編碼成員函數(shù)所調(diào)用的具體庫函數(shù)在定義c+十編碼器類的頭文
件中預(yù)先約定。
(5) 最后啟動編碼后處理成員函數(shù),當(dāng)碼流緩沖區(qū)中存儲的比特數(shù)達(dá)到 預(yù)定數(shù)量后,調(diào)用相關(guān)庫函數(shù)輸出碼流給壓縮后文件,并在處理完視頻源的全 部圖像幀后釋放相應(yīng)資源。該編碼后處理成員函數(shù)所調(diào)用的具體庫函數(shù)在定義 0++編碼器類的頭文件中預(yù)先約定。
根據(jù)本發(fā)明提供的上述方法,本發(fā)明另提供一種對多路視頻源同時進(jìn)行壓 縮編碼的實(shí)現(xiàn)系統(tǒng)ll,如圖3所示,包括
第一功能才莫塊101,用于將4^L頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中, 并編譯連接存儲到庫文件;
第二功能模塊102,用于為每一路視頻源新建一個實(shí)例;
第三功能模塊103,用于通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視 頻壓縮編碼的相關(guān)變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào) 用相應(yīng)庫函數(shù)對該路視頻源圖像幀進(jìn)行壓縮編碼。
所述庫文件中包括三個結(jié)構(gòu)體,分別為
封裝碼率控制相關(guān)變量的碼率控制結(jié)構(gòu)體;封裝編碼狀態(tài)相關(guān)變量的編碼 狀態(tài)結(jié)構(gòu)體;以及封裝碼流狀態(tài)相關(guān)變量的碼流狀態(tài)結(jié)構(gòu)體。
第二功能模塊為每一路視頻源新建的對應(yīng)實(shí)例為0++編碼器類,在C十+編 碼器類中封裝碼器實(shí)現(xiàn)^L頻壓縮編碼的相應(yīng)功能。
綜上所述,由于本發(fā)明方法中預(yù)先將^L頻壓縮編碼所需變量封裝到相應(yīng)結(jié) 構(gòu)體中,不存在全局變量,且每一路視頻源對應(yīng)一個實(shí)例,由實(shí)例中定義的指 針實(shí)現(xiàn)對結(jié)構(gòu)體中的變量的操作,從而使得多個視頻源壓縮編碼操作可以不相 關(guān)地并行執(zhí)行。
另外,采用本發(fā)明,僅需存儲一個庫文件(在庫文件中存儲本發(fā)明的相應(yīng) 結(jié)構(gòu)體以及各種庫函數(shù)),通過為每一路視頻源新建一個實(shí)例(如C+十編碼器 類),用實(shí)例中封裝的相應(yīng)成員函數(shù)來調(diào)用相關(guān)庫函數(shù)進(jìn)行變量賦值以及完成 對視頻圖像的壓縮編碼功能。這種實(shí)現(xiàn)方式,既節(jié)省了系統(tǒng)的存儲資源,且使 得庫文件本身的源代碼對上層應(yīng)用來說是透明的,更有利于源代碼的保護(hù)。
明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及 其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。
權(quán)利要求
1、一種對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)方法,其特征在于,包括預(yù)先將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并編譯連接存儲到庫文件;當(dāng)需要啟動對多路視頻源同時進(jìn)行壓縮編碼時,執(zhí)行下列步驟為每一路視頻源新建一個實(shí)例;通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用相應(yīng)庫函數(shù)對該路視頻源圖像幀進(jìn)行壓縮編碼。
2、 如權(quán)利要求1所述的方法,其特征在于,所述預(yù)先將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,具體包括將與碼率控制相關(guān)的變量封裝到碼率控制結(jié)構(gòu)體中;將與編碼狀態(tài)相關(guān)的變量封裝到編碼狀態(tài)結(jié)構(gòu)體中;將與碼流狀態(tài)相關(guān)的變量封裝到碼流狀態(tài)結(jié)構(gòu)體中。
3、 如權(quán)利要求1所述的方法,其特征在于,所述為每一路視頻源新建一 個實(shí)例,具體為為每一路^見頻源新建一個對應(yīng)的C十+編碼器類,在所述€++編碼器類中封 裝編碼器實(shí)現(xiàn)-f見頻壓縮編碼的相應(yīng)功能。
4、 如權(quán)利要求3所述的方法,其特征在于,所述封裝編碼器實(shí)現(xiàn)視頻壓 縮編碼的相應(yīng)功能,具體包括在所述編碼器類中,為編碼器實(shí)現(xiàn)視頻壓縮編碼所需執(zhí)行的每一項(xiàng)具體功 能定義相應(yīng)的成員函數(shù);通過順序啟動所述編碼器類中定義的成員函數(shù)調(diào)用相關(guān)庫函數(shù),實(shí)現(xiàn)對一 路4見頻源圖像幀的壓縮編碼。
5、 如權(quán)利要求4所述的方法,其特征在于,所述通過順序啟動編碼器類 中定義的成員函數(shù)調(diào)用相關(guān)庫函數(shù),實(shí)現(xiàn)對一路視頻源圖像幀的壓縮編碼,具 體包括啟動設(shè)置CPU類型成員函數(shù),調(diào)用相關(guān)庫函數(shù)給CPU類型變量賦值; 啟動編碼初始化成員函數(shù),調(diào)用相關(guān)庫函數(shù)對壓縮編碼所需的相關(guān)變量進(jìn)4于凈刀士臺^:;啟動圖像幀編碼成員函數(shù),調(diào)用相關(guān)庫函數(shù)實(shí)現(xiàn)對一個圖像幀進(jìn)行壓縮編 碼,并寫入壓縮后文件的碼流緩沖區(qū)中;啟動編碼后處理成員函數(shù),調(diào)用相關(guān)庫函數(shù)輸出碼流給壓縮后文件,并在 處理完視頻源的全部圖像幀后釋放相應(yīng)資源。
6、 如權(quán)利要求5所述的方法,其特征在于,所述編碼器讀取到一路視頻 源圖像文件的文件頭信息后,根據(jù)該文件頭信息獲得對該路視頻源進(jìn)行視頻壓 縮編碼的相關(guān)變量值,并將相關(guān)變量值傳遞給為該路視頻源新建的一個對應(yīng) 0++編碼器類中的對應(yīng)指針。
7、 如權(quán)利要求6所述的方法,其特征在于,所述€++編碼器類中定義的 指針至少包括碼率控制指針和編碼狀態(tài)指針;在啟動編碼器類中的編碼初始化成員函數(shù)后,調(diào)用相關(guān)庫函數(shù)由所述碼率 控制指針和編碼狀態(tài)指針攜帶獲得的對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān) 變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的對應(yīng)變量進(jìn)行初始化。
8、 一種對多路^L頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)系統(tǒng),其特征在于,包括 第一功能模塊,用于將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并編譯連接存儲到庫文件;第二功能模塊,用于為每一路視頻源新建一個實(shí)例;第三功能模塊,用于通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻壓 縮編碼的相關(guān)變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用相 應(yīng)庫函數(shù)對該i^^見頻源圖像幀進(jìn)行壓縮編碼。
9、 如權(quán)利要求8所述的系統(tǒng),其特征在于,所述庫文件中包括三個結(jié)構(gòu) 體,分別為 封裝碼率控制相關(guān)變量的碼率控制結(jié)構(gòu)體; 封裝編碼狀態(tài)相關(guān)變量的編碼狀態(tài)結(jié)構(gòu)體;以及 封裝碼流狀態(tài)相關(guān)變量的碼流狀態(tài)結(jié)構(gòu)體。
10、如權(quán)利要求9所述的系統(tǒng),其特征在于,所述第二功能模塊為每一路 視頻源新建的對應(yīng)實(shí)例為C十+編碼器類,在所述0++編碼器類中封裝碼器實(shí)現(xiàn) -f見頻壓縮編碼的相應(yīng)功能。
全文摘要
本發(fā)明公開了一種對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)方法,包括預(yù)先將視頻壓縮編碼所需變量封裝到相應(yīng)結(jié)構(gòu)體中,并編譯連接存儲到庫文件;當(dāng)需要啟動對多路視頻源同時進(jìn)行壓縮編碼時,為每一路視頻源新建一個實(shí)例;通過實(shí)例中定義的指針攜帶對該路視頻源進(jìn)行視頻壓縮編碼的相關(guān)變量值,對所述庫文件相應(yīng)結(jié)構(gòu)體中的變量進(jìn)行賦值,并調(diào)用相應(yīng)庫函數(shù)對該路視頻源圖像幀進(jìn)行壓縮編碼。本發(fā)明還公開了相應(yīng)的對多路視頻源同時進(jìn)行壓縮編碼的實(shí)現(xiàn)系統(tǒng)。采用本發(fā)明能實(shí)現(xiàn)同時對多路視頻源進(jìn)行壓縮編碼。
文檔編號H04N7/24GK101179715SQ20061014598
公開日2008年5月14日 申請日期2006年11月30日 優(yōu)先權(quán)日2006年11月30日
發(fā)明者亮 王 申請人:騰訊科技(深圳)有限公司