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