音影先锋亚洲天堂网|电影世界尽头的爱完整版播放|国产 熟女 91|高清无码免费观看欧美日韩|韩国一区二区三区黄色录像|美女亚洲加勒比在线|亚洲综合网 开心五月|7x成人在线入口|成人网站免费日韩毛片区|国产黄片?一级?二级?三级

數(shù)字機頂盒字幕解碼顯示系統(tǒng)設(shè)計方案

出處:活著 發(fā)布于:2012-08-28 09:45:11

  摘要:本文通過對DVB 標(biāo)準(zhǔn)中的ETS 300 743 規(guī)范的字幕數(shù)據(jù)格式進(jìn)行研究和分析,結(jié)合機頂盒平臺的解復(fù)用濾波、圖層處理和用戶接口模塊,給出一種能夠正確、完整、及時的字幕顯示實現(xiàn)方案。

  1 引言

  隨著數(shù)字電視的蓬勃發(fā)展,數(shù)字電視已逐漸進(jìn)入千家萬戶,除了傳統(tǒng)的電視節(jié)目外,通過利用先進(jìn)的數(shù)字電視技術(shù)為廣大用戶提供更多的信息服務(wù),是廣播電視事業(yè)發(fā)展的必然趨勢。字幕(subtitle)作為一種簡便而直觀的信息提供途徑,其重要性主要體現(xiàn)在兩個方面。一是字幕可以為聽力有障礙的人提供另一個"語音"信息途徑;二是字幕功能可以通過簡單的后期制作(如多語言顯示),配合電視節(jié)目的化推廣提供便捷的平臺。DVB 作為應(yīng)用廣泛的數(shù)字電視傳輸標(biāo)準(zhǔn),也為多種語言的字幕提供了相應(yīng)的規(guī)范,從而使字幕成為不同國家和地區(qū)電視節(jié)目交流的良好載體。

  2 DVB 數(shù)字電視字幕規(guī)范

  2.1 字幕控制信息規(guī)范

  控制信息的規(guī)范主要包括有效數(shù)據(jù)的加載和提取索引信息的存放兩個方面。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ī)范

  字幕顯示在終端是以頁的形式顯示出來,每一頁又分成多個區(qū)域,每一個區(qū)域里又關(guān)聯(lián)著多個圖形對象和區(qū)域的顏色。因此,字幕數(shù)據(jù)編碼是根據(jù)這些需求來定義的。字幕數(shù)據(jù)承載在PES 包的負(fù)載中,結(jié)構(gòu)如圖1 所示。

圖1 字幕數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu)

