一种基于FPGA的HEVC熵编码硬件加速器制造技术

技术编号:36606064 阅读:17 留言:0更新日期:2023-02-04 18:28
本发明专利技术涉及一种基于FPGA的HEVC熵编码硬件加速器。其执行预头信息编码、预上下文模型初始化CMI、编码单元CU预处理优化策略、残差编码控制架构和部分上下文索引流水计算方案;预头信息编码是指编码器启动时编码头信息;预上下文模型初始化CMI是指编码器启动时计算好B、P、和I Slice的初始上下文模型;编码单元CU预处理优化策略是指并行处理CU、PU和TU层信息,并在CU层增加两个FIFO用于存储PU和TU层产生的语法元素信息;残差编码控制架构是指将残差编码控制架构设计成4级流水线;部分上下文索引流水计算方案是使用三级流水线计算部分语法元素上下文索引。本发明专利技术在保持高吞吐量的同时,减少由复杂计算带来的路径延迟,提高工作频率。频率。频率。

【技术实现步骤摘要】
一种基于FPGA的HEVC熵编码硬件加速器


[0001]本专利技术涉及高效视频编码HEVC熵编码领域,特别是一种基于FPGA的HEVC熵编码硬件加速器。

技术介绍

[0002]随着智能手机和短视频的普及,视频在全网数据流量占比已接近70%。2013年,为了满足人们对视频更高质量的要求,国际电联(ITU)正式批准通过了新一代高效视频编码(high efficiency video coding, HEVC)标准,该标准较H.264/AVC的编码效率大约提高50%[1]。熵编码作为HEVC的最后一个环节,可以很大程度压缩视频的熵冗余。CABAC作为HEVC保留的唯一熵编码方式,虽然具有编码效率的优势,但是其计算复杂度也成倍增加。
[0003]高吞吐量熵编码器的实现需要有足够的语法元素输入,以确保熵编码器能够持续工作。随着CABAC吞吐量的提高,语法元素作为CABAC的输入,其生成速度成为熵编码实际吞吐量的瓶颈。
[0004]文献[2]将熵编码的硬件架构分成数据预处理模块、二值化模块、上下文建模模块和算数编码模块,其中数据预处理模块用于产生语法元素(sytnax element,SE)。该架构可以采用三路并行架构同时进行CTU的编码,极大提高了熵编码的吞吐量。但该架构熵编码吞吐量的提高并没有针对语法元素的生成结构进行优化,而是通过巨大的的电路资源消耗换取。文献[3]提出的四路残差语法元素方案可以提高残差语法元素的速度,但是设计复杂,并且没有考虑到语法元素的存储消耗问题。

技术实现思路

[0005]本专利技术的目的在于提供一种基于FPGA的HEVC熵编码硬件加速器,本专利技术提出的预头信息编码、预初始化和编码单元预处理优化策略,可以加快语法元素的产生,以供自适应二进制算术编码器使用;本专利技术设计的残差编码控制架构和部分上下文索引流水计算方案,可以在保持高吞吐量的同时,可以减少由复杂计算带来的路径延迟,提高工作频率。
[0006]为实现上述目的,本专利技术的技术方案是:一种基于FPGA的HEVC熵编码硬件加速器,其执行预头信息编码、预上下文模型初始化CMI、编码单元CU预处理优化策略、残差编码控制架构和部分上下文索引流水计算方案;所述预头信息编码是指编码器启动时,即编码头信息;所述预上下文模型初始化CIM是指编码器启动时,即计算好B 、P、和I Slice的初始上下文模型并存储到对应存储器中;所述编码单元CU预处理优化策略是指并行处理CU、PU和TU层信息,并在CU层增加两个FIFO用于存储PU和TU层产生的语法元素信息;所述残差编码控制架构是指将残差编码控制架构设计成4级流水线;所述部分上下文索引流水计算方案是使用三级流水线计算部分语法元素上下文索引,提高熵编码吞吐量。所述HEVC熵编码硬件加速器具体执行如下步骤:步骤 S01、当检测到视频编码器启动时,就马上启动熵编码的预头信息编码和预上下文模型初始化CMI(context model initialization);完成片头信息编码和CMI后,等
待第一个编码树单元CTU信息的到来,跳转步骤S02;步骤S02、若相应CTU是某个片Slice的第一个CTU,但该Slice不是视频的第一个Slice时,则编码器在完成片头信息编码和CMI后,跳转到步骤S03;否则,直接跳转到步骤S03;步骤S03、编码环路滤波LP (loop filter)模块的语法元素 SE(syntax element);完成LP 的SE编码后,跳转到步骤S04;步骤S04、根据输入的编码单元CU(coding unit)的划分标志cu_spilt_flag对CTU进行四叉树划分,跳转到步骤S05;步骤S05、编码CU的SE,并同时启动预测单元PU(prediction unit)和变换单元TU(transform unit)信息的预处理;编码完CU的SE后,跳转到步骤S06;步骤S06、编码PU的语法元素;编码完PU的语法元素,跳转到步骤S06;步骤S07、编码TU的语法元素;编码完TU的语法元素,跳转到步骤S08;步骤S08、重复步骤S04

S07,直至编码完一个CTU全部信息,跳转到步骤S09;步骤S09、如果相应CTU不是最后一个CTU,则等待下一个待编码的CTU信息传入,重复步骤S02

