如何用vc6编译ffmpeg, 并单步调试

  目前官方ffmpeg的最新版本为0.9, 我们就以此为例:

1. 下载最新git版本的源代码(http://ffmpeg.zeranoe.com/builds/, 本例下载的是2011-12-12版本)
2. 放到MSYS环境里配置,生成config.h文件。mingw gcc是能顺利编译通过整个项目的,并生成最新版的ffmpeg。
3. 建立vc6工程,把相关代码都加入到工程中。由于在vc生成的obj都在一个目录下,所以需要修改文件名,让其不重名。
4. 安装intel compiler 11编译器,单独提取其icl.exe及相关include目录,替换掉vc6自带的cl.exe, 在工程设置里加上/Qstd=c99,用于支持C99语法。
5. 安装intel compiler 10编译器,单独提取lib目录,因为此版本调试库的结构能完美支持vc6的调试信息。
6. 在vc6的options里设置include/exe/lib查找目录,指向intel编译器。
7. 开始修改代码,添加C99的相关linux头文件, 用于支持vc6, (unistd.h, stdint.h, inttypes.h, getopt.h)
8. 添加C99和linux的相关实现代码,ffmpeg需要用到: getopt_long, strtoll, gettimeofday, atoll, usleep等
9. 修改windows的相关兼容代码,GetWindowLongPtr -> GetWindowLong, GWLP_USERDATA
10. 去除硬件加速libavcodec代码,和依赖库代码。选择所需要的模块,修改相关的allcodec.c, alldevices.c, allfilters.c, allformats.c
11. 加上链接库,sdl.lib, winmm.lib, dxguid.lib, wsock32.lib
12. 在os_support.c里,把<winsock2.h>移动到文件最前面。
13. 如果是ffmpeg, 已经能顺利编译了。如果是ffplay,还需要编译静态sdl, 并链接。
14. 等等,音频运行不正确?有雪花声?因为还需要替换所有文件里的<math.h>为<mathimf.h>, 默认的rint等数学函数和gcc不兼容。
15. ok, 大功告成,纯C版本完美运行。
16. 由于ffmpeg0.9在c文件里,添加了一些intel compiler不支持的mmx语法,所以编译mmx/sse加速版本时,一小部分.c文件需要依赖mingw gcc编译成.o文件,再通过vc6的lib.exe工具转换成lib,让vc6链接上。当然还要加上yasm编译的很多汇编obj.
17. 有兴趣的,可以继续以此方法编译x264库,官方最新代码MMX版也可以顺利通过。


摘自 foxriver

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值