264解码多线程项目总结

从3月份开始到4月底,开始了多线程解码的项目。这个项目主要为了利用当今的CPU多核技术,将H.264解码单线程变成多线程,以提高解码速度。刚开始的时候不知道如何下手,不过老大(项目经理)给了我一些提示,让我先看看ffmpeg中的解码多线程是如何实现的,然后再根据ffmpeg中的多线程思路来完善我们公司自己的解码器多线程功能。因此,基于这个项目基本上是按照以下的步骤实现的:

1)由于按照老大的提示需要参照ffmpeg的多线程解码思路,所以第一步首先就需要实现ffmpeg的单步调试,以理解ffmpeg多线程解码的运行方式。这里可选择两种方法,第一种适合只安装了VS2010的windows用户,第二种则适合于在linux上进行代码调试的人。第一种方法稍微复杂,主要是利用编译出的pdb信息进行调试,详细步骤可参考之前的文章《VS2010中进行ffmpeg编译与单步调试》。第二种方法则相对比较简单,由于ffmpeg源码本身是在linux平台上进行开发的,因此只要在linux平台上先编译源码,然后安装相应的IDE进行调试即可,IDE可采用QT creator或者code blocks。不过这里值得注意的是,利用第一种方法进行ffmpeg的调试相对比较粗糙,因为现在最新的ffmpeg版本代码都需要C99的支持,而VS2010则不支持C99标准,所以需要在编译时下载C99 warper进行包装后才能编译通过形成pdb文件,但这样一来,在调试的时候问题也就来了,由于在编译的时候采用了C99转换,故而实际生成的调试信息和源代码不能精确匹配,可能会给调试人员带来理解上的困扰。因而,笔者建议,在条件允许的情况下,可以采用VS2012以后的版本进行调试,或者最好采用linux平台进行代码调试。但如果你没有安装linux平台怎么办呢?笔者按照自己的经验,建议你可以安装一台虚拟机,然后在虚拟机上装一个linux系统,这样你就能够充分享用windows和linux两者带来的便利了。

2)ffmpeg的调试工作做好以后,接下来就是理解ffmpeg的多线程解码思路了。通过调试我们可以发现,在ffmpeg中,可以分别采用帧内多线程解码和帧间多线程解码,帧内多线程解码的的依据主要是帧内各宏块的参考宏块可能相同,需要相同参考宏块进行解码的宏块可以同时进行解码。同理,帧间多线程解码的依据也是由于各帧图像需要的参考帧可能相同,需要相同参考帧的帧可以同时进行解码,最容易理解的就是部分B帧的并行解码了。由于帧内多线程解码的效率并不是很高,因此我主要针对的是帧间多线程解码方法,关于帧间多线程解码的内容可以参考网站http://blog.csdn.net/bsplover/article/details/7542980和硕士论文《视频编解码算法的并行研究》,以及以下三张图片内容:


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值