<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è) > 嵌入式系統 > 設計應用 > 基于DSP的機載視頻圖像實(shí)時(shí)壓縮與處理系統

基于DSP的機載視頻圖像實(shí)時(shí)壓縮與處理系統

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

  2. 3 系統工作流程

  系統由初始化模塊、采集模塊、壓縮模塊、打包編幀模塊、存儲模塊和傳輸模塊組成。其工作流程如圖2 所示。

圖2 機載圖像將壓縮處理子系統軟件工作流程

  初始化模塊完成對程序從Flash 中導入內存、DSP各端口及解碼芯片工作模式的設置及全局數據的申請及初始化, 并啟動(dòng)對視頻端口狀態(tài)的查詢(xún)。當定時(shí)檢測到視頻端口緩沖區中有數據時(shí), 將端口緩沖區中的原始數據根據接收的控制命令進(jìn)行指定大小大抽取, 輸出YUV4: 2: 0格式的圖像數據緩存到外圍存儲模塊中。壓縮模塊將采集的圖像數據進(jìn)行MPEG-4 壓縮。打包、編幀模塊將壓縮后的MPEG-4 編碼數據進(jìn)行實(shí)時(shí)打包, 并對打包后的數據進(jìn)行連續的實(shí)時(shí)編幀。當數據包緩沖區中無(wú)數據時(shí),便在傳輸幀中插入空數據。編幀完的數據64 位并行緩存到外圍SDRAM 中。在FIFO 中斷服務(wù)程序中, 啟動(dòng)一次DMA 傳輸, 將緩存在SDRAM 中的幀數據流傳輸到FIFO 中, 實(shí)現256 KB/ s 的恒定速率的數據傳輸。

  需要注意的是原始圖像和壓縮碼流在DSP 中的存儲。視頻端口、編碼程序都要訪(fǎng)問(wèn)原始圖像, 例如在某一時(shí)刻,編碼程序訪(fǎng)問(wèn)當前幀圖像, 而視頻端口正在輸入下一幀圖像, 為了避免訪(fǎng)問(wèn)沖突, 原始圖像在DSP 中采用三緩沖區進(jìn)行管理。壓縮碼流由編碼程序寫(xiě)入, 根據FIFO 狀態(tài)恒定碼率輸出, 所以采用環(huán)式存儲管理協(xié)調讀寫(xiě)的步調。

  2. 4 內存分配

  DM642 片內只有256 KB 的存儲空間, 因此當前幀、參考幀和當前幀的重建幀都必須放至片外存儲器, 壓縮碼流若被主機讀取, 也放至片外。其他數據如程序代碼、全局變量、VLC碼表、各編碼模塊產(chǎn)生的中間數據等均可放至片內。

  由于CPU 訪(fǎng)問(wèn)片外的速度通常要比訪(fǎng)問(wèn)片內慢幾十倍, 片外數據的傳輸通常成為程序運行時(shí)的瓶頸, 即使代碼效率很高, 流水線(xiàn)也會(huì )因為等待數據而被嚴重阻塞。解決這一問(wèn)題的有效方法是用EDMA 傳送數據。程序是逐個(gè)宏塊進(jìn)行編碼時(shí), 在編碼當前宏塊的同時(shí), EDMA 將下一個(gè)宏塊的數據、用到的參考幀數據由片外傳送至片內;當前宏塊做完成運動(dòng)補償后, EDMA 將重建后的宏塊由片內傳送至片外。這樣CPU 只對片內數據進(jìn)行操作, 使得流水線(xiàn)可以順利進(jìn)行, 而壓縮碼流按逐個(gè)碼字有時(shí)間間隔地寫(xiě)入, 可由CPU 直接寫(xiě)至片外。

  3 基于DM642 的軟件優(yōu)化技術(shù)

  為了提高代碼的執行效率, 必須充分利用C64x CPU的VL IW 和流水線(xiàn)結構對其進(jìn)行優(yōu)化, 使程序無(wú)沖突地并行執行[ 6] 。MPEG 4 編碼程序中包含大量的循環(huán)體, 例如計算量化、DCT、半像素插值、運動(dòng)補償和構建重建幀等。這些循環(huán)體代碼并不復雜, 且執行次數頻繁, 占據了編碼的絕大部分時(shí)間, 因此循環(huán)體的優(yōu)化是重點(diǎn)。本文所采取的代碼優(yōu)化為C 語(yǔ)言?xún)?yōu)化和編寫(xiě)線(xiàn)性匯編兩個(gè)步驟,主要從消除數據相關(guān)性、數據打包和循環(huán)體的軟件流水3個(gè)方面進(jìn)行優(yōu)化。

  3. 1 針對C語(yǔ)言的優(yōu)化

  C 代碼的優(yōu)化主要依靠開(kāi)發(fā)環(huán)境CCS 的編譯器完成, 編程者需要合理選擇編譯選項, 并利用特定的關(guān)鍵字和指令向編譯器提供優(yōu)化信息 。例如關(guān)鍵字rest rict 用來(lái)消除數據間的相關(guān)性, 編譯器從而可以安排語(yǔ)句的并行執行 ; 內聯(lián)函數_ nasser t 有助于數據的打包處理; 宏指令# pragma MU ST _IT ERAT E 告訴編譯器有關(guān)循環(huán)迭代次數的信息, 編碼器會(huì )根據這一信息進(jìn)行軟件流水。

  3. 2 用線(xiàn)性匯編改寫(xiě)關(guān)鍵代碼

  線(xiàn)性匯編是TMS320C6000 特有的一種編程語(yǔ)言, 介于高級語(yǔ)言和匯編語(yǔ)言之間。它可以指定指令用到的寄存器和功能單元, 更易于對數據的打包處理。

  線(xiàn)性匯編代碼的并行處理和軟件流水由匯編優(yōu)化器完成, 編程者需要熟悉C64x DSP 的CPU 結構和指令集, 認真設計代碼并充分利用編譯器的反饋信息合理修改代碼, 才能寫(xiě)出高質(zhì)量的線(xiàn)性匯編。本設計中程序主框架采用C 語(yǔ)言編寫(xiě), 其它各關(guān)鍵部分的代碼采用線(xiàn)性匯編實(shí)現。

  4 結果分析

  本壓縮系統在對標準Foreman 序列、地面人群及道路車(chē)輛等視頻序列進(jìn)行壓縮測試。對D1 分辨率視頻序列能夠實(shí)現25 幀/ 秒實(shí)時(shí)的壓縮編碼, 壓縮碼率為1. 8 Mb/ s, 解碼圖像視覺(jué)效果良好, 經(jīng)編幀后輸出250KB/ s 恒定基帶碼流。在圖像傳輸中沒(méi)有出現數據擁塞和丟失現象。有效滿(mǎn)足了高清晰機載圖像幀察的目的。

  5 結束語(yǔ)

  本文以TMS320DM642 芯片為中心, 詳細介紹了機載圖像實(shí)時(shí)壓縮系統的設計及MPEG 4 實(shí)時(shí)編碼器的優(yōu)化。系統經(jīng)測試實(shí)現了高分辨率圖像的實(shí)時(shí)壓縮和實(shí)時(shí)編幀傳輸, 滿(mǎn)足了系統設計需求。本文采用MPEG 4Simlpe Profile 算法, 在算法方面還有一定的研究空間。


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

關(guān)鍵詞: 圖像壓縮

評論


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