CN102055980A - 用于视频编码器的帧内预测电路及其实现方法 - Google Patents
用于视频编码器的帧内预测电路及其实现方法 Download PDFInfo
- Publication number
- CN102055980A CN102055980A CN 201010620003 CN201010620003A CN102055980A CN 102055980 A CN102055980 A CN 102055980A CN 201010620003 CN201010620003 CN 201010620003 CN 201010620003 A CN201010620003 A CN 201010620003A CN 102055980 A CN102055980 A CN 102055980A
- Authority
- CN
- China
- Prior art keywords
- operator
- prediction
- infra
- function
- unit
- 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
本发明公开了一种用于视频编码器的帧内预测电路的实现方法,所述方法包括:将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路。应用本发明,使得系统工程师在保证不损伤数字高清视频编码的前提下,根据足以支撑描述高级语言算法的完备算子单元库,通过设计表示硬件逻辑的算子单元,能够以较快的速度设计出帧内预测电路的硬件集成电路。并且,该种帧内预测电路还可以与视频编码器内的其它专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的ASIC的设计速度。
Description
技术领域
本发明涉及数字视频处理技术,具体而言,尤其涉及一种用于视频编码器的帧内预测电路及其实现方法。
背景技术
集成电路设计方法学是用来指导集成电路设计的方法学。目前的集成电路设计,尤其是大规模集成电路设计,其常见的设计流程是:系统工程师根据功能需求提出系统功能框架,软件工程师利用计算机高级程序语言(例如:Java、C、C++、Matlab等)对系统功能框架进行描述,从而得到集成电路的高级程序语言的算法描述;而后由集成电路设计工程师利用硬件描述语言(例如:Verilog、VHDL等),将算法描述综合成网表文件,之后使用专门的硬件综合工具实现布局布线,得到集成电路版图。
在集成电路产业需求中,设计速度已成为集成电路设计方法学的重要考虑因素。当集成电路制造商或集成系统供应商将商业运作的基本问题(如产品数量、设计/测试费用、不可再用的工程开支(Non-Recurring Engineering,NRE)、用户IP的整合/复用、可靠性和可维护性、生产过程复杂性等)综合考虑在内时,加速产品推出时间、提高产品性能、降低产品制造风险便成为选择设计技术时的重要考虑因素。尤其,目前电子产品的生命周期不足一年,如何尽可能块地设计出新的电子产品则成为了制造商要解决的问题。因此,电子产品集成电路的设计速度则成为了集成电路设计中的主要考虑因素。
随着集成电路制造工艺进入45nm以下阶段,集成电路设计发展落后于集成电路工艺进步的剪刀差继续增大。数据流算法,尤其是数字媒体类的专用集成电路ASIC(Application Specific IntegratedCircuit)设计,例如,用于视频编码器的帧内预测电路的集成电路设计,面临设计周期长、灵活性差、扩展性差等问题。
帧内预测是保证数字视频高清传输的重要预测方式。在H.264视频编码标准中,帧内预测主要分为3种预测模式,即亮度16×16帧内预测模式,亮度4×4帧内预测模式,以及色度8×8帧内预测模式。其中,亮度16×16帧内预测模式和色度8×8帧内预测模式各有4种预测方法,而亮度4×4帧内预测模式则有9种预测方法。帧内预测的目的就是从各种预测模式中选择一种最好的预测方式,计算图像帧的预测值和残差,传递给DCT,量化,VLC,去方块滤波等进行下一步的编码与处理。由于帧内预测是整个编码环节的第一步,同时自身预测模式较多,设计复杂度较高,所以提高帧内预测模式的准确度,同时缩减帧内预测的时间代价,成为实现高清视频编码器的瓶颈。
现有技术中,对帧内预测的优化方式都是通过减少预测模式来对帧内预测进行优化,虽然在一定程度上减少了帧内预测的复杂度,但是同时也或多或少地牺牲了帧内预测的性能,对整个数字高清视频编码会造成不同程度的损伤。可见,从提升帧内预测电路的设计速度和保证帧内预测的性能两方面考虑,现有的IC设计方法学需要改进和提高。
发明内容
本发明要解决的技术问题是针对现有技术的不足,提供一种用于视频编码器的帧内预测电路及其实现方法,在保证不损伤数字高清视频编码的前提下,能够加快帧内预测电路的集成电路设计速度。
为解决上述技术问题,本发明采用了以下技术方案:
一种用于视频编码器的帧内预测电路的实现方法,包括:
将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路。
在本发明的一种实施例中,将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述包括如下步骤:
程序分析步骤:读取帧内预测电路的各个函数的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;
数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述帧内预测电路算法的数据控制流图中的相应节点;
算子时空图生成步骤:根据数据控制流图中的各个节点的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图;
时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
聚类压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使帧内预测电路总体算法的执行时间最接近于总时序约束;
下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
在本发明的一种实施例中,所述函数包括用于控制参考帧传输速率的码率控制函数,用于对帧内预测进行分析的初始化函数,以及用于对参考帧进行帧内预测的帧内预测函数。
在本发明的一种实施例中,所述程序分析步骤包括:
从所述帧内预测的高级程序语言算法程序中识别出被映射的执行对象和参数对象,所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种;
分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运行中涉及的参数对象并判断子函数运行中是否又调用其它子函数。
在本发明的一种实施例中,在所述数据控制流图生成步骤中,将所述运算指令映射为处理节点,将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述参数对象映射为数据流上的存储节点。
在本发明的一种实施例中,所述算子时空图生成步骤包括:
将数据控制流图根据其数据流相关性展开;
根据展开后的各节点所进行的功能处理从预先建立的算子单元库中取出对应功能的至少一个算子单元,将所述处理节点映射为运算类算子,将所述控制流映射为控制类算子和/或路径类算子,将所述存储节点映射为存储类算子。
在本发明的一种实施例中,所述时序约束步骤包括:根据数据控制流图中数据流结构对算子时空图的每个层级进行时序约束;如果所述数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元;如果所述数据控制流图中的数据流为串行数据流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径所映射的算子单元所对应的时序总和的比例来分配。
在本发明的一种实施例中,所述聚类压缩步骤包括:
聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;
压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;
算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
同时,本发明还提供了一种用于视频编码器的帧内预测电路,包括用于控制图像传输速率的码率控制模块,用于帧内预测分析的函数分析模块,以及用于对图像进行帧内预测的帧内预测模块;所述各模块由算子单元组成。
在本发明的一种实施例中,所述帧内预测模块包括亮度16X16划分下的帧内预测子模块,色度8X8划分下的帧内预测子模块以及亮度4×4划分下的帧内预测子模块。
在本发明的一种实施例中,所述亮度16X16划分下的帧内预测子模块包括用于检测预测模式是否可用的16X16模式检测单元,用于对所述参考帧进行帧内预测的16X16帧内预测单元,以及用于计算帧内预测代价的16X16代价计算单元;所述色度8X8划分下的帧内预测子模块,包括用于检测预测模式是否可用的8X8模式检测单元,用于对所述参考帧进行帧内预测的8X8帧内预测单元,以及用于计算帧内预测代价的8X8代价计算单元;对于亮度4×4划分下的帧内预测子模块,包括用于检测预测模式是否可用的4×4模式检测单元,用于对所述参考帧进行帧内预测的4×4帧内预测单元,用于计算帧内预测代价的4×4代价计算单元,以及用于量化所述参考帧的量化环路编码单元。
在本发明的一种实施例中,所述16X16帧内预测单元包括16X16DC预测模式子单元,16X16水平预测模式子单元,16X16垂直预测模式子单元,16X16平面预测垂直子单元;所述8X8帧内预测单元,包括8X8DC预测模式子单元,8X8水平预测模式子单元,8X8垂直预测模式子单元,8X8平面预测垂直子单元;所述4×4帧内预测单元包括4×4垂直预测模式子单元,4×4水平预测模式子单元,4×4DC预测模式子单元,4×4下左对角线预测模式子单元,4×4右对角线预测模式子单元,4×4右垂直预测模式子单元,4×4下水平预测模式子单元,4×4左垂直预测模式子单元以及4×4上水平预测模式子单元。
由于采用了以上技术方案,使本发明具备的有益效果在于:通过将高级程序语言算法描述的视频编码器的帧内预测电路的各个功能块映射成由算子单元构成的硬件逻辑描述;以及由算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路的设计,使得系统工程师在保证不损伤数字高清视频编码的前提下,根据足以支撑描述高级语言算法的完备算子单元库,通过设计表示硬件逻辑的算子单元,能够以较快的速度设计出帧内预测电路的硬件集成电路,推动了高清视频编码技术的发展。并且,该种帧内预测电路还可以与视频编码器内的其它专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的ASIC的设计速度。同时,该种帧内预测电路可以适用于不同的视频编码器结构,具有很好的通用性。
附图说明
图1为现有集成电路的设计流程图;
图2示出了本发明实施例提供的几类算子结构;其中,图2.1示出的是运算类算子,图2.2示出的是存储类算子,图2.3示出的是路径类算子,图2.4示出的是控制类算子;
图3为本发明一种实施例的选择最佳预测模式的函数关系调用示意图;
图4为本发明另一种实施例的16X16划分下的帧内预测函数数据控制流图;
图5为本发明一种实施例的采用水平预测方法的算子时空图;
图6为本发明一种实施例的采用垂直预测方法的算子时空图;
图7为本发明一种实施例的计算平面预测输入量的算子时空图;
图8为本发明一种实施例的采用平面预测方法的算子时空图;
图9为本发明一种实施例的采用平面预测优化方法优化前的算子时空图;
图10为本发明一种实施例的采用平面预测优化方法优化后的算子时空图;
图11为本发明一种实施例的16X16划分下的采用平面预测方法的算子单元示意图;
图12为本发明一种实施例的算子固化前的示意图;
图13为本发明一种实施例的进行算子固化后的示意图。
具体实施方式
下面通过具体实施方式结合附图对本发明作进一步详细说明。
一、视频编码器概述
视频编码技术是数字媒体存储与传输的关键技术,它广泛地应用在数字电视、视频通信、网络流媒体等领域。本发明涉及一种基于算子思想的帧内预测电路及其实现方法,适用于信号处理领域中各种图像/视频/音频DCT变换数据的帧内预测。
目前在视频编码领域,由国际电联(ITU-T)和国际标准化组织(ISO)联合组建的联合视频组(JVT)共同制定的新数字视频编码标准-H.264已得到广泛应用。H.264算法既是国际电联(ITU-T)的H.264,也是国际标准化组织(ISO)和国际电工委(IEC)的MPEG-4标准的第10部分的内容,其采用分层次的算法结构,在概念上可以分为两层,分别是视频编码层和网络提取层。视频编码层(VideoCoding Layer,简称VCL)负责高效的视频内容表示,网络提取层(Network Abstraction Layer,简称NAL)负责以网络所要求的恰当的方式对数据进行打包和传送。通过视频编码层和网络提取层这样的结构有助于信息的封装和对信息进行更好的优先级控制。
H.264编码过程的主要子算法有:帧间预测、帧内预测、变换和量化、去块效应滤波和熵编码。下面对各子算法做一简述。
1、帧间预测
帧间预测是利用视频图像帧间的相关性,即时间相关性,来达到图像压缩的目的。在图像传输技术中,活动图像是关注的重点。活动图像是由时间上以帧周期为间隔的连续图像帧组成的时间图像序列,它在时间上比在空间上具有更大的相关性。大多数图像相邻帧间细节变化很小,即图像帧间具有很强的相关性,利用帧所具有的这种相关性特点进行帧间编码,可获得比帧内编码高得多的压缩比。H.264帧间预测是利用已编码视频帧/场和基于块的运动补偿的预测模式。
2、帧内预测
帧内预测是H.264采用的一种新技术,指利用当前块的上方和左方的相邻像素作为参考像素,对当前块的像素进行预测。帧内预测编码可以缩减图像的空间冗余,减小码率。
3、变换和量化
在图像编码中,变换编码和量化从原理上讲是两个独立的过程。但在H.264中,将两个过程的乘法合二为一,并进一步采用整数运算,减少编解码的运算量。量化过程是在不降低视频效果的前提下减小图像编码长度,减少视频恢复中不必要的信息。其目的是去除变换后对图像的视觉质量不重要的数据分量且保持视觉上重要的数据分量。其性质是被去除后的分量不能恢复,是有损过程。
4、去块滤波
基于块的视频编码系统在重建图像时不可避免地在某些块边界处会出现一些较为明显的块效应,特别是在低码率的情况下。出现块效应的原因在于块边界像素的运动补偿精度一般都低于块内像素,而且块变换也导致了块边界的不连续性。去块滤波的主要过程包括:确定滤波强度、判断虚假边界、滤波计算。
5、熵编码
在视频编码中,熵编码把一系列用来表示视频序列的元素符号转变为一个用来传输或是存储的压缩码流。输入的符号可能包括量化的变换系统、运动向量、标记、头以及附加信息。
本发明涉及H.264视频编码器的帧内预测电路,为此,主要对H.264的帧内预测电路进行说明。
本发明以X264为基础,即以X264代码形式的视频编码器的帧内预测电路的高级程序语言算法描述为出发点,以实现帧内预测电路的集成电路设计。
二、算子设计思想概述
回顾集成电路设计方法学的发展历程,可以看到:当集成电路制造工艺进入1um的时代,出现了以门阵列为基本单元的设计方法;当集成电路制造工艺进入0.5um的时代,出现了以标准单元为基本单元的设计方法;当集成电路制造工艺进入0.18um的时代,出现了以IP核为基本单元的设计方法。由此可以看出:一方面集成电路的设计方法学随着集成电路制造工艺的发展而发展,另一方面集成电路设计方法学中使用的基本单元(门、标准单元、IP核)的单元粒度不断增大。每次新的基本单元的出现,都标志着集成电路设计方法革命性的进步。
如图1所示,现有技术中,集成电路的设计通常包括两部分:第一部分是从基于高级语言算法描述到RTL级的描述;第二部分是从RTL级描述到标准单元ASIC结构或门陈列实现(或其它S-ASIC结构)或FPGA结构的实现过程。现有技术中,已有多款比较成熟的工具支持上述第二部分的实现,实现过程基本满足高效、快捷等要求;然而上述第一部分的实现主要仍是由技术人员根据自身对高级语言的理解,人为地将其转换为RTL级的描述。目前的集成电路设计一般基于标准单元粒度,由硬件描述语言对集成电路硬件逻辑进行描述,然而硬件描述语言并不适合直接描述高级程序语言的程序逻辑和执行流程,造成在目前的集成电路设计中,由高级语言向下层硬件映射的速度所需时间较长,成为制约集成电路设计速度的瓶颈所在。随着集成电路制造工进入45nm以后,集成电路的设计速度滞后于集成电路制造工艺的发展速度。因此,对于集成电路设计领域来说,提高设计速度是当前最为迫切的问题之一。
因此,可以合理预见的是,随着近十年来集成电路制造工艺的飞速进步,尤其是集成电路制造工艺进入纳米级后,更大粒度的基本单元将出现并开启集成电路设计的新局面,以适应集成电路制造工艺的飞速发展。
鉴于此,本发明中提出了一种基于算子集成电路设计方,算子是一种粒度大于标准单元的用于集成电路组成部件的基本单元,基于算子的集成电路设计方法将加速集成电路的设计速度,以适应集成电路制造工艺的进步。算子设计方法希望从数学上能够支持算法的描述,为实现算法到算子语言、算子结构的自动化翻译提供支撑。算子的特点如下:
1.粒度更大
每个算子都具有一定功能,它是一种函数运算的符号表示。整个算子体系能够支持算法描述中的各种功能实现,设计人员可以基于算子对算法进行描述和验证;
2.支持算法的实现
种类完备但是数量有限的算子能够支持上层语言描述中对运算、存储、控制和数据路径的描述,并且可以基于算子描述进行优化和验证;
3.能够加速设计和验证
设计人员利用算子完成算法的功能描述后,对应的硬件设计也同时完成。因为所有算子均是预先全定制的且已被验证正确的单元,因此将缩短设计和验证的时间,设计人员只需要保证基于算子的描述和映射过程的正确即可,从而将大大加速设计和验证过程。
本发明提出的算子,或者说算子单元,可以表示集成电路的硬件逻辑,基于算子的不同功能,可将算子分为运算类算子、存储类算子、路径类算子、控制类算子、时钟类算子等几类,这些算子构成一套完备的算子体系,能支撑所有算法的实现。经过设计,这些基本算子在面积、功耗、性能等参数上是最优化,它们构成了算子单元库。并且算子单元还可以组成算子功能块,算子功能块间采用共享MEM链接方式进行数据通信,也可以采用寄存器传递进行控制信息传递。
下面,分别对组成算子单元库的5类基本算子的功能做详细的说明。
1、运算类算子
运算类算子(AU)是用于实现逻辑运算、算术运算或逻辑与算术混合运算的基本单元,支持算术逻辑、移位等运算功能的实现,实现这些基本运算的算子称为基本运算算子。并且,针对不同应用可以在基本运算算子的基础上进行扩展而予以支持,比如媒体处理中相减、取绝对值、求平均值、固定系数滤波运算等复杂但很常用的运算,实现这些扩展运算的运算算子称为扩展运算算子,它们由基本运算算子搭建而成。
图2.1为一种运算类算子-ADDS算子的结构示意图,它包括用于实现加减操作的ADD单元和用于实现移位操作的<</>>单元。运算类算子具有可重构性,可以为一个运算类算子配置控制位以及多种运算功能,控制位用于择一选择一种运算,也就是说,运算类算子包括算术逻辑运算单元和运算配置寄存器,运算配置寄存器用于接收和存储运算配置指令,不同的运算配置指令对应不同的算术逻辑操作,根据不同应用的需求,通过配置控制位(运算配置寄存器的运算配置指令),可以使运算算子实现不同的功能。例如上例中的ADDS算子,可以通过控制位X的参数值实现多种不同功能,可重构算子由于丰富的应用功能可以用在不同的场景中,减少了算子单元库中储存的算子数。并且可重构算子在其执行过程中还可以通过改变控制位的方式实现动态的重构。而如果算子的运算功能被优化固定,则可以将控制位固定(即固化定制)。
2、存储类算子
图2.2为存储类算子(MU)的基本结构示意图,存储类算子包括存储配置寄存器和存储单元,存储单元包括地址产生单元、数据存储器、数据产生单元和数据输出控制单元。存储配置寄存器可以通过数据输出控制单元配置存储算子(MU)的存储体(各种存储介质:寄存器、RAM等MEM)的写入和/或读出方式,还可以配置存储体对应的地址产生单元的工作方式。根据地址产生单元生成的地址直接将输入数据存储到预定位置,并将需要的数据从存放位置输出。
算法中的不同阶段对数据处理的顺序和排列是不一样的,从而使得在每个阶段中数据的存储格式和方式不同,存储算子还可以针对这类需求实现数据不同存储格式和方式的转换。存储类算子可以支持不同应用中基本且常用的存储格式和转换方式,比如串并转换、并串转换、队列结构、堆栈结构等。
3、路径类算子
图2.3为路径类算子(LU)的通用结构示意图。路径类算子包括路由配置寄存器和组成路由选择单元的交换开关和数据寄存器(REG),其中,路由配置寄存器受到控制类算子CU(见下文)的控制,在控制类算子的控制作用下控制交换开关按照期望的方式实现不同运算类算子之间的连接。数据寄存器用于暂存运算类算子和存储类算子的输入输出数据。即,路径类算子的作用是连接存储类算子与运算类算子,形成数据流结构。其实现形式主要有三种:多选器、交叉开关和总线。
4、控制类算子
图2.4为控制类算子(CU)的通用结构示意图。控制类算子主要是将配置信息传送到相应的配置寄存器,配置运算类算子、存储类算子和路径类算子实现预定的功能。即,控制类算子的作用是正常控制数据流的流动。其实现形式有三种:计数器、状态机和微指令字。控制输出内容包括:运算类算子动态重构信息、存储类算子AGU的配置信息、路径类算子的配置信息,实现对其他算子的控制。其中微指令字结构包含译码器、程序计数器、指令存储器和流水线控制模块等。控制类算子通过执行简单的配置指令向各功能单元发送配置信息。
5、时钟类算子
时钟类算子是驱动和定时部件,用于产生控制和处理算子的时钟信号,时钟信号包含控制时钟起停和控制时钟频率的信号。
以上五类算子是实现以下实施方式的基础,可以理解的是,上述对根据功能将用于集成电路设计中的算子分为五大类并非唯一的划分方式,还可以根据实际情况有针对性进行更宽范围或更细范围的划分。
集成电路(IC)的算子设计过程可以概括为将C、Matlab等高级语言的算法描述转化为算子描述并在算子结构上进行优化设计的过程。由于算子已经预先设计并验证,因此算法的算子描述可以快速或者自动完成设计验证过程。对于特定领域,比如通信或媒体,可以设计一些更好支撑算法实现的扩展算子或算子IP,从而更大程度地加速和优化设计过程。
对于本发明的基于算子单元结构的用于视频编码器的帧内预测电路的实现方法进行详细的说明。
本发明提出的用于视频编码器的帧内预测电路的实现方法,其主要包括:
将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述;并将由算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路。
由于算子单元构成的硬件逻辑描述对应于现有技术中的RTL级的描述,因此,系统工程师利用现有转化工具,就可以将由算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路。如此,创造了一种从计算机语言到集成电路下层硬件电路的映射工具,标准化地实现了集成电路从C或MATLAB等高级语言生成下层硬件的过程,实现起来方便快捷。系统工程师可以利用该种映射工具,来设计帧内预测电路,在充分考虑各种帧内预测模式以及保证不损伤高清视频编码的前提下,能够加快设计帧内预测电路的下层硬件集成电路的速度。将该种帧内预测电路应用在视频编码器内,在一定程度上推动了高清视频编码技术的发展。
在实施例中,本发明提出的用于视频编码器的帧内预测电路的实现方法,在将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述过程中,包括以下步骤:程序分析步骤、数据控制流图生成步骤,算子时空图生成步骤,时序约束步骤,聚类压缩步骤,下层硬件映射步骤,下面分别对每一个步骤进行详细的分析说明。
1)程序分析步骤:读取帧内预测电路的各个函数的高级程序语言算法程序,根据该高级程序语言规则从高级程序语言算法程序中识别出被映射的执行对象和参数对象,具体包括:
首先从帧内预测的高级程序语言算法程序中识别出被映射的执行对象和参数对象,执行对象包括运算指令和/或控制指令,参数对象包括输入数据、输出数据和中间数据中的至少一种。然后分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运行中涉及的参数对象并判断子函数运行中是否又调用其它子函数。以此类推,直到找到底层函数运行中涉及到的参数对象、运算指令等。其中,运算指令主要用于描述程序中执行的数学运算,而控制指令则用于保证运算指令的正常运行,例如,控制指令控制着运算指令是否需要进行循环运算等。该步骤的主要作用在于函数分解,是将C、Java、Matlab等高级语言描述形式的函数划分为若干个子函数的过程。函数分解主要分析函数调用关系、函数结构体和变量、子函数的基本运算等信息,以便以上述的各类算子实现对函数的映射。
在本发明的实施例中,描述帧内预测电路的各个函数的高级程序语言程序具体为C语言程序中X264_macroblock_analyse_Iframe函数。需要说明的一点是,描述帧内预测电路的高级语言程序并不局限于X264_macroblock_analyse_Iframe函数。
图3所示的是X264_macroblock_analyse_Iframe函数算法描述中的函数调用关系。其中,X264_macroblock_analyse_Iframe用于选择最佳帧内预测模式。根据帧内预测实现算法可知,若要对当前帧进行预测,则需要获得相邻块的参考帧,再根据预测模式采用不同的预测方法对当前帧进行预测。因此,帧内预测电路包括三大函数,即用于控制图像传输速率的码率控制函数,用于对帧内预测进行分析的初始化函数,以及用于计算当前块的帧内预测值的帧内预测函数。
帧内预测函数是整个帧内预测电路的核心函数,根据参考帧在不同的预测模式下采用不同的预测方法,用于计算当前帧的帧内预测值。
在C程序语言中,一个主函数通常会调用多个函数,而函数又会调用子函数。在此,将X264_macroblock_analyse_Iframe函数定义为主函数,将该主函数直接调用的函数称为函数,将该函数调用的函数称为子函数。当然,子函数还可以调用其它的子函数。具体地,在实施例中,根据该C语言程序,识别出该主函数中需要被映射的执行对象和参数对象,包括以下步骤:对X264_macroblock_analyse_Ifram函数进行分析,查找出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数。具体到实施例中的主函数调用的函数来说,函数包括用于控制参考帧传输速率的码率控制函数,对应于图3中的X264_ratecontrol_qp,用于对帧内预测进行分析的初始化函数,对应于图3中的x264_mb_analyse_init_IFrame,以及用于对参考帧进行帧内预测的帧内预测函数,对应于图3中的x264_mb_analyse_intra;并判断函数的是否有调用子函数;在此,以16X16划分下的预测模式为例,帧内预测函数又调用了16X16划分下的帧内预测函数predict_16x16_p,16X16划分下的可用性检测函数predict_16x16_mode_available,以及代价函数pixf.satd。
如表1所示,是分析出来的predict_16x16_p函数运行中涉及到的输入输出数据;如表2所示,是在程序分析步骤中分析出来的predict_16x16_p函数运行中涉及到的中间数据和常数。
表1predict_16x16_p函数的输入、输出数据
信号名称 | 数据类型 | 方向 | 说明 |
src | uint8_t* | IN/OUT | //PIXEL_CURRENT&PIXEL_PREDICT |
i_stride | int | IN | //一行宽度 |
表2predict_16x16_p函数的中间数据和常数
信号名称 | 数据类型 | 说明 |
X | int | //循环控制变量 |
Y | int | //循环控制变量 |
I | int | //循环控制变量 |
A | int | //计算i00的中间变量 |
B | uint8_t* | //相邻预测像素的步长 |
C | int | //行间步长 |
H | int | //计算b的中间变量 |
V | int | //计算c的中间变量 |
i00 | int | //平面预测第一个点的预测值 |
需要说明的第一点是,图3中的x264_mb_analyse_intra函数,在不同的预测模式下,其调用的函数是不一样的,上述表示的是在16X16划分预测模式下的子函数调用情况。可以理解的是,在色度8X8划分预测模式下x264_mb_analyse_intra函数的调用情况与16X16划分的预测模式下相似。但是,在4X4划分预测模式下,x264_mb_analyse_intra函数则分别调用了4X4划分预测模式下的计算函数x264_mb_predict_intra4x4_mode,4X4划分下的可用性检测函数predict_4x4_mode_available,4X4划分下的帧内预测函数predict_4x4,4X4划分下的DCT量化环路编码x264_mb_encode_i4x4。
需要说明的第二点,对于亮度16×16帧内预测模式,共有四种预测方法,分别为垂直预测、水平预测、DC预测以及平面预测。因此,predict_16x16_p函数又需要分别采用这四种预测方法对当前帧进行帧内预测值的计算,通过对代价函数值的比较,以找到在16×16划分下的最好预测方法。其中,垂直预测方法对应于图3中的predict_16x16_v,水平预测对应于图3中的predict_16x16_h,平面预测对应于图3中的predict_16x16_p,而DC预测则对应于图3中的predict_16x16_dc函数,predict_16x16_dc_left函数,predict_16x16_dc_top函数以及predict_16x16_dc_128函数四种直流预测方法。色度8X8划分下的预测模式下包括与亮度16X16划分下的预测模式相似的四种预测方法。对于4X4划分下的预测模式,则包括9种预测方法。因此,在进行4X4划分下的帧内预测时,predict_4x4函数则需要分别计算9种不同预测方法下代价函数的值。通过对三种预测模式下的多种不同预测方法的代价函数的计算,找到当前帧的最好帧内预测方法,以减小在进行帧内预测时对高清视频的损伤。
由此可见,在设计帧内预测电路的硬件集成电路时,有不同的预测模式,不同的预测模式又有几种不同的预测方法。而现有技术中通过减少预测模式的帧内预测方法,虽然减少了帧内预测的复杂度,但也由于帧内预测模式计算不完全,而使得找到的预测模式可能不是代价函数值最小的一种预测模式,从而对高清视频编码带来一定的损伤。若要设计出包括所有预测模式下的所有预测方法的帧内预测电路的集成电路,则会增加帧内预测电路设计的复杂度,使得帧内预测电路的下层硬件设计的速度缓慢。
2)数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述帧内预测电路算法的数据控制流图中相应节点。因此,在此步骤中,只需按照数据控制流图的映射规则,就可以将高级语言算法映射成数据控制流图。
其中,数据控制流图的映射规则具体为:将运算指令映射为处理节点,将控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将参数对象映射为数据流上的存储节点。并且,根据帧内预测算法在C语言程序中执行的先后顺序,在数据控制流图中标识出各个节点之间的相关性以及存储节点的存储特性。在此,以predict_16x16_p函数为例进行详细讲解。
对于predict_16x16_p函数而言,运算指令映射出来的处理节点具体包括:L0处理节点,L1处理节点,L2处理节点,L 3处理节点,L4处理节点;其中,L0处理节点用于计算水平预测方法下的帧内预测值;L1处理节点用于计算垂直预测方法下的帧内预测值;L2处理节点用于进行平面预测的输入变量;L3处理节点用于计算平面预测方法下的帧内预测值,L4处理节点用于对平面预测的值进行优化。如图4所示,为本发明实施例的predict_16x16_p函数映射出来的数据控制流图;需要说明的是,L4处理节点中对像素值进行修正的时候,调用了clip_uint8函数,该函数是对像素质取饱和运算,保证像素质在0-255之间取值。实际上,在帧内预测电路中,clip_uint8函数是一个内联函数,因此,可以在一定程度上提高帧内预测的速度。
3)算子时空图生成步骤:根据数据控制流图中的各个节点的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图;
在将数据控制流图转换成由算子单元组成的算子时空图的时候,先根据其数据流相关性将数据控制流图尽可能地展开,用一个或多个算子单元的组合取代数据控制流图中的各个节点所要进行的功能处理。将数据控制流图映射成算子时空图时,其映射规则为:将数据控制流图中的处理节点映射为运算类算子和路径类算子,将控制流映射为控制类算子和/或路径类算子,将存储节点映射为存储类算子。并且在映射成算子时空图时,要尽可能地采用并行方式展开。虽然采用并行的方式展开,扩大了集成电路的设计面积,但这种情况下时序最快。
将数据控制流图展开的方式包括但不限于以下几种方式:
如果数据控制流图中的数据流为顺序相关数据流结构,则将所述顺序相关数据流采用流水线的方式展开。
如果数据控制流图中的数据流中存在反馈时,当数据流是一个循环时,对于有数据相关性的数据流不能转化为流水结构,如果数据流的数据之间存在数据相关性,并且存在数据相关性的各数据流内部不存在数据相关性时,则将所述内部数据不存在数据相关性的各数据流采用局部流水线的方式展开。
如果数据控制流图中的数据流之间不存在数据相关性,则将所述并行数据流采用并行方式展开,并转换成由算子单元组成的算子时空图。
优选的是采用并行方式展开。具体地,对于同一个处理节点来说,只要处理节点中的算子单元之间没有相关性,则采用并行的方式展开。对于不同的处理节点来说,只要各个处理节点之间没有相关性,则也采用并行的方式展开。这样做虽然增大了ASIC的面积。但是,却最大程度地缩短了ASIC的设计时间。
如图5-10所示,表示的是将图4所示的数据控制流图中的各个节点尽可能地采用并行方式展开的由算子单元组成的算子时空图。其中,图5所示的是L0处理节点展开成的算子时空图;图6所示的是L1处理节点展开成的算子时空图;图7所示的是L2处理节点展开成的算子时空图;图8所示的是L3处理节点展开成的算子时空图;图9所示的是L4处理节点优化前的算子时空图;图10所示的是L4处理节点优化后的算子时空图;在图5-图10中,i为控制算子产生的配置信号,AGU表示的是地址访问型的存储类算子,COUNTER表示的是计数器型的控制类算子。MUL表示的是乘法类的运算类算子,ADD表示的是加法类的运算类算子。
在算子时空图的生成过程中,采用路径类算子来标识数据控制流图中的数据的相关性。实际上,路径算子的主要作用是用于链接存储算子与运算算子,形成算子时空图。其实现形式有三种:多选器、交叉开关和总线。
4)时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束。
时序约束步骤中,以函数为单位,对每个函数的算子时空图中的各算子单元标注时间,根据数据控制流图中数据流结构对算子时空图的每个层级进行时序约束。如果数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元;如果数据控制流图中的数据流为串行数据流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径所映射的算子单元所对应的时序总和的比例来分配。通过时序标注,为聚类压缩做准备。
5)聚类压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使帧内预测电路总体算法的执行时间最接近于总时序约束;其中,聚类压缩步骤包括:
聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;
压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;
算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
聚类压缩的前提条件是:聚类压缩前后,算子时空图实现的功能不会改变。具体地,该步骤是根据各个算子单元的时间标注,在算子时空图中进行聚类压缩,通过增加控制类算子和路径类算子来提高存储类算子和运算类算子的复用,即尽量减少运算和存储类算子的数量。
实际上,将一个算法描述用算子完全平铺开,没有任何复用,算法的完成速度将最快,但这带来的代价将是很高的面积成本和功耗,这并非设计所希望的。设计的目标期望满足:在满足用户时序要求的前提下,最大地减小面积和功耗需求,所以需要复用一些算子。这样就需要在每个算子执行相应的功能上加上其执行时间的标注,从而能够根据执行时间复用算子,使总体算法执行时间最接近于实际要求时间,这就是算子的时间图。空间图是对算子面积的定义,即在算子聚类映射时,根据算子的面积进行聚类,选择复用面积较小的算子。在算子聚类过程中,这两种因素都需要考虑到。
在进行算子时空图聚类压缩时,主要遵循以下原则:
1、对算子时空图中运算属性相同的运算类算子进行聚类压缩。例如,可以将算子时空图中多个并行的加法算子压缩成一个加法算子。当然,在压缩的过程中,需要通过引入控制类算子的方式实现加法算子的复用,以减少算子时空图中加法算子的个数,同时又要保证压缩后与压缩前算子时空图能够实现相同的功能。
另一例子,对于在前后不同时钟周期中实现不同功能的不同的运算类算子,也可以进行聚类压缩;例如,在第一个周期需要一个实现加法功能的运算算子,在第二个周期需要实现一个减法功能的运算算子,在进行聚类压缩的过程中,则可以通过引入时钟类算子和控制类算子,将两个运算算子压缩成一个运算算子。在时钟算子的控制作用下,通过控制算子改变运算算子的控制为,使该运算算子在第一个时钟周期中实现加法功能,在第二个时钟周期中实现减法功能。由此可见,对算子时空图进行聚类压缩后,算子的数目可以大幅度的减少,从而节约了集成电路的面积。可以理解的是,对运算类算子的聚类压缩必然引起存储累算子、控制类算子、路径类算子以及时钟类算子也会相应地发生变化,所以可以根据实际情况对上述各类算子也作相应的聚类压缩以进一步节约集成电路面积。
2、聚类压缩过程中,在引入控制算子的同时,在不同的时钟周期会生成相应的配置指令。配置指令用于控制压缩后的算子按照预定的方式工作,从而实现与压缩前算子时空图的相同功能。
3、对于同一个算子时空图可能的聚类压缩结果有多种。因此,在压缩过程中,选择压缩后帧内预测算法的总体执行时间最接近总时序约束的算子时空图作为最终的压缩结果。如此选择,则可以在保证满足时序约束条件的情况下,最大地节约集成电路的面积。总时序约束时间是根据用户提出的性能指标而计算出的帧内预测算法的最大执行时间。通过上述对算子时空图的聚类压缩,可以减小帧内预测电路的集成电路的面积和功耗。并且,聚类压缩后生成的算子具有一定的规整性。
6)下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
在基于快速设计的算子方法学中,从高级程序语言算法描述开始,通过映射得到可配置算子的时空图,从时空图经过聚类将算子进行空间压缩,使得在满足时序条件的情况下,基于功能相近与控制一致的原则,将算子聚类形成初步算子实现的ASIC架构。根据目标算法的实现去除算子不必要的可重构部件,使得面积、功耗、性能等参数得到进一步优化,最后为定制完成的ASIC生成配置指令。这一过程可省去对高级程序语言算法,例如C程序算法的研读,而可直接根据C算法的属性进行算子的映射,进而大大地缩短了设计时间。
如图11所示的是利用本发明,将帧内预测电路中的亮度16x16划分的预测模式下采用平面预测方法进行帧内预测的高级语言算法映射成成的算子单元示意图。同样地,利用本发明,系统工程师也可以将色度8x8划分的预测模式下描述不同预测方法的高级语言算法映射成下层硬件电路,以及将亮度4x4划分的预测模式下各种不同预测方法的高级语言算法映射成下层硬件电路。同时,本发明还同样地适用于其它媒体类算法,例如MPEG-4,AVS等。
实际上,在聚类压缩步骤以后,还可以对算子时空图中的某些算子进行优化;一种优化的方式是对某些算子实行固化定制。如果在聚类压缩后运算类算子功能唯一,则可以通过固定运算类算子的控制位。例如,图12为一种聚类压缩后的运算类算子,由于其中的logic单元并没有使用,所以可以将该算子的logic单元去除后得到图13中所示的算子结构,进一步地缩小了算子的面积。这样,既可以保证算法的正确执行,又可以优化集成电路的面积和功耗。
需要说明的一点是,本发明以描述H.264标准的C程序语言为例进行说明的,但其方法不局限于H.264标准和C程序语言。例如,高级语言还可以选择Java语言、MATLAB M语言等,对于不同的语言,其描述帧内预测集成电路的算法也是不一样的。
同时,本发明还提供了一种用于视频编码器的帧内预测电路,包括用于控制图像帧的传输速率的码率控制模块,用于分析帧内预测初始化函数的函数分析模块,以及用于对图像进行帧内预测的帧内预测模块;所述各模块由算子单元组成。
由于进行帧内预测时,有三种预测模式,因此,帧内预测模块实际上也就对应地包括三个子模块,分别为亮度16X16划分下的帧内预测子模块,色度8X8划分下的帧内预测子模块以及亮度4×4划分下的帧内预测子模块。
所述亮度16X16划分下的帧内预测子模块包括用于检测预测模式是否可用的16X16模式检测单元,用于对所述参考帧进行帧内预测的16X16帧内预测单元,以及用于计算帧内预测代价的16X16代价计算单元;所述色度8X8划分下的帧内预测子模块,包括用于检测预测模式是否可用的8X8模式检测单元,用于对所述参考帧进行帧内预测的8X8帧内预测单元,以及用于计算帧内预测代价的8X8代价计算单元;对于亮度4×4划分下的帧内预测子模块,包括用于检测预测模式是否可用的4×4模式检测单元,用于对所述参考帧进行帧内预测的4×4帧内预测单元,用于计算帧内预测代价的4×4代价计算单元,以及用于量化所述参考帧的量化环路编码单元。
所述16X16帧内预测单元包括16X16DC预测模式子单元,16X16水平预测模式子单元,16X16垂直预测模式子单元,16X16平面预测垂直子单元;所述8X8帧内预测单元,包括8X8DC预测模式子单元,8X8水平预测模式子单元,8X8垂直预测模式子单元,8X8平面预测垂直子单元;所述4X4帧内预测单元包括4X4垂直预测模式子单元,4X4水平预测模式子单元,4X4DC预测模式子单元,4X4下左对角线预测模式子单元,4X4右对角线预测模式子单元,4X4右垂直预测模式子单元,4X4下水平预测模式子单元,4X4左垂直预测模式子单元以及4X4上水平预测模式子单元。每个子单元相应地对应于一种模式下的一种帧内预测方法。
应用本发明提出的基于算子的集成电路的设计方法,系统工程师可以根据足以支撑描述高级语言算法的完备算子功能库,快速地将用高级语言算法描述的帧内预测电路的各个功能块映射成由算子单元构成的硬件逻辑描述,再利用现有工具将由算子单元构成的硬件逻辑描述映射成帧内预测电路的下层硬件电路,从而完成了帧内预测电路的硬件集成电路的快速设计。如此,大大地缩减了因为人为地将高级语言算法描述的集成电路转化为RTL级描述的集成电路的时间,从而缩短了设计帧内预测电路的时间,进一步满足了客户的需求。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (12)
1.一种用于视频编码器的帧内预测电路的实现方法,其特征在于,包括:
将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成帧内预测电路的硬件集成电路。
2.如权利要求1所述的方法,其特征在于,将高级程序语言算法描述的视频编码器的帧内预测电路的各个函数映射成由算子单元构成的硬件逻辑描述包括如下步骤:
程序分析步骤:读取帧内预测电路的各个函数的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;
数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述帧内预测电路算法的数据控制流图中的相应节点;
算子时空图生成步骤:根据数据控制流图中的各个节点的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图;
时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
聚类压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使帧内预测电路总体算法的执行时间最接近于总时序约束;
下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
3.如权利要求2所述的方法,其特征在于,所述函数包括用于控制参考帧传输速率的码率控制函数,用于对帧内预测进行分析的初始化函数,以及用于对参考帧进行帧内预测的帧内预测函数。
4.如权利要求3所述的方法,其特征在于,所述程序分析步骤包括:
从所述帧内预测的高级程序语言算法程序中识别出被映射的执行对象和参数对象,所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种;
分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运行中涉及的参数对象并判断子函数运行中是否又调用其它子函数。
5.如权利要求4所述的方法,其特征在于,在所述数据控制流图生成步骤中,将所述运算指令映射为处理节点,将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述参数对象映射为数据流上的存储节点。
6.如权利要求5所述的方法,其特征在于,所述算子时空图生成步骤包括:
将数据控制流图根据其数据流相关性展开;
根据展开后的各节点所进行的功能处理从预先建立的算子单元库中取出对应功能的至少一个算子单元,将所述处理节点映射为运算类算子,将所述控制流映射为控制类算子和/或路径类算子,将所述存储节点映射为存储类算子。
7.如权利要求6所述的方法,其特征在于,所述时序约束步骤包括:根据数据控制流图中数据流结构对算子时空图的每个层级进行时序约束;如果所述数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元;如果所述数据控制流图中的数据流为串行数据流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径所映射的算子单元所对应的时序总和的比例来分配。
8.如权利要求7所述的方法,其特征在于,所述聚类压缩步骤包括:
聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;
压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;
算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
9.一种用于视频编码器的帧内预测电路,其特征在于,包括用于控制参考帧传输速率的码率控制模块,用于帧内预测分析的函数分析模块,以及用于对参考帧进行帧内预测的帧内预测模块;所述各模块由算子单元组成。
10.如权利要求7所述的方法,其特征在于,所述帧内预测模块包括亮度16X16划分下的帧内预测子模块,色度8X8划分下的帧内预测子模块以及亮度4×4划分下的帧内预测子模块。
11.如权利要求10所述的方法,其特征在于,所述亮度16X16划分下的帧内预测子模块包括用于检测预测模式是否可用的16X16模式检测单元,用于对所述参考帧进行帧内预测的16X16帧内预测单元,以及用于计算帧内预测代价的16X16代价计算单元;所述色度8X8划分下的帧内预测子模块,包括用于检测预测模式是否可用的8X8模式检测单元,用于对所述参考帧进行帧内预测的8X8帧内预测单元,以及用于计算帧内预测代价的8X8代价计算单元;对于亮度4×4划分下的帧内预测子模块,包括用于检测预测模式是否可用的4×4模式检测单元,用于对所述参考帧进行帧内预测的4×4帧内预测单元,用于计算帧内预测代价的4×4代价计算单元,以及用于量化所述参考帧的量化环路编码单元。
12.如权利要求11所述的方法,其特征在于,所述16X16帧内预测单元包括16X16DC预测模式子单元,16X16水平预测模式子单元,16X16垂直预测模式子单元,16X16平面预测垂直子单元;所述8X8帧内预测单元,包括8X8DC预测模式子单元,8X8水平预测模式子单元,8X8垂直预测模式子单元,8X8平面预测垂直子单元;所述4×4帧内预测单元包括4×4垂直预测模式子单元,4X4水平预测模式子单元,4×4DC预测模式子单元,4×4下左对角线预测模式子单元,4×4右对角线预测模式子单元,4×4右垂直预测模式子单元,4×4下水平预测模式子单元,4×4左垂直预测模式子单元以及4×4上水平预测模式子单元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010620003 CN102055980B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编码器的帧内预测电路及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010620003 CN102055980B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编码器的帧内预测电路及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102055980A true CN102055980A (zh) | 2011-05-11 |
CN102055980B CN102055980B (zh) | 2013-03-20 |
Family
ID=43959844
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010620003 Active CN102055980B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编码器的帧内预测电路及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102055980B (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108363757A (zh) * | 2018-02-01 | 2018-08-03 | 广东梦森信息科技有限公司 | 基于OpenCyc的自然语言识别算法与系统 |
CN108429911A (zh) * | 2017-02-15 | 2018-08-21 | 上海富瀚微电子股份有限公司 | 一种高效视频编码率失真优化量化方法 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585495A (zh) * | 2004-06-11 | 2005-02-23 | 上海大学 | H.264/avc帧内预测模式的快速选择方法 |
-
2010
- 2010-12-31 CN CN 201010620003 patent/CN102055980B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1585495A (zh) * | 2004-06-11 | 2005-02-23 | 上海大学 | H.264/avc帧内预测模式的快速选择方法 |
Non-Patent Citations (4)
Title |
---|
《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》 20030731 Thomas Wiegand等 Overview of the H.264/AVC Video Coding Standard 第13卷, 第7期 * |
《information Engineering and Comuter Science(ICIECS),2010 2nd International Conference》 20101226 Ziyi Hu等 Operator Design Methodology and Implementation for H.264 Entropy Encoder , * |
《TENCON 2009-2009 IEEE Region 10 Conference》 20090126 Dai Peng等 A novel reconfiguable operator based IC design methodology for multimedia processing , * |
《集成电路应用》 20100710 王新安 算子设计方法缩小IC设计与制造间的"剪刀差" , 第7期 * |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108429911A (zh) * | 2017-02-15 | 2018-08-21 | 上海富瀚微电子股份有限公司 | 一种高效视频编码率失真优化量化方法 |
CN108429911B (zh) * | 2017-02-15 | 2020-10-27 | 上海富瀚微电子股份有限公司 | 一种高效视频编码率失真优化量化方法 |
CN108363757A (zh) * | 2018-02-01 | 2018-08-03 | 广东梦森信息科技有限公司 | 基于OpenCyc的自然语言识别算法与系统 |
Also Published As
Publication number | Publication date |
---|---|
CN102055980B (zh) | 2013-03-20 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102055981B (zh) | 用于视频编码器的去块滤波器及其实现方法 | |
CN104854866B (zh) | 下一代视频的内容自适应、特性补偿预测 | |
CN102088603B (zh) | 用于视频编码器的熵编码器及其实现方法 | |
CN102054108B (zh) | 集成电路下层硬件映射方法、时空图压缩方法及装置 | |
CN105453570A (zh) | 用于下一代视频的对分区数据的内容自适应熵编码 | |
CN102043886A (zh) | 集成电路下层硬件映射方法、数据控制流时序约束方法及装置 | |
CN101115207B (zh) | 基于预测点间相关性的帧内预测实现的方法及装置 | |
CN101222646B (zh) | 一种适用于avs编码的帧内预测装置及预测方法 | |
CN106034235A (zh) | 计算编码失真度和编码模式控制的方法及其系统 | |
CN102148990B (zh) | 一种运动矢量预测装置和方法 | |
CN102572430B (zh) | 一种基于可重构技术的h.264去块滤波算法的实现方法 | |
CN101729893B (zh) | 基于软硬件协同处理的mpeg多格式兼容解码方法及其装置 | |
CN1589028B (zh) | 基于像素流水的帧内预测装置及预测方法 | |
CN102054109B (zh) | 集成电路下层硬件映射方法、数据控制流生成方法及装置 | |
CN102238383A (zh) | 用于视频编解码器的多总线体系结构 | |
Azgin et al. | A computation and energy reduction technique for HEVC intra prediction | |
CN102054107B (zh) | 集成电路下层硬件映射方法、时空图生成方法及装置 | |
CN101383971A (zh) | 一种基于图像编解码的帧内预测的处理方法 | |
CN102075762B (zh) | 用于视频编码器的帧间预测电路及其实现方法 | |
CN102055980B (zh) | 用于视频编码器的帧内预测电路及其实现方法 | |
Kalali et al. | An approximate HEVC intra angular prediction hardware | |
CN102572415B (zh) | 在可重构处理器上映射和实现的运动补偿算法的方法 | |
CN106231307B (zh) | 一种图像压缩帧内编码预测方法及其硬件实现 | |
CN102075763A (zh) | 用于视频编码器的帧内子块预测电路及其实现方法 | |
CN100469146C (zh) | 视频图像运动补偿装置 |
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 |