CN112911314B - 一种熵编码器的编码方法及熵编码器 - Google Patents

一种熵编码器的编码方法及熵编码器 Download PDF

Info

Publication number
CN112911314B
CN112911314B CN202110048145.9A CN202110048145A CN112911314B CN 112911314 B CN112911314 B CN 112911314B CN 202110048145 A CN202110048145 A CN 202110048145A CN 112911314 B CN112911314 B CN 112911314B
Authority
CN
China
Prior art keywords
module
data
state
fifo memory
coding
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.)
Active
Application number
CN202110048145.9A
Other languages
English (en)
Other versions
CN112911314A (zh
Inventor
王世超
文湘鄂
东健慧
张磊
向国庆
宋磊
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing Boya Huishi Intelligent Technology Research Institute Co ltd
Original Assignee
Beijing Boya Huishi Intelligent Technology Research Institute Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Beijing Boya Huishi Intelligent Technology Research Institute Co ltd filed Critical Beijing Boya Huishi Intelligent Technology Research Institute Co ltd
Priority to CN202110048145.9A priority Critical patent/CN112911314B/zh
Publication of CN112911314A publication Critical patent/CN112911314A/zh
Application granted granted Critical
Publication of CN112911314B publication Critical patent/CN112911314B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/184Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being bits, e.g. of the compressed video stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种熵编码器的编码方法及熵编码器,所述方法包括:分别通过第一模块进行第一数据并行处理,第二模块进行第二数据并行处理,以及第三模块进行第三数据并行处理,以及对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据;因此,采用本申请实施例所采用的编码方法所使用熵编码器,能够做到:单个时钟周期内通过组合逻辑实现两个二进制数据的编码,因此,在同等运行频率的情况下,使熵编码器计算二进制数据的速度翻倍,从而提高了二进制算数编码的输出码率;此外,在通过上述熵编码器进行编码的过程中,将熵编码器拆分为4级流水,每一级流水的计算量均减少,进而使得每一级对应的计算时间均减少。

Description

一种熵编码器的编码方法及熵编码器
技术领域
本发明涉及视频编码技术领域,特别涉及一种熵编码器的编码方法及熵编码器。
背景技术
AVS2国家标准是AVS1之后新一代的标准,包括视频、音频以及系统三个部分。AVS2视频编码的目标是超高清晰度视频,支持超高分辨率(4K以上)、高动态范围视频的高效压缩,其中AVS2熵编码器是AVS2视频编码系统中核心编码模块,其主要是在不丢失任何信息的情况下对视频序列进行压缩编码。
在现有技术中,AVS2熵编码器主要包括二值化模块、上下文模型模块、算术编码模块。现有技术,由于在每一级流水单个时钟周期内完成一个二进制数据的编码,因此,导致同等运行频率的情况下,熵编码输出码率偏低。
发明内容
本申请实施例提供了一种熵编码器的编码方法及熵编码器。为了对披露的实施例的一些方面有一个基本的理解,下面给出了简单的概括。该概括部分不是泛泛评述,也不是要确定关键/重要组成元素或描绘这些实施例的保护范围。其唯一目的是用简单的形式呈现一些概念,以此作为后面的详细说明的序言。
第一方面,本申请实施例提供了一种熵编码器的编码方法,
所述方法应用于熵编码器中,所述熵编码器包括依次顺序连接的第一模块、第二模块、第三模块和第四模块,所述方法包括:
进行第一数据并行处理,在每一个与所述第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于所述第一模块和所述第二模块之间的第一FIFO存储器中;
进行第二数据并行处理,在每一个与所述第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于所述第二模块和所述第三模块之间的第二FIFO存储器中;
进行第三数据并行处理,在每一个与所述第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与所述第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与所述第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于所述第三模块和所述第四模块之间的第三FIFO存储器中;
对经由所述第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据。
在一种实施方式中,所述方法还包括:
预先配置存储于所述第一FIFO存储器中的单个二值化数据所具有的数据结构的状态包括第一空状态、二值化规则编码状态和二值化旁路编码状态;
根据所述第一空状态、二值化规则编码状态和二值化旁路编码状态,对存储于所述第一FIFO存储器中的并行且同步处理的两个二值化数据的数据结构的状态进行任意两两依序组合处理,得到存储于所述第一FIFO存储器中的并行数据所具有的状态。
在一种实施方式中,存储于所述第一FIFO存储器中的单个二值化数据的总数为奇数,或者,存储于所述第一FIFO存储器中的单个二值化数据的总数为偶数。
在一种实施方式中,所述方法还包括:
获取存储于所述第一FIFO存储器中第一数据的第一状态和所述第一数据的第二状态;
根据所述第一状态和所述第二状态,判断当前条件是否满足预先配置的由所述第一状态向所述第二状态进行转换的第一预设条件,若判断出当前条件满足所述第一预设条件,则将所述第一数据的状态由所述第一状态转换为所述第二状态。
在一种实施方式中,所述第一预设条件为预先配置的第一预设条件集合中的任意一个预设条件。
在一种实施方式中,所述方法还包括:
预先配置存储于所述第二FIFO存储器中的并行数据所具有的数据结构的状态包括第二空状态、与所述第一概率编码状态中间值对应的第一概率编码状态、与所述第二概率编码状态中间值对应的第二概率编码状态、一个概率事件因满足编码器防下溢计数器计数条件而进入的编码状态;
根据所述第二空状态、所述第一概率编码状态、所述第二概率编码状态、以及一个概率事件因满足编码器防下溢计数器计数条件而进入的编码状态,对存储于所述第二FIFO存储器中的并行数据的数据结构的状态进行任意两两依序组合处理,得到存储于所述第二FIFO存储器中的并行数据所具有的状态。
在一种实施方式中,所述方法还包括:
获取存储于所述第二FIFO存储器中第二数据的第三状态和所述第二数据的第四状态;
根据所述第三状态和所述第四状态,判断当前条件是否满足预先配置的由所述第三状态向所述第四状态进行转换的第二预设条件,若判断出当前条件满足所述第二预设条件,则将所述第二数据的状态由所述第三状态转换为所述第四状态。
在一种实施方式中,所述第二预设条件为预先配置的第二预设条件集合中的任意一个预设条件。
第二方面,本申请实施例提供了一种熵编码器,所述熵编码器包括依次顺序连接的第一模块、第二模块、第三模块和第四模块,所述熵编码器包括:
所述第一模块,用于进行第一数据并行处理,在每一个与所述第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于所述第一模块和所述第二模块之间的第一FIFO存储器中;
所述第二模块,用于进行第二数据并行处理,在每一个与所述第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于所述第二模块和所述第三模块之间的第二FIFO存储器中;
所述第三模块,用于进行第三数据并行处理,在每一个与所述第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与所述第一概率编码值对应的第一编码状态中间值、第二概率编码值、与所述第二概率编码值对应的第二编码状态中间值,得到并输出对应的数据至设置于所述第三模块和所述第四模块之间的第三FIFO存储器中;
所述第四模块,用于对经由所述第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据。
在一种实施方式中,所述第一FIFO存储器、所述第二FIFO存储器和所述第三FIFO存储器均为同步FIFO存储器。
本申请实施例提供的技术方案可以包括以下有益效果:
在本申请实施例中,进行第一数据并行处理,在每一个与第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于第一模块和第二模块之间的第一FIFO存储器中;进行第二数据并行处理,在每一个与第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于第二模块和第三模块之间的第二FIFO存储器中;进行第三数据并行处理,在每一个与第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于第三模块和第四模块之间的第三FIFO存储器中;对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据,因此,采用本申请实施例,本申请实施例所采用的编码方法所使用熵编码器,能够做到:单个时钟周期内通过组合逻辑实现两个二进制数据的编码,因此,在同等运行频率的情况下,使熵编码器计算二进制数据的速度翻倍,从而提高了二进制算数编码的输出码率,尤其对于低性能的可编程器件,效果更佳;此外,在通过上述熵编码器进行编码的过程中,将熵编码器拆分为4级流水,每一级流水的计算量均减少,进而使得每一级对应的计算时间均减少。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本发明。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
图1是本申请实施例提供的一种熵编码器的编码方法的流程示意图;
图2是本申请实施例提供的一种熵编码器的编码方法所采用的基于上下文模型的熵编码原理示意图;
图3是本申请实施例具体应用场景下存储于第一FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图;
图4是本申请实施例具体应用场景下存储于第二FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图;
图5是本申请实施例具体应用场景下存储于第三FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图;
图6是本申请实施例提供的一种熵编码器的结构示意图。
具体实施方式
以下描述和附图充分地示出本发明的具体实施方案,以使本领域的技术人员能够实践它们。
应当明确,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其它实施例,都属于本发明保护的范围。
基于现有的编码方法所存在的熵编码输出码率偏低的问题,为此,本申请提供了熵编码器的编码方法及熵编码器,以解决上述相关技术问题中存在的问题。本申请提供的技术方案中,进行第一并行处理,在每一个与第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于第一模块和第二模块之间的第一FIFO存储器中;进行第二并行处理,在每一个与第二模块对应的第二时钟周期内并行且同步处理两个二值化数据,得到并输出对应的数据至设置于第二模块和第三模块之间的第二FIFO存储器中;进行第三并行处理,在每一个与第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于第三模块和第四模块之间的第三FIFO存储器中;对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据,因此,采用本申请实施例所采用的编码方法所使用熵编码器,能够做到:单个时钟周期内通过组合逻辑实现两个二进制数据的编码,因此,在同等运行频率的情况下,使熵编码器计算二进制数据的速度翻倍,从而提高了二进制算数编码的输出码率;此外,在通过上述熵编码器进行编码的过程中,将熵编码器拆分为4级流水,每一级流水的计算量均减少,进而使得每一级对应的计算时间均减少,下面采用示例性的实施例进行详细说明。
下面将结合图1-图5,对本申请实施例提供的一种熵编码器的编码方法进行详细介绍。该熵编码器的编码方法可依赖于计算机程序实现,可运行于熵编码器上。
如图1所示,是本申请实施例提供的一种熵编码器的编码方法的流程示意图,;如图1所示,本申请实施例的熵编码器的编码方法应用于熵编码器中,熵编码器包括依次顺序连接的第一模块、第二模块、第三模块和第四模块,所述方法包括以下步骤:
S101,进行第一数据并行处理,在每一个与第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于第一模块和第二模块之间的第一FIFO存储器中。
在本申请实施例中,第一FIFO存储器为同步FIFO存储器。
如图2所示,是本申请实施例提供的一种熵编码器的编码方法所采用的基于上下文模型的熵编码原理示意图。
针对图2做如下说明:
语法元素的二值化:所谓二值化是将非二进制的语法元素映射成相应的二进制字符串,若输入的元素为二进制语法元素,则省略二值化的过程。
上下文模型的初始化与更新:为语法元素选择合适的上下文模型对熵编码模块来说至关重要,每个语法元素的条件概率都被唯一的上下文模型所标识,每个概率模型之间相互独立,但同一概率模型之间的语法元素概率具有相关性。每一个概率模型都对应着两个变量:最大概率符号MPS和概率模型索引。
算术编码:算术编码通过概率模型的参数对每一个二值化后的bin进行编码。主要由常规编码和旁路编码构成,常规编码根据输入的二值化后的bin与上下文模型中的参数进行编码,在编码后根据二进制化后的值反馈给概率模型,完成对上下文模型的更新;旁路编码主要面向近似均匀分布的语法元素使用,这些语法元素不需要上下文模型,直接对二值化后的bin进行编码,一般用于标志位的熵编码。
在一种可能的实现方式中,本申请实施例提供的一种熵编码器的编码方法还包括以下步骤:
预先配置存储于第一FIFO存储器中的单个二值化数据所具有的数据结构的状态包括第一空状态、二值化规则编码状态和二值化旁路编码状态;
根据第一空状态、二值化规则编码状态和二值化旁路编码状态,对存储于第一FIFO存储器中的并行且同步处理的两个二值化数据的数据结构的状态进行任意两两依序组合处理,得到存储于第一FIFO存储器中的并行数据所具有的状态。
在本申请实施例中,存储于第一FIFO存储器中的单个二值化数据的总数为奇数,或者,存储于第一FIFO存储器中的单个二值化数据的总数为偶数。
具体地,当存储于第一FIFO存储器中的单个二值化数据的总数为奇数时,则采用如下两两并行排列方式布局,具体如下所述:
具体地,当存储于第一FIFO存储器中的单个二值化数据的总数为偶数时,则采用如下两两并行排列方式布局,具体如下所述:
在一种可能的实现方式中,本申请实施例提供的一种熵编码器的编码方法还包括以下步骤:
获取存储于第一FIFO存储器中第一数据的第一状态和第一数据的第二状态;
根据第一状态和第二状态,判断当前条件是否满足预先配置的由第一状态向第二状态进行转换的第一预设条件,若判断出当前条件满足第一预设条件,则将第一数据的状态由第一状态转换为第二状态。
在本申请实施例中,第一预设条件为预先配置的第一预设条件集合中的任意一个预设条件。在此对第一预设条件集合中的任意一个预设条件不做具体限制,只要使得存储于第一FIFO存储器中第一数据能够在不同状态之间进行转换即可。
如图3所示,是本申请实施例具体应用场景下存储于第一FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图。
针对图3做如下说明:
state1:空状态;
state2:二值化规则编码状态+空;
state3:二值化旁路编码状态+空;
state22:二值化规则编码+二值化规则编码状态;
state33:二值化旁路编码+二值化旁路编码状态;
state23:二值化规则编码+二值化旁路编码状态;
state32:二值化旁路编码+二值化规则编码状态。
状态22、状态33、状态23、状态32均为组合逻辑实现1个时钟周期处理2个二进制数据;
由于单端口ram只能实现1个时钟周期更新一个上下文模型,所以当前方案使用寄存器实现上下文模型的更新;使用寄存器,可以显示单个时钟周期同时更新多个上下文模型。
针对如图3所示的在上述数据所处的不同状态之间进行转换所需的各个条件做如下说明:
条件1:Event_H、Event_L为空数据;
条件2:Event_H为空;Event_L为二值化规则编码标志数据;
条件3:Event_H为空;Event_L为二值化旁路编码标志数据;
条件22:Event_H/Event_L均为二值化规则编码标志数据;
条件33:Event_H/Event_L均为二值化旁路编码标志数据;
条件23:Event_H为二值化规则编码标志数据;Event_L为二值化旁路编码标志数据;
条件32:Event_H为二值化旁路编码标志数据;Event_L为二值化规则编码标志数据。
针对第一预设条件可以参见如图3所示的各个条件,图3的各个条件仅仅是示例,在此不再赘述。
S102,进行第二数据并行处理,在每一个与第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于第二模块和第三模块之间的第二FIFO存储器中。
在本申请实施例中,第二FIFO存储器为同步FIFO存储器。
在本申请实施例中,存储于第二FIFO存储器中的单个数据的总数为奇数,或者,存储于第二FIFO存储器中的单个数据的总数为偶数。
具体地,当存储于第二FIFO存储器中的单个数据的总数为奇数时,则采用如下两两并行排列方式布局,具体如下所述:
具体地,当存储于第二FIFO存储器中的单个数据的总数为偶数时,则采用如下两两并行排列方式布局,具体如下所述:
在一种可能的实现方式中,本申请实施例提供的一种熵编码器的编码方法还包括以下步骤:
预先配置存储于第二FIFO存储器中的并行数据所具有的数据结构的状态包括第二空状态、与第一概率编码状态中间值对应的第一概率编码状态、与第二概率编码状态中间值对应的第二概率编码状态、一个概率事件因满足编码器防下溢计数器计数条件而进入的编码状态;
根据第二空状态、第一概率编码状态、第二概率编码状态、以及一个概率事件因满足编码器防下溢计数器计数条件而进入的编码状态,对存储于第二FIFO存储器中的并行数据的数据结构的状态进行任意两两依序组合处理,得到存储于第二FIFO存储器中的并行数据所具有的状态。
如图4所示,是本申请实施例具体应用场景下存储于第二FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图。
针对图4做如下说明:
State1:空状态;
State2:高概率编码状态;
State3:低概率编码状态;
State4:一个概率事件满足编码器防下溢计数器计数条件,进入的编码状态;
State5:编码器结束填充状态;
State22:高概率编码+高概率编码状态;
State33:低概率编码+低概率编码状态;
State23:高概率编码+低概率编码状态;
State32:低概率编码+高概率编码状态;
State41:两个概率事件均满足编码器防下溢计数器计数条件,进入的编码状态。
状态22、状态33、状态23、状态32在不触发状态4和状态41的条件下通过组合逻辑实现1个时钟周期处理2个二进制数据;
状态41、状态4通过组合逻辑实现1个时钟周期对编码器下溢计数器进行两次计算操作;两个概率事件均满足编码器防下溢计数器计数条件,先进入的状态41,对第一个概率事件进行处理;然后进入状态4,对剩余一个概率事件进行处理;两个概率事件其中一个满足编码器防下溢计数器计数条件,进入状态4,对其进行处理。
在一种可能的实现方式中,本申请实施例提供的一种熵编码器的编码方法还包括以下步骤:
获取存储于第二FIFO存储器中第二数据的第三状态和第二数据的第四状态;
根据第三状态和第四状态,判断当前条件是否满足预先配置的由第三状态向第四状态进行转换的第二预设条件,若判断出当前条件满足第二预设条件,则将第二数据的状态由第三状态转换为第四状态。
在本申请实施例中,第二预设条件为预先配置的第二预设条件集合中的任意一个预设条件。在此对第二预设条件集合中的任意一个预设条件不做具体限制,只要使得存储于第二FIFO存储器中第二数据能够在不同状态之间进行转换即可。
如图4所示,是本申请实施例具体应用场景下存储于第二FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图。
针对如图4所示的在上述数据所处的不同状态之间进行转换所需的各个条件做如下说明:
条件1:Event_H、Event_L为空数据;
条件2:Event_H为空数据、Event_L为高概率编码标志数据;
条件3:Event_H为空数据、Event_L为低概率编码标志数据;
条件4:两个概率事件只有一个满足编码器防下溢计数器计数条件;
条件5:Event_H为空数据、Event_L为编码结束标志数据;
条件22:Event_H为高概率编码标志数据、Event_L为高概率编码标志数据;
条件33:Event_H为低概率编码标志数据、Event_L为低概率编码标志数据;
条件23:Event_H为高概率编码标志数据、Event_L为低概率编码标志数据;
条件32:Event_H为低概率编码标志数据、Event_L为高概率编码标志数据;
条件41:两个概率事件均满足编码器防下溢计数器计数条件。
S103,进行第三数据并行处理,在每一个与第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于第三模块和第四模块之间的第三FIFO存储器中;
S104,对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据。
在本申请实施例中,第二FIFO存储器为同步FIFO存储器。
在本申请实施例中,存储于第三FIFO存储器中的单个数据的总数为奇数,或者,存储于第三FIFO存储器中的单个数据的总数为偶数。
具体地,当存储于第三FIFO存储器中的单个数据的总数为奇数时,则采用如下两两并行排列方式布局,具体如下所述:
具体地,当存储于第三FIFO存储器中的单个数据的总数为偶数时,则采用如下两两并行排列方式布局,具体如下所述:
如图5所示,是本申请实施例具体应用场景下存储于第三FIFO存储器中的数据所具有的不同数据状态以及不同数据状态之间相互转换的示意图。
针对图5做如下说明:
State1:空状态;
State2:编码比特可以一次性输出;
State3:编码比特需要多次输出;
State4:编码器结束填充输出状态。
需要说明的是,如图5所示,存储于第三FIFO存储器中数据在不同状态之间进行转换时需要一定的预设条件,在此对各个预设条件在图5中并没有示出。具体预设条件可以参见如图3以及图4所列举的众多预设条件中的任意一个预设条件。在实际应用场景中,可以针对不同应用场景,配置不同的预设条件,以保证输入或存储于第三FIFO存储器中的数据能够在不同如图5所示的状态之间进行转换,在此不再赘述。
第四模块用于完成对第三FIFO存储器中的编码数值及防下溢计数器进行分析,对编码数据进行并转串拼接,可以拼接输出为8bit/16bit/32bit(根据实际情况进行选择)。在上述State2内部对存储于第三FIFO存储器中的数据进行分析时,使用组合逻辑对两组数据进行并行分析。
第四模块对输入至第三FIFO存储器中的数据进行拼接,如果一次性可以拼接输出,则State2直接拼接并输出编码数据,然后对下一个输入至第三FIFO存储器中的数据进行判断;如果一次性不可以拼接输出,则State2输出一个已经拼接好的编码数据,然后进入State3,对未进行拼接的数据进行拼接,直至数据拼接输出完毕为止,然后对下一个输入至第三FIFO中的数据进行判断。
需要说明的是,虽然本申请实施例提供的熵编码器的编码方法,上述描述为硬件实现结构中1个时钟周期通过组合逻辑实现2个二进制数的编码。在实际应用场景中,也可以改为1个时钟周期通过组合逻辑实现n个二进制数的编码,其中,n为大于2的正整数。
若n为大于2的正整数时,本申请实施例提供的熵编码器的编码方法同样适用,可以采用类似的方法进行编码,从而有效地提高编码效率。由于当n为大于2的正整数时,编码方法类似,可以参见本申请实施例中n为2的编码方法,在此不再赘述。
在本申请实施例中,进行第一数据并行处理,在每一个与第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于第一模块和第二模块之间的第一FIFO存储器中;进行第二数据并行处理,在每一个与第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于第二模块和第三模块之间的第二FIFO存储器中;进行第三数据并行处理,在每一个与第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于第三模块和第四模块之间的第三FIFO存储器中;对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据,因此,采用本申请实施例,本申请实施例所采用的编码方法所使用熵编码器,能够做到:单个时钟周期内通过组合逻辑实现两个二进制数据的编码,因此,在同等运行频率的情况下,使熵编码器计算二进制数据的速度翻倍,从而提高了二进制算数编码的输出码率,尤其对于低性能的可编程器件,效果更佳;此外,在通过上述熵编码器进行编码的过程中,将熵编码器拆分为4级流水,每一级流水的计算量均减少,进而使得每一级对应的计算时间均减少。
下述为本发明熵编码器实施例,可以用于执行本发明熵编码器的编码方法实施例。对于本发明熵编码器实施例中未披露的细节,请参照本发明熵编码器的编码方法实施例。
请参见图6,其示出了本发明一个示例性实施例提供的熵编码器的结构示意图。熵编码器包括依次顺序连接的第一模块、第二模块、第三模块和第四模块,熵编码器包括:
第一模块,用于进行第一数据并行处理,在每一个与第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于第一模块和第二模块之间的第一FIFO存储器中;
第二模块,用于进行第二数据并行处理,在每一个与第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于第二模块和第三模块之间的第二FIFO存储器中;
第三模块,用于进行第三数据并行处理,在每一个与第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与第一概率编码值对应的第一编码状态中间值、第二概率编码值、与第二概率编码值对应的第二编码状态中间值,得到并输出对应的数据至设置于第三模块和第四模块之间的第三FIFO存储器中;
第四模块,用于对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据。
如图6所示,第一模块用于并行处理语法元素,同时将连续的2个二值化数据及对应的上下文索引并行放入第一FIFO存储器中;第二模块用于单个时钟周期通过组合逻辑同时处理2个二值化数据;第三模块用于单个时钟周期通过组合逻辑同时处理2个高低概率编码值及对应的编码状态中间值;第四模块用于完成对第三FIFO存储器中的编码数值及防下溢计数器进行分析,对编码数据进行并转串拼接,可以拼接输出为8bit/16bit/32bit(根据实际情况进行选择)。
在本申请实施例中,第一FIFO存储器、第二FIFO存储器和第三FIFO存储器均为同步FIFO存储器。
需要说明的是,上述实施例提供的熵编码器在执行熵编码器的编码方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的熵编码器与熵编码器的编码方法实施例属于同一构思,其体现实现过程熵编码器的编码方法实施例,这里不再赘述。
在本申请实施例中,第一模块用于进行第一数据并行处理,在每一个与第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于第一模块和第二模块之间的第一FIFO存储器中;第二模块用于进行第二数据并行处理,在每一个与第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于第二模块和第三模块之间的第二FIFO存储器中;第三模块用于进行第三数据并行处理,在每一个与第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于第三模块和第四模块之间的第三FIFO存储器中;以及第四模块用于对经由第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据,因此,采用本申请实施例,本申请实施例所采用的编码方法所使用熵编码器,能够做到:单个时钟周期内通过组合逻辑实现两个二进制数据的编码,因此,在同等运行频率的情况下,使熵编码器计算二进制数据的速度翻倍,从而提高了二进制算数编码的输出码率,尤其对于低性能的可编程器件,效果更佳;此外,在通过上述熵编码器进行编码的过程中,将熵编码器拆分为4级流水,每一级流水的计算量均减少,进而使得每一级对应的计算时间均减少。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,前述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)等非易失性存储介质,或随机存储记忆体(Random Access Memory,RAM)等。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种熵编码器的编码方法,其特征在于,所述方法应用于熵编码器中,所述熵编码器包括依次顺序连接的第一模块、第二模块、第三模块和第四模块,所述方法包括:
进行第一数据并行处理,在每一个与所述第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于所述第一模块和所述第二模块之间的第一FIFO存储器中;
进行第二数据并行处理,在每一个与所述第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于所述第二模块和所述第三模块之间的第二FIFO存储器中;
进行第三数据并行处理,在每一个与所述第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与所述第一概率编码值对应的第一概率编码状态中间值、第二概率编码值、与所述第二概率编码值对应的第二概率编码状态中间值,得到并输出对应的数据至设置于所述第三模块和所述第四模块之间的第三FIFO存储器中;
对经由所述第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先配置存储于所述第一FIFO存储器中的单个二值化数据所具有的数据结构的状态包括第一空状态、二值化规则编码状态和二值化旁路编码状态;
根据所述第一空状态、二值化规则编码状态和二值化旁路编码状态,对存储于所述第一FIFO存储器中的并行且同步处理的两个二值化数据的数据结构的状态进行任意两两依序组合处理,得到存储于所述第一FIFO存储器中的并行数据所具有的状态。
3.根据权利要求2所述的方法,其特征在于,
存储于所述第一FIFO存储器中的单个二值化数据的总数为奇数,或者,
存储于所述第一FIFO存储器中的单个二值化数据的总数为偶数。
4.根据权利要求2所述的方法,其特征在于,所述方法还包括:
获取存储于所述第一FIFO存储器中第一数据的第一状态和所述第一数据的第二状态;
根据所述第一状态和所述第二状态,判断当前条件是否满足预先配置的由所述第一状态向所述第二状态进行转换的第一预设条件,若判断出当前条件满足所述第一预设条件,则将所述第一数据的状态由所述第一状态转换为所述第二状态。
5.根据权利要求4所述的方法,其特征在于,
所述第一预设条件为预先配置的第一预设条件集合中的任意一个预设条件。
6.根据权利要求1所述的方法,其特征在于,所述方法还包括:
预先配置存储于所述第二FIFO存储器中的并行数据所具有的数据结构的状态包括第二空状态、与所述第一概率编码状态中间值对应的第一概率编码状态、与所述第二概率编码状态中间值对应的第二概率编码状态、一个概率事件因满足编码器防下溢计数器计数条件而进入的编码状态;
根据所述第二空状态、所述第一概率编码状态、所述第二概率编码状态、以及一个概率事件因满足编码器防下溢计数器计数条件而进入的编码状态,对存储于所述第二FIFO存储器中的并行数据的数据结构的状态进行任意两两依序组合处理,得到存储于所述第二FIFO存储器中的并行数据所具有的状态。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
获取存储于所述第二FIFO存储器中第二数据的第三状态和所述第二数据的第四状态;
根据所述第三状态和所述第四状态,判断当前条件是否满足预先配置的由所述第三状态向所述第四状态进行转换的第二预设条件,若判断出当前条件满足所述第二预设条件,则将所述第二数据的状态由所述第三状态转换为所述第四状态。
8.根据权利要求7所述的方法,其特征在于,
所述第二预设条件为预先配置的第二预设条件集合中的任意一个预设条件。
9.一种熵编码器,其特征在于,所述熵编码器包括依次顺序连接的第一模块、第二模块、第三模块和第四模块,所述熵编码器包括:
所述第一模块,用于进行第一数据并行处理,在每一个与所述第一模块对应的第一时钟周期内生成连续的两个二值化数据及对应的上下文索引信息,以及将生成的连续的两个二值化数据及对应的上下文索引信息并行放入设置于所述第一模块和所述第二模块之间的第一FIFO存储器中;
所述第二模块,用于进行第二数据并行处理,在每一个与所述第二模块对应的第二时钟周期内以组合逻辑的处理方式进行两个二进制数据的编码,得到并输出对应的数据值至设置于所述第二模块和所述第三模块之间的第二FIFO存储器中;
所述第三模块,用于进行第三数据并行处理,在每一个与所述第三模块对应的第三时钟周期内并行且同步处理第一概率编码值、与所述第一概率编码值对应的第一编码状态中间值、第二概率编码值、与所述第二概率编码值对应的第二编码状态中间值,得到并输出对应的数据至设置于所述第三模块和所述第四模块之间的第三FIFO存储器中;
所述第四模块,用于对经由所述第三FIFO存储器输出的编码数据进行拼接处理,输出具有预设大小的拼接后编码数据。
10.根据权利要求9所述的熵编码器,其特征在于,
所述第一FIFO存储器、所述第二FIFO存储器和所述第三FIFO存储器均为同步FIFO存储器。
CN202110048145.9A 2021-01-14 2021-01-14 一种熵编码器的编码方法及熵编码器 Active CN112911314B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110048145.9A CN112911314B (zh) 2021-01-14 2021-01-14 一种熵编码器的编码方法及熵编码器

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110048145.9A CN112911314B (zh) 2021-01-14 2021-01-14 一种熵编码器的编码方法及熵编码器

