<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è) > 消費電子 > 設計應用 > 基于T-DMB的手機電視開(kāi)發(fā)要點(diǎn)

基于T-DMB的手機電視開(kāi)發(fā)要點(diǎn)

作者: 時(shí)間:2011-09-20 來(lái)源:網(wǎng)絡(luò ) 收藏
軟件的功能描述

本文引用地址:http://dyxdggzs.com/article/166044.htm

  軟件的主要任務(wù)是TS流的解復用、H.264和AAC+的解碼,采用微軟的Direct Show技術(shù),可以降低難度和周期。Direct Show技術(shù)是微軟提供的Windows平臺多媒體開(kāi)發(fā)包,以COM為基礎。Direct Show使用Filter Graph的模型來(lái)管理整個(gè)數據流的處理過(guò)程。參與處理的各個(gè)功能模塊叫Filter,按功能分3類(lèi):Source、Transform、Rendering Filter 。Source Filter主要負責獲取數據和前期的處理;Transform Filter負責數據格式的轉換和傳輸,主要是負責解碼;Render Filter負責顯示。各個(gè)Filter和應用程序的交互靠事件通知機制來(lái)完成:Filter狀態(tài)改變時(shí)發(fā)出一個(gè)事件,由Filter Graph Manager處理或發(fā)給應用程序。整個(gè)軟件可以分為5大功能模塊,如圖3所示。TS解復用器模塊屬于Source Filter,作用是從DMA緩沖中獲取數據,然后從TS流中解析PAT(Program Association Table)和PMT(Program Map Table),得到相關(guān)節目的音頻和視頻數據TS包的PID(Packet Identifier)之后,就可以組合PES(Packetized Elementary Stream)包,同時(shí)還可以得到和音視頻同步相關(guān)的參數:PCR(Program Clock Reference)、CTS(Presentation Time Stamp)、DTS(Decoding Time Stamp),最后把PES包去包頭后的ES(Elementary Stream)數據發(fā)給下游的解碼Filter。H.264和AAC+解碼模塊屬于Transform Filter,主要功能是把從上游獲取的音頻和視頻數據進(jìn)行解碼,把解碼得到的PU(Presentation Unit)重新排序(只有用到雙向預測時(shí)需排序),送給下游的生成器。視頻生成器和音頻生成器模塊屬于Rendering Filter,主要完成顯示功能。如果數據格式需要轉換,可以在解碼器和生成器之間加一個(gè)具有轉化功能的Transform Filter。

  

  音頻和視頻的同步

  軟件設計中的關(guān)鍵技術(shù)是解決音視頻同步的問(wèn)題。音視頻同步主要在 TS解復用器中解決。要想做到音頻和視頻的同步,需要用到這幾個(gè)參數:PCR、DTS、PTS??梢栽赥S包的調整域中得到PCR,從PES包中得到PTS。PES包中的數據是SL包,可以從SL包頭中得到DTS。DTS是解碼時(shí)間,PTS是顯示時(shí)間。PCR是對編碼器90K時(shí)鐘的計數,它的作用是在解碼器切換節目時(shí),提供對解碼器PCR計數器的初始值。PTS、DTS最大可能和PCR達到相同的時(shí)間起點(diǎn),即對解碼器提供一個(gè)公共的時(shí)鐘參考,以便準確地進(jìn)行音視頻的同步。PCR捕捉到和DTS數值相同的時(shí)刻,就可以進(jìn)行音視頻解碼。因為視頻編碼的時(shí)候用到了雙向預測,一個(gè)圖像單元被解出后并非馬上顯示,可能在存儲器中留一段時(shí)間,作為其余圖像單元的解碼參考,在被參考完畢后才顯示。由于聲音沒(méi)有用到雙向預測,它的解碼次序就是它的顯示次序,故對它MPEG只提出PTS的概念,PTS就是音頻的DTS值。即:

  DTS=PTS (1)

  如果得不到PTS,那么按下式計算:

  PTS=PTS_pre +Xms (2)

  其中,PTS_pre表示前面一個(gè)AU的PTS,X是ACC+一幀的時(shí)間間隔,以ms為單位。

  一般視頻對象分為I-VOP、B-VOP、P-VOP三種編碼類(lèi)型。假設在解碼器端的VO(Video Object)輸入次序為:

  1 2 3 4 5 6 7 8 9 10………

  I B B P B B P B B P B B P B B I B B P........

  由于視頻對象編碼時(shí)用到雙向預測,解碼器的實(shí)際解碼次序為:

  I P B B P B B P B B P B B I B B P B B ........

  顯示次序同解碼器的輸入次序。假設知道I幀的PTS和DTS。那么得到關(guān)于P幀:

  PTS_P4=PTS_I +33.67ms * 3 (3)

  DTS_P4=DTS_I +33.67ms (4)

  B1幀:PTS_Bn=PTS_I +33.67ms * 2 (5)

  DTS_Bn=DTS_I +33.67ms (6)

  B2幀可以參考上面的兩個(gè)式子。其中,33.67ms為視頻幀時(shí)間間隔。

  軟件開(kāi)發(fā)注意事項

  關(guān)于H.264的解碼效率問(wèn)題。軟件解碼部分采用開(kāi)源工程ffmpeg中的H.264解碼器,它效率高,方便移植,其中,關(guān)鍵運算,如IDCT、運動(dòng)補償等還在幾種不同平臺上用匯編進(jìn)行實(shí)現。把H.264解碼器移植到ARM平臺,對于IDCT和運動(dòng)補償匯編代碼,只需仿照其它平臺的代碼就可實(shí)現,其開(kāi)發(fā)難度并不大。音頻解碼部分可以參考FAAC和FAAD開(kāi)源工程。

  結語(yǔ)

  本文討論的是能夠接收符合規范(各種標準的接收終端的差別很小)信號的嵌入式手持設備的軟硬件設計概述,這種設備使用戶(hù)可以不經(jīng)過(guò)移動(dòng)通信網(wǎng)絡(luò )直接獲得數字信號,能夠滿(mǎn)足人們隨時(shí)隨地對信息的需求。在實(shí)際的開(kāi)發(fā)過(guò)程中的主要硬件問(wèn)題是電磁兼容,軟件是音視頻的同步和H.264的解碼效率問(wèn)題。軟件開(kāi)發(fā)的難點(diǎn)集中在MPEG-2的解復用和Direct Show應用框架的設計。


上一頁(yè) 1 2 下一頁(yè)

評論


相關(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>