KR20010101330A - Variable-length decoding - Google Patents

Variable-length decoding Download PDF

Info

Publication number
KR20010101330A
KR20010101330A KR1020017008336A KR20017008336A KR20010101330A KR 20010101330 A KR20010101330 A KR 20010101330A KR 1020017008336 A KR1020017008336 A KR 1020017008336A KR 20017008336 A KR20017008336 A KR 20017008336A KR 20010101330 A KR20010101330 A KR 20010101330A
Authority
KR
South Korea
Prior art keywords
memory
memory location
data
branch
huffman tree
Prior art date
Application number
KR1020017008336A
Other languages
Korean (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 요트.게.아. 롤페즈
Publication of KR20010101330A publication Critical patent/KR20010101330A/en

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M7/00Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
    • H03M7/30Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
    • H03M7/40Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
    • H03M7/42Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory
    • H03M7/425Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code using table look-up for the coding or decoding process, e.g. using read-only memory for the decoding process only
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

허프만 트리(HT)에 따라 가변 길이 부호화된 데이터는 다음의 방법으로 디코딩된다. 허프만 트리의 브랜치가 메모리 위치(ML)에 의해 나타내지도록 허프만 트리가 저장된 메모리(MEM)가 사용된다. 메모리 위치가 후속 브랜치가 이어지는 브랜치를 나타낸다면, 메모리 위치는 이들 후속되는 브랜치를 나타내는 메모리 위치에의 포인터(P)를 포함한다. 메모리 위치가 후속 브랜치가 이어지지 않는 브랜치를 나타낸다면, 메모리 위치는 ECI 및 출력 심볼 데이터(OSD)를 포함한다. 디코딩 프로세서(DPR)는 데이터 요소들의 시퀀스에서 각각의 데이터 요소(DE)에 의해, 선택 단계(SEL) 및 평가 단계(EVA)를 실행한다. 선택 단계에서는, 디코딩 프로세서가 데이터 요소 및 가장 최근에 선택된 메모리 위치의 내용에 의거하여 메모리 위치를 선택한다. 평가 단계에서는, 선택된 메모리 위치가 ECI를 포함하는지 여부를 체크하고, 포함하는 경우에 출력 심볼 데이터에 의거하여 출력 심볼을 제공한다. 이러한 방식의 가변 길이 디코딩에 의해서, 특히 여러 가지 유형의 가변 길이 부호를 디코드해야 할 때 비용 효율적으로 구현할 수 있게 한다. 특히 MPEG 디코더에서 사용하는데 적합하다.Variable length coded data according to the Huffman tree HT is decoded by the following method. The memory MEM in which the Huffman tree is stored is used so that the branch of the Huffman tree is represented by the memory location ML. If the memory location represents a branch following a subsequent branch, the memory location includes a pointer P to the memory location representing these subsequent branches. If the memory location represents a branch where subsequent branches do not follow, the memory location includes an ECI and output symbol data (OSD). The decoding processor DPR executes the selection step SEL and the evaluation step EVA with each data element DE in the sequence of data elements. In the selection step, the decoding processor selects a memory location based on the content of the data element and the most recently selected memory location. In the evaluation step, it is checked whether the selected memory location includes ECI, and if so, provide an output symbol based on the output symbol data. This type of variable length decoding makes it possible to implement cost-effectively, especially when it is necessary to decode various types of variable length codes. It is particularly suitable for use in MPEG decoders.

Description

가변 길이 디코딩{Variable-length decoding}Variable-length decoding

가변 길이 부호화는 다음의 원리에 의거한다. 부호화할 데이터는 텍스트가 각종 상이한 단어들로 구성되어 있는 것처럼, 서로 상이한 여러 심볼로 구성되어 있다. 데이터 내에서 빈번히 발생하는 심볼은 비교적 짧은 부호(code) 워드, 즉 비교적 소수의 비트를 포함하는 부호 워드에 의해 부호화된다. 데이터에서 드물게 일어나는 심볼은 보다 긴 부호 워드에 의해 부호화된다. 예를 들어, 데이터가 4개의 심볼 A, B, C, D로 구성되어 있는 것으로 가정한다. 또한 데이터는 50%의 심볼 A, 25%의 심볼 B, 각각 12.5%의 심볼 C와 D로 구성된다고 가정한다. 심볼 A는 1비트 2진 부호 워드, 심볼 B는 2비트 2진 부호 워드, 심볼 C 및 D는 3비트 2진 부호 워드에 의해 나타내어질 수 있다. 데이터가 이들 부호 워드로 부호화될 때, 부호화된 데이터에서의 평균 부호 워드 길이는 2 비트보다 작을 것이다.Variable length coding is based on the following principle. The data to be encoded is composed of several different symbols, just as text is composed of various different words. Frequently occurring symbols in data are encoded by a relatively short code word, that is, a code word containing a relatively few bits. Rarely occurring symbols in data are encoded by longer code words. For example, assume that data is composed of four symbols A, B, C, and D. It is also assumed that the data consists of 50% symbol A, 25% symbol B, and 12.5% symbols C and D, respectively. Symbol A may be represented by a 1-bit binary code word, symbol B by a 2-bit binary code word, and symbols C and D by a 3-bit binary code word. When data is encoded with these code words, the average code word length in the coded data will be less than two bits.

가변 길이 부호화의 기본적인 면은 상이한 부호 워드들 간을 구별하는 방법이다. 부호 워드의 길이가 고정된 경우, 즉 각 부호 워드가 예를 들면 2비트의 길이를 갖는 경우, 2비트 마다 새로운 부호 워드가 존재할 것임을 안다. 부호 워드의 길이가 고정되어 있지 않으면, 즉 가변 길이 부호화인 경우엔, 상이한 부호 워드들 간의 구별을 위해서 또다른 기술이 적용되어야 할 것이다.The basic aspect of variable length coding is how to distinguish between different code words. If the length of the sign word is fixed, i.e. each sign word has a length of two bits, for example, it is known that there will be a new sign word every two bits. If the length of the code word is not fixed, i.e. in the case of variable length coding, another technique will have to be applied to distinguish between different code words.

허프만 트리(Huffman tree)에 따른 가변 길이 부호화는 효율적으로 서로 상이한 부호 워들 간을 구별할 수 있게 해준다. 다음은 앞에서 나타낸 4개의 심볼 A, B, C, D를 부호화하는 허프만 트리의 예이다. 제1 레벨 노드는 트리의 시작을 구성한다. 이 노드에 연결된 2개의 제1 레벨 브랜치가 있다. 하나의 제1 레벨 브랜치는 이의 단부에 심볼 A를 나타내는 잎(leaf)을 갖는다. 이 브랜치에 2진 0이 관련된다. 다른 제1 레벨 브랜치는 이의 단부에 제2 레벨 노드를 갖는다. 2진 1이 이 브랜치에 연관된다. 제2 레벨 노드에 연결된 2 개의 제2 레벨 브랜치가 있다. 하나의 제2 레벨 브랜치는 이의 단부에 잎을 갖고 있고, 그 잎은 심볼 B를 나타낸다. 2진 0이 이 브랜치에 관련된다. 다른 제2 레벨 브랜치는 이의 단부에 제3 레벨 노드를 갖는다. 2진 1이 이 제2 레벨 브랜치에 연관된다. 제3 레벨 노드에 연결된 2 개의 제3 레벨 브랜치가 있다. 각각의 제3 레벨 브랜치는 이의 단부에 잎을 갖고 있고, 한 잎은 심볼 C를 나타내고 다른 한 잎은 심볼 D를 나타낸다. 2진 0은 잎이 심볼 C를 나타내는 브랜치에 연관된다. 2진 1은 잎이 심볼 D를 나타내는 브랜치에 연관된다.Variable length coding according to the Huffman tree makes it possible to efficiently distinguish between different codewords. The following is an example of a Huffman tree that encodes the four symbols A, B, C, and D shown above. The first level node constitutes the beginning of the tree. There are two first level branches connected to this node. One first level branch has a leaf at its end representing symbol A. Binary zeros are associated with this branch. The other first level branch has a second level node at its end. Binary 1 is associated with this branch. There are two second level branches connected to the second level node. One second level branch has a leaf at its end, and the leaf represents symbol B. Binary 0 is associated with this branch. The other second level branch has a third level node at its end. Binary 1 is associated with this second level branch. There are two third level branches connected to the third level node. Each third level branch has a leaf at its end, one leaf represents symbol C and the other represents symbol D. Binary zero is associated with the branch where the leaf represents symbol C. Binary 1 is associated with the branch where the leaf represents symbol D.

전술한 허프만 트리는 다음과 같은 부호 워드를 제공한다. 심볼 A를 나타내는 잎에 도달하기 위해서, 2진 0이 연관된 제1 레벨 브랜치를 통과해야 한다. 그러므로 심볼 A에 대한 부호 워드는 0이다. 심볼 B를 나타내는 잎에 도달하기 위해서, 2진 1이 연관된 제1 레벨 브랜치와 이어서 2진 0이 연관된 제2 레벨 브랜치를 통과해야 한다. 그러므로 심볼 B에 대한 부호 워드는 10이다. 심볼 C를 나타내는 잎에 도달하기 위해서, 2진 1이 연관된 제1 레벨 브랜치와, 이어서 2진 1이 연관된 제2 레벨 브랜치와, 이어서 2진 0이 연관된 제3 레벨 브랜치를 통과해야 한다. 그러므로 심볼 C에 대한 부호 워드는 110이다. 심볼 D를 나타내는 잎에 도달하기 위해서, 2진 1이 연관된 제1 레벨 브랜치와, 이어서 2진 1이 연관된 제2 레벨 브랜치와, 이어서 2진 1이 연관된 제3 레벨 브랜치를 통과해야 한다. 그러므로 심볼 D에 대한 부호 워드는 111이다.The Huffman tree described above provides the following code words. In order to reach the leaf representing symbol A, binary 0 must pass through the associated first level branch. Therefore, the sign word for symbol A is zero. In order to reach the leaf representing symbol B, it must pass through the first level branch with which binary 1 is associated, followed by the second level branch with which binary 0 is associated. Therefore, the sign word for symbol B is 10. In order to reach the leaf representing symbol C, one must pass through the first level branch with which binary 1 is associated, followed by the second level branch with which binary 1 is associated, and then the third level branch with which binary 0 is associated. Therefore, the sign word for symbol C is 110. In order to reach the leaf representing symbol D, one must pass through the first level branch with which binary 1 is associated, followed by the second level branch with which binary 1 is associated, and then the third level branch with which binary 1 is associated. Therefore, the sign word for symbol D is 111.

허프만 트리에 따라 가변 길이 부호화된 데이터는 다음과 같이 디코드될 수 있다. 데이터 레지스터는 데이터로부터 비트들의 시퀀스를 선택하고 이 시퀀스를 디코딩 논리 회로에 공급한다. 디코딩 논리 회로는 비트들의 시퀀스에 포함된 부호 워드를 그대로 인식한다. 따라서, 디코딩 논리 회로는 메모리로부터 부호 워드를 나타내는 심볼을 선택한다. 예를 들면, 전술한 바와 같이 심볼 A, B, C, D를 나타내는 부호 워드 0, 10, 110, 111로 데이터가 부호화되었다고 가정한다. 이 경우, 디코딩 논리는 데이터 레지스터가 -- 0, - 10, 110 혹은 111을 각각 포함한다면 메모리로부터 심볼 A, B, C, D를 판독한다. 여기서 부호 -는 돈캐어(don not care) 값을 나타낸다. 여기 기술된 디코딩 방법은 미국 특허 제5,828,907호에 개시되어 있다.Variable length coded data according to the Huffman tree may be decoded as follows. The data register selects a sequence of bits from the data and supplies this sequence to the decoding logic circuit. The decoding logic circuit recognizes the sign word included in the sequence of bits as it is. Thus, the decoding logic circuit selects a symbol representing the sign word from the memory. For example, it is assumed that data is encoded by code words 0, 10, 110, and 111 representing symbols A, B, C, and D as described above. In this case, the decoding logic reads symbols A, B, C, D from the memory if the data registers contain-0,-10, 110 or 111 respectively. Here, the sign-represents a don not care value. The decoding method described herein is disclosed in US Pat. No. 5,828,907.

본 발명은 본 발명은 허프만 트리에 따라 가변 길이 부호화된 데이터를 디코딩하는 것에 관한 것이다. 본 발명은 예를 들면 MPEG(Motion Pictures Expert Group) 디코더에 적용될 수도 있다.The present invention relates to decoding variable length coded data according to the Huffman tree. The invention may be applied to, for example, a Motion Pictures Expert Group (MPEG) decoder.

도 1은 청구항 1항에서 청구된 본 발명의 기본 특징들을 예시한 개념도.1 is a conceptual diagram illustrating the basic features of the invention claimed in claim 1;

도 2는 허프만 트리를 도시한 도면.2 shows a Huffman tree.

도 3은 도 2에 도시한 허프만 트리에 따라 부호화된 데이터를 디코딩하는 디코더를 도시한 블록도.3 is a block diagram illustrating a decoder for decoding data encoded according to the Huffman tree shown in FIG. 2;

도 4는 도 3에 도시한 디코더를 동작시키는 방법을 도시한 흐름도.4 is a flowchart showing a method of operating the decoder shown in FIG.

도 5는 본 발명에 따른 MPEG 디코더를 도시한 블록도.5 is a block diagram illustrating an MPEG decoder according to the present invention.

본 발명의 목적은 허프만 트리에 따라 부호화된 데이터의 디코딩을 비용효율적으로 구현할 수 있게 하는 것이다.It is an object of the present invention to enable cost-effective implementation of the decoding of data encoded according to the Huffman tree.

본 발명은 다음의 양태들을 고려하고 있다. 가변 길이 부호화에 의해 달성될 수 있는 데이터 압축 팩터(factor)는 기본적으로 2개의 팩터에 의존한다. 부호화될 데이터의 통계학적 특성과, 허프만 트리에 의존하며, 그에 따라서 데이터가 부호화된다. 소정의 유형의 데이터에 대해 만족할만한 압축 팩터를 제공하는 허프만 트리는 또다른 유형의 데이터에 대해서는 만족할만한 압축 팩터를 제공하지 않을 수도 있는데, 이것은 2 가지 유형의 데이터가 서로 상이한 통계학적 특성을 가지기 때문이다. 이러한 이유로, 각각의 부호는 그 자신의 특정의 허프만 트리를 가지면서, 서로 상이한 유형의 데이터에 대해 서로 상이한 가변 길이 부호를 갖는 것이 바람직하다.The present invention contemplates the following aspects. The data compression factor that can be achieved by variable length coding basically depends on two factors. It depends on the statistical properties of the data to be encoded and the Huffman tree, and accordingly the data is encoded. Huffman Trees that provide satisfactory compression factors for certain types of data may not provide satisfactory compression factors for other types of data because the two types of data have different statistical characteristics. . For this reason, it is preferable that each code has its own specific Huffman tree, while having different variable length codes from each other for different types of data.

예를 들면 멀티미디어와 같은 많은 응용 분야에 있어서, 서로 상이한 방식으로 가변 길이 부호화된 서로 상이한 유형의 데이터를 취급하는 것이 바람직하다. 실질적으로 이것은 각각의 가변 길이 부호에 대해 배경 기술 부분에서 기술한 바와 같은 전용 가변 길이 디코더를 제공함으로서 달성될 수 있다. 이러한 해결책은 부호마다 전용 디코딩 논리 회로를 필요로 한다. 디코딩 논리 회로는 가변 길이 부호가 일반적으로 비교적 복잡하기 때문에, 일반적으로 비교적 복잡할 것이다. 결국, 이러한 해결책은 상당한 양의 회로를 요하며 따라서 비교적 비용이 많이 든다. 또다른 해결책은 범용 프로세서를 사용하여 각각의 가변 길이 부호에 대해 가변 길이 디코딩 소프트웨어를 제공하는 것이다. 그러나, 이러한 소프트웨어에 의한 해결책은 디코딩 스루풋(throughput) 면에서 비교적 느릴 것이다. 만족할만한 디코딩 속도를 달성하기 위해서는 고속의 범용 프로세서를 필요로 할 수 있다. 이러한 프로세서는 비교적 고가이며, 따라서 소프트웨어에 의한 해결책 역시 비용이 많이 들 것이다.For many applications such as multimedia, for example, it is desirable to handle different types of data that are variable length coded in different ways. In practice this can be achieved by providing a dedicated variable length decoder as described in the background section for each variable length code. This solution requires dedicated decoding logic circuitry for each code. Decoding logic circuits will generally be relatively complex because variable length codes are generally relatively complex. After all, this solution requires a significant amount of circuitry and is therefore relatively expensive. Another solution is to use a general purpose processor to provide variable length decoding software for each variable length code. However, this software solution will be relatively slow in terms of decoding throughput. Achieving a satisfactory decoding rate may require a fast general purpose processor. Such processors are relatively expensive, so software solutions will also be expensive.

본 발명에 따라서, 허프만 트리에 따라 가변 길이 부호화된 데이터는 다음과 같은 방식으로 디코드된다. 허프만 트리의 브랜치가 메모리 위치에 의해 나타내어지도록 허프만 트리를 저장한 메모리가 사용된다. 메모리 위치가 후속 브랜치가 이어지는 브랜치를 나타낸다면, 메모리 위치는 이들 후속 브랜치를 나타내는 메모리 위치에 대한 포인터를 포함한다. 메모리 위치가 후속 브랜치가 이어지지 않은 브랜치를 나타내면, 이것은 브랜치가 그의 단부에 잎을 갖는다는 것을 의미하는 것으로, 메모리 위치는 부호 단부 표시 ECI(end-of-code indication) 및 출력 심볼 데이터를 포함한다. 디코딩 프로세서는 데이터 요소들의 시퀀스에서 각각의 데이터 요소에 의해 선택 단계 및 평가 단계를 실행한다. 선택 단계에서, 디코딩 프로세서는 데이터 요소 및 가장 최근에 선택된 메모리 위치의 내용에 의거하여 메모리 위치를 선택한다. 평가 단계에서, 디코딩 프로세서는 선택된 메모리 위치가 ECI(end-of-code indication)를 포함하는지의 여부를 체크한다. 포함한다면, 디코딩 프로세서는 출력 심볼 데이터에 의거하여 출력 심볼을 제공한다.According to the present invention, variable length coded data according to the Huffman tree is decoded in the following manner. The memory that stores the Huffman tree is used so that the branches of the Huffman tree are represented by memory locations. If the memory location represents a branch following a subsequent branch, the memory location includes a pointer to the memory location representing these subsequent branches. If the memory location represents a branch that is not followed by a subsequent branch, this means that the branch has a leaf at its end, where the memory location includes an end-of-code indication and output symbol data. The decoding processor executes a selection step and an evaluation step by each data element in the sequence of data elements. In the selection step, the decoding processor selects a memory location based on the content of the data element and the most recently selected memory location. In the evaluation phase, the decoding processor checks whether the selected memory location includes an end-of-code indication (ECI). If so, the decoding processor provides an output symbol based on the output symbol data.

디코딩 프로세서는 디코드할 데이터내의 각각의 데이터 요소로 비교적 간단한 표준 과정을 실행하기 때문에 비교적 간단할 수 있다. 더욱이, 표준 과정은 허프만 트리에 의존하지 않는다. 즉, 디코딩 프로세서는 상이한 유형의 가변 길이 디코딩을 실행하는데 사용될 수 있다. 따라서, 상이한 유형의 가변 길이 디코딩이 될 수 있게 하기 위해서, 메모리에 저장된 하나의 허프만 트리를 또다른 허프만 트리로 대체하거나 메모리에 상이한 허프만 트리를 저장하고 시작 어드레스를 정의함으로써 허프만 트리를 선택하는 것으로 충분하다.The decoding processor can be relatively simple because it executes a relatively simple standard procedure with each data element in the data to be decoded. Moreover, the standard process does not depend on the Huffman tree. That is, the decoding processor can be used to perform different types of variable length decoding. Thus, to enable different types of variable length decoding, it is sufficient to select a Huffman tree by replacing one Huffman tree stored in memory with another Huffman tree or by storing different Huffman trees in memory and defining the starting address. Do.

이에 따라 본 발명은 비교적 간단한 디코딩 회로로 여러 가지 가변 길이 부호를 디코딩할 수 있게 한다. 대조적으로, 배경 기술 부분에서 기술한 가변 길이 디코딩 방법은 본 발명과 같은 것을 달성하기 위해서는 비교적 복잡한 디코딩 회로를 필요로 한다. 본 발명에 따른 가변 길이 디코딩은 배경 기술 부분에서 기술된 가변 길이 디코딩보다 다소 더 많은 메모리를 필요로 할 수 있다. 그러나, 많은 응용에서, 본 발명은 디코딩 회로에 대한 비용 절감을 제공할 것이고, 그것은 설사 거기에 비용이 들지라도 부가적인 기억 용량의 비용보다는 더 가치가 있을 것이다. 따라서, 본 발명은 비용 효율적으로 실현가능하다.Accordingly, the present invention makes it possible to decode various variable length codes with a relatively simple decoding circuit. In contrast, the variable length decoding method described in the background section requires a relatively complex decoding circuit to achieve the same as the present invention. Variable length decoding according to the present invention may require somewhat more memory than variable length decoding described in the background section. However, in many applications, the present invention will provide cost savings for the decoding circuit, which may even be worth more than the cost of additional storage capacity even if there is a cost there. Therefore, the present invention can be realized cost effectively.

본 발명을 이점이 되게 실현하는데 선택적으로 사용될 수 있는 본 발명 및 부가적인 특징들은 하기의 설명으로부터 명백하며 도면을 참조하여 기술될 것이다.The invention and additional features that may optionally be used to realize the invention advantageously will be apparent from the following description and will be described with reference to the drawings.

다음은 참조부호에 관한 것이다. 도면에서 동일한 구성요소는 동일한 참조부호로 나타내었다. 몇 개의 유사한 구성 요소가 단일의 도면에 나타날 수 있다. 이 경우, 동일한 구성 요소들을 구별하기 위해서 숫자 혹은 접미어를 문자에 부가하였다. 숫자 혹은 접미어는 편의상 생략될 수 있고 혹은 그 값이 중요하지 않는 경우(돈 캐어 값) 별표로 대치될 수 있다. 이것은 청구범위 및 상세한 설명에도 적용한다.The following relates to reference signs. Like elements are designated by like reference numerals in the drawings. Several similar components may appear in a single drawing. In this case, numbers or suffixes are added to the characters to distinguish the same components. Numbers or suffixes can be omitted for convenience, or replaced with an asterisk if the value is not important (money care value). This also applies to the claims and the detailed description.

도 1은 허프만 트리(HT)에 따라 가변 길이 부호화된 데이터를 디코딩하는 기본 특징을 도시한 것이다. 허프만 트리의 브랜치가 메모리 위치(ML)에 의해 표현되도록 허프만 트리(HT)가 저장된 메모리(MEM)가 사용된다. 메모리 위치가 후속 브랜치가 이어지는 브랜치를 나타낸다면, 메모리 위치는 이들 후속 브랜치들을 나타내는 메모리 위치들에 대한 포인터(P)를 포함한다. 메모리 위치가 후속 브랜치가 이어지지 않는 브랜치를 나타낸다면, 메모리 위치는 부호 단부 표시 ECI(end-of-code indication) 및 출력 심볼 데이터(OSD)를 포함한다. 디코딩프로세서(DPR)는 데이터 요소들의 시퀀스에서 각각의 데이터 요소(ED)에 의해 선택 단계(SEL) 및 평가 단계(EVA)를 실행한다. 선택 단계에서, 디코딩 프로세서는 데이터 요소 및 가장 최근에 선택된 메모리 위치의 내용에 의거하여 메모리 위치를 선택한다. 평가 단계에서, 디코딩 프로세서는 선택된 메모리 위치가 ECI(end-of-code indication)를 포함하는지의 여부를 체크한다. 포함한다면, 디코딩 프로세서는 출력 심볼 데이터에 의거하여 출력 심볼을 제공한다.1 illustrates the basic feature of decoding variable length coded data according to the Huffman tree (HT). The memory MEM in which the Huffman tree HT is stored is used so that the branch of the Huffman tree is represented by the memory location ML. If the memory location represents a branch following a subsequent branch, the memory location includes a pointer P to the memory locations representing these subsequent branches. If the memory location represents a branch where the subsequent branch is not followed, the memory location includes an end-of-code indication (ECI) and output symbol data (OSD). The decoding processor DPR executes the selection step SEL and the evaluation step EVA by each data element ED in the sequence of data elements. In the selection step, the decoding processor selects a memory location based on the content of the data element and the most recently selected memory location. In the evaluation phase, the decoding processor checks whether the selected memory location includes an end-of-code indication (ECI). If so, the decoding processor provides an output symbol based on the output symbol data.

도 2는 허프만 트리의 예를 도시한 것이다. 허프만 트리는 4 개의 심볼, A, B, C, D의 가변 길이 부호화를 정의한다. 허프만 트리는 노드(NO), 브랜치(BR), 및 잎(LF)을 포함한다. 각각 제1, 제2, 및 제3 레벨 노드(NO1, NO2, NO3)가 있다. 2 개의 제1, 제2 및 제3 브랜치(BR1*, BR2*, BR3*)가 각각 있다. 0 혹은 1일 수 있는 2진값이 각각의 브랜치(BR)에 할당된다. 잎(LF1, LF2, LF3, LF4)은 각각 심볼 A, B, C, D를 나타낸다.2 shows an example of a Huffman tree. Huffman tree defines variable length coding of four symbols, A, B, C, D. Huffman tree includes a node NO, a branch BR, and a leaf LF. There are first, second, and third level nodes NO1, NO2, NO3, respectively. There are two first, second and third branches BR1 *, BR2 *, BR3 *, respectively. Binary values, which can be zero or one, are assigned to each branch BR. Leaves LF1, LF2, LF3, and LF4 represent symbols A, B, C, and D, respectively.

허프만 트리는 다음의 방식으로 각각의 심볼 A, B, C, D에 대한 부호 워드를 정의한다. 제1 레벨 노드(NO1)는 시작 노드로서 취해진다. 이 노드부터 각 심볼에의 특정의 경로가 있다. 부호 워드는 유효 자리 감소의 순서로 경로내의 브랜치(BR)에 할당된 2진값에 의해 형성된다. 예를 들면, 심볼 C에의 경로는 2진값 1, 1, 0이 각각 할당된 브랜치 BR12, BR22, BR31에 의해 형성된다. 결국, 심볼 C에 대한 부호 워드는 110이다.The Huffman tree defines the sign word for each symbol A, B, C, D in the following manner. The first level node NO1 is taken as the start node. There is a specific path from this node to each symbol. The sign word is formed by the binary value assigned to the branch BR in the path in order of decreasing significant digits. For example, the path to symbol C is formed by branches BR12, BR22, BR31 assigned binary values 1, 1, 0, respectively. As a result, the sign word for symbol C is 110.

도 3은 도 2에 도시한 허프만 트리에 따라 부호화된 데이터를 디코딩하는 디코더를 도시한 것이다. 디코더는 디코딩 프로세서(DPR) 및 메모리(MEM)을 포함한다. 메모리는 몇 개의 메모리 셀(@)을 포함한다. 각각의 메모리 셀(@)은 특정의 어드레스를 갖는다. 메모리 셀(@0, @1, @2)은 2개의 반부로 분할된다. 이들 메모리 셀은 좌반부와 우반부를 포함한다. 각 부는 어드레스를 포함한다. 또한 플래그 √를 포함한다. 예를 들면, 메모리 셀(@0)의 좌반부는 플래그(√) 및 메모리 셀(@10)의 어드레스를 포함한다. 메모리 셀(@10, @11, @12, @13)은 각각 심볼 A, B, C, D를 포함한다.3 illustrates a decoder for decoding data encoded according to the Huffman tree shown in FIG. 2. The decoder includes a decoding processor (DPR) and a memory (MEM). The memory contains several memory cells (@). Each memory cell @ has a specific address. The memory cells @ 0, @ 1, @ 2 are divided into two halves. These memory cells include a left half and a right half. Each part contains an address. It also includes a flag √. For example, the left half of the memory cell @ 0 includes a flag √ and the address of the memory cell @ 10. The memory cells @ 10, @ 11, @ 12, and @ 13 include symbols A, B, C, and D, respectively.

도 3에 도시한 디코더의 메모리(MEM)는 도 2에 도시한 허프만 트리를 포함한다. 허프만 트리는 특정한 방식으로 저장된다. 메모리 셀(@1, @1, @2)는 각각 제1, 제2, 제3 레벨 브랜치(BR1*, BR2*, BR3*)를 포함한다. 이들 메모리 셀의 좌반부는 2진 0이 할당된 브랜치(BR*1)를 나타낸다. 우반부는 2진 1이 할당된 브랜치(BR*2)를 나타낸다. 메모리 셀(@)의 일부가 후속 브랜치에 연결된 브랜치(BR)를 나타낸다면, 그 부분은 이들 또다른 브랜치를 나타내는 메모리 셀의 어드레스를 포함한다. 예를 들면, 메모리 셀(@0)의 우반부는 허프만 트리의 브랜치(BR12)를 나타낸다. 이 브랜치는 브랜치(BR21, BR22)에 또한 연결된다. 메모리 셀(@1)은 이들 브랜치를 나타낸다. 그러므로, 메모리 셀(@0)의 우반부는 메모리 셀(@1)의 어드레스를 포함한다. 메모리 셀(@)의 일부분이 그의 단부에 잎(LF)을 갖는 브랜치(BR)를 나타낸다면, 그 부분은 플래그(√)를 포함한다. 이 부분은 이 잎에 속하는 심볼을 포함하는 메모리 셀의 어드레스를 더 포함한다.The memory MEM of the decoder shown in FIG. 3 includes the Huffman tree shown in FIG. Huffman trees are stored in a particular way. The memory cells @ 1, @ 1, and @ 2 include first, second, and third level branches BR1 *, BR2 *, and BR3 *, respectively. The left half of these memory cells represents a branch BR * 1 to which binary zeros are assigned. The right half represents the branch (BR * 2) to which binary 1 is assigned. If a portion of memory cell @ represents a branch BR connected to a subsequent branch, that portion contains the addresses of the memory cells representing these further branches. For example, the right half of the memory cell @ 0 represents the branch BR12 of the Huffman tree. This branch is also connected to branches BR21 and BR22. Memory cells @ 1 represent these branches. Therefore, the right half of the memory cell @ 0 contains the address of the memory cell @ 1. If a portion of the memory cell @ represents a branch BR with a leaf LF at its end, the portion includes a flag √. This portion further includes the address of the memory cell containing the symbols belonging to this leaf.

도 4는 도 3에 도시한 디코더를 동작시키는 방법을 도시한 것이다. 상기 방법은 6개의 단계(S1-S6)들을 포함한다. 단계(S1-S4)는 디코드될 데이터의 각각의후속 비트로 실행된다. 단계 S5 및 S6은 현재의 비트가 부호 워드의 마지막 비트를 형성할 때만 실행된다. 이 경우, 디코더는 출력 심볼을 제공한다.4 illustrates a method of operating the decoder shown in FIG. The method comprises six steps S1-S6. Steps S1-S4 are executed with each subsequent bit of data to be decoded. Steps S5 and S6 are executed only when the current bit forms the last bit of the sign word. In this case, the decoder provides an output symbol.

단계 S1에서, 디코딩 프로세서는 이전에 실행된 일련의 단계들 S1-S6 동안 다음 판독될 메모리 셀로서 선택된 메모리 셀(@)을 판독한다 : RD[NXT@]. 단계 S1에서 판독되는 메모리 셀은 메모리 셀(@0, 혹은 @1, 혹은 @2)이다. 이에 대해선 후술한다.In step S1, the decoding processor reads the selected memory cell @ as the next memory cell to be read during the series of steps S1-S6 previously executed: RD [NXT @]. The memory cell read in step S1 is a memory cell (@ 0, or @ 1, or @ 2). This will be described later.

단계 S2에서, 디코딩 프로세서는 단계 S1에서 판독된 메모리 셀(@0, @1, @2)로부터 입력 데이터를 선택한다. 입력 데이터는 메모리 셀의 좌반부 혹은 우반부이다. 좌반부는 현재의 비트가 2진 0일 때 입력 데이터에 대해 선택된다 : CB=0 => LH@=ID. 우반부는 현재의 비트가 2진 1이면 입력 데이터에 대해 선택된다 : CB=1 => RF@=ID.In step S2, the decoding processor selects input data from the memory cells @ 0, @ 1, @ 2 read in step S1. The input data is the left half or right half of the memory cell. The left half is selected for input data when the current bit is binary 0: CB = 0 => LH @ = ID. The right half is selected for input data if the current bit is binary 1: CB = 1 => RF @ = ID.

단계 S3에서, 디코딩 프로세서는 입력 데이터 내 포함된 어드레스를 추출한다. 이 어드레스는 다음 판독될 메모리 셀을 정한다 : NXT@ = @ ∈ ID.In step S3, the decoding processor extracts an address included in the input data. This address defines the memory cell to be read: NXT @ = @ ∈ ID.

단계 S4에서, 디코딩 프로세서는 입력 데이터가 플래그를 포함하는지 여부를 체크한다 : √∈ ID ?. 포함한다면, 디코딩 프로세서는 단계 S5, S6을 실행한다. 포함하지 않는다면, 디코딩 프로세서는 디코드할 데이터내의 후속 비트에 대해 다시 단계 S1을 직접 실행할 것이다.In step S4, the decoding processor checks whether the input data contains a flag: √∈ ID?. If so, the decoding processor executes steps S5 and S6. If not, the decoding processor will directly execute step S1 again for subsequent bits in the data to decode.

단계 S5에서, 디코딩 프로세서는 단계 S3에서 다음 판독될 메모리 셀로서 선택된 메모리 셀을 판독한다 : RD[NXT@]. 이 메모리 셀은 메모리 셀 @10, @11, @12 혹은 @13이다. 따라서 그것은 심볼을 포함한다. 이 심볼이 출력된다.In step S5, the decoding processor reads the selected memory cell as the memory cell to be read next in step S3: RD [NXT @]. These memory cells are memory cells @ 10, @ 11, @ 12 or @ 13. Thus it contains a symbol. This symbol is output.

단계 S6에서, 디코딩 프로세서는 다음 판독할 메모리 셀로서 메모리 셀(@0)을 선택한다 : NXT@ = @0. 이어서, 디코딩 프로세서는 디코드할 데이터내의 후속 비트에 대해 다시 단계 S1을 실행할 것이다.In step S6, the decoding processor selects memory cell @ 0 as the next memory cell to read: NXT @ = @ 0. The decoding processor will then execute step S1 again for the next bit in the data to decode.

디코딩 프로세서가 처음 일련의 단계 S1-S6을 실행할 때, 현재의 비트는 부호 워드의 제1 비트가 아닐 수 있다. 이것은 중요하지 않다. 그 효과는 첫 번째 디코드된 심볼만이 잘못된 것이 될 것이다. 연이어 디코드된 심볼들은 정확할 것이다. 이 자동 조정 특징은 허프만 트리에 따라 데이터가 가변 길이 부호화되었기 때문이다.When the decoding processor first executes a series of steps S1-S6, the current bit may not be the first bit of the sign word. This is not important. The effect is that only the first decoded symbol will be wrong. Subsequently decoded symbols will be correct. This automatic adjustment feature is because data is variable length coded according to the Huffman tree.

도 4에 도시한 방법에 따라 동작하는 도 3에 도시한 디코더는 도 1에 도시한 기본 특징의 구현예이다. 이와 관련하여, 다음과 같이 기술할 수 있다. 도 1에서의 메모리 위치(ML)는 메모리 셀(@1, @2, @3)의 우반부 및 좌반부의 형태로 도 3에서 구현된다. 도 1에서 출력 심볼 데이터(OSD)는 메모리 셀(@10, @11, @12, @13)의 어드레스 형태로 도 3에 구현되고, 이들 어드레스들은 메모리 셀(@0, @1, @2)의 좌반부 및 메모리 셀(@2)의 우반부에 각각 포함되어 있다. 도 1에서 선택 단계(SEL)는 단계 S1-S3, S6의 형태로 도 4에서 구현된다. 이러한 면에서, 도 4에서 가장 최근에 선택된 메모리 위치의 내용은 메모리 셀(@1 혹은 @2)이거나, 혹은 ECI를 구성하는 플래그(√)임에 유의한다. 후자의 경우, 디코딩 프로세서는 허프만 트리의 시작을 나타내는 메모리 셀(@0)을 연이어서 판독한다. 도 1에서 평가 단계(EVA)는 단계 S4, S5의 형태로 도 4에서 구현된다.The decoder shown in FIG. 3 operating in accordance with the method shown in FIG. 4 is an implementation of the basic features shown in FIG. In this regard, it can be described as follows. The memory location ML in FIG. 1 is implemented in FIG. 3 in the form of the right and left halves of the memory cells @ 1, @ 2, and @ 3. In FIG. 1, the output symbol data OSD is implemented in FIG. 3 in the form of addresses of memory cells @ 10, @ 11, @ 12, and @ 13, and these addresses are represented by the memory cells @ 0, @ 1, and @ 2. It is included in the left half of and the right half of the memory cell (@ 2), respectively. The selection step SEL in FIG. 1 is implemented in FIG. 4 in the form of steps S1-S3, S6. In this regard, it is noted that the content of the memory location most recently selected in FIG. 4 is the memory cell (@ 1 or @ 2) or the flag (√) constituting the ECI. In the latter case, the decoding processor reads in succession the memory cell @ 0 that represents the beginning of the Huffman tree. The evaluation step EVA in FIG. 1 is implemented in FIG. 4 in the form of steps S4, S5.

도 5는 본 발명에 따라 MPEG 디코더를 도시한 것이다. MPEG 디코더는 MPEG데이터 스트림(MDS)에 응답하여, 여러 가지 유형의 디코드된 데이터, 이를테면 비디오 데이터(VID) 및 오디오 데이터(AUD)를 제공한다. MPEG 디코더는 입력 선택(INP), 가변 길이 디코더(VLD) 및 또다른 디코딩 회로(FDC)를 포함한다. 가변 길이 디코더(VLD)는 메모리(MEM) 및 디코딩 프로세서(DPR)를 포함한다. 메모리(MEM)는 여러 가지 유형의 데이터에 속하는 여러 가지 허프만 트리(HT[1]....HT[N])를 포함한다. 허프만 트리는 도 1을 참조로 앞서 설명한 방식으로 저장된다.5 illustrates an MPEG decoder in accordance with the present invention. The MPEG decoder provides various types of decoded data, such as video data (VID) and audio data (AUD), in response to an MPEG data stream (MDS). The MPEG decoder includes an input selection (INP), a variable length decoder (VLD) and another decoding circuit (FDC). The variable length decoder VLD includes a memory MEM and a decoding processor DPR. The memory MEM includes various Huffman trees belonging to various types of data (HT [1] .... HT [N]). The Huffman tree is stored in the manner described above with reference to FIG. 1.

MPEG 디코더는 기본적으로 다음과 같이 동작한다. 입력부(INP)는 현재 수신되는 데이터의 유형을 인식한다. 예를 들면, 입력부(INP)는 예를 들면 MPEG 데이터 스트림의 데이터 요소들이 일련의 DCT 계수 혹은 움직임 벡터를 나타냄을 인식할 수 있다. 입력부(INP)는 식별 신호(IS)를 가변 길이 디코더(VLD)에 공급한다. 식별 신호(IS)는 현재 가변 길이 디코더(VLD)에 어느 유형의 데이터가 수신되는가를 알려준다. 디코딩 프로세서(DPR)는 메모리(MEM)로부터 정확한 허프만 트리(HT)를 판독하기 위해서 식별 신호(IS)를 사용한다. 보다 구체적으로, 식별 신호(IS)는 부호 워드를 디코딩하기 위해 디코딩 프로세서(DPR)가 메모리를 판독하기 시작할 어드레스를 결정한다. 따라서, 가변 길이 디코더(VLD)는 유형이 달라질 수 있는 가변 길이 디코드된 데이터를 또다른 디코딩 회로(FDC)로 공급한다. 상기 또다른 디코딩 회로(FDC)는 이 데이터를 추가로 처리하는데, 이 처리는 예를 들면, 역양자화, 이산 코사인 변환 및 움직임 보상을 포함할 수 있다.The MPEG decoder basically works as follows. The input unit INP recognizes the type of data currently being received. For example, the input unit INP may recognize, for example, that data elements of an MPEG data stream represent a series of DCT coefficients or motion vectors. The input unit INP supplies the identification signal IS to the variable length decoder VLD. The identification signal IS informs the current variable length decoder VLD of what type of data is being received. The decoding processor DPR uses the identification signal IS to read the correct Huffman tree HT from the memory MEM. More specifically, the identification signal IS determines an address from which the decoding processor DPR will read the memory to decode the code word. Accordingly, the variable length decoder VLD supplies variable length decoded data to another decoding circuit FDC, which may be of different types. The another decoding circuit (FDC) further processes this data, which may include, for example, inverse quantization, discrete cosine transform and motion compensation.

도 5에 도시한 바와 같이, 메모리(MEM)내에 포함된 허프만트리(HT[1]....HT[N])는 공장에서 미리 저장되어 있을 수 있다. 그러나, 하나 이상의 허프만 트리 또한 MPEG 디코더가 공장에서 출하 후에 저장될 수도 있다. 예를 들면, 허프만 트리는 MPEG 디코더에 공급된 메모리 구성 데이터에 의해 저장될 수 있다. 메모리 구성 데이터는 일반적으로 메모리(MEM)내에 저장될 데이터 및 이 데이터가 예를 들어 부호 형태로 저장되어야 하는 정보를 포함할 것이다. 메모리 구성 데이터는 예를 들면 인터넷과 같은 통신 네트워크에 의해 MPEG 디코더에 공급될 수 있다.As shown in FIG. 5, the Huffman trees HT [1]... HT [N] included in the memory MEM may be previously stored at the factory. However, one or more Huffman trees may also be stored after the MPEG decoder leaves the factory. For example, the Huffman tree may be stored by the memory configuration data supplied to the MPEG decoder. Memory configuration data will typically include data to be stored in memory MEM and information that this data should be stored, for example in coded form. The memory configuration data may be supplied to the MPEG decoder by, for example, a communication network such as the Internet.

도면 및 전술한 설명은 본 발명을 제한하기보다는 예시하는 것이다. 첨부된 특허청구범위의 범위내에 있는 수많은 대안예들이 존재함은 명백하다. 이러한 면에서, 다음에 결어를 서술한다.The drawings and the foregoing description are illustrative rather than limiting the invention. It is apparent that numerous alternatives exist within the scope of the appended claims. In this respect, the following words are described.

특정의 유형의 허프만 트리가 도 1에 도시한 방식으로 메모리에 저장될 수 있다. 이 도면에 도시한 허프만 트리는 비교적 간단하다. 도 3에 도시한 허프만 트리 역시 비교적 단순하다. 이에 대한 이유는 간결한 설명으로 본 발명을 이해할 수 있게 하기 위한 것이다. 실제로, 허프만 트리는 보다 복잡할 것이다. 예를 들면, DCT 계수를 부호화하기 위한 MPEG에서 사용되는 허프만 트리는 훨씬 더 복잡하다. 그럼에도 불구하고, 이 허프만 트리는 도 1에 도시한 원리에 따라 메모리에 저장될 수 있다. 도 1 및 도 3에 도시한 허프만 트리는 각 노드마다 노드의 단부에 잎을 갖는 하나의 브랜치와, 또다른 브랜치가 이어지는 다른 브랜치들이 있다는점에서 다소 구체적이다. 이것은 이러한 특정한 특징을 갖지 않는 허프만 트리의 저장을 제외하는 것은 결코 아니다.Certain types of Huffman trees may be stored in memory in the manner shown in FIG. The Huffman tree shown in this figure is relatively simple. The Huffman tree shown in FIG. 3 is also relatively simple. The reason for this is to make the present invention understandable with a brief description. In fact, Huffman trees will be more complex. For example, the Huffman tree used in MPEG for encoding DCT coefficients is much more complicated. Nevertheless, this Huffman tree can be stored in the memory according to the principle shown in FIG. The Huffman tree shown in FIGS. 1 and 3 is somewhat specific in that each node has one branch with leaves at the end of the node and another branch followed by another branch. This never excludes the storage of Huffman trees that do not have this particular feature.

메모리에 허프만 트리를 저장하는 여러 가지 방식이 있다. 도 3은 브랜치를 메모리 셀의 좌반부 혹은 우반부로 나타낸 단지 한 가능한 구현예를 도시한 것이다. 또다른 가능한 구현은 각각의 브랜치가 상이한 메모리 셀로 나타낸다는 것이다. 이 경우, 또다른 브랜치가 이어지는 브랜치를 나타내는 메모리 셀은 이들 다음 브랜치를 나타내는 메모리 셀을 가리키는 포인터를 포함한다. 이어서 디코드할 데이터로부터 현재 비트의 값은 이들 메모리 셀 중 어느 것이 판독될 것인가를 결정할 것이다.There are several ways to store Huffman trees in memory. 3 illustrates only one possible implementation where the branch is represented by the left half or right half of the memory cell. Another possible implementation is that each branch is represented by a different memory cell. In this case, a memory cell representing a branch followed by another branch includes a pointer to the memory cell representing these next branches. The value of the current bit from the data to be decoded will then determine which of these memory cells will be read.

출력 심볼을 제공하는 여러 가지 방식이 있다. 도 3은 출력 심볼이 전용 메모리 셀에 저장된 단지 한가지 가능한 구현예를 도시한 것이다. 단부에 잎을 갖는 브랜치를 나타내는 메모리 위치는 적합한 출력 심볼을 포함하는 메모리 셀의 어드레스를 포함한다. 또다른 가능한 구현은 단부에 잎을 갖는 브랜치를 나타내는 메모리 위치에 출력 심볼을 직접 저장하는 것이다. 이러한 구현의 이점은 도 3에 도시한 가능성에 비해 출력 심볼을 제공하는데 1 단계를 덜 필요로 할 것이라는 것이다.There are several ways to provide output symbols. 3 illustrates only one possible implementation where the output symbols are stored in dedicated memory cells. The memory location representing the branch with leaves at the end contains the address of the memory cell containing the appropriate output symbol. Another possible implementation is to store the output symbols directly in memory locations representing branches with leaves at the ends. The advantage of this implementation is that it would require less than one step to provide the output symbols compared to the possibilities shown in FIG.

하드웨어 혹은 소프트웨어, 혹은 이들에 의해 기능을 구현하는 많은 방법들이 있다. 이러한 면에서, 도면은 매우 도식적인 것으로 각각은 본 발명의 단지 한 가능한 실시예를 나타낸다. 따라서, 도면이 상이한 블록으로서 상이한 기능을 보일지라도, 이것은 단일의 하드웨어 혹은 소프트웨어가 몇 가지 기능을 실행함을 제외시키는 것은 아니다. 또한, 하드웨어 혹은 소프트웨어, 혹은 이들 양자의 조립에 의해 기능이 실행되는 것도 제외시키는 것은 아니다.There are many ways to implement functionality by hardware or software or by them. In this respect, the drawings are very schematic, each representing only one possible embodiment of the invention. Thus, although the figures show different functions as different blocks, this does not exclude that a single piece of hardware or software performs some function. In addition, it does not exclude that a function is performed by hardware, software, or both assembly.

예를 들면, 도 3에 도시한 디코딩 프로세서(DPR)는 적합하게 프로그램된 컴퓨터 회로에 의해 구현될 수 있다. 프로그램 메모리에 포함된 한 세트의 명령들은 컴퓨터 회로로 하여금 도 3 및 4를 참조로 전술한 여러 가지 동작을 달성하게 할 수 있다. 한 세트의 명령들은 이를 포함하는 예를 들면 디스크와 같은 데이터 캐리어를 판독함으로써 프로그램 메모리에 로딩될 수 있다. 독출은 예를 들면 인터넷과 같은 통신 네트워크를 통해 달성될 수 있다. 이 경우, 서비스 제공자는 명령 세트를 일반인이 이용할 수 있게 할 것이다.For example, the decoding processor DPR shown in FIG. 3 may be implemented by suitably programmed computer circuitry. The set of instructions contained in the program memory may cause the computer circuit to accomplish the various operations described above with reference to FIGS. 3 and 4. A set of instructions can be loaded into the program memory by reading a data carrier, such as a disk, containing it. Readout may be accomplished via a communication network such as, for example, the Internet. In this case, the service provider will make the instruction set available to the public.

청구항에서 참조 부호는 청구범위를 제한하는 것으로 해석되지 말아야 한다. "포함하는"이라는 말은 청구범위에 열거된 것 외의 다른 요소 혹은 단계의 존재를 제외시키는 것은 아니다. 단수로 표시된 요소 혹은 단계는 이들이 복수로 존재하는 것을 제외하는 것은 아니다.Reference signs in the claims should not be construed as limiting the claim. The word "comprising" does not exclude the presence of elements or steps other than those listed in a claim. Elements or steps shown in the singular do not exclude the presence of a plurality.

Claims (5)

허프만 트리(Huffman tree)(HT)에 따라 가변 길이 부호화된 데이터를 디코딩하는 디코더에 있어서,A decoder for decoding variable length coded data according to a Huffman tree (HT), 상기 허프만 트리의 브랜치들이 메모리 위치들(ML)에 의해 나타내지도록 상기 허프만 트리가 저장되는 메모리(MEM)로서, 메모리 위치가 후속 브랜치들이 이어지는 브랜치를 나타내는 경우, 메모리 위치들은 이들 후속 브랜치들을 나타내는 메모리 위치들에 대한 포인터(P)를 포함하며, 상기 메모리 위치가 후속 브랜치들이 이어지지 않는 브랜치를 나타내는 경우, 메모리 위치는 부호 단부 표시(ECI)(end-of-code indication) 및 출력 심볼 데이터(output-symbol data)(OSD)를 포함하는, 상기 메모리(MEM)와,A memory MEM in which the Huffman tree is stored such that the branches of the Huffman tree are represented by memory locations ML, where the memory locations represent the branches following subsequent branches, the memory locations representing these subsequent branches. And a pointer (P) to the memory, wherein if the memory location represents a branch where subsequent branches are not followed, the memory location is an end-of-code indication and output symbol data (output-symbol). the memory MEM including data (OSD), 데이터 요소들의 시퀀스에서 각각의 데이터 요소(DE)로 다음의 각 단계들, 즉,With each data element DE in the sequence of data elements each of the following steps, namely 상기 데이터 요소 및 가장 최근에 선택된 메모리 위치의 내용에 의거하여 메모리 위치가 선택되는 선택 단계(SEL), 및A selection step (SEL) in which a memory location is selected based on the data element and the contents of the most recently selected memory location, and 선택된 메모리 위치가 ECI(end-of-code indication)를 포함하는지를 체크하고, 만약 그렇다면 상기 출력 심볼 데이터에 의거하여 출력 심볼(OS)이 제공되는 평가 단계(EVA)를Check if the selected memory location includes an end-of-code indication (ECI), and if so the evaluation step (EVA) in which an output symbol (OS) is provided based on the output symbol data 실행하는 디코딩 프로세서(DPR)를 포함하는 것을 특징으로 하는 디코더.A decoder comprising a decoding processor (DPR) to execute. 허프만 트리(Huffman tree)(HT)에 따라 가변 길이 부호화된 데이터를 디코딩하는 방법에 있어서, 상기 방법은,A method for decoding variable length coded data according to a Huffman tree (HT), the method comprising: 상기 허프만 트리의 브랜치들(B)이 메모리 위치들(ML)에 의해 나타내지도록 상기 허프만 트리가 저장되는 메모리로서, 메모리 위치가 후속 브랜치들이 이어지는 브랜치를 나타내는 경우, 메모리 위치들은 이들 후속 브랜치들을 나타내는 메모리 위치들에 대한 포인터(P)를 포함하며, 상기 메모리 위치가 후속 브랜치들이 이어지지 않는 브랜치를 나타내는 경우, 메모리 위치는 부호 단부 표시 (ECI)(end-of-code indication) 및 출력 심볼 데이터(OSD)를 포함하는, 상기 메모리를 채용하고,A memory in which the Huffman tree is stored such that the branches B of the Huffman tree are represented by memory locations ML, where the memory locations represent a branch following subsequent branches, the memory locations represent these subsequent branches. And a pointer (P) to the locations, wherein if the memory location represents a branch where subsequent branches do not follow, the memory location is an end-of-code indication (ECI) and output symbol data (OSD). Employing the memory, including, 상기 방법은 또한, 데이터 요소들의 시퀀스에서 각각의 데이터 요소(DE)로 다음의 각 단계들, 즉,The method also comprises the following respective steps, i.e., with each data element DE in the sequence of data elements: 상기 데이터 요소 및 가장 최근에 선택된 메모리 위치의 내용에 의거하여 메모리 위치가 선택되는 선택 단계(SEL), 및A selection step (SEL) in which a memory location is selected based on the data element and the contents of the most recently selected memory location, and 선택된 메모리 위치가 부호 단부 표시(ECI)를 포함하는지를 체크하고, 만약 그렇다면 상기 출력 심볼 데이터에 의거하여 출력 심볼(OS)이 제공되는 평가 단계(EVA)가It is checked if the selected memory location contains a sign end indication (ECI), and if so the evaluation step (VA) is provided on which the output symbol OS is provided based on the output symbol data 실행되는 것을 특징으로 하는 데이터 디코딩 방법.Characterized in that it is executed. 허프만 트리(HT)에 따라 가변 길이 부호화된 데이터를 디코딩하는 디코더를 구성하는 방법에 있어서, 상기 방법은,A method of configuring a decoder for decoding variable length coded data according to a Huffman tree (HT), the method comprising: 상기 허프만 트리의 브랜치들이 메모리 위치들(ML)에 의해 나타내지도록 상기 허프만 트리가 메모리에 저장되고, 메모리 위치가 후속 브랜치들이 이어지는 브랜치를 나타내는 경우, 메모리 위치는 이들 후속 브랜치들을 나타내는 메모리 위치들(ML)에 대한 포인터(P)를 포함하며, 상기 메모리 위치가 후속 브랜치들이 이어지지 않는 브랜치를 나타내는 경우, 메모리 위치는 부호 단부 표시(ECI) 및 출력 심볼(OS)을 발생하는 출력 심볼 데이터(output-symbol data)(OSD)를 포함하는 것을 특징으로 하는 디코더 구성 방법.If the Huffman tree is stored in a memory such that the branches of the Huffman tree are represented by memory locations ML, and the memory location represents a branch followed by subsequent branches, the memory location represents the memory locations ML representing these subsequent branches. And a pointer (P), wherein the memory location represents a branch where subsequent branches are not followed, the memory location is an output symbol data (output-symbol) that generates a sign end indication (ECI) and an output symbol (OS). data) (OSD). 메모리 구성 데이터 제공 방법에 있어서,In the memory configuration data providing method, 상기 허프만 트리의 브랜치들이 메모리 위치들(ML)에 의해 나타내지도록 상기 허프만 트리를 메모리에 저장할 수 있게 하고, 메모리 위치가 후속 브랜치들이 이어지는 브랜치를 나타내는 경우, 메모리 위치는 이들 후속 브랜치들을 나타내는 메모리 위치들(ML)에 대한 포인터(P)를 포함하며, 상기 메모리 위치가 후속 브랜치들이 이어지지 않는 브랜치를 나타내는 경우, 메모리 위치는 부호 단부 표시(ECI) 및 출력 심볼(OS)을 발생하는 출력 심볼 데이터(OSD)를 포함하는, 메모리 구성 데이터 제공 방법.Enable the Huffman tree to be stored in memory such that the branches of the Huffman tree are represented by memory locations ML, and if the memory location represents a branch that is subsequent branches to, then the memory location is the memory locations representing these subsequent branches. A pointer (P) to ML, wherein if the memory location represents a branch where subsequent branches are not followed, the memory location is an output symbol data OSD that generates a sign end indication (ECI) and an output symbol (OS). Memory configuration data; 디코더를 위한 컴퓨터 프로그램 제품에 있어서,In a computer program product for a decoder, 상기 디코더는 허프만 트리의 브랜치들이 메모리 위치들(ML)에 의해 나타내지도록 상기 허프만 트리가 저장되는 메모리(MEM)로서, 메모리 위치가 후속 브랜치들이 이어지는 브랜치를 나타내는 경우, 메모리 위치들은 이들 후속 브랜치들을 나타내는 메모리 위치들에 대한 포인터(P)를 포함하며, 상기 메모리 위치가 후속 브랜치들이 이어지지 않는 브랜치를 나타내는 경우, 메모리 위치는 부호 단부 표시(ECI) 및 출력 심볼 데이터(OSD)를 포함하는, 상기 메모리(MEM)를 포함하고,The decoder is a memory MEM in which the Huffman tree is stored such that the branches of the Huffman tree are represented by memory locations ML, where the memory locations represent these subsequent branches if the memory location represents a branch following the subsequent branches. And a pointer to memory locations, wherein if the memory location represents a branch where subsequent branches do not follow, the memory location includes a sign end indication (ECI) and an output symbol data (OSD). MEM), 상기 컴퓨터 프로그램 제품은 명령들의 세트를 포함하고, 상기 명령들은 상기 디코더에 로eld되는 경우에 상기 디코더로 하여금 데이터 요소들의 시퀀스에서 각각의 데이터 요소(DE)로 다음의 각 단계들, 즉,The computer program product includes a set of instructions that, when loaded into the decoder, cause the decoder to take each of the following steps into each data element DE in the sequence of data elements, i.e. 상기 데이터 요소 및 가장 최근에 선택된 메모리 위치의 내용에 의거하여 메모리 위치가 선택되는 선택 단계(SEL), 및A selection step (SEL) in which a memory location is selected based on the data element and the contents of the most recently selected memory location, and 선택된 메모리 위치가 ECI(end-of-code indication)를 포함하는지를 체크하고, 만약 그렇다면 상기 출력 심볼 데이터에 의거하여 출력 심볼(OS)이 제공되는 평가 단계(EVA)를 실행하게 하는, 컴퓨터 프로그램 제품.Checking whether the selected memory location includes an end-of-code indication, and if so, executing an evaluation step (EVA) in which an output symbol (OS) is provided based on the output symbol data.
KR1020017008336A 1999-10-29 2000-10-26 Variable-length decoding KR20010101330A (en)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
EP99402712.6 1999-10-29
EP99402712 1999-10-29
PCT/EP2000/010715 WO2001031794A1 (en) 1999-10-29 2000-10-26 Variable-length decoding