圖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é)束標(biāo)志(其值為0×ff)。中間填充的數(shù)據(jù)則是字幕段數(shù)據(jù)。在字幕段數(shù)據(jù)中前6 個字節(jié)為字幕段的頭信息,包括1 個同步字節(jié)(其值為0×0f)、1 個類型字節(jié)(用來確定data_field()里攜帶的是哪種類型的數(shù)據(jù)分段)、2 個字節(jié)的頁ID (用來標(biāo)志一個字幕段)以及2 個字節(jié)的段長度標(biāo)識(標(biāo)識其后面攜帶負(fù)載的大?。?。

  字幕段類型主要有以下四種:

  頁分段(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ù)進(jìn)行解析并存儲。

  3 機頂盒字幕解碼顯示系統(tǒng)設(shè)計

  在STB 上實現(xiàn)字幕接收和顯示主要包括四大模塊:數(shù)據(jù)提取模塊、數(shù)據(jù)解碼模塊、圖層顯示模塊和用戶控制模塊。各模塊關(guān)系如圖2 所示。

  圖中,用戶控制模塊用于響應(yīng)用戶按鍵,并發(fā)送消息控制其它各模塊;數(shù)據(jù)提取模塊根據(jù)接收控制模塊發(fā)來的濾波啟動、停止或提取字幕數(shù)據(jù)等控制消息,并完成數(shù)據(jù)的提取工作;數(shù)據(jù)解碼模塊負(fù)責(zé)對數(shù)據(jù)提取模塊送來的字幕原始數(shù)據(jù)進(jìn)行解碼,并將解碼后的數(shù)據(jù)送到指定的緩沖區(qū)內(nèi)供圖層顯示模塊調(diào)用;圖層顯示模塊用于實現(xiàn)字幕界面的各種OSD 顯示操作。

圖2 字幕系統(tǒng)模塊關(guān)系圖。

圖2 字幕系統(tǒng)模塊關(guān)系圖。

  3.1 字幕數(shù)據(jù)提取模塊

  字幕數(shù)據(jù)提取模塊包括兩部分:字幕控制信息的提取和字幕數(shù)據(jù)包的提取。

  用戶控制模塊發(fā)送字幕啟動請求時,提取模塊就啟動SI 引擎。首先,啟動本節(jié)目的PMT 表濾波工作,獲取PMT 數(shù)據(jù)并進(jìn)行分析。若當(dāng)前節(jié)目沒有字幕信息,則發(fā)送無字幕消息至用戶模塊;若當(dāng)前節(jié)目帶有字幕信息,則根據(jù)PMT 中的私有數(shù)據(jù)段和字幕描述符,獲取字幕數(shù)據(jù)對應(yīng)的PID、字幕的語言代碼、字幕類型、合成頁及可選的輔助頁,并存放到字幕索引信息表中。其次,根據(jù)字幕索引信息表啟動字幕有效數(shù)據(jù)的PES 濾波,提取對應(yīng)字幕數(shù)據(jù)包。字幕數(shù)據(jù)提取總體流程如圖3 所示。

圖3 字幕數(shù)據(jù)提取流程

圖3 字幕數(shù)據(jù)提取流程

  當(dāng)獲得字幕的PID 及其它信息后,則按字幕語言的不同,把當(dāng)前節(jié)目所攜帶的所有語言的字幕列表,供用戶選擇。當(dāng)用戶選擇完一個條目后,可利用該條目相應(yīng)的控制信息獲取字幕PES 包,把字幕PID,合成頁id 和輔助頁id 注冊進(jìn)濾波通道,并啟動濾波器。

  此時,若濾波器接收到相匹配的數(shù)據(jù),則會產(chǎn)生相應(yīng)的中斷,通知上層進(jìn)程讀取數(shù)據(jù);當(dāng)獲取一個完整的PES 包后,就傳送給字幕解碼器進(jìn)行解碼顯示。

  3.2 字幕數(shù)據(jù)解碼模塊

  字幕數(shù)據(jù)解碼模塊負(fù)責(zé)對字幕PES 包進(jìn)行解碼。

  字幕PES 包解碼流程如圖4 所示。

圖4 字幕PES 包解析流程

圖4 字幕PES 包解析流程。

  字幕解碼主要是對PES 包進(jìn)行分析,包括PES包頭的檢測,PES 包頭信息的提取和字幕段的分析。

  濾波得到一個PES 包后,首先判斷包頭是否合法,包括判斷前四個字節(jié)是否為0×000001BD 和PES包長度是否合法。

  PES 包頭信息提取包括提取PTS、PES 包頭長度等。PTS 是該分組中承載的所要顯示的數(shù)據(jù)的顯示時間。根據(jù)包頭長度可以定位到PES 的負(fù)載位置,進(jìn)而分析PES 包的負(fù)載。

  分析PES 包的負(fù)載,首先判斷前兩個字節(jié)(定義字節(jié)和字幕流id)是否分別為0×20、0×00.若都符合,則可以確定這個包就是所要的封裝有字幕數(shù)據(jù)的PES 包。然后進(jìn)入字幕段分析,字幕字段的內(nèi)容有四種情況。先找到同步頭字節(jié)0×0f,再往后分析8bit 的段類型(segment_type),通過判斷該字節(jié)值來確定data_field()攜帶的是哪種類型的數(shù)據(jù)。當(dāng)segment_type為0×10 時[3],該段為頁分段;當(dāng)segment_type 為0×11時,則該段為區(qū)域分段;當(dāng)segment_byte 為0×12 時,該段為CLUT 分段;當(dāng)segment_byte 為0×13 時,該段為對象數(shù)據(jù)分段。,根據(jù)不同的類型調(diào)用不同的函數(shù)對各種類型的分段進(jìn)行下一步的分析。

  在頁分段的解析中找到該頁的頁id、顯示終止時間、顯示狀態(tài)、該頁由幾個區(qū)域組成、每個區(qū)域的區(qū)域id 和每個區(qū)域的水平垂直坐標(biāo),并把這些數(shù)據(jù)存儲起來。然后,根據(jù)從頁分段中獲取的區(qū)域的id 找到相應(yīng)的區(qū)域分段,獲取該區(qū)域的寬高、像素深度、該區(qū)域填充的顏色、顏色表id(CLUT_id)、區(qū)域的數(shù)據(jù)對象個數(shù)、每個數(shù)據(jù)對象編號(object_id),并存儲這些數(shù)據(jù)。

  ,通過CLUT_id 找到顏色表,得到顏色的Y、Cr、Cb、T 值。通過object_id 找到對象數(shù)據(jù)的內(nèi)容,包括編碼方式及編碼數(shù)據(jù)。用相應(yīng)的解碼方式把這些相關(guān)的編碼數(shù)據(jù)解碼出來,并放入緩沖區(qū)。其中,在頁分析時,當(dāng)解析出的該頁的顯示終止時間已經(jīng)過了,則并不需要分析該頁,把跟與該頁相關(guān)的數(shù)據(jù)緩沖區(qū)進(jìn)行清空操作。

  由于一個PES 包可能包含多個字幕段(subtitling_segment),因此必須循環(huán)分析到一個字幕段。對每個字幕段分析完后,都要判斷下一個字節(jié)是下一個字幕段的同步頭(0×0f)還是字幕數(shù)據(jù)結(jié)束標(biāo)志(0×ff)。若是下一個字幕段的同步頭則繼續(xù)分析,若是數(shù)據(jù)結(jié)束標(biāo)志則代表該PES 包攜帶的負(fù)載分析完畢。,把得到的數(shù)據(jù)存放到顯示緩沖區(qū),通過分析得到的PTS 創(chuàng)建一個定時時間,當(dāng)時間到的時候從緩沖區(qū)中把數(shù)據(jù)讀出,并調(diào)用OSD 層驅(qū)動顯示數(shù)據(jù)。

  在該解碼中,對于合成頁(composition_page_id)的處理分為兩種,這是因為同一個PID 可能傳送不同語言的字幕流,即語言不同的多個信息共享同一個PID流,所以在處理的時候可以把合成頁設(shè)置為濾波器的深度。當(dāng)一路數(shù)據(jù)流進(jìn)來的時候,對符合該PID 的PES 包中對應(yīng)的頁ID 進(jìn)行判斷,與頁ID 相同的就提取,不同的就丟棄,這是其中的一種解析提取方式。另一種方式是采用多種語言共用的PID 值去設(shè)置濾波器,把與該PID 值符合的字幕流提取出來,送去PES包解析。經(jīng)過PES 解析出該頁ID,這時再判斷該頁ID是否與在PMT 表解析得到的頁ID 一樣。如果一樣的話,說明正是要找的包,反之則說明是一個無效的PES 包,則丟棄該包。

  3.3 字幕圖層顯示模塊

  當(dāng)用戶在收看節(jié)目,啟動字幕功能時,用戶看到的是節(jié)目畫面和字幕畫面的疊加,OSD 界面顯示技術(shù)是指在圖像畫面上疊加圖文顯示,使屏幕提供更多附加信息。

  為了控制字幕在屏幕上的正常顯示,需要利用OSD 驅(qū)動模塊提供的區(qū)域操作功能。在該字幕顯示實現(xiàn)中主要用到的OSD 函數(shù)接口有OSD 初始化函數(shù)、區(qū)域清除函數(shù)、OSD 區(qū)域創(chuàng)建函數(shù)、OSD 區(qū)域顯示函數(shù)和OSD 區(qū)域隱藏函數(shù),在該系統(tǒng)中以回調(diào)函數(shù)的形式利用這些接口函數(shù)。在系統(tǒng)初始化中,必須先初始化字幕OSD 區(qū)域,獲取OSD 層的設(shè)備id,注冊字幕區(qū)域創(chuàng)建回調(diào)函數(shù)、字幕區(qū)域顯示回調(diào)函數(shù)、字幕清屏回調(diào)函數(shù)和字幕區(qū)域隱藏回調(diào)函數(shù)。把這些函數(shù)的地址加以保存,當(dāng)需要相應(yīng)的OSD 服務(wù)時,就通過函數(shù)指針調(diào)用相應(yīng)的函數(shù)。

  字幕顯示可以根據(jù)分析PES 包得到時間信息,并通過這個時間信息與音視頻同步。在每區(qū)域數(shù)據(jù)解碼完畢后,顯示模塊創(chuàng)建相關(guān)的OSD 區(qū)域,分配內(nèi)存空間,把解析完的數(shù)據(jù)連同該數(shù)據(jù)要顯示的時間PTS 送到顯示緩沖區(qū)。此時,根據(jù)當(dāng)前系統(tǒng)時鐘STC 和存儲的PTS 創(chuàng)建一個定時器,如果顯示時間已經(jīng)超過了系統(tǒng)時間,那么顯示緩沖區(qū)的數(shù)據(jù)就要清空掉;反之,當(dāng)顯示時間到的時候,定時器被觸發(fā),顯示內(nèi)容輸出到OSD 緩沖區(qū),并結(jié)合顯示持續(xù)時間來進(jìn)行字幕的顯示。顯示狀態(tài)流程如圖5 所示。

圖5 顯示狀態(tài)流程

圖5 顯示狀態(tài)流程

  由于字幕的顯示和機頂盒菜單界面的顯示都是基于區(qū)域的,對于不同的應(yīng)用,不能同時往同一個位置填充不同的數(shù)據(jù)。因此,在字幕顯示前要把菜單OSD 顯示區(qū)域隱藏起來。當(dāng)字幕正在顯示又需要使用系統(tǒng)菜單時,調(diào)用字幕區(qū)域隱藏函數(shù),設(shè)置顯示標(biāo)志為非需要顯示狀態(tài)。在菜單顯示結(jié)束后,調(diào)用字幕區(qū)域顯示函數(shù),恢復(fù)字幕顯示。采用這種方式可以解決字幕顯示和界面顯示的沖突。

  3.4 字幕用戶控制模塊

  控制模塊是人機交換模塊,主要負(fù)責(zé)用戶請求的處理。本模塊的首要任務(wù)是將用戶的請求進(jìn)行消息分類,再根據(jù)不同的消息與相關(guān)的模塊進(jìn)行通信,消息可分為以下幾種:獲取字幕控制信息消息、啟動及停止字幕數(shù)據(jù)濾波消息、字幕數(shù)據(jù)解碼及停止解碼消息、OSD 區(qū)域顯示消息、OSD 區(qū)域清除消息和OSD 區(qū)域隱藏消息。

  在機頂盒系統(tǒng)軟件中,字幕的創(chuàng)建通過遙控器上的字幕鍵(SUBT)觸發(fā),發(fā)送消息啟動數(shù)據(jù)控制信息提取模塊,解析完畢后顯示多語言字幕列表,供用戶選擇所要接收的語言(上下鍵選擇及OK 鍵觸發(fā))。用戶一旦選擇后,啟動字幕數(shù)據(jù)提取模塊,進(jìn)行字幕PES數(shù)據(jù)流的濾波和緩沖,同時啟動顯示模塊,根據(jù)各種時間進(jìn)行顯示或者清屏。字幕的關(guān)閉由遙控器上的退出(EXIT)鍵觸發(fā),進(jìn)而控制停止濾波、停止數(shù)據(jù)解碼,釋放字幕功能創(chuàng)建的各內(nèi)存空間,停止字幕顯示。

  在顯示字幕的同時,進(jìn)行界面菜單操作分成兩種情況。一種是菜單操作進(jìn)行了調(diào)臺,用戶控制模塊發(fā)送消息關(guān)掉字幕功能、停止濾波、釋放字幕功能創(chuàng)建的各內(nèi)存空間;另一種情況是非調(diào)臺的其他菜單操作,當(dāng)界面操作結(jié)束后則發(fā)送字幕恢復(fù)顯示消息給圖層顯示模塊恢復(fù)顯示。

  4 結(jié)束語

  本文采用模塊化的設(shè)計思路,按照功能將機頂盒字幕解碼系統(tǒng)分為四個模塊,即數(shù)據(jù)提取、數(shù)據(jù)解碼、數(shù)據(jù)顯示和用戶控制模塊。在各個模塊的實現(xiàn)上按照中間件和驅(qū)動層兩個方面進(jìn)行程序設(shè)計,使得編寫的代碼便于理解閱讀,同時又易于實現(xiàn)不同平臺間移植。

關(guān)鍵詞:數(shù)字機頂盒字幕解碼顯示系統(tǒng)設(shè)計方案

版權(quán)與免責(zé)聲明

凡本網(wǎng)注明“出處:維庫電子市場網(wǎng)”的所有作品,版權(quán)均屬于維庫電子市場網(wǎng),轉(zhuǎn)載請必須注明維庫電子市場網(wǎng),http://m.58mhw.cn,違反者本網(wǎng)將追究相關(guān)法律責(zé)任。

本網(wǎng)轉(zhuǎn)載并注明自其它出處的作品,目的在于傳遞更多信息,并不代表本網(wǎng)贊同其觀點或證實其內(nèi)容的真實性,不承擔(dān)此類作品侵權(quán)行為的直接責(zé)任及連帶責(zé)任。其他媒體、網(wǎng)站或個人從本網(wǎng)轉(zhuǎn)載時,必須保留本網(wǎng)注明的作品出處,并自負(fù)版權(quán)等法律責(zé)任。

如涉及作品內(nèi)容、版權(quán)等問題,請在作品發(fā)表之日起一周內(nèi)與本網(wǎng)聯(lián)系,否則視為放棄相關(guān)權(quán)利。

廣告
OEM清單文件: OEM清單文件
*公司名:
*聯(lián)系人:
*手機號碼:
QQ:
有效期:

掃碼下載APP,
一鍵連接廣大的電子世界。

在線人工客服

買家服務(wù):
賣家服務(wù):
技術(shù)客服:

0571-85317607

網(wǎng)站技術(shù)支持

13606545031

客服在線時間周一至周五
9:00-17:30

關(guān)注官方微信號,
第一時間獲取資訊。

建議反饋

聯(lián)系人:

聯(lián)系方式:

按住滑塊,拖拽到最右邊
>>
感謝您向阿庫提出的寶貴意見,您的參與是維庫提升服務(wù)的動力!意見一經(jīng)采納,將有感恩紅包奉上哦!