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