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模塊,它將接收到的視頻碼流解碼後由千兆以太網線(圖中黃色)傳輸到視頻接收端並顯示。