Publications (2)

Publication Number Publication Date
CN112911314A CN112911314A (zh) 2021-06-04
CN112911314B true CN112911314B (zh) 2023-08-18

Family

ID=76114777

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110048145.9A Active CN112911314B (zh) 2021-01-14 2021-01-14 一种熵编码器的编码方法及熵编码器

Country Status (1)

Country Link
CN (1) CN112911314B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104581154A (zh) * 2014-12-31 2015-04-29 湖南国科微电子有限公司 一种熵编码方法和熵编码器电路
CN109922341A (zh) * 2017-12-13 2019-06-21 博雅视云(北京)科技有限公司 Avs2高级熵编码器实现方法及装置
CN110754086A (zh) * 2017-06-13 2020-02-04 高通股份有限公司 运动向量预测
CN111787325A (zh) * 2020-07-03 2020-10-16 北京博雅慧视智能技术研究院有限公司 一种熵编码器及其编码方法

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2530312B (en) * 2014-09-19 2016-09-14 Imagination Tech Ltd Data compression

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN104581154A (zh) * 2014-12-31 2015-04-29 湖南国科微电子有限公司 一种熵编码方法和熵编码器电路
CN110754086A (zh) * 2017-06-13 2020-02-04 高通股份有限公司 运动向量预测
CN109922341A (zh) * 2017-12-13 2019-06-21 博雅视云(北京)科技有限公司 Avs2高级熵编码器实现方法及装置
CN111787325A (zh) * 2020-07-03 2020-10-16 北京博雅慧视智能技术研究院有限公司 一种熵编码器及其编码方法

