AVS2高级熵编码器实现方法及装置与流程

文档序号:17987581发布日期:2019-06-22 00:31阅读:490来源:国知局
AVS2高级熵编码器实现方法及装置与流程

本发明涉及一种avs2高级熵编码器实现方法及装置。



背景技术:

avs2国家标准是avs1之后新一代的标准,包括视频、音频以及系统三个部分。avs2视频编码的目标,是在保证视频主观质量的同时,在高清或更高分辨率下至少比avs1编码性能提高1倍。avs2高级熵编码器是avs2视频编码系统中核心编码模块,主要是在不丢失任何信息的情况下对视频序列进行压缩编码。

avs2高级熵编码主要有二值化模块、上下文模型模块、算术编码模块组成。为了避免算术编码过程中引入乘法和除法运算,avs2在编码的过程中把运算域从实数域转化到对数域,这样实数域的乘法和除法运算在对数域只需要通过加法和减法运算即可完成。由于算术编码模块在编码已经二值化之后的数值时需要该数值对应的概率模型,因此上下文模型模块主要是在编码的时候自适应地去计算相应语法元素对应的条件概率。

avs2熵编码器自身包含非常紧密的编码依赖关系,视频序列对高级熵编码器低吞吐率输出的时候,avs2高级熵编码器设计并不复杂,但是在高吞吐率输出的时候,avs2视频编码器就需要对高级熵编码器进行优化处理,降低avs2熵编码器单bit编码的编码时间,提高avs2熵编码器的编码吞吐率。



技术实现要素:

本发明的目的在于提供一种avs2高级熵编码器实现方法及装置,使高级熵编码器每一个时钟周期输出一bit的编码码流,进而提高整体编码模块的吞吐率。

本发明提供一种avs2高级熵编码器,主要由二值化模块、上下文模型模块、算术编码模块组成;二值化模块主要是对需要进行二值化操作的语法元素进行二值化操作;上下文模块主要是存储不同语法元素相应二值化值所对应的概率值;熵编码完成对不同语法元素二值化值选择对应的概率模型,然后对其进行压缩编码。

本发明提供一种avs2高级熵编码器实现方法,其提高熵编码器吞吐率,将上下文模型模块拆分成功能独立的上下文模型选择模块和上下文模型更新模块,将算术编码模块拆分成功能独立的编码器状态更新模块和bit生成模块;二值化模块与上下文模型选择模块并行处理,提高熵编码器的处理能力;上下文模型采用寄存器的方式进行存取,简化设计复杂度,方便硬件实现,达到快速存取目的,上下文模型更新与编码器状态更新模块并行处理;使用异步fifo作为前后级流水中间变量缓冲,实现编码模块不间断编码;整体上降低高级熵编码器处理每bit编码所需要的时间,提高整个熵编码器的处理性能,增强编码器的吞吐率。

本发明还提供一种avs2高级熵编码器装置,其用于实现本发明的avs2高级熵编码器实现方法,该实现装置为7路硬件电路实现装置。

优选地,该实现装置分为如下7个部分:

部分1为语法元素输入fifo,其储存需要进行熵编码的语法元素,可以直接使用异步fifo来实现该模块电路;

部分2为二值化和上下文模型选择模块,该电路主要完成语法元素二值化和对应二值化值的上下文模型选择;

部分3为fifo1,该电路直接使用异步fifo实现,不同的异步fifo的相关参数根据实际需求进行选择;

部分4为上下文模型更新和编码器状态更新模块,该电路使用寄存器储存上下文模型,便于硬件电路的实现;

部分5为fifo2,该电路直接使用异步fifo实现,不同的异步fifo的相关参数根据实际需求进行选择;

部分6为bit生成模块,该电路用于编码器输出位流的生成;

部分7为码流输出模块,该电路实现将编码输出的单bit数据按照实际需求的码流位宽进行串并转换输出。

使用异步fifo进行缓存,可以使前后模块相互独立互不干扰,避免数据因上溢、下溢造成的数据丢失,避免前后级模块交互握手信号造成的时钟周期的浪费,提高熵编码器的处理性能。

