CN102055981B - 用于视频编码器的去块滤波器及其实现方法 - Google Patents
用于视频编码器的去块滤波器及其实现方法 Download PDFInfo
- Publication number
- CN102055981B CN102055981B CN 201010620016 CN201010620016A CN102055981B CN 102055981 B CN102055981 B CN 102055981B CN 201010620016 CN201010620016 CN 201010620016 CN 201010620016 A CN201010620016 A CN 201010620016A CN 102055981 B CN102055981 B CN 102055981B
- Authority
- CN
- China
- Prior art keywords
- operator
- function
- deblocking filter
- filter
- data
- 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.)
- Expired - Fee Related
Links
- 238000000034 method Methods 0.000 title claims abstract description 66
- 230000006870 function Effects 0.000 claims abstract description 149
- 238000013507 mapping Methods 0.000 claims abstract description 26
- 238000012545 processing Methods 0.000 claims description 62
- 238000001914 filtration Methods 0.000 claims description 61
- 238000003860 storage Methods 0.000 claims description 49
- 238000010586 diagram Methods 0.000 claims description 45
- 238000007906 compression Methods 0.000 claims description 40
- 230000006835 compression Effects 0.000 claims description 38
- 230000008569 process Effects 0.000 claims description 27
- 230000010354 integration Effects 0.000 claims description 5
- 230000007704 transition Effects 0.000 claims description 3
- 238000013461 design Methods 0.000 abstract description 61
- 238000005516 engineering process Methods 0.000 description 14
- 238000004364 calculation method Methods 0.000 description 13
- 238000004519 manufacturing process Methods 0.000 description 12
- 238000013139 quantization Methods 0.000 description 11
- 230000009466 transformation Effects 0.000 description 9
- 238000011161 development Methods 0.000 description 6
- 238000006243 chemical reaction Methods 0.000 description 5
- 230000000694 effects Effects 0.000 description 5
- 239000013598 vector Substances 0.000 description 5
- 241000023320 Luma <angiosperm> Species 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000004891 communication Methods 0.000 description 3
- 238000012938 design process Methods 0.000 description 3
- OSWPMRLSEDHDFF-UHFFFAOYSA-N methyl salicylate Chemical compound COC(=O)C1=CC=CC=C1O OSWPMRLSEDHDFF-UHFFFAOYSA-N 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 239000000654 additive Substances 0.000 description 2
- 230000000996 additive effect Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 150000001875 compounds Chemical class 0.000 description 2
- 230000001419 dependent effect Effects 0.000 description 2
- 238000002372 labelling Methods 0.000 description 2
- 230000008520 organization Effects 0.000 description 2
- 230000002123 temporal effect Effects 0.000 description 2
- 238000012546 transfer Methods 0.000 description 2
- 230000000007 visual effect Effects 0.000 description 2
- 238000012935 Averaging Methods 0.000 description 1
- 238000009825 accumulation Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000015572 biosynthetic process Effects 0.000 description 1
- 238000000354 decomposition reaction Methods 0.000 description 1
- 230000007812 deficiency Effects 0.000 description 1
- 238000012942 design verification Methods 0.000 description 1
- 238000005538 encapsulation Methods 0.000 description 1
- 238000000605 extraction Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 238000004806 packaging method and process Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000007711 solidification Methods 0.000 description 1
- 230000008023 solidification Effects 0.000 description 1
- 238000003786 synthesis reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
- 238000013519 translation Methods 0.000 description 1
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明公开了一种用于视频编码器的去块滤波器及其实现方法,所述方法包括以下步骤:将高级程序语言算法描述的视频编码器的去块滤波器的各个滤波函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成去块滤波器的硬件集成电路。应用本本发明,使得系统工程师可以根据足以支撑描述高级语言算法的完备算子单元库,实现将用高级语言描述的去块滤波算法到下层硬件电路的快速映射,完成去块滤波器集成电路的快速设计。并且,该种去块滤波器还可以与视频编码器内的其他专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的ASIC的设计速度。该种去块滤波器可以适用于不同的视频编码器结构,具有很好的通用性。
Description
技术领域
本发明涉及数字视频处理技术,具体而言,尤其涉及用于视频编码器的去块滤波器及其实现方法。
背景技术
集成电路设计方法学是用来指导集成电路设计的方法学。目前的集成电路设计,尤其是大规模集成电路设计,其常见的设计流程是:系统工程师根据功能需求提出系统功能框架,软件工程师利用计算机高级程序语言(例如:Java、C、C++、Matlab等)对系统功能框架进行描述,从而得到集成电路的高级程序语言的算法描述;而后由集成电路设计工程师利用硬件描述语言(例如:Verilog、VHDL等),将算法描述综合成网表文件,之后使用专门的硬件综合工具实现布局布线,得到集成电路版图。
当集成电路制造商或集成系统供应商将商业运作的基本问题(如产品数量、设计/测试费用、不可再用的工程开支(Non-RecurringEngineering,NRE)、用户IP的整合/复用、可靠性和可维护性、生产过程复杂性等)综合考虑在内时,加速产品推出时间、提高产品性能、降低产品制造风险便成为选择设计技术时的重要考虑因素。尤其,目前电子产品的生命周期不足一年,如何尽可能块地设计出新的电子产品则成为了制造商要解决的问题。因此,电子产品集成电路的设计速度则成为了集成电路设计中的主要考虑因素。
随着集成电路制造工艺进入45nm以下阶段,数据流算法,尤其是数字媒体类的专用集成电路ASIC(Application SpecificIntegrated Circuit)设计,例如,用于视频编码器的去块滤波器的集成电路设计,面临设计周期长、灵活性差、扩展性差等问题。因此,难以满足产品快速上市、功能不断提升的需求。究其原因,现有的ASIC设计是基于标准单元库来运算,粒度较小,这样从最底层的标准单元库到最上层的算法的过程,自然变得复杂,因此,这样大大地制约了专用集成电路的设计速度。
在H.264视频标准中,编码器反变换量化后的图像通常会出现方块效应。其产生的原因有两个:最重要的一个原因是基于块的帧内和帧间预测残差的离散余弦变换(DCT)变换,其变换系数的量化过程相对粗糙,因而反量化过程恢复的变换系数也带有误差,会造成在图像块边界上的视觉不连续。第二个原因则来自于分块运动补偿预测,在多参考帧的情况下,不同子块在运动补偿时所需要的参考数据是根据残差能量来选择从哪个参考帧复制过来的,如此使得相邻的两个子块边界附近的参考数据可能来自不同参考帧。也就是说运动补偿块的匹配不可能是绝对准确的,所以就会在复制块的边界上产生数据不连续。当然,参考帧中已经存在的边界数据不连续也会被复制到需要补偿的子块内。这种边界数据不连续效应又会随着前一个重构帧积累下去,从而极大地影响到图像的质量和压缩效率。尽管在H.264标准中可以采用较小的4×4变换尺寸来降低这种边界数据不连续的现象,但仍需要一个去块滤波器以最大程度地提高编码性能。因此去块滤波器是视频编码器内不可缺少的组成部分,其去块性能的优劣直接影响着压缩影像的主观效果。
现有技术中,一种《用于根据多个视频标准进行视频编码的去块滤波技术》(专利号为:200680026470)公开了一种根据量化参数来对H.264/MPEG4标准的去块滤波技术。一种《去块滤波方法及装置》(专利号为:200810060198)提出了一种将去块滤波模块拆成子模块来进行去块滤波处理的方法。《一种去块滤波方法、系统及去块滤波器》(专利号为:200710125596.8)提出了按宏块的行顺序进行滤波处理的架构。从提升去块滤波器的设计速度和保证去块滤波器性能两方面来考虑,现有的用于去块滤波器的专用集成电路的设计速度慢,这在一定程度上制约着高清视频编码技术的发展。
因此,现有的用于去块滤波器的专用集成电路的设计方法还有待改进和提高。
发明内容
本发明要解决的技术问题是针对现有技术的不足,提供一种用于视频编码器的去块滤波器及其实现方法,能够加快去块滤波器的集成电路设计速度。
为解决上述技术问题,本发明采用了以下技术方案:
一种用于视频编码器的去块滤波器的实现方法,包括以下步骤:
将高级程序语言算法描述的视频编码器的去块滤波器的各个滤波函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成去块滤波器的硬件集成电路。
在本发明的一种实施例中,将高级程序语言算法描述的视频编码器的去块滤波器的各个滤波函数映射成由算子单元构成的硬件逻辑描述包括如下步骤:
程序分析步骤:读取去块滤波器的各个滤波函数的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;
数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述去块滤波器算法的数据控制流图中的相应节点;
算子时空图生成步骤:根据数据控制流图中的各个节点的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图,所述算子单元库中的算子单元包括控制类算子、运算类算子、存储类算子、路径类算子和时钟类算子算子中的至少一种;
时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
聚类压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使去块滤波的总体算法执行时间最接近于总时序约束;
下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述。
在本发明的一个实施例中,所述滤波函数包括用于对图像进行亮度垂直边界滤波的亮度垂直边界滤波函数、用于对图像进行亮度水平边界滤波的亮度水平边界滤波函数、用于对图像进行色度垂直边界滤波的色度垂直边界滤波函数和用于对图像进行色度水平边界滤波的色度水平边界滤波函数。
在本发明的一个实施例中,所述程序分析步骤包括:
从所述去块滤波的高级程序语言算法程序中识别出被映射的执行对象和参数对象,所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种;
分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运行中涉及的参数对象并判断子函数运行中是否又调用其它子函数。
在本发明的一个实施例中,在所述数据控制流图生成步骤中,将所述运算指令映射为处理节点,将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述参数对象映射为数据流上的存储节点。
在本发明的一个实施例中,所述算子时空图生成步骤包括:
将数据控制流图根据其数据流相关性展开;
根据展开后的各节点所进行的功能处理从预先建立的算子单元库中取出对应功能的至少一个算子单元,将所述处理节点映射为运算类算子,将所述控制流映射为控制类算子和/或路径类算子,将所述存储节点映射为存储类算子。
在本发明的一个实施例中,所述时序约束步骤包括:根据数据控制流图中数据流结构对算子时空图的每个层级进行时序约束;如果所述数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元;如果所述数据控制流图中的数据流为串行数据流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径所映射的算子单元所对应的时序总和的比例来分配。
在本发明的一个实施例中,所述聚类压缩步骤包括:
聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;
压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;
算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
同时,本发明还提供了一种用于视频编码器的去块滤波器,所述去块滤波器用于接收经反变换和量化后的图像帧数据,并进行去块滤波处理,所述去块滤波器包括:
用于对图像进行亮度垂直边界滤波的亮度垂直边界滤波功能块、用于对图像进行亮度水平边界滤波的亮度水平边界滤波功能块、用于对图像进行色度垂直边界滤波的色度垂直边界滤波功能块、用于对图像进行色度水平边界滤波的色度水平边界滤波功能块;所述亮度垂直边界滤波功能块、亮度水平边界滤波功能块、色度垂直边界滤波功能块以及色度水平边界滤波功能块均包括用于计算滤波参数的滤波参数计算单元,用于对滤波条件进行判断的滤波条件判决单元,用于计算强滤波的强滤波计算单元以及用于计算弱滤波的弱滤波计算单元,所述各单元由算子单元组成。
由于采用了以上技术方案,使本发明具备的有益效果在于:
通过将高级程序语言算法描述的视频编码器的去块滤波器的各个滤波函数映射成由算子单元构成的硬件逻辑描述;以及由算子单元构成的硬件逻辑描述生成去块滤波器的硬件集成电路的设计,使得系统工程师可以根据足以支撑描述高级语言算法的完备算子单元库,实现将用高级语言描述的去块滤波算法到下层硬件电路的快速映射,从而完成了去块滤波器集成电路的快速设计。并且,该种去块滤波器还可以与视频编码器内的其他专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的ASIC的设计速度。同时,该种去块滤波器可以适用于不同的视频编码器结构,具有很好的通用性。
附图说明
图1为现有集成电路的设计流程图;
图2示出了本发明实施例提供的几类算子结构;其中,图2.1示出的是运算类算子,图2.2示出的是存储类算子,图2.3示出的是路径类算子,图2.4示出的是控制类算子;
图3为本发明一种实施例高级程序语言描述的去块滤波器算法映射出的数据控制流图;
图4为本发明一种实施例高级程序语言中的常量的示意图;
图5为本发明一种实施例的L0处理功能节点的算子时空图;
图6为本发明一种实施例的L1处理功能节点的算子时空图;
图7为本发明一种实施例的L2处理功能节点的算子时空图;
图8为本发明一种实施例的L3处理功能节点的算子时空图;
图9为本发明一种实施例的是L4处理功能节点的算子时空图;
图10为本发明一种实施例进行滤波的4*4块边界的示意图;
图11为本发明一种实施例的滤波基本结构的示意图;
图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为存储类算子(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_frame_deblocking_filter函数。那么,相应地,在进行程序分析的时候,所需要遵循的程序规则就是C语言程序规则,根据x264_frame_deblocking_filter函数,识别出该函数中的执行对象和参数对象。
在C程序语言中,一个主函数通常会调用多个函数,而函数又会调用子函数。在此,将x264_frame_deblocking_filter函数定义为主函数,即滤波强度判决函数。将该主函数直接调用的函数称为定义为函数,将函数调用的函数称为子函数。当然,子函数还可以调用其它的子函数。具体地,识别出滤波强度判决函数中的函数和子函数,具体包括以下步骤:对x264_frame_deblocking_filter滤波强度判决函数进行分析,查找出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数。具体地,查找出该主函数直接调用的函数,具体包括,亮度垂直边界滤波函数、亮度水平边界滤波函数、色度垂直边界滤波函数和色度水平边界滤波函数;并分析函数的调用关系,查找到上述4个函数均分别调用了滤波参数计算函数、滤波条件判决函数、强滤波函数和弱滤波函数4个子函数。如表1所示,是在程序分析步骤中,分析出来的x264_frame_deblocking_filter函数参数对象包括的输入、输出数据;如表2所示,是在程序分析步骤中分析出来的x264_frame_deblocking_filter函数参数对象包括的中间数据和常数。
表1 x264_frame_deblocking_filter函数的输入、输出数据
变量名称 | 数据类型 | 方向 | 说明 |
i_stride | int | IN | 图像的宽度 |
mb.type | int | Int | 预测模式 |
p_fdec | uint8_t* | IN | 滤波前重建帧 |
mb.non_zero_count | int | IN | 残差非零系数个数 |
mb.mv | int | IN | 运动矢量 |
qp | int | IN | 量化参数 |
mvp[2] | int | IN | 预测运动矢量 |
h_fdec | uint8_t* | OUT | 滤波后重建帧 |
表2 x264_frame_deblocking_filter函数的中间数据和常数
变量名称 | 数据类型 | 说明 |
bs | int | 滤波强度 |
qpc | int | 色度块滤波量化参数 |
i_index_a | int | 查表索引 |
alpha | int | 判决虚假边界阈值1 |
beta | uint8_t* | 判决虚假边界阈值2 |
tc | int | 弱滤波限幅 |
其中,函数以及函数调用的子函数在程序运行中会涉及到运算指令和控制指令,当函数调用子函数时,则会按照C语言程序的规则进行相应的调用。
2)数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述去块滤波器算法的数据控制流图中相应节点;
由于程序分析步骤中,已识别出x264_frame_deblocking_filter函数的执行对象和参数对象。因此,在此步骤中,只需按照数据控制流图的映射规则,就可以将高级语言算法映射成数据控制流图。
其中,数据控制流图的映射规则具体为:将运算指令映射为处理节点,将控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将参数对象映射为数据流上的存储节点。并且,根据去块滤波算法在C语言程序中执行的先后顺序,在数据控制流图中标识出各个节点之间的相关性以及存储节点的存储特性。
具体地,对于x264_frame_deblocking_filter函数而言,运算指令映射出来的处理节点具体包括:L0处理节点,L1处理节点,L2处理节点,L3处理节点,L4处理节点;其中,L0处理节点用于计算去块滤波参数,对应于用高级程序语言描述的去块滤波器算法中调用的滤波参数计算函数,L1处理节点用于判断边界滤波强度,L2处理节点用于判断虚假边界,对应于用高级程序语言描述的去块滤波器算法中调用的滤波条件判决函数;L3处理节点用于计算强滤波,对应于用高级程序语言描述的去块滤波器算法中调用的强滤波函数,L4处理节点用于计算弱滤波,对应于用高级程序语言描述的去块滤波器算法中调用的强滤波函数,弱滤波函数。
如图3所示,为本发明实施例的x264_frame_deblocking_filter函数映射出来的数据控制流图;其中,DB-rf表示的是用于存储滤波前、滤波后图像数据的寄存器;以竖直边界为例,p0-p3表示当前滤波边界左边带滤波像素,最靠近边界的为p0,向左依次为p1-p3,依次类推。q0-q3表示边界右边带滤波像素,最靠近边界的为q0,向右依次为q1-q3,依次类推。L0处理节点输出值的作用是用于L2处理节点、L3处理节点、L4处理节点的输入变量的判断条件;L1处理节点输出值的作用是用于选择是输出经过强滤波后的结果,还是弱滤波后的结果,或者是不通过滤波直通输出的结果。L2处理节点的作用是用于根据图像像素特征,计算得到一些中间变量,以便L3处理节点和L4处理节点选择合适的滤波器。L3处理节点的作用是为了得到强滤波后图像的像素值,L4处理节点的作用是为了得到弱滤波后图像的像素值。由于图像中每个块的边界的特征不同,所以在对图像进行去块滤波时,会需要选择不同方式的滤波器。
需要说明的一点是,L0处理节点中的输入变量包括有量化参数QP,offsetA以及offsetB,其中offsetA表示的是C程序中的变量h->sh.i_alpha_c0_offset,用于得到indexA,offsetB表示的是C程序中的变量h->sh.i_beta_offset,用于得到indexB。offsetA和offsetB也属于输入变量,不过对于baseline标准的H.264算法,他们均规定为0,所以没有在表1中列出。而本实施例的C程序,由于是高标准的H.264算法,在baseline标准中无需这2个输入变量。L0处理节点的高级程序语言描述中涉及到固定不变的i_alpha_table和i_beta_table,它们的取值情况,如图4所示。
L2处理节点的输入变量包括α,β,IndexA。其中,α表示块间的边界门限,β表示块内的边界门限。一般来说,真实的边界两侧像素值的梯度差要比量化误差造成的虚假边界两侧的像素值梯度差要大。因此,对于边界两侧的像素点的梯度差值,高于门限就判定为真实边界,否则就判定为虚假边界。利用L2处理节点对块的边界两侧的虚假边界进行判断,若判断为真实边界,则进行滤波;若判断为虚假边界,则不进行滤波;如果对虚假边界也进行滤波,则会给图像造成新的误差。
其中,α对应于表2中的alpha,即判决虚假边界阈值1,β对应于表2中的beta,即判决虚假边界阈值2。并且,IndexA是C语言程序中的变量,对应于表2中的i_index_a,即查表索引。
其中块间虚假边界判决需要以下三个式子:
|p1-p0|<β;|q1-q0|<β;|p0-q0|<α;
其中块内虚假边界判决需要以下三个式子:
|p0-q0|<(α>>2)+2;|p2-p0|<β;|q2-q0|<β;
P0、P1、P2、q0、q1、q2均指边界附近的一个待滤波的像素值。
L1处理节点的输入变量为is_intra,对应于表1中的i_stride,表示图像的宽度,nc_zero,对应于表1中的mb.non_zero_count,表示残差非零系数个数,mvx以及mvy,对应于表1中的mb.mv,表示运动矢量。L1处理节点用于判断边界滤波强度,具体判断规则如表3所示。
表3滤波强度判决条件关系表
边界两边图像块模式与条件 | 滤波强度(BS) |
一个图像块为帧内预测并且边界为宏块边界 | 4 |
一个图像块为帧内预测 | 3 |
一个图像块对残差系数不全为零 | 2 |
图像块运动矢量之差不小于1个亮距 | 1 |
其他 | 0 |
需要说明的是,映射出来的L1处理节点用于判断边界滤波强度,由于亮度垂直边界滤波函数、亮度水平边界滤波函数、色度垂直边界滤波函数和色度水平边界滤波函数均调用的4个相同的子函数,因此,可将上述4种边界滤波强度统一映射在L1处理节点的算子模块内。
3)算子时空图生成步骤:根据数据控制流图中的各个节点的所进行的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将数据控制流图转换成由算子单元组成的算子时空图;
在将数据控制流图转换成由算子单元组成的算子时空图的时候,先根据其数据流相关性将数据控制流图尽可能地展开,用一个或多个算子单元的组合取代数据控制流图中的各个节点所要进行的功能处理。将数据控制流图映射成算子时空图时,其映射规则为:将数据控制流图中的处理节点映射为运算类算子,将控制流映射为控制类算子和/或路径类算子,将存储节点映射为存储类算子。并且在映射成算子时空图时,要尽可能地采用并行方式展开。虽然采用并行的方式展开,扩大了集成电路的设计面积,但这种情况下时序最快。
将数据控制流图展开的方式包括但不限于以下几种方式:
如果数据控制流图中的数据流为顺序相关数据流结构,则将所述顺序相关数据流采用流水线的方式展开。
如果数据控制流图中的数据流中存在反馈时,当数据流是一个循环时,对于有数据相关性的数据流不能转化为流水结构,如果数据流的数据之间存在数据相关性,并且存在数据相关性的各数据流内部不存在数据相关性时,则将所述内部数据不存在数据相关性的各数据流采用局部流水线的方式展开。
如果数据控制流图中的数据流之间不存在数据相关性,则将所述并行数据流采用并行方式展开,并转换成由算子单元组成的算子时空图。
优选的是采用并行方式展开。对于同一个处理节点来说,只要功能节点中的算子单元之间没有相关性,则采用并行的方式展开。对于不同的处理节点来说,只要各个处理节点之间没有相关性,则也采用并行的方式展开。这样做虽然增大了ASIC的面积。但是,却最大程度地缩短了ASIC的设计时间。
通过以上方式,就可以将数据控制流图中的各个节点全部都映射成算子时空图,如图5-9所示。其中,图5表示的是L0处理节点映射出来的算子时空图;图5中,ADD表示加法算子,属于运算类算子。运算类算子具有重构性,可以根据不同应用的需求,通过为控制位配置不同的指令,即可以使同一个运算算子实现多种不同的功能。Clip也属于运算类算子,用于截断数据,将输入变量限制在某一范围内,超出则取上限或下限值从而完成输入数据的限幅运算。
图6表示的是L1处理节点映射出来的算子时空图,图7表示的是L2处理节点映射出来的算子时空图。其中,COMP表示的是运算类算子中的比较类算子;SAD用于计算残差能量,即2个像素值相减取绝对值,ADDSM表示的是相加和移位的复合运算。
图8表示的是L3处理节点映射出来的算子时空图;其中,ADDC表示带进位的加法运算,图9表示的是L4处理节点映射出来的算子时空图,其中,SADDM表示的是移位和相加的复合运算。
在算子时空图的生成过程中,采用路径类算子来标识数据控制流图中的数据的相关性。实际上,路径算子的主要作用是用于链接存储算子与运算算子,形成算子时空图。其实现形式有三种:多选器、交叉开关和总线。
4)时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
时序约束步骤中,以函数为单位,对每个函数的算子时空图中的各算子单元标注时间,根据数据控制流图中数据流结构对算子时空图的每个层级进行时序约束。如果数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元;如果数据控制流图中的数据流为串行数据流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径所映射的算子单元所对应的时序总和的比例来分配。
图10示的是需要进行滤波的4*4块边界的示意图。从图10中可以看出,亮度块和色度块共有48条边界需要进行滤波,每条边界又可拆分为图11表示的滤波的基本结构。而滤波强度判决和强滤波以及弱滤波甲酸可以流水交替进行,前者需要3个时钟周期,后者需要8个时钟周期。滤波参数计算需要3个时钟周期。经过时序标注,可以得到完成x264_frame_deblocking_filte函数的理论最快周期数:3+48*4+8=203(cycle)。
5)聚类压缩步骤:在时序标注步骤的基础上,根据时间标注对算子时空图进行空间上(即硬件资源上或面积上)的聚类压缩,并使去块滤波算法的总体执行时间最接近于总时序约束;
其中,聚类压缩步骤包括:
聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;
压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;
算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
聚类压缩的前提条件是:聚类压缩前后,算子时空图实现的功能不会改变。具体地,该步骤是根据各个算子单元的时间标注,在算子时空图中进行聚类压缩,通过增加控制类算子和路径类算子来提高存储类算子和运算类算子的复用,即尽量减少运算和存储类算子的数量。
实际上,将一个算法描述用算子完全平铺开,没有任何复用,算法的完成速度将最快,但这带来的代价将是很高的面积成本和功耗,这并非设计所希望的。设计的目标期望满足:在满足用户时序要求的前提下,最大地减小面积和功耗需求,所以需要复用一些算子。这样就需要在每个算子执行相应的功能上加上其执行时间的标注,从而能够根据执行时间复用算子,使总体算法执行时间最接近于实际要求时间,这就是算子的时间图。空间图是对算子面积的定义,即在算子聚类映射时,根据算子的面积进行聚类,选择复用面积较小的算子。在算子聚类过程中,这两种因素都需要考虑到。
进行算子时空图聚类压缩时,主要遵循以下原则:
1、对算子时空图中运算属性相同的运算类算子进行聚类压缩。聚类压缩的前提条件是,聚类压缩前后,算子时空图实现的功能不会改变。例如,算子时空图中可以将多个并行的加法算子压缩成一个加法算子。当然,在压缩的过程中,需要通过引入控制算子的方式实现加法算子的复用,以减少算子时空图中加法算子的个数,同时又要保证压缩后与压缩前算子时空图能够实现相同的功能。另一例子,对于在前后不同时钟周期中实现不同功能的不同的运算类算子,也可以进行聚类压缩;例如,在第一个周期需要一个实现加法功能的运算算子,在第二个周期需要实现一个减法功能的运算算子,在进行聚类压缩的过程中,则可以通过引入时钟类算子和控制类算子,将两个运算算子压缩成一个运算算子。在时钟算子的控制作用下,通过控制算子改变运算算子的控制为,使该运算算子在第一个时钟周期中实现加法功能,在第二个时钟周期中实现减法功能。
由此可见,对算子时空图进行压缩后,算子的数目可以大幅度的减少,从而节约了集成电路的面积。然而,聚类压缩过程虽然实现了算子的复用,但是,却在一定程度上增加了去块滤波算法的执行时间。
可以理解的是,对运算类算子的聚类压缩必然引起存储累算子、控制类算子、路径类算子以及时钟类算子也会相应地发生变化,所以可以根据实际情况对上述各类算子也作相应的聚类压缩以进一步节约集成电路面积。
2、聚类压缩过程中,在引入控制算子的同时,在不同的时钟周期会生成相应的配置指令。配置指令用于控制生成的算子按照预定的方式工作,从而实现与压缩前算子时空图的相同功能。
3、对于同一个算子时空图可能的聚类压缩结果有多种。因此,在压缩过程中,选择压缩后去块滤波算法的执行时间最接近总时序约束时间的算子时空图作为最终的压缩结果。如此选择,则可以在保证满足时序约束条件的情况下,最大地节约集成电路的面积。总时序约束时间是根据用户提出的性能指标而计算出的去块滤波算法的最大执行时间。通过上述对算子时空图的聚类压缩,可以减小去块滤波器的集成电路的面积和功耗。并且,聚类压缩后生成的算子具有一定的规整性。
6)下层硬件映射步骤:根据聚类压缩后的算子时空图生成去块滤波器的下层硬件电路。
由于生成的算子时空图就是现有的集成电路设计中RTL级的描述。因为现有技术中已有多款比较成熟的工具支持RTL级的描述转化为下层硬件,且实现过程基本满足高效、快捷等要求。因此,应用本发明,系统工程师可以快速地将基于高级语言描述的去块滤波器的集成电路的算法映射成RTL级描述,再利用现有的转化工具,就映射成具体的下层硬件电路。本发明创造了一种从计算机语言到集成电路下层硬件电路的映射工具,标准化地实现了集成电路从高级语言生成下层硬件的过程,实现起来方便快捷。
需要说明的一点是,本发明以描述H.264标准的C程序语言为例说明,但其方法不局限于H.264标准和C程序语言。例如,高级语言还可以选择Java语言、MATLAB M语言等,对于不同的语言,其描述去块滤波器集成电路的算法也对应的是不一样的。
需要说明的第二点是,在聚类压缩步骤以后,还可以对算子时空图中的某些算子进行优化;一种优化的方式是对某些算子实行固化定制。比如,图12为一种压缩后的运算类算子,由于其中的logic单元并没有使用,所以可以将该算子的logic单元去除后得到图13中所示的算子结构,进一步地缩小了算子的面积。这样,既可以保证算法的正确执行,又可以优化集成电路的面积和功耗。
同时,本发明还提供了一种用于视频编码器的去块滤波器,去块滤波器用于接收图像的亮度和色度数据,包括:用于对图像进行亮度垂直边界滤波的亮度垂直边界滤波功能块、用于对图像进行亮度水平边界滤波的亮度水平边界滤波功能块、用于对图像进行色度垂直边界滤波的色度垂直边界滤波功能块、用于对图像进行色度水平边界滤波的色度水平边界滤波功能块,所述亮度垂直边界滤波功能块、亮度水平边界滤波功能块、色度垂直边界滤波功能块以及色度水平边界滤波功能块均包括用于计算滤波参数的滤波参数计算单元,用于对滤波条件进行判断的滤波条件判决单元,用于计算强滤波的强滤波计算单元以及用于计算弱滤波的弱滤波计算单元,所述各单元由算子单元组成。
应用本发明提出的基于算子的去块滤波器的硬件集成电路的设计方法,系统工程师可以根据足以支撑描述高级语言算法的完备算子功能库,快速地将用高级语言算法描述的去块滤波器的各个功能模块的映射成RTL级描述,再利用现有工具将RTL级描述映射成去块滤波器的下层硬件电路,从而完成了去块滤波器下层硬件集成电路的快速设计。由此可见,本发明创造了一种从计算机语言到去块滤波器的下层硬件电路的映射工具,标准化地实现了集成电路从高级语言生成下层硬件的过程,实现起来方便快捷。并且,大大地缩减了因为人为地将高级语言算法描述的去块滤波器的各个功能模块转化为RTL级算法描述的时间,从而缩短了设计去块滤波器的下层集成电路的时间,进一步满足了客户的需求,也在一定程度上促进了高清视频编码技术的发展。
并且,该种去块滤波器还可以与视频编码器内的其他专用集成电路ASIC部分进行并行流水操作,加快了视频编码器的ASIC的设计速度。同时,该种去块滤波器可以适用于不同的视频编码器结构,具有很好的通用性。
同时,本发明还通过对标注了时间的算子时空图中的运算属性相同的运算类算子和/或存储属性相同的存储类算子进行聚类压缩;同时,引入控制算子实现对聚类压缩后的算子的复用,进而大大缩小了时空图的面积。
以上内容是结合具体的实施方式对本发明所作的进一步详细说明,不能认定本发明的具体实施只局限于这些说明。对于本发明所属技术领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干简单推演或替换,都应当视为属于本发明的保护范围。
Claims (5)
1.一种用于视频编码器的去块滤波器的实现方法,其特征在于,包括以下步骤:
将高级程序语言算法描述的视频编码器的去块滤波器的各个滤波函数映射成由算子单元构成的硬件逻辑描述;由所述算子单元构成的硬件逻辑描述生成去块滤波器的硬件集成电路,将高级程序语言算法描述的视频编码器的去块滤波器的各个滤波函数映射成由算子单元构成的硬件逻辑描述包括如下步骤:
程序分析步骤:读取去块滤波器的各个滤波函数的高级程序语言算法程序,根据该高级程序语言规则从所述高级程序语言算法程序中识别出被映射的执行对象和参数对象;
数据控制流图生成步骤:将识别出的执行对象和参数对象映射成描述去块滤波器算法的数据控制流图中的相应节点;
算子时空图生成步骤:根据数据控制流图中的各个节点的功能处理,从算子单元库中取出对应功能的至少一个算子单元,将所述数据控制流图转换成由算子单元组成的算子时空图,所述算子单元库中的算子单元包括控制类算子、运算类算子、存储类算子、路径类算子和时钟类算子中的至少一种;
时序约束步骤:根据用户规格需求和目标集成电路工艺的要求确定出总时序约束,对算子时空图中的每个算子单元标注时间,对算子时空图的每个层级进行时序约束;
聚类压缩步骤:根据时间标注对算子时空图进行空间上的聚类压缩,并使去块滤波的总体算法执行时间最接近于总时序约束;
下层硬件映射步骤:将聚类压缩后的算子时空图映射成由算子单元构成的硬件逻辑描述;
所述程序分析步骤包括:
从所述去块滤波的高级程序语言算法程序中识别出被映射的执行对象和参数对象,所述执行对象包括运算指令和/或控制指令,所述参数对象包括输入数据、输出数据和中间数据中的至少一种;
分析函数调用关系,识别出函数以及函数运行中涉及的参数对象并判断函数运行中是否调用子函数;若调用子函数,则分析子函数的调用关系,识别出子函数以及子函数运行中涉及的参数对象并判断子函数运行中是否又调用其它子函数;
在所述数据控制流图生成步骤中,将所述运算指令映射为处理节点,将所述控制指令映射为用于标识状态、状态转移条件及状态控制信号的控制流,将所述参数对象映射为数据流上的存储节点。
2.如权利要求1所述的方法,其特征在于,所述滤波函数包括用于对图像进行亮度垂直边界滤波的亮度垂直边界滤波函数、用于对图像进行亮度水平边界滤波的亮度水平边界滤波函数、用于对图像进行色度垂直边界滤波的色度垂直边界滤波函数和用于对图像进行色度水平边界滤波的色度水平边界滤波函数。
3.如权利要求2所述的方法,其特征在于,所述算子时空图生成步骤包括:
将数据控制流图根据其数据流相关性展开;
根据展开后的各节点所进行的功能处理从预先建立的算子单元库中取出对应功能的至少一个算子单元,将所述处理节点映射为运算类算子,将所述控制流映射为控制类算子和/或路径类算子,将所述存储节点映射为存储类算子。
4.如权利要求3所述的方法,其特征在于,所述时序约束步骤包括:根据数据控制流图中数据流结构对算子时空图的每个层级进行时序约束;如果所述数据流结构为并行数据流,则将总时序约束平分到对应的时空图中的每个算子层级,并将每个算子层级的时序约束平分到该算子层级中的每一个算子单元;如果所述数据控制流图中的数据流为串行数据流,则将各算子层级中最长运算路径所映射的算子单元所对应的时序占总算子层级中最长运算路径所映射的算子单元所对应的时序总和的比例来分配。
5.如权利要求4所述的方法,其特征在于,所述聚类压缩步骤包括:
聚类步骤,用于在算子时空图中查找出属性相同的运算类算子和/或存储属性相同的存储类算子;
压缩步骤,用于根据时间标注对运算属性相同的运算类算子在空间上进行合并压缩和/或将存储属性相同的存储类算子在空间上进行合并压缩;
算子复用步骤,用于引入控制类算子,对压缩后的运算类算子和/或存储类运算算子生成相应配置指令,实现运算类算子和/或存储类算子的复用。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010620016 CN102055981B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编码器的去块滤波器及其实现方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 201010620016 CN102055981B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编码器的去块滤波器及其实现方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102055981A CN102055981A (zh) | 2011-05-11 |
CN102055981B true CN102055981B (zh) | 2013-07-03 |
Family
ID=43959845
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 201010620016 Expired - Fee Related CN102055981B (zh) | 2010-12-31 | 2010-12-31 | 用于视频编码器的去块滤波器及其实现方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102055981B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055981B (zh) * | 2010-12-31 | 2013-07-03 | 北京大学深圳研究生院 | 用于视频编码器的去块滤波器及其实现方法 |
CN102223543B (zh) * | 2011-06-13 | 2013-09-04 | 四川虹微技术有限公司 | 参考像素读取存储系统 |
KR20130050403A (ko) * | 2011-11-07 | 2013-05-16 | 오수미 | 인터 모드에서의 복원 블록 생성 방법 |
TWI667913B (zh) * | 2012-04-06 | 2019-08-01 | 日商新力股份有限公司 | Image processing device, image processing method, computer program, and recording medium |
CN103379327A (zh) * | 2012-04-24 | 2013-10-30 | 安凯(广州)微电子技术有限公司 | 一种去方块效应滤波方法 |
US9503753B2 (en) * | 2012-09-24 | 2016-11-22 | Qualcomm Incorporated | Coded picture buffer arrival and nominal removal times in video coding |
CN104113765A (zh) * | 2014-07-28 | 2014-10-22 | 北京大学深圳研究生院 | 一种视频编、解码方法和装置 |
EP3928524A4 (en) | 2019-04-15 | 2022-06-22 | Beijing Bytedance Network Technology Co., Ltd. | TIME PREDICTION OF PARAMETERS IN A NONLINEAR ADAPTIVE LOOP FILTER |
CN111800643A (zh) * | 2020-07-03 | 2020-10-20 | 北京博雅慧视智能技术研究院有限公司 | 一种用于视频编码的去方块滤波器及其滤波方法 |
CN113706368A (zh) * | 2021-10-29 | 2021-11-26 | 湖北亿咖通科技有限公司 | 图像数据处理方法和装置、电子设备、存储介质 |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055981A (zh) * | 2010-12-31 | 2011-05-11 | 北京大学深圳研究生院 | 用于视频编码器的去块滤波器及其实现方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6922492B2 (en) * | 2002-12-27 | 2005-07-26 | Motorola, Inc. | Video deblocking method and apparatus |
-
2010
- 2010-12-31 CN CN 201010620016 patent/CN102055981B/zh not_active Expired - Fee Related
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102055981A (zh) * | 2010-12-31 | 2011-05-11 | 北京大学深圳研究生院 | 用于视频编码器的去块滤波器及其实现方法 |
Non-Patent Citations (5)
Title |
---|
DAI Peng,Wang Xin"an等.A novel reconfigurable operator based IC design methodology for multimedia processing.《TENCON2009-2009 IEEE REGION 10 CONFERENCE》.2009,1-5. * |
Kuilin Chen等.Operator design methodogy and implementation for H.264 entropy encoder.《information engineering and computer science(ICIECS),2010 2nd international conference on》.2010,1-4. * |
Ziyi Hu * |
王新安.算子设计方法缩小IC设计与制造间的"剪刀差".《集成电路应用》.2010,(第7期),23-24,26. |
算子设计方法缩小IC设计与制造间的"剪刀差";王新安;《集成电路应用》;20100710(第7期);全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN102055981A (zh) | 2011-05-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102055981B (zh) | 用于视频编码器的去块滤波器及其实现方法 | |
CN102088603B (zh) | 用于视频编码器的熵编码器及其实现方法 | |
CN102054108B (zh) | 集成电路下层硬件映射方法、时空图压缩方法及装置 | |
CN102043886A (zh) | 集成电路下层硬件映射方法、数据控制流时序约束方法及装置 | |
CN102148990B (zh) | 一种运动矢量预测装置和方法 | |
CN101115207A (zh) | 基于预测点间相关性的帧内预测实现的方法及装置 | |
Kalali et al. | An approximate HEVC intra angular prediction hardware | |
CN102054109A (zh) | 集成电路下层硬件映射方法、数据控制流生成方法及装置 | |
CN110191339A (zh) | 码率估计核心单元、码率估计装置及码率估计方法 | |
CN100463524C (zh) | 一种用于运动估计的vlsi装置及运动估计的方法 | |
Xu et al. | A power-efficient and self-adaptive prediction engine for H. 264/AVC decoding | |
CN102075762B (zh) | 用于视频编码器的帧间预测电路及其实现方法 | |
CN102647595B (zh) | 一种基于avs的亚像素运动估计的装置 | |
CN102055980B (zh) | 用于视频编码器的帧内预测电路及其实现方法 | |
Srinivasarao et al. | High‐speed low‐power very‐large‐scale integration architecture for dual‐standard deblocking filter | |
CN102054107B (zh) | 集成电路下层硬件映射方法、时空图生成方法及装置 | |
CN102572415B (zh) | 在可重构处理器上映射和实现的运动补偿算法的方法 | |
CN102215422B (zh) | 一种视频处理集成电路验证码流产生方法、装置及系统 | |
EP4087254A1 (en) | Inter-frame prediction method, encoder, decoder and storage medium | |
CN100586188C (zh) | 一种基于avs的帧内预测计算的硬件实现方法 | |
Doan et al. | Multi-asip based parallel and scalable implementation of motion estimation kernel for high definition videos | |
US8621414B2 (en) | Method and algorithm analyzer for determining a design framework | |
Fan et al. | Co-via: A video frame interpolation accelerator exploiting codec information reuse | |
Han et al. | Functional modeling techniques for efficient SW code generation of video codec applications | |
Carballo et al. | Scalable video coding deblocking filter FPGA and ASIC implementation using high-level synthesis methodology |
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 | ||
CF01 | Termination of patent right due to non-payment of annual fee | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20130703 |