Also Published As

Publication number Publication date
CN112911314A (zh) 2021-06-04

Similar Documents

Publication Publication Date Title
JP3017379B2 (ja) 符号化方法、符号化装置、復号方法、復号器、データ圧縮装置及び遷移マシン生成方法
CN100553152C (zh) 基于cabac的编码方法和设备及解码方法和设备
CN107294539B (zh) 一种准动态霍夫曼硬件编码器及编码方法
CN103067022A (zh) 一种整型数据无损压缩方法、解压缩方法及装置
CN109587483B (zh) 码流提取模块
Lee et al. $2^{n} $ pattern run-length for test data compression
Ledwon et al. High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis
CN104038233B (zh) 基于相邻位异或运算的测试数据压缩与解压缩方法
CN103746706B (zh) 基于双游程交替编码的测试数据压缩与解压缩方法
CN104038232A (zh) 基于二次异或运算的测试数据压缩与解压缩方法
WO2023202149A1 (zh) 有限状态熵编码的状态选择方法、系统、存储介质及设备
CN111008691B (zh) 一种权值和激活值都二值化的卷积神经网络加速器架构
CN111787325B (zh) 一种熵编码器及其编码方法
CN112911314B (zh) 一种熵编码器的编码方法及熵编码器
Yu et al. Test data compression based on variable prefix dual-run-length code
US9455742B2 (en) Compression ratio for a compression engine
CN103746704A (zh) 基于双游程交替编码的芯片测试数据传输方法
CN103973310A (zh) 一种基于异或逻辑运算折半划分的测试数据压缩方法
US8018359B2 (en) Conversion of bit lengths into codes
CN107277553B (zh) 一种二元算术编码器
Bian et al. A low-latency SC polar decoder based on the sequential logic optimization
CN114610266A (zh) 补偿数据处理方法、装置、设备及介质
US20130222159A1 (en) Entropy method of binary-ternary lossless data coding
Hameed et al. A new lossless method of Huffman coding for text data compression and decompression process with FPGA implementation
CN109274460A (zh) 一种多比特并行结构串行抵消译码方法和装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant