<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 模擬技術(shù) > 設計應用 > 數字機頂盒字幕解碼顯示系統設計

數字機頂盒字幕解碼顯示系統設計

作者: 時(shí)間:2012-09-18 來(lái)源:網(wǎng)絡(luò ) 收藏

3.3 字幕圖層顯示模塊

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

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

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

  數字機頂盒字幕解碼顯示系統設計

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

  由于字幕的顯示和菜單界面的顯示都是基于區域的,對于不同的應用,不能同時(shí)往同一個(gè)位置填充不同的數據。因此,在字幕顯示前要把菜單OSD 顯示區域隱藏起來(lái)。當字幕正在顯示又需要使用系統菜單時(shí),調用字幕區域隱藏函數,設置顯示標志為非需要顯示狀態(tài)。在菜單顯示結束后,調用字幕區域顯示函數,恢復字幕顯示。采用這種方式可以解決字幕顯示和界面顯示的沖突。

  3.4 字幕用戶(hù)控制模塊

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

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

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

  4 結束語(yǔ)

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



評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>