关键词: 视频
高清解码器(精选六篇)
高清解码器 篇1
关键词:X264,H.264,Xvid,MPEG-4,MEncoder,高清视频编码,视频压缩
1、引言
随着网络带宽的增长、单位硬盘存储的价格下降以及对视频质量要求的提高, 网络传输的视频中高清视频所占的比例越来越大。全高清视频 (Full High-definition Video) 是指1080p分辨率下的高清视频, 这类视频对编解码器的要求是最高的, 也是未来一段时间内的主流视频。根据NTSC制定的数字视频标准, 对于通常90分钟长的全高清视频来说, 要求的数据传输速率超过1490Mbps, 存储空间要求超过了1TB。这显然远远超过了目前网络的带宽能力。所以高清视频的压缩标准显得更为重要。而经过压缩后的视频一般大小只有几十GB (蓝光光碟容量) 。视频编码的压缩要兼顾时间、压缩率和画面质量三个主要指标, 所以不同的编解码器对视频的影响很大。
2、高清视频编码标准
当前流行的高清视频编码标准主要有ITU-T H.264[1]和MPEG-4 Part 2 (ASP) [2], 其中H.264也称为MPEG-4 Part10 (AVC) 。所以H.264和MPEG-4视频标准有一定的联系, 但却是完全不同的标准。总体而言H.264标准强调实用性、高效性和可靠性, MPEG-4视频部分则更灵活, 支持近20个档次, 每个档次都代表了一类特定的视频通信应用, 而H.264只支持3个档次的应用, 第四个档次目前还在制定中。
2.1 H.264和MPEG-4 Part2
MPEG-4 Part2是通常意义上的MPEG-4视频, 由运动图像专家组 (MPEG) 于1993开始起草, 在1999年成为标准, 标准号为ISO/IEC 14496-2[2]。H.264标准则是由国际电信联盟 (ITU-T) 的视频编码专家组 (VCEG) 发起的, H.264标准制定的后期由VCEG和MPEG联合组成的专家组共同完成, 所以在2003年被ISO/IEC (MPEG-4 Part10) 和ITU-T (H.264草案) 同时支持即ISO/IEC 14496-10[1]。
H.264和MPEG-4 Part2只是提出了视频压缩的标准, 具体由编解码器实现。Xvid[3]最初的名称为XviD, 由openDviX发展而来。Xvid作为MPEG-4视频部分, 也就是MPEG-4 Part2 (ASP) 标准的实现。x264同Xvid一样也是开源的视频编解码器。不同的是x264实现的标准是H.264/MPEG4 AVC。这两个开源编解码器Xvid和x264, 分别是当前MPEG-4 Part2 ASP和H.264标准中使用最广泛、性能最好的编解码器之一。
2.2视频图像压缩的几个重要概念
运动补偿[4]在MPEG-4视频和H.264标准中, 用来降低预测帧和当前帧之间差别的比特流。视频运动导致的图像变换一般都是以像素点为单位的移动, 但是通过像素轨迹来计算复杂度太高, 数量太大, 所以一般采用基于宏块的移动来计算运动补偿。
宏块[4, 5, 6]把每个当前帧划分成许多长方形的块, 这样可以有效的降低计算复杂度。从16×16、8×8到4×4, 越小的运动补偿分块, 得到的残差图像 (当前帧与预测帧之间相减的结果) 精度越高[4]。但是越小的块划分, 会使得搜索分快的算法复杂度上升, 传输的运动矢量数目也越多, 这些消耗的比特流可能会超过降低残差图像能量的比特流。
压缩遍数[7, 8, 6] (Pass) , 即扫描视频数据的次数, 两次以上的扫描 (n-Pass) 可以更好的利用前一次扫描的统计数据, 提高预测的精确度以及优化整体比特流。Xvid支持1-Pass压缩和2-Pass压缩, 而H.264还支持3-Pass, 通常2-Pass的效果已经达到最优。
量化器[4, 5, 7] (quantizer) , 用来降低标量或矢量的精度, 即将一定范围内的信号映射到一个较小取值范围内。标量量化器输入信号的一个样本值映射到另一个量化输出值, 而矢量量化器将输入信号的一组样本值映射成一组量化输出值。量化过程是一个有损过程, 有效的降低了原始数据的精度从而实现节省比特流的目的。
PSNR值[9], 衡量视频画面主要客观标准。 (参考本文4.3)
视频帧[4]。视频由一个帧或多个帧 (条带) 来组织连续的视频图像编码。基本的帧类型包括I帧, 也称为内部画面, 由DCT (离散余弦变换) 压缩当前帧而来。P帧, 也称为预测帧, 由相邻的前一帧 (I帧或者P帧) 和当前帧来压缩当前帧的数据, 只记录不同点。B帧, 也称为双向预测帧, 根据相邻的前后帧和当前帧的差值, 来压缩当前帧。
P帧可以去除已经编码的帧间的冗余信息。而B帧不仅考虑当前帧之前的图像, 也考虑不同帧之后的编码图像, 可以更大程度的压缩图像质量。可以通过在I帧和P帧之间加入不同数量的B帧, 提升画面质量或加快压缩速度。
3、视频编解码器MEncoder
3.1 MEncoder介绍
当前最流行的视频压缩和处理软件核心为FFmpeg[10]和MEncoder两种。两者都开源且跨平台的视频压缩处理命令行程序, 而且很多FFmpeg的开发者同时也是Mplayer的开发者, 所以两者联系紧密。FFmpeg支持从视频中截取单帧图片而MEncoder不支持, 但是在视频压缩方面, 两者的功能相差不大, 主要差别在于FFmpeg支持的视频格式没有MEncoder完整。本文的测试只涉及到视频压缩, 所以使用MEncoder作为测试工具。
3.2 MEncoder的使用
压缩单个文件:mencoder[选项]文件[文件|URL|-][-o文件|file://文件|smb://[用户名:密码@]主机/文件路径]。压缩多个文件:mencoder[选项]文件1[分选项][文件2][分选项]。Encoder基础选项[6]包括了输出文件名称 (-o) 。MEncoder压缩转换选项主要包括了输出音频 (-oac) 和视频编解码器 (-ovc) , 以及输出容器的格式 (-of) 。
3.2 与视频编码器相关的Mencoder主要选项[6]
在指定了-ovc (输出视频编码器) 选项后, 还可以指定一些与编码器相关的选项, 分别是-xvidencopots和-x264encopts。对Xvid的-xvidencopts和X264的-x264encopts都有几个重要的子选项。 (具体子选项中的PSNR和速度提升或损失[6]) 。
在分析完重要的编码相关的参数后, 可以看下一些典型的图像质量对参数的设置:
4、视频质量及其测试方法
4.1视频质量的度量
测试方法主要包括了主观测试和客观测试两种方法。客观方式对比主观方式有很大的好处在于容易用量化的方式来展示压缩的效果, 但是目前缺乏非常完善的衡量参数使得客观测试的结果和主观感觉完全相同。有时压缩的效果在客观测试中表现良好, 但是主观观测却难以接受。
4.2 主观测试
主观测试主要是通过类似图灵测试的方式, 随机给出或直接告知压缩后的视频和原始视频的播放顺序, 让受测者给定评分。但是由于压缩是有损的, 而人主观的知识和经验对判断会有较大的影响, 所以需要进行大范围、反复的测试才能得到一个比较客观的结果。这方面采用的标准[11]主要有ITU-R BT.500-9、ITU-R BT.500-11、ITU-T P.800、ITU-T P.910[12]等。莫斯科国立大学图像实验室的MSU Perceptual Video Quality tool[11], 实现了上述标准中的一些测试方法[11], 包括:DSCQS, SCACJ, MSUCQE等。
4.3 客观测试[7, 8]
客观测试是视频压缩和视频处理判断的主要方式。测试的主要指标有MSE[13]、PMSE[13]、PSNR[14]、SSIM[15]等。这四种度量都是利用压缩前后图像的损失来评价视频图像的质量。PSNR是目前衡量视频图像压缩质量的一个重要客观参考量。但是PSNR的缺陷和其他客观测试参考量一样, 都是数值上的计算比较, 而人眼的视觉会侧重画面的一部分, 而不是全部, 客观值不能反映这种重点区域的优劣。针对特定类型的视频, 像真人特写等画面较多且要求较高的, 可以结合一些图像识别上的方法, 如人脸识别等对重点区域进行评价, 但是目前还没有关于这方面的具体方法。SSIM方法虽然可以在一定程度上克服传统方法的不足, 但是计算较其他方法更为复杂。对高清影片而言, 画面的整体压缩损失不大, 影响视频压缩质量的主要是细节上表现, 所以PSNR值作为一个全局的客观标准还是可以衡量影片的整体压缩质量。
5、MEncoder压缩测试
测试视频采用长度为20m42s, 码率40Mbps, MPEG-2编码1080p的蓝光视频片段, 主要为飞行战斗画面和人物叙事画面, 可以有效检测视频编码在压缩动态和静态画面时的优劣。采用表3-1、表3-2中提及的Xvid和x264选项对视频进行压缩, 设定压缩方式为2-pass, 视频码率4000Kbps, 音频为拷贝, 容器为avi。下面是测试结果及分析:
原始视频大小为4.3GB, 压缩后的视频大小见表5-1。由于为了测试高清视频的压缩效率, 设定的码率比较高, 所以x264的fast选项压缩和Xvid的realtime选项压缩后的视频大小同其他两个选项没有太大差别。而Xvid和x264之间的差别较大, 因为x264比Xvid在运动补偿、熵编码等运算中采用的宏块更小、编码方式更复杂, 从而提高了x264的压缩率。这种高压缩率是以解码时CPU的占用率提高为代价的, 在Intel酷睿2 E4500 22GHz的机器上播放压缩后的最高画质的视频, x264占用率为39%-45%, 而Xvid为20%-28%。
视频的PSNR值是衡量视频质量的客观评价方式中最重要的一种, 本文利用pnmpsnr和Mplayer结合计算指定帧的PSNR值。图5-1给了500帧两种视频编码在不同的压缩方式下压缩后计算得到的PSNR值。可以看到对同一帧画面, Xvid和x264的处理都比较接近, 这是因为对高清视频图像而言, 视频的PSNR值损失较小, 造成视频压缩损失的主要因素除了视频编码外, 与视频画面静态或者动态有关, 较大变化的连续帧有可能在压缩中损失更多的PSNR值。从图5-2可以看到Xvid比x264的平均PSNR值要低0.6db左右, 也就是说x264压缩后的画面质量较Xvid高, 但这个幅度差别不是很大。Xvid比x264整体画质较低是由于x264在压缩时采用了精度更高的宏块大小, 虽然提高了压缩算法的复杂度, 但对压缩后的视频帧质量效果更好。不同的视频压缩方式对画面影响不大, 甚至因为高清视频对码率要求较高的情况下, Xvid的realtime反而效果比其他两种压缩方式要好一些。
图5-1不同编码压缩方式的PSNR值
6、结论
高清解码器 篇2
关键词:H.264;高清;硬件解码
中图分类号:TN919.81;TN764 文献标识码:A 文章编号:1674-7712 (2012) 12-0042-01
一、引言
数字视频通信因满足人们直观真实的交流而越来越受欢迎。2003年3月,ITU-T/ISO正式公布了H.264视频编码压缩标准,它在发布之初就因其比以往的标准更出色的性能和压缩比,在IPTV、3G移动通信等领域均有广泛应用,并成为数字视频压缩技术领域的热点话题,被人们称之为新一代的数字视频编码标准。H.264/AVC的突出特点主要包括可变块大小的运动补偿预测、多参考帧预测、整数变换、1/4 像素精度的运动补偿预测、上下文自适应的熵编码以及环内去块效应滤波。与以往的任何编码标准相比,虽然采用和以往的视频编码标准同样的混合编码框架,但改进和新增了一些新的编码技术,并使得压缩效率获得显著的提升。然而,由于这些原有技术的改进和新技术的引入,H.264尽管压缩效率大幅提升,但带来了更高的算法复杂度,使得传统的软件解码有些力不从心,且不能满足移动手持设备对于低功耗的要求,限制其商业应用。因此,对于H.264标准的硬件解码研究显着至关重要。本文将围绕H.264标准硬件解码的相关领域进行研究,重点研究H.264 baseline档次解码器中的运动矢量解码模块。
二、H.264解码器原理
H.264解码器的解码流程如图1所示,视频解码器从码流中接收被压缩的已编码比特流,解码每一个句法元素,抽取上下文描述信息,例如宏块类型、宏块ID等,经过对码流进行熵解码和重排序等到一系列的量化系数,这些系数经过反量化和反变换得到残差数据,解码器使用从码流中解码得到的头信息创建一个预测块,预测块与残差求和得到为滤波的图像数据,再通过去方块滤波等到重建图像的解码块。
三、运动矢量预测
编码宏块分割的运动矢量将会花费相当大的比特数,尤其在选用小分割尺寸的情况下每一宏块分割的运动矢量,可以从邻近块的运动矢量预测得到。由上文已计算的运动矢量形成的预测运动矢量MVp的方式,以及由当前运动矢量和预测运动矢量形成的运动矢量残差MVD,被编码和传输。形成预测运动矢量MVp的方法依赖于运动补偿分割尺寸以及周围运动矢量的可用性。
MV解码流程如图2所示:
根据H.264协议的标准,对运动矢量预测有如下规定:
当前块E的周围A、B、C、D四个宏块(或子宏块)的位置如图所示,他们的原始运动矢量为mvLXN,参考索引refIdLXN,N代替A、B、C、D。其中D块只有在C块不存在的时候用到。
在实际的操作解码中,由于树状结构运动补偿的最小单位为4×4大小的块,即一个4×4块中的像素一定具有相同的运动矢量,所以在这里暂且不论相邻块A、B、C、D的大小为多大,为了存储和计算过程的统一性,只需要求出包含相对位置为(xN,yN)的像素点的4×4块的位置即可。如图3所示
四、研究方案
研究方案主要是针对H.264的解码器的结构特点来设计一种高效的支持高清视频解码的运动补偿解码电路结构,并将其实现。通过对H.264标准编解码器和码流句法元素编码方式、运动矢量预测、插值算法、存储的控制管理等特点,对参考模型的算法进行优化,对电路结构进行改进。通过参考基于H.264标准的运动矢量预测电路文献,确定其硬件架构,采用Verilog HDL进行建模和仿真,并采用DC进行逻辑综合和门级仿真并优化,减小设计的面积并提高设计编码的速度,结构框图如图4所示。
本设计的结构框图如图所示,在本设计中将运动矢量预测分为输出控制,预测运算和后处理三个部分,框图中Mv_ctrl是输出控制模块,实现对运动矢量预测总体的状态控制;预测运算包括与片上的SRAM进行通信和控制的Mem_ctrl,MV数据存储和刷新的Mem_data模块以及计算MV地址的Mv_sp模块;后处理则是对预测得到的MVP进行必要的加权处理和与码流中的MVD进行相加从而最后得到最终的MV。
五、总结
H.264解码器的运动补偿部分运算量占整个解码器电路的三分之一以上,设计复杂度大约占整个解码器电路设计复杂度的40%左右,所以进行高效的VLSI电路设计非常必要。目前,对运动补偿模块的超大规模集成电路设计主要设计思路一般是三级到四级流水线结构。H.264高清产品的推出无疑又会将我国的数字视频终端技术推上一个新台阶。
参考文献
[1]毕厚杰,王建,新一代视频压缩编码标准——H.264/AVC(第二版)[M].人民邮电出版社,2009,11
高清解码器 篇3
于是,GPU被设计用于为并行计算提供支持,并分担部分视频解码的任务[3,4],利用GPU内部具有众多并行计算核心来编写GPU上运行的代码,结合NVIDIA的CUDA[5,6]平台,将高密度计算量和耗时的任务移植到GPU上。与基于平台实现GPU加速的DXVA技术相比,CUDA平台上的解码方案具有更好的解码速度、效率和跨平台性。本文将GPU加速解码的方案与H. 264 学术研究使用的JM18. 4 软件解码方案进行比较,在解码速度和帧率上表现出较高的优势。同时,为满足多路视频会议和监控设备等应用需求,提出了基于CUDA的多视频流解码方案,实验表明,该设计大幅降低了解码多路高清视频时CPU的占用率,有效提高系统多视频流并行解码能力[7]。
1 关键技术
NVIDIA公司开发的统一计算设备架构( Compute Unified Device Architecture,CUDA)[8,9]为GPU增加一个易用的编程接口。CPU负责派生出运行在GPU设备处理器上的多线程任务( CUDA称为内核函数) 。GPU设有内部调度器将这些内核程序分配到相应的GPU硬件上。NVIDIA C编译器NVCC作为CUDA架构核心用来编译分离出GPU和CPU代码,GPU代码被编译成GPU计算汇编代码PTX并经CUDA Driver支持运行在GPU。H. 264 采用多模式运动估计[10]、帧内预测、多帧预测等先进实用技术,以更低的码率和压缩画质成为行业标准。其解码框架图如图1 所示。
2 CUDA解码器设计与实现
GPU硬件加速将一部分解码任务从CPU端转移到GPU端来完成,将解码后的数据保存在显存中,在GPU内部完成解码后视频数据的后期处理工作( 颜色空间转换、缩放、与Open GL交互处理等) 。CUDA硬件解码的处理架构为: 将解码的MC ( Motion Compensation) 、IDCT、VLD( Variable-Length Decoding) 、Deblocking转移到GPU中处理。
2. 1 CUDA解码器缓冲区
解码器需要使用硬件解码单元,然后向硬件单元传送一些配置参数,CUDA中每个参数均以对应的缓冲区来传送,需要先申请缓冲区然后填充对应类型的缓冲区。解码器需要传入代表不同缓冲区的4 个参数: 图片参数缓冲区、码流缓冲区、条带控制命令缓冲区和量化矩阵缓冲区。
( 1) 图片参数缓冲区。在CUDA解码器解码当前帧时需要一个对当前帧描述的参数,对于多个编码标准可使用CUVIDPICPARMS结构体来描述。图片级别中图片的信息会不一样,所以每解码一帧图片之前,此结构体都要被传送。以下是CUVIDPICPARMS结构体的定义:
该结构体详细定义了图片层数据,例如,比特流缓存区中的字节数n Bitstream Data Len,p Bitstream Data指针指向当前帧,union部分表示的不同视频流编码标准;
( 2) 条带参数。条带控制参数用来描述当前码流,用_CUDA_Slice结构体进行描述和定义:
Data Location表示传输码流中nalu单元包含的编码数据起始字节数,Slice Data In Buffer表示总的码流传输字节数,is Bad Slice Chopping表示传输的码流是否含有起始码;
( 3) 码流和量化参数缓冲区。解码器进行反量化时的量化参数将会保存在量化矩阵缓冲区中,结构体定义为:
该数据结构体中包含两种不同类型的反量化参数矩阵,分别为4×4 和8×8 大小。同时将显存中的一块地址分配给码流缓冲区,再通过这块码流缓冲区向GPU传送解码的码流。
2. 2 CUDA解码流程
CUDA提供加速解码的接口函数API,本文基于该API实现并行化的视频解码,图2 显示了该解码器的解码流程。
步骤1 读取视频文件,使用cuvidparse Video Data( )函数解析视频帧信息;
步骤2 初始化CUDA解码器设备并设置相关参数,例如: 显卡序号、显存分配大小等;
步骤3 将步骤1 获得的视频帧信息,如: 文件头标记、文件大小( payload) 、时间戳等读入视频帧结构体。再将该结构体数据传入解码函数cuvid Decode Picture( ) ,然后执行解码任务;
步骤4 完成步骤3 后,获得原始YUV数据,因为在GPU中完成解码,这些数据仍保留在设备显存中,用于视频的播放显示,也可以拷贝到主机内存做其他操作;
步骤5 解码完成一帧数据后,进行文件结束标记检查,读取完成则销毁CUDA解码器、否则使用read_frame_data( ) 读取下一帧数据。
CUDA视频解码库使用两种不同的GPU加速引擎,即显卡硬件和视频处理器VP。本文通过使用多线程技术,不同线程分配不同的显示任务并执行,cuvid Map Video Frame线程使用映射技术,从VP解码帧得到映射后的CUDA设备指针信息; cu D3D9Resource Get Mapped Pointer线程从D3D纹理中获取设备指针信息; cuda Post Process Frame线程连续调用帧数据后处理函数,并把结果返回给映射D3D纹理; cu D3DUnmapResources线程让驱动释放指针给D3D9,表示已经完成修改,可以在D3D9 中安全使用; cuvid Unmap Video Frame线程释放VP解码帧。
2. 3 多视频流解码架构设计与实现
单视频流解码时通过充分利用CUDA平台实现的解码器完成GPU硬件加速解码,为解决多路视频解码问题,本文重新定义代表显卡设备的数据结构和代表解码器的数据结构,便于多码流的数据管理和调度。驱动程序可实现多个对象共用一个硬件设备,则在视频解码中解码器便可关联到同一个显卡设备。
2.3.1显卡和解码器数据结构定义
显卡数据结构定义:
其中,Hwnd是程序创建的一个用来显示的窗口句柄,p D3D9 和p D3DD9 分别表示显卡对象和显卡设备,p D3Dmanager代表显卡设备的管理器,主要是用来管理多个解码器共享显卡设备的,PCI_Vendor表示显卡制造厂商,Decoder Num是表示与显卡关联的解码器个数,解码器定义的数据结构如下:
p D3Dmanager是解码器关联的显卡设备,p CUDADecoder是创建的解码器,p D3D9 surface是解码后的数据存放的表面,CUVIDPICPARAMS,CUDA_Slice和CUDAQmatrix是硬件解码单元使用的数据缓冲区结构体,sps和pps是H. 264 标准中所标示的条带控制参数和图像控制参数。这里基于CUDA提供的接口函数API做了一次封装,便于应用程序调用。同时定义设备的创建和解码接口,几个主要接口函数为:
( 1 ) CUresult。 Init Device Manager ( Device Manager* p Manager) ,该函数主要功能是显卡初始化、显卡设备的创建和类型检测等;
( 2) CUresult。Create CUDADecoder( CUDADecoder* p Decoder) ,该函数依据所关联的Device Manager创建一个相应的硬件解码器对象,并将所关联的DeviceManager数据结构中的解码器计数器加1;
( 3 ) CUresult。CUDADecode Frame ( CUDADecoder* p Decoder,NALU_t * p Nalu,RECT * pRect) ,该函数作为解码器的接口,含有3 个主要参数,第一个参数代表解码器,p Nalu代表码流的一个NALU单元,pRec代表解码器解码产生的数据将会在显示窗口中呈现的显示区域;
( 4) CUresult。Destroy CUDADecoder( CUDADecoder * p Decoder) ,该函数的功能是释放解码器设备,同时将相关联的数据结构Device Manager中的解码器计数量减去1;
( 5 ) CUresult。Destroy Device Manager ( Device Manager * p Manager) ,该函数的功能是释放显卡设备,销毁创建的数据显示窗口。函数会在销毁之前检查所关联的解码器个数是否为0,若<0,就不执行任何操作并返回,以保证安全的调用。
2. 3. 2 多视频流解码调度
系统的整体执行流程如图3 所示,具体到解码一帧数据时解码器的内部执行流程如图4 所示。其中解码器内部添加阻塞锁以避免多个解码器同时竞争使用一个硬件解码单元,这样便可开启多个解码线程进行多路视频流的解码。
设计思想为: 同时输入几个视频流,这几个码流轮流解码直至全部解码完成,共用解码器的主体部分,达到资源复用的目的。其中,Eos_num代表已解码完成的视频流个数,Max Vs Num最大解码视频流个数,CurVs Num当前解码的视频流序号,Is_eos[Cur Vs Num]判断序号为Cur Vs Num的视频流是否解码完成。
多码流的解码,必须保持各码流之间的独立性,解码器主体函数中,需要做一些修改。比如码流缓冲区、存放解码图像的缓冲区、存储码流的SPS和存储码流的PPS等结构体分别为不同的码流分配不同的存放空间。解码每一帧时的帧级和宏块级变量均会被重新赋值,对各帧之间的解码没有影响,因此不用修改。多码流级别的全局变量为所有码流可见,生命周期是整个解码的过程,所以需要增加一维,深度设置为最大解码视频流的个数,每个码流占用其中一维,这样多个码流的解码操作互不干涉。
3 实验结果与性能分析
测试平台环境相关参数为: 双核Intel Core 2 Duo E8400 CPU,主频3. 00 GHz,内存4 GB,GPU为NVIDIA Ge Force GTX 280,显存容量为1 GB,流处理器( SP) 个数240 个,操作系统为Windows7,CUDA 5. 5,并在Visual Studio 2010 环境下调试编译,计时函数采用Win32 API中的Get Tick Count( ) 函数,精确到ms。
3. 1 JM18. 4 软件解码与CUDA解码对比
针对不同视频流文件进行测试,JM18. 4 软件解码器与CUDA解码器在解码时间、帧率上做对比,分别如图5 和图6 所示。
以同时解码视频流文件Sample为例,从帧率上比较,CUDA是JM18. 4 的近115 倍,解码时间上也只有后者的0. 6% ,实验结果表明,基于CUDA优化的GPU并行加速解码方案比JM18. 4 软解码具有更好的性能和效率,因此使用GPU并行化加速视频流解码具有较大的优势。
3. 2基于CUDA的多视频流解码器性能评测
通过CPU解码与基于CUDA的GPU解码器进行了多视频解码的对比测试,测试视频文件为720 p的高清视频,码率平均为14. 8 Mbit·s-1,衡量标准为每解码30 帧图像的时间。开启6 个解码线程同时解码,本文主要测试解码器的解码速度和CPU的占用率这两个标准,测试结果如图7 和表1 所示。
帧率最低为24 帧/s,画面才会保持流畅,这里编码器采用30 帧/s,同时解码6 路720 p的高清视频,平均时间0. 74 s,可计算得帧率为40. 43。所以可保证流畅的播放视频画面。
基于GPU的硬件解码方案,负担高计算量的解码任务同时,同时降低了CPU的占用率,取1 路720 p高清视频解码,对比试验如表1 所示。
由表1 实验数据可看出,基于CUDA的解码器播放高清视频时可大幅降低CPU占用率,提高多视频流的解码能力,图7 中6 路视频解码保持帧率40. 43 时,CPU占用率不到100% 。若将线程的分配和设备的初始化设计进一步优化,则可降低CPU的占有率。
4 结束语
本文研究了基于CUDA的GPU视频解码技术,实现了并行化的多视频流解码方案,实验结果证明,与软件解码方案JM18. 4 比较,GPU等硬件并行化加速处理方案对视频解码的具有更高的处理效能,降低CPU的占用率近30% ,提高了多路视频解码的能力,具有较好的研究与应用价值。使解码器同时解码更多数量和更高分辨率的高清视频流是今后需要继续研究的内容。
摘要:针对多视频流解码和显示时CPU占用率过高等问题。设计了基于统一计算设备架构(CUDA)平台上的GPU多视频流并行化处理方案,定义了表示GPU显卡设备和解码器的数据结构,通过解码函数接口的调用可适用于多种视频播放器中去。实验结果表明,所设计的解码器大幅降低了多视频解码显示中CPU的占用率,同时与JM实现的软件解码方案相比,解码单路720 p的高清视频CPU占用率同比降低约30%,所以此硬件解码方案表现出更加高效的多视频流解码处理能力。提高了系统性能和资源复用率,并能保持较低的能量消耗。
关键词:多视频流解码,CUDA,并行化,占用率,能量消耗
参考文献
[1]毕厚杰.新一代视频压缩编码标准[M].北京:人民邮电出版社,2005.
[2]李超,柴文磊,刘劲松.高清视频会议系统技术浅析[J].信息安全与技术,2010(10):50-51.
[3]侯兴松,刘大齐,盛凯,等.H.264并行编码中负载平衡方法[J].中国图象图形学报,2012,17(8):911-918.
[4]张舒,楮艳利.GPU高性能运算之CUDA[M].北京:中国水利水电出版社,2009.
[5]Shane Cook.CUDA并行程序设计:GPU编程指南[M].北京:机械工业出版社,2014.
[6]董亚清.基于GPU的线性调频信号脉冲压缩算法实现[J].电子科技,2013,26(12):12-16.
[7]Youngsub K O,Youngmin Y I,Soonhoi H A.An efficient parallel motion estimation algorithm and X264 parallelization in CUDA[C].Tampere,Finland:2011 Conference on Design and Architectures for Signal and Image Processing(DASIP),2011:4521-4536.
[8]Jae-Jin Lee,Kyungjin Byun.Multi-core architecture for video decoding[J].So C Design Conference(ISOCC),2012,3(12):4-7.
[9]Juurlink B,Alvarez-Mesa M,Chi C C,et al.Scalable parallel programming applied to H.264/AVC decoding[M].New York,USA:Springer-Verlag,2012.
一种H.264高清编码器的实现 篇4
在同样的图像质量情况下,H.264标准的编码效率比MPEG-2提高了50%,比MPEG-4 ASP提高了30%,相应地节约了至少30%~50%的网络带宽。在当今网络带宽越来越宝贵,用户对高清的需求又越来越强烈的情况下,采用H.264标准成为在有限带宽下满足用户需求的鱼和熊掌可兼得的方案[1,2]。
目前实现H.264编解码的方式有3种:一种是DSP软件编解码方案,如TI,AD的DSP芯片。由于H.264编解码非常复杂,要求很高的运算能力,这种方案实现的编码分辨力、帧率一般都不高,在实现高清时,必须采用多片DSP,或用DSP+FPGA的方式;第二种方案是采用FPGA实现,这种方案可以实现标清、甚至高清的编解码,但由于必须采用高规格的FPGA芯片,成本、功耗都比较高,技术难度也较大;第三种是ASIC方案,这种方案成本低、功耗小,编码效果好,缺点是扩展性不如前两种方案。目前能提供高清H.264编码芯片的厂商有富士通、Mobilygen、Ambarella、Qpixel等。笔者介绍一种采用富士通的MB86H52芯片实现H.264高清编码器的方法。
2 MB86H52芯片简介
MB86H52是富士通新推的H.264高清编解码、转码芯片,运行频率为27/216/324 MHz,配置两片DDR2-667/CL5 512 Mbit(×16-bit),核电压为1.2 V,功耗为1.7 W,编码分辨力高达1 920×1 080i(60/50),芯片架构如图1所示。
该芯片包含1个MPEG-2解码引擎和1个H.264的编解码引擎,其视音频接口及码流接口均为双向,可实现以下功能:
1)转码功能(TS到TS):可实现MPEG-2 HD到H.264 HD/SD的转码,以及MPEG-2 SD到H.264 SD的转码。
2)视频编码、解码:支持H.264 High Profile Level4.0规格编码、解码。
3)音频编码、解码:支持Dolby Digital(AC-3),Linear PCM,MPEG-2 AAC和MPEG-1 Audio Layer 2。
该芯片视频输入和输出支持SMPTE274M,SMPTE296M-2001和ITU-R BT.656-4标准,可接入如下格式信号:1 920×1 080i/60,1 920×1 080i/50,1 280×720p/60,1 280×720p/50,PAL,NTSC。视频输入、输出接口分别为16 bit的4∶2∶2 YCbCr数据(ITU-R BT.656-4标准时为8 bit数据);音频方面,支持3路I2S格式的PCM(16 bit)输入和3路I2S格式的PCM(16 bit)输出,另外,也支持一路SPDIF的输入和输出。
解码方面,内置了一个图像格式转换模块,用于MPEG-2到H.264转码时图像分辨力的转换,1 920×1 080i/60的MPEG-2可转码成1 920×1 080i/60,1 440×1 080i/60,960×1 080i/60,720×480i/60,704×480i/60的H.264码流。
TS输入和输出均支持串行和并行,串行时钟最高为54 MHz,并行时钟最高为27 MHz,编码码率最高为20 Mbit/s。主机控制接口(HOST)也支持串行和并行两种,串行接口采用异步RS-232协议,用SI和SO两根线就可完成控制,并行接口包含19根地址线、16根数据线及片选等读写控制信号,HOST接口也用于参数设置,也用于微码下载。
3 H.264高清编码器方案
H.264高清编码器如图2所示,主要由视频音频输入、H.264编码、主控等模块组成。视音频输入支持HD-SDI,HDMI,YPbPr,CVBS,S-video视频和1路模拟立体声输入。HD-SDI采用Gennum公司的GS1574A,GS1559芯片组实现。GS1574A为均衡芯片,可实现自动电缆均衡,兼容SMPTE 292M和SMPTE 259M标准,主要用于270 Mbit/s和1.485 Gbit/s串行数据传输,在采用Belden1694A电缆时,典型的电缆长度达:200 m(1.485 Gbit/s),350 m(270 Mbit/s)。GS1559也支持SMPTE 292M和SMPTE 259M标准,可实现SD-SDI,HD-SDI,DVB-ASI码流的时钟、数据恢复,最高数据时钟高达148.5 MHz,可支持1 080p/60高清视频。
本产品采用ANX9011芯片,该芯片和Siliconimage公司的Sil9011引脚兼容,最高时钟频率为1.65 Gbit/s。支持HDMI 1.2,HDCP 1.1和DVI 1.0。其WideEye TM架构可对信号进行均衡,支持电缆长度达20 m。内置RGB与YCbCr的色空间转换模块,音频输出包含4个I2S接口,支持8通道音频。
模拟视频输入采用ADV7401实现,该芯片为Analog Device公司多格式视频解码器,内置4个10 bit、采样频率高达140 MHz的ADC,有12个模拟输入,可同时支持RGB,YPbPr,CVBS,S-video输入。它包含两个处理器,标清处理器(SDP)可对PAL,NTSC,SECAM信号进行解码,分量处理器(CP)可处理YPbPr和RGB信号,另外,其内置的色空间转换模块可实现YPbPr与RGB的相互转换。
上述3路视频信号均以16 bit YCbCr(4∶2∶2)方式送往FPGA(EP2C20),进行视频选择。EP2C20是Altera公司Cyclone II系列FPGA,本产品选择BGA256封装芯片,IO引脚最大达152个,除完成视频、音频选择外,该芯片还完成SDI音频解嵌工作。由于视频信号时钟频率高达74.25 MHz,为了保证切换后的输出视频信号满足编码芯片时序要求,必须做好时延控制,数据信号与时钟信号在FPGA内经过切换后,从输入到输出的延时要保持一致,否则会导致视频信号误码、出现噪点等故障。为提高可靠性,本产品在外部进行时钟切换,切换后的时钟接FPGA的全局时钟,用其对各路视频数据、行场同步信号进行锁存,然后再进行视频切换,最后再用该时钟对输出视频进行锁存,这样就能保证时序要求,方法如图3所示。图中PI3B3253是一颗4入1出的切换芯片,传输延时小于0.25 ns,导通电阻为5Ω。
音频方面,模拟立体声音频由CS5361完成AD变换。CS5361是Cirrus Logic公司24 bit差分输入立体声模数变换器,采样频率达192 kHz,动态范围达114 dB,主时钟MCLK(256×10-3 ps)由PLL1705提供,本系统支持48 kHz,44.1 kHz和32 kHz这3种采用频率。SDI内嵌音频在FPGA内完成解嵌,与HDMI的音频信号一起由FPGA完成切换,以I2S格式送往MB86H52,进行音频压缩编码。
MB86H52完成一路视频和一路音频信号的编码、PSI信息插入、系统复用等功能,输出传输流TS,码流时钟由FPGA通过锁相环提供,码率为1.5~20 Mbit/s,HOST接口采用RS232异步串口方式。TS流在FPGA内进行时序处理,送往GS9092A以输出ASI信号,该芯片兼容SMPTE 259M-C加密和NRZI到NRZ编码,以及DVB-ASI同步字插入和8 bit/10 bit编码,内置FIFO和电缆驱动,可用于SDI和ASI输出接口。
主控由IBM/AMCC公司的PowerPC芯片PPC405EP完成,该芯片核电压为1.8 V,主频高达333 MHz,主要特点如下:16 Kbyte数据Cache,16 Kbyte指令Cache;虚拟内存管理单元MMU;2个10/100 Mbit/s以太网控制器;主频达133 MHz的SDRAM控制器;2个UART;外围接口总线(Local Bus),支持SRAM和Flash等外围设备;可编程中断控制器,支持7个外部和19个内部的边沿或电平触发中断:PCI V2.2接口标准模块;DMA控制模块;I2C系统总线模块;通用可编程I/O口(GPIO)。本系统SDRAM由2片HY57V281620AT组成,Flash采用S29GL064M90TFAIR40,网口PHY芯片采用RTL8201BL,操作系统为Linux(redhat 9.0)。主控主要完成如下工作:视音频接口芯片的初始化,FPGA逻辑下载、控制,MB86H52芯片的配置,与面板的交互,与网管的交互等。
面板包含LED显示屏和控制板,控制板采用8051单片机实现,通过显示屏提供菜单,根据6个按键(上、下、左、右、确认、返回)的操作,完成对编码器的配置,同时也实现告警等信息的提示。操作菜单包含配置、控制和状态等主菜单,各级菜单功能如表1所示。
4 小结
本方案可实现高清、标清信号的H.264编码,可广泛用于数字电视、IPTV、卫星节目传输等场合。由于编码芯片只能支持1路音频编码,在需要2路音频的场合,必须用DSP进行第2路音频的编码,利用FPGA进行码流复用。另外对于SDI内嵌音频的处理,也可以采用GS2974,GS2970芯片组,GS2970最高码率达3 Gbit/s,支持SMPTE 425M,424M,292M,292M-C和DVB-ASI标准,除支持1 080p/60高清信号接收外,还集成了音频解嵌模块,但成本比目前方案要高一些。
参考文献
[1]毕厚杰.新一代视频压缩编码标准——H.264/AVC[M].北京:人民邮电出版社,2005.
高清解码器 篇5
不过, 联发科技基于ARM大小核异构多任务架构开发出CorePilot技术, 动态温控和功耗管理技术可动态侦测工作负载量, 智能调节每个核心的任务分配, 使高性能的大核以及节能的小核相互协调, 必要时八核全开发挥最大性能。也就是说, MT6595是一款真八核处理器 , 不仅可以采用大小四核方式控制功耗, 也可以马力全开提升性能。
除此之外 , MT6595整合Imagination Technologies最新PowerVR Series6图形处理器 (GPU), 支持高性能图像处理以及丰富多媒体规格, 以硬件解HEVC (高分辨率编解码技术H. 265), 支持超高清 (4K2K) 视频播放和录制, 功耗更低。
以下是MT6595官方公布的部分参数
整合多模多频LTE调制解调器
其LTE modem支持LTE Release 9 Category 4版本, 可提供上、下行分别高达50Mbit/s与150Mbit/s的数据传输速率。
除了能同时支持FDD-LTE和TD- LTE, 亦支持DCDC-HSPA ?+(42Mbits/s), TD-SCDMA, EDGE和GSM / GPRS的语音及数据通讯, 其多模稳定兼容可使其终端产品在全球各地无缝隙衔接漫游、畅行无阻。
亦可搭配联发科技射频芯片, 支持超过30个频段, 符合全球电信运营商对于射频频段的要求
支持顶级多媒体规格
领先业界以硬件解HEVC (高分辨率编解码技术H.265), 支持超高清 (4K2K) 视频播放和录制, 功耗更低
支持24位192 kHz Hi-Fi品质音频编解码, 具有高性能DAC-to-HP表现和 >110dB信噪比
支持20MP像素照相 机和超高 分辨率WQXGA (2560 x1600) 显示控制器
支持联发科技ClearMotionTM智能视频倍频技术, 可将15/24/30fps自动倍频至60fps视频播放, 呈现细致
流畅和移动无重影的观看效果
支持联发科技MiraVisionTM技术, 实现数字电视级别画质
可搭配4-in-1无线连接芯片, 首款支持802.11ac的联发科技手机平台
该解决方案亦可搭配联发科技四合一无线连接解决方案, 可支持802.11ac、以及包括GPS, GLONASS, Beidou, Galileo和QZSS全球卫星导航 (GNSS ) 定位系统
高清解码器 篇6
科胜讯的CX93610拥有低成本、低能耗和高度图像压缩功能, 非常适用于要求视觉验证的无线摄像头安全解决方案, 并可大幅减少文件大小。
CX93610采用一个外接CMOS图像传感器, 可提供各种专门的JPEG编码技术以在一个内部512kB/256kB帧缓冲区高度压缩和保存图像数据。一个2:1和4:1定标器可用于图像尺寸调整, 4:2:0二次抽样转换可进一步减小图像文件大小高达99%。通过一个麦克风输入和可编程分配缓冲, 2位或4位ADPCM音频可在图像捕捉期间同时被记录, 为音频和视频数据存储提供完整的A/V解决方案和灵活的帧缓冲区。