Publications (1)

Publication Number Publication Date
KR20010101330A true KR20010101330A (en) 2001-11-14

Family

ID=8242159

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020017008336A KR20010101330A (en) 1999-10-29 2000-10-26 Variable-length decoding

Country Status (6)

Country Link
EP (1) EP1142128A1 (en)
JP (1) JP2003513313A (en)
KR (1) KR20010101330A (en)
CN (1) CN1342343A (en)
TW (1) TW494645B (en)
WO (1) WO2001031794A1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100720684B1 (en) * 2005-05-09 2007-05-21 이화여자대학교 산학협력단 Method and Apparatus for Huffman Decoding by Using Balanced Binary Search Tree

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7348902B2 (en) 2003-07-29 2008-03-25 Intel Corporation Method for efficient variable length decoding
TW201143306A (en) * 2010-05-19 2011-12-01 Hon Hai Prec Ind Co Ltd Method for storing information of nodes in a huffman tree and method for decoding data using an array of the huffman tree
CN111884660B (en) * 2020-07-13 2022-06-17 山东云海国创云计算装备产业创新中心有限公司 Huffman coding equipment

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4475174A (en) * 1981-09-08 1984-10-02 Nippon Telegraph & Telephone Public Corporation Decoding apparatus for codes represented by code tree

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100720684B1 (en) * 2005-05-09 2007-05-21 이화여자대학교 산학협력단 Method and Apparatus for Huffman Decoding by Using Balanced Binary Search Tree

