经过一周半的努力,终于从ffmpeg中提取了一个包含asf解析功能和wmapro解码功能,并能在VC2005上运行的工程,当然现在还很简陋,呵呵。
这个是我第一次从ffmpeg中提取解码器模块,ffmpeg是个相当大的工程,这给提取工作带来了很大的麻烦,更大的麻烦其实在于ffmpeg遵循了C99的标准,而VC不支持。以前没怎么接触C99,经过这次移植对它稍稍了解了一下,也许是我C的水平不够,我感觉有些规定像是败笔,引用国外牛人的话就是——“stop adding shits to C”。
总之,不论C99给C语言带来了什么影响,它给我的提取移植工作带来了很多的麻烦。
谈谈我的提取经验吧:
1. 首先,是确定你的解码器依赖哪些文件。
理论上讲,要知道依赖的文件,最好是将源代码过一遍,建立一个测试工程,将找出来的那些文件添加进去,编译,看看有没有缺失函数的错误,再寻找缺失的文件,一直这样做下去,直至测试通过。
但ffmpeg是个很大的工程,内部的依赖关系很复杂,用上面的方法,估计即使能成功,耗时也肯定很多。当初我浏览了一遍ffmpeg的源码,搞清楚大体架构之后,我觉得上面的方法对于第一次使用ffmpeg的我来说,可能还不如直接看懂解码器原理,然后自己写一个来得快。
当我苦苦的啃代码的时候,别人教给了我一个简便的方法——就是使用ffmpeg自己的configure命令来定制编解码器,然后通过生成的.o文件来判断需要的.c文件。这是一个很快也很保险的方法,于是我定制了一个只包含asf解析、wmapro解码、pcm_s16le