CN101093998A - 解码方法及装置 - Google Patents

解码方法及装置 Download PDF

Info

Publication number
CN101093998A
CN101093998A CN 200710140980 CN200710140980A CN101093998A CN 101093998 A CN101093998 A CN 101093998A CN 200710140980 CN200710140980 CN 200710140980 CN 200710140980 A CN200710140980 A CN 200710140980A CN 101093998 A CN101093998 A CN 101093998A
Authority
CN
China
Prior art keywords
index
word group
code
coded word
suffix
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
Application number
CN 200710140980
Other languages
English (en)
Other versions
CN101093998B (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.)
Via Technologies Inc
Original Assignee
Via Technologies Inc
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 Via Technologies Inc filed Critical Via Technologies Inc
Priority to CN2007101409805A priority Critical patent/CN101093998B/zh
Publication of CN101093998A publication Critical patent/CN101093998A/zh
Application granted granted Critical
Publication of CN101093998B publication Critical patent/CN101093998B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Landscapes

  • Compression, Expansion, Code Conversion, And Decoders (AREA)

Abstract

一种解码方法及装置。首先,读取编码字组(code word)。接着,计数字首的位数目,并将编码字组予以移位,以移除编码字组的字首及字中位。根据字首的位数目,于索引字组表中查询读取预设的索引字组。根据索引字组的类别符号,判定编码字组所属类别;并进行功能运算,以得到编码字组相关的索引(index)及编码字组长度。最后,根据索引,至多个码表之一查询得到对应的解码字。

Description

解码方法及装置
技术领域
本发明是有关一种解码方法及装置,特别是一种变长编码(VLC)的解码方法及装置。
背景技术
变长编码(Variable-Length Code,VLC)(例如Huffman编码)是一种根据熵量(entropy)或机率大小而改变编码长度的一种无损(lossless)压缩编码;藉此,传输频宽及储存空间容量需求得以减低,因而极适用于一些高速***的应用,例如高解析电视(HDTV)信号的实时储存、编辑及传送。此种编码也普遍使用于现今一些国际影像/视频的压缩标准中。再者,现今对于无线可携式电子装置的需求趋势,在这些装置中使用嵌入式的特定信号处理器(DSP),使得对存储器空间的使用效率也变得重要。
传统技术中存在多种关于变长编码(VLC)的解码方法。其中一种是以树状算法对编码字组(code word)的位逐个进行解码。解码过程是以树状结构的根部(root)开始,依序根据编码字组的位而逐次进入树状结构的分支(branch)。此种解码方法或装置需要使用对应至树状结构的逻辑及控制电路,用以在树状结构中前进。由于位在树状结构中进行移位(shifting)需要耗费相当的时间,因此速度慢是此种树状算法的最大缺点,特别是对于较长的编码字组。
另一种传统解码方法是以查表(table-lookup)方式来取代树状算法。在此种查表方法中,将待解码的编码字组与单一编码字组表(codeword table)直接作比对,在这个编码字组表中,储存有解码字(decoded word)以及变长编码字组的长度。于解码过程中,当编码字组与编码字组表当中的一项产生匹配(match)时,即可得到相对应的解码字。接着,依据查询得到的编码字组长度,将相对应字符移出位串流,以准备进行下一个解码。此种查表解码方法虽然避免了树状算法的缺点,然而却需要使用一个相当庞大的存储空间来存放其编码字组表。
对于视频标准MPEG-4而言,其使用三种变长编码来对离散余弦转换(DCT)系数作编码-以Table B-16对图框内微区块(INTRA macroblock)作编码,以Table B-17对图框间微区块(INTER macroblock)作编码,以Table B-23对可逆变长编码(RVLC)的微区块作编码。对于另一种常用视频标准H.263而言,其仅使用Table 13来同时对图框内微区块(INTRA macroblock)及图框间微区块(INTER macroblock)作编码,其内容与Table B-17/MPEG-4相同。视频标准MPEG-4的Table B-16/B-17的变长编码长度界于3至13位间,最后一位是符号位(sign bit),由于其不进行解码,因此,最大的解码位数目为12。一般的解码器以下列两种码表来进行变长编码的解码:以DCT3DtabXval来存放MPEG-4的Table B-16/B-17,而以DCT3DtabXlen来存放相对应的编码字组长度。传统查表方法一般使用含有212(=4096)笔项目的DCT3DtabXval及DCT3DtabXlen码表。然而,MPEG-4的Table B-16或B-17仅含有103个有效字组项目,因而得知,DCT3DtabXval及DCT3DtabXlen表中存在非常多的重复(redundancy或duplicate)字组。视频标准H.263的TMN-8解码器使用两个临界值将码表分为三部分。其仅需使用7位(而非传统的12位)来形成各个码表的记载项目。此方法虽然较传统单一码表方式省下不少的储存空间,然而仍然具有不少的重复字组。
为了进一步改善查表解码方法,另有一种传统解码方法提出,其使用前置位“0”(leading zeros)并根据此前置位“0”的数目来区分为多个码表。例如,使用一至八个前置位“0”,因而将码表分为总共九个码表。此解码方法虽然进一步改善传统的解码方法,然而其仍然具有不少的重复字组。再者,其需要在码表中同时储存记载编码字组长度,用以进行解码过程。然而,对于使用***单芯片(SOC)的***而言,其存储器空间通常需要分享于各处理器与硬件电路之间,因此存储器通常会使用单一长度(例如16位)的字组(word)。前述的编码字组长度一般仅需三至四位即足以表示,却必须存放在16位长度的存储器内,造成相当的浪费。
鉴于上述传统各种解码方法所存在的缺点,因此亟需提出一种新的解码方法或装置,不但能减少码表中的重复字组,并能提升存储器空间的使用效率。
发明内容
本发明的目的之一在于提出一种变长编码(VLC)的解码方法与装置,用以减少查表中的重复字组,并提升存储器空间的使用效率。
根据本发明实施例之一的解码方法,首先,读取编码字组(code word),其包含多个位,该编码字组包含字首(prefix)、字中、字尾(suffix)三部分。计数字首的位数目;并将编码字组予以移位,以移除字首及字中的位。根据字首的位数目,于索引字组表中查询读取预设的索引字组,其包含基底索引、类别(class)符号、多个字尾长度。根据类别符号,判定编码字组所属类别;并进行功能运算,以得到编码字组相关的索引(index)及编码字组长度。最后,根据索引,至多个码表之一查询得到对应的解码字。
根据本发明另一实施例的解码装置,位读取装置从位串流读取包含多个位的编码字组(code word),其包含字首(prefix)、字中、字尾(suffix)三部分。字首位数的计数装置计数字首的位数目;而位移位装置将编码字组予以移位,以移除字首及字中的位。索引字组读取装置根据字首的位数目,于索引字组表中查询读取预设的索引字组,其包含基底索引、类别(class)符号、多个字尾长度。类别判定装置根据类别符号,判定编码字组所属类别。段落判定装置检视移位编码字组的最高至少一位,以判定所属段落(part)。索引值及编码字组长度产生装置进行功能运算,以得到编码字组相关的索引(index)及编码字组长度。最后,解码字查询装置根据索引,至多个码表之一查询得到对应的解码字。
附图说明
图1A显示编码字组的组成。
图1B显示索引字组的组成。
图2显示本发明实施例的解码方法的详细流程图。
图3显示应用前述流程以进行解码及得到索引、编码字组长度的三个例子。
图4显示根据本发明实施例的解码装置方块图。
[主要元件标号说明]
20、21、22、23、24、25A、25B、25D、26A1、26A2、26B1、26B2、26B3、26C图2的解码步骤
40、41、42、43、43A、44、45、46、47、47A图3的解码装置组成方块
具体实施方式
本发明实施例的变长编码(Variable-Length Code,VLC)的解码方法/装置是以视频标准MPEG-4的码表(code table或table)B-16/B-17为例,然而其可稍加修改而同样适用于其它视频标准,例如H.263。本发明实施例实施于***单芯片(SOC)的微数字信号处理器(MicroDSP)中,然而,本发明也可以使用软件方式或结合软硬件方式来实施。
根据本实施例,变长编码的码表是区分为九个群组(group),如以下码表table I至IX所示。每一个码表包含有三个主要部分:索引(index)、解码字、编码字组(code或code word);其中,解码字包含有图框内编码(intra)及图框间编码(inter)。各个码表是根据编码字组的前置位“0”(leadingzeros)的数量来分组。例如,如果编码字组不具有前置位“0”,则归类于码表table I(亦即,第一群组(group 1));如果编码字组具有一个前置位“0”,则归类于码表table II(亦即,第二群组(group 2));其余依此类推。
Table I group 1:leading_zeros=0,base_index=0
 index         intra         inter   codes
 last   run  level   last    run  level
    0  0   0  1   0    0  1   10s
    1234  0000   0010  2213   0000    1120  1112   110sx110sx1110s1111s
Table II group 2:leading_zeros=1,base_index=5
  index         intra     inter  codes
 last   run  level  last    run  level
    56789101112  00000000   43001022  11872611  00000000    98761055  11112311  010000s010001s010010s010011s010100s010101s01011sx01011sx
    13141516  0011   0000  5411  0011    4300  1111  01100s01101s0111sx0111sx
