码迷,mamicode.com
首页 > 编程语言 > 详细

三线程加速无损视频解码

时间:2020-01-09 01:02:12      阅读:107      评论:0      收藏:0      [点我收藏+]

标签:传统   方案   nbsp   操作   图像   不能   利用   其他   自带   

    无损解码速度快,需要56ms(基于YUV和DCT的需要1.6s),经过优化,比如将for循环改为C语言自带的memcpy替换,提升到50ms,还不足于正常播放,因为1000ms/50ms=20帧峰值。为此需要提速,如果正常播放25帧视频,则需要可播放30帧的能力。

1. 对于图像提速可采用以下方法:

    1.1 汇编方法:汇编可起到事半功倍的作用,但对于复杂的程序比如视频编码,转换很困难,需要时间和“汇编功力”。

    1.2 图像分割方法:将图像“分割”为n等分区域,分别用线程同时运行,起到并行加速作用。“分割”图像需要一套操作机制,有些麻烦。

    1.3 多媒体指令方法:就是以前的蝶形运算,现在是加强版,缺点是破坏程序结构,有些程序不适合(困难度很高)。

    1.4 三线程方法(本文首先提出):彩色图像是由RGB构成的,基于传统方式的YUV,都是三个分量,分别由三个线程同时运行,起到加速作用。优点是利用自然的三个分量,操作简单。缺点是只能三个分量(线程),加速有限。经测试,由原来的50ms提速到22ms,提高了28ms,可实现1000ms/22ms=45帧峰值,满足了最高播放25帧要求。基于YUV和DCT的不能满足要求。

2. 线程与CPU“核”:多线程在多核处理器上是并行运行的。如果多个线程访问一个变量会造成冲突,起不到并行加速作用。

3. 其他视频加速:由显卡或CPU多媒体硬件部分实现加速,不通用,需要检测各种环境,应用不同方案才能“通用”。

 

三线程加速无损视频解码

标签:传统   方案   nbsp   操作   图像   不能   利用   其他   自带   

原文地址:https://www.cnblogs.com/hbg200/p/12169278.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!