基於TI C64X DSP高清視頻編、解碼器軟硬件技術概要

 

1 技術參數一覽
 
Items
Encoder
Decoder
備註
硬件參數
CPU
TMS320DM642(720MHz)
兼容C64X
視頻D/A(A/D)
ADV7401(74.25MHz)
ADV7393(74.25MHz)
ADI公司
音頻D/A(A/D)
PCM1808(48KHz)
PCM1807(48KHz)
TI公司
FLASH
4M Nor Flash
--
SDRAM
32M(133MHz)
--
ISRAM
256KB
128K Cache2
EMAC
10/100Mbps
支持以太網
軟件參數
視頻算法
XviD 1.1.0
符合MPEG-4
支持分辨率
4:3(800x600, 1024x768)
16:9(720p)
16:10(1280x800)
可向上、下
兼容
幀率
24f/s以上
1024x768及更低分辨率能達到30f/s
碼率
6.144Mbps左右
--
視頻質量
(量化步長)
4~14
允許範圍:
4~31
開發環境
IDE版本
CCS3.1/CCS3.3
--
Flash Burn版本
V 2.8
--
JTAG仿真器
SEED-XDS560PLUS
--
NDK版本
V 1.71
--
DDK版本
V 1.11
--
基本功能
採集
視頻:ADV7401輸入爲VGA-RGB,輸出爲YUV4:2:2
音頻:PCM1808輸入爲雙聲道模擬信號,輸出爲16bit PCM
壓縮
視頻:XviD編碼器的輸入爲YUV4:2:0,輸出爲MPEG-4
音頻:PCM或MP3
傳輸
採用UDP組播經以太網傳輸
解壓縮
視頻:XviD解碼器的輸入爲MPEG-4,輸出爲YV12
音頻:PCM或MP3
顯示
視頻:ADV7393輸入爲YUV4:2:2,輸出爲RGB
音頻:PCM1807輸入爲PCM,輸出爲左右模擬聲道
擴展功能
視頻邊界自動調整
第一次開機自動調整,相當於顯示器的Autoset功能
視頻割裂復原
防止視頻在強幹擾的情況下出現上下屏割裂現象
動態IP
配置
支持運行過程中動態配置編、解碼設備的IP地址
音量調節
可隨時調整PCM1807側輸出的音量
 
說明:1)本設計爲TMS320DM642 Only解決方案,另支持TMS320DM642 + PCI Host方案,在第二種方案中網絡傳輸功能在PCI Host中實現。
2)支持與編碼器完全配套的採用DirectShow開發的PC機解碼客戶端。
3)編解碼器的軟件部分與硬件部分相對獨立,除線性彙編部分(.sa)要求支持C64X VLIW指令集以及EDMA指令,其它均爲標準的C程序。
4)本文檔所列技術參數在無特殊說明的情況下均指分辨率爲720p(1280x720)時的指標。


 

2 系統架構
2.1 編碼器
       如圖2.1所示爲編碼器的系統結構圖。
 

2.1 編碼器系統結構圖
 
視頻源前端爲VGA接口,經ADV7401視頻採集芯片將RGB模擬信號轉化成YUV4:2:2的數字信號,TMS320DM642的視頻口VP2將採集到的YUV數據由EDMA(Enhanced Direct Memory Access)通道拷貝到SDRAM的存儲單元。CPU從SDRAM中讀取採集到的YUV數據轉換成YUV4:2:0格式後進行XviD壓縮編碼並將編碼後的碼流回寫到SDRAM中。前端音頻源爲雙通道音頻接口,通過PCM1808音頻採集芯片,將模擬音頻信號轉換成PCM(Pulse Code Modulation)格式的數字音頻信號,並以左對齊I2S格式送入TMS320DM642的多通道音頻串口McASP。McASP接口將採集到的音頻數據經EDMA通道拷貝到SDRAM中的存儲單元。CPU讀取SDRAM中採集到的音頻數據進行處理並將結果回寫到SDRAM中。經壓縮處理後音視頻碼流再經以太網(10/100Mbps)以組播的形式發送到網絡客戶端。
2.2 解碼器
       如圖2.2所示爲解碼器的系統結構圖。
 
 

2.2 解碼器系統結構圖
 
CPU獲取從以太網接口接收的視頻碼流數據並解碼爲YV12格式的YUV數據,進一步轉換爲YUV4:2:2格式後由VP2以60f/s的速率輸出。輸出的YUV4:2:2數據經視頻分配器(Splitter)發送到多個視頻接收器,再由視頻接收器中的ADV7393轉換成RGB格式送至顯示器。解碼後得到的PCM音頻數據通過VP2通道隨視頻信號一同輸出到視頻分配器,再由視頻接收器中的PCM1807轉換成模擬信號送至音頻功放。當然,也可以去掉視頻分配器和視頻接收器,將VP2端口輸出的音、視頻信號直接與PCM1807和ADV7393相連。


 