Table III group 3:leading_zeros=2,base_index=17
index         intra         inter   codes
  last    run    level  last     run    level
  1718192021222324   11010000    43657210    11111239  11110000     87651211100    11111114  0010000s0010001s0010010s0010011s0010100s0010101s0010110s0010111s
  25262728   1011    0521    2111  1111     4321    1111  001100s001101s001110s001111s
Table IV group 4:leading_zeros=3,base_index=29
index         intra          inter codes
 last   run   leve   last   run     leve
  2930313233343536  00000011   10400088   516215141311   00000011   161543001616     11227611  000100000s000100001s000100010s000100011s000100100s000100101s00010011sx00010011sx
  37383940  1110   76010   1131   1111   15141312     1111  00010100s00010101s00010110s00010111s
  4142434445464748  00100000   98931000   11124121110   11100000   111091413210     11111235  00011000s00011001s00011010s00011011s00011100s00011101s00011110s00011111s
Table V group 5:leading_zeros=4,base_index=49
index         intra         inter     codes
  last   run   leve   last   run     leve
 4950515253545556   00111111   00141413131212   1817111111   00111111   00242423232222     98111111  0000100000s0000100001s000010001sx000010001sx000010010sx000010010sx000010011sx000010011sx
 57585960   1111   111010   1124   1111   21201918     1111  000010100s000010101s000010110s000010111s
 6162636465666768   00000000   1211765321   11222336   11000000   170222120191817     12111111  000011000s000011001s000011010s000011011s000011100s000011101s000011110s000011111s
Table VI group 6:leading_zeros=5,base_index=69
index         intra         inter     codes
  last   run  level   last   run   level
  6970717273747576   01001111   0019341516  2324822211   00001111   01232429303132   125111111  00000100000s00000100001s00000100010s00000100011s00000100100s00000100101s00000100110s00000100111s
  77787980818283848586878889909192   0000000001111111   000161271405617181920  25262793105318221111   0000000011111111   124561025263334353637383940   6433321111111111  000001010000s000001010001s000001010010s000001010011s000001010100s000001010101s000001010110s000001010111s000001011000s000001011001s000001011010s000001011011s000001011100s000001011101s000001011110s000001011111s
  93   Escape   Escape  0000011s
Table VII group7:leading_zeros=6,base_index=94
index         intra      inter codes
 last    run  level last    run  level
 949596979899100101  00000000    58432100  3234472019 00000000    98765321  22222334 0000001000s0000001001s0000001010s0000001011s0000001100s0000001101s0000001110s0000001111s
Table VIII group8:leading_zeros=7,base_index=102
index         intra         inter codes
 last   run   level   last   run    level
 102103104105  1110   21013   2351   1111   28272625    1111  0000000100s0000000101s0000000110s0000000111s
Table IX group 9:leading_zeros=8,base_index=106
index     intra         inter codes
last    run   level   last    run     leve
106107108109 1100    0000   762221   1100    1000     231110  00000000100s00000000101s00000000110s00000000111s
接着,将上述九个码表(table I-IX)分为三个类别(class),说明如下:
第一类别(class 1)
包含第一至第三群组(group 1,2,3),其每个群组内的编码字组具有两种编码长度(例如,group 1内的编码字组的编码长度为2或4,符号位s不计算在内)。
第二类别(class 2)
包含第四至第六群组(group 4,5,6),其每个群组内的编码字组具有两种或三种编码长度(例如,group 4内的编码字组的编码长度为8或9,符号位s不计算在内)。
第三类别(class 3)
包含第七至第九群组(group 7,8,9),其每个群组内的编码字组具有单一种编码长度(例如,group 7内的编码字组的编码长度为10,符号位s不计算在内)。
上述每一个码表内的编码字组是由字首(prefix)、字中、字尾(suffix)三部分所组成,如图1A所示。在本实施例中,字首是由位在字中第一个位“1”之前的前置位“0”所构成,字中为第一个位“1”,字尾则是指第一个位“1”之后的位,然符号位s不计算在内。对于第三类别(class 3)的编码字组,各个字尾形成0至2m-1的连续整数,其中m为字尾的长度;至于第一、二类别的编码字组,各个字尾并未构成连续整数。为了让第一、二类别具有规律,因此于第一、二类别(亦即,table I-VI)当中的部分编码字组后面加入随意(don’t care)位x。藉此,对于第一类别的码表,位于第一个位“1”后面的一个位(“0”或“1”)会将所有编码字组分为两个段落(part)--当位为“0”时,属于第一段落;当位为“1”时,属于第二段落。对于每一个段落,各个字尾形成0至2m-1-1的连续整数,其中m为字尾的长度,然第一个位“1”之后的一个位不计算在内。类似的道理,对于第二类别的码表,位于第一个位“1”后面的二个位(“00”、“01”、“10”或“11”)会将所有编码字组分为三个段落(part)--当位为“00”时,属于第一段落;当位为“01”时,属于第二段落;当位为“10”或“11”时,属于第三段落。对于第一段落和第二段落,各个字尾形成0至2m-2-1的连续整数,其中m为字尾的长度,然第一个位“1”之后的二个位不计算在内。对于第三段落,各个字尾形成0至2m-1-1的连续整数,然第一个位“1”之后的一个位不计算在内。
根据上述码表的特性,我们针对每一群组(或table)设定相对应的索引字组index_word,如下表table X所示。每一个索引字组经拆解对应至下列五部分,如图1B所示:基底索引base_index、类别符号class_sign、字尾第一长度suffix_len1、字尾第二长度suffix_len2、字尾第三长度suffix_len3,分别说明如下:
基底索引base_index
代表编码字组所属群组的开头索引值;例如,第二群组(table II)的开头索引为5(index=5),因此第二群组的所有编码字组的基底索引皆等于5(base_index=5)。
由于最后一群组(table IX)的开头索引值为106,因此使用七个位即足以表示基底索引base_index的值。
类别符号class_sign
用以代表编码字组所属的类别;解码器即根据此类别符号class_sign来决定于第一个位“1”后面究竟要检视多少个位,以判定其段落;接着,再根据所检视的位来选择使用相关的索引功能运算(index function)及编码字组长度功能运算(code length function),用以得到索引、解码字、编码字组长度。由于总共有三个类别,因此使用二个位即足以表示类别符号class_sign。
字尾第一长度suffix_len1至字尾第三长度suffix_len3
用以代表编码字组各段落的长度。如果编码字组仅具有一段落,则字尾第二长度suffix_len2、字尾第三长度suffix_len3均设为“0”;如果编码字组仅具有二段落,则字尾第三长度suffix_len3设为“0”。由于码表tableI-IX当中字尾第一长度suffix_len1至字尾第三长度suffix_len3的最大值分别为3、4、3,因此分别使用二、三、二个位即足以分别表示字尾第一长度suffix_len1至字尾第三长度suffix_len3。
Table X索引字组表
 group     n base index  class_sign  suffix_len1  suffix_len2  suffix_len3     index_word
    123456789     012345678     051729496994102106     222333111     033333322     222224000     000330000  0000 0001 0000 10000000 1011 0110 10000010 0011 0110 10000011 1011 1110 10110110 0011 1110 10111000 1011 1111 00001011 1100 1110 00001100 1100 1100 00001101 0100 1100 0000
