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

          關 閉

          新聞中心

          EEPW首頁 > 工控自動化 > 設計應用 > 基于TMS320DM642和H.264的網絡視頻監(jiān)控系統(tǒng)設計

          基于TMS320DM642和H.264的網絡視頻監(jiān)控系統(tǒng)設計

          作者: 時間:2011-04-11 來源:網絡 收藏

          硬件系統(tǒng)的工作過程如下:首先是模擬COMS攝像頭采集PAL制式的模擬視頻信號。然后圖像A/D轉換芯片SAA7115HL會將模擬視頻信號轉換成數字視頻信號并傳輸給。中的EDMA控制器會先將從A/D轉換器得到的視頻圖像存儲到SDRAM中,等到TMS320DM6 42處理器已經準備好處理圖像的時候,再從SDRAM中將圖像取出來進行H.264格式的編碼壓縮。編碼完成之后,會得到H.264的編碼碼流,這個時候,再利用RTP/UDP/IP的協(xié)議棧將H.264的編碼碼流進行逐層打包并通過EMAC接口發(fā)送到因特網上。

          2 H.264編碼器的優(yōu)化
          H.264的編碼器是非常復雜的,所以,當我們用C代碼實現其功能的時候,往往會面臨實時性的問題,即處理器無法在1s內完成所要求的數據處理量。為了使視頻遠端顯示連續(xù),必需使處理器在1s內能夠壓縮編碼并通過網絡傳輸20幀以上的圖像。但是,在寫出第一版代碼時,會發(fā)現處理器根本就無法達到要求,在1s鐘之內,它只能處理5-6幀的圖像,因此就必須對編碼器進行優(yōu)化,以求能夠達到實時性。
          一般來說,如果在DSP中實現H.264的編碼器優(yōu)化,那么優(yōu)化過程主要分為四個階段,分別是算法優(yōu)化、C代碼優(yōu)化、線性匯編的優(yōu)化、CCS編譯器下的選項優(yōu)化,它們被順序的完成。在DSP中實現H.264編碼器的優(yōu)化過程見圖2。

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

          b.JPG


          H.264的編碼算法主要有:幀內預測編碼、幀間預測編碼、DCT變換和量化、熵編碼,其中最消耗時間的是幀間預測編碼,它用的時間要占到整套算法運行時間80%左右,因此,幀間預測編碼算法的優(yōu)化也就成為H.264編碼器算法優(yōu)化的重點。
          實現編碼器C代碼的優(yōu)化,主要是注意在寫C代碼的時候要寫出高效簡潔的代碼,使在能夠保持算法基本功能的前提下,占用的處理器運算資源最少。如果C代碼級優(yōu)化完了之后,還不能滿足實時性,就必須用到線性匯編的優(yōu)化。線性匯編代碼是對影響速度的關鍵C代碼進行重寫。線性匯編代碼與C6000的匯編代碼類似,不同的是線性匯編代碼并不用像匯編代碼那樣要給出所有的信息,它可以對這些信息進行一些選擇,也可以由匯編優(yōu)化器確定,如指令使用的寄存器,指令使用的功能單元等,匯編優(yōu)化器會根據代碼的情況確定這些信息,并產生匯編文件。
          在優(yōu)化過程中,一般都會借助于編譯器自帶的優(yōu)化功能進行優(yōu)化。CCS中有優(yōu)化選項,來幫助我們對代碼進行進一步的優(yōu)化。優(yōu)化選項共有四個:o0、o1、o2、o3。o0級別的優(yōu)化內容有:簡化控制流圖、分配變量到寄存器、進行循環(huán)旋轉、刪除未使用的代碼、簡化表達式和代碼;o1級別的優(yōu)化除了包括o0的內容外還有:執(zhí)行局部復制/常量傳遞、刪除未使用的賦值語句、刪除局部共有表達式:o2級別的優(yōu)化除了包括o1的內容外還有:進行軟件流水、進行循環(huán)優(yōu)化、刪除全局共有子表達式、刪除全局未使用的賦值語句、把循環(huán)中對數組的引用轉變?yōu)檫f增的指針形式、進行循環(huán)展開;o3級別的優(yōu)化除了包括o2的內容外還有:刪除未使用的所有函數、內聯(lián)小的函數、重新對函數聲明進行排序、識別文件變量的特征。



          評論


          相關推薦

          技術專區(qū)

          關閉
          看屁屁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); })();