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