上述索引字组表table X当中的n代表前置位“0”的数目,而前述基底索引base_index、类别符号class_sign、字尾第一长度suffix_len1、字尾第二长度suffix_len2、字尾第三长度suffix_len3则总共组成16位的索引字组。在本发明实施例中,索引字组表table X是预先储存于存储器中,当进行解码时,根据前置位“0”的数目n,经查询索引字组表table X因而得到相对应的索引字组;接着,将索引字组予以拆解成五个部分,再根据这些拆解部分经适当功能运算以得到索引值及编码字组长度;最后,根据索引值从码表table I-IX中查询取得解码字。
图2显示本发明实施例的解码方法的流程图,详细说明如下:
读取位(步骤20)
首先,读取数个位,作为待解码的编码字组。在本实施例中,编码字组的最大长度为12个位,因此,每一次是读取12个位(由于符号位s并不会影响解码过程,因此不计算在内)。
计数前置位“0”的数目(步骤21)
接着,计数前置位“0”(亦即,字首)的数目n。在本实施例中,前置位“0”的数目n可以通过数字信号处理器(DSP)的特殊指令(instruction)来得到。除此以外,也可以使用其它方式来得到数值n;例如,以硬件方式,使用移位寄存器(shift register)同样可以得到前置位“0”的数目n。
向左移(n+1)个位(步骤22)
将待解码的编码字组向左移(n+1)个位,用以将所有前置位“0”(字首)及第一个位“1”(字中)予以移除。
读取索引字组并予以拆解(步骤23)
根据数值n,于索引字组表table X中查询读取索引字组,并将此具16位的索引字组予以拆解成五部分--基底索引base_index(A)、类别符号class_sign(B)、字尾第一长度suffix_len1(C)、字尾第二长度suffix_len2(D)、字尾第三长度suffix_len3(E),其对应位的关系如下所示:
A=base_index=index_word(15:9);
B=class_sign=index_word(8:7);
C=suffix_len1=index_word(6:5);
D=suffix_len2=index_word(4:2);
E=suffix_len3=index_word(1:0)
检视数值B以判定类别(步骤24)
根据步骤23中所得到的类别符号class_sign(B)以判定所属类别。根据索引字组表table X,当B值为“10”时,判定为第一类别;当B值为“11”时,判定为第二类别;当B值为“01”时,判定为第三类别;当B值为无效的“00”时,则判定为错误(25D)。
对于第二类别,检视移位编码字组的最高二位(步骤25B)及运算以得到 索引值及编码字组的长度(步骤26B1、26B2、26B3)
当步骤24判定其属于第二类别时,接着以步骤25B检视经移位编码字组的最高二位(意即,移位前的字尾的最高二位),以判定究竟属于哪一个段落。当为“10”或“11”时,判定为第三段落,并接着进行以下式(1)及(2)运算(步骤26B3)以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+(1<<D)+code(10:11-E)    (1)
len=n+2+E    (2)
其中,运算符号“<<”代表向左移位,code(:)代表编码字组的部分位。
当为“01”时,判定为第二段落,并接着进行以下式(3)及(4)运算(步骤26B2)以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+code(9:10-D)    (3)
len=n+3+D    (4)
当为“00”时,判定为第一段落,并接着进行以下式(5)及(6)运算(步骤26B1)以得到相关的索引值index及编码字组长度len:
index=A+code(9:10-C)    (5)
len = n + 3 + C - 1 index = 35,36 orindex ∈ [ 51,56 ] n + 3 + C otherwise - - - ( 6 )
对于第一类别,检视移位编码字组的最高一位(步骤25A)及运算以得到 索引值及编码字组的长度(步骤26A1、26A2)
当步骤24判定其属于第一类别时,接着以步骤25A检视经移位编码字组的最高一位(意即,移位前的字尾的最高一位),以判定究竟属于哪一个段落。当为“1”时,判定为第二段落,并接着进行以下式(7)及(8)运算(步骤26A2)以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+code(10:11-D)    (7)
len = n + 2 + D - 1 index = 1 , 2,15 , or 16 n + 2 + D otherwise - - - ( 8 )
当为“0”时,判定为第一段落,接着以下式(9)及(10)运算(步骤26A1)以得到相关的索引值index及编码字组长度len:
index=A+code(10:11-C)    (9)
len = n + 2 + C - 1 index = 11 or 12 n + 2 + C otherwise - - - ( 10 )
对于第三类别,运算以得到索引值及编码字组的长度(步骤26C)
当步骤24判定其属于第三类别时,接着以下式(11)及(12)运算(步骤26C)以得到相关的索引值index及编码字组长度len:
index=A+code(11:12-C)    (11)
len=n+1+C                 (12)
根据上述各步骤得到的索引值index,至码表(table I-IX)查询得到对应的解码字(意即,last、run、level),并从位串流(bitstream)取得符号位s,再依据上述得到的编码字组长度len,将相对应字符移出位串流,以准备进行下一个解码。
图3显示应用前述流程以进行解码及得到索引、编码字组长度的三个例子。
例一
取得的12位编码字组(步骤20)为0100 1101 1101,其前置位“0”共有一个(意即,n=1)(步骤21)。根据数值n查询索引字组表table X(步骤23),得到索引字组为0000 1011 0110 1000。经拆解此索引字组,得到
A=base_index=5;
B=class_sign=“10”(2);
C=suffix_len1=3;
D=suffix_len2=2;
E=suffix_len3=0
将编码字组向左移位共二位(n+1=2)(步骤22),因此得到移位后的编码字组为0011 0111 0100(右边以“0”补充)。由于B=class_sign为“10”,因此判定(步骤24)属于第一类别,因此进行步骤25A以检视移位编码字组的最高一位。经检视为位“0”,判定属于第一段落,因此进入步骤26A1执行式(9)、(10)的运算以得到
index=A+code(10:11-C)=5+3=8;
len=n+2+C=1+2+3=6。
例二
取得的12位编码字组(步骤20)为0000 1100 1001,其前置位“0”共有四个(意即,n=4)(步骤21)。根据数值n查询索引字组表table X(步骤23),得到索引字组为0110 0011 1110 1011。经拆解此索引字组,得到
A=base_index=49;
B=class_sign=“11”(3);
C=suffix_len1=3;
D=suffix_len2=2;
E=suffix_len3=3
将编码字组向左移位共五位(n+1=5)(步骤22),因此得到移位后的编码字组为1001 0010 0000。由于B=class_sign为“11”,因此判定(步骤24)属于第二类别,因此进行步骤25B以检视移位编码字组的最高二位。经检视为位“10”,判定属于第三段落,因此进入步骤26B3执行式(1)、(2)的运算以得到
index=A+(1<<C)+(1<<D)+code(10:11-E)=49+8+4+1=62;
len=n+2+E=4+2+3=9。
例三
取得的12位编码字组(步骤20)为0000 0011 0001,其前置位“0”共有六个(意即,n=6)(步骤21)。根据数值n查询索引字组表table X(步骤23),得到索引字组为1011 1100 1110 0000。经拆解此索引字组,得到
A=base_index=94;
B=class_sign=“01”(1);
C=suffix_len1=3;
D=suffix_len2=0;
E=suffix_len3=0
将编码字组向左移位共七位(n+1=7)(步骤22),因此得到移位后的编码字组为1000 1000 0000。由于B=class_sign为“01”,因此判定(步骤24)属于第三类别,因此进入步骤26C执行式(11)、(12)的运算以得到
index=A+code(11:12-C)=94+4=98;
1en=n+1+C=6+1+3=10。
本发明实施例所使用的码表table I-IX是针对视频标准MPEG-4的码表B-16/B-17,其分别包含有110个(意即,index=0至109)编码字组,因此总共有220字组。在这些编码字组当中,206(=103×2)个是有效编码字组,因此重复字组的个数仅有14个。下表table XI针对传统解码方法与本发明实施例解码方法所使用查表的存储器大小作一比较,显现出本发明实施例对于存储器空间的使用效率大为提升,非常适合应用于携带式电子装置中;且本实施例所使用的功能运算(1)至(12)皆为简单的运算,例如位移位及加法运算,因此,极适合以硬件来实施。
Table XI
method table size(16-bits word)
12-b single TLU 212×(2+1)
H.263TMNdecoder ((27-16)+(27-32)+(27-8))×(2+1)=328×(2+1)
Nine sub-tablesby leading0s (8+16+16+32+32+64+8+4+4)×(2+1)=184×(2+1)
proposed method 110×2
图4显示根据本发明实施例的解码装置方块图,其各个组成方块可以使用硬件方式、软件方式或结合软硬件方式来实施。组成方块的功能简要说明如下(与前述解码方法的细节重复者不再赘述):
位读取装置(40)
用以从位串流读取包含数个位的编码字组,准备进行解码。在本实施例中,每一次是读取12个位。
前置佳“0”的计数装置(41)
计数待解码的编码字组的前置位“0”(字首)的数目n。
向左移(n+1)个位装置(42)
将待解码的编码字组向左移(n+1)个位,用以将所有前置位“0”及第一个位“1”予以移除。
索引字组读取及拆解装置(43)
根据数值n,于索引字组表table X(43A)中读取索引字组,并将此具16位的索引字组予以拆解成五部分一基底索引base_index(A)、类别符号class_sign(B)、字尾第一长度suffix_len1(C)、字尾第二长度suffix_len2(D)、字尾第三长度suffix_len3(E),其对应位关系如下所示:
A=base_index=index_word(15:9);
B=class_sign=index_word(8:7);
C=suffix_len1=index_word(6:5);
D=suffix_len2=index_word(4:2);
E=suffix_len3=index_word(1:0)
类别判定装置(44)
根据所得到的类别符号class_sign(B)以判定所属类别。
段落判定装置(45)
对于第一、第二类别,检视经移位编码字组的最高一或二位(意即,移位前的字尾的最高一或二位),以判定究竟属于哪一个段落。
索引值及编码字组长度产生装置(46)
根据所属类别及段落,选择适当功能(1)至(12)进行运算,以产生得到相关的索引值index及编码字组长度len。
解码字查询装置(47)
根据索引值index至码表(table I-IX)(47A)查询得到解码字;最后依据编码字组长度len,将相对应字符移出位串流,以准备进行下一个解码。
以上所述仅为本发明的较佳实施例而已,并非用以限定本发明的权利要求范围;凡其它未脱离本发明所揭示的精神下所完成的等效改变或修饰,均应包含在所述的权利要求范围内。

