|
搭配DSP使用的軟體是Code Composer Studio(簡稱CCS),其語法和C語言類似,但一些在Visual C上能跑的程式,在CCS上會無法Compile過,或是Compile與Build過了卻無法正確執行,某些語法或函數CCS並不支援,無法將原程式直接移植到DSP上,此次專題主要目標便是把H.263的C code移植到板子上,並能夠正常執行。 工作進度: 2月底~3月底:
複習久未使用的C語言,並開始練習使用以前未學到的東西,例如前置處理器、條件式編譯、檔案的開啟等。
接觸視訊編碼的基礎,了解壓縮原理,視訊的組成,巨方塊、動作向量等。
練習CCS的使用,了解其工作環境與基本使用方法。 back to top 3月底~4月中:
因H.261太小,所以由H.261升級為H.263。
繼續加強C語言能力。
開始看H.263的C code,首次接觸這種大程式,一時不知該如何下手,把原程式碼直接放到CCS上,針對其Compile錯誤之處開始著手。 back to top 4月中~5月中:
因程式碼有支援到H.263+,所以也需大致了解H.263+。
1.Encoder: 原本程式直接放上,有error:symbol _xxx is defined multiple times,其原因是在某個Header file "sim.h"中,宣告了幾乎大部分會用到的變數,在其他的Source files裡,程式碼一開始幾乎都會把"sim.h" include進去,造成了CCS誤認變數重複定義(Visual C沒有此問題),使用"extern"把變數宣告成全域變數可解決此問題。將有error的變數直接在各個Source files裡宣告成 "extern int variables",唯獨在"main.c"以平常方式宣告,並把原本"sim.h"裡的刪掉,如此可以在CCS裡Compile&Build通過。
2.Decoder: 沒有像encoder的錯誤,但是有個不能用的C的內建Header file,錯誤如下:
找出"fctnl.h",將裡面需要的內容直接改到有include "fctnl.h"的檔案,在CCS裡Compile&Build成功。 3.使用cmd檔配置記憶體區塊: 雖然encoder和decoder都成功在CCS裡Compile&Build,但Load到板子上跑了卻沒有結果出現,使用cmd檔配置記憶體區塊可解決此問題,找出原本板子有關H.263的example,仿照其設定來設定cmd檔,程式Load到板子可執行。 back to top 5月中~6月初:
學習如何將video sequence讀進程式,在Visual C上使用相同程式碼測試成功後,到CCS上卻只能跑一張 I-Frame,即使從中間的frame開始編碼也是一樣,跑完一張後程式即卡住,CPU一直運轉,卡在算helf-pixel時... 應該是此處程式寫法CCS跑不過,需針對此處演算法的執行直接加以修改。 back to top
|