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