CN107343201B - Cabac编码方法和系统 - Google Patents

Cabac编码方法和系统 Download PDF

Info

Publication number
CN107343201B
CN107343201B CN201710474698.4A CN201710474698A CN107343201B CN 107343201 B CN107343201 B CN 107343201B CN 201710474698 A CN201710474698 A CN 201710474698A CN 107343201 B CN107343201 B CN 107343201B
Authority
CN
China
Prior art keywords
bit
value
normalization
code area
span
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
CN201710474698.4A
Other languages
English (en)
Other versions
CN107343201A (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.)
Zhuhai Jieli Technology Co Ltd
Original Assignee
Zhuhai Jieli Technology 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 Zhuhai Jieli Technology Co Ltd filed Critical Zhuhai Jieli Technology Co Ltd
Priority to CN201710474698.4A priority Critical patent/CN107343201B/zh
Publication of CN107343201A publication Critical patent/CN107343201A/zh
Application granted granted Critical
Publication of CN107343201B publication Critical patent/CN107343201B/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • 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

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

本发明涉及一种CABAC编码方法和系统,同步读取待编码的第一比特和第二比特,在对第一比特的编码处理过程中,将第一比特的归一化后编码区间下限值及时应用到第二比特的编码处理过程中,因此,在编码流程的一个周期内可以完成对两个比特的编码。同时,在对第二比特的编码处理过程中,第二比特的归一化后编码区间下限值也可以快速应用至后续比特的编码,编码区间下限值的快速更新可以使得归一化过程中每一次迭代的信息快速得出,可以在一个周期内整合每一次迭代产生的比特得到输出位流,避免了传统归一化方案中因比特间编码的依赖性以及多周期迭代带来的流水线停滞问题,从而提高CABAC编码效率。

Description

CABAC编码方法和系统
技术领域
本发明涉及视频编码技术领域,特别是涉及一种CABAC编码方法和系统。
背景技术
H.264是由ISO(International Organization for Standardization,国际标准化组织)/IEC(International Electrotechnical Commission,国际电工委员会)和ITU-T(ITU Telecommunication Standardization Sector,国际电信联盟电信标准分局)两大国际标准组织联合制定的视频编码标准。与以往的视频标准相比,它具有更高的压缩比,更好的网络亲和性和信道适应性,同时具有较强的抗误码能力,能够满足非常广泛的业务需求。因此,H.264标准在视频芯片的开发中,得到了广泛应用。
H.264/AVC(Advanced Video Coding,高级视频编码)提出了两种熵编码方式—CAVLC(Context Adaptive VariableLength Coding,基于上下文的可变长编码)和CABAC(ContextAdaptive Binary Arithmatic Coding,基于上下文的自适应二进制算术编码)。其中,CABAC能够充分考虑和利用视频流的上下文信息,并且能够自适应视频流的统计特性。
CABAC的整个编码流程如下:首先,对非二值特性的语法元素进行二值化处理,对具有二值特性的语法元素则直接输出到编码处理单元;然后,根据各个语法元素二值化比特流中每一比特的概率分配特点,进行自适应二进制算术编码。
目前,CABAC的编码是在一个周期中对二进制比特流的一个比特进行编码,在一个比特编码结束以后,再对下一比特进行编码,因为后续比特的编码要依赖当前比特编码更新后的信息,导致CABAC编码效率较低。
发明内容
基于此,有必要针对传统的CABAC编码方式容易造成CABAC编码效率较低的问题,提供一种CABAC编码方法和系统。
一种CABAC编码方法,包括以下步骤:
同步读取待编码的第一比特和第二比特;
获取第一比特的归一化前编码区间跨度值,对第一比特的归一化前编码区间跨度值进行归一化处理,获得第一比特的归一化后编码区间跨度值;
获取第二比特的归一化前编码区间跨度值,对第二比特的归一化前编码区间跨度值进行归一化处理,获得第二比特的归一化后编码区间跨度值;
获取第一比特的编码前编码区间下限值,根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化后编码区间下限值;
根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化后编码区间下限值;
利用第一比特的归一化后编码区间下限值和第一比特的归一化后编码区间跨度值对第一比特进行归一化操作,利用第二比特的归一化后编码区间下限值和第二比特的归一化后编码区间跨度值对第二比特进行归一化操作,获得第一比特和第二比特的编码码流。
一种CABAC编码系统,包括:
同步读取单元,用于同步读取待编码的第一比特和第二比特;
跨度值获取单元,用于获取第一比特的归一化前编码区间跨度值,对第一比特的归一化前编码区间跨度值进行归一化处理,获得第一比特的归一化后编码区间跨度值;获取第二比特的归一化前编码区间跨度值,对第二比特的归一化前编码区间跨度值进行归一化处理,获得第二比特的归一化后编码区间跨度值;
下限值获取单元,用于获取第一比特的编码前编码区间下限值,根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化后编码区间下限值;根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化后编码区间下限值;
归一化编码单元,用于利用第一比特的归一化后编码区间下限值和第一比特的归一化后编码区间跨度值对第一比特进行归一化操作,利用第二比特的归一化后编码区间下限值和第二比特的归一化后编码区间跨度值对第二比特进行归一化操作,获得第一比特和第二比特的编码码流。
一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述CABAC编码方法的步骤。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述CABAC编码方法的步骤。
根据上述本发明的CABAC编码方法和系统,其是同步读取待编码的第一比特和第二比特,在对第一比特的编码处理过程中,将第一比特的归一化后编码区间下限值及时应用到第二比特的编码处理过程中,对编码区间跨度值和编码区间下限值进行快速更新,因此,在编码流程的一个周期内可以完成对两个比特的编码。同时,在对第二比特的编码处理过程中,第二比特的归一化后编码区间下限值也可以快速应用至后续比特的编码,利用此种方式进行编码,可以避免传统技术中因比特间编码的依赖性而导致的流水线停滞问题。在编码过程中,编码区间下限值的快速更新可以使得归一化过程中每一次迭代的信息快速得出,可以在一个周期内整合每一次迭代产生的比特得到输出位流,避免了传统归一化方案中多周期迭代带来的流水线停滞问题,从而提高CABAC编码效率。
附图说明
图1是其中一个实施例中CABAC编码方法的流程示意图;
图2是其中一个实施例中CABAC编码系统的结构示意图;
图3是其中一个具体实施例中CABAC的整个编码流程示意图;
图4是其中一个具体实施例中CABAC的常规编码流程示意图;
图5是其中一个具体实施例中CABAC编码归一化流程示意图;
图6是其中一个具体实施例中输出位流过程PutBit()的流程示意图;
图7是其中一个具体实施例中CABAC多bin编码的加速装置的结构示意图;
图8是其中一个具体实施例中位移判断电路的结构示意图;
图9是其中一个具体实施例中编码区间下限值更新电路的结构示意图。
具体实施方式
为使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步的详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不限定本发明的保护范围。
参见图1所示,为本发明一个实施例的CABAC编码方法的流程示意图。该实施例中的CABAC编码方法包括以下步骤:
步骤S101:同步读取待编码的第一比特和第二比特;
步骤S102:获取第一比特的归一化前编码区间跨度值,对第一比特的归一化前编码区间跨度值进行归一化处理,获得第一比特的归一化后编码区间跨度值;
步骤S103:获取第二比特的归一化前编码区间跨度值,对第二比特的归一化前编码区间跨度值进行归一化处理,获得第二比特的归一化后编码区间跨度值;
步骤S104:获取第一比特的编码前编码区间下限值,根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化后编码区间下限值;
在本步骤中,根据第一比特本身的特征可以获取第一比特的编码前编码区间下限值,编码过程中需要使用第一比特的归一化后编码区间下限值,第一比特的归一化后编码区间下限值与第一比特的编码前编码区间下限值不同,还与第一比特的归一化前编码区间跨度值、符号概率特性有关;
步骤S105:根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化后编码区间下限值;
在本步骤中,第二比特的归一化后编码区间下限值依赖于第一比特的归一化后编码区间下限值,还与第二比特的归一化前编码区间跨度值、符号概率特性有关;
步骤S106:利用第一比特的归一化后编码区间下限值和第一比特的归一化后编码区间跨度值对第一比特进行归一化操作,利用第二比特的归一化后编码区间下限值和第二比特的归一化后编码区间跨度值对第二比特进行归一化操作,获得第一比特和第二比特的编码码流。
在本步骤中,第一比特和第二比特的编码码流可以同步获取。
在本实施例中,同步读取待编码的第一比特和第二比特,在对第一比特的编码处理过程中,将第一比特的归一化后编码区间下限值及时应用到第二比特的编码处理过程中,对编码区间跨度值和编码区间下限值进行快速更新,因此,在编码流程的一个周期内可以完成对两个比特的编码。同时,在对第二比特的编码处理过程中,第二比特的归一化后编码区间下限值也可以快速应用至后续比特的编码,利用此种方式进行编码,可以避免传统技术中因比特间编码的依赖性而导致的流水线停滞问题。在编码过程中,编码区间下限值的快速更新可以使得归一化过程中每一次迭代的信息快速得出,可以在一个周期内整合每一次迭代产生的比特得到输出位流,避免了传统归一化方案中多周期迭代带来的流水线停滞问题,从而提高CABAC编码效率。
在其中一个实施例中,获取第一比特的归一化前编码区间跨度值的步骤包括以下步骤:
获取第一比特的编码前编码区间跨度值和第一比特的概率状态值,根据第一比特的编码前编码区间跨度值和第一比特的概率状态值生成第一比特的归一化前编码区间跨度值。
在本实施例中,第一比特的编码前编码区间跨度值是在编码之前的第一比特本身所在的区间的跨度值,是区间中最大值与最小值的差值,第一比特的概率状态值表示的是第一比特自身的概率,将第一比特的编码前编码区间跨度值与第一比特的概率状态值相结合,可以获得更准确的归一化前编码区间跨度值。
在其中一个实施例中,获取第二比特的归一化前编码区间跨度值的步骤包括以下步骤:
获取第二比特的概率状态值,根据第二比特的概率状态值和第一比特的归一化后编码区间跨度值生成第二比特的归一化前编码区间跨度值。
在本实施例中,第二比特的归一化前编码区间跨度值是在第一比特的归一化后编码区间跨度值的基础上获取的,第一比特的编码处理过程中产生的第一比特的归一化后编码区间跨度值可以及时应用到第二比特的编码处理过程中,使第一比特的编码处理过程与第二比特的编码处理过程能更好地同步,以便在同一周期内完成对两个比特的编码。
可选的,对编码区间跨度值的处理可以通过编码区间更新引擎执行,编码区间更新引擎可以对第一比特的编码前编码区间跨度值进行处理,得到第一比特的归一化后编码区间跨度值,对第一比特的归一化后编码区间跨度值进行处理,得到第二比特的归一化前编码区间跨度值。
在其中一个实施例中,获取第一比特的概率状态值和第二比特的概率状态值的步骤包括以下步骤:
获取第一比特的上下文索引值和第二比特的上下文索引值,分别根据第一比特的上下文索引值和第二比特的上下文索引值在预设概率状态表中查询对应的概率状态值,获得第一比特的概率状态值和第二比特的概率状态值;
每获得一个概率状态值,根据该概率状态值和对应的上下文索引值对预设概率状态表进行更新。
在本实施例中,根据比特本身可以获取其上下文索引值,利用上下文索引值在预设概率状态表中进行查询,得到相应的概率状态值,并将概率状态值用于编码区间跨度值的计算,通过查表的方式可以快速地获取概率状态值,简化编码区间跨度值的计算过程。在查表过程中,由于每一个比特与其上一个比特密切相关,上下文索引值的改变会使对应的概率状态值发生变化,因此在每获得一个概率状态值后,需要根据该概率状态值和对应的上下文索引值对预设概率状态表进行更新,以便获得准确的下一比特的概率状态值。
可选的,当第二比特的上下文索引值与第一比特的上下文索引值相同时,第二比特的概率状态值与第一比特的概率状态值相同,由于前后两个比特的上下文索引值相同,因此概率状态表不会发生变化,此时无需进行查表,第二比特的概率状态值与第一比特的概率状态值相同。
可选的,对上下文索引值的处理可以通过上下文更新引擎执行,上下文更新引擎可以对第一比特和第二比特的上下文索引值进行查表检索,得到第一比特和第二比特的概率状态值。
在其中一个实施例中,根据第一比特的编码前编码区间跨度值和第一比特的概率状态值生成第一比特的归一化前编码区间跨度值的步骤包括以下步骤:
根据所述第一比特的编码前编码区间跨度值、所述第一比特的概率状态值以及所述第一比特的符号特性,获取所述第一比特的归一化前编码区间跨度值;
根据第二比特的概率状态值和第一比特的归一化后编码区间跨度值生成第二比特的归一化前编码区间跨度值的步骤包括以下步骤:
根据第一比特的归一化后编码区间跨度值、第二比特的概率状态值以及第二比特的符号特性获取所述第二比特的归一化前编码区间跨度值。
在本实施例中,比特的归一化前编码区间跨度值还与比特的符号特性有关,利用比特的符号特征可以使编码区间跨度值更好地与比特相适应,利于后续的编码处理。
可选的,根据第一比特的编码前编码区间跨度值和第一比特的概率状态值获取第一比特的第一概率编码区间跨度值和第二概率编码区间跨度值,根据第一比特的符号概率特性选择第一概率编码区间跨度值或第二概率编码区间跨度值为第一比特的归一化前编码区间跨度值;其中,第一概率编码区间跨度值与第二概率编码区间跨度值的和值为第一比特的编码前编码区间跨度值;
根据第一比特的归一化后编码区间跨度值和第二比特的概率状态值获取第二比特的第三概率编码区间跨度值和第四概率编码区间跨度值,根据第二比特的符号概率特性选择第三概率编码区间跨度值或第四概率编码区间跨度值为第二比特的归一化前编码区间跨度值;其中,第三概率编码区间跨度值与第四概率编码区间跨度值的和值为第一比特的归一化后编码区间跨度值;
概率状态值表示比特本身的概率状态,根据概率状态值和编码区间跨度值可以得到两个概率区间跨度值,两个概率区间跨度值之和等于编码区间跨度值,根据比特本身的符号概率特性可以从两个概率区间跨度值中确定比特编码所需的编码区间跨度值,从而使编码区间跨度值与比特相适应。
可选的,可以将概率状态值和编码区间跨度值做乘积运算处理,得到一个小概率编码区间跨度值,编码区间跨度值减去小概率编码区间跨度值,得到一个大概率编码区间跨度值。
在其中一个实施例中,对第一比特的归一化前编码区间跨度值进行归一化处理,获得第一比特的归一化后编码区间跨度值的步骤包括以下步骤:
利用位移判断电路确定第一比特的归一化前编码区间跨度值归一化所需的第一移位位数,根据第一移位位数对第一比特的归一化前编码区间跨度值进行左移,获得第一比特的归一化后编码区间跨度值;
对第二比特的归一化前编码区间跨度值进行归一化处理,获得第二比特的归一化后编码区间跨度值的步骤包括以下步骤:
利用位移判断电路确定第二比特的归一化前编码区间跨度值归一化所需的第二移位位数,根据第二移位位数对第二比特的归一化前编码区间跨度值进行左移,获得第二比特的归一化后编码区间跨度值。
在本实施例中,为了统一编码过程,需要对归一化前编码区间跨度值进行归一化处理,其中的基本操作是对归一化前编码区间跨度值进行移位处理,通过位移判断电路可以方便快捷地确定每一个归一化前编码区间跨度值归一化所需的移位位数,进而快速得到归一化后的编码区间跨度值。
在其中一个实施例中,位移判断电路包括八条支路,每条支路接收目标编码区间跨度值;
第1条支路将目标编码区间跨度值与28进行二进制按位与操作,将按位与操作的结果按8位进行右移,将该右移结果经过对应的选择器输出相应的数据,在该右移结果为非0时,对应的选择器输出0;在该右移结果为0时,对应的选择器输出0;
第i条支路将目标编码区间跨度值与2(9-i)进行二进制按位与操作,按位与操作的结果右移(9-i)位,将该右移结果与前(i-1)条支路的右移结果的取反值进行二次二进制按位与操作,二次二进制按位与操作结果经过对应的选择器输出相应的数据,在二次二进制按位与操作结果为非0时,对应的选择器输出i-1,在二次二进制按位与操作结果为0时,对应的选择器输出0;其中,2≤i≤8且i为整数;
将所有支路的选择器的输出结果进行按位或操作,得到移位位数;其中,在目标编码区间跨度值为第一比特的归一化前编码区间跨度值时,得到第一移位位数;在目标编码区间跨度值为第二比特的归一化前编码区间跨度值时,得到第二移位位数。
在本实施例中,归一化前编码区间跨度值的位数不超过8位,位移判断电路通过八条支路足以判断编码区间跨度值的移位位数,每条支路分别处理对应位的数据,通过与操作电路、移位操作电路、选择器、或操作电路进行综合处理,最终得到输入至位移判断电路的归一化前编码区间跨度值归一化所需的移位位数,位移判断电路的硬件结构简单,可以快速获得移位位数,无需进行复杂的移位计算,减少编码处理的负荷。
位移判断电路可以分别对第一比特的归一化前编码区间跨度值和第二比特的归一化前编码区间跨度值进行移位位数计算。
在其中一个实施例中,根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化后编码区间下限值的步骤包括以下步骤:
根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化前编码区间下限值;
根据第一移位位数对第一比特的归一化前编码区间下限值进行更新,获得第一比特的归一化后编码区间下限值;
根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化后编码区间下限值的步骤包括以下步骤:
根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化前编码区间下限值;
根据第二移位位数对第二比特的归一化前编码区间下限值进行更新,获得第二比特的归一化后编码区间下限值。在本实施例中,先根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化前编码区间下限值,利用第一移位位数对第一比特的归一化前编码区间下限值进行移位更新,得到的第一比特的归一化后编码区间下限值可以直接用于对第一比特的归一化操作;同理,利用第二移位位数对第二比特的归一化前编码区间下限值进行移位更新,得到的第二比特的归一化后编码区间下限值可以直接用于对第二比特的归一化操作,利用移位位数对归一化前编码区间下限值进行更新使编码区间下限值的变化与编码区间跨度值的变化关联统一,提高归一化的准确性。
可选的,对编码区间下限值的处理可以通过区间下限更新引擎执行,区间下限更新引擎可以对第一比特的归一化前编码区间跨度值、第一比特的编码区间下限值和第一比特的符号概率特性进行计算处理,得到第一比特的归一化后编码区间下限值,再对第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性进行计算处理,得到第二比特的归一化后编码区间下限值。
在其中一个实施例中,利用编码区间下限值更新电路执行更新过程;
编码区间下限值更新电路接收目标编码区间下限值,将目标编码区间下限值与29进行二进制按位与操作,将按位与操作的结果按9位进行右移;
在右移结果为0时,将目标编码区间下限值左移移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;
在右移结果为非0时,将目标编码区间下限值右移目标位数,在目标编码区间下限值右移结果等于目标值时,将目标编码区间下限值左移移位位数,再与十六进制数0x3ff进行二进制按位与操作,得到更新后的编码区间下限值;在目标编码区间下限值右移结果不等于目标值时,将目标编码区间下限值左移移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;其中,目标位数是10与移位位数之差,目标值为1左移移位位数后与1的差值;
在目标编码区间下限值为第一比特的归一化前编码区间下限值时,移位位数为第一移位位数,在目标编码区间下限值为第二比特的归一化前编码区间下限值时,移位位数为第二移位位数。
在本实施例中,编码区间下限值更新电路首先对目标编码区间下限值的位数进行判断选择,在目标编码区间下限值的位数未超过8位时,根据移位位数对目标编码区间下限值进行左移,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;在目标编码区间下限值的位数超过8位时,根据目标位数对目标编码区间下限值进行右移,并在目标编码区间下限值右移结果等于目标值时,将目标编码区间下限值左移移位位数,再与十六进制数0x3ff进行二进制按位与操作,得到更新后的编码区间下限值;在目标编码区间下限值右移结果不等于目标值时,将目标编码区间下限值左移移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;此编码区间下限值更新电路可以通过结构简单的与操作电路、移位电路、选择器,针对不同的目标编码区间下限值进行更新,快速得到更新后的编码区间下限值,减少编码处理的负荷。
编码区间下限值更新电路可以分别对第一比特的归一化前编码区间下限值和第二比特的归一化前编码区间下限值进行更新。
根据上述CABAC编码方法,本发明实施例还提供一种CABAC编码系统,以下就本发明的CABAC编码系统的实施例进行详细说明。
参见图2所示,为本发明一个实施例的CABAC编码系统的结构示意图。该实施例中的CABAC编码系统包括:
同步读取单元210,用于同步读取待编码的第一比特和第二比特;
跨度值获取单元220,用于获取第一比特的归一化前编码区间跨度值,对第一比特的归一化前编码区间跨度值进行归一化处理,获得第一比特的归一化后编码区间跨度值;获取第二比特的归一化前编码区间跨度值,对第二比特的归一化前编码区间跨度值进行归一化处理,获得第二比特的归一化后编码区间跨度值;
下限值获取单元230,用于获取第一比特的编码前编码区间下限值,根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化后编码区间下限值;根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化后编码区间下限值;
归一化编码单元240,用于利用第一比特的归一化后编码区间下限值和第一比特的归一化后编码区间跨度值对第一比特进行归一化操作,利用第二比特的归一化后编码区间下限值和第二比特的归一化后编码区间跨度值对第二比特进行归一化操作,获得第一比特和第二比特的编码码流。
在其中一个实施例中,跨度值获取单元220获取第一比特的编码前编码区间跨度值和第一比特的第一比特的概率状态值,根据第一比特的编码前编码区间跨度值和第一比特的概率状态值生成第一比特的归一化前编码区间跨度值。
在其中一个实施例中,跨度值获取单元220获取第二比特的概率状态值,根据第二比特的概率状态值和第一比特的归一化后编码区间跨度值生成第二比特的归一化前编码区间跨度值。
在其中一个实施例中,跨度值获取单元220获取第一比特的上下文索引值和第二比特的上下文索引值,分别根据第一比特的上下文索引值和第二比特的上下文索引值在预设概率状态表中查询对应的概率状态值,获得第一比特的概率状态值和第二比特的概率状态值;每获得一个概率状态值,根据该概率状态值和对应的上下文索引值对预设概率状态表进行更新。
在其中一个实施例中,跨度值获取单元220根据第一比特的编码前编码区间跨度值、所述第一比特的概率状态值以及所述第一比特的符号特性,获取所述第一比特的归一化前编码区间跨度值;
跨度值获取单元220根据所述第一比特的归一化后编码区间跨度值、所述第二比特的概率状态值以及所述第二比特的符号特性,获取所述第二比特的归一化前编码区间跨度值。
在其中一个实施例中,跨度值获取单元220利用位移判断电路确定第一比特的归一化前编码区间跨度值归一化所需的第一移位位数,根据第一移位位数对第一比特的归一化前编码区间跨度值进行左移,获得第一比特的归一化后编码区间跨度值;
跨度值获取单元220利用位移判断电路确定第二比特的归一化前编码区间跨度值归一化所需的第二移位位数,根据第二移位位数对第二比特的归一化前编码区间跨度值进行左移,获得第二比特的归一化后编码区间跨度值。
在其中一个实施例中,位移判断电路包括八条支路,每条支路接收目标编码区间跨度值;
第1条支路将目标编码区间跨度值与28进行二进制按位与操作,将按位与操作的结果按8位进行右移,将该右移结果经过对应的选择器输出相应的数据,在该右移结果为非0时,对应的选择器输出0;在该右移结果为0时,对应的选择器输出0;
第i条支路将目标编码区间跨度值与2(9-i)进行二进制按位与操作,按位与操作的结果右移(9-i)位,将该右移结果与前(i-1)条支路的右移结果的取反值进行二次二进制按位与操作,二次二进制按位与操作结果经过对应的选择器输出相应的数据,在二次二进制按位与操作结果为非0时,对应的选择器输出i-1,在二次二进制按位与操作结果为0时,对应的选择器输出0;其中,2≤i≤8且i为整数;所有支路的选择器的输出结果进行按位或操作,得到移位位数;其中,在目标编码区间跨度值为第一比特的归一化前编码区间跨度值时,得到第一移位位数;在目标编码区间跨度值为第二比特的归一化前编码区间跨度值时,得到第二移位位数。
在其中一个实施例中,下限值获取单元230根据第一比特的归一化前编码区间跨度值、第一比特的编码前编码区间下限值和第一比特的符号概率特性获取第一比特的归一化前编码区间下限值;根据第一移位位数对第一比特的归一化前编码区间下限值进行更新,获得第一比特的归一化后编码区间下限值;
下限值获取单元230根据第二比特的归一化前编码区间跨度值、第一比特的归一化后编码区间下限值和第二比特的符号概率特性获取第二比特的归一化前编码区间下限值;根据第二移位位数对第二比特的归一化前编码区间下限值进行更新,获得第二比特的归一化后编码区间下限值。
在其中一个实施例中,下限值获取单元230利用编码区间下限值更新电路执行更新过程;
编码区间下限值更新电路接收目标编码区间下限值,将目标编码区间下限值与29进行二进制按位与操作,将按位与操作的结果按9位进行右移;在右移结果为0时,将目标编码区间下限值左移移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;在右移结果为非0时,将目标编码区间下限值右移目标位数,在目标编码区间下限值右移结果等于目标值时,将目标编码区间下限值左移移位位数,再与十六进制数0x3ff进行二进制按位与操作,得到更新后的编码区间下限值;在目标编码区间下限值右移结果不等于目标值时,将目标编码区间下限值左移移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;其中,目标位数是10与移位位数之差,目标值为1左移移位位数后与1的差值;
在目标编码区间下限值为第一比特的归一化前编码区间下限值时,移位位数为第一移位位数,在目标编码区间下限值为第二比特的归一化前编码区间下限值时,移位位数为第二移位位数。
本发明的CABAC编码系统与本发明的CABAC编码方法一一对应,在上述CABAC编码方法的实施例中阐述的技术特征及其有益效果均适用于CABAC编码系统的实施例中。
根据上述CABAC编码方法,本发明实施例还提供一种计算机可读存储介质和一种计算机设备。计算机可读存储介质上存储有计算机程序,该程序被处理器执行时实现上述CABAC编码方法的步骤;计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现上述CABAC编码方法的步骤。
在一个具体的实施例中,传统的CABAC的整个编码流程如图3所示,首先,对非二值特性的语法元素进行二值化处理,对具有二值特性的语法元素则直接输出到编码处理单元;然后,根据各个语法元素二值化比特流中每一比特的概率分配特点,进行自适应二进制算术编码。算术编码模块分为两个并行分支,进入常规编码分支的二进制符号,首先确定其所属的上下文模型,完成编码区间的划分,并确定新的编码区间R和编码区间下限L,然后根据当前编码的比特进行上下文模型的更新;进入旁路编码的分支,主要是二值化比特串中“0”和“1”概率相当的比特位置,编码过程中“0”和“1”的概率固定为1/2,以此固定概率分配进行算术编码,这样简单高效。
CABAC常规编码流程如图4所示,首先根据当前编码符号binval的上下文变量ctx_idx确定概率状态索引值i_state,然后通过i_state和编码前的区间i_range确定小概率符号的编码区间i_range_lps。
根据当前编码符号的概率属性,确定归一化RenormE前的编码区间i_range和区间下限i_low。然后,通过RenormE过程,产生输出位流。最后,更新当前编码符号的上下文模型,后续比特编码会利用当前比特编码更新后的信息。
CABAC编码要求编码区间在[28,29)的范围内,而在编码过程中经过多次的区间划分,所得的新的编码区间长度可能会小于28,因此要经过“归一化”的过程将编码区间的范围恢复到[28,29),而归一化的过程可能有一个或多个“0”、“1”比特作为算术编码的输出。整个归一化RenormE的流程如图5所示,编码区间i_range、区间下限i_low的归一化操作和输出比特嵌在一个循环体内,PutBit()的流程如图6所示。假设归一化前i_range值占n个比特(n<9),那么i_range需要移位(9-n)次,才能回归[28,29)的范围内。这个过程所依据的原理是随着区间划分的递归进行,编码区间逐渐减小,当编码区间逐渐减小到一定程度时,区间下限i_low值二进制形式的高位不再发生变化。因此,这些不再发生变化的高位可以输出作为算术编码结果的组成部分。
本发明的CABAC编码方法可以应用在上述CABAC常规编码流程中,用以避免CABAC编码时,由于比特间编码的依赖性以及多周期归一化所引发的流水线停滞问题。
本发明的CABAC编码方法可以通过一种CABAC多bin编码的加速装置来实现,如图7所示,该加速装置包括上下文模型更新引擎,用以完成当前输入比特上下文的读取、概率状态值的获取及概率状态表的更新;常规编码模式下编码区间R的更新引擎,根据当前编码比特的概率特性,获取当前比特归一化前的编码区间跨度值;编码区间下限L的更新引擎,用以获取当前编码比特归一化前的区间下限值;归一化引擎,用以执行归一化操作并输出编码位流。
其中,上下文模型更新引擎同时读入两比特。根据输入两比特的上下文变量索引值,分别获取当前编码两比特的概率状态值,并对概率状态表进行更新。特别地,当输入两比特的上下文索引值相等时,第二比特的概率状态值为第一比特的概率状态更新值。
其中,编码区间R的更新引擎,采用硬件专有的位移判断电路,可以快速获取输入两比特归一化前的编码区间跨度值。编码区间R的位移判断电路如图8所示,其中“>>”代表右移的操作,高位补零。位移判断电路采用八条并行支路,输入的编码区间跨度值R分别与0x100,0x80,0x40,0x20,0x10,0x8,0x4,0x2等十六进制数(相当于二进制数28,27,26,25,24,23,22,2)进行第一阶段的二进制按位“与”操作。每条支路“与”操作的结果分别右移一定的位宽(八条支路右移的位宽分别为8位、7位、6位、5位、4位、3位、2位和1位),将移位后的值按位“取反”输出至当前支路后面的几路。其中,第一支路右移后的结果直接输出至选择器,其余各支路右移得到的结果与前面几路移位后按位“取反”的结果进行第二阶段的按位“与”操作,得到的结果输出至每条支路的选择器,将各支路选择器输出的结果进行按位“或”操作,得到编码区间跨度值R归一化前的迭代次数shift。通过对编码区间跨度值R左移shift位,得到R归一化后的编码区间跨度值。由于第一比特归一化后的编码区间跨度值可以快速得到,第二比特可以利用第一比特归一化后的编码区间跨度值和自身的概率状态值得到归一化前的编码区间跨度值。将shift传递给区间下限L的更新引擎,供后续信息更新使用。
其中,区间下限L的更新引擎,采用硬件专有的区间下限更新电路,可以快速获取输入两比特归一化前的区间下限值。区间下限L的更新电路如图9所示,其中“<<”代表左移操作,低位补0。将区间下限值与0x200作按位“与”的操作,将结果右移9位后输出至选择器。如果位移后的输出结果为0,则将区间下限值左移shift位后,与掩码“0x1ff”进行按位“与”操作,得到归一化后的区间下限值;如果位移后的结果非0,则将区间下限值右移(10-shift)位后的结果输出至选择器,如果右移后的结果等于((1<<shift)-1)的值,则将区间下限值左移shift位后,与掩码“0x3ff”作按位与的操作,否则将区间下限值左移shift位后,与掩码“0x1ff”作按位“与”操作,得到归一化后的区间下限值。由于第一比特归一化后的区间下限值可以快速得到,第二比特可以利用第一比特归一化后的区间下限值和自身归一化前的编码区间跨度值,得到归一化前的区间下限值。
其中,归一化引擎,完成两比特的归一化操作,并在一个硬件周期内以并行方式输出两比特归一化后的码流。由于硬件采用专有的位移判断电路和和区间下限更新电路,输入两比特归一化前的编码区间跨度值和区间下限值可以快速得到,因此,两比特可以并行归一化。由于归一化流程中每一次迭代后的输出信息,如编码区间跨度值、区间下限值、i_bits_outstanding值及输出比特值可以也可以快速得到,因此在一个硬件周期内,整合每一次迭代过程的输出比特,就得到编码后的输出位流。
本发明采用硬件专有的电路对编码区间和区间下限值进行快速更新,使得当前比特更新后的信息可以快速应用至下一比特编码信息的更新。因此,在一个硬件周期内可以完成对两比特的编码。同时,两比特编码更新后的信息可以快速应用至后续比特的编码。避免了传统方案中因为比特间编码的依赖而带来的流水线停滞问题。另外,编码区间和区间下限值的快速更新,使得归一化流程中每一次迭代后的输出信息可以快速得出,硬件可以在一个周期内整合每一次迭代产生的比特得到输出位流。避免了原始归一化方案中多周期迭代带来的流水线停滞问题。
本发明实施例的电路整体架构框图如图7所示。包括上下文更新引擎、编码区间R的更新引擎、区间下限L的更新引擎以及归一化引擎。在此说明一下后面阐述过程中使用到的各个变量的含义,binval0:当前被编码的第一比特;binval1:当前被编码的第二比特;ctx0:当前被编码第一比特的上下文索引;ctx1:当前被编码第二比特的上下文索引;state0:当前被编码的第一比特的概率状态值;state1:当前被编码的第二比特的概率状态值;cb_range0:第一比特编码前的编码区间跨度值;cb_range1:第二比特编码前的编码区间跨度值;cb_low0:第一比特编码前的区间下限值;cb_low1:第二比特编码前的区间下限值;R0:第一比特归一化操作前的编码区间跨度值;R1:第二比特归一化操作前的编码区间跨度值;L0:第一比特归一化操作前的区间下限值;L1:第二比特归一化操作前的区间下限值;range0:第一比特归一化后的编码区间跨度值;range1:第二比特归一化后的编码区间跨度值;low0:第一比特归一化后的区间下限值;low1:第二比特归一化后的区间下限值。上述编码区间跨度值和编码区间下限值都有编码前、归一化前、归一化后三种不同的状态,这三种状态是编码时常用的,而且前一比特的归一化后的编码区间跨度值可以是后一比特的编码前的编码区间跨度值,前一比特的归一化后的编码区间下限值可以是后一比特的编码前的编码区间下限值,本领域技术人员可以采用多种不同的方法获取编码前、归一化前、归一化后的编码区间跨度值和编码区间下限值,以下以一种具体的方式进行举例说明:
如图7所示,上下文更新引擎同时读入两比特binval0和binval1。根据两比特的上下文索引ctx0和ctx1,分别查询概率状态表cb_state[]获取当前编码两比特的概率状态值state0和state1,并对概率状态表cb_state[]进行更新。特别地,当ctx0等于ctx1时,第二比特binval1的概率状态state1为第一比特binval0的概率更新值。
如图7所示,编码区间R的更新引擎根据第一比特binval0的概率状态值state0和编码前的区间cb_range0,得到第一比特的小概率编码区间Rlps0。根据第一比特binval0的符号概率特性,确定第一比特归一化前的编码区间R0。然后通过硬件的位移判断电路确定R0归一化所需的移位次数shift0。将R0左移shift0位后得到第一比特归一化后的编码区间跨度值range0,根据range0和第二比特的概率状态值state1,得到第二比特的小概率编码区间Rlps1。根据第二比特binval1的符号概率特性,确定第二比特归一化前的编码区间R1,利用硬件的位移判断电路确定R1归一化所需的移位次数shift1,将R1左移shift1位后得到第二比特归一化后的编码区间跨度值range1。将相关的信息输出至区间下限L的更新引擎,供后续更新区间下限值使用。
如图8为编码区间R的位移判断电路,用以快速确定归一化的迭代次数。输入的编码区间R同时与八条支路的相关变量进行按位“与”操作。最后,将各个支路选择器的输出进行按位“或”的操作,得到归一化的位移次数。其中,“>>”代表右移的操作,高位补零。当被编码第一比特归一化前的编码区间R0确定后,R0通过位移判断电路,快速得到R0归一化所需的位移次数shift0。将R0左移shift0后得到第一比特归一化后的编码区间range0。此时,range0可以应用至第二比特R1的确定。
如图7所示,区间下限L的更新引擎,用以获取输入两比特归一化前的编码区间L0和L1。根据第一比特binval0的符号概率特性、归一化前的编码区间R0及编码前的区间下限值cb_low0确定第一比特归一化前的区间下限值L0;根据第一比特binval0的移位次数shift0和归一化前的区间下限值L0,利用硬件的区间下限更新电路得到第一比特归一化后的区间下限值low0;根据第二比特binval1的符号概率特性、第二比特归一化前的编码区间R1及第一比特的low0,得到第二比特归一化前的区间下限值L1,利用硬件的区间下限更新电路得到第二比特归一化后的区间下限值low1。将相关的信息输出至归一化更新引擎,供后续归一化操作使用。
如图9为区间下限L的更新电路图,用以快速得到归一化后的区间下限值。其中,“>>”代表右移的操作,高位补零。“<<”代表左移操作,低位补零。第一比特的归一化前的区间下限值L0通过区间下限更新电路,快速得到归一化后的区间下限low0。此时,low0可以应用至第二比特L1的确定。
如图7示,归一化引擎用以完成归一化操作并输出相应的位流。由于输入两比特归一化前的编码区间R0、R1和区间下限值L0、L1可以快速得到,因此一个硬件周期可以同时对输入的两比特进行编码。特别地,硬件专有的编码区间位移判断电路和区间下限更新电路可以快速得到归一化过程中每一次迭代的输出信息,如编码区间跨度值、区间下限值、i_bits_outstanding值(用以累计归一化过程中暂未输出的比特个数)及输出位流值。因此,在一个硬件周期内,整合每一次迭代过程产生的输出比特,得到编码后的输出位流。
以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成。所述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,包括上述方法所述的步骤。所述的存储介质,包括:ROM/RAM、磁碟、光盘等。
以上所述实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种CABAC编码方法,其特征在于,包括以下步骤:
同步读取待编码的第一比特和第二比特;
获取所述第一比特的归一化前编码区间跨度值,对所述第一比特的归一化前编码区间跨度值进行归一化处理,获得所述第一比特的归一化后编码区间跨度值;
获取所述第二比特的归一化前编码区间跨度值,对所述第二比特的归一化前编码区间跨度值进行归一化处理,获得所述第二比特的归一化后编码区间跨度值;
获取所述第一比特的编码前编码区间下限值,根据所述第一比特的归一化前编码区间跨度值、所述第一比特的编码前编码区间下限值和所述第一比特的符号概率特性获取所述第一比特的归一化后编码区间下限值;
根据所述第二比特的归一化前编码区间跨度值、所述第一比特的归一化后编码区间下限值和所述第二比特的符号概率特性获取所述第二比特的归一化后编码区间下限值;
利用所述第一比特的归一化后编码区间下限值和所述第一比特的归一化后编码区间跨度值对所述第一比特进行归一化操作,利用所述第二比特的归一化后编码区间下限值和所述第二比特的归一化后编码区间跨度值对所述第二比特进行归一化操作,同步获得所述第一比特和所述第二比特的编码码流;
所述对所述第一比特的归一化前编码区间跨度值进行归一化处理,获得所述第一比特的归一化后编码区间跨度值的步骤包括以下步骤:
利用位移判断电路确定所述第一比特的归一化前编码区间跨度值归一化所需的第一移位位数,根据所述第一移位位数对所述第一比特的归一化前编码区间跨度值进行左移,获得所述第一比特的归一化后编码区间跨度值;
所述对所述第二比特的归一化前编码区间跨度值进行归一化处理,获得所述第二比特的归一化后编码区间跨度值的步骤包括以下步骤:
利用所述位移判断电路确定所述第二比特的归一化前编码区间跨度值归一化所需的第二移位位数,根据所述第二移位位数对所述第二比特的归一化前编码区间跨度值进行左移,获得所述第二比特的归一化后编码区间跨度值;
所述位移判断电路包括八条支路,每条支路接收目标编码区间跨度值;
第1条支路将所述目标编码区间跨度值与28进行二进制按位与操作,将按位与操作的结果按8位进行右移,将该右移结果经过对应的选择器输出相应的数据,在该右移结果为非0时,对应的选择器输出0;在该右移结果为0时,对应的选择器输出0;
第i条支路将所述目标编码区间跨度值与2(9-i)进行二进制按位与操作,按位与操作的结果右移(9-i)位,将该右移结果与前(i-1)条支路的右移结果的取反值进行二次二进制按位与操作,二次二进制按位与操作结果经过对应的选择器输出相应的数据,在所述二次二进制按位与操作结果为非0时,对应的选择器输出i-1,在所述二次二进制按位与操作结果为0时,对应的选择器输出0;其中,2≤i≤8且i为整数;
将所有支路的选择器的输出结果进行按位或操作,得到移位位数;其中,在所述目标编码区间跨度值为所述第一比特的归一化前编码区间跨度值时,得到所述第一移位位数;在所述目标编码区间跨度值为所述第二比特的归一化前编码区间跨度值时,得到所述第二移位位数。
2.根据权利要求1所述的CABAC编码方法,其特征在于,获取所述第一比特的归一化前编码区间跨度值的步骤包括以下步骤:
获取所述第一比特的编码前编码区间跨度值和所述第一比特的概率状态值,根据所述第一比特的编码前编码区间跨度值和所述第一比特的概率状态值生成所述第一比特的归一化前编码区间跨度值。
3.根据权利要求2所述的CABAC编码方法,其特征在于,获取所述第二比特的归一化前编码区间跨度值的步骤包括以下步骤:
获取所述第二比特的概率状态值,根据所述第二比特的概率状态值和所述第一比特的归一化后编码区间跨度值生成所述第二比特的归一化前编码区间跨度值。
4.根据权利要求3所述的CABAC编码方法,其特征在于,获取所述第一比特的概率状态值和所述第二比特的概率状态值的步骤包括以下步骤:
获取所述第一比特的上下文索引值和所述第二比特的上下文索引值,分别根据所述第一比特的上下文索引值和所述第二比特的上下文索引值在预设概率状态表中查询对应的概率状态值,获得所述第一比特的概率状态值和所述第二比特的概率状态值;
每获得一个概率状态值,根据该概率状态值和对应的上下文索引值对所述预设概率状态表进行更新。
5.根据权利要求3所述的CABAC编码方法,其特征在于,所述根据所述第一比特的编码前编码区间跨度值和所述第一比特的概率状态值生成所述第一比特的归一化前编码区间跨度值的步骤包括以下步骤:
根据所述第一比特的编码前编码区间跨度值、所述第一比特的概率状态值以及所述第一比特的符号特性,获取所述第一比特的归一化前编码区间跨度值;
所述根据所述第二比特的概率状态值和所述第一比特的归一化后编码区间跨度值生成所述第二比特的归一化前编码区间跨度值的步骤包括以下步骤:
根据所述第一比特的归一化后编码区间跨度值、所述第二比特的概率状态值以及所述第二比特的符号特性,获取所述第二比特的归一化前编码区间跨度值。
6.根据权利要求1所述的CABAC编码方法,其特征在于,所述根据所述第一比特的归一化前编码区间跨度值、所述第一比特的编码前编码区间下限值和所述第一比特的符号概率特性获取所述第一比特的归一化后编码区间下限值的步骤包括以下步骤:
根据所述第一比特的归一化前编码区间跨度值、所述第一比特的编码前编码区间下限值和所述第一比特的符号概率特性获取所述第一比特的归一化前编码区间下限值;
根据所述第一移位位数对所述第一比特的归一化前编码区间下限值进行更新,获得所述第一比特的归一化后编码区间下限值;
所述根据所述第二比特的归一化前编码区间跨度值、所述第一比特的归一化后编码区间下限值和所述第二比特的符号概率特性获取所述第二比特的归一化后编码区间下限值的步骤包括以下步骤:
根据所述第二比特的归一化前编码区间跨度值、所述第一比特的归一化后编码区间下限值和所述第二比特的符号概率特性获取所述第二比特的归一化前编码区间下限值;
根据所述第二移位位数对所述第二比特的归一化前编码区间下限值进行更新,获得所述第二比特的归一化后编码区间下限值。
7.根据权利要求6所述的CABAC编码方法,其特征在于,利用编码区间下限值更新电路执行更新过程;
所述编码区间下限值更新电路接收目标编码区间下限值,将所述目标编码区间下限值与29进行二进制按位与操作,将按位与操作的结果按9位进行右移;
在右移结果为0时,将所述目标编码区间下限值左移所述移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;
在右移结果为非0时,将所述目标编码区间下限值右移目标位数,在所述目标编码区间下限值右移结果等于目标值时,将所述目标编码区间下限值左移所述移位位数,再与十六进制数0x3ff进行二进制按位与操作,得到更新后的编码区间下限值;在所述目标编码区间下限值右移结果不等于目标值时,将所述目标编码区间下限值左移所述移位位数,再与十六进制数0x1ff进行二进制按位与操作,得到更新后的编码区间下限值;其中,所述目标位数是10与所述移位位数之差,所述目标值为1左移所述移位位数后与1的差值;
在所述目标编码区间下限值为所述第一比特的归一化前编码区间下限值时,所述移位位数为所述第一移位位数,在所述目标编码区间下限值为所述第二比特的归一化前编码区间下限值时,所述移位位数为所述第二移位位数。
8.一种CABAC编码系统,其特征在于,包括:
同步读取单元,用于同步读取待编码的第一比特和第二比特;
跨度值获取单元,用于获取所述第一比特的归一化前编码区间跨度值,对所述第一比特的归一化前编码区间跨度值进行归一化处理,获得所述第一比特的归一化后编码区间跨度值;获取所述第二比特的归一化前编码区间跨度值,对所述第二比特的归一化前编码区间跨度值进行归一化处理,获得所述第二比特的归一化后编码区间跨度值;
下限值获取单元,用于获取所述第一比特的编码前编码区间下限值,根据所述第一比特的归一化前编码区间跨度值、所述第一比特的编码前编码区间下限值和所述第一比特的符号概率特性获取所述第一比特的归一化后编码区间下限值;根据所述第二比特的归一化前编码区间跨度值、所述第一比特的归一化后编码区间下限值和所述第二比特的符号概率特性获取所述第二比特的归一化后编码区间下限值;
归一化编码单元,用于利用所述第一比特的归一化后编码区间下限值和所述第一比特的归一化后编码区间跨度值对所述第一比特进行归一化操作,利用所述第二比特的归一化后编码区间下限值和所述第二比特的归一化后编码区间跨度值对所述第二比特进行归一化操作,获得所述第一比特和所述第二比特的编码码流;
所述跨度值获取单元还用于利用位移判断电路确定第一比特的归一化前编码区间跨度值归一化所需的第一移位位数,根据第一移位位数对第一比特的归一化前编码区间跨度值进行左移,获得第一比特的归一化后编码区间跨度值;
所述跨度值获取单元还用于利用位移判断电路确定第二比特的归一化前编码区间跨度值归一化所需的第二移位位数,根据第二移位位数对第二比特的归一化前编码区间跨度值进行左移,获得第二比特的归一化后编码区间跨度值;
所述位移判断电路包括八条支路,每条支路接收目标编码区间跨度值;
第1条支路将目标编码区间跨度值与28进行二进制按位与操作,将按位与操作的结果按8位进行右移,将该右移结果经过对应的选择器输出相应的数据,在该右移结果为非0时,对应的选择器输出0;在该右移结果为0时,对应的选择器输出0;
第i条支路将目标编码区间跨度值与2(9-i)进行二进制按位与操作,按位与操作的结果右移(9-i)位,将该右移结果与前(i-1)条支路的右移结果的取反值进行二次二进制按位与操作,二次二进制按位与操作结果经过对应的选择器输出相应的数据,在二次二进制按位与操作结果为非0时,对应的选择器输出i-1,在二次二进制按位与操作结果为0时,对应的选择器输出0;其中,2≤i≤8且i为整数;所有支路的选择器的输出结果进行按位或操作,得到移位位数;其中,在目标编码区间跨度值为第一比特的归一化前编码区间跨度值时,得到第一移位位数;在目标编码区间跨度值为第二比特的归一化前编码区间跨度值时,得到第二移位位数。
9.根据权利要求8所述的CABAC编码系统,其特征在于,所述跨度值获取单元还用于获取所述第一比特的编码前编码区间跨度值和所述第一比特的概率状态值,根据所述第一比特的编码前编码区间跨度值和所述第一比特的概率状态值生成所述第一比特的归一化前编码区间跨度值。
10.根据权利要求9所述的CABAC编码系统,其特征在于,所述跨度值获取单元还用于获取所述第二比特的概率状态值,根据所述第二比特的概率状态值和所述第一比特的归一化后编码区间跨度值生成第二比特的归一化前编码区间跨度值。
CN201710474698.4A 2017-06-21 2017-06-21 Cabac编码方法和系统 Active CN107343201B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710474698.4A CN107343201B (zh) 2017-06-21 2017-06-21 Cabac编码方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710474698.4A CN107343201B (zh) 2017-06-21 2017-06-21 Cabac编码方法和系统

