Dolby-AC3是需要Licence的,但是FFMPEG却有解码源代码,并且可以解码成功,不知道是不是这个license只限制在产品中征收版税,而不限制开源或者以研发为目的的使用。
FFMPEG中Dolby解码框架解读:
解码接口有三个,分别是init/decode/end,实现在ac3dec.c中,但ac3dec.c本身部直接参与编译,而是以头文件的形式被包含在ac3dec_float.c/ac3dec_fixed.c文件中,参与编译的是后者。
注册codec.
其中,EAC3就是DD+。
验证:
准备AC3片源:
mediainfo /media/caozilong/B0509F8C509F5844/The.Godfather.Part2.Blu-ray.720p.x264.DD51-HiS@MySiLU.mkv
可见音轨是AC3.
添加调试打印:
ac3_decode_frame函数中添加调试打印信息;
重新编译安装:
ffmpeg测试:
./ffplay /media/caozilong/B0509F8C509F5844/The.Godfather.Part2.Blu-ray.720p.x264.DD51-HiS@MySiLU.mkv
gstreamer测试:
gst-play-1.0 /media/caozilong/B0509F8C509F5844/The.Godfather.Part2.Blu-ray.720p.x264.DD51-HiS@MySiLU.mkv
可以看到,无论FFMPEG还是GST都有AC3解码入口的打印。
关于版权
产品中使用Dolby-AC3是需要购买版权的,但是在FFMPEG里面,是有AC3的解码器实现的,并且经过上面测试,它是可以正常工作的,既然开源实现可以替代杜比自己的实现,那岂不是任何人都可以不付出成本的加以使用了么? 那么Dolby赚钱的逻辑是什么?杜比的版权究竟限制的是什么呢?
经过请教,加深了对这个问题的理解,简单来说,杜比的逻辑是,能够播放杜比音频的终端,它的主控IC必须有我的授权,没有就属于非法使用,市场上发现这样的产品它就可以告你。但是如果你购买了我的授权,那么你是用我的解码器还是FFMPEG中的解码器,你随便选,但最终解释权归它所有。并且FFMPEG AC3解码器肯定比不过标准制定者杜比原厂的实现,所有肯定是有兼容性问题的,如果客户投诉杜比音质问题,上诉到杜比那里,人家拿一些特殊夹具一测就知道你是不是使用了官方解码器的实现。至于什么是夹具,就是一些测试用例,TestBench之类。
总结:Dolby License限制的是你用处理器解码的能力,至于你用哪种库(官方库,开源库)实现这种能力,它不管。