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

          新聞中心

          EEPW首頁 > 消費電子 > 設(shè)計應(yīng)用 > 基于AU 1 200的TS流處理設(shè)計

          基于AU 1 200的TS流處理設(shè)計

          作者: 時間:2009-08-17 來源:網(wǎng)絡(luò) 收藏

          以Linux系統(tǒng)為平臺,利用其多線程的優(yōu)勢,結(jié)合1200硬件組成的數(shù)字電視播放系統(tǒng)可以方便地實現(xiàn)數(shù)字電視流的播放。數(shù)字電視播放系統(tǒng)結(jié)構(gòu)如圖2所示。

          本文引用地址:http://www.ex-cimer.com/article/166898.htm

          3 數(shù)字電視播放軟件的
          播放軟件采用模塊化,多線程并行。各模塊并通過MAI(Media Application Interface)Engine完成相互問的數(shù)據(jù)傳遞和同步。軟件要求在保持流暢播放MPEG(1,2,4),DivX,WMV和XviD等格式多媒體文件的同時增加播放數(shù)字電視的功能。
          3.1 已有播放軟件結(jié)構(gòu)
          已有的媒體播放軟件結(jié)構(gòu):播放軟件內(nèi)各模塊通過MAI Engine將相應(yīng)模塊組裝起來,完成特定格式的媒體文件的播放或格式轉(zhuǎn)換。
          模塊類型分為:File Reader模塊、Demux模塊、De-coder模塊、Render模塊和File Writer模塊。模塊是否需要載人、如何進行鏈接由MAI Engine根據(jù)播放的媒體格式而定。模塊裝載后以線程的形式獨立運行,模塊間通過數(shù)據(jù)緩沖區(qū)進行數(shù)據(jù)交換,并由MAI Engine負責(zé)協(xié)調(diào),以確保模塊運行正常。
          3.2 播放軟件內(nèi)的
          在播放軟件內(nèi)實現(xiàn)數(shù)字電視流的播放,需要在原有的播放系統(tǒng)上增加TS流的Reader、Demux和Decoder模塊。由于數(shù)字電視的音視頻編碼格式都是公開且確定的,因此需要相應(yīng)的Decoder模塊進行處理。MAE的TS流處理模塊結(jié)構(gòu)如圖3所示。

          (1)TS-Reader模塊
          TS-Reader模塊是讀取TS流的模塊。它從硬件設(shè)備獲取TS流數(shù)據(jù),按照TS-Demux的數(shù)據(jù)緩沖區(qū)大小要求寫入該緩沖區(qū)。主要實現(xiàn)打開TS流數(shù)據(jù)接口、關(guān)閉接口和讀取TS流數(shù)據(jù)3個功能,分別對應(yīng)3個主要函數(shù)一TSstreamopen()、_TSstreamclose()和 _TSstreamread()。由于數(shù)字電視不支持回放,因此不具備定位搜索(即Seek)的功能。
          (2)TS-Demux模塊
          TS-Demux模塊是進行TS流解析的模塊,它是處理數(shù)字電視TS流的關(guān)鍵。TS-Demux從緩沖區(qū)中取到數(shù)據(jù)后,需要對TS流進行解析,然后返回 MAI當(dāng)前TS流的節(jié)目信息,供應(yīng)用程序選擇。在確定節(jié)目流PID后,TS-Demux將根據(jù)音視頻PID分檢TS流,獲取Video和Audio數(shù)據(jù),供相應(yīng)的Decoder解碼。



          關(guān)鍵詞: 設(shè)計 處理 TS AU 基于

          評論


          相關(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); })();