CN103974066A - 视频编码方法和设备 - Google Patents
视频编码方法和设备 Download PDFInfo
- Publication number
- CN103974066A CN103974066A CN201410204288.4A CN201410204288A CN103974066A CN 103974066 A CN103974066 A CN 103974066A CN 201410204288 A CN201410204288 A CN 201410204288A CN 103974066 A CN103974066 A CN 103974066A
- Authority
- CN
- China
- Prior art keywords
- character
- target interval
- lower limit
- siding
- length
- 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.)
- Granted
Links
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
本发明实施例提供一种视频编码方法和设备。该方法包括:在当前周期内,获取待编码字符串中的连续的第一字符和第二字符;确定第一字符对应的第一候选值,并确定第二字符对应的第二候选值;根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度;根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度;根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限;根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限;根据第一字符的目标区间下限得到第一字符对应的比特,根据第二字符的目标区间下限得到第二字符对应的比特。
Description
技术领域
本发明实施例涉及信息技术领域,尤其涉及一种视频编码方法和设备。
背景技术
随着数字视频的应用格式的全面升级,在数字视频应用格式保证高帧率和高压缩率的前提下能够在有限的空间和管道中获得最佳的视频体验一直是用户的不懈追求。所以,在2010年1月,由ITU-T视频编码专家组(Video CodingExperts Group,简称VCEG)和ISO/IEC动态图像专家组(Moving PictureExperts Group,简称MPEG)联合成立了联合视频组(Joint Collaborative Teamon Video Coding,简称JCT-VC),并统一制定了高效视频编码(High EfficiencyVideo Coding,简称HEVC)标准,HEVC在H.264/AVC视频编码标准基础上,压缩效率提高一倍,具有巨大的市场前景。基于上下文的自适应二进制算术编码(Context-based Adaptive Binary Arithmetic Coding,简称CABAC)是HEVC的主要熵编码技术,其处于编码器最后一级,能够消除编码冗余实现视频压缩效果的进一步提升,据有效数据统计,在H.264/AVC中,CABAC编码性能比基于上下文自适应的可变长编码(Context-based Adaptive Variable LengthCoding,简称CAVLC)高出10%~15%。
CABAC编码器的结构示意图如图1所示,从图1中可以看出,CABAC的算术编码主要分为三个过程。首先,利用二进制化器对语法元素进行二进制化,二进制化器能够将非二进制的语法元素转换为二进制的字符串。然后,确定每个二进制字符的编码方式,若为规则编码,则为每个二进制字符选择上下文模型,即根据二进制字符是否为大概率字符确定该二进制字符的概率索引值,并基于当前的二进制字符修正上下文模型。最后,对每个二进制字符进行算术编码,输出比特流,若对二进制字符进行规则编码,则采用上下文模型中的该二进制字符的概率索引值为概率进行编码,若对二进制字符进行旁路编码,则采用固定概率,以0.5为概率进行编码。
现有的基于CABAC的算术编码的常规处理方法,在每个时钟周期内,根据当前二进制字符的概率索引值和当前二进制字符的区间量化索引值确定当前二进制字符的小概率区间长度,再根据当前二进制字符(binval)的类型进行区间划分,对当前二进制字符(binval)的区间长度和区间下限(ivlRange)进行归一化处理,输出当前二进制字符对应的比特流。
然而,在上述方法中,每个时钟周期处理一个二进制字符,导致数据吞吐量小,CABAC模块工作频率较低。
发明内容
本发明实施例提供了一种视频编码方法和设备,实现了在每个时钟周期内连续处理两个二进制字符,提高了视频编码的数据吞吐量,提高了CABAC模块工作频率和数据处理性能。
第一方面,本发明实施例提供一种视频编码方法,包括:
获取待编码字符串中的连续的第一字符和第二字符;
确定所述第一字符对应的第一候选值,并确定所述第二字符对应的第二候选值;
根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度;根据所述第二候选值和所述第一字符的目标区间长度,得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度;
根据所述第一字符的目标区间长度和所述第一字符的初始区间下限,得到所述第一字符的目标区间下限;根据所述第二字符的目标区间长度和所述第一字符的目标区间下限,得到所述第二字符的目标区间下限,所述第二字符的初始区间下限为所述第一字符的目标区间下限;
根据所述第一字符的目标区间下限得到所述第一字符对应的比特,根据所述第二字符的目标区间下限得到所述第二字符对应的比特。
结合第一方面,在第一方面的第一种实施方式中,
所述根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度,具体包括:
根据所述第一候选值和所述第一字符的初始区间长度,确定所述第一字符的小概率区间长度;
根据所述第一字符的小概率区间长度、所述第一字符的初始区间长度以及所述第一字符的大小判决值得到所述第一字符的中间区间长度;
对所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度。
结合第一方面的第一种实施方式,在第一方面的第二种实施方式中,
所述根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度之后,还包括:
根据所述第一字符的大小判决值确定所述第一字符的中间变量;确定所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度所需的所述第一字符对应的第一移位次数;
所述根据所述第一字符的目标区间长度和所述第一字符的初始区间下限,得到所述第一字符的目标区间下限,具体包括:
根据所述第一字符的中间变量和所述第一字符的初始区间下限,得到所述第一字符的中间区间下限;
根据所述第一字符对应的第一移位次数,对所述第一字符的中间区间下限进行移位处理,根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限。
结合第一方面的第二种实施方式,在第一方面的第三种实施方式中,
所述根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限之后,还包括:
根据所述第一字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定所述第一字符对应的第一溢出比特信息;
所述根据所述第一字符的目标区间下限生成所述第一字符对应的比特,具体包括:
根据所述第一溢出比特信息得到所述第一字符对应的比特。
结合第一方面,在第一方面的第四种实施方式中,
所述根据所述第二候选值和所述第一字符的目标区间长度得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度,具体包括:
根据所述第二候选值和所述第二字符的初始区间长度,确定所述第二字符的小概率区间长度;
根据所述第二字符的小概率区间长度、所述第一字符的目标区间长度以及第二字符的大小判决值得到所述第二字符的中间区间长度;
对所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度。
结合第一方面的第四种实施方式,在第一方面的第五种实施方式中,
所述根据所述第二候选值和所述第一字符的目标区间长度,得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度之后,还包括:
根据所述第二字符的大小判决值确定所述第二字符的中间变量;确定所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度所需的所述第二字符对应的第二移位次数;
所述根据所述第二字符的目标区间长度和所述第一字符的目标区间下限,得到所述第二字符的目标区间下限,所述第二字符的初始区间下限为所述第一字符的目标区间下限,具体包括:
根据所述第二字符的中间变量和所述第一字符目标区间下限得到所述第二字符的中间区间下限;
根据所述第二字符对应的第二移位次数,对所述第二字符的中间区间下限进行移位处理,根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限。
结合第一方面的第五种实施方式,在第一方面的第六种实施方式中,
所述根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限之后,还包括:
根据所述第二字符的中间区间下限移位处理过程中的所述被移出位数值和移位处理后的最高位数值,确定所述第二字符对应的第二溢出比特信息;
所述根据所述第二字符的目标区间下限生成所述第二字符对应的比特,具体包括:
根据所述第二溢出比特信息得到所述第二字符对应的比特。
第二方面,本发明实施例提供一种视频编码设备,包括:
获取模块,用于在当前周期内获取待编码字符串中的连续的第一字符和第二字符;
确定模块,用于确定所述第一字符对应的第一候选值,并用于确定所述第二字符对应的第二候选值;
处理模块,还用于根据所述第一候选值和所述第一字符的初始区间长度得到所述第一字符的目标区间长度;还用于根据所述第二候选值和所述第一字符的目标区间长度得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度;
所述处理模块,还用于根据所述第一字符的目标区间长度和所述第一字符的初始区间下限,得到所述第一字符的目标区间下限;还用于根据所述第二字符的目标区间长度和所述第一字符的目标区间下限,得到所述第二字符的目标区间下限,所述第二字符的初始区间下限为所述第一字符的目标区间下限;
所述处理模块,还用于根据所述第一字符的目标区间下限得到所述第一字符对应的比特,还用于根据所述第二字符的目标区间下限得到所述第二字符对应的比特。
结合第二方面,在第二方面的第一种实施方式中,
所述处理模块具体用于:根据所述第一候选值和所述第一字符的初始区间长度,确定所述第一字符的小概率区间长度;根据所述第一字符的小概率区间长度、所述第一字符的初始区间长度以及所述第一字符的大小判决值得到所述第一字符的中间区间长度;对所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度。
结合第二方面的第一种实施方式,在第二方面的第二种实施方式中,
所述处理模块,还用于:根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度之后,根据所述第一字符的大小判决值确定所述第一字符的中间变量;确定所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度所需的所述第一字符对应的第一移位次数;
所述处理模块,具体用于:根据所述第一字符的中间变量和所述第一字符的初始区间下限,得到所述第一字符的中间区间下限;根据所述第一字符对应的第一移位次数,对所述第一字符的中间区间下限进行移位处理,根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限。
结合第二方面的第二种实施方式,在第二方面的第三种实施方式中,
所述处理模块,还用于:所述根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限之后,根据所述第一字符的中间区间下限移位处理过程中的所述被移出位数值和移位处理后的最高位数值,确定所述第一字符对应的第一溢出比特信息;
所述处理模块,具体用于:根据所述第一溢出比特信息得到所述第一字符对应的比特。
结合第二方面,在第二方面的第四种实施方式中,处理模块,具体用于:根据所述第二候选值和所述第二字符的初始区间长度,确定所述第二字符的小概率区间长度;根据所述第二字符的小概率区间长度、所述第一字符的目标区间长度以及所述第二字符的大小判决值得到所述第二字符的中间区间长度;对所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度。
结合第二方面的第四种实施方式,在第二方面的第五种实施方式中,所述处理模块,还用于:根据所述第二候选值和所述第一字符的目标区间长度,得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度之后,根据所述第二字符的大小判决值确定所述第二字符的中间变量;并确定所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度所需的所述第二字符对应的第二移位次数;
所述处理模块,具体用于:根据所述第二字符的中间变量和所述第一字符目标区间下限得到所述第二字符的初始区间下限;根据所述第二字符对应的第二移位次数,对所述第二字符的中间区间下限进行移位处理,根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限。
结合第二方面的第五种实施方式,在第二方面的第六种实施方式中,
所述处理模块,还用于:所述根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限之后,根据所述第二字符的中间区间下限移位处理过程中的所述被移出位数值和移位处理后的最高位数值,确定所述第二字符对应的第二溢出比特信息;
所述处理模块,具体用于:根据所述第二溢出比特信息得到所述第二字符对应的比特。
本发明实施例一种视频编码方法和设备,通过在在当前周期内获取待编码字符串中的连续的第一字符和第二字符;确定第一字符对应的第一候选值,并确定第二字符对应的第二候选值;根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度;根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度,第二字符的初始区间长度为第一字符的目标区间长度;根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限;根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限,第二字符的初始区间下限为第一字符的目标区间下限;根据第一字符的目标区间下限得到第一字符对应的比特,根据第二字符的目标区间下限得到第二字符对应的比特。将确定第一字符、第二字符的第一候选值、第二候选值的过程,得到第一字符、第二字符的第一字符目标区间长度、第二字符的目标区间长度过程,得到第一字符、第二字符的第一字符目标区间下限、第二字符目标区间下限过程以及得到第一字符对应的比特、第二字符生成的比特的过程都相互进行剥离,缩短了处理连续的两个字符中的每个字符的关键路径,进而实现了在每个时钟周期内连续处理两个二进制字符,提高了视频编码的数据吞吐量,提高了CABAC模块工作频率和数据处理性能。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术中CABAC编码器的结构示意图;
图2为本发明视频编码方法实施例一的流程图;
图3为本发明视频编码方法实施例二的第一流程图;
图4为本发明视频编码方法实施例二的第二流程图;
图5为本发明视频编码方法实施例二的第三流程图;
图6为本发明视频编码方法实施例二的第四流程图;
图7为本发明视频编码方法实施例二的第五流程图;
图8为本发明视频编码设备实施例一的结构示意图;
图9为本发明视频编码设备实施例二的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中,基于CABAC编码的基本思想是采用{0,1}区间上的一个数来表示一个二进制的字符串的,它的本质是为整个二进制字符串分配一个码字,而不是给二进制字符串中的每个二进制字符分别指定码字,基于CABAC编码是采用区间递进的方法寻找这个码字的,它从第一个字符确定的初始区间开始,逐个字符的读入,在每一个字符出现后递归地划分当前区间,将当前字符对应的子区间取出,作为处理下一个字符的当前区间,直到最后一个字符处理完,得到最终的区间。本发明实施例中将第一字符的初始区间表示第一字符的当前区间,第一字符的目标区间表示为在第二字符出现后所取出的第一字符对应的子区间,其中,第二字符为和第一字符相邻的在第一字符后进行编码的字符,将第二字符的初始区间表示为第二字符的当前区间,由于第一字符的子区间作为第二字符的当前区间,所以第一个字符的目标区间为第二个字符的初始区间。
本发明实施例中,一个二进制字符的区间是由该二进制字符的区间长度和该二进制字符的区间下限决定的,一个二进制字符的区间可表示为interval=[ivlLow,ivlLow+ivlRange],ivllow表示二进制字符的区间下限,ivlRange表示二进制字符的区间长度。
一个待编码的字符串,需要逐个确定每个二进制字符对应的初始区间和目标区间,,由于本发明实施例中第一字符的目标区间为第二字符的初始区间,又因为一个二进制字符的区间表示为:interval=[ivlLow,ivlLow+ivlRange],所以本发明实施例中涉及的第一个字符的目标区间长度为第二个字符的初始区间长度,第一个字符的目标区间下限为第二个字符的初始区间下限。
在基于CABAC的算术编码中,用大概率字符(valMPS)表示最有可能出现的状态,对应0和1中概率大的那个字符,小概率字符(valLPS)表示最不可能出现的状态,对应0和1中概率小的那一个字符,用变量PLPS表示小概率字符(valLPS)的概率值,那么大概率字符(valLPS)的概率值PMPS=1-PLPS,为了降低运算复杂度提高编码速度,在现有技术中可通过查表来计算二进制字符的小概率区间长度(ivlLPS),PLPS用特定数值的概率索引值(pStateIdx)表示,pStateIdx=0,1,2,……63,当前二进制字符的初始区间长度(ivlRange)用特定数值的当前区间量化索引值(qCodIRangeIdx)表示,qCodIRangeIdx=0,12,3,那么根据pStateIdx和qCodIRangeIdx的4*64的二维表格rangeTabLPS就可确定出当前二进制字符的小概率区间长度(ivlLPS),rangeTabLPS表格如表1所示,从表1中可得出:
ivlLPS=rangeTabLPS[pStateIdx][qCodIRangeIdx] (1)
其中,
qCodIRangeIdx=(ivlRange>>6)&3 (2)
表1rangeTabLPS表格
具体地,在现有技术中,根据当前二进制字符为大概率字符(valMPS)还是小概率字符(valLPS)按照以下方式对当前二进制字符的初始区间进行更新。
若:binval=valMPS
则:ivlRange’=ivlRange–ivlLPS;ivlLow’=ivlLow;
若:binval=valLPS
则:ivlRange’=ivlRange–ivlMPS;ivlLow’=ivlLow+ivlMPS。
其中,ivlRange=ivlLPS+ivlMPS,ivlRange为当前二进制字符的初始区间长度,ivlRange’为更新后的当前二进制字符初始区间长度,ivlLow为当前二进制字符初始区间下限,ivlLow’为更新后的当前二进制字符初始区间下限,ivlLPS为当前二进制字符的小概率区间长度,ivlMPS为当前二进制字符的大概率区间长度。
现有技术中获得更新后的当前二进制字符初始区间长度和初始区间下限后,对更新后的当前二进制字符初始区间长度和初始区间下限同时进行归一化处理,并生成当前二进制字符对应的比特。
本发明实施例中,为了提高了视频编码的数据吞吐量,提高了CABAC模块工作频率和数据处理性能,将在每个时钟周期内连续处理两个二进制字符,在每个时钟周期内连续处理两个字符并不是两个字符处理通道的简单级联,而是在连续处理两个字符时,尽量缩短第一字符和第二字符编码过程中的关键路径,并将连续的第一字符和第二字符的CABAC编码过程分为四级流水,第一级流水为:确定第一字符、第二字符的第一候选值、第二候选值;第二级流水为:得到第一字符、第二字符的第一字符目标区间长度、第二字符的目标区间长度;第三级流水为:得到第一字符、第二字符的第一字符目标区间下限、第二字符目标区间下限;第四级流水为:得到第一字符对应的比特、得到第二字符生成的比特;这四级流水之间没有严格的先后步骤的限制,比如在第二级流水中在确定完第一字符的第一字符目标区间长度后,第二级流水中确定第二字符的第二字符的目标区间长度与第三级流水中确定第一字符的目标区间下限可同时进行,这种四级流水的方式连续处理两个字符,能够使CABAC编码在性能上实现在一个时钟周期内能够连续的处理两个字符。
图2为本发明视频编码方法实施例一的流程图,如图2所示,本实施例用于基于CABAC的算术编码中,具体可通过硬件的方式实现,则该方法包括:
步骤101,在当前周期内,获取待编码字符串中连续的第一字符和第二字符。
本实施例中,当前周期为当前的一个编码器的时钟周期,待编码字符串中连续的第一字符和第二字符是指待编码字符串中相邻的两个字符。在一个编码器的时钟周期内可完成两个连续字符的编码。具体地,第一字符和第二字符都为二进制字符,取值为0或1,在基于CABAC的算术编码中,用大概率字符(valMPS)表示最有可能出现的状态,对应0和1中概率大的那个字符,小概率字符(valLPS)表示最不可能出现的状态,对应0和1中概率小的那一个字符,所以在连续的两个字符中,第一字符或第二字符可以为大概率字符或小概率字符,本实施例不作限定。
步骤102,确定第一字符对应的第一候选值,并确定第二字符对应的第二候选值。
在本实施例中,根据第一字符的概率模型索引值(pStateIdx1),可确定第一字符的第一候选值,第一候选值为表格1中第一字符对应的概率模型索引值(pStateIdx1)对应的四个小概率区间长度,第一候选值可表示为Pre_ivlLPS1,Pre_ivlLPS1的查表方式可表示为公式(3)所示;根据第二字符的概率模型索引值(pStateIdx2),可确定第二字符的第二候选值,第二候选值为表格1中第二字符的概率模型索引值对应的四个小概率区间长度,第二候选值可表示为Pre_ivlLPS2,Pre_ivlLPS2的查表方式可表示为公式(4)所示。那么确定第一字符对应的第一候选值与确定第二字符对应的第二候选值是相对独立的,第二字符对应的第二候选值的确定不会依赖与第一字符有关的参数。
Pre_ivlLPS1=rangeTabLPS[pStateIdx1] (3)
Pre_ivlLPS2=rangeTabLPS[pStateIdx2] (4)
所以本实施例中,将确定第一字符对应的第一候选值以及确定第二字符对应的第二候选值的过程从得到第一字符的目标区间长度以及得到第二字符的目标区间长度的过程中剥离了出来。使连续的第一字符和第二字符确定完对应的第一候选值和第二候选值之后,能够确定下一个连续的第一字符和第二字符对应的第一候选值和第二候选值,所以确定第一字符、第二字符对应的第一候选值、第二候选值的过程就形成了本实施例视频编码方法的第一级流水。
步骤103,根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度;根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度,第二字符的初始区间长度为第一字符的目标区间长度。
本实施例中,第一字符的初始区间长度为与第一字符相邻的上一个连续的第一字符和第二字符中的第二字符的目标区间长度。
本实施例中,将根据第一候选值和第一字符初始区间长度,得到第一字符的目标区间长度过程与得到第一字符的目标区间下限的过程相剥离,使得得到第一字符的目标区间长度后,就可将第一字符的目标区间长度作为第二字符的初始区间长度,以供第二字符得到第二字符的目标区间长度使用,减少了第二个字符获取第一字符目标区间长度的路径。
本实施例中,将根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度过程与得到第二字符的目标区间下限的过程相剥离,使得得到第二字符的目标区间长度后,就可将第二字符的目标区间长度作为下一个连续的第一字符的初始区间长度,以供下一个连续的第一字符得到目标区间长度使用,减少了下一个连续的第一个字符得到第一字符目标区间长度的路径。所以将得到第一字符的目标区间长度并得到第二字符的目标区间长度的过程就形成了本实施例视频编码方法的第二级流水。
步骤104,根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限;根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限,第二字符的初始区间下限为第一字符的目标区间下限。
本实施例中,第一字符的初始区间下限为与第一字符相邻的上一个连续的第一字符和第二字符中的第二字符的目标区间下限。
本实施例中,将根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限的过程和根据第一字符的目标区间下限得到第一字符对应的比特的过程相剥离,使第一字符得到第一字符的目标区间下限后,就可将第一字符的目标区间下限作为第二字符的初始区间下限,以供第二字符确定目标区间下限使用,减少了第二个字符获取第一字符目标区间下限的路径。
本实施例中,将根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限的过程和根据第二字符的目标区间下限得到第二字符对应的比特的过程相剥离,使第二字符得到第二字符的目标区间下限后,就可将第二字符的目标区间下限作为下一个连续的第一字符的初始区间下限,以供下一个连续的第一字符得到目标区间下限使用,减少了下一个连续的第一个字符得到目标区间下限的路径。所以得到第一字符的目标区间下限并得到第二字符的目标区间下限的过程就形成了本实施例视频编码方法的第三级流水。
步骤105,根据第一字符的目标区间下限得到第一字符对应的比特,根据第二字符的目标区间下限得到第二字符对应的比特。
本实施例中,第一字符对应的比特为待编码的字符串中由对第一字符算术编码过程中对应的输出的比特,一个字符对应输出的比特可以为一个比特也可以为多个比特。
本实施例中,将根据第一字符的目标区间下限生成第一字符对应的比特的过程与根据第一字符的目标区间长度和第一字符的初始区间下限得到第一字符的目标区间下限的过程相剥离,可一次性的生成第一字符对应的比特,将根据第二字符的目标区间下限生成第二字符对应的比特的过程与根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限的过程相剥离,可一次性的生成第二字符对应的比特。所以生成第一字符对应的比特并生成第二字符对应的比特的过程就形成了本实施例视频编码方法的第四级流水。
本实施例中,这四级流水之间没有严格的先后步骤的限制。
本实施例提供的一种视频编码方法,通过在在当前周期内获取待编码字符串中连续的第一字符和第二字符;确定第一字符对应的第一候选值,并确定第二字符对应的第二候选值;根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度;根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度,第二字符的初始区间长度为第一字符的目标区间长度;根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限;根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限,第二字符的初始区间下限为第一字符的目标区间下限;根据第一字符的目标区间下限得到第一字符对应的比特,根据第二字符的目标区间下限得到第二字符对应的比特。将确定第一字符、第二字符的第一候选值、第二候选值的过程,得到第一字符、第二字符的第一字符目标区间长度、第二字符的目标区间长度过程,得到第一字符、第二字符的第一字符目标区间下限、第二字符目标区间下限过程以及得到第一字符对应的比特、第二字符对应的比特的过程都相互进行剥离,缩短了处理连续的两个字符中的每个字符的关键路径,进而实现了在每个时钟周期内连续处理两个二进制字符,提高了视频编码的数据吞吐量,提高了CABAC模块工作频率和数据处理性能。
图3为本发明视频编码方法实施例二的第一流程图,如图3所示,本实施例用于基于CABAC的算术编码中,具体可通过硬件的方式实现,在该方法中在一个时钟周期内能够实现连续两个二进制字符的编码,将连续的第一字符和第二字符的CABAC编码过程分为四级流水,第一级流水为:确定第一字符、第二字符的第一候选值、第二候选值;第二级流水为:得到第一字符、第二字符的第一字符目标区间长度、第二字符的目标区间长度;第三级流水为:得到第一字符、第二字符的第一字符目标区间下限、第二字符目标区间下限;第四级流水为:得到第一字符对应的比特、第二字符生成的比特,具体的在四级流水中实现连续两个二进制字符的编码的方法包括:
步骤201,在当前周期内获取待编码字符串中连续的第一字符和第二字符,并确定第一字符对应的第一候选值,确定第二字符对应的第二候选值。
本实施例中,步骤201和本发明视频编码方法实施例一的步骤101-步骤102相同,在此不一一赘述。
本实施例中,将确定第一字符对应的第一候选值以及确定第二字符对应的第二候选值的过程从确定第一字符的目标区间长度以及确定第二字符的目标区间长度的过程中剥离了出来。使连续的第一字符和第二字符确定完对应的第一候选值和第二候选值之后,能够确定下一个连续的第一字符和第二字符对应的第一候选值和第二候选值,所以确定第一字符、第二字符对应的第一候选值、第二候选值的过程就形成了本实施例视频编码方法的第一级流水。
步骤202,根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度;根据第一字符的大小判决值确定第一字符的中间变量;确定第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度所需的第一字符对应的第一移位次数。
具体地,在步骤202中根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度的过程可分为以下三个步骤执行,如图4所示。
步骤202a,根据第一候选值和第一字符的初始区间长度,确定第一字符的小概率区间长度。
本实施例中,根据第一字符的初始区间长度(ivlRange1),依据公式(2)确定第一个字符的初始区间量化索引值(qCodIRangeIdx1),并根据第一个字符的初始区间量化索引值(qCodIRangeIdx1)在表格1中第一个字符概率模型索引值(pStateIdx1)对应的第一候选值(Pre_ivlLPS1)中确定真正的第一个字符的小概率区间长度(ivlLPS1),ivlLPS1的查表方式可表示为公式(5)所示。
ivlLPS1=Pre_ivlLPS1[qCodIRangeIdx1] (5)
其中,第一候选值为表格1中第一字符对应的概率模型索引值(pStateIdx1)对应的四个小概率区间长度。
步骤202b,根据第一字符的小概率区间长度、第一字符的初始区间长度以及第一字符的大小判决值得到第一字符的中间区间长度。
本实施例中,大小判决值(valJDG)表示当前二进制字符是否为大概率字符(ivlMPS),若当前二进制字符为大概率字符(valMPS),则大小判决值取值(valJDG)取值为1,若当前二进制字符为小概率字符(valLPS),则大小判决值取值(valJDG)取值为0,所以,第一字符的大小判决值(valJDG1)是指当第一字符为大概率字符(valMPS)时,第一字符的大小判决值(valJDG1)取值为1,当第一字符为小概率字符(valLPS)时,第一字符的大小判决值(valJDG1)取值为0。
具体地,
若:valJDG1=1
则:ivlRange1’=ivlRange1–ivlLPS1;
若:valJDG1=0
则:ivlRange1’=ivlRange1–ivlMPS1。
其中,ivlRange1=ivlLPS1+ivlMPS1,valJDG1为第一个字符的大小判决值,ivlRange1为第一字符的初始区间长度,ivlRange1’为第一字符的中间区间长度,ivlLPS1为第一字符的小概率区间长度,ivlMPS为第一字符的大概率区间长度。
步骤202c,对第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度。
具体地,第一字符的中间区间长度的取值可能小于28,所以将第一字符的中间区间长度向左移位,直到第一字符的中间区间长度的取值在[28,29]之间,该取值在[28,29]之间的第一字符的中间区间长度即为第一字符的目标区间长度。
在步骤202中根据第一字符的大小判决值确定第一字符的中间变量;确定第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度所需的第一字符对应的第一移位次数具体包括:
根据第一字符的大小判决值(valJDG1)确定第一字符的中间变量(low_offset1)具体为:
若:valJDG1=1,则:low_offset1=0;
若:valJDG1=0,则:low_offset1=ivlMPS1。
本实施例中,确定第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度所需的第一字符对应的第一移位次数(lz_num1),具体为:
将第一字符的中间区间长度向左移位,判断第一字符的中间区间长度的取值是否在[28,29]之间,当第一字符的中间区间长度的取值在[28,29]之间时,此时左移的次数为第一字符对应的第一移位次数(lz_num1)。
在本实施例中,在根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度过程中,第一字符的初始区间长度为上一个连续的第二字符的目标区间长度,所以在得到上一个连续的第二字符的目标区间长度后作为本次连续的第一字符的初始区间长度。而本次连续的第一字符的目标区间长度将作为本次连续的第二字符的初始区间长度。在根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度过程中将确定两个参数,一个为第一字符的中间变量,另一个为第一字符对应的第一移位次数,这两个参数将作为第三级流水中确定第一个字符的目标区间下限所使用的参数。
步骤203,根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度;根据第二字符的大小判决值确定第二字符的中间变量;确定第二字符的中间区间长度进行移位处理,得到第二字符的目标区间长度所需的第二字符对应的第二移位次数。
具体地,步骤203中根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度的过程可分为以下三个步骤执行如图5所示。
步骤203a,根据第二候选值和第二字符的初始区间长度,确定第二字符的小概率区间长度。
本实施例中,根据第二字符的初始区间长度(ivlRange2),依据公式(2)确定第二个字符的初始区间量化索引值(qCodIRangeIdx2),并根据第二个字符的初始区间量化索引值(qCodIRangeIdx2)在表格1中第二个字符概率模型索引值(pStateIdx2)对应的第二候选值(Pre_ivlLPS2)中确定真正的第二个字符的小概率区间长度(ivlLPS2),ivlLPS2的查表方式可表示为公式(6)所示。ivlLPS2
=Pre_ivlLPS2[qCodIRangeIdx2] (6)
其中,第二候选值为表格1中第二字符对应的概率模型索引值(pStateIdx2)对应的四个小概率区间长度。
步骤203b,根据第二字符的小概率区间长度、第一字符的目标区间长度以及第二字符的大小判决值得到第二字符的中间区间长度。
本实施例中,第二字符的大小判决值(valJDG2)是指当第二字符为大概率字符(valMPS)时,第二字符的大小判决值(valJDG2)取值为1,当第二字符为小概率字符(valLPS)时,第二字符的大小判决值(valJDG2)取值为0。
具体地,
若:valJDG2=1
则:ivlRange2’=ivlRange1”–ivlLPS2;
若:valJDG2=0
则:ivlRange2’=ivlRange1”–ivlMPS2;
其中,ivlRange1”=ivlRange2=ivlLPS2+ivlMPS2,valJDG2为第二个字符的大小判决值,ivlRange2为第二字符的初始区间长度,ivlRange1”为第一字符的目标区间长度,ivlRange2’为第二字符的中间区间长度。ivlLPS2为第二字符的小概率区间长度,ivlMPS2为第二字符的大概率区间长度。
步骤203c,对第二字符的中间区间长度进行移位处理,得到第二字符的目标区间长度。
具体地,第二字符的中间区间长度的取值可能小于28,所以将第二字符的中间区间长度的取值向左移位,直到第二字符的中间区间长度的取值在[28,29]之间,该取值在[28,29]之间的第二字符的中间区间长度即为第二字符的目标区间长度。
在步骤203中根据第二字符的大小判决值确定第二字符的中间变量;确定第二字符的中间区间长度进行移位处理,得到第二字符的目标区间长度所需的第二字符对应的第二移位次数具体包括:
根据第二字符的大小判决值(valJDG2)确定第二字符的中间变量(low_offset2)具体为:
若:valJDG2=1,则:low_offset2=0;
若:valJDG2=0,则:low_offset2=ivlMPS2。
本实施例中,确定第二字符的中间区间长度进行移位处理,得到第二字符的目标区间所需的第二字符对应的第二移位次数(lz_num2),具体为:
将第二字符的中间区间长度的取值向左移位,判断第二字符的中间区间长度的取值是否在[28,29]之间,当第二字符的中间区间长度的取值在[28,29]之间时,此时左移的次数为第二字符对应的第二移位次数(lz_num2)。
在本实施例中,在根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度过程中,第一字符的目标区间长度为第二字符的初始区间长度,而本次连续的第二字符的目标区间长度将作为下一个连续的第一字符的初始区间长度。在根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度过程中将确定两个参数,一个为第二字符的中间变量另一个为第二字符对应的第二移位次数,这两个参数将作为第三级流水中确定第二个字符的目标区间下限所使用的参数。
本实施例中,第一字符的初始区间长度为上一个连续的第二字符的目标区间长度,在得到上一个连续的第二字符的目标区间长度后就可确定本次连续的第一字符的初始区间长度,减少了获取本次连续的第一字符目标区间长度的路径,本次连续的第一字符的目标区间长度为第二字符的初始区间长度,在得到本次连续的第一字符的目标区间长度后就可确定本次连续的第二字符的初始区间长度,减少了获取本次连续的第二字符目标区间长度的路径,并且第二字符的目标区间长度作为下一个连续的第一字符的初始区间长度,以供下一个连续的第一字符确定目标区间长度使用,也进一步的减少了下一个连续的第一个字符获取第一字符目标区间长度的路径。所以在本实施例中,确定本次连续的第一字符和第二字符的目标区间长度并确定第一个字符和第二字符目标区间下限所使用的参数过程就构成了本实施例视频编码方法的第二级流水。
在第二级流水中步骤202中根据第一字符的大小判决值确定第一字符的中间变量;确定第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度所需的第一字符对应的第一移位次数的过程与步骤203中根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度的过程可同时进行,也可先后进行,本实施例不做限制。
步骤204,根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限;根据第一字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第一字符对应的第一溢出比特信息。
具体地,步骤204中可根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限的过程分为以下两个步骤执行,如图6所示。
步骤204a,根据第一字符的中间变量和第一字符的初始区间下限,得到第一字符的中间区间下限。
具体地,ivlLow1’=ivlLow1+low_offset1;
若:low_offset1=0,则:ivlLow1’=ivlLow1+0;
若:low_offset1=ivlMPS1,则:ivlLow1’=ivlLow1+ivlMPS1;
其中,ivlLow1为第一字符的初始区间下限,ivlLow1’为第一字符的中间区间下限,low_offset1为第一字符的中间变量,ivlMPS1为第一字符的大概率区间长度。
步骤204b,根据第一字符对应的第一移位次数,对第一字符的中间区间下限进行移位处理,根据第一字符的中间区间下限移位处理过程中的被移出位数值,得到第一字符的目标区间下限。
本实施例中,第一字符的中间区间下限进行移位处理,得到第一字符的目标区间下限时所需的移位次数等于第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度时的第一移位次数,表示为lz_num1。
具体地,根据第一字符的中间区间下限移位处理过程中的被移出位数值,得到第一字符的目标区间下限为:
当第一字符的中间区间下限移位处理过程中的被移出位数值的每位数值都为1时,第一字符的目标区间下限的取值为第一字符的中间区间下限移位处理后的取值;
当第一字符的中间区间下限移位处理过程中的被移出位数值的每位数值不都为1时,第一字符的目标区间下限的最高位的取值为0,除最高位的其余位的取值为第一字符的中间区间下限移位处理后的对应位的取值。
举例说明为:若ivlLow1=000111011,第一移位次数lz_num1=4,进行左移4位后,被移出位的数值为0001,进行移位处理后的ivlLow1’=110110000,那么第一字符的目标区间下限为ivlLow1”=010110000。
其中ivlLow1表示第一字符的中间区间下限,ivlLow1’表示对第一字符的中间区间下限进行移位处理后的取值,ivlLow1”表示第一字符的目标区间下限。
在步骤204中根据第一字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第一字符对应的第一溢出比特信息具体为:
第一溢出比特信息(low_overflow1)是一个二进制数,该第一溢出比特信息(low_overflow1)的最后一位数值为第一字符的中间区间下限移位处理后的最高位数值,第一溢出比特信息(low_overflow1)的高N1位数值为第一字符的中间区间下限移位处理后被移出位数值,其中N1=lz_num1,该第一溢出比特信息(low_overflow1)的总位数为N1+1位。
举例说明为:假设第一字符的中间区间下限ivlLow1’=0000101000,lz_num1=3,即对其左移三位,得到的第一字符的目标区间下限ivlLow1”=0101000000,第一溢出比特信息(low_overflow1)前三位数值为000,最后一位数值为0,即low_overflow1=0000。
本实施例中,根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限,第一字符的初始区间下限为上一个连续的第二字符的目标区间下限,所以在得到上一个连续的第二字符的目标区间下限后作为本次连续的第一字符的初始区间下限。而本次连续的第一字符的目标区间下限将作为本次连续的第二字符的初始区间下限。在根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限的过程中将确定一个参数,为第一溢出比特信息,该参数为第四级流水中生成第一个字符对应的比特所使用的参数。
步骤205,根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限;根据第二字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第二字符对应的第二溢出比特信息。
具体地,步骤205中根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限的过程分为以下两个步骤执行,如图7所示。
步骤205a,根据第二字符的中间变量和第一字符目标区间下限,得到第二字符的中间区间下限。
具体地,ivlLow2’=ivlLow1”+low_offset2;
若:low_offset2=0,则:ivlLow2’=ivlLow1”+0;
若:low_offset2=ivlMPS2,则:ivlLow2’=ivlLow1”+ivlMPS2。
其中,ivlLow1”=ivlLow2,ivlLow2为第二字符的初始区间下限,ivlLow2’为第二字符的中间区间下限,ivlLow1”为第一字符的目标区间下限,low_offset2为第二字符的中间变量,ivlMPS1为第二字符的大概率区间长度。
步骤205b,根据第二字符对应的第二移位次数,对第二字符的中间区间下限进行移位处理,根据第二字符的中间区间下限移位处理过程中的被移出位数值,得到第二字符的目标区间下限。
本实施例中,第二字符的中间区间下限进行移位处理,得到第二字符的目标区间下限时所需的移位次数等于第二字符的中间区间长度进行移位处理,得到第二字符的目标区间长度时的第二移位次数,表示为lz_num2。
具体地,根据第二字符的中间区间下限移位处理过程中的被移出位数值,得到第二字符的目标区间下限为:
当第二字符的中间区间下限移位处理过程中的被移出位数值的每位数值都为1时,第二字符的目标区间下限的取值为第二字符的中间区间下限移位处理后的取值;
当第二字符的中间区间下限移位处理过程中的被移出位数值的每位数值不都为1时,第二字符的目标区间下限的最高位的取值为0,除最高位的其余位的取值为第一字符的中间区间下限移位处理后的对应位的取值。
在步骤205中根据第二字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第二字符对应的第二溢出比特信息具体为:
第二溢出比特信息(low_overflow2)是一个二进制数,该第二溢出比特信息(low_overflow2)的最后一位数值为第二字符的中间区间下限移位处理后的最高位数值,第二溢出比特信息(low_overflow2)的高N2位数值为第二字符的中间区间下限移位处理后被移出位数值,其中N2=lz_num2,该第二溢出比特信息(low_overflow2)的总位数为N2+1位。
本实施例中,根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限,第二字符的初始区间下限为本次连续的第一字符的目标区间下限,所以在得到本次连续的第一字符的目标区间下限后作为本次连续的第二字符的初始区间下限。而本次连续的第二字符的目标区间下限将作为下一次连续的第一字符的初始区间下限。在根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限的过程中将确定一个参数,为第二溢出比特信息,该参数作为第四级级流水中生成第二个字符对应的比特所使用的参数。
本实施例中,第一字符的初始区间下限为上一个连续的第二字符的目标区间下限,在得到上一个连续的第二字符的目标区间下限后就可确定本次连续的第一字符的初始区间下限,减少了获取本次连续的第一字符目标区间下限的路径,本次连续的第二字符的初始区间下限为第一字符的目标区间下限,在得到本次连续的第一字符的目标区间下限后就可确定本次连续的第二字符的初始区间下限,减少了获取本次连续的第二字符目标区间下限的路径,并且第二字符的目标区间下限作为下一个连续的第一字符的初始区间下限,以供下一个连续的第一字符确定目标区间下限使用,也进一步的减少了下一个连续的第一个字符获取第一字符目标区间下限的路径。所以在本实施例中,得到本次连续的第一字符和第二字符的目标区间下限并得到第一字符对应的比特、第二字符对应的比特所使用的参数过程就构成了本实施例视频编码方法的第三级流水。
在第三级流水中步骤204中根据第一字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第一字符对应的第一溢出比特信息的过程与步骤205中根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限的过程可同时进行,也可先后进行,本实施例不做限制。
步骤206,根据第一溢出比特信息得到第一字符对应的比特,并根据第二溢出比特信息得到第二字符对应的比特。
本实施例中,第一溢出比特信息(low_overflow1)与得到的第一字符对应的比特(GenBit1)的关系如下:
若:low_overflow1相邻两位的数值为00,则GenBit1的数值为0;
若:low_overflow2相邻两位的数值为01,则GenBit1的数值不确定,需根据后续输出的比特进行确定,具体确定的方法为现有技术,在此不再详细说明;
若:low_overflow1相邻两位的数值为1x,则GenBit1的数值为1,其中x表示该数值不确定,可为0也可为1;
第二溢出比特信息(low_overflow2)与得到的第二字符对应的比特(GenBit2)的关系与第一溢出比特信息(low_overflow1)与生成的第一字符对应的比特(GenBit1)的关系相同,在此不再一一赘述。
本实施例中,根据第一溢出比特信息得到第一字符对应的比特,并根据第二溢出比特信息得到第二字符对应的比特的过程构成了本实施例视频编码方法的第四级流水。
步骤207,第一字符对应的比特和第二字符对应的比特进行合并处理。
根据第一溢出比特信息得到第一字符对应的比特,并根据第二溢出比特信息得到第二字符对应的比特后,将第一比特和第二比特进行合并处理。
举例说明为:若low_overflow1=0001,low_overflow2=01111,则GenBit1=00x,GenBit2=xxxx,合并后的数值为00xxxxxx,其中有五个x取值不确定,这五个x的取值需根据后续输出的比特数值进行确定,具体的如何根据后续生成的比特确定x为现有技术内容,本实施例不再一一赘述。
本实施例中,通过将确定第一字符对应的第一候选值,并确定第二字符对应的第二候选值的过程与获取第一字符、第二字符的第一字符的目标区间长度、第二字符的目标区间长度的过程相剥离,形成第一级流水,并且将得到第一字符、第二字符的第一字符的目标区间长度、第二字符的目标区间长度的过程与得到第一字符、第二字符的第一字符的目标区间下限、第二字符的目标区间下限的过程相剥离,形成第二级流水,将得到第一字符、第二字符的第一字符的目标区间下限、第二字符的目标区间下限的过程与得到第一字符对应的比特,第二字符对应的比特的过程相剥离,形成第三级流水,并将得到第一字符对应的比特,第二字符对应的比特的过程形成四级流水,缩短了处理连续的两个字符中的每个字符的关键路径,能够在一个时钟周期内连续处理两个二进制字符,提高了视频编码的数据吞吐量,提高了CABAC模块工作频率和数据处理性能。
图8为本发明视频编码设备实施例一的结构示意图,如图8所示,本实施例中的视频编码设备可以实现本发明图1所示实施例一的技术方案,如图8所示,该视频编码设备可以包括:获取模块801、确定模块802和处理模块803。
获取模块801,用于获取待编码字符串中的连续的第一字符和第二字符。
确定模块802,用于确定第一字符对应的第一候选值,并用于确定第二字符对应的第二候选值。
处理模块803,用于根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度;根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度,第二字符的初始区间长度为第一字符的目标区间长度。
处理模块803,还用于根据第一字符的目标区间长度和第一字符的初始区间下限,得到第一字符的目标区间下限;根据第二字符的目标区间长度和第一字符的目标区间下限,得到第二字符的目标区间下限,第二字符的初始区间下限为第一字符的目标区间下限。
处理模块803,还用于根据第一字符的目标区间下限得到第一字符对应的比特,根据第二字符的目标区间下限得到第二字符对应的比特。
本实施例的设备,可以用于执行图2所示方法实施例一的技术方案,其实现原理和技术效果类似,此处不再赘述。
图9为本发明视频编码设备实施例二的结构示意图,如图9所示,本实施例中的视频编码设备可以实现本发明图3-图7所示实施例二的技术方案,如图9所示,该视频编码设备可以包括:获取模块901、确定模块902和处理模块903。
本实施例在本发明视频编码设备实施例一的基础上,该视频编码设备中的处理模块903,具体用于:根据第一候选值和第一字符的初始区间长度,确定第一字符的小概率区间长度;根据第一字符的小概率区间长度、第一字符的初始区间长度以及第一字符的大小判决值得到第一字符的中间区间长度;对第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度。
进一步地,处理模块903,还用于:根据第一候选值和第一字符的初始区间长度,得到第一字符的目标区间长度之后,根据第一字符的大小判决值确定第一字符的中间变量;确定第一字符的中间区间长度进行移位处理,得到第一字符的目标区间长度所需的第一字符对应的第一移位次数。
处理模块903,具体用于:根据第一字符的中间变量和第一字符的初始区间下限,得到第一字符的中间区间下限;根据第一字符对应的第一移位次数,对第一字符的中间区间下限进行移位处理,根据第一字符的中间区间下限移位处理过程中的被移出位数值,得到第一字符的目标区间下限。
进一步地,处理模块903,还用于:根据第一字符的中间区间下限移位处理过程中的被移出位数值,得到第一字符的目标区间下限之后,根据第一字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第一字符对应的第一溢出比特信息。
处理模块903,具体用于:根据第一溢出比特信息得到第一字符对应的比特。
进一步地,处理模块903,具体用于:根据第二候选值和第二字符的初始区间长度,确定第二字符的小概率区间长度;根据第二字符的小概率区间长度、第一字符的目标区间长度以及第二字符的大小判决值得到第二字符的中间区间长度;对第二字符的中间区间长度进行移位处理,得到第二字符的目标区间长度。
进一步地,处理模块903,还用于:根据第二候选值和第一字符的目标区间长度,得到第二字符的目标区间长度,第二字符的初始区间长度为第一字符的目标区间长度之后,根据第二字符的大小判决值确定第二字符的中间变量;并确定第二字符的中间区间长度进行移位处理,得到第二字符的目标区间长度所需的第二字符对应的第二移位次数。
处理模块903,具体用于:根据第二字符的中间变量和第一字符目标区间下限得到第二字符的初始区间下限;根据第二字符对应的第二移位次数,对第二字符的中间区间下限进行移位处理,根据第二字符的中间区间下限移位处理过程中的被移出位数值,得到第二字符的目标区间下限。
进一步地,处理模块903,还用于:根据第二字符的中间区间下限移位处理过程中的被移出位数值,得到第二字符的目标区间下限之后,根据第二字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定第二字符对应的第二溢出比特信息。
处理模块903,具体用于:根据第二溢出比特信息得到第二字符对应的比特。
本实施例的设备,可以用于执行图3-图7所示方法实施例二的技术方案,其实现原理和技术效果类似,此处不再赘述。
本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。
最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。
Claims (14)
1.一种视频编码方法,其特征在于,在当前周期内包括:
获取待编码字符串中的连续的第一字符和第二字符;
确定所述第一字符对应的第一候选值,并确定所述第二字符对应的第二候选值;
根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度;根据所述第二候选值和所述第一字符的目标区间长度,得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度;
根据所述第一字符的目标区间长度和所述第一字符的初始区间下限,得到所述第一字符的目标区间下限;根据所述第二字符的目标区间长度和所述第一字符的目标区间下限,得到所述第二字符的目标区间下限,所述第二字符的初始区间下限为所述第一字符的目标区间下限;
根据所述第一字符的目标区间下限得到所述第一字符对应的比特,根据所述第二字符的目标区间下限得到所述第二字符对应的比特。
2.根据权利要求1所述的方法,其特征在于,所述根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度,具体包括:
根据所述第一候选值和所述第一字符的初始区间长度,确定所述第一字符的小概率区间长度;
根据所述第一字符的小概率区间长度、所述第一字符的初始区间长度以及所述第一字符的大小判决值得到所述第一字符的中间区间长度;
对所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度。
3.根据权利要求2所述的方法,所述根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度之后,还包括:
根据所述第一字符的大小判决值确定所述第一字符的中间变量;确定所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度所需的所述第一字符对应的第一移位次数;
所述根据所述第一字符的目标区间长度和所述第一字符的初始区间下限,得到所述第一字符的目标区间下限,具体包括:
根据所述第一字符的中间变量和所述第一字符的初始区间下限,得到所述第一字符的中间区间下限;
根据所述第一字符对应的第一移位次数,对所述第一字符的中间区间下限进行移位处理,根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限。
4.根据权利要求3所述的方法,其特征在于,所述根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限之后,还包括:
根据所述第一字符的中间区间下限移位处理过程中的被移出位数值和移位处理后的最高位数值,确定所述第一字符对应的第一溢出比特信息;
所述根据所述第一字符的目标区间下限生成所述第一字符对应的比特,具体包括:
根据所述第一溢出比特信息得到所述第一字符对应的比特。
5.根据权利要求1所述的方法,其特征在于,所述根据所述第二候选值和所述第一字符的目标区间长度得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度,具体包括:
根据所述第二候选值和所述第二字符的初始区间长度,确定所述第二字符的小概率区间长度;
根据所述第二字符的小概率区间长度、所述第一字符的目标区间长度以及第二字符的大小判决值得到所述第二字符的中间区间长度;
对所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度。
6.根据权利要求5所述的方法,所述根据所述第二候选值和所述第一字符的目标区间长度,得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度之后,还包括:
根据所述第二字符的大小判决值确定所述第二字符的中间变量;确定所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度所需的所述第二字符对应的第二移位次数;
所述根据所述第二字符的目标区间长度和所述第一字符的目标区间下限,得到所述第二字符的目标区间下限,所述第二字符的初始区间下限为所述第一字符的目标区间下限,具体包括:
根据所述第二字符的中间变量和所述第一字符目标区间下限,得到所述第二字符的中间区间下限;
根据所述第二字符对应的第二移位次数,对所述第二字符的中间区间下限进行移位处理,根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限之后,还包括:
根据所述第二字符的中间区间下限移位处理过程中的所述被移出位数值和移位处理后的最高位数值,确定所述第二字符对应的第二溢出比特信息;
所述根据所述第二字符的目标区间下限生成所述第二字符对应的比特,具体包括:
根据所述第二溢出比特信息得到所述第二字符对应的比特。
8.一种视频编码设备,其特征在于,包括:
获取模块,用于在当前周期内获取待编码字符串中的连续的第一字符和第二字符;
确定模块,用于确定所述第一字符对应的第一候选值,并用于确定所述第二字符对应的第二候选值;
处理模块,用于根据所述第一候选值和所述第一字符的初始区间长度得到所述第一字符的目标区间长度;还用于根据所述第二候选值和所述第一字符的目标区间长度得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度;
所述处理模块,还用于根据所述第一字符的目标区间长度和所述第一字符的初始区间下限,得到所述第一字符的目标区间下限;还用于根据所述第二字符的目标区间长度和所述第一字符的目标区间下限,得到所述第二字符的目标区间下限,所述第二字符的初始区间下限为所述第一字符的目标区间下限;
所述处理模块,还用于根据所述第一字符的目标区间下限得到所述第一字符对应的比特,还用于根据所述第二字符的目标区间下限得到所述第二字符对应的比特。
9.根据权利要求8所述的设备,其特征在于,所述处理模块,具体用于:根据所述第一候选值和所述第一字符的初始区间长度,确定所述第一字符的小概率区间长度;根据所述第一字符的小概率区间长度、所述第一字符的初始区间长度以及所述第一字符的大小判决值得到所述第一字符的中间区间长度;对所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度。
10.根据权利要求9所述的设备,其特征在于,所述处理模块,还用于:根据所述第一候选值和所述第一字符的初始区间长度,得到所述第一字符的目标区间长度之后,根据所述第一字符的大小判决值确定所述第一字符的中间变量;确定所述第一字符的中间区间长度进行移位处理,得到所述第一字符的目标区间长度所需的所述第一字符对应的第一移位次数;所述处理模块,具体用于:根据所述第一字符的中间变量和所述第一字符的初始区间下限,得到所述第一字符的中间区间下限;根据所述第一字符对应的第一移位次数,对所述第一字符的中间区间下限进行移位处理,根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限。
11.根据权利要求10所述的设备,其特征在于,所述处理模块,还用于:所述根据所述第一字符的中间区间下限移位处理过程中的被移出位数值,得到所述第一字符的目标区间下限之后,根据所述第一字符的中间区间下限移位处理过程中的所述被移出位数值和移位处理后的最高位数值,确定所述第一字符对应的第一溢出比特信息;
所述处理模块,具体用于:根据所述第一溢出比特信息得到所述第一字符对应的比特。
12.根据权利要求8所述的设备,其特征在于,所述处理模块,具体用于:根据所述第二候选值和所述第二字符的初始区间长度,确定所述第二字符的小概率区间长度;根据所述第二字符的小概率区间长度、所述第一字符的目标区间长度以及所述第二字符的大小判决值得到所述第二字符的中间区间长度;对所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度。
13.根据权利要求12所述的设备,其特征在于,所述处理模块,还用于:根据所述第二候选值和所述第一字符的目标区间长度,得到所述第二字符的目标区间长度,所述第二字符的初始区间长度为所述第一字符的目标区间长度之后,根据所述第二字符的大小判决值确定所述第二字符的中间变量;并确定所述所述第二字符的中间区间长度进行移位处理,得到所述第二字符的目标区间长度所需的所述第二字符对应的第二移位次数;
所述处理模块,具体用于:根据所述第二字符的中间变量和所述第一字符目标区间下限,得到所述第二字符的中间区间下限;根据所述第二字符对应的第二移位次数,对所述第二字符的中间区间下限进行移位处理,根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限。
14.根据权利要求13所述的设备,其特征在于,所述处理模块,还用于:所述根据所述第二字符的中间区间下限移位处理过程中的被移出位数值,得到所述第二字符的目标区间下限之后,根据所述第二字符的中间区间下限移位处理过程中的所述被移出位数值和移位处理后的最高位数值,确定所述第二字符对应的第二溢出比特信息;
所述处理模块,具体用于:根据所述第二溢出比特信息得到所述第二字符对应的比特。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410204288.4A CN103974066B (zh) | 2014-05-14 | 2014-05-14 | 视频编码方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410204288.4A CN103974066B (zh) | 2014-05-14 | 2014-05-14 | 视频编码方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN103974066A true CN103974066A (zh) | 2014-08-06 |
CN103974066B CN103974066B (zh) | 2017-02-01 |
Family
ID=51243038
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410204288.4A Active CN103974066B (zh) | 2014-05-14 | 2014-05-14 | 视频编码方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103974066B (zh) |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106445890A (zh) * | 2016-07-07 | 2017-02-22 | 湖南千年华光软件开发有限公司 | 数据处理方法 |
CN106484753A (zh) * | 2016-06-07 | 2017-03-08 | 湖南千年华光软件开发有限公司 | 数据处理方法 |
CN107343201A (zh) * | 2017-06-21 | 2017-11-10 | 珠海市杰理科技股份有限公司 | Cabac编码方法和系统 |
WO2019041919A1 (zh) * | 2017-08-30 | 2019-03-07 | 前海中科芯片控股 (深圳)有限公司 | 一种数据编码方法、装置以及存储介质 |
CN109587483A (zh) * | 2015-12-31 | 2019-04-05 | 杭州士兰微电子股份有限公司 | 码流提取模块 |
CN112565776A (zh) * | 2021-02-25 | 2021-03-26 | 北京城建设计发展集团股份有限公司 | 一种视频转码压缩方法及系统 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070080832A1 (en) * | 2005-10-12 | 2007-04-12 | Huawei Technologies Co., Ltd. | Decoding system and method based on context-based adaptive binary arithmetic coding |
US20090196355A1 (en) * | 2006-06-21 | 2009-08-06 | Mobiletouch, Inc | 2-bin parallel decoder for advanced video processing |
CN101600104A (zh) * | 2008-06-02 | 2009-12-09 | 联发科技股份有限公司 | 上下文自适应二进制算术编码的解码单元及解码方法 |
CN101951516A (zh) * | 2010-09-25 | 2011-01-19 | 清华大学 | 基于h.264/avc中cabac的并行编码实现电路及编码方法 |
CN102638680A (zh) * | 2011-02-14 | 2012-08-15 | 珠海全志科技股份有限公司 | 基于硬件的cabac编码方法及系统 |
-
2014
- 2014-05-14 CN CN201410204288.4A patent/CN103974066B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20070080832A1 (en) * | 2005-10-12 | 2007-04-12 | Huawei Technologies Co., Ltd. | Decoding system and method based on context-based adaptive binary arithmetic coding |
US20090196355A1 (en) * | 2006-06-21 | 2009-08-06 | Mobiletouch, Inc | 2-bin parallel decoder for advanced video processing |
CN101600104A (zh) * | 2008-06-02 | 2009-12-09 | 联发科技股份有限公司 | 上下文自适应二进制算术编码的解码单元及解码方法 |
CN101951516A (zh) * | 2010-09-25 | 2011-01-19 | 清华大学 | 基于h.264/avc中cabac的并行编码实现电路及编码方法 |
CN102638680A (zh) * | 2011-02-14 | 2012-08-15 | 珠海全志科技股份有限公司 | 基于硬件的cabac编码方法及系统 |
Non-Patent Citations (1)
Title |
---|
ROBERTO R. OSORIO: "High-Throughput Architecture for H.264/AVC", 《IEEE TRANSACTIONS ON CIRCUITS AND SYSTEMS FOR VIDEO TECHNOLOGY》 * |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109587483A (zh) * | 2015-12-31 | 2019-04-05 | 杭州士兰微电子股份有限公司 | 码流提取模块 |
CN106484753A (zh) * | 2016-06-07 | 2017-03-08 | 湖南千年华光软件开发有限公司 | 数据处理方法 |
CN106484753B (zh) * | 2016-06-07 | 2020-01-03 | 湖南千年华光软件开发有限公司 | 数据处理方法 |
CN106445890A (zh) * | 2016-07-07 | 2017-02-22 | 湖南千年华光软件开发有限公司 | 数据处理方法 |
CN107343201A (zh) * | 2017-06-21 | 2017-11-10 | 珠海市杰理科技股份有限公司 | Cabac编码方法和系统 |
CN107343201B (zh) * | 2017-06-21 | 2019-11-26 | 珠海市杰理科技股份有限公司 | Cabac编码方法和系统 |
WO2019041919A1 (zh) * | 2017-08-30 | 2019-03-07 | 前海中科芯片控股 (深圳)有限公司 | 一种数据编码方法、装置以及存储介质 |
CN112565776A (zh) * | 2021-02-25 | 2021-03-26 | 北京城建设计发展集团股份有限公司 | 一种视频转码压缩方法及系统 |
CN112565776B (zh) * | 2021-02-25 | 2021-07-20 | 北京城建设计发展集团股份有限公司 | 一种视频转码压缩方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN103974066B (zh) | 2017-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN103974066A (zh) | 视频编码方法和设备 | |
US7385535B2 (en) | Decoding system and method based on context-based adaptive binary arithmetic coding | |
KR100750165B1 (ko) | 압축률 향상을 위해 개선된 컨텍스트 모델 선택을 사용하는cabac 부호화 방법 및 장치, 그리고 cabac복호화 방법 및 장치 | |
US7365660B2 (en) | Method and device for decoding syntax element in CABAC decoder | |
US20050012648A1 (en) | Apparatus and methods for entropy-encoding or entropy-decoding using an initialization of context variables | |
KR100717055B1 (ko) | Cabac 복호기에서 복수의 이진 값들을 파이프라인방식에 의하여 복호화하는 방법 및 이를 위한 복호화 장치 | |
JP2008289125A (ja) | 算術復号化装置及びその方法 | |
KR101118089B1 (ko) | 가변장 복호화 장치 및 방법 | |
CN102438145A (zh) | 一种基于Huffman编码的图片无损压缩方法 | |
CA2798125A1 (en) | Method and device for compression of binary sequences by grouping multiple symbols | |
CN100423582C (zh) | 一种用于将待编码数据进行二进制化编码的方法和装置 | |
CN103227924B (zh) | 一种算术编码器及编码方法 | |
CN104378634B (zh) | 输入符号二值化的方法以及从码字中产生索引值的方法 | |
IL235057A (en) | Video parameter coding method, video parameter quantization decoding method, device and program | |
CN102547294A (zh) | 适用于h.264和hevc视频标准的cabac硬件解码器架构 | |
CN104918049A (zh) | 适用于hevc标准的二进制算术编码模块 | |
CN100551064C (zh) | 变长编码方法及装置 | |
KR20170005522A (ko) | 영상 양자화 파라미터 복호 방법 | |
Zahir et al. | A new chain coding based method for binary image compression and reconstruction | |
JP2008118303A (ja) | 復号装置及び復号方法 | |
CN101267559A (zh) | 视频解码器的通用熵解码方法及装置 | |
CN103024380B (zh) | 一种数据的熵编码方法和装置 | |
JP2008311803A (ja) | 算術復号方法、算術復号装置及び算術復号プログラム | |
JP2013009167A (ja) | エントロピー符号化装置、エントロピー復号装置、エントロピー符号化方法及びエントロピー復号方法 | |
US20140247165A1 (en) | Method and system for de-binarization |
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 | ||
TR01 | Transfer of patent right |
Effective date of registration: 20220209 Address after: 550025 Huawei cloud data center, jiaoxinggong Road, Qianzhong Avenue, Gui'an New District, Guiyang City, Guizhou Province Patentee after: Huawei Cloud Computing Technology Co.,Ltd. Address before: 518129 Bantian HUAWEI headquarters office building, Longgang District, Guangdong, Shenzhen Patentee before: HUAWEI TECHNOLOGIES Co.,Ltd. |
|
TR01 | Transfer of patent right |