Also Published As

Publication number Publication date
JP2003513313A (en) 2003-04-08
WO2001031794A1 (en) 2001-05-03
TW494645B (en) 2002-07-11
EP1142128A1 (en) 2001-10-10
CN1342343A (en) 2002-03-27

Similar Documents

Publication Publication Date Title
US6587057B2 (en) High performance memory efficient variable-length coding decoder
US20020130796A1 (en) Huffman decoding method and decoder, huffman decoding table, method of preparing the table, and storage media
US8094048B2 (en) Method of decoding syntax element in context-based adaptive binary arithmetic coding decoder and decoding device therefor
JP3007235B2 (en) Variable length code decompression device and compression / decompression device
US6546053B1 (en) System and method for decoding signal and method of generating lookup table for using in signal decoding process
KR100486251B1 (en) Decoding apparatus for variable length code and method thereof
KR20030025273A (en) Self-descriptive data tag
KR20010101330A (en) Variable-length decoding
US7205915B2 (en) Method of decoding variable length prefix codes
JP3080149B2 (en) Pattern encoding method and decoding method, and encoding apparatus and decoding apparatus using the method
JP2003111021A (en) Coded image data decoder, coded image data decoding method and program
CN101325418A (en) Haffman quick decoding method based on probability table look-up
KR20050053996A (en) Method and apparatus for decoding huffman code effectively
JP2001267931A (en) Variable length decoding system and method
KR20030016859A (en) The decoding method of Huffman code
US6580377B1 (en) Huffman decoding using cascaded sub-table lookup method
CN113364466A (en) Data processing system
KR100462060B1 (en) UVLC Multiple Decoding Method
US6622279B1 (en) Computer for data processing and method for data processing using a computer
CA2628704C (en) Method of decoding entropy-encoded data
CN1299561A (en) Method for encoding image information and method for decoding
KR20050066142A (en) Apparatus and method of context-based adaptive variable length decoding
JP3005384B2 (en) Huffman decoding circuit
JP4466382B2 (en) Codeword extraction apparatus and method, decoding apparatus, and image reproduction apparatus
CN116614137A (en) Lossless data compression and decompression method and device for control codes

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid