MPEG-2 TS流分析模塊及系統(tǒng)的設(shè)計和實現(xiàn)
摘要:本文介紹了基于PC的MPEG-2和DVB傳輸流的通用分析模塊和系統(tǒng)的設(shè)計和實現(xiàn)。分析模塊可以實現(xiàn)對傳輸流中各種信息的分析以及ETR290參數(shù)的測試。模塊中充分應(yīng)用了多線程調(diào)度、模塊化等設(shè)計思想,使得該模塊可以配合硬件板卡等各種獲取數(shù)據(jù)模塊完成傳輸流分析的功能。應(yīng)用此模塊實現(xiàn)了靜態(tài)傳輸流分析系統(tǒng),驗證了分析模塊的功能。
關(guān)鍵詞:MPEG-2、DVB、TS、多線程調(diào)度、模塊化設(shè)計
MPEG-2作為一個關(guān)于運(yùn)動圖像壓縮的國際標(biāo)準(zhǔn),其中的傳輸流(Transport stream)已經(jīng)成為數(shù)字電視領(lǐng)域中普遍應(yīng)用的系統(tǒng)層編碼標(biāo)準(zhǔn)。傳輸流針對有一定誤碼信道的傳輸,可以將多路節(jié)目復(fù)合成一個流進(jìn)行傳輸,它允許同一路節(jié)目包含多個音頻和視頻流,同時也可以加入一些附加信息。傳輸流具有固定的包長188字節(jié)。它的結(jié)構(gòu)是極其復(fù)雜的,對用戶來說,針對一個特定的流,首先要知道其由哪些PID(Packet ID)的包構(gòu)成。MPEG-2定義了一些用來描述傳輸流所攜帶內(nèi)容的信息表,稱為節(jié)目特定信息(PSI)表,包括4個與之相關(guān)的表。其中,節(jié)目關(guān)聯(lián)表PAT和節(jié)目映射表PMT是確定當(dāng)前傳輸流中各節(jié)目內(nèi)容的最關(guān)鍵的兩個表。
我國目前采用的DVB標(biāo)準(zhǔn)是歐洲各國采用的數(shù)字電視標(biāo)準(zhǔn),基帶數(shù)據(jù)格式采用MPEG-2標(biāo)準(zhǔn),即視頻和音頻編碼以及碼流的復(fù)用均符合MPEG-2標(biāo)準(zhǔn)。DVB標(biāo)準(zhǔn)對PSI進(jìn)行擴(kuò)展后統(tǒng)稱為服務(wù)信息即SI。這些信息以及傳輸流的規(guī)范性對于正確接收數(shù)字電視節(jié)目是至關(guān)重要的。
數(shù)字電視系統(tǒng)的集成是一項龐大復(fù)雜的工程,為了在開發(fā)中迅速有效地找出故障源、解決問題,經(jīng)常需要對數(shù)字電視碼流進(jìn)行分析。此外碼流測試技術(shù)更為廣泛的應(yīng)用在對數(shù)字電視網(wǎng)絡(luò)的監(jiān)測中。由于TS是經(jīng)過壓縮的信號數(shù)據(jù)間的相關(guān)性很小,而且TS流有著嚴(yán)格的數(shù)據(jù)格式,因而很小的誤差都將導(dǎo)致圖像質(zhì)量的急劇下降甚至無法解碼,因此必須對信號進(jìn)行監(jiān)測。為此我們開發(fā)了這個通用的傳輸流分析模塊,它可以分析包括節(jié)目信息、碼率、帶寬分配、PCR精度和緩沖區(qū)溢出等在內(nèi)的各種碼流相關(guān)信息,同時還可以進(jìn)行ETR290相關(guān)參數(shù)的測試,由于在設(shè)計時充分采用了模塊化設(shè)計的思想,該模塊可以配合各種獲取數(shù)據(jù)的模塊共同工作從而完成不同環(huán)境下的傳輸流分析工作。此外為驗證分析模塊的功能,我們開發(fā)了TS文件的靜態(tài)分析系統(tǒng),以下著重介紹分析模塊的設(shè)計和實現(xiàn)以及該模塊在系統(tǒng)中的應(yīng)用。
1.設(shè)計思想
在功能上,整個分析模塊完成對碼流各種信息的分析和ETR290參數(shù)的測試。碼流信息的分析包括:基本信息、節(jié)目信息、帶寬信息、音視頻信息、復(fù)用結(jié)構(gòu)、PCR信息和緩沖區(qū)信息等部分。其中基本信息包含了流的速率、流ID、提供者的名稱等基本信息;節(jié)目信息包含了傳輸流中各個節(jié)目的名稱,PID(Packet ID)分配,節(jié)目速率,節(jié)目單等信息;帶寬信息包含了各個PID所占的帶寬;音視頻信息包含了流中音視頻相關(guān)的各種信息;復(fù)用結(jié)構(gòu)顯示了流中各個節(jié)目的復(fù)用情況;PCR信息顯示了流中各個PCR的精度和間隔;緩沖區(qū)信息包含了虛擬解碼器(STD)在解碼當(dāng)前流時各個緩沖區(qū)的狀態(tài)。除了這些信息之外,模塊完成了ETR290參數(shù)的測試,這些參數(shù)是DVB標(biāo)準(zhǔn)的制定者在官方文檔中給出的一系列測試的參數(shù),其一般目標(biāo)是對TS流中的最重要的元素提供“健康測試”,根據(jù)重要性以及不同的性質(zhì),這些推薦測試的參數(shù)被分為3個優(yōu)先級,其中:第一個優(yōu)先級集中了一套基本的參數(shù),這些參數(shù)保證ts流能夠被解碼;第二個優(yōu)先級集中了一些附加參數(shù),這些參數(shù)推薦用來進(jìn)行連續(xù)性檢測;第三個優(yōu)先級集中了一些特定應(yīng)用可能感興趣的參數(shù)。
模塊在設(shè)計上希望能夠保持通用性,即只要模塊能夠通過接口取得傳輸流的數(shù)
據(jù)即可完成分析工作,實際中,為了測試分析模塊的工作情況而設(shè)計了用于從文件獲取數(shù)據(jù)的模塊,該模塊和分析模塊都被設(shè)計成動態(tài)鏈接庫即dll的形式,同時編寫了用于顯示結(jié)果的上層應(yīng)用程序,該程序結(jié)合獲取數(shù)據(jù)和分析模塊即實現(xiàn)了一個完整的傳輸流靜態(tài)分析系統(tǒng),這里可以看出,若分析模塊需要用于實時分析系統(tǒng),則只要相應(yīng)的獲取數(shù)據(jù)的設(shè)備,例如硬件數(shù)據(jù)采集卡,提供相同功能的dll用于分析模塊獲取數(shù)據(jù)即可。此外,在設(shè)計中較強(qiáng)的可擴(kuò)展性也是目標(biāo)之一,希望今后能夠根據(jù)需要靈活方便的增加更多的分析功能。以下將以上述靜態(tài)分析系統(tǒng)為載體說明分析模塊的設(shè)計和實現(xiàn)以及在實際系統(tǒng)中的位置和作用。
2.設(shè)計和實現(xiàn)
2.1 整體設(shè)計
如圖1所示,整個系統(tǒng)分為三個大的部分,即獲取數(shù)據(jù)模塊、分析模塊、界面模塊。
獲取數(shù)據(jù)模塊在從數(shù)據(jù)源(可能是文件,也可能是實時輸入的傳輸流,在靜態(tài)分析系統(tǒng)中即TS文件)拿到數(shù)據(jù)之后需要進(jìn)行碼流的預(yù)處理,碼流預(yù)處理的作用是為碼流中的每個包加上時間標(biāo)簽,這個時間標(biāo)簽在后續(xù)的分析過程中能夠提供每個包的到達(dá)時間,從而為測試提供方便。對于實時碼流來說,一般來講可以由硬件的數(shù)據(jù)采集卡來加入對應(yīng)包實際的到達(dá)時間,而對于從文件獲取數(shù)據(jù)來講則可以根據(jù)流中的PCR來計算出該包對應(yīng)的時間標(biāo)簽,可見,不管什么形式的數(shù)據(jù)獲取設(shè)備,只要它能夠提供上述功能,分析模塊就可以正常工作。
分析模塊包括一個循環(huán)的緩沖區(qū)和實際的數(shù)據(jù)分析單元,后面會有詳細(xì)的介紹。
界面模塊,用于系統(tǒng)和用戶之間的信息交換,用戶控制部分負(fù)責(zé)向系統(tǒng)傳達(dá)用戶的命令,例如開始分析,停止分析和選擇文件等,結(jié)果顯示部分向用戶顯示傳輸流分析和測試的結(jié)果。
2.2 多線程調(diào)度技術(shù)的應(yīng)用
如果整個分析模塊采用單線程,即每次取得一定量的數(shù)據(jù)然后分析,如此循環(huán)往復(fù),那么無法充分利用系統(tǒng)資源,必定會造成分析測試的效率低下,為證明這個觀點,在開發(fā)初期曾經(jīng)采用這種單線程的方法做了試驗,結(jié)果顯示,這種情況下即使只有一個基本信息分析的子模塊,也將使得分析模塊的效率在處理實時碼流的時候完全不可接受。為此,設(shè)置了一個循環(huán)緩沖區(qū)作為數(shù)據(jù)的中轉(zhuǎn)站,如圖2所示。
如圖,線程1從數(shù)據(jù)獲取模塊取得數(shù)據(jù)后寫入循環(huán)緩沖區(qū);線程2從循環(huán)緩沖區(qū)中讀取數(shù)據(jù),然后利用分析單元進(jìn)行分析,循環(huán)緩沖區(qū)以類對象的形式存在,編程中注意了線程間同步的問題。應(yīng)用多線程調(diào)度技術(shù)后,分析模塊的工作效率大幅提高。該技術(shù)的應(yīng)用為分析和測試的實施打下了良好的基礎(chǔ)。
2.3 分析單元設(shè)計
分析單元是整個模塊的核心,在功能上完成兩部分工作:碼流信息的分析和ETR290參數(shù)的測試。碼流信息的分析主要對應(yīng)于碼流語義上的分析,這部分的工作根據(jù)模塊化的原則,對應(yīng)于若干個小的模塊,每個模塊完成一種信息的分析和提??;ETR290參數(shù)測試主要對應(yīng)語法上的測試,如前所述,ETR290參數(shù)包括3個優(yōu)先級,按照測試方法可分為4個大類:SI表相關(guān)測試、PCR相關(guān)測試、緩沖區(qū)測試和其它測試。下面以緩沖區(qū)測試為例做較詳細(xì)的說明。
MPEG-2標(biāo)準(zhǔn)規(guī)定了一個虛擬解碼器STD(System Target Decoder),STD是一個概念上的模型,它可以用來規(guī)范在構(gòu)造和檢驗TS流中的解碼過程,雖然不同的解碼器可以有不同的結(jié)構(gòu),但是它們必須保證一個能夠在STD上正確解碼的TS流也一定能夠在實際中被正確解碼,也就是說STD這個虛擬的解碼器是檢驗TS流能否正確解碼的一個重要標(biāo)準(zhǔn),ETR290參數(shù)中所有有關(guān)緩沖區(qū)的測試都由STD的相關(guān)測試給出結(jié)果,這其中包括了三個小的項目,即緩沖區(qū)錯誤、空緩沖區(qū)錯誤和數(shù)據(jù)延遲錯誤。
該類錯誤的主要測試方法是按照標(biāo)準(zhǔn)確定的規(guī)則模擬一個解碼器的工作,使得傳輸流數(shù)據(jù)在解碼器的各個緩沖區(qū)間傳輸,其中包括了TS包、PES包和ES包之間的轉(zhuǎn)換、各個緩沖區(qū)大小的分析和顯示單元的解碼時間的提取計算等操作。在上述模擬的基礎(chǔ)上測試該類三個錯誤,即是否有緩沖區(qū)溢出、是否有數(shù)據(jù)在STD停留時間過長以及某些緩沖區(qū)是否在規(guī)定時間內(nèi)清空。緩沖區(qū)的分析同樣以類對象形式存在,在對象內(nèi)根據(jù)標(biāo)準(zhǔn)確定的規(guī)則對傳輸流進(jìn)行解包,包的轉(zhuǎn)換,時間標(biāo)簽提取等操作,在模擬的基礎(chǔ)上記錄和測試上述三個參數(shù)。該部分涉及了幾乎所有實際解碼時的數(shù)據(jù)處理工作,因此是所有分析測試子模塊中最復(fù)雜的。
綜上所述,整個分析單元的流程圖如圖3所示。
2.4 模塊化保持通用性和擴(kuò)展性
如前所述,為了保持分析模塊向上的通用性,該模塊被設(shè)計成動態(tài)鏈接庫dll的形式,dll提供了所有用戶需要的接口來完成諸如初始化、開始分析、停止分析、取各種分析結(jié)果等工作,這樣用戶只需要了解各個接口并完成上層應(yīng)用程序的編寫,即可完成整個碼流分析系統(tǒng)。為了分析模塊能具有向下的通用性,模塊對于獲取數(shù)據(jù)的模塊只要求完成數(shù)據(jù)預(yù)處理工作并能夠提供數(shù)據(jù)即可,實際中用到的從文件獲取數(shù)據(jù)的dll就是一例,目前實驗室準(zhǔn)備后續(xù)開發(fā)的usb接口的分析儀,只要在硬件的驅(qū)動程序能夠?qū)崿F(xiàn)相同的預(yù)處理和獲取數(shù)據(jù)功能即可替換目前的從文件獲取數(shù)據(jù)的dll,從而完成usb接口的碼流分析儀整個系統(tǒng)的開發(fā)。
在分析模塊的流程設(shè)計當(dāng)中同樣也處處應(yīng)用著模塊化的思想,由于傳輸流的數(shù)據(jù)是固定長度包的排列,因此各種分析的功能都被設(shè)計成單獨的接收一系列包的模塊,這樣的設(shè)計使得在開發(fā)中能夠分階段開發(fā)和測試,例如節(jié)目信息分析模塊可以單獨開發(fā)和測試,通過后只要集成到分析線程中即可,這樣的結(jié)構(gòu)為測試和今后添加新的分析功能提供了極大的方便。
2.5 模塊對內(nèi)和對外的通信
由于分析過程中有可能會遇到出現(xiàn)錯誤的情況,分析模塊的用戶也需要控制啟動哪些分析和測試子模塊,因此必須有一種通信機(jī)制,使得分析模塊能夠和外界交換信息,為此,在模塊初始化的時候,用戶可通過接口指定需要啟動的分析或測試的子模塊;此外采用消息機(jī)制使得在分析和測試發(fā)現(xiàn)錯誤時能夠通知分析模塊的用戶,進(jìn)而對最終用戶做出相應(yīng)提示。
3.結(jié)束語
開發(fā)中用上述靜態(tài)分析系統(tǒng)對多節(jié)目、單節(jié)目、高清、標(biāo)清、衛(wèi)星節(jié)目、HDTV節(jié)目等各種類型TS流進(jìn)行了測試,結(jié)果顯示該模塊工作正常、結(jié)果正確,同時,由于通過文件的碼率和大小即可得知文件所對應(yīng)傳輸流的實時持續(xù)時間,因而通過分析完成靜態(tài)測試所用的時間同樣可以得知該模塊用于實時分析時的工作效率,實驗表明,該模塊具有較好的效率,能夠用于靜態(tài)和實時分析等各種場合,具有較好的通用性和可擴(kuò)展性。目前應(yīng)用該分析模塊的分析系統(tǒng)已經(jīng)應(yīng)用于實驗室數(shù)字電視產(chǎn)品的輔助開發(fā)中,并發(fā)揮了很大的作用。
參考文獻(xiàn)
⑴ International Organization for Standardization and International Electrotechnical Commission , ISO/IEC 13818-1 : Information technology-generic coding of moving pictures and associated audio information: Systems. 1994.
⑵ International Organization for Standardization and International Electrotechnical Commission , ISO/IEC 13818-2 : Information technology-generic coding of moving pictures and associated audio information: Video. 1994.
⑶ International Organization for Standardization and International Electrotechnical Commission , ISO/IEC 13818-3 : Information technology-generic coding of moving pictures and associated audio information: Audio. 1994.
⑷ European Telecommunication Standards Institute. ETSI EN 300 468: Specification for Service Information (SI) in DVB Systems. 2000.
⑸ European Telecommunication Standards Institute. ETSI TR 101 290: Measurement guidelines for DVB systems. 2001.
評論