S08;否则,跳转到步骤S10;步骤S10、如果相应CTU 是相应Slice的最后一个 CTU,但该Slice不是视频最后一个Slice,则需要将编码器的区间下限信息输出并清空,并计算下一个Slice的cabac_init_flag;完成后,等待下一个待编码的CTU信息传入,返回步骤S02;否则,跳转到步骤S11;步骤S11、若相应CTU是视频最后一个Slice的最后一个CTU,只需要将编码器的区间下限信息输出并清空,至此,一个视频序列的熵编码流程结束。
[0007]在本专利技术一实施例中,所述步骤S01具体包括以下步骤:步骤S011、编码视频的高级SE,包括视频参数集VPS(video parameter set)、序列参数集SPS(sequence parameter set)和图片参数集PPS(picture parameter set);步骤S012、编码Slice的头信息Slice_header;步骤S013、计算3种Slice所对应的初始上下文模型context_init_I、context_init_B、context_init_P;因为第一个Slice的类型一定是I Slice,所以将用于实时更新的上下文模型contex_update初始化为context_init_I。
[0008]在本专利技术一实施例中,所述步骤S02中,若相应CTU不是视频第一个Slice的第一个CTU时,上下文模型初始化具体实现方式为:根据cabac_init_flag和Slice_type选择context_init_I、context_init_B、context_init_P其中的一个初始上下文模型,并直接将它用于初始化contex_update。
[0009]在本专利技术一实施例中,所述步骤S05具体实现方式为:同时开启对CU、PU和TU信息的预处理;其中CU的语法元素信息直接输出,而PU和TU的语法元素信息分别存放在存储器FIFO_PU和FIFO_TU中,由CU的状态机控制输出;输出的SE传给熵编码的顶层cabac_top模块,cabac_top模块将SE再存到FIFO中,等待送入上下文建模模块进行建模,最后进行二进制算术编码BAC(binary arithmetic coding),并输出码流。
[0010]在本专利技术一实施例中,所述步骤S07具体包括以下步骤:步骤S071、据残差系数块的扫描方式和大小,通过查表确定残差系数组CG
(coefficient group)的位置;步骤S072、向顶层传递CG的位置,查询该CG的残差系数;步骤S073、根据CG的残差系数和扫描方式计算最后非零系数的位置;步骤S074、CG编码。
[0011]在本本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于FPGA的HEVC熵编码硬件加速器,其特征在于,该HEVC熵编码硬件加速器执行预头信息编码、预上下文模型初始化CMI、编码单元CU预处理优化策略、残差编码控制架构和部分上下文索引流水计算方案;所述预头信息编码是指编码器启动时,即编码头信息;所述预上下文模型初始化CMI是指编码器启动时,即计算好B 、P、和I Slice的初始上下文模型并存储到对应存储器中;所述编码单元CU预处理优化策略是指并行处理CU、PU和TU层信息,并在CU层增加两个FIFO用于存储PU和TU层产生的语法元素信息;所述残差编码控制架构是指将残差编码控制架构设计成4级流水线;所述部分上下文索引流水计算方案是使用三级流水线计算部分语法元素上下文索引,提高熵编码吞吐量。2.根据权利要求1所述的一种基于FPGA的HEVC熵编码硬件加速器,其特征在于,所述HEVC熵编码硬件加速器具体执行如下步骤:步骤 S01、当检测到视频编码器启动时,就马上启动熵编码的预头信息编码和预上下文模型初始化CMI;完成片头信息编码和CMI后,等待第一个编码树单元CTU信息的到来,跳转步骤S02;步骤S02、若相应CTU是某个片Slice的第一个CTU,但该Slice不是视频的第一个Slice时,则编码器在完成片头信息编码和CMI后,跳转到步骤S03;否则,直接跳转到步骤S03;步骤S03、编码环路滤波LP 模块的语法元素 SE;完成LP 的SE编码后,跳转到步骤S04;步骤S04、根据输入的编码单元CU的划分标志cu_spilt_flag对CTU进行四叉树划分,跳转到步骤S05;步骤S05、编码CU的SE,并同时启动预测单元PU和变换单元TU信息的预处理;编码完CU的SE后,跳转到步骤S06;步骤S06、编码PU的语法元素;编码完PU的语法元素,跳转到步骤S06;步骤S07、编码TU的语法元素;编码完TU的语法元素,跳转到步骤S08;步骤S08、重复步骤S04

S07,直至编码完一个CTU全部信息,跳转到步骤S09;步骤S09、如果相应CTU不是最后一个CTU,则等待下一个待编码的CTU信息传入,重复步骤S02

S08;否则,跳转到步骤S10;步骤S10、如果相应CTU 是相应Slice的最后一个 CTU,但该Slice不是视频最后一个Slice,则需要将编码器的区间下限信息输出并清空,并计算下一个Slice的cabac_init_flag;完成后,等待下一个待编码的CTU信息传入,返回步骤S02;否则,跳转到步骤S11;步骤S11、若相应CTU是视频最后一个Slice的最后一个CTU,只需要将编码器的区间下限信息输出并清空,至此,一个视频序列的熵编码流程结束。3.根据权利要求2所述的一种基于F...

【专利技术属性】
技术研发人员:陈志峰黄萍吴林煌
申请(专利权)人:福州时芯科技有限公司
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1