CN101873496B - 一种h.264的基于上下文自适应变长解码方法及装置 - Google Patents

一种h.264的基于上下文自适应变长解码方法及装置 Download PDF

Info

Publication number
CN101873496B
CN101873496B CN 201010182036 CN201010182036A CN101873496B CN 101873496 B CN101873496 B CN 101873496B CN 201010182036 CN201010182036 CN 201010182036 CN 201010182036 A CN201010182036 A CN 201010182036A CN 101873496 B CN101873496 B CN 101873496B
Authority
CN
China
Prior art keywords
code
look
code word
resolved
grades
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
CN 201010182036
Other languages
English (en)
Other versions
CN101873496A (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.)
Hangzhou Hikvision Digital Technology Co Ltd
Original Assignee
Hangzhou Hikvision Software 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 Hangzhou Hikvision Software Co Ltd filed Critical Hangzhou Hikvision Software Co Ltd
Priority to CN 201010182036 priority Critical patent/CN101873496B/zh
Publication of CN101873496A publication Critical patent/CN101873496A/zh
Application granted granted Critical
Publication of CN101873496B publication Critical patent/CN101873496B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

本发明公开了一种H.264的基于上下文自适应变长解码方法及装置。一种H.264的基于上下文自适应变长解码方法包括:预先根据H.264标准码表构造快速解析查找表;根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。应用上述方案,可以有效提升基于上下文自适应变长解码的效率,同时可以降低解码过程中内存资源的占用。

Description

一种H.264的基于上下文自适应变长解码方法及装置
技术领域
本发明涉及多媒体技术领域,特别是涉及一种H.264的基于上下文自适应变长解码方法及装置。
背景技术
2003年上半年,国际电信联盟发布了H.264视频压缩标准,作为下一代视频压缩技术,该标准和以往的标准相比,不但在视频压缩上有明显的提高,而且具有良好的网络亲和性以及纠错性能。H.264视频压缩标准目前已经广泛应用于各个领域。
图1所示为H.264的视频解码***流程图,在H.264视频解码过程中,熵解码模块的作用主要是从输入码流中解析出每个宏块的变换系数幅值(残差系数),这些变换系数幅值通过反量化、反变换处理后,和预测值相加就可以重建图像,得到解码视频输出图像。
对于采用CAVLC(Context-based Adaptive Variable Length Coding,基于上下文的自适应变长编码)方式编码的码流而言,相应的熵解码为CAVLD(Context-based Adaptive Variable Length Decoding,基于上下文的自适应变长解码)。现有的CAVLD方法,是根据输入码流的非0变换系数幅值maxNumCoeff(最大系数数量),以及当前变换系数幅值块的亮度索引luma4x4BlkIdx(亮度4x4块索引)或者色度索引chroma4x4BlkIdx(色度4x4块索引),根据H.264标准所给出的码表进行查询,从而获得所需要的各种语法元素值。
通过对现有技术的研究,发明人发现,在现有的CAVLD方法中,H.264标准参考代码表所包含的数据量很大,在解码过程中需要占用大量内存资源。此外,在解码过程中,需要多次对标准参考代码表进行查询,例如,获得totalcoeff(非零变换系数总数)平均需要35.4次查表,获得total_zeros(总零数目)和run_before(非零系数前连续零幅值个数)平均需要查表9次,从而造成CAVLD的效率较低。
发明内容
为解决上述技术问题,本发明实施例提供一种H.264的基于上下文自适应变长解码方法及装置,以提高H.264视频解码过程中CAVLD的解码效率,并且降低内存资源占用,本发明技术方案如下:
一种H.264的基于上下文自适应变长解码方法,包括:
预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
优选地,所述预先根据H.264标准码表构造快速解析查找表,包括:
在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
针对所述H.264标准码表的所***字列,分别得到二级解析查找表,对所有的二级解析查找表进行合并,得到快速解析查找表。
优选地,所述根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引,包括:
根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
优选地,所述根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值,包括:
根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
对所述表项进行读取获得相应的语法元素值。
一种H.264的基于上下文自适应变长解码装置,包括:
快速解析查找表构造单元,用于预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
查找索引获得单元,用于根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
解析单元,用于根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
优选地,,所述快速解析查找表构造单元,包括:
三级码表构造子单元,用于在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
三级码表扩充子单元,用于统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
二级解析查找表构造子单元,用于以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
一级解析查找表构造子单元,用于对所述H.264标准码表的所***字列分别得到的二级解析查找表进行合并,得到快速解析查找表。
优选地,所述查找索引获得单元,包括:
第一索引获得子单元,用于根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
第二索引获得子单元,用于获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
第三索引获得子单元,用于将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
第四索引获得子单元,用于将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
优选地,所述解析单元,包括:
确定子单元,用于根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
语法元素值获得子单元,用于对所述表项进行读取获得相应的语法元素值。
本发明实施例所提供的技术方案,在H.264标准给出的CAVLD标准码表的基础上,重新构造快速解析查找表,在对快速解析查找表进行查询时,以解码过程中的需要的语法元素、码字,以及通过简单计算得到的码字索引作为输入,通过一次查表就可以得到对应码字的解析值,与现有的查询标准H.264码表的方法相比,CAVLD的效率得到有效提升。此外,由于快速解析查找表所包含的数据量小于H.264标准参考代码表的数据量,因此,应用本发明所提供的方案,也能够有效节省CAVLD过程中内存资源的占用。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为现有技术的H.264的视频解码示意图。
图2为本发明实施例的CAVLD的方法流程图;
图3为本发明实施例的快速解析查找表构造方法流程图;
图4为本发明实施例的待解析码字查找索引获得方法流程图;
图5为本发明实施例的查找语法元素值方法流程图;
图6为本发明实施例的CAVLD装置结构示意图;
图7为本发明实施例CAVLD装置的快速解析查找表构造单元结构示意图;
图8为本发明实施例CAVLD装置的查找索引获得单元结构示意图;
图9为本发明实施例CAVLD装置的解析单元结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明中的技术方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
首先对本发明提供的一种H.264的CAVLD方法进行说明:
预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
参见图2所示,根据上述构造的快速解析查找表,本发明所提供的CAVLD方法包括以下步骤:
S101,根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
S102,根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;
其中,如图1所示,所得到的语法元素值用于在后续的H.264解码过程中进行反量化、反变换及预测相加处理,得到解码视频输出图像。
下面将对本发明的快速解析查找表构造方法以及相应的解码方法做进一步的详细说明:
图3所示为本发明的快速解析查找表构造方法流程图,包括以下步骤:
S100a,在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
其中,码字的前置零数目是指一个码字从左到右的第一个为1的bit的左边的0bit位的数目,例如:码字111前置零数目为0;码字00011的前置零数目为3。
S100b,统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
S100c,以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
S100d,针对H.264标准码表的所***字列,分别执行上述S100a-S100c得到二级解析查找表,对所有的二级解析查找表进行合并,构成一个一级解析查找表,即本发明的快速解析查找表。
图4所示为本发明的待解析码字查找索引获得方法流程图,包括以下步骤:
S101a,根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
以解析时的某个输入值,作为该待解析码字第一个索引idx1,通过该值在一级解析查找表中找到码字所在的二级解析查找表;
S101b,获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
其中,所计算的idx2也就是该码字所在的三级解析查找表的首地址。
S101c,将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
S101d,将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
图5所示为本发明的查找语法元素值方法流程图,包括以下步骤:
S102a,根据查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
S102b,对所述表项进行读取获得相应的语法元素值。
在H.264解码过程当中,很重要也很耗时的一个模块就是熵解码模块(CAVLD),对于用CAVLC编码出来的码流而言,在H.264的标准组织给出的参考代码中,熵解码模块所占用的时间大约占总体解码时间的48%左右,而变换系数幅值列表的解析又占用了解析过程的绝大部分时间,因此对变换系数幅值列表解析部分的优化将大大提高解码速度。
本发明实施例所提供的技术方案,在H.264标准给出的CAVLD标准码表的基础上,重新构造快速解析查找表,在对快速解析查找表进行查询时,以解码过程中的需要的语法元素、码字,以及通过简单计算得到的码字索引作为输入,通过一次查表就可以得到对应码字的解析值,与现有的查询标准H.264码表的方法相比,CAVLD的效率得到有效提升。此外,由于快速解析查找表所包含的数据量小于H.264标准参考代码表的数据量,因此,应用本发明所提供的方案,也能够有效节省CAVLD过程中内存资源的占用。
下面将结合一个具体的实例,对本发明的H.264的CAVLD方法进行说明,以解析coeff_token(系数表征值)的码字的语法元素为例,表1所示为H.264标准中给出的解析coeff_token的元素Totalcoeff(非零变换系数总数)和TrailingOnes(拖尾变换系数数量)的初始标准码表mapping toTotalCoeff(coeff_token)and TrailingOnes(coeff_token):
Figure GSA00000116758500091
Figure GSA00000116758500101
Figure GSA00000116758500111
表1
为便于描述,以下选取nC==-1这一列来对本发明方案进行描述:
首先构造快速解析查找表,方法如下:
1)在原始码表中,以nC==-1这个码字列为单位,将一列中将前置零相等的码字分为一组,称为三级码表。在nC==-1这一列中,通过分组,得到8个三级码表,组号为0到7,如表2所示:
  组号   前置零个数   码字
  0   0   1
  1   1   01
  2   2   001
  3   3   0001 110001 000001 100001 01
  4   4   0000 110000 10
  5   5   0000 0110000 010
  6   6   0000 00110000 0010
  7   7   0000 000