Publications (2)

Publication Number Publication Date
CN107343201A CN107343201A (zh) 2017-11-10
CN107343201B true CN107343201B (zh) 2019-11-26

Family

ID=60221442

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710474698.4A Active CN107343201B (zh) 2017-06-21 2017-06-21 Cabac编码方法和系统

Country Status (1)

Country Link
CN (1) CN107343201B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108235013B (zh) * 2018-01-22 2020-03-17 合肥工业大学 一种基于hevc的低周期cabac解码器及其解码方法
CN108391129B (zh) * 2018-04-25 2019-09-27 西安万像电子科技有限公司 数据编码方法及装置
CN109769118A (zh) * 2019-02-21 2019-05-17 深圳市华星光电技术有限公司 图像编码方法及图像编码装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010141452A (ja) * 2008-12-10 2010-06-24 Nippon Telegr & Teleph Corp <Ntt> フレームレート変換方法、フレームレート変換装置、フレームレート変換プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN101951516A (zh) * 2010-09-25 2011-01-19 清华大学 基于h.264/avc中cabac的并行编码实现电路及编码方法
CN102176750A (zh) * 2011-03-10 2011-09-07 西安电子科技大学 高性能自适应二进制算术编码器
CN103718240A (zh) * 2011-09-09 2014-04-09 松下电器产业株式会社 编码装置、解码装置、编码方法和解码方法
CN103974066A (zh) * 2014-05-14 2014-08-06 华为技术有限公司 视频编码方法和设备
CN104394418A (zh) * 2014-09-23 2015-03-04 清华大学 一种视频数据编码、解码的方法及装置
CN105791828A (zh) * 2015-12-31 2016-07-20 杭州士兰微电子股份有限公司 二进制算术编码器及其编码方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2010141452A (ja) * 2008-12-10 2010-06-24 Nippon Telegr & Teleph Corp <Ntt> フレームレート変換方法、フレームレート変換装置、フレームレート変換プログラムおよびそのプログラムを記録したコンピュータ読み取り可能な記録媒体
CN101951516A (zh) * 2010-09-25 2011-01-19 清华大学 基于h.264/avc中cabac的并行编码实现电路及编码方法
CN102176750A (zh) * 2011-03-10 2011-09-07 西安电子科技大学 高性能自适应二进制算术编码器
CN103718240A (zh) * 2011-09-09 2014-04-09 松下电器产业株式会社 编码装置、解码装置、编码方法和解码方法
CN103974066A (zh) * 2014-05-14 2014-08-06 华为技术有限公司 视频编码方法和设备
CN104394418A (zh) * 2014-09-23 2015-03-04 清华大学 一种视频数据编码、解码的方法及装置
CN105791828A (zh) * 2015-12-31 2016-07-20 杭州士兰微电子股份有限公司 二进制算术编码器及其编码方法

