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