CN1925332A - 基于关键字的变长解码器及方法 - Google Patents
基于关键字的变长解码器及方法 Download PDFInfo
- Publication number
- CN1925332A CN1925332A CN 200510086316 CN200510086316A CN1925332A CN 1925332 A CN1925332 A CN 1925332A CN 200510086316 CN200510086316 CN 200510086316 CN 200510086316 A CN200510086316 A CN 200510086316A CN 1925332 A CN1925332 A CN 1925332A
- Authority
- CN
- China
- Prior art keywords
- keyword
- code word
- code
- length
- decoding
- 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, Expansion, Code Conversion, And Decoders (AREA)
Abstract
本发明涉及变长编码技术领域,特别是一种基于关键字的变长解码器及方法。方法包括:利用码字的关键字查找码字长度;码字长度和码字本身信息的并行解码;利用查找表中基址,并结合变址产生码字地址。变长解码器,由输入缓冲器、寄存器、累加器、桶形移位器、关键字探测器、码字长度表、加法器、码表存储器组成。这种解码方法适应于任意变长解码硬件电路中,并实现快速解码。
Description
技术领域
本发明涉及变长编码技术领域,特别是一种基于关键字的变长解码器及方法。
背景技术
变长编码通常是指哈夫曼码或者改进型的哈夫曼码,它是一种无损压缩码。哈夫曼编码效率很高,平均码长十分接近信源的熵;结合其他压缩方法如量化、离散余弦变换、游程编码等可以极大地提高数据的压缩比。变长编码提供了一种高效压缩数据的途径,成为当今流行的国际音视频标准中采用的核心技术之一。但是其码字长度可变的特点也给解码带来了很大的难度。由于在未得到当前码字的码长信息之前无法获知下一个码字的起始位置,因而很难并行解码。
传统的解码方法分为两种:基于二叉树和基于PLA解码。基于二叉树的解码方法是最常见也最通用的方法,适合于软硬件解码。基本思想是:根据编码使用的二叉树,逐位读取数据码流,依次顺序地从二叉树的根开始搜索,根据当前码字0或1选择下一级分支,直到找到二叉树的末梢即终端为止,完成一次解码。方法实现容易,但周期较长,经常需要多个时钟周期才能完成单个码字的解码,大大降低了整个视频流的解码速率。基于PLA解码基本原理是查表法,门阵列存储码字信息和码字长度两部分,首先读取最长码字长度位数的码流数据,以此作为地址查找存储在可编程阵列中的码表,码字信息作为输出,码字长度作为当前状态反馈到下一次解码中,以便找到正确的解码起始位置。采用查表法,意味着需要存储大量的码表,尽管相比ROM,PLA能减少存储许多无用的数据,但是其硬件规模还是比较大;并且由于PLA的特殊结构使得时钟频率非常低。
由于变长解码通常占据整个视频流或者数据流解码时间的15~25%,成为视频处理中的一个瓶颈。传统的两种方法各有优缺点;基于树结构的方法解码周期长,但时钟频率高;基于PLA结构的方法解码周期短,但时钟频率低,两者各有优缺点,为了进一步提高解码效率(解码效率=时钟频率×解码周期数),如何设计高速的变长解码器成为一个亟待解决的问题。
发明内容
本发明的目的在于,提供一种基于关键字的变长解码器及方法。
本发明利用变长码字本身固有的特点完成码字长度和码字内容解码,解码效率比传统两种方法要高,且存储容量较小。并根据方法的要求设计出相应的硬件电路,确保单周期解码。
1.基于关键字的解码方法
参照附表1所列的变长码字,由于很多码字在二叉树中都是从同一个父级中间节点逐级分支下来的,因而码字的前面大部分位数都是相同的,称之为关键字,对应同一个关键字的码字的码长在绝大多数情况下是相同的,不同关键字的码字长度是不同的。这样根据关键字特征可以获知码字的码长。基于这个基本思想将码字长度的解码和码字内容(主要指游程长度和水平数据)的解码独立开来。因为码字长度决定了下次解码的起始位置,这样时钟周期为码字长度解码和码字信息解码两者时间的最大值;而通常的做法都是长度解码和内容解码串行完成,需要很长的时钟周期。需要说明的是,尽管是以MPEG-2变长码为例,但也适于其他基于哈夫曼的变长码如JPEG、MPEG-1、MPEG-4、AVS等。
由于码表采用ROM存储,中间将包含一些无用存储单元,存在较大的浪费。为了进一步减少码表容量,将具有相同关键字的码字从小到大顺序排列,最小码字的地址作为基址存储在中间的查找表中,然后根据已知的码长,截取对应的低几位作为变址。因此地址产生器为一加法器。
基于关键字的解码方法,如附图1所示,其基本思想有二:一是码字长度和码字本身信息的并行解码,二是利用关键字快速查找码字长度。所谓关键字技术是指许多变长码共用相同的关键字,具有相同关键字的变长码字码长相同。为了进一步减少存储容量,查找表不仅包含码字长度信息,还包括对应的关键字地址(即相同关键字对应的最小码字在存储器中的地址),通过增量寻址达到码表压缩的目的。
基于图1的结构,关键字的解码硬件需要考虑以下几个方面的问题:(1)码流是逐位输入,存储在输入缓冲中,缓冲人为的划分为8、16或者其他位数,码字在缓冲的位置是任意的,有可能码字的前部分在缓冲中,余下部分还尚未存入,对于该情况如何保持解码的连续性。(2)解码需要从码字的起始位置开始,但是码字在缓冲中的位置是不定的,如何根据解码的码字长度计算在缓冲中所处位置并且更新。(3)有极少数的码字并不符合同关键字同码长的规律,采取何种硬件加以制止。(4)基于关键字的解码方法能否在增加少量硬件基础上兼容其他标准。通过两个寄存器A及B、桶形移位器和累加器,就能十分巧妙地完成上述的各种问题。
附表1是MPEG-2部分变长码表
表1MPEG-2部分变长码表
码字 | 关键字 | 游程长度 | 水平数值 |
0001 10s | 0001 | 1 | 2 |
0001 11s | 5 | 1 | |
0001 01s | 6 | 1 | |
0001 00s | 7 | 1 | |
0010 0110s | 0010 0 | 0 | 5 |
0010 0001s | 0 | 6 | |
0010 0101s | 1 | 3 | |
0010 0100s | 3 | 2 | |
0010 0111s | 10 | 1 | |
0010 0011s | 11 | 1 | |
0010 0010s | 12 | 1 | |
0010 0000s | 13 | 1 |
2.硬件结构
根据基于关键字的解码方法,设计出对应的硬件结构,如附图2所示。
利用累加器充当移位指针,通过移位器从寄存器A、B中读取16位的当前数据。累加器记录的是寄存器A中解码的长度。每次完成一次解码后,它与得到的码长相加更新,对应新的解码位置。当累加器出现了进位,意味着当前解码的位置已经在寄存器B中,寄存器A中的数据已经全部被解码。此时借助于累加器的进位信号作为请求信号,将输入缓冲、寄存器B值并行输入给寄存器B和寄存器A。通过移位器和累加器的这种组合,就可以实现连续寻找码流的当前解码位置,准确的记载码字的长度信息,快速不间断的解码。
根据方法要求,在桶形移位器后面加入核心部件—关键字探测器,产生相应的控制信号,查找码字长度表。码字长度表包含两部分内容,码字长度和基址。根据码字长度更新累加器,另外基址与码流形成的变址相加产生绝对地址,读取码表存储器,输出游程长度和水平数值。
基于关键字的变长解码器,由输入缓冲器、寄存器、累加器、桶形移位器、关键字探测器、码字长度表、加法器、码表存储器组成。
关键字探测器是一个关键部件,功能很复杂,但对应的硬件结构实际比较简单。如附图3所示为关键字探测器硬件结构,类似于PLA中的与阵列。比如有一个关键字为01,由于经过桶形移位器得到的16位数据是从当前位置开始的,因此01对应的就是f0表达式,若关键字为00,对应的表达式为f1。这样所有的关键字都可以与阵列表示出来,由于关键字总共22种,负载电容很小,不会出现输出延迟较大的问题。
技术方案
基于关键字的解码方法,其特征包括:
—利用码字的关键字查找码字长度;
—码字长度和码字本身信息的并行解码;
—利用查找表中基址,并结合变址产生码字地址。
基于关键字查找码字长度的特征,变长码字在二叉树中都是从同一个父级中间节点逐级分支下来的,码字的前面大部分位数都是相同的,称之为关键字,对应同一个关键字的码字长度在绝大多数情况下是相同的,不同关键字的码字长度是不同的。根据关键字特征可以获知码字的码长。
根据查找表基址并结合变址产生码字地址的特征,查找表中不仅包含码字长度信息,还包括对应的关键字地址(即相同关键字对应的最小码字在存储器中的地址),通过增量寻址达到码表压缩的目的。
基于关键字的解码方法,其具体步骤如下:
码表中存储解码信息(游程长度,水平数值)和状态信息(一般主要是指码子的长度信息)。根据输入数据和当前状态产生对应的地址,读取相应码表存储中的内容,输出游程长度和水平数据,将下一个状态信息反馈给地址产生器。在单时钟周期内完成一次解码。
在桶形移位器后面加入核心部件关键字探测器(7),它由16位数据的非门与与门组成。一个逻辑门对应一个表达式。
本发明的解码方法适应于JPEG、MPEG-1、MPEG-2、MPEG4、AVS等哈夫曼或者改进型哈夫曼变长解码,采用的硬件结构适于任意变长解码硬件电路中,实现单周期解码。
附图说明
图1是变长解码方法示意图。
图2是基于关键字的变长解码器结构图。
图3是关键字探测器结构图。
具体实施方式
图1的变长解码方法,其步骤如下:
利用累加器充当移位指针,通过移位器从寄存器A、B中读取16位的当前数据累加器纪录的是寄存器A中解码的长度每次完成一次解码后,它与得到的码长相加更新,对应新的解码位置。当累加器出现了进位,意味着当前解码的位置已经在寄存器B中,寄存器A中的数据已经全部被解码。此时借助于累加器的进位信号作为请求信号,将输入缓冲寄存器B值并行输入给寄存器A。重复快速不间断的解码。
图2的基于关键字的变长解码器,由输入缓冲器1、寄存器B2、寄存器A3、累加器4、桶形移位器5、关键字探测器7、码字长度表6、加法器8、码表存储器9组成。输入缓冲器1输出到寄存器B2,寄存器B2输出到寄存器A3和桶形移位器5,累加器4输出到输入缓冲器1、寄存器B2和桶形移位器5,桶形移位器5输出到关键字探测器7和加法器8,关键字探测器7输出到码字长度表6,码字长度表6输出到加法器8和累加器4,加法器8输出到码表存储器9。
图3的关键字探测器,产生相应的控制信号,查找码字长度表。如图所示,它类似于PLA中的与阵列,由16位数据的非门与与门组成,一个逻辑门对应一个表达式。例如有一个关键字为01,对应的就是f0表达式f0=
X15&X14。所有的关键字利用这种电路组成都可以用与阵列表示出来。
Claims (7)
1.基于关键字的解码方法,其特征包括:
—利用码字的关键字查找码字长度;
—码字长度和码字本身信息的并行解码;
—利用查找表中基址,并结合变址产生码字地址。
2.根据权利要求1所述的基于关键字的解码方法,其特征在于,基于关键字查找码字长度的特征,变长码字在二叉树中都是从同一个父级中间节点逐级分支下来的,码字的前面大部分位数都是相同的,称之为关键字,对应同一个关键字的码字长度在绝大多数情况下是相同的,不同关键字的码字长度是不同的,根据关键字特征可以获知码字的码长。
3.根据权利要求1所述的基于关键字的解码方法,其特征在于,根据查找表基址并结合变址产生码字地址的特征,查找表中不仅包含码字长度信息,还包括对应的关键字地址,通过增量寻址达到码表压缩的目的。
4.根据权利要求1所述的基于关键字的解码方法,其具体步骤如下:
码表中存储解码信息和状态信息,根据输入数据和当前状态产生对应的地址,读取相应码表存储中的内容,输出游程长度和水平数据,将下一个状态信息反馈给地址产生器,在单时钟周期内完成一次解码。
5.基于关键字的变长解码器,由输入缓冲器、寄存器、累加器、桶形移位器、关键字探测器、码字长度表、加法器、码表存储器组成。
6.根据权利要求5所述的基于关键字的变长解码器,其特征在于,输入缓冲器(1)输出到寄存器B(2),寄存器B(2)输出到寄存器A(3)和桶形移位器(5),累加器(4)输出到输入缓冲器(1)、寄存器B(2)和桶形移位器(5),桶形移位器(5)输出到关键字探测器(7)和加法器(8),关键字探测器(7)输出到码字长度表(6),码字长度表(6)输出到加法器(8)和累加器(4),加法器(8)输出到码表存储器(9)。
7.根据权利要求5所述的基于关键字的变长解码器,其特征在于,在桶形移位器后面加入核心部件关键字探测器(7),它由16位数据的非门与与门组成,一个逻辑门对应一个表达式。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510086316 CN1925332A (zh) | 2005-08-31 | 2005-08-31 | 基于关键字的变长解码器及方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN 200510086316 CN1925332A (zh) | 2005-08-31 | 2005-08-31 | 基于关键字的变长解码器及方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1925332A true CN1925332A (zh) | 2007-03-07 |
Family
ID=37817835
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN 200510086316 Pending CN1925332A (zh) | 2005-08-31 | 2005-08-31 | 基于关键字的变长解码器及方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN1925332A (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102740066A (zh) * | 2011-04-01 | 2012-10-17 | 富士通株式会社 | Cavlc解码方法和系统 |
CN102983866A (zh) * | 2012-11-14 | 2013-03-20 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
CN103973311A (zh) * | 2014-04-11 | 2014-08-06 | 北京工业大学 | 一种对变长二值化描述子的快速编解码算法 |
CN104980161A (zh) * | 2015-04-02 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 一种哈夫曼解码方法及装置 |
CN104240747B (zh) * | 2013-06-07 | 2017-03-15 | 炬芯(珠海)科技有限公司 | 一种多媒体数据获取的方法及装置 |
-
2005
- 2005-08-31 CN CN 200510086316 patent/CN1925332A/zh active Pending
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102740066A (zh) * | 2011-04-01 | 2012-10-17 | 富士通株式会社 | Cavlc解码方法和系统 |
CN102740066B (zh) * | 2011-04-01 | 2015-06-17 | 富士通株式会社 | Cavlc解码方法和系统 |
CN102983866A (zh) * | 2012-11-14 | 2013-03-20 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
CN102983866B (zh) * | 2012-11-14 | 2015-12-02 | 无锡芯响电子科技有限公司 | 一种动态Huffman编码硬件实现系统及其实现方法 |
CN104240747B (zh) * | 2013-06-07 | 2017-03-15 | 炬芯(珠海)科技有限公司 | 一种多媒体数据获取的方法及装置 |
CN103973311A (zh) * | 2014-04-11 | 2014-08-06 | 北京工业大学 | 一种对变长二值化描述子的快速编解码算法 |
CN104980161A (zh) * | 2015-04-02 | 2015-10-14 | 深圳市腾讯计算机系统有限公司 | 一种哈夫曼解码方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20150066899A1 (en) | Search index format optimizations | |
CN1925332A (zh) | 基于关键字的变长解码器及方法 | |
Bao et al. | A lossless frame recompression scheme for reducing DRAM power in video encoding | |
US9665590B2 (en) | Bitmap compression for fast searches and updates | |
CN115438114B (zh) | 存储格式转换方法、系统、装置、电子设备及存储介质 | |
CN1758756A (zh) | 一种用于将待编码数据进行二进制化编码的方法和装置 | |
CN1702633A (zh) | 一种媒体文件系统的建立方法 | |
CN101060337A (zh) | 一种优化的霍夫曼解码方法和装置 | |
KR101030726B1 (ko) | 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치 | |
CN1681326A (zh) | 使用最后非零检测电路的高速图像压缩设备 | |
CN1663128A (zh) | 一种用于可变长解码的方法和系统以及一种用于代码字定位的设备 | |
Chen et al. | A low cost context adaptive arithmetic coder for H. 264/MPEG-4 AVC video coding | |
CN1662063A (zh) | 可变长码解码方法 | |
CN1186939C (zh) | 一种基于多级流水线结构的实时1/4插值方法 | |
CN1914807A (zh) | 编码解码装置 | |
CN1198416C (zh) | 一种实现w-cdma系统中turbo编码交织的方法和装置 | |
CN1209703C (zh) | 一种可随机访问数据流的组织方法及其对应的解码方法 | |
Yan et al. | A compression method for inverted index and its fpga-based decompression solution | |
Hong et al. | A 360Mbin/s CABAC decoder for H. 264/AVC level 5.1 applications | |
CN1280729C (zh) | 数据存取方法及装置 | |
KR100982666B1 (ko) | 컨텍스트 기반 적응적 가변길이 코딩의 디코딩 장치 및 디코딩을 위한 테이블 탐색 방법 | |
Song et al. | A five-stage pipeline design of binary arithmetic encoder in H. 264/AVC | |
CN1258888C (zh) | 快速译码器的标桩的有损压缩 | |
Junior et al. | A Fast and Memory Efficient Huffman Decoding Method for the MPEG-4 AAC Standard | |
CN103533360B (zh) | 一种avs编码芯片中优化码表存储的方法 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |