CN108401158A - 一种上下文自适应二元算术编码重归一化实现方法和装置 - Google Patents
一种上下文自适应二元算术编码重归一化实现方法和装置 Download PDFInfo
- Publication number
- CN108401158A CN108401158A CN201710067638.0A CN201710067638A CN108401158A CN 108401158 A CN108401158 A CN 108401158A CN 201710067638 A CN201710067638 A CN 201710067638A CN 108401158 A CN108401158 A CN 108401158A
- Authority
- CN
- China
- Prior art keywords
- value
- output
- code stream
- determined
- 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.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 51
- 229910002056 binary alloy Inorganic materials 0.000 claims 8
- 235000013399 edible fruits Nutrition 0.000 claims 4
- 238000006073 displacement reaction Methods 0.000 claims 2
- 238000010606 normalization Methods 0.000 claims 1
- 230000003044 adaptive effect Effects 0.000 abstract 2
- 238000010586 diagram Methods 0.000 description 5
- 101001062093 Homo sapiens RNA-binding protein 15 Proteins 0.000 description 1
- 102100029244 RNA-binding protein 15 Human genes 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 230000006835 compression Effects 0.000 description 1
- 238000007906 compression Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/13—Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/124—Quantisation
- H04N19/126—Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
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)重归一化实现方法,获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。本发明还公开了一种上下文自适应二元算术编码重归一化实现装置。
Description
技术领域
本发明涉及多媒体编解码技术,尤其涉及一种上下文自适应二元算术编码(CABAC,Context-Adaptive Binary Arithmetic Coding)重归一化实现方法和装置。
背景技术
多媒体的应用范围日益广泛,消费者对于视频的质量、分辨率的要求也越来越高,这导致视频传输所需要的带宽越来越高。因此,视频编解码方案作为一种重要的技术,被广泛的应用到电视、盒子、手机、监控等各类电子产品中。
熵编码技术是图像和视频压缩的重要技术手段之一,能够有效地去除二进制码流中的冗余信息,降低数据量。CABAC是包括H.265,H.264等编解码方案中采用的主要熵编码技术;重归一化过程是CABAC编码中的一个重要步骤,在一般的实现中,重归一化过程会用到不确定次数的循环,这对于硬件来说难以实现。
因此,如何克服重归一化过程中不确定性,使重归一化适用于硬件实现,是亟待解决的问题。
发明内容
有鉴于此,本发明实施例期望提供一种CABAC重归一化实现方法和装置,克服重归一化过程中不确定性,使重归一化适用于硬件实现。
为达到上述目的,本发明的技术方案是这样实现的:
本发明实施例提供了一种CABAC重归一化实现方法,所述方法包括:
获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;
根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。
上述方案中,所述采用与所述运算通道值对应预设策略对所述编码信息进行重归一化计算,包括:
根据所述运算通道值,进行编码信息左移处理;
根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流。
上述方案中,所述进行编码信息左移处理,包括:
将所述编码区间二进制数左移所述运算通道值数值的位数,并确定为输出编码区间;
从所述区间下限低位开始取9减所述运算通道值之差值位数的所述区间下限的二进制数,并左移与所述运算通道值的数值相同的位数,并确定为输出区间下限。
上述方案中,所述根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流,包括:
将所述区间下限的二进制数右移9减运算通道值之差值位数,并将移位后的值确定为码流输出索引值;
所述码流输出索引值小于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位0,再输出计数器值数值位数的1,否则,将首个比特标志位置0,并输出计数器值数值位数的1;将所述依次输出的值确定为第一输出码流;
所述码流输出索引值大于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位1,在输出计数器值数值位数的0,否则,将首个比特标志位置0,并输出计数器值数值位数的0;将所述依次输出的值确定为第一输出码流;
将从低位开始取所述码流输出索引值中所述运算通道值数值位数的二进制数,并确定为当前码流输出索引值,从预设的所述运算通道值对应索引查找表中确定与所述当前码流输出索引值对应的查表二进制码流和查表二进制宽度值,从低位起输出宽度为所述确定的查表二进制宽度值的所述查表二进制码流,将所述的输出的二进制码流确定为第二输出码流,并同时将所述运算通道值减1后再减所述查表二进制宽度值之差确定为输出的计数器值;
将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流;
所述方法还包括:所述码流输出索引值等于对比阈值时,将计数器值加上运算通道值作为输出的计数器值;
所述对比阈值为2的运算通道值次方减1之差。
上述方案中,所述方法还包括:
当所述运算通道值为1时,将所述第一输出码流确定为重归一化输出码流。
上述方案中,所述预设对应规则,包括:
从小到大预设一个以上的编码区间阈值,并预设各编码区间阈值对应的运算通道值;
确定各编码区间阈值中最小的一个大于所述编码区间的编码区间阈值,将所述编码区间阈值对应的运算通道值确定为所述编码区间对应的运算通道值。
上述方案中,所述编码区间阈值包括:4、8、16、32、64、128、256;
与各编码区间阈值对应的各运算通道值分别为:7、6、5、4、3、2、1。
本发明实施例还提供了一种CABAC重归一化实现装置,所述装置包括:通道确定模块和通道运算模块,其中,
所述通道确定模块,用于获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;
所述通道运算模块,用于根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。
上述方案中,所述通道运算模块,具体用于:
根据所述运算通道值,进行编码信息左移处理;
根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流。
上述方案中,所述通道运算模块,具体用于:
将所述编码区间二进制数左移所述运算通道值数值的位数,并确定为输出编码区间;
从所述区间下限低位开始取9减所述运算通道值之差值位数的所述区间下限的二进制数,并左移与所述运算通道值的数值相同的位数,并确定为输出区间下限。
上述方案中,所述通道运算模块,具体用于:
将所述区间下限的二进制数右移9减运算通道值之差值位数,并将移位后的值确定为码流输出索引值;
所述码流输出索引值小于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位0,再输出计数器值数值位数的1,否则,将首个比特标志位置0,并输出计数器值数值位数的1;将所述依次输出的值确定为第一输出码流;
所述码流输出索引值大于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位1,在输出计数器值数值位数的0,否则,将首个比特标志位置0,并输出计数器值数值位数的0;将所述依次输出的值确定为第一输出码流;
将从低位开始取所述码流输出索引值中所述运算通道值数值位数的二进制数,并确定为当前码流输出索引值,从预设的所述运算通道值对应索引查找表中确定与所述当前码流输出索引值对应的查表二进制码流和查表二进制宽度值,从低位起输出宽度为所述确定的查表二进制宽度值的所述查表二进制码流,将所述的输出的二进制码流确定为第二输出码流,并同时将所述运算通道值减1后再减所述查表二进制宽度值之差确定为输出的计数器值;
将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流;
所述通道运算模块,还用于:
所述码流输出索引值等于对比阈值时,将计数器值加上运算通道值作为输出的计数器值;
所述对比阈值为2的运算通道值次方减1之差。
上述方案中,所述通道运算模块,具体用于:
当所述运算通道值为1时,将所述第一输出码流确定为重归一化输出码流。
上述方案中,所述通道确定模块,具体用于:
从小到大预设一个以上的编码区间阈值,并预设各编码区间阈值对应的运算通道值;
确定各编码区间阈值中最小的一个大于所述编码区间的编码区间阈值,将所述编码区间阈值对应的运算通道值确定为所述编码区间对应的运算通道值。
上述方案中,所述编码区间阈值包括:4、8、16、32、64、128、256;
与各编码区间阈值对应的各运算通道值分别为:7、6、5、4、3、2、1。
本发明实施例所提供的CABAC重归一化实现方法和装置,获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。如此,依照通道对输入码流进行重归一化计算,不用进行不确定的循环处理,克服重归一化过程中不确定性,使重归一化适用于硬件实现。
附图说明
图1为本发明实施例CABAC重归一化实现方法的流程示意图;
图2为本发明实施例现有技术重归一化实现方法流程示意图;
图3为本发明实施例CABAC重归一化实现方法中位输出的流程示意图;
图4为本发明实施例运算通道分配示意图;
图5为本发明实施例CABAC重归一化实现方法通道3具体实现流程示意图;
图6为本发明实施例第二输出码流输出流程示意图;
图7为本发明实施例CABAC重归一化实现装置的组成结构示意图。
具体实施方式
本发明实施例中,获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。
下面结合实施例对本发明再作进一步详细的说明。
本发明实施例提供的CABAC重归一化实现方法,如图1所示,所述方法包括:
步骤110:获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;
现有技术中,CABAC重归一化实现过程如图2所示,其中,Range是编码区间,Low是区间下限,Count是计数器,“<<”表示左移位符号;PutBit()的实现如图3所示,图3中的B表示输入的是0或1,firstBitFlag是输入码流的首个比特标志位;在该过程中输出的0和1的组合即为编码后的码流。如图2所示的CABAC重归一化流程中,涉及到不确定次数的循环,循环次数与Range值有关,不确定次数的循环对于软件来说易于实现,但对于硬件实现时,会导致时序不可控,难以实现。为了克服这一问题,本发明提出了一种改进方案,克服重归一化过程中不确定性,使重归一化适用于硬件实现;
这里,可以由CABAC编码芯片中的硬件逻辑进行重归一化处理;获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间(Range)对应的运算通道(Loop)值;所述预设对应规则可以是:从小到大预设一个以上的编码区间阈值,并预设各编码区间阈值对应的运算通道值;确定各编码区间阈值中最小的一个大于所述编码区间的编码区间阈值,将所述编码区间阈值对应的运算通道值确定为所述编码区间对应的运算通道值;
具体的,所述编码区间阈值可以包括:4、8、16、32、64、128、256;与各编码区间阈值对应的各运算通道值分别为:7、6、5、4、3、2、1;可以根据Range值确定进入相应的运算通道,如Range<4,则loop=7、如Range<8,则loop=6、如Range<16,则loop=5、如Range<32,则loop=4、如Range<64,则loop=3、如Range<128,则loop=2、Range<256,则loop=1如此,共可以有8条通道进行处理,如图4所示,如果Range值超出了256,则可以将Loop值确定为0,Loop值为0时,则什么都不做,完成重归一化过程;当Loop值不为0时,则输入码流的编码信息进入Loop值对应的运算通道进行处理。
步骤120、根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算;
这里,输入码流的编码信息进入到相应的运算通道进行计算,各运算通道根据Loop值确定运算通道的参数,并处理所述输入的码流;这里,如图5所示,以Loop=3为例进行说明。图5中,index是根据区间下限(Low)计算出来的码流输出索引值,“>>”表示右移位符号,“&”表示与符号;
具体的,所述运算通道处理输入的码流编码信息的具体步骤可以并行分两个支路:支路1和支路2进行处理;
在支路1中,如图5步骤1210所示,可以根据所述运算通道值,进行编码信息左移处理;将所述编码区间二进制数左移所述运算通道值数值的位数,并确定为输出编码区间;从所述区间下限低位开始取9减所述运算通道值之差值位数的所述区间下限的二进制数,并左移与所述运算通道值的数值相同的位数,并确定为输出区间下限;其中,各运算通道值与取所述区间下限位数的值的对应关系如表1所示;
表1
以图5中,Loop=3为例,首先将Range左移Loop值3,再根据根据表1,取Low二进制数的低6位,并将Low二进制数的低6位再左移Loop值3;根据表1,当loop=1时,取Low二进制数的8位,当loop=7时,取Low二进制数的2位,所取的位数随着loop值增大以1为步长渐次减小;
在支路2中,如图5步骤1220所示,可以根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流;
具体的,首先,如图5步骤1221所示,可以将所述区间下限的二进制数右移9减运算通道值之差值位数,并将移位后的值确定为码流输出索引值;其中,所述区间下限的二进制数右移位数与运算通道值的对应关系同样如表1所示;
确定码流输出索引值后,如图5步骤1222所示,可以将所述码流输出索引值与第一比较阈值进行比较,其中,所述对比阈值为2的运算通道值次方减1之差,如公式1所示:
2loop-1 (1)
所述码流输出索引值小于对比阈值时,如图5步骤1223所示,执行Putbit(0),可以判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位0,再输出与计数器值数值位数的1,否则,将首个比特标志位置0,并输出与当前计数器值数值位数的1;将所述依次输出的值确定为第一输出码流;
所述码流输出索引值大于对比阈值时,如图5步骤1224所示,执行Putbit(1),可以判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位1,在输出与计数器值数值位数的0,否则,将首个比特标志位置0,并输出与当前计数器值数值位数的0;将所述依次输出的值确定为第一输出码流;
以图5中,Loop=3为例,根据表1,Low右移值为6,将Low右移后的值确定为码流输出索引值(index),将index与对比阈值对比,Loop为3时,所述对比阈值为7;index小于7,则进行图3的流程,并将Putbin(B)中的B设为0;index大于7,则进行图3的流程,并将Putbin(B)中的B设为1,PutBit(0)或PutBit(1)输出的比特流即为第一输出码流;
第一输出码流确定后,如图5步骤1225所示,可以进入子支路PutBin做进一步处理,所述支路PutBin的处理流程如图6所示,将从低位开始取码流输出索引值中与所述运算通道值数值位数的二进制数确定为当前码流输出索引值,并从预设的所述运算通道值对应索引查找表中确定与所述当前码流输出索引值对应的查表二进制码流(lut_bin)和查表二进制宽度值(lut_width),从低位起输出宽度为所述确定的lut_width的lut_bin,将所述的输出的宽度为lut_width的二进制码流确定为第二输出码流,并同时将所述运算通道值减1后再减所述lut_width之差确定为输出的计数器值;将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流;其中,lut_bin和lut_width分别是两个有7个元素的查找表,lut_bin存储的是要输出的二进制述,lut_width存储的是输出多少个bit。保留和输出lut_bin[index]中从低位开始的lut_width[index]个bit。
这里,所述运算通道值对应索引查找表如表2至表7所示,分别对应于运算通道值2至7;
| index | 0 | 1 | 2 |
| lut_bin | 0 | 0 | 1 |
| lut_width | 1 | 0 | 1 |
表2
| index | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
| lut_bin | 00 | 00 | 01 | 00 | 10 | 01 | 11 |
| lut_width | 2 | 1 | 2 | 0 | 2 | 1 | 2 |
表3
表4
| index | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 |
| lut_bin | 0000 | 0000 | 0001 | 0000 | 0010 | 0001 | 0011 | 0000 |
| lut_width | 4 | 3 | 4 | 2 | 4 | 3 | 4 | 1 |
| index | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
| lut_bin | 0100 | 0010 | 0101 | 0001 | 0110 | 0011 | 0111 | 0000 |
| lut_width | 4 | 3 | 4 | 2 | 4 | 3 | 4 | 0 |
| index | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 |
| lut_bin | 1000 | 0100 | 1001 | 0010 | 1010 | 0101 | 1011 | 0001 |
| lut_width | 4 | 3 | 4 | 2 | 4 | 3 | 4 | 1 |
| index | 24 | 25 | 26 | 27 | 28 | 29 | 30 | |
| lut_bin | 1100 | 0110 | 1101 | 0011 | 1110 | 0111 | 1111 | |
| lut_width | 4 | 3 | 4 | 2 | 4 | 3 | 4 |
表5
表6
表7
以图5中,Loop=3为例,Loop为3时,从低位开始取index的3位作为新的index;根据新的index从Loop对应的索引查找表中可以确定lut_width和lut_bin,Loop为3时则从表3中查询,从低位起输出宽度为所述确定的lut_width的lut_bin,将所述的输出的宽度为lut_width的二进制码流确定为第二输出码流;如,index为0的时候,lut_width的值为2,表示输出2bit,则输出码流为“00”;index为1时,lut_width的值为1,表示输出1bit,输出码流为“0”;index为3时,lut_width的值为0,表示不输出码流。输出第二码流时,将2减所述lut_width之差确定输出的计数器值;
最后,第一输出码流和第二输出码流依次输出,可以将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流。
进一步的,如图5步骤1226所示,所述码流输出索引值等于对比阈值时,将当前计数器值加上运算通道值作为输出的计数器值;
以图5中,Loop=3为例,Loop为3时,将所述计数器值加上运算通道值3作为输出的计数器值。
如此,完成了整个CABAC重归一化的处理流程,输出的重归一化输出码流可以作为整个码流的一部份,输出的计数器、输出编码区间和输出的区间下限可以用于后续编码处理。
本发明实施例提供的CABAC重归一化实现装置,如图7所示,所述装置包括:通道确定模块71和通道运算模块72,其中,
所述通道确定模块71,用于获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;
现有技术中,CABAC重归一化实现过程如图2所示,其中,Range是编码区间,Low是区间下限,Count是计数器,“<<”表示左移位符号;PutBit()的实现如图3所示,图3中的B表示输入的是0或1,firstBitFlag是输入码流的首个比特标志位;在该过程中输出的0和1的组合即为编码后的码流。如图2所示的CABAC重归一化流程中,涉及到不确定次数的循环,循环次数与Range值有关,不确定次数的循环对于软件来说易于实现,但对于硬件实现时,会导致时序不可控,难以实现。为了克服这一问题,本发明提出了一种改进方案,克服重归一化过程中不确定性,使重归一化适用于硬件实现;
这里,可以由CABAC编码芯片中的硬件逻辑进行重归一化处理;获取输入码流的编码信息,根据预设对应规则确定编码信息中Range对应的Loop值;所述预设对应规则可以是:从小到大预设一个以上的编码区间阈值,并预设各编码区间阈值对应的运算通道值;确定各编码区间阈值中最小的一个大于所述编码区间的编码区间阈值,将所述编码区间阈值对应的运算通道值确定为所述编码区间对应的运算通道值;
具体的,所述编码区间阈值可以包括:4、8、16、32、64、128、256;与各编码区间阈值对应的各运算通道值分别为:7、6、5、4、3、2、1;可以根据Range值确定进入相应的运算通道,如Range<4,则loop=7、如Range<8,则loop=6、如Range<16,则loop=5、如Range<32,则loop=4、如Range<64,则loop=3、如Range<128,则loop=2、Range<256,则loop=1如此,共可以有8条通道进行处理,如图4所示,如果Range值超出了256,则可以将Loop值确定为0,Loop值为0时,则什么都不做,完成重归一化过程;当Loop值不为0时,则输入码流的编码信息进入Loop值对应的运算通道进行处理;
所述通道运算模块72,用于根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算;
这里,输入码流的编码信息进入到相应的运算通道进行计算,各运算通道根据Loop值确定运算通道的参数,并处理所述输入的码流;这里,如图5所示,以Loop=3为例进行说明。图5中,index是根据Low计算出来的码流输出索引值,“>>”表示右移位符号,“&”表示与符号;
具体的,所述运算通道处理输入的码流编码信息的具体步骤可以并行分两个支路:支路1和支路2进行处理;
在支路1中,如图5步骤1210所示,可以根据所述运算通道值,进行编码信息左移处理;将所述编码区间二进制数左移所述运算通道值数值的位数,并确定为输出编码区间;从所述区间下限低位开始取9减所述运算通道值之差值位数的所述区间下限的二进制数,并左移与所述运算通道值的数值相同的位数,并确定为输出区间下限;其中,各运算通道值与取所述区间下限位数的值的对应关系如表1所示;
以图5中,Loop=3为例,首先将Range左移Loop值3,再根据根据表1,取Low二进制数的低6位,并将Low二进制数的低6位再左移Loop值3;根据表1,当loop=1时,取Low二进制数的8位,当loop=7时,取Low二进制数的2位,所取的位数随着loop值增大以1为步长渐次减小;
在支路2中,如图5步骤1220所示,可以根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流;
具体的,首先,如图5步骤1221所示,可以将所述区间下限的二进制数右移9减运算通道值之差值位数,并将移位后的值确定为码流输出索引值;其中,所述区间下限的二进制数右移位数与运算通道值的对应关系同样如表1所示;
确定码流输出索引值后,如图5步骤1222所示,可以将所述码流输出索引值与第一比较阈值进行比较,其中,所述对比阈值为2的运算通道值次方减1之差,如公式1所示;
所述码流输出索引值小于对比阈值时,如图5步骤1223所示,执行Putbit(0),可以判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位0,再输出与计数器值数值位数的1,否则,将首个比特标志位置0,并输出与当前计数器值数值位数的1;将所述依次输出的值确定为第一输出码流;
所述码流输出索引值大于对比阈值时,如图5步骤1224所示,执行Putbit(1),可以判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位1,在输出与计数器值数值位数的0,否则,将首个比特标志位置0,并输出与当前计数器值数值位数的0;将所述依次输出的值确定为第一输出码流;
以图5中,Loop=3为例,根据表1,Low右移值为6,将Low右移后的值确定为index,将index与对比阈值对比,Loop为3时,所述对比阈值为7;index小于7,则进行图3的流程,并将Putbin(B)中的B设为0;index大于7,则进行图3的流程,并将Putbin(B)中的B设为1,PutBit(0)或PutBit(1)输出的比特流即为第一输出码流;
第一输出码流确定后,如图5步骤1225所示,可以进入子支路PutBin做进一步处理,所述支路PutBin的处理流程如图6所示,将从低位开始取码流输出索引值中与所述运算通道值数值位数的二进制数确定为当前码流输出索引值,并从预设的所述运算通道值对应索引查找表中确定与所述当前码流输出索引值对应的lut_bin和lut_width,从低位起输出宽度为所述确定的lut_width的lut_bin,将所述的输出的宽度为lut_width的二进制码流确定为第二输出码流,并同时将所述运算通道值减1后再减所述lut_width之差确定为输出的计数器值;将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流;其中,lut_bin和lut_width分别是两个有7个元素的查找表,lut_bin存储的是要输出的二进制数,lut_width存储的是输出多少个bit。保留和输出lut_bin[index]中从低位开始的lut_width[index]个bit;
这里,所述运算通道值对应索引查找表如表2至表7所示,分别对应于运算通道值2至7;
以图5中,Loop=3为例,Loop为3时,从低位开始取index的3位作为新的index;根据新的index从Loop对应的索引查找表中可以确定lut_width和lut_bin,Loop为3时则从表3中查询,从低位起输出宽度为所述确定的lut_width的lut_bin,将所述的输出的宽度为lut_width的二进制码流确定为第二输出码流;如,index为0的时候,lut_width的值为2,表示输出2bit,则输出码流为“00”;index为1时,lut_width的值为1,表示输出1bit,输出码流为“0”;index为3时,lut_width的值为0,表示不输出码流。输出第二码流时,将2减所述lut_width之差确定输出的计数器值;
最后将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流。
进一步的,如图5步骤1226所示,所述码流输出索引值等于对比阈值时,将当前计数器值加上运算通道值作为输出的计数器值;
以图5中,Loop=3为例,Loop为3时,将所述计数器值加上运算通道值3作为输出的计数器值。
如此,完成了整个CABAC重归一化的处理流程,输出的重归一化输出码流可以作为整个码流的一部份,输出的计数器、输出编码区间和输出的区间下限可以用于后续编码处理。
在实际应用中,所述通道确定模块71和通道运算模块72均可以由芯片内部的硬件逻辑等实现。
以上所述,仅为本发明的最佳实施例而已,并非用于限定本发明的保护范围,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (14)
1.一种上下文自适应二元算术编码CABAC重归一化实现方法,其特征在于,所述方法包括:
获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;
根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。
2.根据权利要求1所述的方法,其特征在于,所述采用与所述运算通道值对应预设策略对所述编码信息进行重归一化计算,包括:
根据所述运算通道值,进行编码信息左移处理;
根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流。
3.根据权利要求2所述的方法,其特征在于,所述进行编码信息左移处理,包括:
将所述编码区间二进制数左移所述运算通道值数值的位数,并确定为输出编码区间;
从所述区间下限低位开始取9减所述运算通道值之差值位数的所述区间下限的二进制数,并左移与所述运算通道值的数值相同的位数,并确定为输出区间下限。
4.根据权利要求2所述的方法,其特征在于,所述根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流,包括:
将所述区间下限的二进制数右移9减运算通道值之差值位数,并将移位后的值确定为码流输出索引值;
所述码流输出索引值小于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位0,再输出计数器值数值位数的1,否则,将首个比特标志位置0,并输出计数器值数值位数的1;将所述依次输出的值确定为第一输出码流;
所述码流输出索引值大于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位1,在输出计数器值数值位数的0,否则,将首个比特标志位置0,并输出计数器值数值位数的0;将所述依次输出的值确定为第一输出码流;
将从低位开始取所述码流输出索引值中所述运算通道值数值位数的二进制数,并确定为当前码流输出索引值,从预设的所述运算通道值对应索引查找表中确定与所述当前码流输出索引值对应的查表二进制码流和查表二进制宽度值,从低位起输出宽度为所述确定的查表二进制宽度值的所述查表二进制码流,将所述的输出的二进制码流确定为第二输出码流,并同时将所述运算通道值减1后再减所述查表二进制宽度值之差确定为输出的计数器值;
将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流;
所述方法还包括:所述码流输出索引值等于对比阈值时,将计数器值加上运算通道值作为输出的计数器值;
所述对比阈值为2的运算通道值次方减1之差。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述运算通道值为1时,将所述第一输出码流确定为重归一化输出码流。
6.根据权利要求1至5任一项所述的方法,其特征在于,所述预设对应规则,包括:
从小到大预设一个以上的编码区间阈值,并预设各编码区间阈值对应的运算通道值;
确定各编码区间阈值中最小的一个大于所述编码区间的编码区间阈值,将所述编码区间阈值对应的运算通道值确定为所述编码区间对应的运算通道值。
7.根据权利要求6所述的方法,其特征在于,
所述编码区间阈值包括:4、8、16、32、64、128、256;
与各编码区间阈值对应的各运算通道值分别为:7、6、5、4、3、2、1。
8.一种CABAC重归一化实现装置,其特征在于,所述装置包括:通道确定模块和通道运算模块,其中,
所述通道确定模块,用于获取输入码流的编码信息,根据预设对应规则确定编码信息中编码区间对应的运算通道值;
所述通道运算模块,用于根据所述运算通道值,采用与所述运算通道值对应的预设策略对所述编码信息进行重归一化计算。
9.根据权利要求8所述的装置,其特征在于,所述通道运算模块,具体用于:
根据所述运算通道值,进行编码信息左移处理;
根据编码信息中的区间下限确定码流输出索引值,根据所述码流输出索引值确定计数器值,并确定重归一化输出码流。
10.根据权利要求9所述的装置,其特征在于,所述通道运算模块,具体用于:
将所述编码区间二进制数左移所述运算通道值数值的位数,并确定为输出编码区间;
从所述区间下限低位开始取9减所述运算通道值之差值位数的所述区间下限的二进制数,并左移与所述运算通道值的数值相同的位数,并确定为输出区间下限。
11.根据权利要求9所述的装置,其特征在于,所述通道运算模块,具体用于:
将所述区间下限的二进制数右移9减运算通道值之差值位数,并将移位后的值确定为码流输出索引值;
所述码流输出索引值小于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位0,再输出计数器值数值位数的1,否则,将首个比特标志位置0,并输出计数器值数值位数的1;将所述依次输出的值确定为第一输出码流;
所述码流输出索引值大于对比阈值时,判断所述输入码流的首比特标志位是否为0,如果是,则先输出一位1,在输出计数器值数值位数的0,否则,将首个比特标志位置0,并输出计数器值数值位数的0;将所述依次输出的值确定为第一输出码流;
将从低位开始取所述码流输出索引值中所述运算通道值数值位数的二进制数,并确定为当前码流输出索引值,从预设的所述运算通道值对应索引查找表中确定与所述当前码流输出索引值对应的查表二进制码流和查表二进制宽度值,从低位起输出宽度为所述确定的查表二进制宽度值的所述查表二进制码流,将所述的输出的二进制码流确定为第二输出码流,并同时将所述运算通道值减1后再减所述查表二进制宽度值之差确定为输出的计数器值;
将依次输出的所述第一输出码流和第二输出码流确定为重归一化输出码流;
所述通道运算模块,还用于:
所述码流输出索引值等于对比阈值时,将计数器值加上运算通道值作为输出的计数器值;
所述对比阈值为2的运算通道值次方减1之差。
12.根据权利要求11所述的装置,其特征在于,所述通道运算模块,具体用于:
当所述运算通道值为1时,将所述第一输出码流确定为重归一化输出码流。
13.根据权利要求7至12任一项所述的装置,其特征在于,所述通道确定模块,具体用于:
从小到大预设一个以上的编码区间阈值,并预设各编码区间阈值对应的运算通道值;
确定各编码区间阈值中最小的一个大于所述编码区间的编码区间阈值,将所述编码区间阈值对应的运算通道值确定为所述编码区间对应的运算通道值。
14.根据权利要求13所述的装置,其特征在于,
所述编码区间阈值包括:4、8、16、32、64、128、256;
与各编码区间阈值对应的各运算通道值分别为:7、6、5、4、3、2、1。
Priority Applications (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710067638.0A CN108401158B (zh) | 2017-02-07 | 2017-02-07 | 一种上下文自适应二元算术编码重归一化实现方法和装置 |
Applications Claiming Priority (1)
| Application Number | Priority Date | Filing Date | Title |
|---|---|---|---|
| CN201710067638.0A CN108401158B (zh) | 2017-02-07 | 2017-02-07 | 一种上下文自适应二元算术编码重归一化实现方法和装置 |
Publications (2)
| Publication Number | Publication Date |
|---|---|
| CN108401158A true CN108401158A (zh) | 2018-08-14 |
| CN108401158B CN108401158B (zh) | 2021-01-22 |
Family
ID=63093716
Family Applications (1)
| Application Number | Title | Priority Date | Filing Date |
|---|---|---|---|
| CN201710067638.0A Active CN108401158B (zh) | 2017-02-07 | 2017-02-07 | 一种上下文自适应二元算术编码重归一化实现方法和装置 |
Country Status (1)
| Country | Link |
|---|---|
| CN (1) | CN108401158B (zh) |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111818335A (zh) * | 2020-07-03 | 2020-10-23 | Tcl华星光电技术有限公司 | 一种熵编码方法和装置、电子设备 |
Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040175049A1 (en) * | 2003-03-04 | 2004-09-09 | Matsushita Electric Industrial Co., Ltd | Moving image coding method and apparatus |
| CN1630202A (zh) * | 2003-12-17 | 2005-06-22 | 索尼株式会社 | 编码设备、程序和数据处理方法 |
| CN1703089A (zh) * | 2005-06-09 | 2005-11-30 | 清华大学 | 一种数字信号的二值算术编码方法 |
| CN101771879A (zh) * | 2010-01-28 | 2010-07-07 | 清华大学 | 基于cabac的并行归一化编码实现电路及编码方法 |
| CN102638680A (zh) * | 2011-02-14 | 2012-08-15 | 珠海全志科技股份有限公司 | 基于硬件的cabac编码方法及系统 |
| US20130259116A1 (en) * | 2012-03-29 | 2013-10-03 | Hiu-Fai R. Chan | Two Bins Per Clock CABAC Decoding |
| WO2016003130A1 (ko) * | 2014-06-29 | 2016-01-07 | 엘지전자(주) | 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치 |
| CN105791828A (zh) * | 2015-12-31 | 2016-07-20 | 杭州士兰微电子股份有限公司 | 二进制算术编码器及其编码方法 |
-
2017
- 2017-02-07 CN CN201710067638.0A patent/CN108401158B/zh active Active
Patent Citations (8)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| US20040175049A1 (en) * | 2003-03-04 | 2004-09-09 | Matsushita Electric Industrial Co., Ltd | Moving image coding method and apparatus |
| CN1630202A (zh) * | 2003-12-17 | 2005-06-22 | 索尼株式会社 | 编码设备、程序和数据处理方法 |
| CN1703089A (zh) * | 2005-06-09 | 2005-11-30 | 清华大学 | 一种数字信号的二值算术编码方法 |
| CN101771879A (zh) * | 2010-01-28 | 2010-07-07 | 清华大学 | 基于cabac的并行归一化编码实现电路及编码方法 |
| CN102638680A (zh) * | 2011-02-14 | 2012-08-15 | 珠海全志科技股份有限公司 | 基于硬件的cabac编码方法及系统 |
| US20130259116A1 (en) * | 2012-03-29 | 2013-10-03 | Hiu-Fai R. Chan | Two Bins Per Clock CABAC Decoding |
| WO2016003130A1 (ko) * | 2014-06-29 | 2016-01-07 | 엘지전자(주) | 제한된 캐리 연산에 의한 산술 코딩을 수행하기 위한 방법 및 장치 |
| CN105791828A (zh) * | 2015-12-31 | 2016-07-20 | 杭州士兰微电子股份有限公司 | 二进制算术编码器及其编码方法 |
Non-Patent Citations (1)
| Title |
|---|
| 邹旭洪等: "基于重归一化的CABAC编码算法的改进", 《工业控制计算机》 * |
Cited By (1)
| Publication number | Priority date | Publication date | Assignee | Title |
|---|---|---|---|---|
| CN111818335A (zh) * | 2020-07-03 | 2020-10-23 | Tcl华星光电技术有限公司 | 一种熵编码方法和装置、电子设备 |
Also Published As
| Publication number | Publication date |
|---|---|
| CN108401158B (zh) | 2021-01-22 |
Similar Documents
| Publication | Publication Date | Title |
|---|---|---|
| CN116505954B (zh) | 一种霍夫曼编码方法、系统、装置及介质 | |
| CN105791828B (zh) | 二进制算术编码器及其编码方法 | |
| CN106656195A (zh) | 数据压缩、解压缩的方法及系统 | |
| CN107656833A (zh) | 一种crc计算设备及计算方法 | |
| CN105025296B (zh) | 一种高级算术编码器及其实现方法 | |
| CN106992786B (zh) | 一种基带数据压缩方法、装置和系统 | |
| WO2021143634A1 (zh) | 算术编码器及实现算术编码的方法和图像编码方法 | |
| CN108401158A (zh) | 一种上下文自适应二元算术编码重归一化实现方法和装置 | |
| CN107431491A (zh) | 改进的文件压缩和加密 | |
| KR20140136118A (ko) | 이진데이터 압축 및 압축해제 장치와 방법 | |
| CN104980749B (zh) | 算术编码的解码装置及方法 | |
| CN103248896A (zh) | Mq算术编码器 | |
| CN104349165B (zh) | 高性能变长编解码方法及装置 | |
| CN104821881B (zh) | 一种基于压缩和纠错编码的物联网感知层数据安全融合方法 | |
| CN103428502A (zh) | 一种解码方法及解码系统 | |
| CN104469366B (zh) | 一种0阶指数哥伦布码解码器及解码方法 | |
| CN107277553B (zh) | 一种二元算术编码器 | |
| KR101549740B1 (ko) | 이진 데이터의 압축 및 압축해제 방법과 장치 | |
| US20140247165A1 (en) | Method and system for de-binarization | |
| CN106951212A (zh) | 一种快速、低功耗和省面积的极化码解码器中f、g运算单元的硬件架构 | |
| CN104144037B (zh) | 编解码系统与方法 | |
| KR100901280B1 (ko) | 모듈러 3 연산 장치 및 방법 | |
| CN111193648B (zh) | 降低can总线负载的数据发送方法、终端设备及存储介质 | |
| CN205959185U (zh) | 运算电路 | |
| KR101733299B1 (ko) | 이진데이터의 실시간 압축 및 압축해제 방법 |
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 |