Also Published As

Publication number Publication date
CN107343201A (zh) 2017-11-10

Similar Documents

Publication Publication Date Title
CN100466739C (zh) Cabac解码系统及方法
CN107343201B (zh) Cabac编码方法和系统
US7821430B2 (en) Arithmetic decoding apparatus
CN105791828B (zh) 二进制算术编码器及其编码方法
CN108391129B (zh) 数据编码方法及装置
CN101807926B (zh) 低功耗soc测试数据压缩编码方法
CN104038232B (zh) 基于二次异或运算的测试数据压缩与解压缩方法
CN103974066B (zh) 视频编码方法和设备
US5694128A (en) Tree structured binary arithmetic coder
CN102970043A (zh) 一种基于gzip的压缩硬件系统及其加速方法
CN116051156B (zh) 一种基于数字孪生的新能源动态电价数据管理系统
CN110022188A (zh) 基于冻结比特对的极化码编码方法及极化码串行抵消译码方法和电路
CN106452452A (zh) 一种基于K‑means聚类的全脉冲数据无损压缩方法
CN114900193A (zh) 适应性霍夫曼编码系统及方法
CN116016606A (zh) 一种基于智慧云的污水处理运维数据高效管理系统
CN102386935B (zh) 维特比译码方法及维特比译码器
CN102724505B (zh) Jpeg_ls游程编码fpga实现方法
CN117040542B (zh) 一种智能综合配电箱能耗数据处理方法
CN103746704B (zh) 基于双游程交替编码的芯片测试数据传输方法
CN103491370B (zh) 一元/k阶指数哥伦布码的解码方法及解码器
CN104852733A (zh) 动态元件匹配编码器
CN116934487A (zh) 一种金融清算数据优化存储方法及系统
CN102088607A (zh) 基于jpeg2000标准的mq编码方法和电路
CN107277518B (zh) Cabac解码方法
CN202931290U (zh) 一种基于gzip的压缩硬件系统

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
CP02 Change in the address of a patent holder
CP02 Change in the address of a patent holder

Address after: 519000 No. 333, Kexing Road, Xiangzhou District, Zhuhai City, Guangdong Province

Patentee after: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.

Address before: Floor 1-107, building 904, ShiJiHua Road, Zhuhai City, Guangdong Province

Patentee before: ZHUHAI JIELI TECHNOLOGY Co.,Ltd.