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