摘要:本文通過對DVB 標準中的ETS 300 743 規(guī)范的字幕數據格式進行研究和分析,結合機頂盒平臺的解復用濾波、圖層處理和用戶接口模塊,給出一種能夠正確、完整、及時的字幕顯示實現方案。
1 引言
隨著數字電視的蓬勃發(fā)展,數字電視已逐漸進入千家萬戶,除了傳統(tǒng)的電視節(jié)目外,通過利用先進的數字電視技術為廣大用戶提供更多的信息服務,是廣播電視事業(yè)發(fā)展的必然趨勢。字幕(subTItle)作為一種簡便而直觀的信息提供途徑,其重要性主要體現在兩個方面。一是字幕可以為聽力有障礙的人提供另一個“語音”信息途徑;二是字幕功能可以通過簡單的后期制作(如多語言顯示),配合電視節(jié)目的全球化推廣提供便捷的平臺。DVB 作為全球應用最廣泛的數字電視傳輸標準,也為多種語言的字幕提供了相應的規(guī)范,從而使字幕成為不同國家和地區(qū)電視節(jié)目交流的良好載體。
2 DVB 數字電視字幕規(guī)范
2.1 字幕控制信息規(guī)范
控制信息的規(guī)范主要包括有效數據的加載和提取索引信息的存放兩個方面。DVB 中規(guī)定,字幕信息要以節(jié)目的私有數據包形式復用到節(jié)目的基本流中,與音視頻數據加載形式類似。提取索引信息則是利用DVB 中的描述符(descriptor)語法插入到節(jié)目映射表(PMT)的私有數據段中。
流類型為0&TImes;06 的私有數據段,承載本節(jié)目私有數據提取的相關信息:私有數據包的PID 及其描述符。字幕描述符的標簽值(descriptor_tag)為0&TImes;59,語法如下:
分析字幕描述子可得出該字幕的語言代碼(ISO639_language_code)、字幕類型、合成頁及可選的輔助頁。這些信息在字幕數據的提取中將作為數據提取的索引信息。
2.2 字幕數據編碼規(guī)范
字幕顯示在終端是以頁的形式顯示出來,每一頁又分成多個區(qū)域,每一個區(qū)域里又關聯著多個圖形對象和區(qū)域的顏色。因此,字幕數據編碼是根據這些需求來定義的。字幕數據承載在PES 包的負載中,結構如圖1 所示。
圖1 字幕數據的數據結構
分析字幕的數據結構可知,前兩個字節(jié)是字幕數據的確定信息,包括一個數據定義字節(jié)(該字段定義該數據流為DVB 字幕,其值為0&TImes;20)和一個字節(jié)的字幕流識別id(其值為0×00);最后一個字節(jié)為字幕數據結束標志(其值為0×ff)。中間填充的數據則是字幕段數據。在字幕段數據中前6 個字節(jié)為字幕段的頭信息,包括1 個同步字節(jié)(其值為0×0f)、1 個類型字節(jié)(用來確定data_field()里攜帶的是哪種類型的數據分段)、2 個字節(jié)的頁ID (用來唯一標志一個字幕段)以及2 個字節(jié)的段長度標識(標識其后面攜帶負載的大小)。
字幕段類型主要有以下四種:
頁分段(page composition)。通過頁id(page_id)定義了該頁顯示終止時間、頁的狀態(tài)、該頁中區(qū)域數、各區(qū)域號、各區(qū)域的水平及垂直位置。
區(qū)域分段(region composition)。用于定義該區(qū)域的寬高、水平垂直位置、所使用的CLUT 表的CLUT_id值、對象的id、區(qū)域背景色以及像素深度等信息。
CLUT 分段(CLUT definition)。用于定義顏色,以便把傳輸的虛顏色轉換成實際色板中的顏色。
對象數據分段(object data)。用于定義對象的編碼方法和編碼數據。編碼方法包括像素編碼和字符編碼。每一個對象可以看作是一個可顯示的圖像單元。
每一頁數據的完整顯示都至少需要這四個數據分段,所以在解析字幕流時,需要利用各種結構體及鏈表對這幾個數據段數據進行解析并存儲。
3 機頂盒字幕解碼顯示系統(tǒng)設計
在STB 上實現字幕接收和顯示主要包括四大模塊:數據提取模塊、數據解碼模塊、圖層顯示模塊和用戶控制模塊。各模塊關系如圖2 所示。
圖中,用戶控制模塊用于響應用戶按鍵,并發(fā)送消息控制其它各模塊;數據提取模塊根據接收控制模塊發(fā)來的濾波啟動、停止或提取字幕數據等控制消息,并完成數據的提取工作;數據解碼模塊負責對數據提取模塊送來的字幕原始數據進行解碼,并將解碼后的數據送到指定的緩沖區(qū)內供圖層顯示模塊調用;圖層顯示模塊用于實現字幕界面的各種OSD 顯示操作。
圖2 字幕系統(tǒng)模塊關系圖。