KR101485219B1 - Apparatus and method for video decoding - Google Patents

Apparatus and method for video decoding Download PDF

Info

Publication number
KR101485219B1
KR101485219B1 KR20120017999A KR20120017999A KR101485219B1 KR 101485219 B1 KR101485219 B1 KR 101485219B1 KR 20120017999 A KR20120017999 A KR 20120017999A KR 20120017999 A KR20120017999 A KR 20120017999A KR 101485219 B1 KR101485219 B1 KR 101485219B1
Authority
KR
South Korea
Prior art keywords
decoding
threads
thread
syntax element
image data
Prior art date
Application number
KR20120017999A
Other languages
Korean (ko)
Other versions
KR20130096497A (en
Inventor
홍정현
정기석
김원진
Original Assignee
한양대학교 산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한양대학교 산학협력단 filed Critical 한양대학교 산학협력단
Priority to KR20120017999A priority Critical patent/KR101485219B1/en
Publication of KR20130096497A publication Critical patent/KR20130096497A/en
Application granted granted Critical
Publication of KR101485219B1 publication Critical patent/KR101485219B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods 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
    • H04N19/436Methods 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 using parallelised computational arrangements
    • 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)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

영상 디코딩 장치 및 방법이 개시된다. 개시된 영상 디코딩 장치는 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩하는 디코딩부를 포함하되, 상기 영상 데이터의 디코딩은 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후에 수행되는 제2 디코딩으로 구성되고, 상기 디코딩부에 의해 N번째 시간구간에서 병렬 처리되는 다수의 스레드 중 일부의 스레드는 N번째 영상 데이터에 대한 상기 제1 디코딩에 할당된 것이고, 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 상기 제2 디코딩에 할당된 것이다. An image decoding apparatus and method are disclosed. The disclosed image decoding apparatus includes a decoding unit that processes a plurality of threads in parallel to decode image data, wherein the decoding of the image data comprises a first decoding including entropy decoding and a second decoding performed after the entropy decoding , A thread of a plurality of threads to be processed in parallel in the N-th time interval by the decoding unit is allocated to the first decoding for the N-th image data, and the rest of the threads are allocated to the N- And is assigned to the second decoding.

Description

영상 디코딩 장치 및 방법{APPARATUS AND METHOD FOR VIDEO DECODING}[0001] APPARATUS AND METHOD FOR VIDEO DECODING [0002]

본 발명의 실시예들은 영상 디코딩 장치 및 방법에 관한 것으로서, 더욱 상세하게는 영상의 효율적인 병렬 디코딩이 가능한 영상 디코딩 장치 및 방법에 관한 것이다.Embodiments of the present invention relate to an image decoding apparatus and method, and more particularly, to an image decoding apparatus and method capable of efficient parallel decoding of an image.

고성능 디지털 장비가 보편화됨에 따라 고해상도의 동영상 서비스에 대한 요구가 증가하고 있으며, 이러한 요구를 만족시키기 위한 영상 압축 기법에 대한 연구가 활발히 진행되고 있다. As higher performance digital devices become more popular, there is a growing demand for high resolution video services, and image compression techniques are being actively researched to meet these demands.

그리고, 최근 압축률이 우수한 영상처리 기술이 디지털 방송, 멀티미디어 플레이어, 화상회의 등의 멀티미디어 서비스 분야에서 많이 사용되고 있다. 영상 처리에서는 높은 압축률을 지원하기 위하여 복잡도가 높은 알고리즘을 사용하므로, 고해상도 영상 데이터를 인코딩/디코딩하기 위해서는 고성능의 프로세서가 사용되어야 한다. Recently, image processing technology having excellent compression ratio is widely used in multimedia services such as digital broadcasting, multimedia player, and video conference. Since high-complexity algorithms are used in image processing to support high compression rates, high-performance processors must be used to encode / decode high-resolution image data.

한편, 기존의 싱글코어 기반의 프로세서는 클록 속도를 높여서 처리 성능을 향상시키기 때문에, 프로세서에서의 발열 및 소비전력 증가로 인해 처리 성능을 일정 수준 이상 증가시킬 수 없다는 문제점이 있었다. 이러한 문제점을 해결하기 위해 다수의 코어를 이용하여 데이터를 병렬로 처리하는 멀티코어 기반의 프로세서에 대한 연구가 활발히 진행되고 이다. On the other hand, the conventional single-core-based processor has a problem that the processing performance can not be increased beyond a certain level due to an increase in the heat generation and power consumption in the processor because the processing speed is improved by increasing the clock speed. In order to solve such a problem, a multi-core based processor that processes data in parallel using a plurality of cores has been actively studied.

영상처리 디코더에서도 상기한 멀티코어 프로세스를 이용하여 디코딩 성능을 향상시키는 다양한 연구들이 진행되고 있다. 대표적으로 데이터 레벨 병렬화 기법은 영상처리 데이터를 다수의 스레드(Thread)로 나눈 후, 영상처리의 데이터간 의존성을 지키면서 다수의 스레드를 병렬로 동시에 처리하는 디코딩 방법이다.Various studies for improving the decoding performance using the above-mentioned multi-core process have also been carried out in image processing decoders. Typically, the data-level parallelization technique divides image processing data into a plurality of threads and simultaneously processes a plurality of threads in parallel while maintaining the inter-data dependency of image processing.

그런데, 데이터 레벨 병렬화 방법에서 엔트로피 부호화 부분은 순차적으로 디코딩을 수행하여야 하기 때문에 디코딩의 병렬 수행이 용이하지 않다는 문제점이 있다. 특히 고해상도의 동영상 서비스에 대한 요구가 증가하면서 압축률이 좋은 CABAC(Context Adaptive Binary Arithmetic Coding) 엔트로피 인코딩이 선호되고 있으나, 이는 높은 복잡도로 인해 인코딩에 많은 시간이 소요된다는 단점이 있었다. However, in the data-level parallelization method, since the entropy-encoded portions must be decoded sequentially, it is not easy to perform parallel decoding. Particularly, as the demand for a high-resolution video service increases, CABAC (Context Adaptive Binary Arithmetic Coding) entropy encoding having a good compression ratio is preferred, but it has a disadvantage in that it takes a lot of time for encoding due to high complexity.

따라서, 영상처리 디코딩의 병렬 처리 가부는 엔트로피 디코딩의 병렬 처리 가부와 밀접한 관계를 가지게 된다. 이와 관련하여 엔트로피 디코딩을 병렬화하기 위한 다양한 알고리즘들이 제안되고 있지만, 종래의 알고리즘들은 대부분 하드웨어 디코더의 성능 향상에 대한 연구가 많고 엔트로피 디코딩의 부분적인 성능 향상에 초점이 맞추어 있어 전체적으로 디코딩 성능을 향상시키는 데에는 어려움이 있었다. Therefore, parallel processing availability of image processing decoding is closely related to parallel processing availability of entropy decoding. Various algorithms for parallelizing entropy decoding have been proposed in the related art. However, most of the conventional algorithms have been studied for improving the performance of hardware decoders and focusing on partial performance enhancement of entropy decoding, There was difficulty.

상기한 바와 같은 종래기술의 문제점을 해결하기 위해, 본 발명에서는 영상의 효율적인 병렬 디코딩이 가능한 영상 디코딩 장치 및 방법을 제안하고자 한다. In order to solve the problems of the prior art as described above, the present invention proposes an image decoding apparatus and method capable of efficient parallel decoding of images.

본 발명의 다른 목적들은 하기의 실시예를 통해 당업자에 의해 도출될 수 있을 것이다.Other objects of the invention will be apparent to those skilled in the art from the following examples.

상기한 목적을 달성하기 위해 본 발명의 바람직한 일 실시예에 따르면, 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩하는 디코딩부를 포함하되, 상기 영상 데이터의 디코딩은 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후에 수행되는 제2 디코딩으로 구성되고, 상기 디코딩부에 의해 N번째 시간구간에서 병렬 처리되는 다수의 스레드 중 일부의 스레드는 N번째 영상 데이터에 대한 상기 제1 디코딩에 할당된 것이고, 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 상기 제2 디코딩에 할당된 것임을 특징으로 하는 영상 디코딩 장치가 제공된다. According to another aspect of the present invention, there is provided a decoding apparatus for decoding video data, the apparatus comprising: a decoding unit for decoding video data by parallel processing a plurality of threads, wherein the decoding of the video data includes first decoding including entropy decoding, And a second decoding performed after the entropy decoding, wherein a thread of a plurality of threads that are parallel-processed in the Nth time interval by the decoding unit is allocated to the first decoding for the Nth image data, And some of the threads are allocated to the second decoding for the (N-1) th image data.

상기 제2 디코딩은 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹 중에서 적어도 하나를 포함할 수 있다. The second decoding may include at least one of inverse quantization, inverse transform, intraprediction, motion compensation, and deblocking.

상기 다수의 스레드의 개수는 5 이상이고, 상기 일부의 스레드의 개수는 3 이상 5 이하일 수 있다. The number of the plurality of threads is 5 or more, and the number of the threads of the part may be 3 or more and 5 or less.

상기 영상 데이터는 구문 요소 분할 기법에 따라 인코딩된 영상 데이터이고, 상기 일부의 스레드는 MBINFO 그룹에 포함되는 제1 구문 요소, PRED 그룹에 포함되는 제2 구문 요소 및 CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 할당되는 2 이상의 스레드와 SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 할당되는 하나 이상의 스레드를 포함할 수 있다. Wherein the image data is image data encoded according to a syntax element segmentation technique, the part of the threads includes a first syntax element included in an MBINFO group, a second syntax element included in a PRED group, and a third syntax element included in a CBP group A fourth syntax element included in the SIGMAP group, and one or more threads allocated for decoding the fifth syntax element included in the COEFF group.

상기 디코딩부는 상기 일부의 스레드를 파이프 라인 기법에 따라 병렬 처리하여 상기 제1 구문 요소, 상기 제2 구문 요소, 상기 제3 구문 요소, 상기 제4 구문 요소 및 상기 제5 구문 요소를 디코딩할 수 있다. The decoding unit may decode the first syntax element, the second syntax element, the third syntax element, the fourth syntax element, and the fifth syntax element by parallel processing the part of the threads according to a pipeline scheme .

상기 디코딩부는 데이터 레벨 병렬화 기법을 이용하여 상기 나머지 일부의 스레드를 병렬 처리할 수 있다. The decoding unit may process the remaining part of the threads in parallel by using a data level parallelization technique.

상기 영상 데이터는 프레임 단위의 영상 데이터일 수 있다. The image data may be image data of a frame unit.

상기 디코딩부는 다수의 코어로 구성된 멀티코어 프로세서를 포함하고, 상기 다수의 스레드 각각은 상기 다수의 코어에서 병렬 처리될 수 있다. The decoding unit may include a multicore processor composed of a plurality of cores, and each of the plurality of threads may be parallel-processed in the plurality of cores.

또한, 본 발명의 다른 실시예에 따르면, 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후의 디코딩 과정이 포함된 제2 디코딩을 수행하여 영상 데이터를 디코딩하는 장치에 있어서, 기 설정된 시간구간을 단위로 하여 각 시간구간에서 다수의 스레드를 병렬 처리하여 디코딩을 수행하는 디코딩부; 및 상기 각 시간 구간에서 병렬 처리될 상기 다수의 스레드를 할당하는 스레드 할당부를 포함하되, 상기 스레드 할당부는 소정 시간구간에서 병렬 처리될 다수의 스레드 중 일부의 스레드를 N번째 영상 데이터에 대한 상기 제1 디코딩에 할당하고, 상기 소정 시간구간의 다음 시간구간에서 병렬 처리될 다수의 스레드 중 일부의 스레드를 상기 N번째 영상 데이터에 대한 상기 제2 디코딩에 할당하는 것을 특징으로 하는 영상 디코딩 장치가 제공된다. According to another embodiment of the present invention, there is provided an apparatus for decoding image data by performing a first decoding including entropy decoding and a second decoding including a decoding process after the entropy decoding, A decoding unit for performing parallel processing of a plurality of threads in each time interval to perform decoding; And a thread allocator for allocating the plurality of threads to be processed in parallel in each time interval, wherein the thread allocator allocates a thread of a plurality of threads to be parallel-processed in a predetermined time interval to the first And allocates a thread of a plurality of threads to be parallel-processed in the next time interval of the predetermined time interval to the second decoding of the Nth video data.

또한, 본 발명의 또 다른 실시예에 따르면, 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩하는 단계를 포함하되, 상기 영상 데이터의 디코딩은 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후에 수행되는 제2 디코딩으로 구성되고, 상기 디코딩하는 단계에 의해 N번째 시간구간에서 병렬 처리되는 다수의 스레드 중 일부의 스레드는 N번째 영상 데이터에 대한 상기 제1 디코딩에 할당된 것이고, 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 상기 제2 디코딩에 할당된 것임을 특징으로 하는 영상 디코딩 방법이 제공된다. According to another embodiment of the present invention, there is provided a method for decoding video data, the method comprising: parallel processing a plurality of threads to decode video data, wherein the decoding of the video data is performed after first decoding including entropy decoding and after entropy decoding Wherein a thread of a part of a plurality of threads that are parallel-processed in the Nth time interval by the decoding step is allocated to the first decoding for the Nth image data, and the rest of the threads are allocated to the first decoding And the second decoding for the (N-1) -th image data is allocated to the second decoding.

본 발명에 따르면, 영상의 효율적인 병렬 디코딩이 가능하게 된다. 특히, 쿼드코어 이상의 멀티코어 프로세서에서 영상 데이터의 디코딩의 효율을 극대화시킬 수 있게 된다. According to the present invention, efficient parallel decoding of an image becomes possible. Particularly, it is possible to maximize the decoding efficiency of image data in a quad-core or more multicore processor.

도 1 내지 도 5는 H.264/AVC 표준에 따른 디코딩의 개념을 설명하기 위한 도면이다.
도 6은 본 발명의 일 실시예에 따른 영상 디코딩 장치의 개략적인 구성을 도시한 블록도이다.
도 7 내지 도 17는 본 발명의 일 실시예에 따른 영상 디코딩 장치에 의한 디코딩의 개념을 설명하기 위한 도면이다.
도 18은 본 발명의 일 실시예에 따른 영상 디코딩 방법의 전체적인 흐름을 도시한 순서도이다.
Figs. 1 to 5 are diagrams for explaining the concept of decoding according to the H.264 / AVC standard.
6 is a block diagram showing a schematic configuration of an image decoding apparatus according to an embodiment of the present invention.
FIGS. 7 through 17 are views for explaining the concept of decoding by the image decoding apparatus according to an embodiment of the present invention.
18 is a flowchart illustrating an overall flow of an image decoding method according to an embodiment of the present invention.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세한 설명에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 유사한 구성요소에 대해 사용하였다. While the invention is susceptible to various modifications and alternative forms, specific embodiments thereof are shown by way of example in the drawings and will herein be described in detail. It should be understood, however, that the invention is not intended to be limited to the particular embodiments, but includes all modifications, equivalents, and alternatives falling within the spirit and scope of the invention. Like reference numerals are used for like elements in describing each drawing.

이하에서, 본 발명에 따른 실시예들을 첨부된 도면을 참조하여 상세하게 설명한다.
Hereinafter, embodiments according to the present invention will be described in detail with reference to the accompanying drawings.

도 1 내지 도 5는 H.264/AVC 표준에 따른 디코딩의 개념을 설명하기 위한 도면이다. 이하, 도 1 내지 도 5를 참조하여 H.264/AVC 표준에 따른 디코딩의 개념을 상세히 설명한다. Figs. 1 to 5 are diagrams for explaining the concept of decoding according to the H.264 / AVC standard. Hereinafter, the concept of decoding according to the H.264 / AVC standard will be described in detail with reference to FIGS. 1 to 5. FIG.

H.264/AVC는 ISO/IEC와 ITU가 함께 만든 비디오 압축 표준으로 종래의 비디오 압축 표준보다 더 높은 압축률 가지며, 네트워크를 통한 스트리밍에 적합한 특성을 가지고 있어서 다양한 멀티미디어 응용 분야에서 사용되고 있다. 이러한 H.264/AVC에 따른 디코딩 과정은 도 1에 도시된 바와 같이 그 기능에 따라 엔트로피 디코딩(ED: Entropy Decoding), 역 변환(IT: Inverse Transformation), 역 양자화(IQ: Inverse Quantization), 인트라 예측(IP: Intra Prediction), 움직임 보상(MC: Motion Compensation) 및 디블로킹 필터(DF: Deblocking Filter)로 구성된다. 도 1에서,

Figure 112012014419860-pat00001
는 "OR"을 의미한다. H.264 / AVC is a video compression standard made by ISO / IEC and ITU. It has a higher compression ratio than conventional video compression standards and has characteristics suitable for streaming over a network, thus being used in various multimedia applications. As shown in FIG. 1, the decoding process according to H.264 / AVC is divided into entropy decoding (ED), inverse transform (IT), inverse quantization (IQ) Prediction (IP), motion compensation (MC), and deblocking filter (DF). 1,
Figure 112012014419860-pat00001
Means "OR ".

이와 같은 H.264/AVC에 따라 생성되는 영상 데이터는 도 2에 도시된 바와 같은 구조를 가진다. 도 2를 참조하면, H.264/AVC의 비디오 시퀀스는 GOP(Group Of Pictures)로 구성되고, 각 GOP는 다수의 프레임(Frame)으로 구성된다. 여기서, GOP를 구성하는 프레임은 공간적 중복성을 이용한 I 프레임, 시간적 중복성을 이용한 P 프레임 및 양방향으로 참조 프레임을 사용하는 B 프레임으로 분류된다. 그리고 하나의 프레임은 하나 이상의 슬라이스(Slice)로 구성되고, 하나의 슬라이스는 다수의 매크로 블록(Macroblock)으로 구성되며, 하나의 매크로 블록은 휘도 블록(Luma block)과 색차 블록(Chroma block)으로 이루어진다.The image data generated according to the H.264 / AVC has a structure as shown in FIG. Referring to FIG. 2, a video sequence of H.264 / AVC is composed of a group of pictures (GOP), and each GOP is composed of a plurality of frames. Here, the frames constituting the GOP are classified into an I frame using spatial redundancy, a P frame using temporal redundancy, and a B frame using a reference frame in both directions. One frame is composed of one or more slices, one slice is composed of a plurality of macroblocks, and one macroblock is composed of a luminance block (Luma block) and a color difference block (chroma block) .

한편, 대표적인 종래의 H.264/AVC 기반의 영상 데이터의 병렬 디코딩 기법인 데이터 레벨 병렬화 기법은 영상 데이터를 병렬화가 가능하도록 나누어 처리하는 기법으로서, 병렬 처리되는 영상 데이터 단위에 따라 프레임 단위의 병렬화 기법, 슬라이스 단위의 병렬화 기법 및 매크로 블록 단위의 병렬화 기법으로 크게 분류된다. Meanwhile, a data-level parallelization technique, which is a typical parallel H.264 / AVC-based image data decoding technique, is a technique for dividing and processing image data so as to enable parallelization. The parallel- , Slice-based parallelism, and macroblock-based parallelism.

이 중에서, 매크로 블록 단위의 병렬화 기법은 동시에 처리할 수 있는 매크로 블록 각각에 서로 다른 스레드(Thread)에 할당하여 병렬 디코딩을 수행한다. 이 때, 매크로 블록들 사이에는 도 3에 도시된 바와 같은 의존성이 존재한다. 일례로, "Current MB"의 인트라 예측을 위해서는 1번 매크로, 2번 매크로 블록, 3번 매크로 블록 및 4번 매크로 블록에 대한 인트라 예측이 우선적으로 수행되어야 한다. Among them, the parallelization technique on a macroblock-by-macroblock basis allocates each macroblock that can be simultaneously processed to different threads to perform parallel decoding. At this time, there is a dependency between the macroblocks as shown in FIG. For example, intraprediction for macroblock # 1, # 2 macroblock # 3, # 3 macroblock # 4, and # 4 macroblock should be preferentially performed for intraprediction of "Current MB".

그리고, 매크로 블록 단위의 병렬화 기법 중 대표적인 기법은 2D-wave 병렬화 기법은 도 4에 도시된 바와 같이 각각의 화살표에 스레드를 할당하여 화살표의 방향에 따라서 매크로 블록 단위의 디코딩을 수행한다. 다시 말해, 화살표 방향에 따라 수평적으로 스레드를 할당하여 병렬 처리를 수행한다. 일례로, 도 4에서 MB(4,0), MB(2,1), MB(0,2)는 데이터 의존성을 지키면서 5번째 시간(T5)에서 동시에 처리된다. As a representative technique of the parallelism technique on a macroblock-by-macroblock basis, a 2D-wave parallelism technique allocates a thread to each arrow as shown in FIG. 4 and performs decoding on a macroblock-by-macroblock basis according to the direction of an arrow. In other words, parallel processing is performed by allocating threads horizontally according to the arrow direction. For example, in FIG. 4, MB (4,0), MB (2,1), and MB (0,2) are simultaneously processed at the fifth time (T5) while maintaining data dependency.