3 軟件特性
3.1 軟件接口
l         編碼器
intMPEG4_encode( Encoder *enc_handle,
FVID_Frame *capFrameBuf,
unsigned char *outbuf );
l         解碼器
int MPEG4_decode ( unsigned char *istream,
FVID_Frame *disFrameBuf,
int istream_size );
3.2 XviD簡介
XviD是第二代MPEG-4視頻編碼內核中可選模式最多編碼速度最快的視頻編碼,其各種算法的設計都具有代表性的先進意義。其編碼功能模塊的劃分如圖3.1所示。
 
 

 

3.1 編碼器功能模塊劃分
 
3.3 XviD優化
本設計中綜合運用了項目級優化、程序級優化、EDMA優化、存儲結構優化和線性彙編優化。在此,只對程序級優化和線性彙編優化進行簡要說明。
3.3.1程序級優化
       考慮到實用性,本設計在XviD源碼的基礎上進行了如下刪減和改進:
       1)去掉B幀編碼;
       2)去掉半像素插值;
       3)採用h.263量化、去掉MPEG-4量化;
       4)去掉GMC編碼;
       5)去掉AC高級預測;
       5)sad值計算、鑽石搜索等函數進行了改進。
3.3.2線性彙編優化
本設計性能優化的大部分工作集中在線性彙編的改寫上,部分關鍵代碼改寫成線性彙編後性能對比如表3.1所示(解碼器的優化性能在此沒有列出)。
 
表3.1 線性彙編性能對比
函數
優化前(時鐘週期)
優化後(時鐘週期)
fdct()
2536
600
idct()
10040
1224
quant_h263_inter()
4000
528
dequant_h263_inter()
4700
616
quant_dequant_h263_intra()
6372
688
sad16v()
224
80
transfer_16to8add()
1088
340
transfer_16to8copy()
640
200
transfer_8to16sub_s()
880
584
 
 


 

4 應用與演示
如圖4.1所示爲編碼器實物圖,該編碼器完成視頻的採集、壓縮和網絡傳輸。視頻和音頻輸入信號以及網絡輸出信號均連接到背板插口。
 
 

 

4.1 編碼器實物圖
 
如圖4.2所示爲解碼器實物圖,該解碼器完成視頻網絡接收、解壓縮和視頻輸出。模塊左側集成了一個視頻分配器(Splitter)。該視頻分配器採用FPGA實現,它將DSP解壓縮後的YUV4:2:2格式的視頻信號發送到兩個千兆以太網口(對應車廂左右兩側)。
 
 

 
4.3 地鐵PIS視頻系統
如圖4.3所示爲用Encoder和Decoder模塊搭建的地鐵PIS(Passenger Information System)視頻系統的拓撲圖。該系統用於列車動態地圖顯示、報站廣播、司機乘客對講、播放廣告等。目前已成功應用於深圳地鐵2號北段延長線、廣州3號線、臺北地鐵線、沙特麥加地鐵線和新加坡地鐵線。
 
 

4.3 PIS系統拓撲圖
 
4.4 效果演示
4.4.1 DSP Encoder + PC Decoder
       在實驗室環境下搭建的DSP Encoder + PC Decoder的系統如圖4.4所示。
 
 

4.4 DSP Encoder + PC Decoder
 
圖中左側的便攜式PC機的音頻輸出和VGA輸出分別爲Encoder模塊的音頻和視頻輸入。中間爲一個Encoder模塊和一個Switch模塊以及一個5V的開關電源模塊,三者插在一塊背板上,模擬音頻信號和視頻信號由背板引入。右側爲一個PC Decoder,PC機的以太網口與Switch模塊的以太網口相連。PC機解碼客戶端軟件接收來自Encoder發送的碼流數據並解碼播放。PC機解碼客戶端顯示效果如圖4.5所示。
 
 

4.5 客戶端顯示效果
 
在此,便攜式PC機分辨率設爲1280×720,選用的播放文件爲《冰河世紀II》高清視頻文件。客戶端PC機分辨率設爲1280×960,圖4.5中LCD屏顯示的1280×720大小的中間區域(紅色方框內)即爲Encoder壓縮後的視頻碼流的解碼圖像。
4.4.2 DSP Encoder + DSP Decoder
       實際應用中搭建的DSP Encoder + DSP Decoder系統如圖4.6所示。
 
 

4.6 DSP Encoder + DSP Decoder
 
圖中左側爲安放在列車車頭的標準U3機箱,內部集成有DSP Encoder、Media Player和Switch等模塊。壓縮後的視頻數據流經Switch模塊由百兆以太網線(圖中綠色)傳輸到右側的U3機箱。右側的U3機箱安放在列車車廂位置,內部集成有DSP Decoder和Switch模塊,它將接收到的視頻碼流解碼後由千兆以太網線(圖中黃色)傳輸到視頻接收端並顯示。
 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章