在调试FFmpeg的时候发现一个古怪问题,我使用xcode进行编译和调试。编译成X86的版本。在跟踪调试的时候发现一个怪问题。
代码在ffmpeg_opt.c的static int open_input_file(OptionsContext *o, const char *filename)函数内。
#ifdef DEBUG
av_log(NULL,AV_LOG_INFO,"func:%s(%d) filename:%s \n", __func__,__LINE__,filename);
#endif
if (!strcmp(filename, "-")) //当程序运行过这行代码后,调试窗口现实filename的值为NULL.非常奇怪。
filename = "pipe:";
#ifdef DEBUG
av_log(NULL,AV_LOG_INFO,"func:%s(%d) filename:%s \n", __func__,__LINE__,filename); //这个是我添加的代码,这里可以打印出filename的正确值。
#endif
当程序运行完strcmp(filename,"-")之后,filename的debug窗口显示是NULL值。
大家可以在克隆https://github.com/daozhao/FFmpeg.git这个项目,然后checkout release/2.2withComment这个分支。 这个已经分支包含了xcode project的文件,然后运行调试FFmpegMakefile targets,重现我的bug。
另外我也录制了屏幕,大家可以直接观看我的情况。http://v.youku.com/v_show/id_XNjk4NTkxNzUy.html
我的系统版本10.9.2,xcode的版本是5.1.1
最后发现,是编译的时候添加了优化选项 -O3。
由于使用External Build System,Makefile是ffmpeg自动生成的。它添加了编译优化选项-O3。所以出现上边的情况。
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。