Claims (10)

1.一种解码方法,包含:
读取编码字组,其包含多个位,该编码字组包含字首、字中、字尾三部分;
计数该字首的位数目;
将该编码字组予以移位,以移除该字首及该字中的位;
根据该字首的位数目,于索引字组表中查询读取预设的索引字组,该索引字组包含基底索引、类别符号、多个字尾长度;
根据该类别符号,判定该编码字组所属类别;
根据该类别进行功能运算,以得到该编码字组相关的索引及编码字组长度;及
根据该索引,于多个码表之一查询得到对应的解码字。
2.根据权利要求1所述的解码方法,其中上述的索引字组index_word可拆解成五部分:该基底索引base_index(A)、该类别符号class_sign(B)、字尾第一长度suffix_len1(C)、字尾第二长度suffix_len2(D)、字尾第三长度suffix_len3(E),根据该索引字组,上述码表分为三个类别。
3.根据权利要求2所述的解码方法,当为第一类别时,检视该移位编码字组code的最高一位,以判定所属段落;
当判定为第一段落时,依下式运算以得到相关的索引index及编码字组长度len:
index=A+code(10:11-C)
len = n + 2 + C - 1 index = 11 or 12 n + 2 + C otherwise
当判定为第二段落时,依下式运算以得到相关的索引index及编码字组长度len:
index=A+(1<<C)+code(10:11-D)
len = n + 2 + D - 1 index = 1,2,15 , or 16 n + 2 + D otherwise
其中,运算符号“<<”代表向左移位,code(:)代表该编码字组的部分位,n为该字首的位数目。
4.根据权利要求2所述的解码方法,当为第二类别时,检视该移位编码字组的最高二位,以判定所属段落;
当判定为第一段落时,依下式运算以得到相关的索引值i ndex及编码字组长度len:
index=A+code(9:10-C)
len = n + 3 + C - 1 index = 35 , 36 or index ∈ [ 51,56 ] n + 3 + C otherwise
当判定为第二段落时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+code(9:10-D)
len=n+3+D
当判定为第三段落时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+(1<<D)+code(10:11-E)
len=n+2+E
其中,运算符号“<<”代表向左移位,code(:)代表该编码字组的部分位,n为该字首的位数目。
5.根据权利要求2所述的解码方法,当为第三类别时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+code(11:12-C)
len=n+1+C
其中,code(:)代表该编码字组的部分位,n为该字首的位数目。
6.一种解码装置,包含:
位读取装置,用以从位串流读取包含多个位的编码字组,该编码字组包含字首、字中、字尾三部分;
字首位数的计数装置,用以计数该字首的位数目;
位移位装置,用以将该编码字组予以移位,以移除该字首及该字中的位;
索引字组读取装置,根据该字首的位数目,于索引字组表中查询读取预设的索引字组,该索引字组包含基底索引、类别符号、多个字尾长度;
类别判定装置,根据该类别符号,判定该编码字组所属类别;
段落判定装置,检视该移位编码字组的最高至少一位,以判定所属段落;
索引值及编码字组长度产生装置,根据该类别及该段落进行功能运算,以得到该编码字组相关的索引及编码字组长度;
解码字查询装置,根据该索引,于多个码表之一查询得到对应的解码字。
7.根据权利要求6所述的解码装置,其中上述的索引字组index_word可拆解成五部分:该基底索引base_index(A)、该类别符号class_sign(B)、字尾第一长度suffix_len1(C)、字尾第二长度suffix_len2(D)、字尾第三长度suffix_len3(E),根据该索引字组,上述码表分为三个类别。
8.根据权利要求7所述的解码装置,当为第一类别时,检视该移位编码字组code的最高一位,以判定所属段落;
当判定为第一段落时,依下式运算以得到相关的索引index及编码字组长度len:
index=A+code(10:11-C)
len = n + 2 + C - 1 index = 11 or 12 n + 2 + C otherwise
当判定为第二段落时,依下式运算以得到相关的索引index及编码字组长度len:
index=A+(1<<C)+code(10:11-D)
len = n + 2 + D - 1 index = 1,2,15 , or 16 n + 2 + D otherwise
其中,运算符号“<<”代表向左移位,code(:)代表该编码字组的部分位,n为该字首的位数目。
9.根据权利要求7所述的解码装置,当为第二类别时,检视该移位编码字组的最高二位,以判定所属段落;
当判定为第一段落时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+code(9:10-C)
len = n + 3 + C - 1 index = 35 , 36 or index ∈ [ 51,56 ] n + 3 + C otherwise
当判定为第二段落时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+code(9:10-D)
len=n+3+D
当判定为第三段落时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+(1<<C)+(1<<D)+code(10:11-E)
len=n+2+E
其中,运算符号“<<”代表向左移位,code(:)代表该编码字组的部分位,n为该字首的位数目。
10.根据权利要求7所述的解码装置,当为第三类别时,依下式运算以得到相关的索引值index及编码字组长度len:
index=A+code(11:12-C)
len=n+1+C
其中,code(:)代表该编码字组的部分位,n为该字首的位数目。
CN2007101409805A 2007-08-15 2007-08-15 解码方法及装置 Active CN101093998B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2007101409805A CN101093998B (zh) 2007-08-15 2007-08-15 解码方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2007101409805A CN101093998B (zh) 2007-08-15 2007-08-15 解码方法及装置

