專(zhuān)利名稱(chēng):一種多媒體碼流的碼率調(diào)整方法
技術(shù)領(lǐng)域:
本發(fā)明涉及數(shù)字視頻技術(shù),特別涉及一種多媒體碼流的碼率調(diào)整方法。
背景技術(shù):
運(yùn)動(dòng)圖象專(zhuān)家組(Motion Picture Experts GroupMPEG-2)是數(shù)字電視采用的國(guó)際標(biāo)準(zhǔn),該標(biāo)準(zhǔn)規(guī)定了模擬視頻、音頻信號(hào)的壓縮方式,并定義了用于視頻壓縮數(shù)據(jù)、音頻壓縮數(shù)據(jù)、控制數(shù)據(jù)及私有數(shù)據(jù)復(fù)用的數(shù)據(jù)結(jié)構(gòu),包括節(jié)目流PS(Programme Stream)及傳輸流TS(Transport Stream)。其中傳輸流是一種固定包長(zhǎng)的數(shù)據(jù)結(jié)構(gòu),主要用于壓縮碼流的傳輸。一般為188字節(jié)或是204字節(jié),其中第1個(gè)字節(jié)是包同步字節(jié)為0x47H;接下來(lái)的第2、3字節(jié)的低13位是包標(biāo)識(shí)PID(Packet Identifier),用以標(biāo)識(shí)此數(shù)據(jù)包內(nèi)攜帶的信息類(lèi)別,比如視頻數(shù)據(jù)、音頻數(shù)據(jù)等,其基本的包結(jié)構(gòu)如圖1所示。
現(xiàn)有技術(shù)在MPEG-2發(fā)端送出固定碼率的傳輸流,由于傳輸介質(zhì)的不同或接收端的對(duì)碼率的要求不同,因而固定碼率的傳輸流適應(yīng)性差。如果傳輸碼流中節(jié)目碼率較低,則浪費(fèi)傳輸帶寬,如果傳輸碼流碼率過(guò)高,超過(guò)接受端承受能力,則引起丟包、無(wú)法同步等錯(cuò)誤。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種多媒體碼流的碼率調(diào)整方法,以解決現(xiàn)有技術(shù)中固定碼率的傳輸流適應(yīng)性差的問(wèn)題。
為解決上述問(wèn)題,本發(fā)明提供下述方案一種多媒體碼流的碼率調(diào)整方法,包括下述步驟檢測(cè)傳輸碼流中數(shù)據(jù)包的包標(biāo)識(shí);
根據(jù)所述包標(biāo)識(shí)判斷對(duì)應(yīng)的數(shù)據(jù)包是否為空包,如果不是空包,則將該數(shù)據(jù)包寫(xiě)入存儲(chǔ)器,否則禁止將該空包寫(xiě)入存儲(chǔ)器;當(dāng)輸出碼率時(shí)鐘有效時(shí),判斷所述存儲(chǔ)器中是否具有一個(gè)整包的數(shù)據(jù)包,如果是則讀出一個(gè)數(shù)據(jù)包并輸出,否則輸出一個(gè)空包。
所述的存儲(chǔ)器為緩沖存儲(chǔ)器。
采用現(xiàn)場(chǎng)可編程門(mén)陣列或其他可編程邏輯芯片檢測(cè)數(shù)據(jù)包的包標(biāo)識(shí)。
向緩存寫(xiě)數(shù)據(jù)包時(shí)以包為單為寫(xiě)入,即從該數(shù)據(jù)包的第一個(gè)字節(jié)開(kāi)始。
所述緩存采用先進(jìn)先出隊(duì)列。
所述緩存深度至少為兩個(gè)數(shù)據(jù)包的字節(jié)數(shù)。
根據(jù)所述緩存的半滿中斷信號(hào)是否有效來(lái)判斷緩存是否具有一個(gè)整包的數(shù)據(jù)包。
本發(fā)明采用以FPGA為核心的硬件結(jié)構(gòu)處理傳輸碼流,在數(shù)據(jù)的讀寫(xiě)、包標(biāo)識(shí)PID檢測(cè)、中斷響應(yīng)等處理具有延遲固定和處理速度快的特點(diǎn),提高了處理效率和可靠性,有效的解決了碼率不匹配引起的各種問(wèn)題,充分的利用傳輸帶寬。
圖1為MPEG-2傳輸流包結(jié)構(gòu)示意圖;圖2為本發(fā)明碼率調(diào)整原理框圖;圖3為本發(fā)明的流程圖;圖4為碼率調(diào)整功能框圖。
具體實(shí)施例方式
本發(fā)明通過(guò)調(diào)整傳輸流中的空包(即包標(biāo)示PID為0x1ffH的數(shù)據(jù)包)數(shù)來(lái)調(diào)整輸出的傳輸碼流碼率。調(diào)整的前提是輸出碼率必須大于輸入碼率中的有效碼率,即在去掉輸入碼流中的空包后的有效碼流必須小于設(shè)定的輸出碼率。
參閱圖2所示,本發(fā)明采用先入先出隊(duì)列(FIFO)實(shí)現(xiàn)傳輸流的緩存,即圖中的第一緩存,并通過(guò)FIFO的狀態(tài)來(lái)確定添加空包的時(shí)機(jī),第一緩存的深度至少為2個(gè)數(shù)據(jù)包字節(jié)長(zhǎng)度。PID檢測(cè)、FIFO控制等可以采用現(xiàn)場(chǎng)可編程門(mén)陣列FPGA(Field Programable Gate Array)或是其他的可編程邏輯芯片完成,在本實(shí)施例中采用FPGA。
參閱圖3和圖4,本發(fā)明具體實(shí)現(xiàn)步驟如下步驟10輸入MPEG-2傳輸碼流。
步驟20由FPGA檢測(cè)輸入碼流中數(shù)據(jù)包的包標(biāo)示PID,如果包標(biāo)示PID為0x1ffH,則確定數(shù)據(jù)包為空包,禁止FIFO的寫(xiě)信號(hào)以丟棄空包,否則進(jìn)行步驟30。
禁止寫(xiě)信號(hào)是為了保證寫(xiě)入FIFO的數(shù)據(jù)中沒(méi)有傳輸流空包。
由于包標(biāo)示PID字段是在傳輸流數(shù)據(jù)包的第2、3字節(jié),為了保證在檢測(cè)PID字段完成后數(shù)據(jù)包能夠完整的寫(xiě)入第一緩存,在FPGA內(nèi)部實(shí)現(xiàn)最少3個(gè)字節(jié)的第二緩存。
步驟30將數(shù)據(jù)包寫(xiě)入第一緩存。
為了保證以包為單位從第一緩存(FIFO)讀出數(shù)據(jù)包,無(wú)論是在初始狀態(tài)還是復(fù)位后重新啟動(dòng)都必須要從傳輸流數(shù)據(jù)包的第一個(gè)字節(jié)即同步字節(jié)開(kāi)始寫(xiě)入第一緩存。
步驟40輸出碼率時(shí)鐘有效時(shí),檢查FIFO的狀態(tài),即檢查FIFO中的數(shù)據(jù)包。
在本實(shí)施例中,通過(guò)判斷FIFO的半滿中斷信號(hào)是否有效來(lái)檢查FIFO的狀態(tài),也可采用其他方式。
步驟50判斷半滿中斷信號(hào)是否有效,如果有效則表示FIFO內(nèi)部已經(jīng)有超過(guò)FIFO深度一半的數(shù)據(jù)(即至少有一個(gè)數(shù)據(jù)包),進(jìn)行步驟60,否則表明FIFO中數(shù)據(jù)還沒(méi)有到半滿,則進(jìn)行步驟70。
步驟60從FIFO中同步的讀出一個(gè)數(shù)據(jù)包。
步驟70從預(yù)設(shè)在FPGA內(nèi)部空包存儲(chǔ)區(qū)域同步的輸出一個(gè)空包。
步驟80輸出碼流。
輸出碼率時(shí)鐘根據(jù)需不同情況和需求預(yù)先設(shè)定。
本發(fā)明方法在具體應(yīng)用時(shí),由于在輸入去除空包而輸出重新添加空包,這樣會(huì)改變的輸入碼流的數(shù)據(jù)包間距,影響傳輸流的一個(gè)基本時(shí)鐘特性(ProgramClock Reference,PCR),因此需要對(duì)PCR進(jìn)行調(diào)整,保證PCR信息的正確性。
權(quán)利要求
1.一種多媒體碼流的碼率調(diào)整方法,其特征在于包括步驟檢測(cè)傳輸碼流中數(shù)據(jù)包的包標(biāo)識(shí);根據(jù)所述包標(biāo)識(shí)判斷對(duì)應(yīng)的數(shù)據(jù)包是否為空包,如果不是空包,則將該數(shù)據(jù)包寫(xiě)入存儲(chǔ)器,否則禁止將該空包寫(xiě)入存儲(chǔ)器;當(dāng)輸出碼率時(shí)鐘有效時(shí),判斷所述存儲(chǔ)器中是否具有一個(gè)整包的數(shù)據(jù)包,如果是則讀出一個(gè)數(shù)據(jù)包并輸出,否則輸出一個(gè)空包。
2.如權(quán)利要求1所述的方法,其特征在于,所述存儲(chǔ)器為緩沖存儲(chǔ)器。
3.如權(quán)利要求1所述的方法,其特征在于,采用現(xiàn)場(chǎng)可編程門(mén)陣列或其他可編程邏輯芯片檢測(cè)數(shù)據(jù)包的包標(biāo)識(shí)。
4.如權(quán)利要求2所述的方法,其特征在于,向緩存寫(xiě)數(shù)據(jù)包時(shí)以包為單為寫(xiě)入,即從該數(shù)據(jù)包的第一個(gè)字節(jié)開(kāi)始。
5.如權(quán)利要求2所述的方法,其特征在于,所述緩存采用先進(jìn)先出隊(duì)列。
6.如權(quán)利要求5所述的方法,其特征在于,所述緩存深度至少為兩個(gè)數(shù)據(jù)包的字節(jié)數(shù)。
7.如權(quán)利要求6所述的方法,其特征在于,根據(jù)所述緩存的半滿中斷信號(hào)是否有效來(lái)判斷緩存是否具有一個(gè)整包的數(shù)據(jù)包。
全文摘要
本發(fā)明公開(kāi)了一種多媒體碼流的碼率調(diào)整方法,該方法為檢測(cè)傳輸碼流中數(shù)據(jù)包的包標(biāo)識(shí);根據(jù)所述包標(biāo)識(shí)判斷對(duì)應(yīng)的數(shù)據(jù)包是否為空包,如果不是空包,則將該數(shù)據(jù)包寫(xiě)入存儲(chǔ)器,否則禁止將該空包寫(xiě)入存儲(chǔ)器;當(dāng)輸出碼率時(shí)鐘有效時(shí),判斷所述存儲(chǔ)器中是否具有一個(gè)整包的數(shù)據(jù)包,如果是則讀出一個(gè)數(shù)據(jù)包并輸出,否則輸出一個(gè)空包。
文檔編號(hào)H04L12/56GK1661985SQ20041000715
公開(kāi)日2005年8月31日 申請(qǐng)日期2004年2月25日 優(yōu)先權(quán)日2004年2月25日
發(fā)明者王展 申請(qǐng)人:華為技術(shù)有限公司