또한, 상기한 2D-wave 병렬화 기법을 확장한 3D-wave 병렬화 기법은 도 5에 도시된 바와 같이 엔트로피 디코딩에 하나의 스레드를 할당하여 우선 처리한 후, 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹 중에서 적어도 하나(일례로, MC+IT/IQ+DF 또는 IP+IT/IQ+DF)를 병렬로 처리한다. In addition, as shown in FIG. 5, the 3D-wave parallelization technique that extends the above-described 2D-wave parallelization technique allocates one thread to entropy decoding and performs priority processing, and then performs inverse quantization, inverse transform, intra- (For example, MC + IT / IQ + DF or IP + IT / IQ + DF) in parallel.

그런데, 3D-wave 병렬화 기법은 엔트로피 디코딩을 병렬화하여 처리하지 않기 때문에 병렬화에 따른 높은 성능 향상을 기대하기 어렵다. 이와 관련해, 최근 차세대 영상 표준에서는 엔트로피 디코딩의 병렬화를 위한 다양한 기법들을 제안하고 있다. 특히 영상의 해상도가 높아질수록 압축률이 높은 CABAC 기반의 인코딩이 사용되는데, CABAC 기반의 인코딩은 압축률은 좋지만 복잡도가 높기 때문에 엔트로피 디코딩의 수행에 소요되는 시간이 길다는 단점이 있다. 이에 따라 엔트로피 디코딩의 수행에 소요되는 시간을 줄이기 위하여 CABAC 기반의 엔트로피 디코딩을 병렬화하기 위한 다양한 연구가 이루어지고 있다. However, since the 3D-wave parallelization technique does not process entropy decoding in parallel, it is difficult to expect high performance improvement due to parallelism. In this regard, the next generation video standard recently proposed various techniques for parallelizing entropy decoding. In particular, CABAC-based encoding with a higher compression ratio is used as the resolution of the image increases. However, CABAC-based encoding has a disadvantage in that it takes a long time to perform entropy decoding because the compression rate is good but the complexity is high. Accordingly, various studies have been conducted to parallelize entropy decoding based on CABAC in order to reduce the time required for performing entropy decoding.

그런데, CABAC 기반의 H.264/AVC 인코딩 장치는 이진화(Binarization), 문맥 모델링(Context Modeling) 및 산술 부호화(Binary arithmetic coding)를 순차적으로 진행하여 인코딩을 수행하는바, 이와 같은 순차적인 인코딩의 진행으로 인해 병렬화를 통한 고속 인코딩의 수행이 어렵다는 문제점이 있었다. Meanwhile, the CABAC-based H.264 / AVC encoding apparatus performs encoding by sequentially performing binarization, context modeling, and arithmetic coding. As a result, It is difficult to perform high-speed encoding through parallelization.

위와 같은 문제점에 따라 H.264/AVC 이후의 차세대 표준에서의 엔트로피 디코딩의 병렬화를 위하여 엔트로피 슬라이스 병렬화 기법이 제안되었다. 엔트로피 슬라이스 병렬화 기법은 기존의 슬라이스 레벨 병렬화 기법과 일부 유사점이 있다. 그러나, 기존의 슬라이스 레벨 병렬화 방법은 하나의 프레임을 여러 개의 슬라이스로 나누어 각 슬라이스 단위로 디코딩을 수행하는 반면, 엔트로피 슬라이스 방법은 CABAC 부분만을 슬라이스로 나누어 엔트로피 디코딩을 수행하며, 재구성된 데이터를 이용하여 나머지 디코딩을 수행한다. 그러나 엔트로피 슬라이스 기법은 인코딩 효율이 떨이지는 단점이 있다.Due to the above problems, entropy slice parallelization is proposed for parallelization of entropy decoding in H.264 / AVC and next generation standards. Entropy slice parallelism has some similarities with existing slice - level parallelism. However, in the conventional slice-level parallelization method, one frame is divided into a plurality of slices and decoding is performed in units of slices. In entropy slicing method, entropy decoding is performed by dividing only the CABAC portion into slices and using the reconstructed data And performs the remaining decoding. However, the entropy slicing technique has a disadvantage in that encoding efficiency is deteriorated.

이에 따라, 인코딩 효율 및 CABAC 기반의 병렬화의 성능을 높이기 위해 구문 요소 분할(Syntax Element Partitioning) 기법을 이용한 CABAC 기반의 엔트로피 디코딩의 병렬화 기법이 제안되었다. 상기 기법은 구문 요소(SE: Syntax Element)를 그룹(구문 요소 그룹)으로 나누어 병렬 처리를 수행한다. 여기서, 구문 요소는 아래의 표 1에 도시된 바와 같이 MBINFO 그룹, PRED 그룹, CBP 그룹, SIGMAP 그룹, 및 COEFF 그룹으로 분류되어 인코딩된다(이하에서는 설명의 편의를 위해, MBINFO 그룹에 포함되는 구문 요소를 "제1 구문 요소"로, PRED 그룹에 포함된 구문 요소를 "제2 구문 요소"로, CBP 그룹에 포함된 구문 요소를 "제3 구문 요소"로, SIGMAP 그룹에 포함된 구문 요소를 "제4 구문 요소"로, 및 COEFF 그룹에 포함된 구문 요소를 "제5 구문 요소"로 칭하기로 한다).
Accordingly, a CABAC-based entropy decoding parallelization technique using Syntax Element Partitioning has been proposed to improve the efficiency of encoding efficiency and parallelization based on CABAC. The technique divides a syntax element (SE: Syntax Element) into groups (syntax element groups) and performs parallel processing. Here, the syntax elements are classified into MBINFO group, PRED group, CBP group, SIGMAP group, and COEFF group as shown in Table 1 below (hereinafter, the syntax elements included in the MBINFO group A syntax element included in the PRED group is referred to as a "second syntax element", a syntax element included in the CBP group is referred to as a "third syntax element", a syntax element included in the SIGMAP group is referred to as a "Quot; fourth syntax element ", and syntax elements included in the COEFF group will be referred to as "fifth syntax element").

그룹group 구문 요소Syntax Element MBINFOMBINFO mb_skip_flag, mb_type, sub_mb_type, mb_field_decoded flag,
end of slice flag
mb_skip_flag, mb_type, sub_mb_type, mb_field_decoded flag,
end of slice flag
PREDPRED prev_intra4x4 pred_mode_flag, rem intra4x4_pred_mode, prev_intra8x8_pred_mode_flag, rem intra8x8_pred_mode, intra_chroma pred_mode, ref_idx_l0, ref_idx_l1, mvd_l0, mvd_l1prev_intra4x4 pred_mode_flag, rem intra4x4_pred_mode, prev_intra8x8_pred_mode_flag, rem intra8x8_pred_mode, intra_chroma pred_mode, ref_idx_l0, ref_idx_l1, mvd_l0, mvd_l1 CBPCBP transform_size_8x8_flag, coded_block_pattern, coded_block_flagtransform_size_8x8_flag, coded_block_pattern, coded_block_flag SIGMAPSIGMAP significant_coeff flag, last_significant_coeff flagsignificant_coeff flag, last_significant_coeff flag COEFFCOEFF coeff_abs_level_minus1, coeff_sign_flagcoeff_abs_level_minus1, coeff_sign_flag

이하에서는 상기한 내용에 기초하여 본 발명의 일 실시예에 따른 영상 디코딩 장치 및 방법에 대해 상세하게 설명하기로 한다.Hereinafter, an image decoding apparatus and method according to an embodiment of the present invention will be described in detail with reference to the above description.

도 6은 본 발명의 일 실시예에 따른 영상 디코딩 장치의 개략적인 구성을 도시한 블록도이다. 6 is a block diagram showing a schematic configuration of an image decoding apparatus according to an embodiment of the present invention.

도 6을 참조하면, 본 발명의 일 실시예에 따른 영상 디코딩 장치(600)는 스레드 할당부(610) 및 디코딩부(620)를 포함한다. 이하, 각 구성 요소 별로 그 기능을 상술하기로 한다. Referring to FIG. 6, an image decoding apparatus 600 according to an embodiment of the present invention includes a thread assigning unit 610 and a decoding unit 620. Hereinafter, the function of each component will be described in detail.

스레드 할당부(610)는 영상 데이터를 디코딩하기 위한 작업에 다수의 스레드(Thread)를 할당한다. 그리고 디코딩부(620)는 스레드 할당부(610)에 의해 할당된 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩한다. The thread allocation unit 610 allocates a plurality of threads to a task for decoding image data. The decoding unit 620 processes the plurality of threads allocated by the thread allocating unit 610 in parallel to decode the image data.

여기서, 영상 데이터의 디코딩은 엔트로피 디코딩(ED), 역 변환(IT), 역 양자화(IQ), 인트라 예측(IP), 움직임 보상(MC) 및 디블로킹 필터(DF) 중에서 적어도 하나를 포함할 수 있다. Here, the decoding of the image data may include at least one of entropy decoding (ED), inverse transform (IT), inverse quantization (IQ), intra prediction (IP), motion compensation (MC) and deblocking filter have.

이하에서는 설명의 편의를 위해, 엔트로피 디코딩이 포함된 디코딩을 "제1 디코딩"이라 칭하고, 엔트로피 디코딩 이후에 수행되는 디코딩 과정이 포함된 디코딩을 "제2 디코딩"이라 칭하기로 한다. 따라서, 제2 디코딩에는 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블로킹 중에서 적어도 하나가 포함될 수 있다. Hereinafter, for convenience of explanation, decoding including entropy decoding will be referred to as "first decoding " and decoding including a decoding process performed after entropy decoding will be referred to as" second decoding ". Accordingly, the second decoding may include at least one of inverse quantization, inverse transform, intraprediction, motion compensation, and deblocking.

또한, 본 발명의 일 실시예에 따르면, 디코딩의 대상인 영상 데이터는 프레임 단위의 영상 데이터일 수 있다. 그리고, 영상 데이터는 구문 요소 분할 기법에 따라 인코딩(보다 정확하게는, 엔트로피 인코딩)된 영상 데이터일 수 있다. Also, according to an embodiment of the present invention, the image data to be decoded may be image data of a frame unit. Further, the image data may be image data encoded (more accurately, entropy-encoded) according to the syntax element division technique.

본 발명에 따르면, 스레드 할당부(610)는 전체 영상 데이터의 디코딩에 수행되는 시간을 기 설정된 다수의 시간구간으로 구획한 후, 각 시간구간 단위로 스레드를 할당하며, 디코딩부(620)는 각 시간구간에 할당된 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩한다. According to the present invention, the thread allocation unit 610 divides the time for decoding the entire image data into a predetermined number of time intervals, and then allocates threads in units of time intervals. The decoding unit 620 decodes A plurality of threads allocated in the time domain are processed in parallel to decode the image data.

이 때, N(1 이상의 정수임)번째 시간구간에서 병렬 처리되는 다수의 스레드 중 일부의 스레드는 N번째 영상 데이터에 대한 제1 디코딩에 할당된 것일 수 있다. 그리고, N이 2 이상인 경우, N번째 시간구간에서 병렬 처리되는 다수의 스레드 중 상기 일부의 스레드를 제외한 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 제2 디코딩에 할당된 것일 수 있다. In this case, some threads of the plurality of threads that are processed in parallel in the N (one or more integer) time intervals may be assigned to the first decoding for the Nth image data. If N is 2 or more, a part of the threads other than the thread of the plurality of threads to be processed in parallel in the Nth time interval may be allocated to the second decoding for the (N-1) th image data.

다시 말해, 스레드 할당부(610)는 소정 시간구간(일례로, 상기에서 설명한 N번째 시간구간)에서 병렬 처리될 다수의 스레드 중 일부의 스레드를 N번째 영상 데이터에 대한 제1 디코딩에 할당하고, 상기 소정 시간구간의 다음 시간구간에서 병렬 처리될 다수의 스레드 중 일부의 스레드를 N번째 영상 데이터에 대한 제2 디코딩에 할당할 수 있다. 그리고, 스레드 할당부(610)는 상기 소정 시간구간에서 병렬 처리될 다수의 스레드 중 나머지 일부의 스레드를 N-1번째 영상 데이터에 대한 제2 디코딩에 할당하고, 상기 다음 시간구간에서 병렬 처리될 다수의 스레드 중 나머지 일부의 스레드를 N+1번째 영상 데이터에 대한 제1 디코딩에 할당할 수 있다. In other words, the thread allocation unit 610 allocates a thread of a plurality of threads to be parallel-processed in a predetermined time interval (for example, the N-th time interval described above) to a first decoding for N-th image data, And may allocate a thread of a plurality of threads to be processed in parallel in a next time interval of the predetermined time interval to a second decoding of the Nth image data. The thread allocation unit 610 allocates the remaining threads of the plurality of threads to be parallel-processed in the predetermined time interval to the second decoding for the (N-1) th image data, May be allocated to the first decoding of the (N + 1) th image data.

일례로서, 도 7에 도시된 바와 같이 각 시간구간에 8개의 스레드가 할당되는 경우, N번째 시간구간에서 병렬 처리될 8개의 스레드 중에서 일부인 4개의 스레드는 N번째 영상 데이터의 제1 디코딩을 위해 할당되고, 나머지 일부인 4개의 스레드는 N-1번째 영상 데이터의 제2 디코딩을 위해 할당될 수 있다. For example, when eight threads are allocated to each time interval as shown in FIG. 7, four threads, which are part of eight threads to be processed in parallel in the Nth time interval, are allocated for the first decoding of the Nth video data And the remaining four threads may be allocated for the second decoding of the (N-1) th image data.

즉, 소정 시간구간(N번째 시간구간)에서 N번째 영상 데이터에 대한 제1 디코딩에는 4개의 스레드가 할당되고, N-1번째 영상 데이터에 대한 제2 디코딩에는 4개의 스레드가 할당된다. 이 때, N-1번째 영상 데이터에 대한 제1 디코딩은 소정 시간구간의 이전 시간구간(N-1번째 시간구간)에서 병렬 수행되었으며, N번째 영상 데이터에 대한 제2 디코딩은 소정 시간구간의 다음 시간구간(N+1번째 시간구간)에서 병렬 수행된다. That is, four threads are allocated to the first decoding for the Nth video data in the predetermined time interval (Nth time interval), and four threads are allocated to the second decoding for the (N-1) th video data. In this case, the first decoding for the (N-1) th image data is performed in parallel in the previous time interval (N-1) time interval of the predetermined time interval, and the second decoding for the N- Time interval (N + 1 < th > time interval).

이에 따라, N-1번째 영상 데이터에 대한 디코딩은 N번째 시간구간에서 완료되고, N번째 영상 데이터에 대한 디코딩은 N+1번째 시간구간에서 완료된다. Accordingly, the decoding of the (N-1) th image data is completed in the Nth time interval, and the decoding of the Nth image data is completed in the (N + 1) th time interval.

그리고, 도 7에서는 일부의 스레드가 4개인 것으로 설명하였으나, 본 발명의 다른 실시예에 따르면, 일부의 스레드의 개수는 3개 이상 5개 이하일 수 있다(따라서, 나머지 일부의 스레드 역시 5개 이하 3개 이상일 수 있음). 7, it is described that the number of threads is 4. However, according to another embodiment of the present invention, the number of threads may be 3 or more and 5 or less (accordingly, Or more).

다른 일례로서, 도 8에 도시된 바와 같이 각 시간구간에 16개의 스레드가 할당되는 경우, N번째 시간구간에서 병렬 처리될 16개의 스레드 중에서 일부인 4개의 스레드는 N번째 영상 데이터의 제1 디코딩을 위해 할당되고, 나머지 일부인 12개의 스레드는 N-1번째 영상 데이터의 제2 디코딩을 위해 할당될 수 있다. 이 경우에도 상기 일부의 스레드는 3개 이상 5개 이하일 수 있으며, 나머지 일부의 스레드는 15개 이하 11개 이상일 수 있다. As another example, when 16 threads are allocated in each time interval as shown in FIG. 8, four threads, which are part of the 16 threads to be parallel processed in the Nth time interval, are used for the first decoding of the Nth video data And the remaining twelve threads can be allocated for the second decoding of the (N-1) th image data. In this case, the number of threads may be three or more and five or less, and the remaining threads may be fifteen or less and eleven or more.

한편, 상기의 일례들에서 설명한 바와 같이, 하나의 시간구간에서 병렬 처리되는 다수의 스레드의 개수는 5 이상(8개 또는 16개)이고, 일부의 스레드의 개수는 3 이상 5 이하인 것이 바람직하다. 그리고, 디코딩부(620)는 다수의 코어로 구성된 멀티코어 프로세서를 포함하고, 다수의 스레드는 멀티코어 프로세서에 포함된 다수의 코어에 의해 병렬 처리될 수 있다. 즉, 본 발명의 일 실시예에 따른 영상 디코딩 장치(600)는 옥타코어 내지 헥사코어 프로세서 시스템을 이용하여 영상을 디코딩하는데 용이하게 적용될 수 있다. Meanwhile, as described in the above examples, it is preferable that the number of threads to be processed in parallel in one time interval is 5 or more (8 or 16), and the number of some threads is 3 or more and 5 or less. The decoding unit 620 may include a multicore processor including a plurality of cores, and the plurality of threads may be parallel-processed by a plurality of cores included in the multicore processor. That is, the image decoding apparatus 600 according to an embodiment of the present invention can be easily applied to decoding an image using an octa-core to hexa core processor system.

그리고, 본 발명의 일 실시예에 따르면, 영상 데이터가 구문 요소 분할 기법에 따라 인코딩된 영상인 경우, 제1 디코딩의 수행을 위해 할당되는 일부의 스레드는 MBINFO 그룹에 포함되는 제1 구문 요소, PRED 그룹에 포함되는 제2 구문 요소 및 CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 할당되는 2 이상의 스레드와 SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 할당되는 하나 이상의 스레드를 포함할 수 있다. According to an embodiment of the present invention, when the image data is an image encoded according to the syntax element division technique, some of the threads allocated for performing the first decoding may include a first syntax element included in the MBINFO group, PRED Decoding of the fifth syntax element included in the COEFF group and the fourth syntax element included in the SIGMAP group, two or more threads allocated for decoding of the third syntax element included in the CBP group, Lt; RTI ID = 0.0 > and / or < / RTI >

이 경우, 디코딩부(620)는 일부의 스레드를 파이프 라인 기법에 따라 병렬 처리하여 제1 구문 요소, 제2 구문 요소, 제3 구문 요소, 제4 구문 요소 및 제5 구문 요소를 디코딩할 수 있다. 다시 말해, 디코딩부(620)는 소정의 시간 격차를 두고 상기 일부의 스레드의 처리를 개시하여 병렬적으로 디코딩을 수행할 수 있다. In this case, the decoding unit 620 may decode the first syntax element, the second syntax element, the third syntax element, the fourth syntax element, and the fifth syntax element by parallel processing a part of the threads according to a pipeline technique . In other words, the decoding unit 620 can start the processing of the part of the threads with a predetermined time gap and perform decoding in parallel.

또한, 본 발명의 일 실시예에 따르면, 디코딩부(620)는 데이터 레벨 병렬화 기법을 이용하여 나머지 일부의 스레드를 병렬 처리할 수 있다. Also, according to an embodiment of the present invention, the decoding unit 620 may process the remaining part of the threads in parallel by using the data level parallelization technique.

이하에서는 도 9 내지 14를 참조하여 엔트로피 디코딩이 포함된 제1 디코딩에 3 내지 5개의 스레드를 할당하는 이유 및 각 시간구간에서 일부의 스레드는 N번째 영상 데이터에 대한 제1 디코딩에 할당하고 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 제2 디코딩에 할당하는 이유 및 이에 따른 효과를 상세히 설명하기로 한다.
Hereinafter, with reference to FIGS. 9 to 14, it is assumed that 3 to 5 threads are allocated to the first decoding including entropy decoding, and some threads are allocated to the first decoding for the Nth video data in each time interval, The reason for allocating to the second decoding of the (N-1) th image data and the effect therefrom will be described in detail.

1. 엔트로피 디코딩이 포함된 제1 디코딩에 3 내지 5개의 스레드를 할당하는 이유1. Reason for allocating 3 to 5 threads for first decoding involving entropy decoding

도 9는 구문 요소 분할 기법에 따라 다수의 그룹으로 분류된 구문 요소들의 일례를 도시하고 있다. 즉, 구문 요소들은 앞서 설명한 바와 같이 MBINFO 그룹, PRED 그룹, CBP 그룹, SIGMAP 그룹, COEFF 그룹으로 분류된다. 따라서, 구문 요소 분할 기법에 따라 엔트로피 인코딩된 영상 데이터를 디코딩하고자 하는 경우, 이론적으로는 5개의 구문 요소 그룹 각각에 대해 하나의 스레드를 할당하여 병렬로 디코딩을 수행할 수 있다. FIG. 9 shows an example of syntax elements classified into a plurality of groups according to a syntax element division technique. That is, the syntax elements are classified into MBINFO group, PRED group, CBP group, SIGMAP group, and COEFF group as described above. Therefore, in the case of decoding the entropy-encoded image data according to the syntax element division technique, the decoding can be performed in parallel by allocating one thread to each of five syntax element groups theoretically.

그러나, 구문 요소 그룹 사이에는 도 10에 도시된 바와 같은 데이터 의존성이 존재한다. 이러한 데이터 의존성은 구문 요소 분할 기법에 따라 영상 데이터를 인코딩하는 경우, 데이터의 인코딩 순서에 따른 데이터의 결속도에 의해 발생한다. However, there is a data dependency between syntax element groups as shown in FIG. Such data dependency is caused by the degree of binding of data according to the encoding order of the data when the image data is encoded according to the syntax element division technique.

따라서, 도 10을 참조하면 PRED 그룹에 포함된 제2 구문 요소는 MBINFO 그룹에 포함된 제1 구문 요소가 디코딩 된 후에 디코딩되어야 하고, SIGMAP 그룹에 포함된 제4 구문 요소는 PRED 그룹에 포함된 제2 구문 요소 및 CBP 그룹에 포함된 제3 구문 요소가 디코딩된 후에 디코딩 되어야 하며, COFF 그룹에 포함된 제5 구문 요소는 SIGMAP 그룹에 포함된 제4 구문 요소가 디코딩 된 후에 디코딩 되어야 한다. Referring to FIG. 10, the second syntax element included in the PRED group is decoded after the first syntax element included in the MBINFO group is decoded. The fourth syntax element included in the SIGMAP group is decoded 2 syntax element and the third syntax element included in the CBP group must be decoded after being decoded, and the fifth syntax element included in the COFF group must be decoded after the fourth syntax element included in the SIGMAP group is decoded.

이와 같은 데이터의 의존성을 유지하면서 CABAC 디코딩의 병렬 처리를 수행하기 위해 도 11에 도시된 바와 같이 MBINFO 그룹, CBP 그룹, PRED 그룹, SIGMAP 그룹, 및 COEFF 그룹에 대해 각각 제1 스레드(Task 1) 내지 제5 스레드(Task 5)를 순차적으로 할당한 후, 소정의 시간 간격을 두고 제1 스레드 내지 제5 스레드의 처리를 개시하여 파이프라인 방식으로 병렬 디코딩을 수행할 수 있다. 따라서, 본 발명의 제1 실시예에 따르면, 제1 디코딩의 수행을 위해서 5개의 스레드가 할당될 수 있다. 여기서, 도 11에 도시된 5개의 서브 시간구간은 앞서 설명한 하나의 시간구간에 포함된다.In order to perform the parallel processing of CABAC decoding while maintaining the dependency of the data, as shown in FIG. 11, the first thread (Task 1), the second thread (Task 1), and the second thread After the fifth thread (Task 5) is sequentially allocated, processing of the first to fifth threads may be started at a predetermined time interval to perform parallel decoding in a pipelined manner. Therefore, according to the first embodiment of the present invention, five threads can be allocated for performing the first decoding. Here, the five sub time periods shown in FIG. 11 are included in one time period described above.

한편, SIGMAP 그룹 부분과 COEFF 그룹 부분에서 인코딩되는 레지듀얼 데이터(Residual Data)는 도 12에 도시된 바와 같이 부호화 플래그(coded_block_flag)가 1이면 SIGMAP 그룹 내의 significant_coeff_flag, last_significant coeff_flag이 인코딩된 후 COEFF 그룹 내의 레벨 정보(Level Information) 값인 coeff_abs_level minus1, coeff_sign_flag가 인코딩된다. 이와 같은 인코딩 과정에 의해 SIGMAP 그룹에 포함된 제4 구문 요소와 COEFF 그룹에 포함된 제5 구문 요소 사이에 강한 데이터의 결속이 발생하게 된다. 12, significant_coeff_flag and last_significant coeff_flag in the SIGMAP group are encoded when the coding flag (coded_block_flag) is 1 as shown in FIG. 12, and the residual data encoded in the COEFF group The level information values coeff_abs_level minus1 and coeff_sign_flag are encoded. By this encoding process, strong data binding occurs between the fourth syntax element included in the SIGMAP group and the fifth syntax element included in the COEFF group.

따라서, 도 11에 도시된 바와 같이 각 구문 요소 그룹에 대해 별개의 스레드를 할당하여 파이프 라인 기법에 따라 병렬 디코딩을 수행하는 경우, SIGMAP 그룹에 포함된 제4 구문 요소의 디코딩(즉, 제4 스레드의 처리) 및 COEFF 그룹에 포함된 제5 구문 요소의 디코딩(즉, 제5 스레드의 처리) 시에 큰 오버헤드가 발생하게 되어 파이프 라인 기법에 따른 병렬 디코딩의 효율이 크게 감소할 수 있게 된다. 11, when a separate thread is allocated to each syntax element group and parallel decoding is performed according to the pipeline technique, decoding of the fourth syntax element included in the SIGMAP group (that is, decoding of the fourth thread And processing of the fifth thread included in the COEFF group (i.e., processing of the fifth thread), the efficiency of parallel decoding according to the pipeline technique can be greatly reduced.

따라서, 본 발명의 일 실시예에 따른 영상 디코딩 장치(600)는 SIGMAP 그룹에 포함된 제4 구문 요소의 디코딩 작업과 COEFF 그룹에 포함된 제5 구문 요소의 디코딩 작업을 하나의 디코딩 작업 그룹으로 규정하고, 이에 대해 하나의 스레드를 할당한 후, 다른 스레드들과 병렬 처리를 수행하여 디코딩함으로써 위와 같은 오버헤드의 발생을 방지한다. Therefore, the image decoding apparatus 600 according to the embodiment of the present invention defines the decoding operation of the fourth syntax element included in the SIGMAP group and the decoding operation of the fifth syntax element included in the COEFF group as one decoding operation group And allocates one thread to it, and then performs parallel processing with other threads to decode the same, thereby preventing the occurrence of such overhead.

보다 상세하게, 본 발명의 일 실시예에 따르면, 스레드 할당부(610)는 MBINFO 그룹에 포함되는 제1 구문 요소, PRED 그룹에 포함되는 제2 구문 요소 및 CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 2 이상의 스레드를 할당하고, SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 하나의 스레드를 할당한다. 다시 말해, 스레드 할당부(610)는 MBINFO 그룹, PRED 그룹 및 CBP 그룹을 적절히 조합하여 2 이상의 디코딩 작업을 규정하고, 규정된 2 이상의 디코딩 작업에 대해 각각 스레드를 할당하며, SIGMAP 그룹 및 COEFF 그룹에 대한 디코딩을 하나의 디코딩 작업으로 규정하여 하나의 스레드를 할당한다. More specifically, according to one embodiment of the present invention, the thread assignment unit 610 assigns a first syntax element included in the MBINFO group, a second syntax element included in the PRED group, and a third syntax element included in the CBP group Two or more threads are allocated for decoding, and one thread is allocated for decoding of the fourth syntax element included in the SIGMAP group and the fifth syntax element included in the COEFF group. In other words, the thread allocation unit 610 defines two or more decoding operations by appropriately combining the MBINFO group, the PRED group, and the CBP group, assigns threads to two or more prescribed decoding operations, and allocates threads to the SIGMAP group and the COEFF group A decoding operation is defined as one decoding operation and one thread is allocated.

이 경우, 디코딩부(620)는 상기 2 이상의 스레드 및 상기 하나의 스레드를 파이프 라인 기법에 따라 병렬 처리하여 제1 구문 요소, 제2 구문 요소, 제3 구문 요소, 제4 구문 요소 및 제5 구문 요소를 디코딩한다. In this case, the decoding unit 620 parallel-processes the two or more threads and the one thread according to a pipeline technique to generate a first syntax element, a second syntax element, a third syntax element, a fourth syntax element, Decodes the element.

일례로서, 스레드 할당부(610)는 제1 구문 요소의 디코딩에 대하여 하나의 스레드(제1 스레드)를 할당하고, 제2 구문 요소 및 제3 구문 요소의 디코딩에 대하여 하나의 스레드(제2 스레드)를 할당하고, 제4 구문 요소 및 제5 구문 요소의 디코딩에 대하여 하나의 스레드(제3 스레드)를 할당할 수 있다. 즉, 본 발명의 제2 실시예에 따르면, 제1 디코딩의 수행을 위해서 3개의 스레드가 할당될 수 있다. As an example, the thread allocation unit 610 allocates one thread (first thread) for decoding the first syntax element and one thread (second thread) for decoding the second syntax element and the third syntax element, ), And allocate one thread (third thread) for decoding the fourth syntax element and the fifth syntax element. That is, according to the second embodiment of the present invention, three threads can be allocated for performing the first decoding.

이 경우, 디코딩부(620)는 소정의 시간 격차를 두고 제1 스레드의 처리, 제2 스레드의 처리 및 제3 스레드의 처리를 순차적으로 개시하여 제1 스레드, 제2 스레드 및 제3 스레드를 병렬 처리하여 디코딩을 수행할 수 있다. In this case, the decoding unit 620 may sequentially start the processing of the first thread, the processing of the second thread, and the processing of the third thread sequentially with a predetermined time gap, and thereby the first thread, the second thread, Decoding can be performed.

다시 말해, 영상 디코딩 장치(600)는 도 13에 도시된 바와 같이 MBINFO 그룹에 포함되는 제1 구문 요소의 디코딩에 대하여 제1 스레드(Thread 1)를 할당하고, PRED 그룹에 포함되는 제2 구문 요소 및 CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 제2 스레드(Thread 2)를 할당하고, SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 제3 스레드(Thread 3)를 할당한 후, 소정의 시간 격차(즉, 하나의 서브 시간구간)를 두고 제1 스레드의 처리, 제2 스레드의 처리 및 제3 스레드의 처리를 순차적으로 개시하여 제1 스레드, 제2 스레드 및 제3 스레드를 병렬 처리하여 파이프 라인 기법에 따라 디코딩을 수행할 수 있다. 여기서, 도 13에 도시된 3개의 서브 시간구간 역시 앞서 설명한 하나의 시간구간에 포함된다. In other words, as shown in FIG. 13, the video decoding apparatus 600 allocates a first thread (Thread 1) to the decoding of the first syntax element included in the MBINFO group, And a second thread (Thread 2) for decoding a third syntax element included in the CBP group, and for decoding the fifth syntax element included in the fourth syntax element and the COEFF group included in the SIGMAP group, After the thread (Thread 3) is allocated, processing of the first thread, processing of the second thread, and processing of the third thread are sequentially started with a predetermined time gap (i.e., one sub-time interval) , The second thread and the third thread may be processed in parallel to perform the decoding in accordance with the pipeline technique. Here, the three sub time periods shown in FIG. 13 are also included in one time period described above.

여기서, 본 발명의 일 실시예에 따르면, 디코딩부(620)는 도 13에 도시된 바와 같이 서브 시간구간 단위로 제1 스레드, 제2 스레드 및 제3 스레드를 각각 처리할 수 있다. 이 경우, 디코딩부(620)는 제1 스레드의 처리의 개시 시점으로부터 한 서브 시간구간 후에 제2 스레드의 처리를 개시하고, 제2 스레드의 처리의 개시 시점으로부터 한 서브 시간구간 후에 제3 서브 시간구간의 처리를 개시할 수 있다. Here, according to an embodiment of the present invention, the decoding unit 620 may process the first thread, the second thread, and the third thread, respectively, in units of sub-time intervals as shown in FIG. In this case, the decoding unit 620 starts processing of the second thread after one sub-time interval from the start of the processing of the first thread, and after a sub-time interval from the start of processing of the second thread, The processing of the section can be started.

한편, 위와 같이 파이프 라인 기법에 따라 디코딩을 수행하는 경우에 있어서, 한 서브 시간구간에 하나의 구문 요소만을 처리하는 경우에는 동기화의 횟수 증가에 의해 전체적인 디코딩 속도가 느려지는 문제가 발생할 수도 있다. On the other hand, when decoding is performed according to the pipeline technique as described above, if only one syntax element is processed in one sub-time interval, the overall decoding speed may be slowed down by increasing the number of times of synchronization.

따라서, 본 발명의 일 실시예에 따르면, 디코딩부(620)는 각각의 스레드에 대해, 하나의 서브 시간구간 내에서 다수의 구문 요소를 처리함으로써 동기화 횟수를 감소시켜 디코딩 속도의 저하를 방지할 수 있다. 다시 말해, 디코딩부(620)는 2 이상의 제1 구문 요소를 한 서브 시간구간 내에서 디코딩하고, 하나 이상의 제2 구문 요소 및 하나 이상의 제3 구문 요소를 한 서브 시간구간 내에서 디코딩하며, 하나 이상의 제4 구문 요소 및 하나 이상의 제5 구문 요소를 한 서브 시간구간에서 디코딩할 수 있다. Accordingly, in accordance with an embodiment of the present invention, the decoding unit 620 may process a plurality of syntax elements within one sub-time interval for each thread, thereby reducing the number of synchronization times to prevent a decrease in the decoding speed have. In other words, the decoding unit 620 may decode two or more first syntax elements in one sub-time interval, decode one or more second syntax elements and one or more third syntax elements in one sub-time interval, The fourth syntax element and the one or more fifth syntax elements may be decoded in one sub-time interval.

또한, 다른 일례로서, 스레드 할당부(610)는 제1 구문 요소의 디코딩에 대하여 하나의 스레드(제1 스레드)를 할당하고, 제2 구문 요소의 디코딩에 대하여 하나의 스레드(제2 스레드)를 할당하고, 제3 구문 요소의 디코딩에 대하여 하나의 스레드(제3 스레드)를 할당하고, 제4 구문 요소 및 제5 구문 요소의 디코딩에 대하여 하나의 스레드(제4 스레드)를 할당할 수 있다. 즉, 본 발명의 제3 실시예에 따르면, 제1 디코딩의 수행을 위해서 4개의 스레드가 할당될 수 있다. 여기서, 도 14에 도시된 4개의 서브 시간구간 역시 앞서 설명한 하나의 시간구간에 포함된다. As another example, the thread allocation unit 610 may allocate one thread (first thread) for decoding the first syntax element and one thread (second thread) for decoding the second syntax element Allocate one thread (third thread) for decoding the third syntax element, and allocate one thread (fourth thread) for decoding the fourth syntax element and the fifth syntax element. That is, according to the third embodiment of the present invention, four threads can be allocated for performing the first decoding. Here, the four sub-time periods shown in FIG. 14 are also included in one time period described above.

이 경우, 디코딩부(620)는 소정의 시간 격차를 두고 제1 스레드의 처리, 제2 스레드의 처리, 제3 스레드의 처리 및 제4 스레드의 처리를 순차적으로 개시하여 제1 스레드, 제2 스레드, 제3 스레드 및 제4 스레드를 병렬 처리하여 디코딩을 수행할 수 있다. In this case, the decoding unit 620 sequentially starts the processing of the first thread, the processing of the second thread, the processing of the third thread, and the processing of the fourth thread at a predetermined time interval, , The third thread and the fourth thread in parallel to perform decoding.

다시 말해, 본 발명의 제2 실시예에 따르면, 영상 디코딩 장치(600)는 도 14에 도시된 바와 같이, MBINFO 그룹에 포함되는 제1 구문 요소의 디코딩에 대하여 제1 스레드(Thread 1)를 할당하고, PRED 그룹에 포함되는 제2 구문 요소의 디코딩에 대하여 제2 스레드(Thread 2)를 할당하고, CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 제3 스레드(Thread 3)를 할당하고, SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 제4 스레드(Thread 4)를 할당한 후, 소정의 시간 격차를 두고 제1 스레드의 처리, 제2 스레드의 처리, 제3 스레드의 처리 및 제4 스레드의 처리를 순차적으로 개시하여 제1 스레드, 제2 스레드, 제3 스레드 및 제4 스레드를 병렬 처리하여 파이프 라인 기법에 따라 디코딩을 수행할 수 있다. In other words, according to the second embodiment of the present invention, as shown in FIG. 14, the video decoding apparatus 600 allocates a first thread (Thread 1) to decoding of the first syntax element included in the MBINFO group Allocates a second thread (Thread 2) for decoding a second syntax element included in the PRED group, allocates a third thread (Thread 3) for decoding a third syntax element included in the CBP group, A fourth thread (Thread 4) is allocated for the decoding of the fourth syntax element included in the SIGMAP group and the fifth syntax element included in the COEFF group, processing of the first thread with a predetermined time gap, The processing of the third thread and the processing of the fourth thread may be sequentially started to parallelize the first thread, the second thread, the third thread, and the fourth thread to perform decoding according to the pipeline technique.

여기서, 본 발명의 일 실시예에 따르면, 디코딩부(620)는 앞서 설명한 바와 마찬가지로 서브 시간구간 단위로 제1 스레드, 제2 스레드, 제3 스레드 및 제4 스레드를 각각 처리할 수 있다. 이 경우, 디코딩부(620)는 제1 스레드의 처리의 개시 시점으로부터 한 서브 시간구간 후에 제2 스레드의 처리를 개시하고, 제2 스레드의 처리의 개시 시점으로부터 한 서브 시간구간 후에 제3 서브 시간구간의 처리를 개시하며, 제3 스레드의 처리의 개시 시점으로부터 한 서브 시간구간 후에 제4 서브 시간구간의 처리를 개시할 수 있다. Here, according to an embodiment of the present invention, the decoding unit 620 may process the first thread, the second thread, the third thread, and the fourth thread, respectively, in units of sub-time intervals as described above. In this case, the decoding unit 620 starts processing of the second thread after one sub-time interval from the start of the processing of the first thread, and after a sub-time interval from the start of processing of the second thread, The processing of the fourth sub-time period can be started after one sub-time interval from the start of the processing of the third thread.

또한, 본 발명의 일 실시예에 따르면, 디코딩부(620)는 앞서 설명한 바와 마찬가지로 2 이상의 제1 구문 요소를 한 서브 시간구간 내에서 디코딩하고, 2 이상의 구문 요소를 한 서브 시간구간 내에서 디코딩하고, 2 이상의 제3 구문 요소를 한 서브 시간구간 내에서 디코딩하고, 하나 이상의 제4 구문 요소 및 하나 이상의 제5 구문 요소를 한 서브 시간구간에서 디코딩할 수 있다. 이에 따라 한 서브 시간구간에 하나의 구문 요소만을 처리하여 동기화의 횟수 증가함으로써 전체적인 디코딩 속도가 느려지는 문제를 해결할 수 있게 된다. Also, according to an embodiment of the present invention, the decoding unit 620 may decode two or more first syntax elements in one sub-time interval and decode two or more syntax elements in one sub-time interval as described above , Two or more third syntax elements may be decoded within one sub-time interval, and one or more fourth syntax elements and one or more fifth syntax elements may be decoded in one sub-time interval. Accordingly, it is possible to solve the problem that the overall decoding speed is slowed down by processing only one syntax element in one sub-time interval and increasing the number of times of synchronization.

이에 따라, 본 발명에 따른 영상 디코딩 장치(600)는 큰 오버헤드 없이 영상에 따른 데이터를 효율적으로 병렬 디코딩할 수 있게 된다.
Accordingly, the image decoding apparatus 600 according to the present invention can efficiently parallel-decode data according to an image without a large overhead.

2. 각 시간구간에서 일부의 스레드는 N번째 영상 데이터에 대한 제1 디코딩에 할당하고 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 제2 디코딩에 할당하는 이유2. The reason why some threads in each time interval are allocated to the first decoding for the Nth image data and the remaining threads are allocated to the second decoding for the (N-1) th image data

4개의 코어가 포함된 쿼드코어 프로세서를 이용하여 4개의 스레드를 병렬 처리함으로써 영상 데이터를 디코딩하는 경우, 도 15에 도시된 바와 같이 영상 디코딩 장치(600)는 먼저 엔트로피 디코딩이 포함된 제1 디코딩에 대해 4개의 스레드를 할당하여 병렬 처리한 후, 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹 중에서 적어도 하나가 포함된 제2 디코딩에 대해 4개의 스레드를 할당하여 병렬 처리함으로써 영상 데이터의 디코딩을 수행할 수 있다. In a case where image data is decoded by processing four threads in parallel using a quad-core processor including four cores, as shown in FIG. 15, the image decoding apparatus 600 first performs a first decoding including entropy decoding Four threads are assigned to four threads, and four threads are allocated to a second decoding including at least one of inverse quantization, inverse transform, intraprediction, motion compensation and deblocking, and parallel processing is performed to decode video data Can be performed.

그런데, 쿼드코어 프로세서 또는 헥사코어 프로세서 등과 같이 5개 이상의 코어를 포함하는 멀티코어 프로세서를 이용하여 도 15에 도시된 바와 같은 방식으로 디코딩을 수행하는 경우, 도 16 및 도 17에 도시된 바와 같이 제1 디코딩의 수행 시 처리되지 않는 여분의 스레드가 남게 된다(도 16은 옥타코어 프로세서를 이용하여 제1 디코딩에 대해 4개의 스레드를 할당하여 처리하는 경우의 일례이고, 도 17은 헥사코어 프로세서를 이용하여 제1 디코딩에 대해 4개의 스레드를 할당하여 처리하는 경우의 일례임). 이와 같이 특정 작업에 대해 할당되지 않는 스레드가 존재하는 경우, 멀티코어 프로세서의 데이터 처리 효율이 감소하게 되는 문제가 발생한다.  However, when decoding is performed in a manner as shown in FIG. 15 using a multicore processor including five or more cores such as a quad-core processor or a hexa core processor, as shown in FIGS. 16 and 17, (FIG. 16 shows an example of allocating and processing four threads for the first decoding using an octa core processor, and FIG. 17 shows an example of using a hexa core processor And four threads are assigned to the first decoding to perform processing). When there is a thread that is not allocated for a specific task, a problem arises in that data processing efficiency of the multicore processor is reduced.

한편, 앞서 설명한 바와 같이 영상 데이터를 디코딩하게 위해서는 (엔트로피 디코딩이 포함된) 제1 디코딩이 우선적으로 수행된 후에 (역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹 중에서 적어도 하나를 포함하는) 제2 디코딩이 수행되어야 한다. On the other hand, in order to decode the image data as described above, after the first decoding (including entropy decoding) is preferentially performed (including at least one of inverse quantization, inverse transform, intraprediction, motion compensation, and deblocking) A second decoding has to be performed.

따라서, 본 발명에서는 제1 디코딩과 제2 디코딩을 순차적으로 수행함과 동시에 여분의 스레드가 존재하는 것을 방지하기 위해, 앞서 도 7 및 도 8에서 설명한 바와 같이 N번째 시간구간에서 병렬 처리되는 다수의 스레드 중 일부의 스레드는 N번째 영상 데이터에 대한 제1 디코딩에 할당하여 병렬 처리하고, 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 상기 제2 디코딩에 할당하여 병렬 처리한다. Therefore, in order to prevent the first decoding and the second decoding from being performed sequentially and the redundant thread to be present, as described with reference to FIGS. 7 and 8, a plurality of threads Some of the threads are allocated to the first decoding of the N-th image data for parallel processing, and the rest of the threads are allocated to the second decoding for the (N-1) -th image data for parallel processing.

이에 따라, 본 발명에 따른 영상 디코딩 장치(600)는 쿼드코어 이상의 멀티코어 프로세서에서 특히 영상 데이터의 디코딩의 효율을 극대화시킬 수 있게 된다.
Accordingly, the video decoding apparatus 600 according to the present invention can maximize the efficiency of decoding video data especially in a multi-core processor of a quad-core or more.

도 18는 본 발명의 일 실시예에 따른 영상 디코딩 방법의 전체적인 흐름을 도시한 순서도이다. 이하, 각 단계 별로 수행되는 과정을 설명한다. 18 is a flowchart showing an overall flow of an image decoding method according to an embodiment of the present invention. Hereinafter, a process performed in each step will be described.

먼저, 단계(S1810)에서는 영상 데이터를 디코딩하기 위한 작업에 다수의 스레드를 할당한다. First, in step S1810, a plurality of threads are allocated to a task for decoding image data.

다음으로, 단계(S1820)에서는 단계(S1810)에서 할당된 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩한다. Next, in step S1820, the plurality of threads allocated in step S1810 are processed in parallel to decode the image data.

본 발명의 일 실시예에 따르면, 영상 데이터의 디코딩은 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후에 수행되는 제2 디코딩으로 구성될 수 있다. 이 경우, 제2 디코딩은 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹 중에서 적어도 하나를 포함할 수 있다. According to an embodiment of the present invention, the decoding of the image data may consist of a first decoding including entropy decoding and a second decoding performed after the entropy decoding. In this case, the second decoding may include at least one of inverse quantization, inverse transform, intraprediction, motion compensation, and deblocking.

또한, 본 발명의 일 실시예에 따르면, 단계(S610)에 의해 N번째 시간구간에서 병렬 처리되는 다수의 스레드 중 일부의 스레드는 N번째 영상 데이터에 대한 제1 디코딩에 할당된 것이고, 나머지 일부의 스레드는 N-1번째 영상 데이터에 대한 제2 디코딩에 할당된 것일 수 있다. Also, according to an embodiment of the present invention, a thread of a plurality of threads that are processed in parallel in the Nth time interval in step S610 is allocated to the first decoding for the Nth image data, The thread may be assigned to the second decoding for the (N-1) th image data.

지금까지 본 발명에 따른 영상 디코딩 방법의 실시예들에 대하여 설명하였고, 앞서 도 6에서 설명한 영상 디코딩 장치(600)에 관한 구성이 본 실시예에도 그대로 적용 가능하다. 이에, 보다 상세한 설명은 생략하기로 한다.Embodiments of the image decoding method according to the present invention have been described so far, and the configuration of the image decoding apparatus 600 described above with reference to FIG. 6 can be applied to this embodiment as it is. Hereinafter, a detailed description will be omitted.

또한, 본 발명의 실시예들은 다양한 컴퓨터 수단을 통하여 수행될 수 있는 프로그램 명령 형태로 구현되어 컴퓨터 판독 가능 매체에 기록될 수 있다. 상기 컴퓨터 판독 가능 매체는 프로그램 명령, 데이터 파일, 데이터 구조 등을 단독으로 또는 조합하여 포함할 수 있다. 상기 매체에 기록되는 프로그램 명령은 본 발명을 위하여 특별히 설계되고 구성된 것들이거나 컴퓨터 소프트웨어 당업자에게 공지되어 사용 가능한 것일 수도 있다. 컴퓨터 판독 가능 기록 매체의 예에는 하드 디스크, 플로피 디스크 및 자기 테이프와 같은 자기 매체(magnetic media), CD-ROM, DVD와 같은 광기록 매체(optical media), 플롭티컬 디스크(floptical disk)와 같은 자기-광 매체(magneto-optical), 및 롬(ROM), 램(RAM), 플래시 메모리 등과 같은 프로그램 명령의 예에는 컴파일러에 의해 만들어지는 것과 같은 기계어 코드뿐만 아니라 인터프리터 등을 사용해서 컴퓨터에 의해서 실행될 수 있는 고급 언어 코드를 포함한다. 상기된 하드웨어 장치는 본 발명의 일 실시예들의 동작을 수행하기 위해 하나 이상의 소프트웨어 모듈로서 작동하도록 구성될 수 있으며, 그 역도 마찬가지이다.In addition, embodiments of the present invention may be implemented in the form of program instructions that can be executed through various computer means and recorded on a computer readable medium. The computer-readable medium may include program instructions, data files, data structures, and the like, alone or in combination. The program instructions recorded on the medium may be those specially designed and constructed for the present invention or may be available to those skilled in the art of computer software. Examples of computer-readable media include magnetic media such as hard disks, floppy disks, and magnetic tape; optical media such as CD-ROMs and DVDs; magnetic media such as floppy disks; Examples of program instructions, such as magneto-optical and ROM, RAM, flash memory and the like, can be executed by a computer using an interpreter or the like, as well as machine code, Includes a high-level language code. The hardware devices described above may be configured to operate as one or more software modules to perform operations of one embodiment of the present invention, and vice versa.

이상과 같이 본 발명에서는 구체적인 구성 요소 등과 같은 특정 사항들과 한정된 실시예 및 도면에 의해 설명되었으나 이는 본 발명의 전반적인 이해를 돕기 위해서 제공된 것일 뿐, 본 발명은 상기의 실시예에 한정되는 것은 아니며, 본 발명이 속하는 분야에서 통상적인 지식을 가진 자라면 이러한 기재로부터 다양한 수정 및 변형이 가능하다. 따라서, 본 발명의 사상은 설명된 실시예에 국한되어 정해져서는 아니되며, 후술하는 특허청구범위뿐 아니라 이 특허청구범위와 균등하거나 등가적 변형이 있는 모든 것들은 본 발명 사상의 범주에 속한다고 할 것이다.As described above, the present invention has been described with reference to particular embodiments, such as specific elements, and limited embodiments and drawings. However, it should be understood that the present invention is not limited to the above- Various modifications and variations may be made thereto by those skilled in the art to which the present invention pertains. Accordingly, the spirit of the present invention should not be construed as being limited to the embodiments described, and all of the equivalents or equivalents of the claims, as well as the following claims, belong to the scope of the present invention .

Claims (17)

