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