CN101605258A - 一种加速视频解码的方法 - Google Patents
一种加速视频解码的方法 Download PDFInfo
- Publication number
- CN101605258A CN101605258A CN 200910031328 CN200910031328A CN101605258A CN 101605258 A CN101605258 A CN 101605258A CN 200910031328 CN200910031328 CN 200910031328 CN 200910031328 A CN200910031328 A CN 200910031328A CN 101605258 A CN101605258 A CN 101605258A
- Authority
- CN
- China
- Prior art keywords
- decoding
- module
- data
- counter
- hardware
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
一种加速视频解码的方法,系采用软、硬件协同解码的方式,首先使用软件解码程序进行MPEG4解码并统计各个模块占用CPU的资源,通过对解码算法和统计结果的分析,将MPEG4解码中运算比较集中、耗费CPU资源比较多、有通用性的部分,包括反离散余弦变换(IDCT)、可变长解码(VLC)、帧间块的反扫描、反量化和运动补偿改由用硬件模块完成并与设置的控制逻辑模块、下属模块(slave)、主模块(master)以及两块存储空间,以上硬件模块共同构成硬件加速器,使用性能较低的处理器(如ARM7TDMI)+硬件加速器,可完成至少CIF(352x288)分辨率视频文件的实时解码。
Description
技术领域
本发明涉及MPEG4视频文件的实时解码,尤其是一种加速视频解码的方法,它能够在低频率低功耗的情况下至少完成MPEG4CIF(352x288)视频文件的实时解码,属于嵌入式微处理器技术领域。
背景技术
目前用于MPEG4视频解码的方案主要有:纯软件解码、纯硬件解码以及软硬协同解码方案三种。纯软件解码方案的主要优点是灵活,易于开发和调整更新,容易添加新功能,修改方便,开发周期短,风险较小;主要缺点是解码效率低,功耗大,占用大量处理器资源。纯硬件方案的优点是集成度高,工作频率低,功耗小,可靠性高,运算速度快;其缺点在于前期投入大,开发难度大,开发周期长,灵活性差。软硬协同解码需要软硬件很好的衔接才能提高视频解码器的效率,往往由于软硬件的结合模块不能快速、方便的传递数据而使得解码器的效率得不到提高,甚至比纯软件解码的效率更低。
发明内容
本发明的目的在于解决上述现有技术中存在的问题,通过仔细分析MPEG4视频解码的原理和流程,对解码过程进行合理划分,采用CPU配合硬件加速器的形式,将MPEG4解码中大部分运算比较集中、耗费CPU资源比较多、有通用性的部分用硬件加速器方式实现,其余控制复杂的部分用软件实现。可以较好的兼顾解码速度、功耗、灵活性、成本以及开发周期的要求,同时在低频率低功耗的情况下完成较大分辨率视频的实时处理。
本发明的上述目的是这样实现的:一种加速视频解码的方法,系采用软、硬件协同解码的方式,其特征在于:对MPEG4解码流程进行分析,将MPEG4解码中运算比较集中、耗费CPU资源比较多、有通用性的部分,包括反离散余弦变换(IDCT)、可变长解码(VLC)、帧间块的反扫描、反量化和运动补偿改由用硬件模块完成并与设置的控制逻辑模块、下属模块(slave)、主模块(master)以及两块存储空间,其中一块用于反离散余弦变换的X存储空间,另一块用于运动补偿的Y存储空间;以上硬件模块共同构成硬件加速器,其中,控制逻辑模块控制各个模块的运行;下属模块(slave)负责接收总线数据,配置寄存器;主模块(master)负责调配数据;硬件加速器在低频率的嵌入式处理器上至少完成352x288分辨率视频文件的实时解码。
硬件加速器中,反离散余弦变换模块(IDCT)包含2个乘法器,3个加法器和11个32位寄存器和一个控制状态机。IDCT硬件设计对chen-wang算法进行了改进,不仅考虑了乘法、加法的个数,还考虑了乘法和加法的位数,以及数据间关系,把二维的反离散余弦变换计算变成两个一维的反离散余弦变换运算,并且把IDCT计算的输入情况分成3类:只有直流系数不为零、直流系数和之后连续的3个变量都不为零,以及其余剩下的所有情况,因为实际情况下IDCT的输入数据是第一种情况和第二种情况占很大的比例,大约占70%。反离散余弦变换模块每个周期的工作由一个状态机控制,状态机根据当前所处的周期分别完成:向X存储空间发出正确的读写控制,接收X存储空间读出的数据,或向X存储空间写入反离散余弦变换的计算结果;给每个乘法器和加法器分配输入,这些输入可能是X存储空间中读出的数据,也可能是反离散余弦变换运算单元中寄存器的数据;将合适的乘法结果或加法结果放入内部寄存器中。
硬件加速器中,可变长解码模块(VLC)包括一个FIFO缓冲器、一个码流的译码器和一个记录解码数目的计数器;FIFO缓冲器实时从总线接受码流,同时向码流译码器传输需要解码的码字;码流译码器根据码表的对应关系给出RUN、LEVEL、LAST;解码数目计数器记录当前块的信息,当解完一个宏块后产生reset信号,清空FIFO缓冲器,准备接收下一个宏块的数据。可变长解码的解码以事件为单元,将要解码的是第一个事件,从开始指定的比特位开始解码,有数据写入FIFO缓冲器后,码流译码器每个周期解码一个事件,并将当前事件的比特数送入码流数据池中,当码流数据池的值大于32时,FIFO读入新的数据;解码计数器计数当前宏块中的的4个亮度块和2个色度块,计数到6时发出复位FIFO信号,并等待下一个宏块的数据。
硬件加速器中,反扫描模块包括地址产生器、Zigzag反扫描译码器;反扫描有三种形式:交替水平扫描、交替垂直扫描和Zigzag扫描,考虑到MPEG4中inter块的数目占很大的比例,由于整个硬件加速器的可变长解码模块只对帧间宏块进行加速,因此硬件加速电路只设计了帧间块的反扫描,而inter块的反扫描方式只采用Zigzag方式。帧间块的反扫描模块的输入是由可变长解码电路得到的run和last,而它输出是非零像素数据对应的X存储空间的地址;反扫描电路先对last、run和push信号寄存一拍,再输入地址产生器;地址产生器包括一个累加器,每当push信号有效时,首先检查last是否为1,如果是1,则当前块的64个数据已经完成,累加器跳至下一个64的倍数,输出地址也跳到下一个块的开始;如果是0,说明当前解出了run个0和一个非零数据,累加器增加run+1,输出地址也对应增加run+1,此时得到的地址是反扫描前的地址,这个地址需要经过Zigzag反扫描译码器获得组后输出X存储空间的地址。
硬件加速器中,反量化的算法主要是乘加运算,因此硬件电路需要一个乘法器、一个加法器,一个递减器(减一)和一些简单的判断电路。
硬件加速器中,运动补偿模块包括分配器、两个寄存器、像素选择器、地址产生器、3个加法器、移位器和计数器。运动补偿模块是先把可能需要的数据全部读入到电路中,通过运动补偿方式,当前像素位置再把有效的数据放到合适的寄存器内,完成加法和移位操作。运动补偿模块通过主模块每次获得一个数据,产生一拍的push信号,计数器根据push信号计数,然后把计数值送入分配器中,主模块将取来的32位数据送入分配器,数据分配器输出有效数据至寄存器1,寄存器1将数据送入寄存器2中,以便在第四种运动补偿模式下使用;像素选择器根据当前的模式和计数值决定将0还是将合适的像素值放入加法器,最后对结果进行调整;另一方面计数器还会将计数值送入地址产生器,产生Y存储空间的写地址和写控制信号。
硬件加速器中,控制逻辑模块通过配置寄存器来控制整个解码流程,此模块包括两个状态机,一个反离散余弦变换状态机,一个是参考帧数据读写状态机。为了解码的需要,硬件解码电路中设计了两个存储空间Xmem和Ymem,分别用于反离散余弦变换和运动补偿。其中Xmem是一个深度64位宽16比特的存储器,Ymem是一个深度为64位宽8比特的存储器。
本发明的优点及有益效果:本发明的MPEG4解码硬件加速器设计,把大部分的模块都通过硬件实现,包括可变长解码、反扫描、反量化、反离散余弦变换和运动补偿,其中部分模块考虑到面积问题,只实现出现概率较高下的模式情况,如反扫描有三种情况,而帧间块在视频文件中占了很大的比例,而且它只是使用了Zigzag扫描,因此反扫描只实现了Zigzag反扫描。可使用性能较低的处理器+硬件加速模块,完成至少352x288分辨率视频文件的实时解码。
本发明的MPEG4解码硬件加速器设计具有高效率和低功耗的特点,在对MPEG4解码的性能有很大幅度的提高。下表是在ARM720处理器100MHz的情况下软件MPEG4解码的性能统计结果。
函数 | Foreman | News | 平均 |
simple_idct_put_add | 64.82% | 64.41% | 64.62% |
btod_div_common | 12.72% | 12.78% | 11.60% |
ff_init_scantable | 4.89% | 5.82% | 5.36% |
init_vlc_rl | 3.99% | 3.51% | 3.75% |
rt_memcpy_w | 2.26% | 2.44% | 2.35% |
MPV_decode_mb | 1.06% | 1.07% | 1.07% |
mpeg4_decode_mb | 0.94% | 0.94% | 0.94% |
TOTAL | 90.96% | 89.66% | 90.12% |
other | 9.31% | 10.34% | 9.88% |
本发明的硬件加速器工作频率为100MHz,处理一个宏块平均需要1244.8个周期,每秒钟可以处理80334个宏块。考虑CIF(352x288)分辨率的视频文件,每帧396个宏块,每秒钟30帧,即需要处理器11880个宏块,显然从单独模块来说,硬件加速电路的吞吐量远大于解码的需求。本发明的MPEG4解码的硬件加速电路在smic 0.18us的工艺下,关键路径延时9.99ns,标准单元面积378793us2,memory的面积312496us2,乘法器使用了3个。
附图说明
图1为MPEG4解码硬件加速器电路的整体结构;
图2为一维IDCT硬件单元;
图3为VLC解码硬件电路结构;
图4为反扫描Zigzag硬件电路结构;
图5为运动补偿硬件电路结构。
具体实施方式
下面结合附图与实施例对本发明作进一步详细描述。
图1中,码流数据首先输入slave模块,然后进行可变长解码、反扫描、反量化,存入Xmem。反离散余弦变换模块对存入Xmem的数据进行反离散余弦变换。Master模块把需要的参考像素数据读入运动补偿模块,运动补偿结束后的数据被放到Ymem,把Xmem和Ymem的数据相加(重新构建)就得到了最终的解码数据。控制逻辑模块(控制逻辑)控制着整个解码流程。
图2中,控制状态机把Xmem的数据读入一维IDCT单元处理,并把中间变量存入Xmem,经过多次运算IDCT结束,最终数据也是存放在Xmem中。
图3中,码流数据被输入FIFO缓冲区,然后进入码流的译码器,由计数器和码流数据池控制着可变长解码的顺利进行。
图4中,它先对last、run和push信号寄存一拍,再输入地址产生器,得到反扫描前的地址,这个地址需要经过Zigzag反扫描译码器获得组后输出X存储空间的地址。
图5中,运动补偿模块是先把可能需要的数据全部读入到电路中,通过运动补偿方式,当前像素位置再把有效的数据放到合适的寄存器内,完成加法和移位操作。运动补偿模块通过主模块每次获得一个数据,产生一拍的push信号,计数器根据push信号计数,然后把计数值送入分配器中,主模块将取来的32位数据送入分配器,数据分配器输出有效数据至寄存器1,寄存器1将数据送入寄存器2中,以便在第四种运动补偿模式下使用;像素选择器根据当前的模式和计数值决定将0还是将合适的像素值放入加法器,最后对结果进行调整;另一方面计数器还会将计数值送入地址产生器,产生Y存储空间的写地址和写控制信号。
本发明的设计流程如下:
第一步,使用软件解码程序进行MPEG4解码并统计各个模块占用CPU的资源,通过对解码算法和统计结果的分析,决定进行硬件设计的模块是反离散余弦变换(IDCT)、可变长解码(VLC)、帧间块的反扫描Zigzag、反量化和运动补偿。
第二步,控制逻辑模块电路设计,为了解码的需要,硬件解码电路中设计了两个存储空间Xmem和Ymem,分别用于反离散余弦变换(IDCT)和运动补偿。其中IDCT的输入数据是16位的,需要存储6个块,每个块64个数据,因此Xmem是一个深度64位宽16比特的存储器,大小是768bytes;运动补偿的数据宽度是8位的,因此只需要Xmem的一半大小,Ymem是一个深度为64位宽8比特的存储器384bytes。控制逻辑模块电路还包含了两个状态机:反离散余弦变换状态机和数据读写状态机。。
第三步,反离散余弦变换(IDCT)电路设计,将二维的反离散余弦变换分解成两个一维的反离散余弦变换IDCT运算,使用了改进的chen-wang算法,使其更加适合硬件设计和并行计算。特别针对每个解码块中直流分量和交流分量的分布情况把反离散余弦变换设置成三种模式:只有直流分量不为零,只有直流分量和连续的3个分量不为零,以及剩下的情况。
第四步,可变长解码(VLC)硬件电路设计。VLC硬件具有一定的特殊性,考虑性能的要求,它一边从总线接受码流,一边在内部解码,这样可以减少总线上的等待时间。可变长解码硬件电路由一个FIFO缓冲器、一个解码单元和一个记录解码数目的计数器构成,如图3。FIFO缓冲器实时从总线接受码流,同时向解码单元传输需要解码的码字;解码单元根据码表的对应关系给出RUN、LEVEL、LAST;解码数目计数器记录当前块的信息,当解完一个宏块后产生reset信号,清空FIFO缓冲器,准备接收下一个宏块的码流。
第五步,反扫描Zigzag电路设计,在图4中,Zigzag反扫描使用组合逻辑实现了一个查找表,它根据输入地址的低6位查找到对应的Xmem低6位地址,并保持高位地址不变,从而在一个块的地址范围内完成反扫描操作。与此同时地址产生器也根据Push产生Xmem的控制信号、Xmem的地址和控制信号在输出前会再锁存一级,以便和反量化的流水线同步。
第六步,反量化硬件电路由一个乘法器、一个加法器、一个递减器(减一)和一些简单的判断电路组成。
第七步,运动补偿模块主要实现像素插值运算,运动补偿有两种情况,全像素预测和半像素预测。数据读写状态先把所有可能需要使用的像素值读到运动补偿模块中,再根据运动补偿方式和当前像素位置把有效数据放入合适的寄存器中,完成加法和右移操作,如图5。
作为本发明的一个实施例,CIF分辨率的文件要达到秒钟30帧的要求,需要每秒钟处理11880个宏块。而本发明最终的硬件电路在100MHz的情况下,每秒钟可以完成80334个宏块,因此吞吐量远大于解码要求。
作为本发明的另一个实施例,本发明最终硬件需要3个乘法器,在smic 0.18us工艺下,标准单元面积378793us2,Memory面积312496us2。
Claims (7)
1、一种加速视频解码的方法,系采用软、硬件协同解码的方式,其特征在于:对MPEG4解码流程进行分析,将MPEG4解码中运算比较集中、耗费CPU资源比较多、有通用性的部分,包括反离散余弦变换、可变长解码、帧间块的反扫描、反量化和运动补偿改由用硬件模块完成并与设置的控制逻辑模块、下属模块、主模块以及两块存储空间,其中一块用于反离散余弦变换的X存储空间,另一块用于运动补偿的Y存储空间;以上硬件模块共同构成硬件加速器,其中,控制逻辑模块控制各个模块的运行;下属模块负责接收总线数据,配置寄存器;主模块负责调配数据;硬件加速器在低频率的嵌入式处理器上至少完成352x288分辨率视频文件的实时解码。
2、根据权利要求1所述的加速视频解码的方法,其特征在于:硬件加速器中,反离散余弦变换模块包含2个乘法器,3个加法器和11个32位寄存器和一个控制状态机,使用改进的chen-wang算法,把二维的反离散余弦变换变成两个一维的反离散余弦变换运算;反离散余弦变换模块每个周期的工作由一个状态机控制,状态机根据当前所处的周期分别完成:向X存储空间发出正确的读写控制,接收X存储空间读出的数据,或向X存储空间写入反离散余弦变换的计算结果;给每个乘法器和加法器分配输入,这些输入可能是X存储空间中读出的数据,也可能是反离散余弦变换运算单元中寄存器的数据;将合适的乘法结果或加法结果放入内部寄存器中。
3、根据权利要求1所述的加速视频解码的方法,其特征在于:硬件加速器中,可变长解码模块包括一个FIFO缓冲器、一个码流的译码器和一个记录解码数目的计数器;可变长解码的解码以事件为单元,将要解码的是第一个事件,从开始指定的比特位开始解码,有数据写入FIFO缓冲器后,解码单元每个周期解码一个事件,并将当前事件的比特数送入码流数据池中,当码流数据池的值大于32时,FIFO读入新的数据;解码计数器计数当前宏块中的的4个亮度块和2个色度块,计数到6时发出复位FIFO信号,并等待下一个宏块的数据。
4、根据权利要求1所述的加速视频解码的方法,其特征在于:硬件加速器中,反扫描模块包括地址产生器、Zigzag反扫描译码器;帧间块的反扫描模块的输入是由可变长解码电路得到的run和last,而它输出是非零像素数据对应的X存储空间的地址;反扫描电路先对last、run和push信号寄存一拍,再输入地址产生器;地址产生器包括一个累加器,每当push信号有效时,首先检查last是否为1,如果是1,则当前块的64个数据已经完成,累加器跳至下一个64的倍数,输出地址也跳到下一个块的开始;如果是0,说明当前解出了run个0和一个非零数据,累加器增加run+1,输出地址也对应增加run+1,此时得到的地址是反扫描前的地址,这个地址需要经过Zigzag反扫描译码器获得组后输出X存储空间的地址。
5、根据权利要求1所述的加速视频解码的方法,其特征在于:硬件加速器中,反量化模块算法是乘加操作,硬件设有乘法器、加法器、递减器和判断电路。
6、根据权利要求1所述的加速视频解码的方法,其特征在于:硬件加速器中,运动补偿模块包括分配器、两个寄存器、像素选择器、地址产生器、3个加法器、移位器和计数器;运动补偿模块通过主模块(master)每次获得一个数据,产生一拍的push信号,计数器根据push信号计数,然后把计数值送入分配器中,主模块将取来的32位数据送入分配器,数据分配器输出有效数据至第一寄存器,该寄存器将数据送入第二寄存器中,以便在第四种运动补偿模式下使用;像素选择器根据当前的模式和计数值决定将0还是将合适的像素值放入加法器,最后对结果进行调整;另一方面计数器还会将计数值送入地址产生器,产生Y存储空间的写地址和写控制信号。
7、根据权利要求1所述的加速视频解码的方法,其特征在于:硬件加速器中,控制逻辑模块通过配置寄存器来控制整个解码流程,此模块包括两个状态机,一个反离散余弦变换状态机,一个是参考帧数据读写状态机。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910031328 CN101605258B (zh) | 2009-05-08 | 2009-05-08 | 一种加速视频解码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200910031328 CN101605258B (zh) | 2009-05-08 | 2009-05-08 | 一种加速视频解码的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN101605258A true CN101605258A (zh) | 2009-12-16 |
CN101605258B CN101605258B (zh) | 2011-06-29 |
Family
ID=41470776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200910031328 Active CN101605258B (zh) | 2009-05-08 | 2009-05-08 | 一种加速视频解码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101605258B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101790093A (zh) * | 2010-03-16 | 2010-07-28 | 山东大学 | 一种利用sopc实现avs视频解码的装置及方法 |
CN102065288A (zh) * | 2010-06-30 | 2011-05-18 | 美商威睿电通公司 | 结合软硬件实现的视频处理系统、方法及其装置 |
CN104699517A (zh) * | 2014-12-26 | 2015-06-10 | 深圳市微纳集成电路与系统应用研究院 | 一种处理器、处理器控制模块及其控制方法 |
-
2009
- 2009-05-08 CN CN 200910031328 patent/CN101605258B/zh active Active
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101790093A (zh) * | 2010-03-16 | 2010-07-28 | 山东大学 | 一种利用sopc实现avs视频解码的装置及方法 |
CN101790093B (zh) * | 2010-03-16 | 2012-10-31 | 山东大学 | 一种利用sopc实现avs视频解码的装置及方法 |
CN102065288A (zh) * | 2010-06-30 | 2011-05-18 | 美商威睿电通公司 | 结合软硬件实现的视频处理系统、方法及其装置 |
CN102065288B (zh) * | 2010-06-30 | 2013-07-24 | 美商威睿电通公司 | 结合软硬件实现的视频处理系统、方法及其装置 |
CN104699517A (zh) * | 2014-12-26 | 2015-06-10 | 深圳市微纳集成电路与系统应用研究院 | 一种处理器、处理器控制模块及其控制方法 |
Also Published As
Publication number | Publication date |
---|---|
CN101605258B (zh) | 2011-06-29 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101330617B (zh) | 基于模式映射的多标准帧内预测器的硬件实现方法及装置 | |
CN101729893B (zh) | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 | |
CN102572430B (zh) | 一种基于可重构技术的h.264去块滤波算法的实现方法 | |
CN104112053A (zh) | 一种面向图像处理的可重构架构平台设计方法 | |
Hameed et al. | Understanding sources of ineffciency in general-purpose chips | |
CN101605258B (zh) | 一种加速视频解码的方法 | |
CN103369326A (zh) | 适于高性能视频编码标准hevc的变换编码器 | |
Porto et al. | Energy-efficient motion estimation with approximate arithmetic | |
CN102932643B (zh) | 一种适用于hevc标准的扩展可变块运动估计电路 | |
CN1703094B (zh) | 1/4像素插值应用于1/2像素插值结果的图象插值装置和方法 | |
CN101697486A (zh) | 一种二维小波变换集成电路结构 | |
Kim et al. | An area efficient DCT architecture for MPEG-2 video encoder | |
CN201111042Y (zh) | 一种二维小波变换集成电路结构 | |
CN1187698C (zh) | 内在并行的二维离散小波变换的vlsi结构设计方法 | |
Poplavko et al. | Execution-time prediction for dynamic streaming applications with task-level parallelism | |
CN100469146C (zh) | 视频图像运动补偿装置 | |
CN100586188C (zh) | 一种基于avs的帧内预测计算的硬件实现方法 | |
CN102932645B (zh) | 一种图形处理器与视频编解码器融合的电路结构 | |
Penny et al. | Power-efficient and memory-aware approximate hardware design for HEVC fme interpolator | |
CN101022546A (zh) | 插值运算装置及方法 | |
Wahid et al. | Resource shared architecture of multiple transforms for multiple video codecs | |
Vu et al. | An efficient dynamic multiple-candidate motion vector approach for GPU-based hierarchical motion estimation | |
CN105898334B (zh) | 一种应用于视频编解码的dc预测电路及其方法 | |
Braly et al. | A configurable H. 265-compatible motion estimation accelerator architecture for realtime 4K video encoding in 65 nm CMOS | |
Fernández et al. | A high-performance architecture with a macroblock-level-pipeline for MPEG-2 coding |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |