CN101106721A - 一种编解码装置及相关编码器 - Google Patents
一种编解码装置及相关编码器 Download PDFInfo
- Publication number
- CN101106721A CN101106721A CN 200610100866 CN200610100866A CN101106721A CN 101106721 A CN101106721 A CN 101106721A CN 200610100866 CN200610100866 CN 200610100866 CN 200610100866 A CN200610100866 A CN 200610100866A CN 101106721 A CN101106721 A CN 101106721A
- Authority
- CN
- China
- Prior art keywords
- amplitude
- encoder
- significant bits
- zero
- encoded
- 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.)
- Pending
Links
Images
Landscapes
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明提供一种编解码装置及相关编码器,所述编码装置中设置有非零幅值编码器,解码装置中设置有非零幅值解码器。编码装置在完成零significant bits的编码后,非零幅值编码器根据预定方式扫描当前块,当扫描到非零significantbits时,对该非零significant bits进行编码,并继续上述扫描编码过程,直到当前块扫描完成;解码装置在完成零significant bits的解码后,非零幅值解码器根据非零幅值编码器的编码方式对非零significant bits进行解码。本发明大大减少了条件判断操作、比较操作、算术运算操作、逻辑运算操作以及内存读取操作,简化了significant bits的编解码过程;从而实现了提高编解码速率,降低编码码率的目的。
Description
技术领域
本发明涉及视频编解码技术领域,具体涉及一种FGS(Fine GranularityScalable,精细粒度可伸缩)增强层的CAVLC(Context Adaptive Variable LengthCoding,上下文自适应变长编码)编解码装置。
背景技术
可伸缩视频编码是一项十分具有吸引力的视频编码技术,它能够通过编码之后的处理来实现视频码流的任意裁减。可伸缩视频编码的码流中包括一个基本层和一个以上的增强层。在熵编码技术上,可选择CABAC(Context AdaptiveBinary Arithmetic Coding,上下文自适应二进制算术编码)或CAVLC技术。
目前,由MPEG(Motion picture experts group,运动图像专家组)和ITU-T(国际电信联盟电信标准化部门)的JVT(Joint video team,MPEG与ITU-T联合标准制定工作组)正在制定的H.264/AVC【5】的分层编码扩展SVC【4】(Scalable video coding,视频分层编码)中,就采用了FGS(Fine GranularityScalable,精细粒度可伸缩)编码技术,FGS编解码结构如附图1所示。
在对SVC的FGS增强层系统进行CAVLC(Context Adaptive Variable LengthCoding(上下文自适应可变长编码)编码时,编码装置的结构如附图2所示。相应的解码装置的结构如附图3所示。
下面结合附图2对CAVLC编码的实现方法进行说明。图2中,实线的黑色箭头表示需要进行编码的码流的流经方向,虚线的黑色箭头表示上下文控制信息的流经方向。上下文控制信息如零或非零系数位置、当前块的最大幅值、幅值大于1的sinificance bit(重要比特位)的符号标记等等。
步骤1、编码装置中存储有编码FGS层的头信息,编码FGS层的头信息包括:编码亮度EOB Shift table(End Of Block块结束标记偏移表),色度EOB Shift table和用于指定最优码本的最优映射表。图2中只示出了部分头信息的编码器,即EOB偏移表变长编码器和最优映射表编码器。
到步骤2、CBC扫描器在significant pass(一种辨识FGS增强层中sinificancebit系数的通道)以CBC(Cyclic Block Coding,循环块编码)扫描方式进行扫描,自适应游程编码器按照(run,sign)方式编码significant bits(FGS增强层中的一种系数)。其中,run表示非零系数前的0系数的个数,sign表示非零系数的符号,正号用0表示,负号用1表示。
下面结合附图4对CBC扫描方式进行说明。
图4中灰色方格中的数据是refnement bits(FGS增强层中的一种系数),refinement bits将在refinement pass(一种辨识FGS增强层中refinement bit系数的通道)中编码,并在significant pass中跳过。如果数据块是4×4的块,则图4中包含4个4×4的块。
针对于图4,CBC扫描器的扫描过程如图4中黑色箭头所指顺序,其扫描的significant bits系数排列如下:
Cycle0:0,-1,1,1,2,对应的编码为:(1,1)(0,0)(0,0)(0,0),其中,Cycle0表示图4中从第1行开始的按照黑色箭头所指顺序的扫描结果。
Cycle1:1,01,-1,001,对应的编码为:(0,0)(1,0)(0,1)(2,0),其中,Cycle1表示图4中从第3行开始的按照黑色箭头所指顺序的扫描结果。
其他的扫描结果和编码结果在此不再罗列。
CBC扫描器在对图4所示的数据块进行了扫描后,自适应游程编码器获得的编码信息如表1所示。
表1
表1中的编码信息只包含系数0和正负号。
CBC扫描器在每个数据块中按照zigzag(z字形)顺序进行扫描,如CBC扫描器按照图4中灰色箭头所指顺序进行扫描,如果当前块中非零系数扫描完成,则继续进行下面步骤3的处理。
步骤3、如果在CBC扫描的当前块中非零系数扫描完成后,当前块中还存在幅值大于1的significant bits,则图2中的幅值大于1的系数编码器进行如下处理:
(1)、按照系数幅值大于1的方式编码EOB符号,同时将最大幅值、幅值大于1的系数的个数信息编码进码流。
(2)、按照zigzag方式扫描当前块,标记幅值大于1的significant bits,对于已经编码的非零significant bits,每遇到一个significant bits,如果significantbits的幅值为1,则标记为0,并编码标记0,否则,即幅值大于1,则标记为1,并编码标记1,直到扫描完最后一个幅值大于1的significant bits,这部分的处理过程包含在图6从步骤600到步骤610的处理过程中。
(3)、按照zigzag方式扫描当前块,在上述(2)中标记为1的位置处按照以下方式编码幅值:
for(UInt uiCutoff=1;uiAbs>uiCutoff && uiCutoff<uiMaxMag;uiCutoff++)
{
xWriteFlag(uiAbs>(uiCutoff+1));
}
其中,uiAbs是当前幅值大于1的系数的幅值,uiMaxMag是当前块的最大幅值。上述代码可以解释为:判断条件uiAbs>uiCutoff和uiCutoff<uiMaxMag是否同时满足,如果不同时满足,跳出本编码过程;如果条件uiAbs>uiCutoff和uiCutoff<uiMaxMag同时满足,继续判断uiAbs是否大于uiCutoff+1,如果大于则写1,否则写0,然后,uiCutoff增加1,并继续判断条件uiAbs>uiCutoff、uiCutoff<uiMaxMag是否同时满足,直到,这两个条件中有一个不满足,跳出本编码过程为止。
这部分的处理过程包含在图6从步骤620到步骤630的处理过程中。
在这个编码步骤中,图2中的幅值大于1的系数编码器将对每个数据块中非零系数进行编码,即图2中的“幅值大于1与否标识”单元对幅值大于1的significant bits进行标记,并存储在存储设备中,幅值大于1的系数编码器根据存储设备中存储的标记进行编码。
对于图4中的数据帧,幅值大于1的系数编码器将编码如表2所示的信息。
表2
在对幅值大于1的系数编码完成后,到步骤5。
步骤4、如果在CBC扫描的当前块中非零系数扫描完成后,当前块中不存在幅值大于1的significant bits,则直接编码EOB符号。到步骤5。
在上述描述过程中,步骤2、步骤3和步骤4是在significant pass编码significantbits,其具体编码流程包含在附图5中。
步骤5、在refinement pass编码refinement bits。
EOB偏移表的编码方法为:如果EOB偏移表的前3个元素中存在最大偏移量,则统计其中等于最大偏移量的元素个数,然后按以下代码编码等于最大偏移量的元素个数uiNumEnd:
if(uiNumEnd)
{
RNOK(xWriteGolomb(uiNumEnd-1,1));
}
else
{
xWriteCode(0x7,3);
}
在为等于最大偏移量的元素个数进行编码后,再编码剩余的元素。
在对EOB偏移表进行解码时,先按以下代码进行逐位解码:
for(UInt uiEc=0;uiEc<3;uiEc++)
{
UInt uiCode;
xGetFlag(uiCode);
if(uiCode)
{
uiNumEnd++;
}else
{
break;
}
}
得到前3个元素中存在的最大偏移量的个数,然后,解码剩下的EOB偏移量元素。
用于指定最优码本的最优映射表pauiTable[uiMaxH]的编码方法如下:
首先,查找最末一个非零元素的索引号,编码此索引号uiW,其次,按照以下代码定长编码uiW:
xWriteCode(uiW,4);
然后,从开始位置到uiW位置编码映射表中非零元素。
从上述步骤3的描述中可以看出,在编码幅值大于1的significant bits时,需要按照扫描顺序先标记出幅值大于1的significant bits以及幅值等于1的significant bits,如将幅值大于1的significant bits的位置标记为1,将幅值等于1的significant bits的位置标记为0;然后,重新从块的首位开始扫描,在标记为1的位置编码幅值大于1的系数的幅值。这样,在上述编码过程中必须往码流中写入大量标记位置的比特位,还要重复进行大量的条件判断操作、比较操作、算术运算操作和逻辑运算操作以及内存读取操作,如表2中标记为灰色方格的部分即是需要进行重复处理的部分。在解码的时候,还必须开辟额外的内存,来存储标记位置信息,同理,解码装置进行解码时,同样需要进行大量的重复处理过程,从而使编解码效率低。
另外,由于编码装置在对EOB偏移表进行编码时,是按位进行的,所以,解码装置需要对EOB偏移表按位解码,编解码效率低。
还有,最优映射表中通常含有大量的零元素,而目前的编码装置通常会对最优映射表进行逐位编码,使码流中存在大量的冗余信息,从而,增加了编解码计算量、以及编码码率。
综上所述,现有的FGS增强层CAVLC编码方法存在计算量大、复杂度高、编码码率高等缺点。
发明内容
本发明的目的在于,提供一种编解码装置及相关编码器,避免了大量的重复处理过程,简化了编解码过程,提高了编解码效率,同时降低了编码码率。
为达到上述目的,本发明提供的一种编解码装置,位于精细粒度可伸缩FGS增强层上下文自适应可变长编码CAVLC系统中,编码装置中设置有非零幅值编码器、EOB偏移表定长编码器和分段式最优映射表编码器,解码装置中设置有非零幅值解码器、EOB偏移表定长解码器和分段式最优映射表解码器;
EOB偏移表定长编码器:接收编码码流,在确定EOB偏移表的前n个元素中存在最大偏移量时,统计前n个元素中最大偏移量元素的个数,并根据m位定长编码所述个数,然后,对EOB偏移表中的其他元素进行编码,并输出编码码流;
分段式最优映射表编码器:接收编码码流,将最优映射表分为多段,并对每一段的最优映射表分别进行编码;在对后续段的最优映射表进行编码时,仅对后续段中的非零元素进行编码;
编码装置在完成零重要比特位significant bits的编码后,非零幅值编码器接收当前块编码码流,根据预定方式扫描当前块,当扫描到非零significant bits时,对该非零significant bits进行编码,并继续上述扫描编码过程直到当前块扫描完成,输出编码码流;
EOB偏移表定长解码器:接收编码码流,根据m位定长对所述编码后的个数进行解码,然后,对所述编码后的其他元素进行解码,并输出;
分段式最优映射表解码器:接收编码码流,对所述编码后的各段最优映射表分别进行解码,并输出;
解码装置在完成零significant bits的解码后,非零幅值解码器接收当前块编码码流,根据非零幅值编码器的编码方式对非零significant bits进行解码,并输出。
所述非零幅值编码器对非零significant bits进行编码的过程为:
将幅值为1的significant bits编码为0;
将幅值大于1、且小于当前块最大幅值的significant bits编码为:significantbits的幅值减1的差个1和一个0;
将当前块最大幅值的significant bits编码为:significant bits的幅值减1的差个1。
所述非零幅值解码器对编码后的非零significant bits进行解码的过程为:
设置非零significant bits的幅值变量的初始值;
依次读取该significant bits的编码,在读到1时,幅值变量递增或递减,在读到0、或者幅值变量大于等于当前块的最大幅值时,对该significant bits的解码过程结束,非零幅值解码器根据幅值变量确定该非零significant bits的幅值。
所述n包括3。
所述m包括2。
所述分段式最优映射表编码器包括:二分式最优映射表编码器;
二分式最优映射表编码器将最优映射表分为前后两段,对前半部分中的元素进行编码,并查找后半部分最末一个非零元素的索引号并编码,然后,对后半部分的起始位置到所述索引号的位置中的非零元素进行编码。
本发明提供一种编码装置,所述编码装置中设置有基于预测的自适应游程编码器、非零系数矫正编码单元和幅值大于1的系数的矫正式编码器;
基于预测的自适应游程编码器:接收编码码流,将当前块中非零significantbits的符号统一预测为预定符号,仅对非零significant bits前的连续零significantbits的个数进行编码,并输出编码码流;
非零系数校正编码单元:接收编码码流,在当前块最大幅值为1时,根据最大幅值等于1的方式编码EOB,并根据预定方式扫描当前块,为扫描到的幅值为1、-1的significant bits进行区别编码,并输出编码码流;
幅值大于1的系数的矫正式编码器:接收编码码流,在当前块最大幅值大于1时,根据最大幅值大于1的方式编码EOB,对幅值大于1的系数对应的符号进行编码,根据幅值对非零系数进行区别映射,编码映射后的数值,并输出。
幅值大于1的系数的矫正式编码器的映射方式包括:
2*(sig-1),sig>0;
f(sig)={
-2*sig-1,sig<0;
其中:sig为significant bits的值。
本发明提供一种非零幅值编码器,位于精细粒度可伸缩FGS增强层上下文自适应可变长编码CAVLC系统中,所述非零幅值编码器包括:扫描模块和第一编码模块;
扫描模块:接收当前块编码码流,根据预定方式扫描当前块;
第一编码模块:在扫描模块扫描到非零significant bits时,对该非零significant bits进行编码,直到当前块扫描编码完成,输出编码码流。
第一编码模块:在扫描模块扫描到非零significant bits时,将幅值为1的significant bits编码为0,将幅值大于1、且小于当前块最大幅值的significant bits编码为:significant bits的幅值减1的差个1和一个0,将当前块最大幅值的significant bits编码为:significant bits的幅值减1的差个1,直到当前块扫描编码完成,输出编码码流。
本发明提供一种EOB偏移表定长编码器,所述EOB偏移表定长编码器包括:统计模块和第二编码模块;
统计模块:接收编码码流,在确定EOB偏移表的前n个元素中存在最大偏移量时,统计前n个元素中最大偏移量元素的个数;
第二编码模块:根据m位定长编码统计模块统计的个数,然后,对EOB偏移表中的其他元素进行编码,并输出编码码流。
本发明提供一种分段式最优映射表编码器,所述分段式最优映射表编码器将最优映射表分为多段,每段最优映射表分别对应一个编码模块;
各编码模块分别接收编码码流,并分别对其对应段的最优映射表进行编码;在对后续段的最优映射表进行编码时,仅对后续段中的非零元素进行编码。
所述分段式最优映射表编码器为:二分式最优映射表编码器,所述二分式最优映射表包括:前段编码模块和后段编码模块;
前段编码模块:接收编码码流,对最优映射表前半部分中的元素进行编码,并输出编码码流;
后段编码模块:接收编码码流,查找后半部分最末一个非零元素的索引号并编码,然后,对后半部分的起始位置到所述索引号的位置中的非零元素进行编码,并输出编码码流。
通过上述技术方案的描述可知,本发明通过在一次扫描过程中完成对非零significant bits的编码,大大减少了条件判断操作、比较操作、算术运算操作、逻辑运算操作以及内存读取操作,简化了significant bits的编码过程;通过采用定长编码方法对EOB偏移表进行编码,充分利用了统计规律,提高了编解码速度;通过对最优映射表进行分段编码,避免了对最优映射表中冗余信息的编码,进一步减少了编解码的计算量、减少了码流中携带的编码信息;本发明还可以采用先预测非零significant bits的符号,然后对符号进行校正的方法来进行significant bits编码,减少了码流中携带的编码信息;从而通过本发明提供的技术方案实现了简化FGS增强层的CAVLC编解码技术方案、提高编解码速率,降低编码码率的目的。
附图说明
图1是FGS编解码结构示意图;
图2是现有技术的编码装置的结构示意图;
图3是现有技术的解码装置的结构示意图;
图4是现有技术的CBC扫描方式示意图;
图5是现有技术的在significant pass中编码significant bits的流程图;
图6是现有技术的对非零significant bits进行编码的流程图;
图7是本发明实施例的编码装置的结构示意图一;
图8是本发明实施例的解码装置的结构示意图;
图9是本发明实施例的对非零significant bits进行编码的流程图;
图10是本发明实施例的编码装置的结构示意图二。
具体实施方式
本发明提供的FGS增强层的CAVLC编解码装置的核心技术内容为:编码装置在完成零significant bits的编码后,根据预定方式扫描当前块,当扫描到非零significant bits时,对该非零significant bits进行编码,并继续上述扫描编码过程,直到当前块扫描完成;解码装置在完成零significant bits的解码后,根据非零幅值编码器的编码方式对非零significant bits进行解码。这样,编码装置避免了大量的条件判断操作、比较操作、算术运算操作和逻辑运算操作以及内存读取操作等,简化了非零significant bits的编解码过程,提高了编解码装置的编解码效率。
为了进一步简化非零significant bits的编解码过程,本发明还对编解码装置中的EOB偏移表的编解码过程、最优映射表的编解码过程进行了改进,下面结合附图对上述技术方案进行详细描述。
本发明提供的FGS增强层的CAVLC编码装置如附图7所示,FGS增强层的CAVLC解码装置如附图8所示。
图7中,FGS增强层的CAVLC编码装置包括:EOB偏移表定长编码器、二分式最优映射表编码器、CBC扫描器、自适应游程编码器、存储设备、非零幅值编码器和refinement bits编码器。其中,二分式最优映射表编码器是分段式最优映射表编码器中的一种。
图8中,FGS增强层的CAVLC解码装置包括:EOB偏移表定长解码器、二分式最优映射表解码器、CBC扫描器、自适应游程解码器、存储设备、非零幅值解码器和refinement bits解码器。其中,二分式最优映射表解码器是分段式最优映射表解码器中的一种。
在图7、图8中,本发明主要涉及EOB偏移表定长编码器、二分式最优映射表编码器、非零幅值编码器、EOB偏移表定长解码器、二分式最优映射表解码器和非零幅值解码器的改进,下述描述内容主要是对这几个改进的部分进行描述的,其他没有改进的内容,在本实施方式中不再详细说明。
EOB偏移表定长编码器采用定长方式对EOB偏移表进行编码,EOB偏移表定长编码器包括:统计模块和第二编码模块。具体的编码方式可以为:统计模块统计EOB偏移表的前n个元素如前3个元素中等于最大偏移量的元素的个数uiNumEnd,然后,第二编码模块按照下面的代码以m位定长如2位定长对个数uiNumEnd进行编码:
XWriteCode(uiNumEnd,2);
在对最大偏移量的元素个数uiNumEnd进行编码后,第二编码模块对EOB偏移表中剩余的元素进行编码,这里的剩余的元素即除了前3个元素之外的元素。
相对应的,EOB偏移表定长解码器采用定长方式对编码后的EOB偏移表进行解码,具体的解码方式可以为:EOB偏移表定长解码器按照m位定长如2位定长对编码后的最大偏移量的元素个数uiNumEnd进行解码,具体的解码代码为:
xGetCode(uiNumEnd,2);
在对最大偏移量的元素个数uiNumEnd进行解码后,对EOB偏移表元素中剩余的元素进行编码,这里的剩余的元素即除了前3个元素之外的元素。
二分式最优映射表编码器对最优映射表进行编码的方法为:
设定最优映射表的长度为uiMaxH,最优映射表的一半长度为uiHalfH,将最优映射表分成前半部分和后半部分,二分式最优映射表编码器中的前段编码模块对最优映射表的前半部分元素进行编码,后段编码模块对最优映射表的半部分元素进行编码。
二分式最优映射表编码器中的后段编码模块对最优映射表的后半部分元素进行编码时,首先查找最优映射表的后半部分的最末一个非零元素的索引号uiW,并按照代码xWriteGolomb(uiW-uiHalfH,1)对该索引号uiW进行编码,然后,对最优映射表的后半部分的起始位置到uiW位置中的非零元素进行编码。
二分式最优映射表解码器首先对编码后的最优映射表的前半部分进行解码,并对索引号uiW进行解码,然后,对最优映射表的后半部分的起始位置到uiW位置中的非零元素进行解码。
二分式最优映射表解码器对最优映射表的后半部分的最末一个非零元素的索引号uiW进行解码的代码可以为如下形式:
UInt uiSym=0;
xGetGolomb(uiSym,1);
uiW=uiSym+uiHalfH;
由于最优映射表中的后面通常会有大量的零元素,所以,在采用上述本发明的二分式最优映射表编码器对最优映射表进行编码后,避免了码流中的冗余信息,从而降低了编码码率。
在编码装置完成零significant bits的编码后,即在自适应游程编码器对当前块中的非零系数扫描完成后,如果当前块中还存在幅值大于1的significant bits,则非零幅值编码器开始对非零系数进行扫描编码,非零幅值编码器包括:扫描模块和第一编码模块,其具体实现过程主要包括如下两个步骤:
步骤1、非零幅值编码器中的第一编码模块按照存在系数幅值大于1的方式编码EOB符号,同时,第一编码模块将当前块中的最大幅值、幅值大于1的系数的个数信息编码到码流中。
步骤2、非零幅值编码器中的扫描模块按照预定扫描方式如zigzag方式扫描当前块,对于每一个非零significant bit,第一编码模块按如下方式进行编码:
for(UInt uiCutoff=1;uiAbs>=uiCutoff && uiCutoff<uiMaxMag;uiCutoff++)
{
xWriteFlag(uiAbs>uiCutoff);
}
其中:uiAbs是当前非零significant bit的幅值,uiMaxMag是当前块中最大的幅值,uiCutoff为初始值为1的变量。当然,非零幅值编码器也可以采用其他代码来实现编码,在此不再例举。
下面以一个具体的例子对利用上述代码进行编码的过程进行说明。
设定uiMaxMag=3、uiCutoff的初始值为1。
非零幅值编码器中的扫描模块扫描到幅值为2的significant bit,此时,uiAbs为2大于值为1的uiCutoff,而且,值为1的uiCutoff小于值为3的uiMaxMag,循环条件满足,进入上述代码的循环体,由于uiAbs为2大于值为1的uiCutoff,条件成立,所以,非零幅值编码器中的第一编码模块先为这个幅值为2的significantbit写1;然后,uiCutoff递增1。
非零幅值编码器中的第一编码模块再次判断循环条件是否满足,此时,uiAbs为2等于值为2的uiCutoff,而且,值为2的uiCutoff小于值为3的uiMaxMag,循环条件满足,进入上述代码的循环体,由于uiAbs为2不大于值为2的uiCutoff,条件不成立,所以,非零幅值编码器中的第一编码模块再为这个幅值为2的significant bit写0;然后,uiCutoff递增1。
此时,uiCutoff为3,循环条件不满足,退出该循环体。非零幅值编码器为该幅值为2的significant bit的编码过程结束。非零幅值编码器为该幅值为2的significant bit的编码结果为10。
非零幅值编码器按照如上方式对当前块中每一个幅值为非零的系数都进行编码,直到当前块中所有的幅值为大于1的系数都进行了编码。上述非零幅值编码器对非零幅值的系数进行编码的过程包含在图9的步骤900中。(图9中900这个步骤是对非零幅值的系数进行编码,而这个步骤的具体内容是上述描述的内容)
对应的,在解码装置完成零significant bits的解码后,即在自适应游程解码器对当前块中的非零系数扫描完成后,如果当前块中还存在幅值大于1的significant bits,则非零幅值解码器开始对非零系数进行扫描解码,其具体实现过程主要包括如下两个步骤:
步骤1、非零幅值解码器解码出当前块中的最大幅值uiMaxMag、以及幅值大于1的系数个数信息。
步骤2、非零幅值解码器按照预定扫描方式如zigzag方式扫描当前块,对于每一个编码后的非零significant bit,按如下方式进行解码:
for(UInt uiCutoff=1;uiCutoff<uiMaxMag;uiCutoff++)
{
xGetFlag(uiBit);
if(uiBit)
{
uiSymbol++;
}
else
{
break;
}
}
其中:uiBit是当前要解码的非零系数幅值的当前比特位,uiMaxMag是当前块中最大的幅值,uiCutoff和uiSymbol均为初始值为1的变量。UiCutoff的初始值也可以不为1,这样,条件uiCutofi<uiMaxMag会有所改变。当然,uiSymbol的初始值也可以不为1,当uiSymbol的初始值为0时,在完成了上述解码过程后,uiSymbol还需要加1后才能作为非零系数幅值。
在跳出上述循环体后,uiSymbol的数值即为非零幅值解码器对编码后的当前非零significant bit进行解码的结果。非零幅值解码器按照zigzag扫描顺序把解码得到的uiSymbol写入相应的非零系数位置。非零幅值解码器采用上述方法对当前块中所有编码后的非零系数均进行解码处理。当然,非零幅值解码器也可以采用其他代码来实现解码,在此不再例举。
续前例,设定uiMaxMag=3、uiCutoff和uiSymbol的初始值均为1。
非零幅值解码器扫描到编码为10的significant bit,此时,值为1的uiCutoff小于值为3的uiMaxMag,进入上述解码代码的循环体,非零幅值解码器通过xGetFlag(uiBit)首先读取10中的1,由于uiBit为1,if(uiBit)成立,所以,uiSymbol的值变为2。然后,uiCutoff递增1。
非零幅值编码器再次判断循环条件是否满足,此时,uiCutoff为2,小于值为3的uiMaxMag,循环条件满足,进入上述解码代码的循环体,非零幅值解码器通过xGetFlag(uiBit)读取10中的0,由于uiBit为0,if(uiBit)不成立,所以,退出上述解码代码的循环体。
非零幅值解码器为编码后的10进行解码的结果为2。
本发明提供的另外一种编码装置如附图10所示。
图10中的编码装置包括:EOB偏移表变长编码器、最优映射表编码器、CBC扫描器、基于预测的自适应游程编码器、非零系统矫正编码器、幅值大于1的系数的矫正式编码器和refinement bits编码器。
相应的,针对图10的编码装置,解码装置包括:EOB偏移表变长解码器、最优映射表解码器、CBC扫描器、基于预测的自适应游程解码器、非零系统矫正解码器、幅值大于1的系数的矫正式解码器和refinement bits解码器。解码装置的图应该和编码装置的图相对应,在本申请文件中不再示出解码装置的结构示意图。
图10中的编码装置实现CAVLC编码的方法包括如下步骤:
步骤1、编码装置中存储有编码FGS层的头信息,编码FGS层的头信息包括:编码亮度EOB Shift table,色度EOB Shift table和用于指定最优码本的最优映射表。图10中只示出了部分头信息的编码器,即EOB偏移表变长编码器和最优映射表编码器。
到步骤2、基于预测的自适应游程编码器在CBC扫描编码过程中,先预测非零significant bits的符号都是正号,这样,基于预测的自适应游程编码器在CBC扫描编码过程中,只对significant pass中的非零significant bits前的连续零的个数进行编码就可以了,即只编码run,直到基于预测的自适应游程编码器对当前块中最后一个非零significant bit前的连续零的个数run编码完成。基于预测的自适应游程编码器不需要按照原来的(run,sign)方式进行编码。
由于采用了run编码方式,所以,在解码装置中,基于预测的自适应游程解码器每解码一个run,则根据扫描方式在相应的位置填充run个0;基于预测的自适应游程解码器在发现没有EOB符号,则在后面位置填充1说明该位置是非零的significant bit。
到步骤3、非零系数矫正编码器从存储设备中读取当前块中非零系数信息,并统计当前块中非零significant bits的总数,幅值大于1的总数、最大significantbit的绝对值即幅值和符号,将幅值大于1的系数的幅值标记为maxMag,将幅值最大的significant bit的符号标记为maxSign。到步骤4、如果当前块中不存在幅值大于1的significant bits,到步骤5;如果当前块中存在幅值大于1的significant bits,到步骤6。
在步骤5、非零系数矫正编码器对当前块中幅值等于1的significant bits进行编码,具体编码过程包括:
(1)、由于当前块中非零Significant bits的总数和非零Significant bits的位置是已知的,而且,当前块中所有非零Significant bits的幅值都等于1,所以,非零系数矫正编码器以最大幅值等于1的方式编码EOB。
(2)、非零系数矫正编码器根据预定的扫描方式从当前块的开始位置起扫描整个块,每遇到一个非零significant bits,如果系数等于1,则编码一个0,否则,即significant bits等于-1,编码一个1。直到对当前块的非零significant bits编码完成。
在步骤6、幅值大于1的系数的矫正式编码器对当前块中非零幅值的significant bits进行编码,具体编码过程为:由于当前块中非零系数的个数即非零Significant bits的总数、最大significant bit的绝对值即最大幅值和符号是已知的,所以,幅值大于1的系数的矫正式编码器按照存在幅值大于1的方式编码EOB,即同时写入幅值大于1的significant bit的个数NumMagG1和maxMag。到步骤7。
在步骤7、幅值大于1的系数的矫正式编码器写入maxMag对应的符号。到步骤8。
在步骤8、幅值大于1的系数的矫正式编码器按照以下映射公式将非零系数Significant bits映射成f(sig):
2*(sig-1),sig>0;
f(sig)={
-2*sig-1,sig<0;
其中:sig为significant bit。
幅值大于1的系数的矫正式编码器对f(sig)进行编码。
重复上述步骤2至步骤8,直到编码装置将significant通道编码完成。然后,refinement bits编码器对renfinement bits进行编码。
与图10对应的解码装置的解码过程与上述编码过程相对应,在此不再详细描述。
图10中的EOB偏移表变长编码器可以替换为EOB偏移表定长编码器,相应的解码装置中的EOB偏移表变长解码器可以替换为EOB偏移表定长解码器;图10中的最优映射表编码器可以替换为二分式最优映射表编码器,相应的解码装置中的最优映射表解码器可以替换为二分式最优映射表解码器。EOB偏移表定长编码器、二分式最优映射表编码器等的描述如上述针对图7、图8中的描述,在此不再详细说明。
上述非零幅值编码器、EOB偏移表定长编码器和分段式最优映射表编码器等都可以单独应用在编码装置中,相应的,非零幅值解码器、EOB偏移表定长解码器和分段式最优映射表解码器也可以单独应用在解码装置中,在此不再详细描述。
虽然通过实施例描绘了本发明,本领域普通技术人员知道,本发明有许多变形和变化而不脱离本发明的精神,如上述描述中是以二分式最优映射表编码器为例对分段式最优映射表编码器进行描述的,分段式最优映射表编码器还可以为其他形式,而且,上述映射函数也可以为其他方式,本发明的申请文件的权利要求包括这些变形和变化。
Claims (13)
1.一种编解码装置,位于精细粒度可伸缩FGS增强层上下文自适应可变长编码CAVLC系统中,其特征在于,编码装置中设置有非零幅值编码器、EOB偏移表定长编码器和分段式最优映射表编码器,解码装置中设置有非零幅值解码器、EOB偏移表定长解码器和分段式最优映射表解码器;
EOB偏移表定长编码器:接收编码码流,在确定EOB偏移表的前n个元素中存在最大偏移量时,统计前n个元素中最大偏移量元素的个数,并根据m位定长编码所述个数,然后,对EOB偏移表中的其他元素进行编码,并输出编码码流;
分段式最优映射表编码器:接收编码码流,将最优映射表分为多段,并对每一段的最优映射表分别进行编码;在对后续段的最优映射表进行编码时,仅对后续段中的非零元素进行编码;
编码装置在完成零重要比特位significant bits的编码后,非零幅值编码器接收当前块编码码流,根据预定方式扫描当前块,当扫描到非零significant bits时,对该非零significant bits进行编码,并继续上述扫描编码过程直到当前块扫描完成,输出编码码流;
EOB偏移表定长解码器:接收编码码流,根据m位定长对所述编码后的个数进行解码,然后,对所述编码后的其他元素进行解码,并输出;
分段式最优映射表解码器:接收编码码流,对所述编码后的各段最优映射表分别进行解码,并输出;
解码装置在完成零significant bits的解码后,非零幅值解码器接收当前块编码码流,根据非零幅值编码器的编码方式对非零significant bits进行解码,并输出。
2.如权利要求1所述的装置,其特征在于,所述非零幅值编码器对非零significant bits进行编码的过程为:
将幅值为1的significant bits编码为0;
将幅值大于1、且小于当前块最大幅值的significant bits编码为:significantbits的幅值减1的差个1和一个0;
将当前块最大幅值的significant bits编码为:significant bits的幅值减1的差个1。
3.如权利要求2所述的装置,其特征在于,所述非零幅值解码器对编码后的非零significant bits进行解码的过程为:
设置非零significant bits的幅值变量的初始值;
依次读取该significant bits的编码,在读到1时,幅值变量递增或递减,在读到0、或者幅值变量大于等于当前块的最大幅值时,对该significant bits的解码过程结束,非零幅值解码器根据幅值变量确定该非零significant bits的幅值。
4.如权利要求1或2或3所述的装置,其特征在于,所述n包括3。
5.如权利要求1或2或3所述的装置,其特征在于,所述m包括2。
6.如权利要求1或2或3所述的装置,其特征在于,所述分段式最优映射表编码器包括:二分式最优映射表编码器;
二分式最优映射表编码器将最优映射表分为前后两段,对前半部分中的元素进行编码,并查找后半部分最末一个非零元素的索引号并编码,然后,对后半部分的起始位置到所述索引号的位置中的非零元素进行编码。
7.一种编码装置,其特征在于,所述编码装置中设置有基于预测的自适应游程编码器、非零系数矫正编码单元和幅值大于1的系数的矫正式编码器;
基于预测的自适应游程编码器:接收编码码流,将当前块中非零significantbits的符号统一预测为预定符号,仅对非零significant bits前的连续零significantbits的个数进行编码,并输出编码码流;
非零系数校正编码单元:接收编码码流,在当前块最大幅值为1时,根据最大幅值等于1的方式编码EOB,并根据预定方式扫描当前块,为扫描到的幅值为1、-1的significant bits进行区别编码,并输出编码码流;
幅值大于1的系数的矫正式编码器:接收编码码流,在当前块最大幅值大于1时,根据最大幅值大于1的方式编码EOB,对幅值大于1的系数对应的符号进行编码,根据幅值对非零系数进行区别映射,编码映射后的数值,并输出。
8.如权利要求7所述的装置,其特征在于,幅值大于1的系数的矫正式编码器的映射方式包括:
其中:sig为significant bits的值。
9.一种非零幅值编码器,位于精细粒度可伸缩FGS增强层上下文自适应可变长编码CAVLC系统中,其特征在于,所述非零幅值编码器包括:扫描模块和第一编码模块;
扫描模块:接收当前块编码码流,根据预定方式扫描当前块;
第一编码模块:在扫描模块扫描到非零significant bits时,对该非零significant bits进行编码,直到当前块扫描编码完成,输出编码码流。
10.如权利要求9所述的非零幅值编码器,其特征在于:
第一编码模块:在扫描模块扫描到非零significant bits时,将幅值为1的significant bits编码为0,将幅值大于1、且小于当前块最大幅值的significant bits编码为:significant bits的幅值减1的差个1和一个0,将当前块最大幅值的significant bits编码为:significant bits的幅值减1的差个1,直到当前块扫描编码完成,输出编码码流。
11.一种EOB偏移表定长编码器,其特征在于,所述EOB偏移表定长编码器包括:统计模块和第二编码模块;
统计模块:接收编码码流,在确定EOB偏移表的前n个元素中存在最大偏移量时,统计前n个元素中最大偏移量元素的个数;
第二编码模块:根据m位定长编码统计模块统计的个数,然后,对EOB偏移表中的其他元素进行编码,并输出编码码流。
12.一种分段式最优映射表编码器,其特征在于,所述分段式最优映射表编码器将最优映射表分为多段,每段最优映射表分别对应一个编码模块;
各编码模块分别接收编码码流,并分别对其对应段的最优映射表进行编码;在对后续段的最优映射表进行编码时,仅对后续段中的非零元素进行编码。
13.如权利要求12所述的分段式最优映射表编码器,其特征在于,所述分段式最优映射表编码器为:二分式最优映射表编码器,所述二分式最优映射表包括:前段编码模块和后段编码模块;
前段编码模块:接收编码码流,对最优映射表前半部分中的元素进行编码,并输出编码码流;
后段编码模块:接收编码码流,查找后半部分最末一个非零元素的索引号并编码,然后,对后半部分的起始位置到所述索引号的位置中的非零元素进行编码,并输出编码码流。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610100866 CN101106721A (zh) | 2006-07-10 | 2006-07-10 | 一种编解码装置及相关编码器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200610100866 CN101106721A (zh) | 2006-07-10 | 2006-07-10 | 一种编解码装置及相关编码器 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101106721A true CN101106721A (zh) | 2008-01-16 |
Family
ID=39000352
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200610100866 Pending CN101106721A (zh) | 2006-07-10 | 2006-07-10 | 一种编解码装置及相关编码器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN101106721A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN103404141A (zh) * | 2011-06-27 | 2013-11-20 | 英国广播公司 | 使用变换的视频编码和解码 |
CN107734344A (zh) * | 2012-06-22 | 2018-02-23 | 威勒斯媒体国际有限公司 | 图像编码方法及图像编码设备 |
CN108881910A (zh) * | 2010-04-13 | 2018-11-23 | Ge视频压缩有限责任公司 | 解码显著性图的装置 |
CN113382254A (zh) * | 2019-06-21 | 2021-09-10 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置、设备及存储介质 |
-
2006
- 2006-07-10 CN CN 200610100866 patent/CN101106721A/zh active Pending
Cited By (18)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11070822B2 (en) | 2010-04-13 | 2021-07-20 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US11252419B2 (en) | 2010-04-13 | 2022-02-15 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US11095906B2 (en) | 2010-04-13 | 2021-08-17 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US11297336B2 (en) | 2010-04-13 | 2022-04-05 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US10855999B2 (en) | 2010-04-13 | 2020-12-01 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US11025926B2 (en) | 2010-04-13 | 2021-06-01 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US11032556B2 (en) | 2010-04-13 | 2021-06-08 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
US11128875B2 (en) | 2010-04-13 | 2021-09-21 | Ge Video Compression, Llc | Coding of significance maps and transform coefficient blocks |
CN108881910A (zh) * | 2010-04-13 | 2018-11-23 | Ge视频压缩有限责任公司 | 解码显著性图的装置 |
CN103404141B (zh) * | 2011-06-27 | 2017-06-06 | 英国广播公司 | 使用变换的视频编码和解码 |
CN103404141A (zh) * | 2011-06-27 | 2013-11-20 | 英国广播公司 | 使用变换的视频编码和解码 |
CN107734344A (zh) * | 2012-06-22 | 2018-02-23 | 威勒斯媒体国际有限公司 | 图像编码方法及图像编码设备 |
CN107734344B (zh) * | 2012-06-22 | 2021-06-29 | 威勒斯媒体国际有限公司 | 图像编码方法及图像编码设备 |
US12075066B2 (en) | 2019-06-21 | 2024-08-27 | Hangzhou Hikvision Digital Technology Co., Ltd. | Coding/decoding method and device, and storage medium |
CN113382256A (zh) * | 2019-06-21 | 2021-09-10 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置、设备及存储介质 |
CN113382254A (zh) * | 2019-06-21 | 2021-09-10 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置、设备及存储介质 |
CN113382254B (zh) * | 2019-06-21 | 2022-05-17 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置、设备及存储介质 |
CN113382256B (zh) * | 2019-06-21 | 2022-05-20 | 杭州海康威视数字技术股份有限公司 | 一种编解码方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8111934B2 (en) | Extension of two-dimensional variable length coding for image compression | |
US7365659B1 (en) | Method of context adaptive binary arithmetic coding and coding apparatus using the same | |
US8401321B2 (en) | Method and apparatus for context adaptive binary arithmetic coding and decoding | |
CN1312938C (zh) | 用于解码可变长度编码位流的方法和设备 | |
CN108419084B (zh) | 改进熵编码和解码的方法、装置及存储介质 | |
US8208550B2 (en) | Adapting an encoded video signal to encoding complexity | |
EP2074828B1 (en) | Efficient significant coefficients coding in scalable video codecs | |
US7423562B2 (en) | Effective decoding method of H.264/AVC context-based adaptive variable length coding | |
CN100403801C (zh) | 一种基于上下文的自适应熵编/解码方法 | |
JP4825644B2 (ja) | 画像復号装置、画像符号化装置、およびシステムlsi | |
KR20120092095A (ko) | 적응적 트리 선택을 사용한 이진 집합의 비디오 인코딩 및 디코딩을 위한 방법 및 장치 | |
CN1875545A (zh) | 在算术码解码器或编码器与逆二值化设备或二值化设备之间插入中间缓冲器的解码设备或编码设备 | |
CN104041031A (zh) | 视频编码和解码方法和使用该方法的装置 | |
KR20160101925A (ko) | 데이터 인코딩 및 디코딩 | |
TW201342919A (zh) | 資料編碼及解碼 | |
CN101502122B (zh) | 编码装置及编码方法 | |
CN101106721A (zh) | 一种编解码装置及相关编码器 | |
CN1622634A (zh) | 转换压缩的视频分辨率的装置和方法 | |
AU2019356526B2 (en) | A method and apparatus for image compression | |
WO2020263438A1 (en) | Features of range asymmetric number system encoding and decoding | |
KR20060038189A (ko) | 컨텍스트 기반 적응형 이진 산술 복부호화 방법 및 장치 | |
JP2000217103A (ja) | 物体単位映像信号符号化/復号化装置及び方法 | |
CN100546390C (zh) | 在图象编码过程中实现自适应扫描的方法 | |
KR20140048322A (ko) | 비트 스트림의 형태의 픽처의 복호 방법 | |
CN101198056A (zh) | 变长编码方法及装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |