KR101270633B1 - 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치 - Google Patents

복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치 Download PDF

Info

Publication number
KR101270633B1
KR101270633B1 KR1020110035725A KR20110035725A KR101270633B1 KR 101270633 B1 KR101270633 B1 KR 101270633B1 KR 1020110035725 A KR1020110035725 A KR 1020110035725A KR 20110035725 A KR20110035725 A KR 20110035725A KR 101270633 B1 KR101270633 B1 KR 101270633B1
Authority
KR
South Korea
Prior art keywords
hoffman
value
address
index
memory
Prior art date
Application number
KR1020110035725A
Other languages
English (en)
Other versions
KR20120118258A (ko
Inventor
정태경
부이휴
백승현
Original Assignee
명지대학교 산학협력단
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 명지대학교 산학협력단 filed Critical 명지대학교 산학협력단
Priority to KR1020110035725A priority Critical patent/KR101270633B1/ko
Publication of KR20120118258A publication Critical patent/KR20120118258A/ko
Application granted granted Critical
Publication of KR101270633B1 publication Critical patent/KR101270633B1/ko

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0207Addressing or allocation; Relocation with multidimensional access, e.g. row/column, matrix
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/04Addressing variable-length words or parts of words
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 구간별 데이터량에 따라 심볼들에 대하여 서로 다른 코드를 갖는 복수의 테이블들을 선택적으로 이용하여 고속으로 호프만 코드를 디코딩할 수 있는 멀티미디어용 호프만 디코딩 방법과 장치에 관한 것이다.
본 발명의 일면에 따른 호프만 디코딩 방법은, 미리 정의된 복수의 호프만 테이블을 메모리에 저장하는 단계, 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하는 단계, 및 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 단계를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값인 것을 특징으로 한다.

Description

복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치{Fast Multimedia Huffman Decoding Method and Apparatus for Adapting Plurality of Huffman Tables}
본 발명은 호프만 디코딩 방법에 관한 것으로서, 특히, 구간별 데이터량에 따라 심볼들에 대하여 서로 다른 코드를 갖는 복수의 테이블들을 선택적으로 이용하여 고속으로 호프만 코드를 디코딩할 수 있는 멀티미디어용 호프만 디코딩 방법과 장치에 관한 것이다.
호프만 코딩은 호프만에 의하여 제안된 엔트로피(entropy) 코딩 방식으로서, MP3, JPEG, H.264 등과 같은 많은 멀티미디어 응용에 널리 사용되고 있다. 호프만 디코더의 효율은 전반적인 응용들의 동작에 영향을 끼친다. 호프만 디코더를 평가하는 두가지 주요 요인으로서는 디코딩 속도와 메모리 효율을 들 수 있다.
많은 실제 응용들에 있어서, 호프만 디코딩 과정은, 인코딩된 데이터 스트림을 미리 정의된 테이블을 이용해 디코딩하는 과정으로 이루어진다. 여기서 미리 정의된 테이블을 효율적으로 메모리에 저장하는 것이 중요하다.
메모리 효율을 높인 많은 알고리즘들이 고속 호프만 디코딩의 수행을 위하여 제안되고 있다. 예를 들어, 소정의 호프만 테이블을 이용해 바이너리(binary) 트리 서치 방식으로 디코딩하는 방식이 많이 이용되고 있다. 바이너리 트리 서치 방식에서는, 도 1과 같이 심볼(symbol)이 하나씩 소정 코드워드(codeword)에 대응되도록 저장한 룩업(look up) 테이블을 이용하고, 바이너리 트리 상의 루트(root) 노드로부터 리프 노드(leaf node)까지의 경로가 리프 노드에 대응되는 코드워드를 나타내도록 하여 디코딩한다. 이와 같은 디코딩 트리를 이용하여 호프만 인코딩된 데이터를 디코딩하기 위하여 루트 노드로부터 시작하여 탐색해 나간다. 인코딩된 비트 스트림이 순차적으로 한 비트씩 페치(fetch)될 때, 그 값이 0 또는 1에 따라 트리 상의 좌측 또는 우측 자식 노드로 탐색된다. 이와 같은 과정으로 자식 노드가 리프 노드에 이르게 되면, 하나의 심볼이 디코딩되고, 그 뒤의 인코딩된 비트 스트림의 각 비트에 대하여 루트 노드로부터 탐색 과정이 재 시작되어 모든 인코딩된 데이터가 디코딩될 때까지 반복된다. 그러나, 이와 같은 기존의 트리 서치 방식은 루트 노드로부터 리프 노드까지 탐색하는 시간이 길므로 디코딩 속도가 매우 느리다는 문제점이 있다.
또한, 종래의 호프만 디코딩에서는 하나의 룩업 테이블만을 이용하고 있다. 이는 오디오 또는 비디어 데이터의 구간별 데이터량을 반영하지 못하여 디코딩 속도를 저하시킨다. 예를 들어, 오디오 데이터 또는 비디오 데이터는 구간에 따라 일정한 데이터량을 갖지 않는다. 예를 들어, 소리가 급격히 변하는 구간에서는 오디오 데이터량이 증가하고, 영상의 변화가 많은 구간에서는 비디오 데이터량이 증가한다. 따라서, 일정 룩업 테이블을 이용해 데이터를 디코딩하는 경우에, 데이터량이 많은 구간에서는 디코딩이 정상적으로 처리되지 못하여 음질 또는 화질을 저하시킬 수 있는 문제점이 있다.
따라서, 본 발명은 상술한 문제점을 해결하기 위한 것으로서, 본 발명의 목적은, 호프만 디코딩 트리의 확률적 테이블에 의해 생성된 심볼들에 대한 새로운 테이블 표현을 정의하고, 이러한 확률적 테이블에 의해 생성된 심볼들에 대응되는 호프만 코드를 고속으로 탐색하여 디코딩하며, 구간별 데이터량에 따라 심볼들에 대하여 서로 다른 코드를 갖는 복수의 테이블들을 선택적으로 이용하여 고속으로 호프만 코드를 디코딩할 수 있는 멀티미디어용 호프만 디코딩 방법과 장치를 제공하는 데 있다.
먼저, 본 발명의 특징을 요약하면, 상기와 같은 본 발명의 목적을 달성하기 위한 본 발명의 일면에 따른 호프만 디코딩 방법은, 미리 정의된 복수의 호프만 테이블을 메모리에 저장하는 단계; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하는 단계; 및 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 단계를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이다.
상기 복수의 호프만 테이블 각각은, 호프만 코드워드의 심볼을 루트 노드로부터 중간 노드를 거쳐 리프 노드로 대응시키는 바이너리 트리 구조 상에서, 루트 노드 및 각 중간 노드가 코드 값의 0 과 1에 대응하여 2개로 분기되는 각 엔트리에 대하여 구분자 필드와 값 필드를 가지며, 상기 구분자 필드는 자식 노드가 중간 노드인지 또는 리프 노드인지 여부를 나타내는 0 또는 1의 값을 가지고, 상기 값 필드는 상기 구분자 필드가 0이면 자식 노드 인덱스이며 상기 구분자 필드가 1이면 심볼 값이다.
상기 디코딩하는 단계는, 상기 선택된 호프만 테이블로부터 인덱스(index), 입력 비트, 및 베이스 어드레스를 더한 값에 대응된 엔트리의 구분자 필드와 값 필드를 추출하는 제1단계; 상기 추출된 엔트리의 구분자 필드가 0인지 또는 1인지 여부를 판단하는 제2단계; 상기 추출된 엔트리의 구분자 필드가 1이면 해당 값 필드를 심볼값으로 출력하고, 상기 인덱스를 0으로 설정한 후 상기 제1단계를 수행하는 제3단계; 및 상기 추출된 엔트리의 구분자 필드가 0이면 해당 값 필드에 2를 곱한 값을 상기 인덱스로 설정한 후 상기 제1단계를 수행하는 제4단계를 포함한다.
상기 입력 비트 스트림은 인코딩 수단에서 멀티미디어 데이터를 인코딩한 데이터이며, 상기 인코딩 수단은 상기 멀티미디어 데이터의 인코딩 시에 상기 복수의 호프만 테이블을 이용하여 인코딩하며, 인코딩 시에 상기 복수의 호프만 테이블 중 사용된 호프만 테이블에 대한 정보를 상기 테이블 인덱스로서 제공한다.
상기 디코딩하는 단계에서, 상기 테이블 인덱스에 대응되는 베이스 어드레스가 포함된 메모리 어드레스를 생성하고 상기 메모리 어드레스의 데이터를 메모리로부터 읽어와 상기 입력 비트 스트림을 디코딩한다.
상기 메모리 어드레스를 생성하기 위하여, 제1저장수단으로부터 상기 테이블 인덱스에 대응되는 베이스 어드레스를 불러오는 단계; 제2저장수단으로부터 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 불러오는 단계; 및 합산기를 이용해 상기 베이스 어드레스와 상기 오프셋 어드레스를 합산하여 합산값을 상기 메모리 어드레스로서 생성단계를 포함한다.
또는, 상기 테이블 인덱스를 베이스 어드레스로서 이용하고, 상기 메모리 어드레스를 생성하기 위하여, 저장수단으로부터 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 불러오는 단계; 및 상기 베이스 어드레스와 상기 오프셋 어드레스를 상하위 비트들로 구성한 값을 상기 메모리 어드레스로서 생성단계를 포함한다.
다른 한편, 상기 메모리 어드레스를 생성하기 위하여, 제1저장수단으로부터 상기 테이블 인덱스에 대응되는 베이스 어드레스를 불러오는 단계; 제2저장수단으로부터 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 불러오는 단계; 논리합 게이트를 이용해 상기 베이스 어드레스의 일부와 상기 오프셋 어드레스의 논리합을 계산하는 단계; 및 상기 베이스 어드레스의 나머지 부분과 상기 논리합의 계산 결과를 상하위 비트들로 구성한 값을 상기 메모리 어드레스로서 생성단계를 포함한다.
그리고, 본 발명의 다른 일면에 따른 호프만 디코딩 장치는, 미리 정의된 복수의 호프만 테이블을 저장하는 메모리; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하여, 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 디코더를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이다.
상기 복수의 호프만 테이블 각각은, 호프만 코드워드의 심볼을 루트 노드로부터 중간 노드를 거쳐 리프 노드로 대응시키는 바이너리 트리 구조 상에서, 루트 노드 및 각 중간 노드가 코드 값의 0 과 1에 대응하여 2개로 분기되는 각 엔트리에 대하여 구분자 필드와 값 필드를 가지며, 상기 구분자 필드는 자식 노드가 중간 노드인지 또는 리프 노드인지 여부를 나타내는 0 또는 1의 값을 가지고, 상기 값 필드는 상기 구분자 필드가 0이면 자식 노드 인덱스이며 상기 구분자 필드가 1이면 심볼 값이다.
상기 디코더는, 상기 선택된 호프만 테이블로부터 인덱스(index), 입력 비트, 및 베이스 어드레스를 더한 값에 대응된 엔트리의 구분자 필드와 값 필드를 추출하는 제1과정; 상기 추출된 엔트리의 구분자 필드가 0인지 또는 1인지 여부를 판단하는 제2과정; 상기 추출된 엔트리의 구분자 필드가 1이면 해당 값 필드를 심볼값으로 출력하고, 상기 인덱스를 0으로 설정한 후 상기 제1단계를 수행하는 제3과정; 및 상기 추출된 엔트리의 구분자 필드가 0이면 해당 값 필드에 2를 곱한 값을 상기 인덱스로 설정한 후 상기 제1단계를 수행하는 제4과정을 포함하는 과정들을 수행한다.
상기 입력 비트 스트림은 인코딩 수단에서 멀티미디어 데이터를 인코딩한 데이터이며, 상기 인코딩 수단은 상기 멀티미디어 데이터의 인코딩 시에 상기 복수의 호프만 테이블을 이용하여 인코딩하며, 인코딩 시에 상기 복수의 호프만 테이블 중 사용된 호프만 테이블에 대한 정보를 상기 테이블 인덱스로서 제공한다.
상기 디코더는, 상기 테이블 인덱스에 대응되는 베이스 어드레스가 포함된 메모리 어드레스를 생성하고 상기 메모리 어드레스의 데이터를 메모리로부터 읽어와 상기 입력 비트 스트림을 디코딩한다.
상기 디코더는, 상기 테이블 인덱스에 대응되는 베이스 어드레스를 저장하는 제1저장수단; 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 저장하는 제2저장수단: 및 상기 베이스 어드레스와 상기 오프셋 어드레스를 합산하여 합산값을 상기 메모리 어드레스로서 생성하는 합산기를 포함한다.
또는, 상기 디코더는, 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 저장하는 저장수단을 포함하고, 상기 테이블 인덱스에 해당하는 베이스 어드레스와 상기 오프셋 어드레스를 상하위 비트들로 구성한 값을 상기 메모리 어드레스로서 생성한다.
또는, 상기 디코더는, 상기 테이블 인덱스에 대응되는 베이스 어드레스를 저장하는 제1저장수단; 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 저장하는 제2저장수단; 및 상기 베이스 어드레스의 일부와 상기 오프셋 어드레스의 논리합을 계산하는 논리합 게이트를 포함하고, 상기 베이스 어드레스의 나머지 부분과 상기 논리합의 계산 결과를 상하위 비트들로 구성한 값을 상기 메모리 어드레스로서 생성한다.
본 발명에 따른 호프만 디코딩 방법에 따르면, 새로이 정의된 호프만 디코딩 트리의 테이블 표현을 메모리에 효율적으로 저장하고 이를 이용해 호프만 코드를 고속으로 탐색하여 디코딩하며, 구간별 데이터량에 따라 심볼들에 대하여 서로 다른 코드를 갖는 복수의 테이블들을 선택적으로 이용하여 고속으로 호프만 코드를 디코딩할 수 있다.
도 1은 일반적인 호프만 테이블을 설명하기 위한 도면이다.
도 2는 본 발명의 일실시예에 따른 호프만 디코딩 장치의 개념을 설명하기 위한 도면이다.
도 3은 본 발명의 일실시예에 따른 호프만 디코딩 장치의 블록도이다.
도 4는 본 발명의 일실시예에 따른 호프만 디코딩 트리를 설명하기 위한 도면이다.
도 5는 본 발명의 일실시예에 따른 호프만 테이블의 일례이다.
도 6은 호프만 테이블에 저장되는 값들을 설명하기 위한 도면이다.
도 7은 도 5의 호프만 테이블을 이용한 디코딩 방법을 설명하기 위한 흐름도이다.
도 8a는 본 발명의 일실시예에 따른 디코더의 구성도이다.
도 8b는 도 8a의 어드레스 생성기의 기본 개념에 대한 블록도이다.
도 9는 본 발명의 일실시예에 따른 어드레스 생성기의 블록도이다.
도 10은 도 8에 따른 어드레스 생성 과정을 설명하기 위한 도면이다.
도 11은 도 8에 따른 메모리 구성도이다.
도 12는 본 발명의 다른 실시예에 따른 어드레스 생성기의 블록도이다.
도 13은 도 11에 따른 어드레스 생성 과정을 설명하기 위한 도면이다.
도 14는 도 11에 따른 메모리 구성도이다.
도 15는 본 발명의 또 다른 실시예에 따른 어드레스 생성기의 블록도이다.
도 16은 도 14에 따른 어드레스 생성 과정을 설명하기 위한 도면이다.
도 17은 도 14에 따른 메모리 구성도이다.
도 18은 본 발명의 디코딩 방식들의 구현에 필요한 로직 게이트들의 수와 최대 동작 주파를 나타내는 표이다.
도 19는 본 발명의 디코딩 방식들의 구현에 필요한 메모리의 사이즈를 나타내는 표이다.
이하 첨부 도면들 및 첨부 도면들에 기재된 내용들을 참조하여 본 발명의 바람직한 실시예를 상세하게 설명하지만, 본 발명이 실시예들에 의해 제한되거나 한정되는 것은 아니다.
도 2는 본 발명의 일실시예에 따른 호프만 디코딩 장치의 개념을 설명하기 위한 도면이다.
이미지 파일, 오디오 파일, 텍스트 파일 등 멀티미디어 데이터에 대하여 인코딩 수단은 룩업 테이블인 호프만 테이블을 이용하여 인코딩을 수행할 수 있으며, 본 발명의 일실시예에 따른 호프만 디코딩 장치는, 인코딩 시에 이용되는 호프만 테이블에 기초하여 인코딩된 데이터를 디코딩함으로써 본래의 이미지 파일, 오디오 파일, 텍스트 파일 등으로 복원할 수 있다.
특히, 본 발명에서는 구간별 데이터량에 따라 고속으로 호프만 코드를 디코딩할 수 있도록 하기 위하여, 입력 데이터 비트 스트림의 구간별로 심볼들에 대하여 서로 다른 코드를 갖는 복수의 호프만 테이블들을 선택적으로 이용할 수 있도록 하였다.
도 3은 본 발명의 일실시예에 따른 호프만 디코딩 장치(10)의 블록도이다.
도 3을 참조하면, 본 발명의 일실시예에 따른 호프만 디코딩 장치(10)는, 디코더(11)와 호프만 디코딩 트리의 확률적 테이블에 의해 생성된 심볼들에 대한 미리 정의된 복수의 호프만 테이블을 저장하는 메모리(12)를 포함한다.
디코더(11)는 테이블 인덱스에 따라 메모리(12)의 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하여, 선택된 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩한다. 여기서, 테이블 인덱스는 입력 비트 스트림(인코딩 수단에서 멀티미디어 데이터를 인코딩한 데이터 비트 스트림)의 구간별 데이터량에 따라 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값으로서, 인코딩 수단이 인코딩 시에 입력 비트 스트림의 구간별로 사용한 호프만 테이블에 대한 정보일 수 있다.
예를 들어, 오디오 데이터, 비디오 데이터, 또는 텍스트 데이터는 소리가 급격히 변하거나 영상의 변화가 많거나 또는 텍스트의 종류가 변하는 구간에서 데이터량이 증가될 수 있으며, 데이터량이 많은 구간에서는 속도가 빠른 방식의 호프만 테이블이 이용될 수 있도록 하였다.
본 발명에서는 이와 같이 호프만 디코딩 트리의 확률적 테이블에 의해 생성된 심볼들에 대한 테이블 표현, 즉, 확률적 테이블을 복수개로 구성하여 이에 의해 생성된 심볼들에 대응되는 호프만 코드를 고속으로 탐색하여 디코딩하며, 구간별 데이터량에 따라 심볼들에 대하여 서로 다른 코드를 갖는 복수의 테이블들을 선택적으로 이용하여 고속으로 호프만 코드를 디코딩할 수 있도록 하였다.
도 4는 본 발명의 일실시예에 따른 호프만 디코딩 트리를 설명하기 위한 도면이다.
본 발명에서는, 예를 들어, 0에서 7까지의 심볼(symbol)이 하나씩 각각의 코드워드(codeword)에 대응되어 있는 도 1과 같은 테이블을 도 4의 디코딩 트리와 같이 루프 노드(원형0)로부터 중간 노드들(원형 1~6)을 거쳐 리프 노드들(정방형 0~7)로 대응시키는 바이너리 트리 구조로 표현한다. 여기서, 루트 노드 및 각 중간 노드가 코드 값의 0 과 1에 대응하여 좌측과 우측 2개로 분기되고, 각 노드에 대한 2개의 각 엔트리에 대하여 구분자(IsSymbol) 필드와 값 필드(Value)가 포함된다.
이를 정리하면, 본 발명의 일실시예에 따른 호프만 테이블은 도 5와 같이, 7개의 노드에 대하여 각각의 2개의 엔트리(총 14개의 엔트리)가 각각 구분자(IsSymbol) 필드와 값 필드(Value)로 이루어지도록 정의된다. 구분자(IsSymbol) 필드는 자식(child) 노드가 중간 노드인지 또는 리프 노드인지 여부를 나타내는 0 또는 1의 값을 가진다. 또한, 값 필드(Value)는 구분자 필드(IsSymbol)가 0이면 자식 노드 인덱스이며 구분자 필드(IsSymbol)가 1이면 심볼 값을 나타낸다. 예를 들어, 도 4에서, 노드 (2)에서 코드 값의 0 과 1에 대응하여 좌측과 우측으로 분기되는 2개의 엔트리를 나타내기 위하여, (1,7) 및 (0,3)으로 표현할 수 있다. 여기서, (1,7)은 구분자 필드(IsSymbol)=1및 값 필드(Value)=7이고, 이에 따라 7은 리프 노드에 있는 심볼 값을 나타낸다. 또한, (0,3)은 구분자 필드(IsSymbol)=0및 값 필드(Value)=3이고, 이에 따라 3은 중간 노드에 있는 자식 노드 인덱스(노드 2에 대한 해당 자식 노드가 중간 노드이며 인덱스 3을 가짐을 의미함)를 나타낸다.
이와 같은 새로운 디코딩 트리의 정의에 따른 호프만 테이블을 메모리(12)에 저장하고, 디코더(11)에서 이를 이용하여 입력 비트 스트림(예를 들어, 호프만 인코딩된 데이터)을 디코딩할 수 있다. 이때 메모리(11) 용량은 도 6과 같이 l비트인 값 필드(Value)의 비트수(심볼의 길이)에 기초하여, n 개의 심볼의 수, 즉, 리프 노드의 수에 대하여, 2(n-1)*(l+1) 비트가 요구됨을 알 수 있다.
여기서, 도 5는 메모리(12)에 저장되는 복수의 호프만 테이블 중 어느 하나에 대한 예시이며, 메모리(12)에는 다른 심볼들(symbol)에 대하여 하나씩 각각의 코드워드가 대응되어 있는 코드 테이블에 대하여 도 4와 유사한 방식으로 구분자(IsSymbol) 필드와 값 필드(Value)의 세트가 정의된 복수의 세트들로 이루어지는 여러 개의 호프만 테이블들이 포함된다. 빠른 디코딩이 요구되는 구간에서는 심볼 수가 적은 테이블이 이용될 수 있으며 그렇지 않은 구간에서는 심볼 수가 많은 테이블이 이용될 수 있다. 심볼 수에 따라 음질이나 화질의 해상도는 달라질 수 있다.
도 7은 도 5의 호프만 테이블을 이용한 디코딩 방법을 설명하기 위한 흐름도이다.
먼저, 디코더(11)는 소정의 인덱스(index)를 0으로 설정하고, 테이블 인덱스에 대응되는 메모리(12)의 어드레스, 즉, 베이스 어드레스(baseAddr)를 입력받는다(S10).
다음에, 디코더(11)는 인덱스(index), 입력 비트, 및 베이스 어드레스(baseAddr)를 더한 값에 대응된 엔트리의 구분자 필드(IsSymbol)와 값 필드(Value)를 도 5와 같은 호프만 테이블로부터 추출할 수 있다(S20). 예를 들어, 입력 비트 스트림 '0010'일 때, 현재 인덱스=0, 입력 비트=0(입력 비트 스트림의 최우측 비트)에 따라 엔트리 [0+0=0]에 해당하는 구분자 필드(IsSymbol)와 값 필드(Value), 즉, (0, 1)를 추출할 수 있다.
다음에, 디코더(11)는 위와 같이 추출된 엔트리의 구분자 필드(IsSymbol)가 0인지 또는 1인지 여부를 판단한다(S30).
이때의 판단 결과에 따라, 디코더(11)는 위와 같이 추출된 엔트리의 구분자 필드(IsSymbol)가 1이면 해당 값 필드(Value)를 심볼값으로 출력하고, 인덱스를 다시 0으로 설정한 후 S20 단계를 계속하여 수행하도록 한다(S40). S30 단계의 판단 결과에 따라, 디코더(11)는 위와 같이 추출된 엔트리의 구분자 필드(IsSymbol)가 0이면 해당 값 필드(Value)에 2를 곱한 값을 인덱스로 설정한 후 S20 단계를 계속하여 수행하도록 한다(S50).
예를 들어, 위의 예에서 추출된 엔트리 값(0,1)의 구분자 필드(IsSymbol)가 0이므로, S50 단계에서 해당 값 필드(Value) 1에 2를 곱한 값 2를 인덱스로하고(index=2), S20 단계를 계속하여 수행한다. 이후, S20 단계로 돌아가면, 현재의 인덱스=2, 입력 비트=0에 따라 엔트리 [2+0=2]에 해당하는 구분자 필드(IsSymbol)와 값 필드(Value), 즉, (1, 5)를 추출할 수 있다(도 5참조). 이와 같이 추출된 엔트리 값(1,5)의 구분자 필드(IsSymbol)가 1이므로, S40 단계에서 해당 값 필드(Value)를 심볼값으로 출력하고, 인덱스를 다시 0으로 설정한 후 S20 단계를 계속하여 수행하도록 한다.
이와 같은 본 발명의 일시예에 따른 도 5 같은 호프만 테이블 및 다른 테이블(들)이 메모리(12)에 효율적으로 저장하여 사용되어야 한다.
도 8a는 본 발명의 일실시예에 따른 호프만 디코딩 장치(80)의 구성도이다.
본 발명의 일실시예에 따른 호프만 디코딩 장치(80)는 어드레스 생성기(Address Generator)(81), ROM(Read Only Memory)(82), 및 출력 레지스터(output register)(83)을 포함한다. 어드레스 생성기(81)는 디코더(11)에 포함될 수 있으며, ROM(82)은 복수의 호프만 테이블을 저장하는 메모리(12)에 해당한다.
도 8b와 같이, 어드레스 생성기(81)는 베이스어드레스(baseAddr) 출력을 위한 수단으로서 베이스 어드레스 테이블(86), 입력 비트와 ROM 데이터 RD[n:0]를 이용하여 오프셋 어드레스 OA[n:0]를 출력하기 위한 수단으로서의 레지스터(87), 및 베이스어드레스(baseAddr)와 오프셋 어드레스 OA[n:0]를 이용하여 ROM 어드레스 RA[d:0]를 생성하기 위한 논리 조합 수단인 콤바이너(combiner)(88)를 포함할 수 있다.
디코더(11)는 위와 같은 기본적인 구성 요소들(86, 87, 88)을 포함하는 어드레스 생성기(81)를 통해 테이블 인덱스 TI[t:0]에 대응되는 베이스 어드레스(baseAddr)가 포함된 ROM 어드레스 RA[d:0]를 생성하고, ROM 어드레스 RA[d:0]에 기초한 데이터 ND[n-1:0](예를 들어, ROM 데이터 RD[n:0] 중 n 번째 비트를 제외한 데이터)를 ROM(82)으로부터 읽어와 입력 비트 스트림을 디코딩하여 출력 레지스터(83)를 통해 출력할 수 있다. 출력 레지스터(83)를 통해 ROM 데이터 ND[n-1:0]가 출력될 때, 출력 레지스터(83)는 후속 회로의 다음 동작을 위하여 클럭 신호(CLK)를 액티브시킬 수 있다. ROM 어드레스 RA[d:0]의 데이터 RD[n:0]는 도 7의 S20에서의 엔트리에 해당할 수 있다.
이하 도 8a, 도 8b의 어드레스 생성기(81)에 적용될 수 있는 본 발명의 다양한 실시예들을 살펴본다.
도 9는 도 8a, 도 8b의 어드레스 생성기(81)에 적용될 수 있는 본 발명의 일실시예에 따른 어드레스 생성기(90)의 블록도이다.
도 9를 참조하면, 본 발명의 일실시예에 따른 어드레스 생성기(90)는 오프셋(offset) 어드레스 레지스터(91), 베이스 어드레스 테이블 저장수단(92), 및 합산기(adder)(93)을 포함한다.
베이스 어드레스 테이블 저장수단(92)은 테이블 인덱스(TI)에 대응되는 베이스 어드레스 baseAddr[d:0]를 저장한다. 베이스 어드레스 테이블 저장수단(92)은 메모리 또는 레지스터 형태의 저장 수단에 복수 테이블 인덱스에 대응되는 베이스 어드레스들을 저장할 수 있다. 오프셋(offset) 어드레스 레지스터(91)는 인덱스(도 7 참조)에 대응되는 값 0 또는 RD[n:1]과 입력 비트를 오프셋 어드레스 OA[n:0]로서 저장한다. 합산기(adder)(93)는, 도 10과 같이, 베이스 어드레스 테이블 저장수단(92)으로부터의 베이스 어드레스와 오프셋(offset) 어드레스 레지스터(91)로부터의 오프셋 어드레스를 합산하여 합산값을 ROM어드레스 RA[d:0]로서 생성한다.
여기서, 인덱스에 대응되는 값 RD[n:1]이란, 도 7의 S50에서와 같이 엔트리의 구분자 필드(IsSymbol)가 0일때, 해당 값 필드(Value)에 2를 곱한 값을 의미한다. ROM 데이터 RD[n:0] 중 RD[0]은 오프셋 어드레스 레지스터(91)를 클리어(CLR)하기 위하여 사용되는 값 '1'일 수 있고, ROM 데이터 RD[n:0] 중 RD[n:1]은 위와 같이 2를 곱한 값을 나타내기 위하여 상위 비트로 쉬프트한 값을 나타낼 수 있다. 도 7의 S40에서와 같이 인덱스가 0인 경우에는 합산기(93)는 오프셋 어드레스 레지스터(91)에서 인덱스에 대응되는 값 RD[n:1]은 0으로 하고, 입력 비트만을 오프셋 어드레스(OA) [n:0]에 포함되도록 불러올 수도 있다.
어드레스 생성기(90)는 ROM(82)의 구성이 도 11과 같을 때 위와 같이 동작한다. 즉, ROM(82)에 여분의 사용되지 않는 공간 없이 호프만 테이블들을 연결하여 각 테이블의 구분자 필드(IsSymbol)와 값 필드(Value)를 저장할 때, 필요한 메모리 사이즈는 [수학식 1]과 같이 나타낼 수 있다. [수학식 1]에서 N은 호프만 테이블들의 수, B는 베이스 어드레스 baseAddr의 비트 수, ni는 심볼의 수, l은 값 필드(Value)의 비트수(심볼의 길이)이다.
[수학식 1]
Figure 112011028578017-pat00001
도 12는 도 8a, 도 8b의 어드레스 생성기(81)에 적용될 수 있는 본 발명의 다른 실시예에 따른 어드레스 생성기(120)의 블록도이다.
도 12를 참조하면, 본 발명의 다른 실시예에 따른 어드레스 생성기(120)는 오프셋 어드레스 레지스터(121)을 포함한다.
오프셋 어드레스 레지스터(121)는 인덱스(도 7 참조)에 대응되는 값 0 또는 RD[n:1]과 입력 비트를 오프셋 어드레스 OA[n:0]로서 저장한다. 이에 따라 어드레스 생성기(120)는, 테이블 인덱스(TI)에 해당하는 베이스 어드레스 baseAddr와 오프셋 어드레스 OA[n:0]를 상하위 비트들로 구성한 값을 ROM어드레스 RA[d:0]로서 생성할 수 있다. 도 13과 같이, 테이블 인덱스(TI) [d-n-1:0] 비트에 오프셋 어드레스(OA) [n:0]을 붙여 [d:0] 비트의 ROM어드레스 RA[d:0]가 생성될 수 있다.
여기서도, 인덱스에 대응되는 값 RD[n:1]이란, 도 7의 S50에서와 같이 엔트리의 구분자 필드(IsSymbol)가 0일때, 해당 값 필드(Value)에 2를 곱한 값을 의미한다. ROM 데이터 RD[n:0] 중 RD[0]은 오프셋 어드레스 레지스터(91)를 클리어(CLR)하기 위하여 사용되는 값 '1'일 수 있고, ROM 데이터 RD[n:0] 중 RD[n:1]은 위와 같이 2를 곱한 값을 나타내기 위하여 상위 비트로 쉬프트한 값을 나타낼 수 있다. 도 7의 S40에서와 같이 인덱스가 0인 경우에는 오프셋 어드레스 레지스터(121)에서 인덱스에 대응되는 값 RD[n:1]은 0으로 하고, 입력 비트만을 오프셋 어드레스(OA) [n:0]에 포함되도록 할 수 있다.
어드레스 생성기(120)는 ROM(82)의 구성이 도 14와 같을 때 위와 같이 동작한다. 즉, ROM(82)에 여분의 사용되지 않는 공간(unused memory)을 두고, 각 호프만 테이블들이 같은 사이즈의 메모리 공간을 차지하도록 연결하여 각 테이블의 구분자 필드(IsSymbol)와 값 필드(Value)를 저장할 때, 필요한 메모리 사이즈는 [수학식 2]와 같이 나타낼 수 있다. [수학식 2]에서 N은 호프만 테이블들의 수, l은 값 필드(Value)의 비트수(심볼의 길이), 2p≥nmax이며 여유분을 위하여 2p+1 워드(또는 바이트) 만큼씩 각 테이블에 할당된다. 여기서, nmax는 가장 큰 사이즈의 호프만 테이블이 차지하는 비트 수이다.
[수학식 2]
Figure 112011028578017-pat00002
도 15는 본 발명의 또 다른 실시예에 따른 어드레스 생성기(150)의 블록도이다.
도 15를 참조하면, 본 발명의 또 다른 실시예에 따른 어드레스 생성기(150)는 오프셋 어드레스 레지스터(151), 베이스 어드레스 테이블 저장수단(152), 및 논리합(logical OR) 게이트(153)을 포함한다.
베이스 어드레스 테이블 저장수단(152)은 테이블 인덱스(TI)에 대응되는 베이스 어드레스 baseAddr[d:0]를 저장한다. 베이스 어드레스 테이블 저장수단(152)은 메모리 또는 레지스터 형태의 저장 수단에 복수 테이블 인덱스에 대응되는 베이스 어드레스들을 저장할 수 있다. 오프셋(offset) 어드레스 레지스터(151)는 인덱스(도 7 참조)에 대응되는 값 0 또는 RD[n:1]과 입력 비트를 오프셋 어드레스 OA[n:0]로서 저장한다. 논리합(logical OR) 게이트(153)는, 도 16과 같이, 비트수를 같게하여 베이스 어드레스의 일부 baseAddr[n:0]와 오프셋 어드레스 OA[n:0]의 논리합을 계산한다. 이에 따라 어드레스 생성기(150)는 베이스 어드레스의 나머지 부분 baseAddr[d:n+1]과 논리합의 계산 결과 RA[n:0]를 상하위 비트들로 구성한 값을 ROM 어드레스 RA[d:0]로서 생성한다. 도 16과 같이, 베이스 어드레스의 나머지 부분 baseAddr[d:n+1]의 비트에 오프셋 어드레스(OA) [n:0]을 붙여 [d:0] 비트의 ROM어드레스 RA[d:0]가 생성될 수 있다.
여기서도, 인덱스에 대응되는 값 RD[n:1]이란, 도 7의 S50에서와 같이 엔트리의 구분자 필드(IsSymbol)가 0일때, 해당 값 필드(Value)에 2를 곱한 값을 의미한다. ROM 데이터 RD[n:0] 중 RD[0]은 오프셋 어드레스 레지스터(151)를 클리어(CLR)하기 위하여 사용되는 값 '1'일 수 있고, ROM 데이터 RD[n:0] 중 RD[n:1]은 위와 같이 2를 곱한 값을 나타내기 위하여 상위 비트로 쉬프트한 값을 나타낼 수 있다. 도 7의 S40에서와 같이 인덱스가 0인 경우에는 오프셋 어드레스 레지스터(151)에서 인덱스에 대응되는 값 RD[n:1]은 0으로 하고, 입력 비트만을 오프셋 어드레스(OA) [n:0]에 포함되도록 할 수 있다.
어드레스 생성기(150)는 ROM(82)의 구성이 도 17과 같을 때 위와 같이 동작한다. 즉, 도 14의 저장 공간의 구성이 반복되는 형태로서, 유사한 크기의 테이블을 여러 개의 그룹으로 나누어 같은 그룹 내에서 ROM(82)에 여분의 사용되지 않는 공간(unused memory)이 존재하도록 한다. 이때 같은 그룹 내에서는 각 호프만 테이블들이 같은 사이즈의 메모리 공간을 차지한다. 여기서, 각 테이블의 구분자 필드(IsSymbol)와 값 필드(Value)를 저장할 때, 필요한 메모리 사이즈는 [수학식 3]과 같이 나타낼 수 있다. [수학식 3]에서 N은 호프만 테이블들의 수, l은 값 필드(Value)의 비트수(심볼의 길이), B는 베이스 어드레스 baseAddr의 비트 수, 2pi≥ni이며 여유분을 위하여 각 그룹에 2pi +1 워드(또는 바이트) 만큼씩 각 테이블에 할당된다. 여기서, ni는 그룹 i에서의 각 호프만 테이블이 차지하는 비트 수이다.
[수학식 3]
Figure 112011028578017-pat00003
위에서 3가지 어드레스 생성기(90/120/150)의 동작을 위한 ROM(82)의 구성 방식을 설명하였다. 도 9의 어드레스 생성기(90)의 동작방식은 도 18 및 도 19에서 합산 방식(AM : adding method)을 의미하고, 도 12의 어드레스 생성기(120)의 동작방식은 도 18 및 도 19에서 결합 방식(CM : combining method)을 의미하며, 도 15의 어드레스 생성기(150)의 동작방식은 도 18 및 도 19에서 선택 방식(SM : selecting method)을 의미한다.
도 18은 본 발명의 디코딩 방식들의 구현에 필요한 로직 게이트들의 수와 최대 동작 주파를 나타내는 표이다. 도 18과 같이, 본 발명에 따르면, FPGA와 같은 칩으로 구현할 때, 논리 소자(LE:logical element)의 필요수가 AM 방식에서 가장 크게 38~39개이며, 동작 주파수는 CM 방식에서 가장 크게 107~158 MHz임을 알 수 있다.
도 19는 본 발명의 디코딩 방식들의 구현에 필요한 메모리의 사이즈를 나타내는 표이다. 도 19는 MP3 데이터를 디코딩하기 위하여 32개의 호프만 테이블들을 사용할 때 요구되는 메모리의 비트수에 대한 예시이다. 도 19와 같이, 가장 동작 자파수가 높은 CM 방식에서 가장 많은 메모리 용량이 요구되며, SM 방식 및 AM 방식 순서로 메모리 용량이 줄어든다.
이상과 같이 본 발명은 비록 한정된 실시예와 도면에 의해 설명되었으나, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상의 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 그러므로, 본 발명의 범위는 설명된 실시예에 국한되어 정해져서는 아니 되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등한 것들에 의해 정해져야 한다.
80: 호프만 디코딩 장치
81: 어드레스 생성기(ADG: Address Generator)
82: ROM(Read Only Memory)
83: 출력 레지스터
90, 120, 150: 어드레스 생성기

Claims (17)

  1. 미리 정의된 복수의 호프만 테이블을 메모리에 저장하는 단계; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하는 단계; 및 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 단계를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 복수의 호프만 테이블 각각은,
    호프만 코드워드의 심볼을 루트 노드로부터 중간 노드를 거쳐 리프 노드로 대응시키는 바이너리 트리 구조 상에서, 루트 노드 및 각 중간 노드가 코드 값의 0 과 1에 대응하여 2개로 분기되는 각 엔트리에 대하여 구분자 필드와 값 필드를 가지며, 상기 구분자 필드는 자식 노드가 중간 노드인지 또는 리프 노드인지 여부를 나타내는 0 또는 1의 값을 가지고, 상기 값 필드는 상기 구분자 필드가 0이면 자식 노드 인덱스이며 상기 구분자 필드가 1이면 심볼 값인 것을 특징으로 하는 호프만 디코딩 방법.
  2. 삭제
  3. 미리 정의된 복수의 호프만 테이블을 메모리에 저장하는 단계; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하는 단계; 및 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 단계를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 디코딩하는 단계는,
    상기 선택된 호프만 테이블로부터 인덱스(index), 입력 비트, 및 베이스 어드레스를 더한 값에 대응된 엔트리의 구분자 필드와 값 필드를 추출하는 제1단계;
    상기 추출된 엔트리의 구분자 필드가 0인지 또는 1인지 여부를 판단하는 제2단계;
    상기 추출된 엔트리의 구분자 필드가 1이면 해당 값 필드를 심볼값으로 출력하고, 상기 인덱스를 0으로 설정한 후 상기 제1단계를 수행하는 제3단계; 및
    상기 추출된 엔트리의 구분자 필드가 0이면 해당 값 필드에 2를 곱한 값을 상기 인덱스로 설정한 후 상기 제1단계를 수행하는 제4단계
    를 포함하는 것을 특징으로 하는 호프만 디코딩 방법.
  4. 미리 정의된 복수의 호프만 테이블을 메모리에 저장하는 단계; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하는 단계; 및 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 단계를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 디코딩하는 단계에서,
    상기 테이블 인덱스에 대응되는 베이스 어드레스가 포함된 메모리 어드레스를 생성하고 상기 메모리 어드레스의 데이터를 메모리로부터 읽어와 상기 입력 비트 스트림을 디코딩하는 것을 특징으로 하는 호프만 디코딩 방법.
  5. 제4항에 있어서,
    상기 메모리 어드레스를 생성하기 위하여,
    제1저장수단으로부터 상기 테이블 인덱스에 대응되는 베이스 어드레스를 불러오는 단계;
    제2저장수단으로부터 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 불러오는 단계; 및
    합산기를 이용해 상기 베이스 어드레스와 상기 오프셋 어드레스를 합산하여 합산값을 상기 메모리 어드레스로서 생성하는 단계
    를 포함하는 것을 특징으로 하는 호프만 디코딩 방법.
  6. 제4항에 있어서,
    상기 테이블 인덱스를 베이스 어드레스로서 이용하고,
    상기 메모리 어드레스를 생성하기 위하여,
    저장수단으로부터 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 불러오는 단계; 및
    상기 베이스 어드레스와 상기 오프셋 어드레스를 상하위 비트들로 구성한 값을 상기 메모리 어드레스로서 생성하는 단계
    를 포함하는 것을 특징으로 하는 호프만 디코딩 방법.
  7. 제4항에 있어서,
    상기 메모리 어드레스를 생성하기 위하여,
    제1저장수단으로부터 상기 테이블 인덱스에 대응되는 베이스 어드레스를 불러오는 단계;
    제2저장수단으로부터 인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 불러오는 단계;
    논리합 게이트를 이용해 상기 베이스 어드레스의 일부와 상기 오프셋 어드레스의 논리합을 계산하는 단계; 및
    상기 베이스 어드레스의 나머지 부분과 상기 논리합의 계산 결과를 상하위 비트들로 구성한 값을 상기 메모리 어드레스로서 생성하는 단계
    를 포함하는 것을 특징으로 하는 호프만 디코딩 방법.
  8. 제1항, 제3항, 및 제4항 중 어느 한 항에 있어서,
    상기 입력 비트 스트림은 인코딩 수단에서 멀티미디어 데이터를 인코딩한 데이터이며, 상기 인코딩 수단은 상기 멀티미디어 데이터의 인코딩 시에 상기 복수의 호프만 테이블을 이용하여 인코딩하며, 인코딩 시에 상기 복수의 호프만 테이블 중 사용된 호프만 테이블에 대한 정보를 상기 테이블 인덱스로서 제공하는 것을 특징으로 하는 호프만 디코딩 방법.
  9. 미리 정의된 복수의 호프만 테이블을 저장하는 메모리; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하여, 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 디코더를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 복수의 호프만 테이블 각각은,
    호프만 코드워드의 심볼을 루트 노드로부터 중간 노드를 거쳐 리프 노드로 대응시키는 바이너리 트리 구조 상에서, 루트 노드 및 각 중간 노드가 코드 값의 0 과 1에 대응하여 2개로 분기되는 각 엔트리에 대하여 구분자 필드와 값 필드를 가지며, 상기 구분자 필드는 자식 노드가 중간 노드인지 또는 리프 노드인지 여부를 나타내는 0 또는 1의 값을 가지고, 상기 값 필드는 상기 구분자 필드가 0이면 자식 노드 인덱스이며 상기 구분자 필드가 1이면 심볼 값인 것을 특징으로 하는 호프만 디코딩 장치.
  10. 삭제
  11. 미리 정의된 복수의 호프만 테이블을 저장하는 메모리; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하여, 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 디코더를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 디코더는,
    상기 선택된 호프만 테이블로부터 인덱스(index), 입력 비트, 및 베이스 어드레스를 더한 값에 대응된 엔트리의 구분자 필드와 값 필드를 추출하는 제1과정;
    상기 추출된 엔트리의 구분자 필드가 0인지 또는 1인지 여부를 판단하는 제2과정;
    상기 추출된 엔트리의 구분자 필드가 1이면 해당 값 필드를 심볼값으로 출력하고, 상기 인덱스를 0으로 설정한 후 상기 제1과정을 수행하는 제3과정; 및
    상기 추출된 엔트리의 구분자 필드가 0이면 해당 값 필드에 2를 곱한 값을 상기 인덱스로 설정한 후 상기 제1과정을 수행하는 제4과정
    을 포함하는 과정들을 수행하는 것을 특징으로 하는 호프만 디코딩 장치.
  12. 미리 정의된 복수의 호프만 테이블을 저장하는 메모리; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하여, 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 디코더를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 디코더는,
    상기 테이블 인덱스에 대응되는 베이스 어드레스를 출력하기 위한 제1 수단;
    입력 비트와 상기 메모리의 데이터를 이용하여 오프셋 어드레스를 출력하기 위한 제2 수단; 및
    상기 베이스 어드레스와 상기 오프셋 어드레스를 이용하여 상기 메모리의 어드레스를 생성하기 위한 제3 수단을 포함하고,
    상기 메모리의 어드레스에 기초한 데이터를 상기 메모리로부터 읽어와 상기 입력 비트 스트림을 디코딩하는 것을 특징으로 하는 호프만 디코딩 장치.
  13. 미리 정의된 복수의 호프만 테이블을 저장하는 메모리; 테이블 인덱스에 따라 상기 복수의 호프만 테이블 중 어느 하나의 호프만 테이블을 선택하여, 선택된 상기 호프만 테이블을 이용하여 입력 비트 스트림을 디코딩하는 디코더를 포함하고, 상기 테이블 인덱스는 상기 입력 비트 스트림의 구간별 데이터량에 따라 상기 복수의 호프만 테이블 중 서로 다른 호프만 테이블을 선택하기 위한 값이며,
    상기 디코더는,
    상기 테이블 인덱스에 대응되는 베이스 어드레스가 포함된 메모리 어드레스를 생성하고 상기 메모리 어드레스에 기초한 데이터를 상기 메모리로부터 읽어와 상기 입력 비트 스트림을 디코딩하는 것을 특징으로 하는 호프만 디코딩 장치.
  14. 제13항에 있어서,
    상기 디코더는,
    상기 테이블 인덱스에 대응되는 베이스 어드레스를 저장하는 제1저장수단;
    인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 저장하는 제2저장수단: 및
    상기 베이스 어드레스와 상기 오프셋 어드레스를 합산하여 합산값을 상기 메모리의 어드레스로서 생성하는 합산기
    를 포함하는 것을 특징으로 하는 호프만 디코딩 장치.
  15. 제13항에 있어서,
    상기 디코더는,
    인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 저장하는 저장수단을 포함하고,
    상기 테이블 인덱스에 해당하는 베이스 어드레스와 상기 오프셋 어드레스를 상하위 비트들로 구성한 값을 상기 메모리의 어드레스로서 생성하는 것을 특징으로 하는 호프만 디코딩 장치.
  16. 제13항에 있어서,
    상기 디코더는,
    상기 테이블 인덱스에 대응되는 베이스 어드레스를 저장하는 제1저장수단;
    인덱스에 대응되는 값과 입력 비트를 오프셋 어드레스로서 저장하는 제2저장수단; 및
    상기 베이스 어드레스의 일부와 상기 오프셋 어드레스의 논리합을 계산하는 논리합 게이트를 포함하고,
    상기 베이스 어드레스의 나머지 부분과 상기 논리합의 계산 결과를 상하위 비트들로 구성한 값을 상기 메모리의 어드레스로서 생성하는 것을 특징으로 하는 호프만 디코딩 장치.
  17. 제9항, 제11항, 제12항, 및 제13항 중 어느 한 항에 있어서,
    상기 입력 비트 스트림은 인코딩 수단에서 멀티미디어 데이터를 인코딩한 데이터이며, 상기 인코딩 수단은 상기 멀티미디어 데이터의 인코딩 시에 상기 복수의 호프만 테이블을 이용하여 인코딩하며, 인코딩 시에 상기 복수의 호프만 테이블 중 사용된 호프만 테이블에 대한 정보를 상기 테이블 인덱스로서 제공하는 것을 특징으로 하는 호프만 디코딩 장치.
KR1020110035725A 2011-04-18 2011-04-18 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치 KR101270633B1 (ko)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020110035725A KR101270633B1 (ko) 2011-04-18 2011-04-18 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020110035725A KR101270633B1 (ko) 2011-04-18 2011-04-18 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치

Publications (2)

Publication Number Publication Date
KR20120118258A KR20120118258A (ko) 2012-10-26
KR101270633B1 true KR101270633B1 (ko) 2013-06-03

Family

ID=47285782

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020110035725A KR101270633B1 (ko) 2011-04-18 2011-04-18 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치

Country Status (1)

Country Link
KR (1) KR101270633B1 (ko)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100209877B1 (ko) * 1994-11-26 1999-07-15 윤종용 복수개의 허프만부호테이블을 이용한 가변장부호화장치 및 복호화장치
JP2009118464A (ja) 2007-09-17 2009-05-28 Nvidia Corp Jpegアプリケーションにおける可変長符号の復号
KR101030726B1 (ko) 2009-11-26 2011-04-26 명지대학교 산학협력단 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100209877B1 (ko) * 1994-11-26 1999-07-15 윤종용 복수개의 허프만부호테이블을 이용한 가변장부호화장치 및 복호화장치
JP2009118464A (ja) 2007-09-17 2009-05-28 Nvidia Corp Jpegアプリケーションにおける可変長符号の復号
KR101030726B1 (ko) 2009-11-26 2011-04-26 명지대학교 산학협력단 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치

Also Published As

Publication number Publication date
KR20120118258A (ko) 2012-10-26

Similar Documents

Publication Publication Date Title
US8094048B2 (en) Method of decoding syntax element in context-based adaptive binary arithmetic coding decoder and decoding device therefor
JP3778087B2 (ja) データ符号化装置及びデータ復号装置
KR101118089B1 (ko) 가변장 복호화 장치 및 방법
JP4501288B2 (ja) ハフマン符号の復号方法、復号装置、ハフマン符号復号用テーブルおよびその作成方法
JP4098187B2 (ja) 可変長コード復号化装置及び方法
US9698819B1 (en) Huffman code generation
JP5656593B2 (ja) 符号化データを復号する装置及び方法
US6741191B2 (en) Huffman decoding method and apparatus
US7898444B2 (en) Decoding method
KR101030726B1 (ko) 확률적 테이블에 의해 생성된 심볼을 기반으로 호프만 테이블을 적용한 메모리 효율이 개선된 멀티미디어용 호프만 디코딩 방법 및 장치
CN102255617A (zh) 哈夫曼树的存储方法及利用数组进行数据解码的方法
JP4841496B2 (ja) 可変長符号復号化装置
US7205915B2 (en) Method of decoding variable length prefix codes
KR20220054651A (ko) 다중 심볼 디코더
KR101270633B1 (ko) 복수 호프만 테이블을 적용하여 고속 처리가 가능한 멀티미디어용 호프만 디코딩 방법 및 장치
CN116366071A (zh) 一种基于ans编码的封装方法、系统、存储介质及设备
EP1514356A1 (en) A method and a system for variable-length decoding, and a device for the localization of codewords
JP2016052046A (ja) 圧縮装置、伸長装置およびストレージ装置
JP2008199100A (ja) 可変長符号復号装置
KR100576548B1 (ko) 문맥기반 적응 가변길이 복호화 장치 및 그 방법
JP2003174365A (ja) 復号化装置及びその方法
KR100207428B1 (ko) 허프만 코드 변환에 적응적인 고속 가변장 복호화 장치 및 방법
Wang et al. Transformed HCT for parallel Huffman decoding
US8941515B1 (en) Encoder, decoder and data processing system
JP2010258927A (ja) 符号データ処理装置、方法及びプログラム

Legal Events

Date Code Title Description
A201 Request for examination
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20160503

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20170515

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee