纸袋厂家
免费服务热线

Free service

hotline

010-00000000
纸袋厂家
热门搜索:
成功案例
当前位置:首页 > 成功案例

看一看:基于SOPC的MPEG-4视频播放器

发布时间:2021-11-17 18:00:47 阅读: 来源:纸袋厂家

摘要:介绍Altera SOPC平台上MPEG⑷视频播放器的实现农村违建厂房怎么避免拆除。以NiosII用户自定义指令方式实现IQ、IDCT、MC等计算密集型功能模块,从而在XviD Codec基础上实现Simple Profile视觉框架下,L1级、QCIF、25 fps的MPEG⑷视频实时解码。关键词:MPEG⑷;视频播放器;SOPC;NiosII引言多媒体技术实用化的关键技术之1,就是解决视频、音频数字化以后数据量大,与数字存储媒体、通讯网容量小的矛盾,其解决途径就是紧缩。为了支持低比特率视频传输业务,MPEG(Moving Picture Experts Group)推出了MPEG⑷标准。于1999年正式成为国际标准的MPEG4是1个适合于低传输率的视频、音频解决方案,更重视于多媒体系统的交互性和灵活性。MPEG⑷视频紧缩标准提供了1种高度灵活、基于“内容”的编码方法,解码端可以“按需解码”,还可以添加对象和信息。这类灵活性使得MPEG⑷具有高效的编码效率、基于内容的可扩大性和在易受干扰环境下的鲁棒性。MPEG⑷的这些特性使得它10分适合于存储容量有限的手持终端设备。但是MPEG⑷视频解码中触及的反量化(Inverse Quantization, IQ)、反离散余弦变换(Inverse Discrete Cosine Transform,IDCT),运动补偿(Motion Composition, MC)等技术均是典型的计算密集型变换,对本身处理能力有限,功耗受限的手持终端设备而言,视频解码的实时性是1个很大的挑战。本系统在Nios II和FPGA构成的SOPC平台上,使用NiosII的用户自定义指令以硬件逻辑方式实现MPEG4解码中的IQ、IDCT、 MC等计算复杂、高度耗时的功能模块,极大地提高解码速度。从而在以GPL协议发布的XviD Codec基础上,实现Simple Profile视觉框架下,L1级、QCIF(177×144分辨率)、25 fps的MPEG⑷实时解码,并通过DMA方式在LCD上加以显示。1系统功能描述本系统从功能上可以分为视频文件存取、视频解码器、YUV-RGB变换器和LCD控制模块4个部分。1.1视频文件存取要进行视频文件的播放,首先需要对视频文件进行方便地存储和读取。系统播放的MP4文件由XviD Codec在PC上对4∶2∶0的YUV文件紧缩得到。该MP4文件采取177×144分辨率的QCIF格式,25帧/s。在下载模式,可以通过 JTAG接口将MP4文件写入Flash存储器中。在播放模式下,Nios II处理器将MP4文件从Flash存储器中读出,送入文件缓冲池中等待解码器对其进行读取并解码。1.2视频解码器视频解码器是系统的核心。如图1所示,视频解码器由熵解码器、反量化、反离散余弦变换、运动补偿模块和视频帧缓存5个模块组成。图1视频解码器结构框图

解码时,首先对输入码流进行熵解码,然后根据帧的头信息判断帧的类型。对每个宏块,熵解码后首先经过IQ,再经过IDCT变换得到空间域的值。对参考帧(R-Frame),由于不需要进行运动补偿,变换后的结果直接输出,同时还要将它存储在视频帧缓存中,留给后面的预测帧(P-Frame)做运动补偿。对预测帧,先通过熵解码得到运动向量,根据运动向量搜索到相应的参考帧后,再将IDCT变换后的预测差值与之相加,合成最后的预测帧图像。解码后的预测帧1样是1路输出,1路寄存于视频帧缓存当中。视频解码如果采取纯软件方式实现,运算量太大,难以满足实时性要求。利用NiosII的自定义指令,将IQ、IDCT和MC这3个主要的计算密集型解码单元用硬件逻辑方式实现,以硬件逻辑的复杂性换取解码的实时性。1.3YUV-RGB变换器解码器解码得到的YUV格式图像不适合直接用于LCD显示。要在LCD上显示解码得到的图象必须将YUV格式的图像转换为RGB格式,2者的转换关系以下:R=1.164(Y⑴6)+1.569(V⑴28)G=1.164(Y⑴6)+0.813(V⑴28)+0.391(U⑴28)B=1.164(Y⑴6)+2.018(U⑴28)YUV到RGB格式的转换是1个很占用CPU资源的进程。本系统以查表的方式,采取硬件逻辑实现该转换。1.4LCD控制模块标准VGA LCD显示模块(640×480,@60 Hz)是1种逐行扫描设备。这类扫描是顺序的,下1个扫描点能够预知,从而可以将需要送出的像素信息排成1行,看作1个数据流(Streaming)。借助于NiosII的Avalon流模式外设的设计方法,可以实现1个Avalon流模式的LCD控制器。利用DMA控制器在流模式的LCD控制器和系统SDRAM之间建立1条DMA传送通道,由硬件完成像素信息的读取和送出。NiosII只需要操作SDRAM中的相应区域即可完成显示图像的更新。2系统设计结构2.1系统硬件结构系统硬件结构如图2所示。图2系统硬件结构图

为了到达25 fps的实时解码速度, IDCT、IQ、MC和YUV-GB转换这4部分计算密集型的功能单元全部以用户自定义指令的方式实现。2.1.1反量化系数的2维数组QF[v][u]被反量化,产生重构的DCT系数。该进程的实质是以量化步长为倍数的乘法运算。表1intra_dc与编码精度对应表

内部编码块DC系数的反量化进程不同于其他的AC系数。DC反量化系数由1个常数因子intra_dc与QF[0][0]相乘而得到。intra_dc与编码精度有关,表1显示的即为2者对应关系。AC系数的反量化要用到两个加权矩阵,分别用于内部子块和非内部子块。用户也能够使用自定义的量化矩阵。如果用QDCT表示输入已量化的AC系数,用DCT表示反量化后的AC系数,那么AC系数的IQ变换公式以下:

式中,quantiser_scale为0~112之间的两组数值,分别对应不同的比特流控制状态。但是在本系统采取的XviD Codec版本中,比特流控制功能并没有得到实现,所以这里quantiser_scale的取值固定。反量化得到的结果通过饱和化,使其限制在[⑵048,+2047]之间。IQ在FPGA上依照图3的框图进行硬件实现。图3反量化的硬件实现结构

2.1.2反离散余弦变换IDCT是DCT的逆进程,用于还原DCT系数矩阵。IDCT进程可由下面的公式描述:

上式可视为1个2个8元向量的点积:

将8元的输入向量[X0, X1, X2, X3, X4, X5, X6, X7]分成奇元素[X1,X3, X5,X7]和偶元素[X0,X2,X4,X6],8×8矩阵则用2个4×4矩阵来代替,奇元素和偶元素分别与这2个矩阵v和u相乘,生成2个4×4向量p和q,通过加减向量p和q,可得到输出向量x。算法可以表示成下面的公式:

基于8×8矩阵的IDCT算法,在FPGA上依照图4所示的结构加以硬件实现。图4反离散余弦变换的硬件实现结构

2.1.3运动补偿运动补偿是1种大量、单调的运算违法强拆没人管吗。为了能实现运动补偿,采取了多级、多个运算单元并行流水运算的方式,如图5所示。图5运动补偿的硬件实现结构

运动补偿模块的控制很复杂。实际设计时将它分成几个子模块:补偿控制、补偿地址产生、差分数据提供和补偿运算。这几个子模块直接采取硬件逻辑设计,运行时无需NiosII处理器干预。其中补偿控制是完玉成部运动补偿的控制,提供输入控制信号、输出控制信号、缓存控制信号、预测数据和差分数据等;补偿地址产生用于生成预测数据在帧缓存中的地址及补偿结果的写地址;差分数据负责接收IDCT的结果,通过缓存在适当时机提供补偿使用;补偿运算则完成终究预测数据的计算。2.1.4YUV-RGB转换根据YUV到RGB色彩空间的转换关系,对每个乘积项都预先做出结果,寄存在ROM当中。对每一个YUV分量的输入,由硬件逻辑产生存取地址,并进行加法运算,从而得到对应的结果。其实现结构如图6所示。图6YUV-RGB转换实现结构

2.2系统软件工作流程本系统的软件工作流程如图7所示。图7软件流程图

结语该系统采取基于Altera FPGA嵌入式软核的SOPC平台实现,具有较低的硬件本钱,IP核的大量使用,良好的系统扩大性的特点。参考文献1彭澄廉.挑战SOC-基于Nios的SOPC设计与实践.北京:清华大学出版社,20042邵丹,韩家伟.YUV-RGB之间的转换.长春大学学报,2004,14(4)3ChenC H Smith W H, S C F ralick. A Fast Computational Algorithm for the Discrete Cosine Transfrom. IEEE Trans.Circuit and System,1991,25(9):1004~10094Yil Suk Yang, et al. A Serial Input/Output Circuit with 8 bit and 16 bit Selection Modes. ETRI J, 2002, 24(16):462~4645Park S M, et al. A SingleChip Video/Audio Codec for Low Bit Rate Application. ETRI J, 2000, 22(1):20~296http://www.altera.com/(end)资讯分类行业动态帮助文档展会专题报道5金人物商家文章