<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

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

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

          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 所示。

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

            圖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 字幕用戶控制模塊

            控制模塊是人機(jī)交換模塊,主要負(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ù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();