헥사코어 프로세서 또는 옥타코어 프로세서를 포함하며, 복수의 제1 스레드 및 적어도 하나의 제2 스레드를 포함하는 다수의 스레드를 병렬 처리하여 영상 데이터를 디코딩하는 디코딩부를 포함하되,
상기 영상 데이터의 디코딩은 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후에 수행되는 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹을 포함하는 제2 디코딩으로 구성되고,
상기 디코딩부가 헥사코어 프로세서로 구성되는 경우, 상기 다수의 스레드는 6개이고, 상기 제1 스레드의 개수는 3개 내지 5개이고, 상기 제2 스레드의 개수는 3개 내지 1개이고,
상기 디코딩부가 옥타코어 프로세서로 구성되는 경우, 상기 다수의 스레드는 8개이고, 상기 제1 스레드의 개수는 3개 내지 5개이고, 상기 제2 스레드의 개수는 5개 내지 3개이고,
상기 디코딩부는 N-1번째 시간구간, N번째 시간구간 및 N+1번째 시간구간 각각에서 다수의 스레드를 병렬 처리하되, 상기 N-1번째 시간구간에서, 상기 제1 스레드는 N-1번째 영상 데이터에 대한 상기 제1 디코딩을 수행하고, 상기 N번째 시간구간에서, 상기 제1 스레드는 N번째 영상 데이터에 대한 상기 제1 디코딩을 수행하고, 상기 제2 스레드는 상기 N-1번째 영상 데이터에 대한 상기 제2 디코딩을 수행하며, 상기 N+1번째 시간구간에서, 상기 제2 스레드는 상기 N번째 영상 데이터에 대한 상기 제2 디코딩을 수행하고,
상기 N-1번째 영상 데이터에 대한 디코딩은 상기 N번째 시간구간에서 완료되고, 상기 N번째 영상 데이터에 대한 디코딩은 상기 N+1번째 시간구간에서 완료되는 것을 특징으로 하는 영상 디코딩 장치.
A decoder for decoding image data by parallel processing a plurality of threads including a plurality of first threads and at least one second thread, the decoding unit including a hexa core processor or an octa core processor,
Wherein the decoding of the image data comprises a first decoding including entropy decoding and a second decoding including inverse quantization, inverse transform, intra prediction, motion compensation, and deblocking performed after the entropy decoding,
Wherein when the decoding section is constituted by a hex core processor, the number of threads is 6, the number of the first threads is 3 to 5, the number of the second threads is 3 to 1,
Wherein when the decoding unit is composed of an octa core processor, the number of threads is 8, the number of the first threads is 3 to 5, the number of the second threads is 5 to 3,
The decoding unit processes a plurality of threads in parallel in each of an (N-1) th time interval, an (N) -th time interval, and an (N + 1) -th time interval, Wherein the first thread performs the first decoding on the Nth video data in the Nth time interval and the second thread performs the first decoding on the Nth video data on the In the (N + 1) < th > time interval, the second thread performs the second decoding on the Nth video data,
Wherein the decoding of the (N-1) th image data is completed in the Nth time interval, and the decoding of the Nth image data is completed in the (N + 1) th time interval.
삭제delete 삭제delete 제1항에 있어서,
상기 영상 데이터는 구문 요소 분할 기법에 따라 인코딩된 영상 데이터이고,
상기 제1 스레드는 MBINFO 그룹에 포함되는 제1 구문 요소, PRED 그룹에 포함되는 제2 구문 요소 및 CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 할당되는 2 이상의 스레드와 SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 할당되는 하나 이상의 스레드를 포함하는 것을 특징으로 하는 영상 디코딩 장치.
The method according to claim 1,
Wherein the image data is image data encoded according to a syntax element division technique,
The first thread includes a first syntax element included in the MBINFO group, a second syntax element included in the PRED group, two or more threads allocated for decoding of the third syntax element included in the CBP group, and a second syntax element included in the SIGMAP group 4th syntax element and the fifth syntax element included in the COEFF group.
제4항에 있어서,
상기 디코딩부는 상기 제1 스레드를 파이프 라인 기법에 따라 병렬 처리하여 상기 제1 구문 요소, 상기 제2 구문 요소, 상기 제3 구문 요소, 상기 제4 구문 요소 및 상기 제5 구문 요소를 디코딩하는 것을 특징으로 하는 영상 디코딩 장치.
5. The method of claim 4,
Wherein the decoding unit decodes the first syntax element, the second syntax element, the third syntax element, the fourth syntax element, and the fifth syntax element by parallel-processing the first thread according to a pipeline technique And outputs the decoded image.
제1항에 있어서,
상기 디코딩부는 데이터 레벨 병렬화 기법을 이용하여 상기 제2 스레드를 병렬 처리하는 것을 특징으로 하는 영상 디코딩 장치.
The method according to claim 1,
Wherein the decoding unit parallel-processes the second thread using a data level parallelization technique.
제1항에 있어서,
상기 영상 데이터는 프레임 단위의 영상 데이터인 것을 특징으로 하는 영상 디코딩 장치.
The method according to claim 1,
Wherein the image data is image data of a frame unit.
삭제delete 엔트로피 디코딩이 포함된 제1 디코딩 및 상기 엔트로피 디코딩 이후에 수행되는 역 양자화, 역 변환, 인트라 예측, 움직임 보상 및 디블록킹을 포함하는 제2 디코딩을 수행하여 영상 데이터를 디코딩하는 장치에 있어서,
헥사코어 프로세서 또는 옥타코어 프로세서를 포함하며, 기 설정된 시간구간을 단위로 하여 각 시간구간에서, 복수의 제1 스레드 및 적어도 하나의 제2 스레드를 포함하는 다수의 스레드를 병렬 처리하여 디코딩을 수행하는 디코딩부; 및
상기 각 시간 구간에서 병렬 처리될 상기 다수의 스레드를 할당하는 스레드 할당부를 포함하되,
상기 디코딩부가 헥사코어 프로세서로 구성되는 경우, 상기 다수의 스레드는 6개이고, 상기 제1 스레드의 개수는 3개 내지 5개이고, 상기 제2 스레드의 개수는 3개 내지 1개이고,
상기 디코딩부가 옥타코어 프로세서로 구성되는 경우, 상기 다수의 스레드는 8개이고, 상기 제1 스레드의 개수는 3개 내지 5개이고, 상기 제2 스레드의 개수는 5개 내지 3개이고,
상기 스레드 할당부는, N-1번째 시간구간, N번째 시간구간 및 N+1번째 시간구간 각각에서 다수의 스레드를 병렬 처리하도록 할당하되,
상기 N-1번째 시간구간에서, 상기 제1 스레드를 N-1번째 영상 데이터에 대한 상기 제1 디코딩을 수행하도록 할당하고, 상기 N번째 시간구간에서, 상기 제1 스레드를 N번째 영상 데이터에 대한 상기 제1 디코딩을 수행하도록 할당하고, 상기 제2 스레드를 상기 N-1번째 영상 데이터에 대한 상기 제2 디코딩을 수행하도록 할당하며, 상기 N+1번째 시간구간에서, 상기 제2 스레드를 상기 N번째 영상 데이터에 대한 상기 제2 디코딩을 수행하도록 할당하며,
상기 N-1번째 영상 데이터에 대한 디코딩은 상기 N번째 시간구간에서 완료되고, 상기 N번째 영상 데이터에 대한 디코딩은 상기 N+1번째 시간구간에서 완료되는 것을 특징으로 하는 영상 디코딩 장치.
There is provided an apparatus for decoding image data by performing first decoding including entropy decoding and second decoding including inverse quantization, inverse transform, intra prediction, motion compensation, and deblocking performed after the entropy decoding,
A hexa core processor or an octa core processor and performs parallel processing of a plurality of threads including a plurality of first threads and at least one second thread in each time interval in units of a predetermined time interval to perform decoding A decoding unit; And
And a thread allocation unit allocating the plurality of threads to be processed in parallel in each time interval,
Wherein when the decoding section is constituted by a hex core processor, the number of threads is 6, the number of the first threads is 3 to 5, the number of the second threads is 3 to 1,
Wherein when the decoding unit is composed of an octa core processor, the number of threads is 8, the number of the first threads is 3 to 5, the number of the second threads is 5 to 3,
Wherein the thread allocation unit allocates a plurality of threads in parallel in the (N-1) th time interval, the N-th time interval, and the (N + 1)
And allocating the first thread to perform the first decoding on the (N-1) th video data in the (N-1) th time interval, and allocating the first thread to the And allocates the second thread to perform the second decoding on the (N-1) th video data, and allocates the second thread to the N Th image data to perform the second decoding on the second image data,
Wherein the decoding of the (N-1) th image data is completed in the Nth time interval, and the decoding of the Nth image data is completed in the (N + 1) th time interval.
삭제delete 삭제delete 삭제delete 제9항에 있어서,
상기 영상 데이터는 구문 요소 분할 기법에 따라 인코딩된 영상 데이터이고,
상기 제1 스레드는 MBINFO 그룹에 포함되는 제1 구문 요소, PRED 그룹에 포함되는 제2 구문 요소 및 CBP 그룹에 포함되는 제3 구문 요소의 디코딩에 대하여 할당되는 2 이상의 스레드와 SIGMAP 그룹에 포함되는 제4 구문 요소 및 COEFF 그룹에 포함되는 제5 구문 요소의 디코딩에 대하여 할당되는 하나 이상의 스레드를 포함하는 것을 특징으로 하는 영상 디코딩 장치.
10. The method of claim 9,
Wherein the image data is image data encoded according to a syntax element division technique,
The first thread includes a first syntax element included in the MBINFO group, a second syntax element included in the PRED group, two or more threads allocated for decoding of the third syntax element included in the CBP group, and a second syntax element included in the SIGMAP group 4th syntax element and the fifth syntax element included in the COEFF group.
제9항에 있어서,
상기 영상 데이터는 프레임 단위의 영상 데이터인 것을 특징으로 하는 영상 디코딩 장치.
10. The method of claim 9,
Wherein the image data is image data of a frame unit.
삭제delete 삭제delete 삭제delete
KR20120017999A 2012-02-22 2012-02-22 Apparatus and method for video decoding KR101485219B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR20120017999A KR101485219B1 (en) 2012-02-22 2012-02-22 Apparatus and method for video decoding

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20120017999A KR101485219B1 (en) 2012-02-22 2012-02-22 Apparatus and method for video decoding

Publications (2)

Publication Number Publication Date
KR20130096497A KR20130096497A (en) 2013-08-30
KR101485219B1 true KR101485219B1 (en) 2015-01-29

Family

ID=49219363

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20120017999A KR101485219B1 (en) 2012-02-22 2012-02-22 Apparatus and method for video decoding

Country Status (1)

Country Link
KR (1) KR101485219B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019045297A1 (en) * 2017-08-30 2019-03-07 삼성전자(주) Image processing device and control method thereof

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2018207956A1 (en) * 2017-05-10 2018-11-15 엘지전자(주) Method and device for entropy-encoding and entropy-decoding video signal

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110122412A (en) * 2010-05-04 2011-11-10 한양대학교 산학협력단 Video decoder and method for video decoding using multi-thread
KR20120096848A (en) * 2011-02-23 2012-08-31 한양대학교 산학협력단 Apparatus and method for video decoding

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20110122412A (en) * 2010-05-04 2011-11-10 한양대학교 산학협력단 Video decoder and method for video decoding using multi-thread
KR20120096848A (en) * 2011-02-23 2012-08-31 한양대학교 산학협력단 Apparatus and method for video decoding

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
W-J. Kim et al. Multi-threaded syntax element partitioning for parallel entropy decoding. IEEE Transactions on Consumer Electronics. Vol. 57, No. 2, May 2011, pp.897-905 *
W-J. Kim et al. Multi-threaded syntax element partitioning for parallel entropy decoding. IEEE Transactions on Consumer Electronics. Vol. 57, No. 2, May 2011, pp.897-905*

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019045297A1 (en) * 2017-08-30 2019-03-07 삼성전자(주) Image processing device and control method thereof
US11463699B2 (en) 2017-08-30 2022-10-04 Samsung Electronics Co., Ltd. Image processing apparatus and control method thereof

Also Published As

Publication number Publication date
KR20130096497A (en) 2013-08-30

Similar Documents

Publication Publication Date Title
US11838558B2 (en) Methods, devices and systems for parallel video encoding and decoding
USRE49727E1 (en) System and method for decoding using parallel processing
AU2018205779B2 (en) Modified adaptive loop filter temporal prediction for temporal scalability support
Alvarez-Mesa et al. Parallel video decoding in the emerging HEVC standard
CA2760425C (en) Method and system for parallel encoding of a video
WO2015145504A1 (en) Image decoding device, image decoding method, and integrated circuit
KR101485219B1 (en) Apparatus and method for video decoding
KR101216821B1 (en) Apparatus and method for video decoding
KR101718830B1 (en) Method and apparatus of parallel video decoding using the encoding mode

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
X701 Decision to grant (after re-examination)
GRNT Written decision to grant
LAPS Lapse due to unpaid annual fee