KR101136858B1 - Encoder and encoding method in video coding standard - Google Patents
Encoder and encoding method in video coding standard Download PDFInfo
- Publication number
- KR101136858B1 KR101136858B1 KR1020100023174A KR20100023174A KR101136858B1 KR 101136858 B1 KR101136858 B1 KR 101136858B1 KR 1020100023174 A KR1020100023174 A KR 1020100023174A KR 20100023174 A KR20100023174 A KR 20100023174A KR 101136858 B1 KR101136858 B1 KR 101136858B1
- Authority
- KR
- South Korea
- Prior art keywords
- value
- bit stream
- codeword
- codenum
- information
- Prior art date
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/44—Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/90—Methods 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/91—Entropy coding, e.g. variable length coding [VLC] or arithmetic coding
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
Abstract
본 발명은 H.264/AVC 동영상 압축 표준에서의 인코딩 장치 및 방법에 관한 것이다. 본 발명의 실시 예에 따른 인코딩 방법은 Coeff_token 인코딩 시에 사용되는 VLCT를 효과적으로 저장할 수 있는 메모리 구조를 생성한다. 즉, VLCT에 존재하는 코드워드들은 길이 정보와 값 정보로 나누어 구성되며, 코드워드들의 길이 정보와 값 정보는 할당된 각각의 메모리 영역에 저장된다. 코드워드의 길이 정보의 크기는 축소되어 구성되고, 축소된 코드워드의 길이 정보는 할당된 메모리 영역에 저장된다. 본 발명의 실시 예에 따른 인코딩 방법은 크기가 축소된 인코딩 테이블을 사용하여 인코딩 시스템의 성능을 향상시키고 인코딩 시스템의 구현 비용을 절감시킬 수 있다.The present invention relates to an encoding apparatus and method in the H.264 / AVC video compression standard. An encoding method according to an embodiment of the present invention creates a memory structure capable of effectively storing a VLCT used in Coeff_token encoding. That is, codewords existing in the VLCT are divided into length information and value information, and the length information and the value information of the codewords are stored in each allocated memory area. The size of the length information of the codeword is configured to be reduced, and the length information of the reduced codeword is stored in the allocated memory area. The encoding method according to the embodiment of the present invention can improve the performance of the encoding system and reduce the implementation cost of the encoding system by using a reduced size encoding table.
Description
본 발명의 실시 예는 데이터 압축 장치에 관한 것으로, 더욱 상세하게는 H.264/AVC 동영상 압축 표준에서의 인코딩 장치 및 방법에 관한 것이다.An embodiment of the present invention relates to a data compression apparatus, and more particularly, to an encoding apparatus and method in the H.264 / AVC video compression standard.
최근 들어 영상과 음향이 통신 및 컴퓨터와 결합되어 새로운 미디어로 융합된 멀티미디어 정보가 제공되고 있다. 예를 들면, 고속의 데이터 전송망이 공급됨에 따라 입체 음향과 고화질의 영상을 시청할 수 있고, 화상 전화를 통해 멀리 떨어져 있는 사람과 얼굴을 마주보며 통화할 수 있다. 또한, 컴퓨터나 TV를 통해 상품 정보를 실시간으로 보면서 상품을 구매할 수 있고, 웹 사이트를 통해 음악 또는 영화를 감상할 수 있다. 또한, 컴퓨터를 통해 동영상 강의를 수강하는 것이 가능하다.Recently, multimedia information, in which image and sound are combined with communication and computers, is integrated into new media. For example, as a high-speed data transmission network is provided, users can watch stereo sound and high-definition video, and can face to face with a distant person through a videophone. In addition, it is possible to purchase goods while viewing product information in real time through a computer or a TV, and to enjoy music or a movie through a website. It is also possible to take video lectures through a computer.
이러한 멀티미디어 정보들은 동영상 압축 기술을 기반으로 하여 발전되어 왔다. 정보를 전달하는 데이터는 데이터로부터 중복 요소(데이터를 정확히 복원하는 데 꼭 필요하지 않은 요소)를 제거함으로써 압축될 수 있다. 무손실 압축의 경우, 디코더에서 복원되는 데이터가 원본 데이터와 정확히 일치되도록 복원하기 위하여 통계적인 중복 요소가 제거된다. 하지만, 현재의 무손실 압축 방법은 최대 압축 효율이 약 3~4배 정도로써 압축 효율이 높지 않다. 대부분의 압축 기법은 손실 압축에 기반을 두고 있다. 손실 압축의 경우, 디코더에서 복원되는 데이터가 원본 데이터와 동일하지 않지만, 높은 압축 효율을 얻기 위하여 주관적인 중복 요소가 제거된다. 이미지 또는 비디오 압축에 있어서, 주관적인 중복 요소는 보는 사람이 직관적으로 느낄 수 있는 화질에 큰 영향을 주지 않는 제거할 수 있는 요소이다.Such multimedia information has been developed based on video compression technology. Data that conveys information can be compressed by removing redundant elements from the data (elements that are not necessary to accurately restore the data). In the case of lossless compression, statistical redundancy is removed to restore the data recovered at the decoder to exactly match the original data. However, the current lossless compression method has a maximum compression efficiency of about 3 to 4 times, which is not high in compression efficiency. Most compression techniques are based on lossy compression. In the case of lossy compression, the data reconstructed at the decoder is not the same as the original data, but subjective redundancy is removed to obtain high compression efficiency. In image or video compression, subjective redundancy is a removable element that does not significantly affect the image quality that the viewer can intuitively feel.
다양한 동영상 압축 표준들 중 하나인 H.264/AVC 동영상 압축 표준은 기존의 동영상 압축 표준들에 비하여 뛰어난 압축 성능을 갖는다. H.264/AVC 동영상 압축 표준은 양방향 스트링밍(streaming) 또는 양방향 방송을 지원한다. 따라서, H.264/AVC 동영상 압축 표준은 화상 통신, 케이블, 위성, 지상파를 통한 방송, 또는 데이터 저장 장치, DVD 등의 저장 매체에 대한 양방향 저장, 이더넷(ethernet), 모뎀, 근거리통신망(LAN), 또는 모바일 네트워크를 통한 대화 서비스와 멀티미디어 스트리밍 서비스 등의 광범위한 응용 분야에 적용되고 있다.The H.264 / AVC video compression standard, one of various video compression standards, has superior compression performance compared to the existing video compression standards. The H.264 / AVC video compression standard supports bidirectional streaming or bidirectional broadcast. Thus, the H.264 / AVC video compression standard provides video communications, cable, satellite, terrestrial broadcast, or bidirectional storage for data storage devices, DVDs, and other storage media, Ethernet, modems, and local area networks. It is applied to a wide range of applications such as conversation service and multimedia streaming service through mobile network or mobile network.
본 발명의 실시 예들은 H.264/AVC 동영상 압축 표준에 있어서, 크기가 축소된 인코딩 테이블을 저장하는 방법을 제공하는 데 있다.Embodiments of the present invention provide a method for storing a reduced sized encoding table in the H.264 / AVC video compression standard.
본 발명의 실시 예에 따른 컨텍스트 적응형 가변 길이 코드 방식의 인코딩 방법에 있어서 인코딩 방법은, 양자화된 변환 계수의 0이 아닌 계수의 수(Tc)와 크기가 1인 계수의 수(T1s) 정보를 참조하여 파라미터 값(codenum)을 생성하는 단계; 상기 파라미터 값(codenum)을 참조하여, 코드워드의 비트 스트림 길이의 기본값을 계산하는 단계; 상기 파라미터 값(codenum)을 참조하여 생성되는 주소(Add) 및 인덱스(Idx) 값에 따라 저장부로부터 증가값(offset)을 독출하는 단계; 상기 기본값(base)과 상기 증가값(offset)에 따라 코드워드의 비트 스트림 길이 정보를 생성하는 단계; 그리고 코드워드의 비트 스트림 값 정보와 상기 생성된 코드워드의 비트 스트림 길이 정보를 이용하여 코드워드의 비트 스트림을 생성하는 단계를 포함한다.In the encoding method of the context-adaptive variable length code method according to an embodiment of the present invention, the encoding method includes information on the number of non-zero coefficients (Tc) of the quantized transform coefficients and the number of coefficients (T1s) having a size of one. Generating a parameter value codenum with reference; Calculating a default value of a bit stream length of a codeword with reference to the parameter value (codenum); Reading an offset value from a storage unit according to an address (Add) and an index (Idx) value generated by referring to the parameter value codenum; Generating bit stream length information of a codeword according to the base and the offset; And generating a bit stream of the codeword using the bit stream value information of the codeword and the bit stream length information of the generated codeword.
본 발명의 다른 실시 예에 따른 인코딩 장치는 양자화된 변환 계수로부터 파라미터를 생성하기 위한 코드넘 생성부; 상기 생성된 파라미터 값에 따라 기본값을 계산하기 위한 기본값 계산부; 가변 길이 코드워드의 비트 스트림 길이 정보 값과 상기 기본값의 차이값을 저장하기 위한 저장부; 그리고 상기 계산된 기본값과 상기 생성된 파라미터 값에 따라 독출되는 차이값을 더하여 상기 가변 길이 코드워드의 비트 스트림 길이 정보를 생성하는 합산부를 포함한다.An encoding apparatus according to another embodiment of the present invention includes a codenum generator for generating a parameter from quantized transform coefficients; A default value calculator for calculating a default value according to the generated parameter value; A storage unit for storing a bit stream length information value of a variable length codeword and a difference value of the default value; And an adder configured to generate bit stream length information of the variable length codeword by adding the calculated default value and a difference value read according to the generated parameter value.
본 발명의 실시 예에 따른 인코딩 장치 및 방법은 크기가 축소된 인코딩 테이블을 사용하여 인코딩 시스템의 성능을 향상시키고 인코딩 시스템의 구현 비용을 절감시킬 수 있다.The encoding apparatus and method according to an embodiment of the present invention can improve the performance of the encoding system and reduce the implementation cost of the encoding system by using the reduced size encoding table.
도 1은 본 발명의 실시 예에 따른 H.264/AVC 압축 표준의 인코더를 예시적으로 보여주는 블럭도이다.
도 2는 양자화된 계수들이 인코딩되는 과정을 보여주기 위한 도면이다.
도 3a 내지 도 3c는 컨텍스트 적응형 가변 길이 코드 인코딩 방식에서 참조되는 가변 길이 코드 테이블을 개략적으로 보여주는 도면이다.
도 4는 본 발명의 제 1 실시 예에 따른 가변 길이 코드 테이블에 대한 메모리 구조를 보여주기 위한 도면이다.
도 5는 본 발명의 실시 예에 따른 엔트로피 인코더를 예시적으로 보여주는 블럭도이다.
도 6은 본 발명의 실시 예에 따른 코드워드의 비트 스트림 길이(LEN) 정보와 파라미터(codenum)의 상관 관계를 보여주기 위한 도면이다.
도 7은 본 발명의 실시 예에 따른 파라미터(codenum)에 대한 기본값 설정 과정을 보여주기 위한 도면이다.
도 8은 본 발명의 제 2 실시 예에 따른 가변 길이 코드 테이블에 대한 메모리 구조를 보여주기 위한 도면이다.
도 9는 본 발명의 실시 예에 따른 메모리 구조에서 Coeff_token을 인코딩하는 동작을 보여주기 위한 순서도이다.1 is a block diagram illustrating an encoder of an H.264 / AVC compression standard according to an embodiment of the present invention.
2 is a diagram illustrating a process of encoding quantized coefficients.
3A to 3C are diagrams schematically illustrating a variable length code table referred to in a context adaptive variable length code encoding scheme.
4 is a diagram illustrating a memory structure of a variable length code table according to a first embodiment of the present invention.
5 is a block diagram illustrating an entropy encoder according to an embodiment of the present invention.
FIG. 6 is a diagram illustrating a correlation between bit stream length (LEN) information of a codeword and a parameter codenum according to an embodiment of the present invention.
7 is a diagram illustrating a process of setting a default value for a parameter (codenum) according to an embodiment of the present invention.
8 is a diagram illustrating a memory structure for a variable length code table according to a second embodiment of the present invention.
9 is a flowchart illustrating an operation of encoding Coeff_token in a memory structure according to an embodiment of the present invention.
본 발명의 이점 및 특징, 그리고 그것을 달성하는 방법은 첨부되는 도면과 함께 상세하게 후술되어 있는 실시 예들을 통해 설명될 것이다. 그러나 본 발명은 여기에서 설명되는 실시 예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 단지, 본 실시 예들은 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에게 본 발명의 기술적 사상을 용이하게 실시할 수 있을 정도로 상세히 설명하기 위하여 제공되는 것이다.Advantages and features of the present invention, and methods for achieving the same will be described with reference to embodiments described below in detail with the accompanying drawings. However, the present invention is not limited to the embodiments described herein and may be embodied in other forms. The embodiments are provided so that those skilled in the art can easily carry out the technical idea of the present invention to those skilled in the art.
도면들에 있어서, 본 발명의 실시 예들은 도시된 특정 형태로 제한되는 것이 아니며 명확성을 기하기 위하여 과장된 것이다.In the drawings, embodiments of the present invention are not limited to the specific forms shown and are exaggerated for clarity.
본 명세서에서 특정한 용어들이 사용되었으나. 이는 본 발명을 설명하기 위한 목적에서 사용된 것이며, 의미 한정이나 특허 청구 범위에 기재된 본 발명의 권리 범위를 제한하기 위하여 사용된 것은 아니다.Although specific terms are used herein. It is used for the purpose of illustrating the present invention and is not intended to limit the scope of the present invention as defined in the meaning limitations or claims.
본 명세서에서 ‘및/또는’이란 표현은 전후에 나열된 구성요소들 중 적어도 하나를 포함하는 의미로 사용된다. 또한, ‘연결되는/결합되는’이란 표현은 다른 구성요소와 직접적으로 연결되거나 다른 구성요소를 통해 간접적으로 연결되는 것을 포함하는 의미로 사용된다.The expression " and / or " is used herein to mean including at least one of the elements listed before and after. In addition, the expression “connected / combined” is used to include directly connected to or indirectly connected to other components.
본 명세서에서 단수형은 문구에서 특별히 언급하지 않는 한 복수형도 포함한다. 또한, 명세서에서 사용되는 ‘포함한다’ 또는 ‘포함하는’으로 언급된 구성요소, 단계, 동작 및 소자는 하나 이상의 다른 구성요소, 단계, 동작 및 소자의 존재 또는 추가를 의미한다.In this specification, the singular forms also include the plural unless specifically stated otherwise in the phrases. Also, as used herein, "comprising" or "comprising" means to refer to the presence or addition of one or more other components, steps, operations and elements.
이하, 도면들을 참조하여 본 발명의 실시 예에 대해 상세히 설명하기로 한다.Hereinafter, embodiments of the present invention will be described in detail with reference to the drawings.
도 1은 본 발명의 실시 예에 따른 H.264/AVC 압축 표준의 인코더를 예시적으로 보여주는 블럭도이다.1 is a block diagram illustrating an encoder of an H.264 / AVC compression standard according to an embodiment of the present invention.
H.264/AVC(advanced video coding) 표준은 이미지 정보의 인코딩된 표현을 위한 표준이다. H.264/AVC 표준은 기본적으로 두 가지를 정의한다. 첫 째, 압축된 형태의 이미지 데이터를 나타내는 인코딩된 표현(또는 신택스(syntax))을 정의하고, 둘 째, 이미지 정보를 복원하기 위하여 신택스를 디코딩하는 방법을 정의한다. 즉, H.264/AVC 표준은 코덱(enCOder/DECoder, CODEC)을 따로 정의하지 않고, 인코딩된 비디오 비트 스트림(bit stream)의 신택스와 이러한 비트 스트림을 디코딩하는 방법을 정의한다. 일반적으로 H.264/AVC 표준에 호환되는 인코더는 도 1에 나타난 블럭들을 포함할 것이다.The H.264 / Advanced video coding (AVC) standard is a standard for the encoded representation of image information. The H.264 / AVC standard basically defines two things. First, an encoded representation (or syntax) representing the compressed image data is defined, and second, a method of decoding the syntax to recover the image information is defined. That is, the H.264 / AVC standard does not define codecs (enCOder / DECoder, CODEC) separately, but defines the syntax of an encoded video bit stream and a method of decoding such a bit stream. In general, an encoder compatible with the H.264 / AVC standard will include the blocks shown in FIG.
도 1을 참조하면, H.264/AVC 동영상 압축 표준의 인코더는 움직임 추정부(motion estimation block, 110), 움직임 보상부(motion compensation block, 120), 인트라 예측부(intra prediction block, 130), 필터(filter, 140), 재배열부(reorder, 150) 그리고 엔트로피 인코더(entropy encoder, 160)를 포함한다.Referring to FIG. 1, the encoder of the H.264 / AVC video compression standard includes a
동영상 압축에 있어서 사용되는 움직임 보상의 방법은 현재 프레임의 사각형 구간 또는 블럭(block)의 움직임을 보상하는 것이다. 현재 프레임의 M×N(M, N은 자연수) 샘플 블럭과 일치하는 M×N 샘플 블럭을 찾기 위해 참조 프레임의 영역을 탐색한다. 여기에서, 참조 프레임은 과거 또는 미래의 프레임 또는 이전에 인코딩되어 전송된 프레임이다. 참조 프레임의 영역을 탐색하는 과정은 현재 프레임의 M×N 블럭과 탐색 영역(일반적으로 현재 블럭의 위치를 기준으로 한 영역) 내의 가능한 M×N 블럭 모두 또는 일부를 비교하여, 그 중 가장 일치하는 영역을 찾아내는 과정이다. 즉, 현재의 M×N 블럭과 후보 영역의 차로 생성되는 오차가 최소가 되는 후보 영역을 가장 일치하는 영역으로 선택한다. 이러한 동작은 움직임 추정부(110)에서 수행된다. 선택된 후보 영역은 현재의 M×N 블럭을 위한 예측 블럭이 되고, 현재 블럭과 예측 블럭의 차로 M×N 오차 블럭이 만들어진다. 이러한 동작은 움직임 보상부(120)에서 수행된다.The motion compensation method used in video compression is to compensate for the motion of a rectangular section or block of the current frame. The region of the reference frame is searched to find an M × N sample block that matches the M × N (M, N is a natural number) sample block of the current frame. Here, the reference frame is a past or future frame or a frame previously encoded and transmitted. The process of searching an area of a reference frame compares all or some of the M × N blocks of the current frame with the possible M × N blocks in the search area (usually the area relative to the current block's location), and matches It is the process of finding a domain. In other words, the candidate region having the minimum error generated by the difference between the current M × N block and the candidate region is selected as the most matching region. This operation is performed by the
인코더(100)는 입력 프레임(Fn)을 매크로블럭 단위로 처리한다. 각 매크로블럭은 인트라 모드(intra mode) 또는 인터 모드(inter mode)로 인코딩된다. 인트라 모드는 움직임 보상을 하지 않고 인코딩하는 방법이다. 인터 모드는 움직임 보상 예측을 사용하여 인코딩하는 방법이다. 매크로블럭 내의 각 블럭에 대한 예측 블럭(P)은 복원된 블럭에 의해서 생성된다. 인트라 모드에서 예측 블럭(P)은 현재 블럭과 이전에 인코딩된 블럭(또는 디코딩되어 복원된 블럭)을 비교하여 생성된다. 인트라 모드에서 예측 블럭(P)의 생성 동작은 인트라 예측부(130)에서 수행된다. 인터 모드에서 예측 블럭(P)은 참조 블럭으로부터 움직임 보상을 예측하여 생성된다. 도 1에서는 참조 블럭이 이전에 인코딩된 프레임(F'n -1)으로 도시되었다.The
현재 블럭과 예측 블럭(P)의 차로 오차 블럭(Dn)이 생성된다. 생성된 오차 블럭(Dn)은 다른 도메인(domain)으로 변환되어(T) 변환 계수(transform coefficient)로 표현된다. 변환 계수는 양자화되어(Q) 양자화된 변환 계수(X)가 된다. 양자화된 변환 계수(X)는 재배열부(150)를 통해 지그재그(zigzag) 스캔되어 재배치된다. 재배치된 변환 계수는 엔트로피 인코더(160)에 의해 엔트로피 인코딩된다. 엔트로피 인코딩된 계수는 매크로블럭 내의 각 블럭을 디코딩하는데 필요한 부가적인 데이터들(예를 들면, 예측 모드, 양자화 파라미터, 움직임 벡터 정보 등)과 함께 압축된다. 압축된 데이터는 비트 스트림(bit stream)을 형성하여 네트워크 추상 계층(network abstraction layer, NAL)을 통해 전송되거나 저장된다.An error block D n is generated by the difference between the current block and the prediction block P. The generated error block D n is transformed to another domain (T) and represented as a transform coefficient. The transform coefficients are quantized (Q) to become quantized transform coefficients (X). The quantized transform coefficients X are zigzag scanned and rearranged through the
인코더(100)는 매크로블럭 내의 각 블럭을 인코딩하여 전송할 뿐만 아니라, 인코딩된 데이터를 다시 디코딩하여 이후의 예측을 위한 참조 데이터를 생성한다. 양자화된 변환 계수(X)가 역양자화되고(Q-1) 역변환되어(T-1) 오차 블럭(D'n)이 생성된다. 예측 블럭(P)이 오차 블럭(D'n)과 더해져서 디코딩된 프레임(uF'n)이 생성된다. 디코딩된 프레임(uF'n)이 필터(140)를 통해 필터링되면, 왜곡 현상이 감소되어디코딩된 참조 프레임(F'n)이 생성된다.The
H.264/AVC 표준에는 특정한 기능을 지원하는 프로파일들이 정의되어 있다. 그 중 하나인 베이스라인(baseline) 프로파일은 PMP(portable multimedia player), PDA(personal digital assistant)와 같은 이동 동영상 단말 서비스 및 화상 회의를 주 응용 분야로 한다. 베이스라인 프로파일은 인트라 코딩, 인터 코딩 그리고 컨텍스트 적응형 가변 길이 코드(context-based adaptive variable length code, CAVLC, 이하 'CAVLC'라고 칭함)를 사용하는 엔트로피 코딩을 지원한다.The H.264 / AVC standard defines profiles that support specific functions. One of the baseline profiles is mobile video terminal services such as portable multimedia player (PMP) and personal digital assistant (PDA) and video conferencing. The baseline profile supports intra coding, inter coding and entropy coding using context-based adaptive variable length code (CAVLC).
CAVLC 인코딩 방식에서는 4×4 블럭에서 생성되는 양자화된 변환 계수들이 Coeff_token, Sign of T1s, Level, Total_zeros, Run_before라는 5가지 구문 요소들로 표현된 후, 각각의 구문 요소들이 인코딩된다. 이 경우, Coeff_token, Total_zeros, Run_before 구문 요소들은 정의된 가변 길이 코드 테이블(variable length code table, 이하, 'VLCT'라고 칭함)을 참조하여 인코딩된다. 본 발명의 실시 예에 따른 엔트로피 인코더(160)는 VLCT에 존재하는 코드워드(codeword)의 비트 스트림을 길이 정보와 값 정보로 나누어 구성한다. 비트 스트림의 길이 정보와 값 정보는 할당된 각각의 메모리 영역에 저장된다. 비트 스트림의 길이 정보의 크기는 기본값과 증가값으로 나누어 구성되고, 증가값만이 메모리 장치에 저장된다. 기본값은 기본값 계산부에 따라 계산되고, 증가값만이 메모리 장치에 저장되기 때문에, VLCT이 저장되는 메모리 영역이 감소된다. 또한, 독출해야하는 메모리 장치 영역이 감소되기 때문에 인코더(100)의 동작 속도가 향상된다. 이러한 엔트로피 인코더(160)의 동작은 후술되는 도 5 및 도 9를 통하여 상세히 설명될 것이다.In the CAVLC encoding scheme, quantized transform coefficients generated in a 4 × 4 block are represented by five syntax elements Coeff_token, Sign of T1s, Level, Total_zeros, and Run_before, and then each syntax element is encoded. In this case, Coeff_token, Total_zeros, and Run_before syntax elements are encoded with reference to a defined variable length code table (hereinafter, referred to as 'VLCT'). The
도 2는 양자화된 계수들이 인코딩되는 과정을 보여주기 위한 도면이다.2 is a diagram illustrating a process of encoding quantized coefficients.
H.264/AVC 표준의 베이스라인 프로파일에서 4×4 블럭의 양자화된 변환 계수들은 지그재그 스캔되어 재배열된다. 재배열된 변환 계수들은 전술된 5가지 구문 요소들에 의해 인코딩된다. 5가지 구문 요소들은 다음과 같다. Coeff_token은 '0'이 아닌 계수의 수(이하, 'Tc'라고 칭함)와 고주파 성분에서의 크기가 '1'인 계수의 수(이하, 'T1s')가 인코딩된 요소이다. Level은 T1s를 제외한 '0'이 아닌 계수의 크기가 인코딩된 요소이다. Total_zeros는 지그재그 순서에서 첫번 째 계수와 '0'이 아닌 마지막 계수 간에 존재하는 크기가 '0'인 계수들의 수가 인코딩된 요소이다. Run_before는 지그재그 스캔의 역순으로 각각의 '0'이 아닌 계수 앞에 존재하는 '0'인 계수들의 수가 인코딩된 요소이다.In the baseline profile of the H.264 / AVC standard, quantized transform coefficients of 4x4 blocks are zigzag scanned and rearranged. The rearranged transform coefficients are encoded by the five syntax elements described above. The five syntax elements are as follows: Coeff_token is an element in which the number of coefficients other than '0' (hereinafter referred to as 'Tc') and the number of coefficients having a size of '1' in the high frequency component (hereinafter, 'T1s') are encoded. Level is an element whose size is encoded as a non-zero coefficient except for T1s. Total_zeros is an element in which the number of coefficients of size '0' existing between the first coefficient and the last non-zero coefficient in the zigzag order is encoded. Run_before is an element in which the number of coefficients of '0' existing in front of each non-zero coefficient in the reverse order of the zigzag scan is encoded.
도 2의 4×4 블럭의 양자화된 변환 계수들을 인코딩하는 과정은 다음과 같다. 4×4 블럭의 양자화된 계수들을 지그재그 스캔으로 재배열하면 0, -3, 0, 1, -1, -1, 0, 1, 0, ... 이다. 재배열된 변환 계수들을 CAVLC 인코딩 방식에서 정의되는 5가지 구문 요소들로 표현하면 다음과 같다. '0'이 아닌 계수의 수인 Tc는 '5'(-3, 1, -1, -1, 1)이다. 크기가 '1'인, 즉, 절대값이 '1'인 계수의 수인 T1s는 '3'(-1, -1, 1)이다. 여기에서 T1s는 마지막 계수로부터 최대 3개만 인코딩된다. Tc와 T1s로 구성되는 Coeff_token은 VLCT을 참조하여 인코딩된다. 도 3a 내지 도 3c에 간략히 도시된 VLCT을 참조하면 Coeff_token은 '0000100'(Tc=5, T1s=3)이다.The process of encoding the quantized transform coefficients of the 4x4 block of FIG. 2 is as follows. Rearranging the quantized coefficients of a 4x4 block by zigzag scan is 0, -3, 0, 1, -1, -1, 0, 1, 0, ... The rearranged transform coefficients are expressed as five syntax elements defined in CAVLC encoding. Tc, the number of coefficients other than '0', is '5' (-3, 1, -1, -1, 1). T1s, the number of coefficients whose magnitude is '1', that is, the absolute value is '1', is '3' (-1, -1, 1). Here, only T1s are encoded up to three from the last coefficient. Coeff_token consisting of Tc and T1s is encoded with reference to the VLCT. Referring to the VLCT shown briefly in FIGS. 3A to 3C, Coeff_token is '0000100' (Tc = 5, T1s = 3).
지그재그 스캔의 역순으로 T1s의 부호가 인코딩되는 Sign of T1s는 '011'(+, -, -)이다. 여기에서 양의 부호(+)는 '0'값으로, 음의 부호(-)는 '1'값으로 인코딩된다. T1s를 제외한 '0'이 아닌 계수의 크기가 인코딩되는 Level은 '10010'(-3, 1)이다. 지그재그 순서에서 첫번 째 계수와 '0'이 아닌 마지막 계수 간에 존재하는 크기가 '0'인 계수들의 수가 인코딩되는 Total_zeros는 '111'(3개)이다. 지그재그 스캔의 역순으로 각각의 '0'이 아닌 계수 앞에 존재하는 '0'인 계수들의 수가 인코딩되는 Run_before는 '101101'이다. 따라서, 인코딩된 최종 비트 스트림은 '000010001110010111101101'이다.Sign of T1s in which the sign of T1s is encoded in the reverse order of zigzag scan is '011' (+,-,-). Here, the positive sign (+) is encoded as a '0' value, and the negative sign (-) is encoded as a '1' value. The level at which the magnitude of the coefficient other than '0' except T1s is encoded is '10010' (-3, 1). The total_zeros in which the number of coefficients of size '0' existing between the first coefficient and the last non-zero coefficient in the zigzag order is encoded is '111' (three). Run_before, in which the number of coefficients of '0' existing before each non-zero coefficient in the zigzag scan order is encoded, is '101101'. Therefore, the encoded final bit stream is '000010001110010111101101'.
도 3a 내지 도 3c는 컨텍스트 적응형 가변 길이 코드 인코딩 방식에서 참조되는 가변 길이 코드 테이블(VLCT)을 개략적으로 보여주는 도면이다.3A to 3C schematically illustrate a variable length code table (VLCT) referred to in a context adaptive variable length code encoding scheme.
양자화된 변환 계수들은 전술된 5가지 구문 요소들에 의해 인코딩된다. 구문 요소들 중 Coeff_token를 인코딩하기 위해서는 1개의 고정 길이 코드 테이블(fixed length code table)과 3개의 가변 길이 코드 테이블들(VLCT)이 사용된다. 도 3a 내지 도 3c는 Coeff_token에 대한 VLCT들로서 이전에 복원된 이웃 블럭의 Tc값을 참조하여 3개의 테이블들 중 하나가 선택된다. VLCT0는 도 3a에, VLCT1는 도 3b에 그리고 VLCT2는 도 3c에 개략적으로 도시된다.The quantized transform coefficients are encoded by the five syntax elements described above. One fixed length code table and three variable length code tables VLCT are used to encode Coeff_token among syntax elements. 3A-3C are VLCTs for Coeff_token, one of the three tables is selected with reference to the Tc value of the previously restored neighboring block. VLCT0 is schematically shown in FIG. 3A, VLCT1 in FIG. 3B and VLCT2 in FIG. 3C.
도 3a 내지 도 3c를 참조하면, 코드워드는 Tc와 T1s의 쌍에 대응된다. 코드워드 각각은 1비트에서 16비트까지의 비트열들로 구성된다. 그리고 비트열 각각은 1에서 15까지의 값을 나타낸다. 코드워드들은 메모리 장치에 저장된다. 따라서, 도 3a 내지 도 3c의 코드워드들의 비트 스트림 길이(이하, 'LEN'이라 칭함)를 저장하기 위한 메모리 영역(이하, 'LEN_M'이라 칭함)과 비트 스트림 값(이하, 'VAL'이라 칭함)을 저장하기 위한 메모리 영역(이하, 'VAL_M'이라 칭함)이 필요하다.3A to 3C, codewords correspond to pairs of Tc and T1s. Each codeword consists of a string of bits ranging from 1 bit to 16 bits. Each bit string represents a value from 1 to 15. Codewords are stored in a memory device. Accordingly, a memory area (hereinafter referred to as 'LEN_M') and a bit stream value (hereinafter referred to as 'VAL') for storing the bit stream length (hereinafter referred to as 'LEN') of the codewords of FIGS. 3A to 3C. ), A memory area (hereinafter referred to as 'VAL_M') is required.
도 4는 본 발명의 제 1 실시 예에 따른 가변 길이 코드 테이블에 대한 메모리 구조를 보여주기 위한 도면이다.4 is a diagram illustrating a memory structure of a variable length code table according to a first embodiment of the present invention.
도 4를 참조하면, 도 3a에 도시된 VLCT0의 코드워드들이 LEN과 VAL로 구분되고, 주소(add)와 인덱스(idx)의 쌍에 대응된다. 메모리 영역에 저장된 LEN과 VAL을 참조하기 위한 메모리 주소(add)는 Tc와 T1s를 이용하여 수학식 1 내지 수학식 4와 같이 표현된다. 또한, LEN과 VAL을 참조하기 위한 인덱스(idx)는 수학식 5와 같이 표현된다. 수학식 1에서 "<<" 연산자는 프로그래밍 코드(예를 들면, C언어)에서 사용되는 연산자로 쉬프트 연산을 의미한다. 또한, 수학식 5에서 "%" 연산자는 프로그래밍 코드(예를 들면, C언어)에서 사용되는 연산자로 나머지 연산을 의미한다. 이러한 연산자들은 후술되는 수학식에서도 동일하게 적용될 것이다.Referring to FIG. 4, codewords of VLCT0 illustrated in FIG. 3A are classified into LEN and VAL, and correspond to a pair of an address (add) and an index (idx). Memory addresses (add) for referring to LEN and VAL stored in the memory area are represented by
도 4에 도시된 바와 같이, 메모리 주소(add) 각각은 2개의 코드워드를 지시하며 인덱스(idx)에 의해 LEN과 VAL가 결정된다. 본 발명의 제 1 실시 예에 따른 VLCT에 대한 메모리 구조를 참조하여 Coeff_token를 인코딩하는 동작은 다음과 같은 단계를 포함한다. 예를 들면, 입력된 Tc와 T1s값으로부터 주소(add)와 인덱스(idx)를 생성하는 단계, 생성된 주소(add)에 따라 LEN_M 그리고 VAL_M으로부터 LEN 그리고 VAL을 독출하는 단계, 그리고 생성된 인덱스(idx)에 따라 LEN 그리고 VAL을 결정하는 단계를 포함한다.As shown in FIG. 4, each of the memory addresses add indicates two codewords, and LEN and VAL are determined by the index idx. The encoding of Coeff_token with reference to the memory structure for the VLCT according to the first embodiment of the present invention includes the following steps. For example, generating an address (add) and an index (idx) from the input Tc and T1s values, reading LEN and VAL from LEN_M and VAL_M according to the generated address (add), and generating the index determining LEN and VAL according to (idx).
본 발명의 제 1 실시 예에 따른 VLCT에 대한 메모리 구조에서 Coeff_token를 인코딩하는 동작을 예로 들기로 한다. Tc=2, T1s=1이 입력되면, 수학식 1 내지 수학식 5에 의해서 파라미터들(cn=5, j=0), 주소(add=2) 그리고 인덱스(idx=1)가 생성된다. 도 4에 도시된 메모리 구조를 참조하면, LEN=6, VAL=4가 결정된다. 즉, 코드워드의 비트 스트림 길이가 '6'이고, 비트 스트림 값이 '4'인 비트열 '000100'이 결정된다. 결정된 비트 스트림 '000100'은 도 3a의 VLCT0에서 Tc=2, T1s=1 인 경우의 비트 스트림 '000100'과 동일하다.An operation of encoding Coeff_token in the memory structure for the VLCT according to the first embodiment of the present invention will be exemplified. When Tc = 2 and T1s = 1 are input, parameters (cn = 5, j = 0), an address (add = 2) and an index (idx = 1) are generated by the equations (1) through (5). Referring to the memory structure shown in Fig. 4, LEN = 6 and VAL = 4 are determined. That is, a bit string '000100' having a bit stream length of '6' and a bit stream value of '4' is determined. The determined bit stream '000100' is the same as the bit stream '000100' when Tc = 2 and T1s = 1 in VLCT0 of FIG. 3A.
도 5는 본 발명의 실시 예에 따른 엔트로피 인코더를 예시적으로 보여주는 블럭도이다.5 is a block diagram illustrating an entropy encoder according to an embodiment of the present invention.
도 5를 참조하면, 엔트로피 인코더(160)는 코드넘(codenum, 이하, 'codenum'이라 칭함) 생성부(161), 제 1 주소 및 인덱스 생성부(162), 제 1 저장부(163), 제 2 주소 및 인덱스 생성부(164), 제 2 저장부(165), 베이스(base, 이하, 'base'라고 칭함) 계산부(166), 비트 스트림 생성부(167), 그리고 합산부(168)을 포함한다.Referring to FIG. 5, the
codenum 생성부(161) 그리고 base 계산부(166) 각각은 본 발명의 제 2 실시 예에 따라 Coeff_token을 인코딩하는데 필요한 복수의 파라미터들을 생성한다. 제 1 주소 및 인덱스 생성부(162)는 제 1 저장부(163)를 액세스하기 위한 제 1 주소(add)를 생성하고, 제 1 주소(add)에 따라 독출된 VAL을 결정하기 위한 제 1 인덱스(idx)를 생성한다. 제 2 주소 및 인덱스 생성부(164)는 제 2 저장부(165)를 액세스하기 위한 제 2 주소(Add)를 생성하고, 제 2 주소(Add)에 따라 독출된 LEN을 결정하기 위한 제 2 인덱스(Idx)를 생성한다.Each of the
본 발명의 실시 예에 따르면, VLCT들(VLCT0 내지 VLCT2)에 존재하는 코드워드들은 LEN과 VAL로 나누어 구성된다. LEN과 VAL은 할당된 각각의 저장부에 저장된다. 즉, LEN은 코드워드의 비트 스트림 길이 정보를 저장하기 위한 제 2 저장부(165)에 저장된다. 그리고 VAL은 코드워드의 비트 스트림 값 정보를 저장하기 위한 제 1 저장부(163)에 저장된다. 본 발명의 제 2 실시 예에 따르면, 코드워드의 비트 스트림 길이(LEN) 정보의 크기는 축소되어 제 2 저장부(165)에 저장된다.According to an embodiment of the present invention, the codewords present in the VLCTs VLCT0 to VLCT2 are divided into LEN and VAL. LEN and VAL are stored in their respective storage. That is, the LEN is stored in the
도 6은 본 발명의 실시 예에 따른 코드워드의 비트 스트림 길이(LEN) 정보와 파라미터(codenum)의 상관 관계를 보여주기 위한 도면이다.FIG. 6 is a diagram illustrating a correlation between bit stream length (LEN) information of a codeword and a parameter codenum according to an embodiment of the present invention.
수학식 1 내지 수학식 3을 참조하면 파라미터(codenum)는 Tc와 T1s에 따라 생성되고, 도 3a 내지 도 3c에 도시된 VLCT의 코드워드들을 1차원으로 나열한다. 파라미터(codenum)를 적용하여 LEN과 VAL을 각각 1차원으로 나열해 보면 LEN과 파라미터(codenum)간에는 상관 관계가 존재한다. 도 6은 이러한 상관 관계를 명확하게 파악하기 위한 도면으로써, LEN을 파라미터(codenum)에 따라 정리한 것이다.Referring to
도 6을 참조하면, 파라미터(codenum)가 증가할수록 LEN 역시 증가한다. 또한, 8의 배수인 파라미터(codenum)를 경계로 파라미터(codenum)를 그룹핑하면, 그룹들 각각에 포함되는 LEN들의 크기가 완만하게 변화한다. 예를 들면, 파라미터(codenum8)와 파라미터(codenum15) 사이에 포함되는 VLCT0의 LEN은 7 내지 9의 값을 갖는다. 만약, 7을 이 구간에서의 기본값으로 설정하면, 이 구간 내의 LEN은 0, 1, 또는 2의 값들 중 어느 하나로 표현될 수 있다. 즉, 기본값과 2비트만으로 LEN을 표현할 수 있다. 도 6에서 괄호 안의 값은 구간 각각의 기본값을 나타낸다. 도시된 기본값에 따라 대응하는 모든 LEN이 0 내지 3의 값을 갖는다.Referring to FIG. 6, as the parameter codenum increases, the LEN also increases. In addition, when the parameter codenum is grouped around a parameter codenum that is a multiple of 8, the sizes of the LENs included in each of the groups change slowly. For example, the LEN of VLCT0 included between the parameter codenum8 and the parameter codenum15 has a value of 7-9. If 7 is set as the default value in this interval, the LEN in this interval may be represented by any one of values of 0, 1, or 2. In other words, LEN can be expressed only with a default value and 2 bits. In FIG. 6, values in parentheses indicate default values of respective sections. According to the default values shown, all corresponding LENs have a value between 0 and 3.
도 7은 본 발명의 실시 예에 따른 파라미터(codenum)에 대한 기본값 설정 과정을 보여주기 위한 도면이다.7 is a diagram illustrating a process of setting a default value for a parameter (codenum) according to an embodiment of the present invention.
전술한 바와 같이, Tc와 T1s는 Coeff_token 인코딩에 있어서 활용할 수 있는 독립 변수이다. 즉, 기본값은 Tc와 T1s로부터 생성될 수 있다. 도 6을 참조하면 파라미터(codenum)에 따라 그룹핑된 그룹들 각각의 기본값들은 파라미터(codenum)가 증가할수록 기본값이 1 또는 2만큼 증가한다. 따라서, 수학식 6 내지 수학식 10과 같이 기본값을 파라미터(codenum)의 함수로 모델링할 수 있다.As mentioned above, Tc and T1s are independent variables that can be utilized in Coeff_token encoding. That is, a default value can be generated from Tc and T1s. Referring to FIG. 6, the default values of the groups grouped according to the parameter codenum increase by 1 or 2 as the parameter codenum increases. Therefore, as shown in
도 7에는 파라미터(codenum)에 대한 수학식 6 내지 수학식 10의 변수들에 대한 값들이 도시되었다. 예시적으로, 도 7 그리고 수학식 11 내지 수학식 13으로부터 산출되는 기본값(base0)과 도 6의 VLCT0에 도시된 기본값을 비교하면 동일한 기본값을 갖는다.7 shows values for the variables of
한편, 수학식 14 내지 수학식 16은 도 3a 내지 도 3c에 각각 도시된 VLCT들(VLCT0~VLCT2)에 대한 기본값을 생성하기 위한 수식이다. 즉, 수학식 14는 도 3a에 도시된 VLCT0에 대한 기본값을 생성하기 위한 수식이고, 수학식 15는 도 3b에 도시된 VLCT1에 대한 기본값을 생성하기 위한 수식이고, 그리고 수학식 16은 도 3c에 도시된 VLCT2에 대한 기본값을 생성하기 위한 수식이다.
도 8은 본 발명의 제 2 실시 예에 따른 가변 길이 코드 테이블에 대한 메모리 구조를 보여주기 위한 도면이다.8 is a diagram illustrating a memory structure for a variable length code table according to a second embodiment of the present invention.
도 3a 내지 도 3c의 코드워드들의 비트 스트림 길이(LEN)는 수학식 14 내지 수학식 16에 의해서 산출되는 기본값에 따라 수학식 17과 같이 표현된다. 코드워드의 비트 스트림 길이(LEN)는 합산부(168)에 의해 생성된다.The bit stream length LEN of the codewords of FIGS. 3A to 3C is expressed by
수학식 17의 파라미터(offset)는 VLCT의 LEN과 기본값간의 차이를 나타낸다. 즉, 파라미터(offset)는 LEN을 생성하기 위해서 산출된 기본값을 기준으로 증가시켜야 하는 증가값이다. 이러한 파라미터(offset)는 본 발명의 제 2 실시 예에 따른 제 2 저장부(도 5의 165 참조)에 저장된다. 파라미터(offset)는 0 내지 3의 범위를 갖기 때문에, 2비트의 저장 공간이 할당된다. 한편, 일반적인 메모리 장치(예를 들면, 제 2 저장부(165))는 8비트 단위로 데이터가 저장되고, 참조된다. 따라서, 4개의 파라미터들(offset들)에 하나의 메모리 주소가 할당되어야 한다.The parameter (offset) of equation (17) represents the difference between the LEN and the default value of the VLCT. In other words, the offset is an increase value that should be increased based on the calculated default value in order to generate the LEN. Such an offset is stored in the second storage unit (see 165 of FIG. 5) according to the second embodiment of the present invention. Since the offset ranges from 0 to 3, two bits of storage space are allocated. On the other hand, in a general memory device (eg, the second storage unit 165), data is stored and referenced in units of 8 bits. Therefore, one memory address must be assigned to four parameters.
수학식 18 내지 수학식 19는 본 발명의 제 2 실시 예에 따른 메모리 구조에서의 제 2 메모리 주소(Add)를 생성하기 위한 수식이다. 그리고 수학식 20은 동일한 제 2 메모리 주소(Add)에 포함되는 4개의 파라미터들(offset들)을 식별하기 위한 제 2 인덱스(Idx)를 생성하기 위한 수식이다.
본 발명의 제 2 실시 예에 따른 VLCT에 대한 메모리 구조에서 Coeff_token를 인코딩하는 동작을 도 5 및 도 8을 참조하여 예를 들기로 한다. 예시적으로, 코드워드의 비트 스트림 길이(LEN)가 산출될 것이다. Tc=5, T1s=2가 입력되면, codenum 생성부(161)는 파라미터(codenum) 값을 생성한다. 수학식 1 내지 수학식 3에 의해서 파라미터(codenum) 값이 생성된다. 생성된 파라미터(codenum) 값은 14이다. 제 2 주소 및 인덱스 생성부(164)는 파라미터 값 또는 제 2 주소 및 인덱스 값을 생성한다. 즉, 수학식 6에 의해서 파라미터(ad=3)가 생성되고, 수학식 18에 의해서 파라미터(sa=0)가 생성된다. 또한, 수학식 19에 의해서 제 2 주소(Add=3)가 생성되고, 수학식 20에 의해서 제 2 인덱스(Idx=2)가 생성된다.An operation of encoding Coeff_token in the memory structure for the VLCT according to the second embodiment of the present invention will be described with reference to FIGS. 5 and 8. As an example, the bit stream length LEN of a codeword will be calculated. When Tc = 5 and T1s = 2 are input, the
생성된 제 2 주소(Add)가 제 2 인덱스(Idx)에 따라 제 2 저장부(165)에 저장된 파라미터(offset)가 독출된다. 독출된 파라미터(offset) 값은 3이다. base 생성부(166)는 기본값을 생성한다. 수학식 7 내지 수학식 16에 의해서 기본값들(base0=7, base=4)이 생성된다. 합산부(168)는 생성된 기본값과 독출된 파라미터(offset) 값을 더한다. 즉, 수학식 17에 의해서 생성된 기본값(base=4)과 파라미터(offset=3) 값이 더해져 LEN 값이 생성된다. 생성된 LEN은 7로써, 도 3b의 VLCT1에서 Tc=5, T1s=2인 경우의 코드워드의 비트 스트림 길이와 동일하다.A parameter stored in the
도 9는 본 발명의 제 2 실시 예에 따른 메모리 구조에서 Coeff_token을 인코딩하는 동작을 보여주기 위한 순서도이다.9 is a flowchart illustrating an operation of encoding Coeff_token in a memory structure according to a second embodiment of the present invention.
도 5 및 도 9를 참조하면, 제 2 실시 예에 따른 VLCT에 대한 메모리 구조를 참조하여 Coeff_token를 인코딩하는 동작은 다음과 같은 단계를 포함한다. 입력된 Tc와 T1s값으로부터 codenum 생성부(161)는 파라미터(codenum)을 생성한다(S110 단계). 제 1 주소 및 인덱스 생성부(162)는 생성된 파라미터(codenum) 값을 참조하여 제 1 저장부(163)를 액세스하기 위한 제 1 주소(add) 그리고 제 1 인덱스(idx)값을 생성한다(S120 단계). 생성된 제 1 주소(add) 그리고 제 1 인덱스(idx) 값에 따라 제 1 저장부(163)에서 코드워드의 비트 스트림 값(VAL)이 독출된다(S130 단계).5 and 9, an operation of encoding Coeff_token with reference to a memory structure for a VLCT according to the second embodiment includes the following steps. The
제 2 주소 및 인덱스 생성부(163)는 생성된 파라미터(codenum) 값을 참조하여 제 2 저장부(165)를 액세스하기 위한 제 2 주소(Add) 그리고 제 2 인덱스(Idx)값을 생성한다(S140 단계). 생성된 제 2 주소(Add) 그리고 제 2 인덱스(Idx) 값에 따라 제 2 저장부(165)에서 파라미터(offset) 값이 독출된다(S150 단계). Base 생성부(166)는 기본값을 생성한다(S160 단계). 생성된 기본값과 파라미터(offset) 값을 참조하여 코드워드의 비트 스트림 길이(LEN)가 생성된다(S170 단계). 생성된 LEN과 VAL이 비트 스트림 생성부(167)로 전송되어 비트 스트림이 생성된다(S180 단계).The second address and
본 발명의 제 2 실시 예에 따르면, VLCT이 나타내는 코드워드들은 길이 정보와 값 정보로 나누어 구성된다. 코드워드들의 길이 정보와 값 정보는 할당된 각각의 메모리 영역에 저장된다. 코드워드의 길이 정보의 크기는 축소되어 구성되고, 축소된 코드워드의 길이 정보는 할당된 메모리 영역에 저장된다. 따라서, 인코더의 동작 속도가 향상되고, VLCT가 저장되는 메모리 영역이 감소된다.According to the second embodiment of the present invention, codewords indicated by the VLCT are divided into length information and value information. Length information and value information of the codewords are stored in each allocated memory area. The size of the length information of the codeword is configured to be reduced, and the length information of the reduced codeword is stored in the allocated memory area. Thus, the operating speed of the encoder is improved and the memory area in which the VLCT is stored is reduced.
100 : 인코더
110 : 움직임 추정부
120 : 움직임 보상부
130 : 인트라 예측부
140 : 필터
150 : 재배열부
160 : 엔트로피 인코더
161 : 코드넘 생성부
162 : 제 1 주소 및 인덱스 생성부
163 : 제 1 저장부
164 : 제 2 주소 및 인덱스 생성부
165 : 제 2 저장부
166 : 베이스 계산부
167 : 비트 스트림 생성부
168 : 합산부100: encoder
110: motion estimation unit
120: motion compensation unit
130: intra prediction unit
140: filter
150: rearrangement
160: entropy encoder
161: code number generation unit
162: first address and index generator
163: first storage unit
164: second address and index generator
165: second storage unit
166: base calculation unit
167: bit stream generation unit
168: adding up
Claims (15)
양자화된 변환 계수의 0이 아닌 계수의 수(Tc)와 크기가 1인 계수의 수(T1s) 정보를 참조하여 파라미터 값(codenum)을 생성하는 단계;
상기 파라미터 값(codenum)을 참조하여, 코드워드의 비트 스트림 길이의 기본값을 계산하는 단계;
상기 파라미터 값(codenum)을 참조하여 생성되는 주소(Add) 및 인덱스(Idx) 값에 따라 저장부로부터 증가값(offset)을 독출하는 단계;
상기 기본값(base)과 상기 증가값(offset)에 따라 코드워드의 비트 스트림 길이 정보를 생성하는 단계; 그리고
코드워드의 비트 스트림 값 정보와 상기 생성된 코드워드의 비트 스트림 길이 정보를 이용하여 코드워드의 비트 스트림을 생성하는 단계를 포함하고,
상기 파라미터 값(codenum)은,
으로 정의되는 인코딩 방법.In the context adaptive variable length code method of encoding:
Generating a parameter value codenum with reference to information on the number of non-zero coefficients Tc of the quantized transform coefficients and the number of coefficients T1s having a magnitude of 1;
Calculating a default value of a bit stream length of a codeword with reference to the parameter value (codenum);
Reading an offset value from a storage unit according to an address (Add) and an index (Idx) value generated by referring to the parameter value codenum;
Generating bit stream length information of a codeword according to the base and the offset; And
Generating a bit stream of a codeword using bit stream value information of a codeword and bit stream length information of the generated codeword,
The parameter value codenum is
The encoding method defined by.
상기 변수들(j, cn)은,
; 그리고
으로 정의되는 인코딩 방법.The method of claim 2,
The variables (j, cn),
; And
The encoding method defined by.
양자화된 변환 계수의 0이 아닌 계수의 수(Tc)와 크기가 1인 계수의 수(T1s) 정보를 참조하여 파라미터 값(codenum)을 생성하는 단계;
상기 파라미터 값(codenum)을 참조하여, 코드워드의 비트 스트림 길이의 기본값을 계산하는 단계;
상기 파라미터 값(codenum)을 참조하여 생성되는 주소(Add) 및 인덱스(Idx) 값에 따라 저장부로부터 증가값(offset)을 독출하는 단계;
상기 기본값(base)과 상기 증가값(offset)에 따라 코드워드의 비트 스트림 길이 정보를 생성하는 단계; 그리고
코드워드의 비트 스트림 값 정보와 상기 생성된 코드워드의 비트 스트림 길이 정보를 이용하여 코드워드의 비트 스트림을 생성하는 단계를 포함하고,
상기 기본값(base)은 복수의 기본값으로 구성되되, 복수의 가변 길이 코드 테이블 각각에 대응되는 인코딩 방법.In the context adaptive variable length code method of encoding:
Generating a parameter value codenum with reference to information on the number of non-zero coefficients Tc of the quantized transform coefficients and the number of coefficients T1s having a magnitude of 1;
Calculating a default value of a bit stream length of a codeword with reference to the parameter value (codenum);
Reading an offset value from a storage unit according to an address (Add) and an index (Idx) value generated by referring to the parameter value codenum;
Generating bit stream length information of a codeword according to the base and the offset; And
Generating a bit stream of a codeword using bit stream value information of a codeword and bit stream length information of the generated codeword,
The base is composed of a plurality of default values, each encoding method corresponding to a plurality of variable length code table.
상기 복수의 기본값들은,
으로 정의되는 인코딩 방법.The method of claim 4, wherein
The plurality of default values,
The encoding method defined by.
상기 변수들(base0, k2, sel)은 상기 생성된 파라미터(codenum) 값을 참조하여,
;
;
;
;
;
;
; 그리고
으로 정의되는 인코딩 방법.The method of claim 5, wherein
The variables base0, k2, and sel are referenced to the generated parameter codenum value.
;
;
;
;
;
;
; And
The encoding method defined by.
양자화된 변환 계수의 0이 아닌 계수의 수(Tc)와 크기가 1인 계수의 수(T1s) 정보를 참조하여 파라미터 값(codenum)을 생성하는 단계;
상기 파라미터 값(codenum)을 참조하여, 코드워드의 비트 스트림 길이의 기본값을 계산하는 단계;
상기 파라미터 값(codenum)을 참조하여 생성되는 주소(Add) 및 인덱스(Idx) 값에 따라 저장부로부터 증가값(offset)을 독출하는 단계;
상기 기본값(base)과 상기 증가값(offset)에 따라 코드워드의 비트 스트림 길이 정보를 생성하는 단계; 그리고
코드워드의 비트 스트림 값 정보와 상기 생성된 코드워드의 비트 스트림 길이 정보를 이용하여 코드워드의 비트 스트림을 생성하는 단계를 포함하고,
상기 주소(Add) 및 인덱스(Idx)는 상기 생성된 파라미터(codenum) 값을 참조하여,
; 그리고
으로 정의되는 인코딩 방법.In the context adaptive variable length code method of encoding:
Generating a parameter value codenum with reference to information on the number of non-zero coefficients Tc of the quantized transform coefficients and the number of coefficients T1s having a magnitude of 1;
Calculating a default value of a bit stream length of a codeword with reference to the parameter value (codenum);
Reading an offset value from a storage unit according to an address (Add) and an index (Idx) value generated by referring to the parameter value codenum;
Generating bit stream length information of a codeword according to the base and the offset; And
Generating a bit stream of a codeword using bit stream value information of a codeword and bit stream length information of the generated codeword,
The address (Add) and the index (Idx) with reference to the generated parameter (codenum) value,
; And
The encoding method defined by.
상기 변수들(sa, ad)은 상기 생성된 파라미터(codenum) 값을 참조하여,
; 그리고
으로 정의되는 인코딩 방법.The method of claim 7, wherein
The variables (sa, ad) with reference to the generated parameter (codenum) value,
; And
The encoding method defined by.
양자화된 변환 계수의 0이 아닌 계수의 수(Tc)와 크기가 1인 계수의 수(T1s) 정보를 참조하여 파라미터 값(codenum)을 생성하는 단계;
상기 파라미터 값(codenum)을 참조하여, 코드워드의 비트 스트림 길이의 기본값을 계산하는 단계;
상기 파라미터 값(codenum)을 참조하여 생성되는 주소(Add) 및 인덱스(Idx) 값에 따라 저장부로부터 증가값(offset)을 독출하는 단계;
상기 기본값(base)과 상기 증가값(offset)에 따라 코드워드의 비트 스트림 길이 정보를 생성하는 단계; 그리고
코드워드의 비트 스트림 값 정보와 상기 생성된 코드워드의 비트 스트림 길이 정보를 이용하여 코드워드의 비트 스트림을 생성하는 단계를 포함하고,
상기 코드워드의 비트 스트림 길이 정보는 상기 기본값(base)과 상기 증가값(offset)을 더하여 생성되는 인코딩 방법.In the context adaptive variable length code method of encoding:
Generating a parameter value codenum with reference to information on the number of non-zero coefficients Tc of the quantized transform coefficients and the number of coefficients T1s having a magnitude of 1;
Calculating a default value of a bit stream length of a codeword with reference to the parameter value (codenum);
Reading an offset value from a storage unit according to an address (Add) and an index (Idx) value generated by referring to the parameter value codenum;
Generating bit stream length information of a codeword according to the base and the offset; And
Generating a bit stream of a codeword using bit stream value information of a codeword and bit stream length information of the generated codeword,
The bit stream length information of the codeword is generated by adding the base and the offset.
상기 생성된 파라미터 값에 따라 기본값을 계산하기 위한 기본값 계산부;
가변 길이 코드워드의 비트 스트림 길이 정보 값과 상기 기본값의 차이값을 저장하기 위한 저장부;
상기 계산된 기본값과 상기 생성된 파라미터 값에 따라 독출되는 차이값을 더하여 상기 가변 길이 코드워드의 비트 스트림 길이 정보를 생성하는 합산부;
상기 가변 길이 코드워드의 비트 스트림 값 정보를 저장하기 위한 저장부; 그리고,
상기 생성된 가변 길이 코드워드의 비트 스트림 길이 정보와 상기 생성된 파라미터 값에 따라 독출되는 상기 가변 길이 코드워드의 비트 스트림 값 정보에 따라 코드워드의 비트 스트림을 생성하는 비트 스트림 생성부를 포함하고,
상기 증가값을 저장하기 위한 저장부와 상기 가변 길이 코드워드의 비트 스트림 값을 저장하기 위한 저장부는 분리되어 구성되는 인코딩 장치.A codenum generator for generating a parameter from the quantized transform coefficients;
A default value calculator for calculating a default value according to the generated parameter value;
A storage unit for storing a bit stream length information value of a variable length codeword and a difference value of the default value;
An adder configured to generate bit stream length information of the variable length codeword by adding the calculated default value and a difference value read according to the generated parameter value;
A storage unit for storing bit stream value information of the variable length codeword; And,
And a bit stream generator for generating a bit stream of a codeword according to the bit stream length information of the generated variable length codeword and the bit stream value information of the variable length codeword read out according to the generated parameter value.
And a storage unit for storing the increment value and a storage unit for storing the bit stream value of the variable length codeword.
상기 차이값은 2비트로 구성되는 인코딩 장치.11. The method of claim 10,
And the difference value comprises two bits.
상기 생성된 파라미터 값에 따라 상기 저장부를 액세스하기 위한 주소 및 인덱스를 생성하는 주소 및 인덱스 생성부를 더 포함하는 인코딩 장치.11. The method of claim 10,
And an address and index generator for generating an address and an index for accessing the storage according to the generated parameter value.
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100023174A KR101136858B1 (en) | 2010-03-16 | 2010-03-16 | Encoder and encoding method in video coding standard |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
KR1020100023174A KR101136858B1 (en) | 2010-03-16 | 2010-03-16 | Encoder and encoding method in video coding standard |
Publications (2)
Publication Number | Publication Date |
---|---|
KR20110104190A KR20110104190A (en) | 2011-09-22 |
KR101136858B1 true KR101136858B1 (en) | 2012-04-20 |
Family
ID=44955023
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1020100023174A KR101136858B1 (en) | 2010-03-16 | 2010-03-16 | Encoder and encoding method in video coding standard |
Country Status (1)
Country | Link |
---|---|
KR (1) | KR101136858B1 (en) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050061777A (en) * | 2003-12-18 | 2005-06-23 | 엘지전자 주식회사 | Decoding method of cavlc |
KR20070018292A (en) * | 2005-08-09 | 2007-02-14 | (주)씨앤에스 테크놀로지 | The H.264 decoding method for fast cavlc |
KR20090054202A (en) * | 2007-11-26 | 2009-05-29 | 한국전자통신연구원 | H.264 cavlc decoding method based on application-specific instruction-set processor |
KR20090055701A (en) * | 2007-11-29 | 2009-06-03 | 한국전자통신연구원 | Cavlc table search method for h.264 cavlc decoding |
-
2010
- 2010-03-16 KR KR1020100023174A patent/KR101136858B1/en not_active IP Right Cessation
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR20050061777A (en) * | 2003-12-18 | 2005-06-23 | 엘지전자 주식회사 | Decoding method of cavlc |
KR20070018292A (en) * | 2005-08-09 | 2007-02-14 | (주)씨앤에스 테크놀로지 | The H.264 decoding method for fast cavlc |
KR20090054202A (en) * | 2007-11-26 | 2009-05-29 | 한국전자통신연구원 | H.264 cavlc decoding method based on application-specific instruction-set processor |
KR20090055701A (en) * | 2007-11-29 | 2009-06-03 | 한국전자통신연구원 | Cavlc table search method for h.264 cavlc decoding |
Also Published As
Publication number | Publication date |
---|---|
KR20110104190A (en) | 2011-09-22 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108307196B (en) | Video encoding method and video encoding apparatus | |
TWI622288B (en) | Video decoding method | |
JP6199311B2 (en) | Coding of coefficients in video coding | |
US7664176B2 (en) | Method and system for entropy decoding for scalable video bit stream | |
JP5590133B2 (en) | Moving picture coding apparatus, moving picture coding method, moving picture coding computer program, moving picture decoding apparatus, moving picture decoding method, and moving picture decoding computer program | |
JP2022520944A (en) | Improved residual coding for conversion skip mode and block difference pulse code modulation | |
WO2012096095A1 (en) | Image predict coding method, image predict coding device, image predict coding program, image predict decoding method, image predict decoding device, and image predict decoding program | |
JP2021520144A (en) | Methods for decoding or encoding as well as equipment and computer programs | |
JP2015508617A5 (en) | ||
KR20140017020A (en) | Unified merge mode and adaptive motion vector prediction mode candidates selection | |
JP2014520454A (en) | Boundary pixel padding for intra prediction in video coding | |
CN110419216B (en) | Binary arithmetic decoding by parameterized probability estimation finite state machines | |
JP2021519050A (en) | Methods, devices and computer programs for decoding video sequences | |
KR100736096B1 (en) | Method and apparatus for encoding and decoding video signal by group | |
TW201347547A (en) | Method and apparatus for parallel entropy encoding, method and apparatus for parallel entropy decoding, and non-transitory computer-readable recording medium | |
US20230239464A1 (en) | Video processing method with partial picture replacement | |
KR20090119434A (en) | Method and apparatus for video encoding and decoding | |
CN112806010A (en) | Method and apparatus for video encoding and decoding using predictor candidate list | |
KR101136858B1 (en) | Encoder and encoding method in video coding standard | |
JP5698644B2 (en) | Video predictive encoding method, video predictive encoding device, video predictive encoding program, video predictive decoding method, video predictive decoding device, and video predictive decode program | |
JP2014131289A (en) | Moving image decoder and method | |
CN112399180A (en) | Video decoding method, device and storage medium | |
JP5775959B2 (en) | Image prediction coding method, image prediction coding device, image prediction coding program, image prediction decoding method, image prediction decoding device, and image prediction decoding program | |
KR20120095814A (en) | Methods of encoding/decoding using multiple reference pictures and apparatuses for using the same | |
RU2409857C2 (en) | System and method for scalable coding and decoding multimedia data using multiple layers |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
N231 | Notification of change of applicant | ||
AMND | Amendment | ||
E601 | Decision to refuse application | ||
AMND | Amendment | ||
X701 | Decision to grant (after re-examination) | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20150120 Year of fee payment: 4 |
|
FPAY | Annual fee payment |
Payment date: 20160406 Year of fee payment: 5 |
|
LAPS | Lapse due to unpaid annual fee |