本发明提出的avs2高级熵编码器,可以保证每一个时钟周期输出一bit的编码码流,提高整体编码模块的吞吐率。同时,该编码模块简单易懂,硬件设计易于实现。

附图说明

图1是根据本发明的avs2高级熵编码器的基本原理图;

图2是根据本发明的avs2高级熵编码器的硬件电路实现装置图。

具体实施方式

下面参照附图说明本发明的原理及示例性实施方式。

如上所述,avs2熵编码器自身包含非常紧密的编码依赖关系,在同等开发环境的情况下,对于需求高吞吐率输出的时候,avs2熵编码器自身的数据依赖性使得硬件设计成为一大瓶颈。为了使avs2高级熵编码器每一个时钟周期输出一bit的编码码流,进而提高整体编码模块的吞吐率,本发明提出了一种avs2高级熵编码器实现方法及装置。

如图1和图2所示,本发明提出的avs2高级熵编码器主要包括二值化模块、上下文模型模块、算术编码模块。二值化模块完成对需要二值化操作的语法元素进行二值化操作。上下文模型模块存储相应语法元素二值化之后数值的概率模型;语法元素二值化之后高概率码流和低概率码流的概率相等时,此时不需要选择概率模型,直接进行旁路编码;语法元素二值化之后高概率码流和低概率码流的概率不相等时,此时需要选择概率模型,直接进行规则编码。本发明基于以下对硬件电路进行实施,提高熵编码器的处理性能,在同等开发环境下,增强编码器的吞吐率。

1.拆分算术编码模块

正如前面阐述的,avs2熵编码器自身包含非常紧密的编码依赖关系,导致硬件流水设计成为一大瓶颈。

为了优化avs2熵编码器内部的编码依赖关系,减少内部模块编码中额外花费的等待时间,方便硬件模块级流水设计,将不同功能的模块进行拆分处理,每个模块功能独立,并采用流水结构,提高熵编码的吞吐率。

算术编码模块拆分成功能独立的编码器状态更新模块和bit生成模块;将上下文模块拆分成上下文模型选择模块和上下文模型更新模块。

将模块进行拆分,降低单个模块的运行时间,采用流水结构,提高熵编码器的处理性能。

2.使用寄存器存取上下文模型

为了节省上下文模型更新需要的时间,采用寄存器存储概率模型的方式,达到随存随取随时更新的目的,而且硬件实现比较简单,不需要额外的逻辑去维护上下文模型的更新,避免因判断上下文是否已经更新而造成的时钟周期的浪费。

3.内部模块并行处理

将功能独立,相互之间没有相关性的模块进行并行处理。将串行处理方式改为并行处理方式,减少了一半的运行时间,使得模块的处理性能得到提高。

二值化模块和上下文模型选择模块进行并行处理,上下文模型更新模块和编码器状态更新模块进行并行处理。

4.模块之间使用异步fifo进行缓存,各模块之间做流水处理

模块之间的中间变量使用异步fifo进行缓存,使前后模块相互独立,互不影响,方便模块之间的跨时钟域操作,可以使前后模块在不同的频率下进行流水操作。

本发明提出的4种硬件结构,在同等开发环境下,可以提高avs2高级熵编码器的处理性能,增强编码器的吞吐率;功能模块拆分,缩短单个模块内部关键路径长度;模块进行并行处理;前后级模块中间变量使用异步fifo进行缓存并做流水处理;使用寄存器存储上下文模型;硬件逻辑简单易懂,硬件电路易于实现,设计简单规整。

如图1所示,对于需要进行二值化的语法元素进行二值化。对于不需要进行二值化操作的语法元素,不进行二值化。

上面参照附图说明了本发明的实现方法,但是,应当理解,上述说明仅是示例性的。本领域的技术人员可以在不脱离本发明的精神和范围的前提下,对本发明作出各种修改和变型。本发明的保护范围由所附的权利要求书限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1