表2
2)在一个三级码表内,将码字按照从小到大的顺序从前往后排列,得到表3:
  组号   前置零个数   码字
  0   0   1
  1   1   01
  2   2   001
  3   3   0001 000001 010001 100001 11
  4   4   0000 100000 11
  5   5   0000 0100000 011
  6   6   0000 00100000 0011
  7   7   0000 000
表3
3)统计每个三级码表中码字的数量,找出码字最多的三级码表包含的码字数目,记为max_code_num。由表4可以得出max_code_num=4;
  三级码表序号   前置零个数   码字   三级码表内码字数目
  0   0   1   1
  1   1   01   1
  2   2   001   1
  3   3   0001 000001 010001 100001 11   4
  4   4   0000 100000 11   2
  5   5   0000 0100000 011   2
  6   6   0000 00100000 0011   2
  7   7   0000 000   1
表4
4)如果该列中其他三级码表中的码字数目小于max_code_num,将其他三级码表进行扩充,使其等于max_code_num。由于在表4中除了序号为3的三级码表外,其他三级码表中所含的码字数目都小于4,所以要对其他组的码表进行扩充;扩充的原则是,将每组的码字数目扩充到max_code_num个码字。具体方法如下:
a.首先把max_code_num这个三级码表中的每个码字的所有前置零去掉,得到基本剩余码表。
b.把当前待扩充码表码字的前置零去掉,得到当前码表的剩余码表,然后在当前码表的剩余码表的码字后添加适当位数的0和1,使得添加位数后的剩余码字和基础剩余码表中的码字相同;
c.为扩充后的剩余码字添加在b步骤中去掉的前置零,这样就得到了最终的扩展码字。
下面以对表4中序号为2、5的的三级码表进行扩充为例:
a.首先对序号为3的三级码表中的码字进行去前置0处理:
 序号为3的码表  去掉前置0后的剩余码表
 0001 000001 010001 100001 11  1 001 011 101 11
b.对于3级码表2来说,包含一个表项001,去掉前置零00,剩余码字为1;
对于3级码表5来说,包含两个表项0000 010、0000 011,去掉前置零00000,剩余码字为10、11
为了使剩余码字和剩余码表中的某些项相同,
对3级码表2的剩余码字1后面分别添加00、01、10、11,也就是该表由一个码字扩充为4个码字,最后得到与三级码表3的剩余码表相同的100、101、110、111。
对3级码表5的剩余码字10后添加0和1,剩余码字11后添加0和1,也就是说该表中的每一个码字扩充为两个码字,最后得到与三级码表3的剩余码表相同的100、101、110、111。
c.添加去掉的前置零:
3级码表2最后得到的扩充结果为:00100、00101、00110、00111;
3级码表5最后得到的扩充结果为:0000 0100、0000 0101、0000 0110、0000 0111。
5)将所有扩充后的三级码表,以每个三级码表中的前置零的数目为依据,按照小到大的顺序从前往后排列进行排序,构成一个二级码表,如表5所示:
  三级码表序号   前置零个数   扩充后码字   三级码表内码字数目
  0   0   100101110111 4
  1   1   0100010101100111 4
  2   2   00100001010011000111 4
  3   3   0001 000001 010001 100001 11 4
  4   4   00001 0000001 0100001 1000001 11   4
  5   5   000001 00000001 01000001 10000001 11   4
  6   6   0000001 000000001 010000001 100000001 11 4
  7   7   00000001 0000000001 0100000001 1000000001 11 4
表5
6)按照二级码表内的码字顺序构造二级解析查找表,为每一个码字构造一个表项,表项中包含需要解析的语法元素。对于当前查找表来说,每一个码字需要解析出TrailingOnes和TotalCoeff这两个语法元素,因此根据标准表,获得二级码表各码字对应的TrailingOnes和TotalCoeff语法元素值,得到如表6所示的二级解析查找表:
三级码表序号   前置零个数   扩充后码字   TrailingOnes   TotalCoeff
0   0   100101110111   1111   1111
  1   1   0100010101100111   0000   0000
  2   2   00100001010011000111   2222   2222
  3   3   0001 000001 010001 100001 11   0310   2321
  4   4   00001 0000001 0100001 1000001 11   0000   4433
  5   5   000001 00000001 01000001 10000001 11   2211   3333
  6   6   0000001 000000001 010000001 100000001 11   2211   4444
  7   7   00000001 0000000001 0100000001 1000000001 11   3333   4444
表6
表6所示的二级解析查找表,可以表示成如下的一个二维数组:
BYTE H.264DEC_coeff_token_chormaDC[][4]=
{
 {1,1},   //1,1,码字1|XX
  {1,1},
  {1,1},
  {1,1},
  {0,0},  //0,0,码字01|XX
  {0,0},
  {0,0},
  {0,0},
{2,2},  //2,2,码字001|XX
{2,2},
{2,2},
{2,2},
{0,2},    //0,2,码字0001 00
{3,3},    //3,3,码字0001 01
{1,2},    //1,2,码字0001 10
{0,1},    //0,1,码字0001 11
{0,4},  //0,4,码字0000 10
{0,4},
{0,3},  //0,3,码字0000 11
{0,3},
{2,3},  //2,3,码字0000 010
{2,3},
{1,3},  //1,3,码字0000 011
{1,3},
{2,4},  //2,4,码字0000 0010
{2,4},
{1,4},  //1,4,码字0000 0011
{1,4},
{3,4},  //3,4,码字0000 000
{3,4},
{3,4},
{3,4},
};
7)上述步骤1)-6)构造出了解析coeff_token的元素Totalcoeff和TrailingOnes的初始标准码表的nC==-1这一列的二级解析查找表。重复上述步骤,为表1的其他码字列分别构造二级解析查找表。然后将所有的二级解析查找表合并,就可以得到最终的一级解析查找表。
在上述构造的快速解析查找表的基础上,以nc==-1为例,以待解析码字为001xx和码字为0001 11为例来对相应的解码方法进行说明:
第一步:获取码字在解析查找表中的查找索引
在TrailingOnes和TotalCoeff的解析过程中,将待解析的码字码流和相对应的nC值作为输入,通过计算确定其在查找表中idx的步骤如下:
1)由于输入为nc==-1,通过该值在一级解析查找表中找到码字所在的二级解析查找表为H.264DEC_coeff_token_chormaDC[][4];相当于找到nc==-1在初始标准码表中所对应的列。
2)计算每个码字的前置零个数。
001xx   的前置零prefix_zero_num=2;
0001 11 的前置零prefix_zero_num=3。
3)计算中间偏移索引。
001xx   的中间偏移idx2=prefix_zero_num*max_code_num=2*4=8;
0001 11 的中间偏移idx2=prefix_zero_num*max_code_num=3*4=12。
4)该处由于每个三级解析查找表内有4个表项,所以将每个码字左移prefix_zero_num+1位后,取剩下码字的前两个bit,将这两个bit通过二进制转换成10进制数值,作为该码字在三级解析查找表中的偏移idx3。
001xx通过以上操作后,idx3为二进制数XX,在十进制的取值范围是0,1,2,3;
0001 11通过以上操作后,idx3为二进制数11即十进制数3。
5)将idx2与idx3相加,得到该码字在二级码表内的最终偏移值idx4;
001xx   的idx4=8+idx3,idx3的其取值范围是8,9,10,11
0001 11 的idx4=12+3=15
第三步:码字对应语法元素值的获取:
1)在H.264DEC_coeff_token_chormaDC[][2]表中,通过
H.264DEC_coeff_token_chormaDC[idx4]得到码字所对应的表项。
2)H.264DEC_coeff_token_chormaDC[idx4][0]获取到TrailingOnes、H.264DEC_coeff_token_chormaDC[idx4][1]获取到TotalCoeff。
例如:
对于001xx:
通过查表
H.264DEC_coeff_token_chormaDC[8][0]  或者
H.264DEC_coeff_token_chormaDC[9][0]  或者
H.264DEC_coeff_token_chormaDC[10][0] 或者
H.264DEC_coeff_token_chormaDC[11][0] 或者
得到TrailingOnes=2
通过查表
H.264DEC_coeff_token_chormaDC[8][1]  或者
H.264DEC_coeff_token_chormaDC[9][1]  或者
H.264DEC_coeff_token_chormaDC[10][1] 或者
H.264DEC_coeff_token_chormaDC[11][1] 或者
TotalCoeff=2
对于0001 11:
通过查表H.264DEC_coeff_token_chormaDC[15][0]
得到TrailingOnes=2
查表H.264DEC_coeff_token_chormaDC[15][1]
得到TotalCoeff=2
可以看到,只要通过简单的计算,得到每个语法元素在解析查找表中的idx以后,就可以通过一次查找,得到所需要的语法元素值,这种方法和标准组织给出的解析算法相比,大大减少了判断次数和查找次数,极大的提高了解码速度,从上述例子中还可以看到,新构造的快速解析查找我们的查找表仅有64byte大小,有效地节省了内存资源占用。本领域技术人员可以理解的是,上述方法同样适用于在CAVLD中对level_prefix(幅值前缀)、total_zero(总零数目)、run_before(非零系数前连续零幅值个数)等语法元素的解析,这些也应该在本发明的保护范围之内。
相应于上面的方法实施例,本发明还提供一种H.264的基于上下文自适应变长解码装置,参见图6所示,该装置包括:
快速解析查找表构造单元600,用于预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;
查找索引获得单元610,用于根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;
解析单元620,用于根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
参见图7所示,所述快速解析查找表构造单元600,可以包括:
601三级码表构造子单元,用于在每个H.264标准码表中,以一个码字列为单位,将一列中将前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;
602三级码表扩充子单元,用于统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;
603二级解析查找表构造子单元,用于以每个三级码表中的前置零数目为关键字,将所述扩充后的三级码表按照前置零数目由小到大的顺序从前往后排列进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;
604一级解析查找表构造子单元,用于对所述H.264标准码表的所***字列分别得到的二级解析查找表进行合并,得到快速解析查找表。
参见图8所示,所述查找索引获得单元610,可以包括:
第一索引获得子单元611,用于根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;
第二索引获得子单元612,用于获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;
第三索引获得子单元613,用于将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;
第四索引获得子单元614,用于将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4。
参见图9所示,所述解析单元620,可以包括:
确定子单元621,用于根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;
语法元素值获得子单元622,用于对所述表项进行读取获得相应的语法元素值。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本发明时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本发明可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例或者实施例的某些部分所述的方法。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
以上所述仅是本发明的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。

Claims (2)

1.一种H.264的基于上下文自适应变长解码方法,其特征在于,
预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;所述预先根据H.264标准码表构造快速解析查找表,包括:在每个H.264标准码表中,以一个码字列为单位,将一列中前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;以每个三级码表中的前置零数目为关键字,将扩充后的三级码表按照前置零数目由小到大的顺序从前往后进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;针对所述H.264标准码表的所***字列,分别得到二级解析查找表,对所有的二级解析查找表进行合并,得到快速解析查找表;
所述方法包括:
根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;所述根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引,包括:根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4;
根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值,包括:根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;对所述表项进行读取获得相应的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像。
2.一种H.264的基于上下文自适应变长解码装置,其特征在于,包括:
快速解析查找表构造单元,用于预先根据H.264标准码表构造快速解析查找表,其中,对应于所述H.264标准码表的一列,所述快速解析查找表以每个码字的前置零的个数为基础、有相同的前置零个数的码字组成一个段;以将码字前置零去掉后剩下的几个码字的值作为段内偏移的索引,段内按照码字从小到大进行排列;有相同前置零的段按照前置零的个数从小到大进行排列;所述快速解析查找表构造单元,包括:三级码表构造子单元,用于在每个H.264标准码表中,以一个码字列为单位,将一列中前置零数目相等的码字分为一组,每一组构成一个三级码表;并对所述三级码表内的码字按照从小到大的顺序排列;三级码表扩充子单元,用于统计每个三级码表中码字的数目,得到码字数目最多的三级码表包含的码字数目max_code_num,对其他三级码表进行扩充,使其码字数目等于max_code_num;二级解析查找表构造子单元,用于以每个三级码表中的前置零数目为关键字,将扩充后的三级码表按照前置零数目由小到大的顺序从前往后进行排列,得到一个二级码表,并根据所述H.264标准码表,获得所述二级码表各码字对应的语法元素值,得到二级解析查找表;一级解析查找表构造子单元,用于对所述H.264标准码表的所***字列分别得到的二级解析查找表进行合并,得到快速解析查找表;
查找索引获得单元,用于根据待解析码字前置零的个数,获得所述待解析码字在所述快速解析查找表中的查找索引;所述查找索引获得单元,包括:
第一索引获得子单元,用于根据解析输入值,在所述快速解析查找表确定相应的二级解析查找表;第二索引获得子单元,用于获得待解析码字的前置0数目prefix_zero_num,将prefix_zero_num乘以该二级解析查找表中的max_code_num值,得到该码字在二级解析查找表内的中间偏移idx2;第三索引获得子单元,用于将待解析码字左移prefix_zero_num+1位,取剩下码字的前几个bit作为该码字在三级解析查找表中的偏移idx3;第四索引获得子单元,用于将idx2与idx3相加,得到待解析码字在二级码表内的最终偏移值idx4;
解析单元,用于根据所述查找索引,在所述快速解析查找表中查找得到所述待解析码字的语法元素值;所述语法元素值用于进行反量化、反变换及预测相加处理,得到解码视频输出图像;所述解析单元,包括:确定子单元,用于根据所述查找索引,确定二级解析查找表以及二级解析查找表中待解析码字所对应的表项;语法元素值获得子单元,用于对所述表项进行读取获得相应的语法元素值。
CN 201010182036 2010-05-24 2010-05-24 一种h.264的基于上下文自适应变长解码方法及装置 Active CN101873496B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN 201010182036 CN101873496B (zh) 2010-05-24 2010-05-24 一种h.264的基于上下文自适应变长解码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN 201010182036 CN101873496B (zh) 2010-05-24 2010-05-24 一种h.264的基于上下文自适应变长解码方法及装置

Publications (2)

Publication Number Publication Date
CN101873496A CN101873496A (zh) 2010-10-27
CN101873496B true CN101873496B (zh) 2012-02-29

Family

ID=42998115

Family Applications (1)

Application Number Title Priority Date Filing Date
CN 201010182036 Active CN101873496B (zh) 2010-05-24 2010-05-24 一种h.264的基于上下文自适应变长解码方法及装置

Country Status (1)

Country Link
CN (1) CN101873496B (zh)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102547260B (zh) * 2010-12-22 2014-11-19 联芯科技有限公司 基于上下文自适应的可变长编码的解码方法及***
WO2012134246A2 (ko) 2011-04-01 2012-10-04 엘지전자 주식회사 엔트로피 디코딩 방법 및 이를 이용하는 디코딩 장치
CN102238387B (zh) * 2011-05-25 2017-07-18 深圳市云宙多媒体技术有限公司 一种视频熵编码、熵解码方法、装置
CN102572437B (zh) * 2012-02-16 2014-08-06 复旦大学 一种快速解码CAVLC run_before码字的硬件实现方法
CN104301725A (zh) * 2014-07-14 2015-01-21 广东工业大学 一种基于索引查找cavld方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100813877B1 (ko) * 2006-05-11 2008-03-18 전자부품연구원 효율적인 h.264/avc cavlc 디코딩 방법
CN101370138B (zh) * 2007-08-17 2011-02-09 中国科学院计算技术研究所 一种h.264标准cavlc残差系数的解码方法
CN101309423B (zh) * 2008-06-26 2011-07-20 四川虹微技术有限公司 一种解码非零系数个数和拖尾系数个数的方法