Publications (2)

Publication Number Publication Date
CN101093998A true CN101093998A (zh) 2007-12-26
CN101093998B CN101093998B (zh) 2011-03-30

Family

ID=38992068

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2007101409805A Active CN101093998B (zh) 2007-08-15 2007-08-15 解码方法及装置

Country Status (1)

Country Link
CN (1) CN101093998B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872412A (zh) * 2010-06-01 2010-10-27 福建新大陆电脑股份有限公司 一种码表生成方法
CN102118225A (zh) * 2010-12-28 2011-07-06 北京航空航天大学 基于多索引表的任意位多项式除法类型编码的编解码方法
CN103873036A (zh) * 2012-12-14 2014-06-18 普诚科技股份有限公司 上电复位电路
TWI593946B (zh) * 2013-03-18 2017-08-01 精工半導體有限公司 受光電路

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN1017856B (zh) * 1990-11-02 1992-08-12 李翔 变长码有序译码法及其可编程电路
EP1802141A2 (en) * 1995-03-15 2007-06-27 Kabushiki Kaisha Toshiba Moving picture coding and/or decoding systems
JP3519416B2 (ja) * 1997-01-29 2004-04-12 三菱電機株式会社 符号化装置及び復号装置

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101872412A (zh) * 2010-06-01 2010-10-27 福建新大陆电脑股份有限公司 一种码表生成方法
CN101872412B (zh) * 2010-06-01 2015-10-07 福建新大陆电脑股份有限公司 一种条码解码过程使用的码表的生成方法
CN102118225A (zh) * 2010-12-28 2011-07-06 北京航空航天大学 基于多索引表的任意位多项式除法类型编码的编解码方法
CN102118225B (zh) * 2010-12-28 2013-08-07 北京航空航天大学 基于多索引表的任意位多项式除法类型编码的编解码方法
CN103873036A (zh) * 2012-12-14 2014-06-18 普诚科技股份有限公司 上电复位电路
CN103873036B (zh) * 2012-12-14 2017-02-22 普诚科技股份有限公司 上电复位电路
TWI593946B (zh) * 2013-03-18 2017-08-01 精工半導體有限公司 受光電路

