移植FFMPEG到VS2008系列之二
前面我们已经把文件重命名了,准备好了代码之后就是把代码添加到vs2008开发环境中来。
3. 创建工程添加文件。
创建新的空的控制台工程,把所有的文件都添加进来。有几个文件夹下面的文件不用添加,主要有compat,libavdevice,tools。要注意的是子目录x86下面的c文件也需要添加进来。
上图之中test文件夹里面有些文件是自己添加的,它们是config.h, ffmpeg_init_av_pix_fmt_descriptor.c,g_var_func_init.c
添加完文件之后,不要编译,因为编译会占用较长时间,而且会有成千上万的错误。
4. 完善config.h文件
这两个文件stdint.h ,inttypes.h 在工程中是没有的,全部替换为config.h, 在config.h, 进行数据类型的重定义,主要如下:
typedef char int8_t; typedef unsigned char uint8_t; typedef short int16_t; typedef unsigned short uint16_t; typedef int int32_t; typedef unsigned int uint32_t; typedef __int64 int64_t; typedef unsigned __int64 uint64_t; #define PRIi8 "i" #define PRIx8 "x" #define PRIx16 "x" #define PRIx32 "x" #define PRId64 "d" #define PRIu32 "u" #define PRIu16 "u" #define PRIu64 "u" #define PRIx64 "x" #define PRIX64 "X" #define SCNd64 "d" #define SCNd32 "d" #define PRIi64 "i" #define PRIi32 "i" #define PRIi16 "i" #define INT16_MAX (int16_t)32767 #define INT16_MIN (int16_t)-32768 #define UINT16_MAX (uint16_t)65535 #define INT32_MAX (int32_t)0x7FFFFFFF #define INT32_MIN (int32_t)0x80000000 #define INT64_MAX (__int64)0x7FFFFFFFFFFFFFFF #define INT64_MIN (__int64)0x8000000000000000 #define UINT32_MAX (uint32_t)0xFFFFFFFF #define UINT64_MAX (uint64_t)0xFFFFFFFFFFFFFFFF #define INT64_C(c) (c ## LL) #define UINT64_C(c) (c ## ULL)
config文件的其它部分主要是一些对codec,mux,demux,filter等配置的宏定义,这一部分太多,不便列出。有一个方法可以比较容易的写出。就是排除完所以编译错误会出现很多的链接错误,这些链接错误很多是说对某个codec的配置找不到的错误,把这些所有的错误copy下来,在复制到config当中,就可以一次搞定所有的codec,mux,demux,filter等配置宏定义。