移植ffmpeg到VC環境心得
所有想學習ffmpeg的網友有福了,大名鼎鼎的ffmpeg,移植到Windows的VC6版本全部開源,編譯環境為VC6+SP5+VCPP5。別忘記了頂貼哦。
移植ffmpeg到windows,主要的修改是ffmpeg中VC6不支持C99語法,簡單移植步驟如下:
1:首先裝好Linux、VMware和SDL,配置好smb,在Linux下編譯通過,驗證能正確的Run。
2:把Linux下相應目錄的所有文件通過smb拖到Windows,以后的修改移植都在Windows下進行。
3:對照所有同名的.c文件和.o文件,如果有.c文件沒有對應的同名.o文件,說明此.c文件沒有編譯,是多余的,可直接刪除。不過我的習慣是在此文件后加.old后綴來標示,這類文件有幾十個。注意有幾個.c文件是被include在其他.c文件中,因此沒有.o文件,不可刪除,我的習慣是把這類文件加.inc后綴,并且修改相應include的文件名。這類文件共計有 jpeg_ls.c.inc,mdec.c.inc,motion_est_template.c.inc,svq3.c.inc和wmv2.c.inc。
4:修改config.h文件,關閉掉MMX/SSE2等匯編加速開關。定義CONFIG_WIN32標示目標系統為WIN32。
5:刪掉目錄下所有Linux編譯生成的中間文件,包括.o文件,.d文件,還有Linux下的可執行文件。 如果怕刪錯了,就做好備份。
6:現在用VC6建一個工程文件,把所有文件的.c和.h文件加入到工程中,不包括ffmpeg.c/ffserver.c文件,不包括改了后綴名的.old文件和.inc文件。
注意在libavcodec和libavformat目錄下有些同名的.c文件,為區別同名.c文件,我的習慣是libavcodec目錄下的文件名加_codec,libavformat目錄下的文件名加_format。
7:為避免思維過多的切換,一次只處理一個方面的內容。首先搜查所有的AVCodec,對照.h文件中的定義改C99語法,通常是填一些NULL或0之類的值,接著搜查并處理所有的AVInputFormat,最后搜查并處理所有的AVOutputFormat。
8:搜查并處理所有AVRational語法。
9:至此,基本上主要的修改已經完成,剩下的主要有 動態數組和一些數組初始化,函數實參初始化等。
10:一維的動態數組比較好改,多維的動態數組比較困難,但是多維的動態數組多半用于編碼,如果只要解碼可以簡單的注釋掉。
11:數組初始化和函數實參初始化只需要多加一個臨時變量,很簡單的修改。
12:有些.h文件在VC6中找不到,有些可以從Linux中拷貝,也可以自己簡單定義。最后編譯修改.c文件的時候,一個一個的編譯,一個一個的修改,沒必要全部編譯。
最后祝大家好運,移植順利。開源的ffmpeg 是 51.8.0的版本,我大約修改了5天左右。
http://files.cnblogs.com/mcodec/ffmpeg.51.8_vc6.rar
from:http://www.cnblogs.com/mcodec/articles/1659671.html
RFID管理系統集成商 RFID中間件 條碼系統中間層 物聯網軟件集成