Also Published As

Publication number Publication date
CN101093998B (zh) 2011-03-30

Similar Documents

Publication Publication Date Title
US5818877A (en) Method for reducing storage requirements for grouped data values
US7751634B2 (en) Compression system for integrated sensor devices
JP4313771B2 (ja) 画像および/またはビデオ符号器と復号器における変換係数を符号化するための方法と装置および対応するコンピュータプログラムと対応するコンピュータによる読み出し可能な記憶媒体
US5220325A (en) Hierarchical variable length decoder for digital video data
US7411529B2 (en) Method of decoding bin values using pipeline architecture and decoding device therefor
ES2439996T3 (es) Procedimiento y dispositivo de codificación y descodificación aritméticas de estados binarios y programa informático correspondiente y soporte de almacenamiento correspondiente legible por ordenador
CN101242531A (zh) 为小尺寸或全尺寸播放提供独立编码链的视频编码***
CN104378634B (zh) 输入符号二值化的方法以及从码字中产生索引值的方法
CN101370138B (zh) 一种h.264标准cavlc残差系数的解码方法
EP0683568A1 (en) Variable length code look-up table having separate code length determination
US5594435A (en) Permutation-based data compression
CN101093998B (zh) 解码方法及装置
US20060126743A1 (en) Variable length code decoder and decoding method for variable length codes
JPH1131974A (ja) 信号復号装置及び信号復号方法並びに信号復号処理をコンピュータに行わせるためのプログラムを記録した記録媒体
JP4181887B2 (ja) 可変長符号化装置、及びその方法
JP4061104B2 (ja) コンテキストモデルによるラン・スキップカウントに基づくメモリアクセス及びスキッピング
CN101657973B (zh) 采用位精度的编码装置和编码方法
JPH0787331A (ja) 画像圧縮符号化方法
CN100466743C (zh) 一种基于共享存储可编程的熵解码和反量化的方法
KR20030012729A (ko) 압축 영상 비트 스트림의 부호어 교환을 통한 비트율 변환방법
WO2020258188A1 (zh) 解码方法、解码器和解码***
JP3559314B2 (ja) 画像圧縮装置
WO2002051159A2 (en) Method of compressing data by use of self-prefixed universal variable length code
WO2020258189A1 (zh) 编码方法、编码器和编码***
CN103024380A (zh) 一种数据的熵编码方法和装置

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