Also Published As

Publication number Publication date
CN101873496A (zh) 2010-10-27

Similar Documents

Publication Publication Date Title
US11567901B2 (en) Reduction of data stored on a block processing storage system
US20220405256A1 (en) Optimizing wide data-type storage and analysis of data in a column store database
CN105893337B (zh) 用于文本压缩和解压缩的方法和设备
US9710517B2 (en) Data record compression with progressive and/or selective decomposition
CN101873496B (zh) 一种h.264的基于上下文自适应变长解码方法及装置
CN104737165B (zh) 用于内存数据库查询处理的最优数据表示和辅助结构
CN101783788B (zh) 文件压缩、解压缩方法、装置及压缩文件搜索方法、装置
US8694474B2 (en) Block entropy encoding for word compression
US20130141259A1 (en) Method and system for data compression
KR101958939B1 (ko) 벡터 양자화의 혼합에 기초한 부호화 방법 및 이를 이용한 최근접 이웃 검색(nns) 방법
US8933829B2 (en) Data compression using dictionary encoding
CN103577394B (zh) 一种基于双数组搜索树的机器翻译方法和装置
CN101809567A (zh) 文本串的二次散列提取
KR20170104509A (ko) 데이터를 내용 연관 시브에 존재하는 기본 데이터 엘리먼트로부터 파생시키는 것에 의한 무손실 데이터 축소
Ledwon et al. High-throughput FPGA-based hardware accelerators for deflate compression and decompression using high-level synthesis
JP2003218703A (ja) データ符号化装置及びデータ復号装置
JP6726690B2 (ja) 基本データシーブを用いて無損失削減されたデータに対する多次元検索、コンテンツ連想的な取出し、ならびにキーワードベースの検索および取出しの実行
KR100484137B1 (ko) 개선된 허프만 디코딩 방법 및 장치
JP2019502154A (ja) 音声データおよびブロック処理ストレージシステム上に記憶されたデータの削減
CN114139040A (zh) 一种数据存储及查询方法、装置、设备及可读存储介质
Cannane et al. General‐purpose compression for efficient retrieval
Suri et al. Ternary tree and memory-efficient Huffman decoding algorithm
CN104679775A (zh) 一种基于Huffman表的数据处理方法
Bharathi et al. A plain-text incremental compression (pic) technique with fast lookup ability
Akil et al. FPGA-based architecture for hardware compression/decompression of wide format images

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
ASS Succession or assignment of patent right

Owner name: HANGZHOU HIKVISION DIGITAL TECHNOLOGY CO., LTD.

Free format text: FORMER OWNER: HANGZHOU HAIKANG WEISHI SOFTWARE CO., LTD.

Effective date: 20121031

C41 Transfer of patent application or patent right or utility model
COR Change of bibliographic data

Free format text: CORRECT: ADDRESS; FROM: 310012 HANGZHOU, ZHEJIANG PROVINCE TO: 310051 HANGZHOU, ZHEJIANG PROVINCE

TR01 Transfer of patent right

Effective date of registration: 20121031

Address after: Hangzhou City, Zhejiang province 310051 Binjiang District East Road Haikang Science Park No. 700, No. 1

Patentee after: Hangzhou Hikvision Digital Technology Co., Ltd.

Address before: Ma Cheng Road Hangzhou City, Zhejiang province 310012 No. 36

Patentee before: Hangzhou Haikang Weishi Software Co., Ltd.