KR20100123363A - Device for encoding/decoding video data capable of processing parallel macroblock-based data - Google Patents

Device for encoding/decoding video data capable of processing parallel macroblock-based data Download PDF

Info

Publication number
KR20100123363A
KR20100123363A KR1020090042546A KR20090042546A KR20100123363A KR 20100123363 A KR20100123363 A KR 20100123363A KR 1020090042546 A KR1020090042546 A KR 1020090042546A KR 20090042546 A KR20090042546 A KR 20090042546A KR 20100123363 A KR20100123363 A KR 20100123363A
Authority
KR
South Korea
Prior art keywords
processing
macroblock
data
frame
encoding
Prior art date
Application number
KR1020090042546A
Other languages
Korean (ko)
Other versions
KR100999505B1 (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 KR1020090042546A priority Critical patent/KR100999505B1/en
Publication of KR20100123363A publication Critical patent/KR20100123363A/en
Application granted granted Critical
Publication of KR100999505B1 publication Critical patent/KR100999505B1/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/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/117Filters, e.g. for pre-processing or post-processing
    • 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/423Methods 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 characterised by memory arrangements
    • 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

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

PURPOSE: A device for encoding/decoding video data capable of processing data based on a macro block in parallel is provided to process video data based on a macro block in parallel and effectively use a processing result of a previous macro block, thereby increasing processing speed without deterioration of picture quality. CONSTITUTION: An input and output unit(110) receive video data to be encoded or decoded. A data processing unit(120) comprises the first to N macro block processing units for processing data of each macro block. The data processing unit processes data of at least two macro blocks in the same frame for the receiving video data. A work control unit(140) controls the video data to be assigned by a macro block unit.

Description

매크로블록 기반의 데이터 병렬 처리를 수행하는 동영상 인코딩/디코딩 장치{Device for encoding/decoding video data capable of processing parallel macroblock-based data}Device for encoding / decoding video data capable of processing parallel macroblock-based data}

본 발명은 동영상 인코딩/디코딩 장치에 관한 것으로서, 자세하게는 매크로블록 기반의 데이터 병렬 처리를 수행하는 동영상 인코딩/디코딩 장치에 관한 것이다.The present invention relates to a video encoding / decoding device, and more particularly, to a video encoding / decoding device for performing macroblock-based data parallel processing.

H.264 와 같은 동영상 데이터의 압축 표준(codec standard)에 있어서, 하나의 프레임은 소정의 픽셀 구조, 예를 들면 8x8 또는 16x16 픽셀들(pixels)로 이루어지는 매크로 블록(macroblock)으로 분할(division)될 수 있으며, 상기 분할된 동영상 데이터는 매크로 블록 단위로 순차적으로 이산 여현 변환(discrete cosine transform), 양자화(quantization) 및 부호화 코딩(entropy coding) 등을 수행함으로써 인코딩(encoding) 동작을 수행한다. 일반적으로 영상 데이터는 인트라 압축(intra compression) 방법 또는 인터 압축(inter compression)으로 처리될 수 있다. 상기 인트라 압축은 하나의 비디오 프레임 내의 정보만을 이용하여 압축하는 방법이며, 인터 압축은 연속되는 프레임들 사이의 해당하는 화소 값들의 차분들에 근거하여 이미지를 압축하는 방법이다. In the codec standard of moving image data such as H.264, one frame is divided into a macroblock having a predetermined pixel structure, for example, 8x8 or 16x16 pixels. The divided video data may be encoded by sequentially performing discrete cosine transform, quantization, and encoding coding on a macroblock basis. In general, image data may be processed by an intra compression method or an inter compression method. Intra compression is a method of compressing using only information in one video frame, and inter compression is a method of compressing an image based on differences of corresponding pixel values between successive frames.

데이터 처리 속도의 향상을 위한 방안으로서, 동영상을 인코딩함에 있어서 데이터를 병렬하게 처리하는 방안이 고려될 수 있다. 동영상 데이터를 병렬 처리하는 일반적인 방식으로서는, 복수의 프레임(frame)을 수신하고 상기 수신된 복수의 프레임(frame)을 병렬하게 처리하는 방식이 있다. 도 1은 일반적인 동영상 데이터 병렬 처리 동작을 나타내는 도면이다.As a method for improving data processing speed, a method of processing data in parallel in encoding a video may be considered. As a general method of processing video data in parallel, there is a method of receiving a plurality of frames and processing the received plurality of frames in parallel. 1 is a diagram illustrating a general video data parallel processing operation.

도 1에 도시된 바와 같이, 일반적인 동영상 데이터 인코딩/디코딩 장치는 동영상 데이터를 처리하기 위한 다수 개의 병렬 처리기(일예로서, 제1 내지 제5 병렬 처리기)를 구비하며, 제1 내지 제5 병렬 처리기 각각은 서로 다른 프레임 데이터를 병렬하게 처리한다. 프레임 데이터들이 각각 순차적으로 제1 내지 제5 병렬 처리기로 제공되므로, 각 프레임 데이터마다 처리를 수행하는 시각이 서로 다르다. As shown in FIG. 1, a general video data encoding / decoding apparatus includes a plurality of parallel processors (for example, first to fifth parallel processors) for processing video data, each of the first to fifth parallel processors. Processes different frame data in parallel. Since the frame data are sequentially provided to the first to fifth parallel processors, the processing time is different for each frame data.

그러나 상기와 같은 방식의 경우, 병렬하게 처리될 프레임들이 순차적으로 모두 수신되기 까지 딜레이(delay)가 발생할 수 있다. 또한 병렬하게 처리되는 프레임들의 수가 증가할수록 상기와 같은 딜레이는 더 커지게 되며, 화상회의 등과 같은 실시간 데이터 처리를 요구하는 분야에서 상기와 같은 딜레이의 증가에 따른 영향이 커지게 된다.However, in the above-described method, a delay may occur until all of the frames to be processed in parallel are sequentially received. In addition, as the number of frames processed in parallel increases, the delay becomes larger, and the effect of the increase in the delay in the field requiring real-time data processing such as video conferencing becomes larger.

또한 동영상 데이터를 인코딩하는 경우 움직임 추정 동작이 수행될 수 있으며, 상기 움직임 추정 동작은 서로 시간적으로 가까운 프레임들(일예로서 소정의 프레임에 시간적으로 인접하는 직전 및/또는 직후의 프레임)을 참조하여야 하는데, 상기와 같은 방식의 경우 인접한 프레임들이 동시에 인코딩이 수행되고 있다. 이에 따라 움직임 추정 동작을 수행함에 있어서, 참조 프레임의 데이터를 모두 이용할 수가 없으며 현재 인코딩 완료된 일부분의 데이터만을 이용할 수 있으므로, 참조 프레임의 참조할 수 있는 영역의 범위가 제한될 수 밖에 없다. 이는 압축효율의 저하, 그리고 압축된 동영상의 화질 저하 등을 야기할 수 있다. 또한 상기와 같은 문제는 많은 수의 프레임 데이터를 병렬하게 처리하는 경우 더 증가할 수 있다.In addition, when encoding video data, a motion estimation operation may be performed, and the motion estimation operation should refer to frames that are temporally close to each other (for example, frames immediately before and / or immediately adjacent to a predetermined frame in time). In the above scheme, adjacent frames are simultaneously encoded. Accordingly, in performing the motion estimation operation, since all of the data of the reference frame cannot be used and only a part of the data that is currently encoded can be used, the range of the referenceable region of the reference frame is limited. This may cause deterioration of compression efficiency and deterioration of the quality of the compressed video. In addition, the above problem may increase when processing a large number of frame data in parallel.

본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 동영상 데이터를 병렬 처리함에 있어서 딜레이를 감소하고 화질 저하를 방지할 수 있는 동영상 인코딩/디코딩 장치를 제공하는 것을 목적으로 한다.An object of the present invention is to provide a video encoding / decoding device capable of reducing delay and preventing image degradation in parallel processing of video data.

상기와 같은 목적을 달성하기 위하여 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 장치는, 외부로부터 인코딩 또는 디코딩 처리를 수행할 동영상 데이터를 수신하는 입출력부와, 각각 할당되는 매크로 블록의 데이터를 처리하는 제1 내지 제N 매크로블록 처리부(단, N은 2 이상의 정수)를 구비하며, 상기 수신된 동영상 데이터에 대하여 동일 프레임 내의 적어도 두 개의 매크로 블록들의 데이터를 병렬하게 처리하는 데이터 처리부 및 상기 동영상 데이터를 매크로 블록 단위로 상기 제1 내지 제N 매크로블록 처리부에 할당하는 것을 제어하는 작업 제어부를 구비하는 것을 특징으로 한다.In order to achieve the above object, a video encoding / decoding apparatus according to an embodiment of the present invention includes an input / output unit for receiving video data to perform encoding or decoding processing from the outside, and data of a macroblock allocated to each other. A first to N-th macroblock processing unit (wherein N is an integer of 2 or more), and a data processing unit and the video data for processing data of at least two macroblocks in the same frame in parallel with respect to the received video data. It is characterized in that it comprises a job control unit for controlling the allocation to the first to N-th macroblock processing unit in macroblock units.

상기 동영상 인코딩/디코딩 장치는, 상기 제1 내지 제N 매크로블록 처리부 각각으로부터 매크로 블록의 처리 상태에 관한 정보를 수신하고 이를 저장하는 처리 상태 관리부 및 상기 제1 내지 제N 매크로블록 처리부 각각으로부터 매크로 블록의 처리 동작에 따른 중간 처리 결과를 수신하고 이를 저장하는 중간 처리결과 저장부를 더 구비할 수 있다.The video encoding / decoding apparatus receives a macroblock from each of the first to N-th macroblock processing units and a processing state manager to receive and store information on the processing state of the macroblock from each of the first to Nth macroblock processing units. The apparatus may further include an intermediate processing result storage unit configured to receive and store the intermediate processing result according to the processing operation of the apparatus.

또한 상기 동영상 인코딩/디코딩 장치는, 상기 중간 처리결과 저장부에 저장 된 각각의 매크로 블록들의 처리 결과를 이용하여, 상기 프레임에 대한 처리 결과를 기준 프레임 데이터(reference frame data)로서 저장하는 메모리부를 더 구비할 수 있다.The video encoding / decoding apparatus may further include a memory unit configured to store the processing result of the frame as reference frame data using the processing result of each macro block stored in the intermediate processing result storage unit. It can be provided.

바람직하게는, 상기 프레임은 a 개의 로우(row)와 b 개의 칼럼(column)을 갖는 매크로 블록들을 구비하고(단, a와 b는 2 이상의 정수), 상기 병렬하게 처리되는 매크로 블록들은 서로 적어도 하나의 칼럼(column) 간격을 갖는 것을 특징으로 한다.Advantageously, said frame comprises macroblocks having a row and b columns (where a and b are integers greater than or equal to 2) and said macroblocks processed in parallel are at least one of each other. It is characterized by having a column interval (column) of.

또한 바람직하게는, 상기 데이터 처리부에 구비되는 매크로블록 처리부의 개수와 상기 프레임의 로우(row)의 개수는 서로 동일하며(N=a), 상기 제1 내지 제N 매크로블록 처리부 각각은, 상기 프레임의 어느 하나의 로우(row)에 배치되는 매크로 블록들을 순차적으로 처리하는 것을 특징으로 한다.Also preferably, the number of macroblock processing units provided in the data processing unit and the number of rows of the frame are equal to each other (N = a), and each of the first to Nth macroblock processing units may be the frame. It characterized in that the macro blocks arranged in any one row of the sequentially processed.

또한 바람직하게는, 제(N-1) 매크로블록 처리부는, (N-1) 번째 로우(row)에 배치되는 매크로 블록들을 순차적으로 처리하고, 제N 매크로블록 처리부는, N 번째 로우(row)에 배치되는 매크로 블록들을 순차적으로 처리하며, 상기 (N-1) 번째 로우(row)의 i 번째 매크로 블록(단, i는 b 이하의 정수)과 상기 N 번째 로우(row)의 (i-2) 번째 매크로 블록은 서로 병렬하게 처리되는 것을 특징으로 한다.Also preferably, the (N-1) th macroblock processing unit sequentially processes the macroblocks arranged in the (N-1) th row, and the Nth macroblock processing unit is configured to perform the Nth row. Sequentially process macroblocks arranged in the i-th macroblock of the (N-1) th row (where i is an integer less than or equal to b) and (i-2) of the Nth row ) The second macro block is processed in parallel with each other.

한편 본 발명의 일실시예에 따른 동영상 데이터를 인코딩/디코딩하는 장치를 구동하는 방법은, 외부로부터 인코딩 또는 디코딩 처리를 수행할 동영상 데이터를 수신하는 단계와, 상기 장치에 구비되는 제1 내지 제N 매크로블록 처리부 각각에 상기 동영상 데이터를 매크로 블록 단위로 할당하는 단계와, 상기 각각 할당된 매 크로 블록 단위의 데이터에 대하여, 처리 상태에 따라 동일 프레임 내의 적어도 두 개의 매크로 블록들의 데이터를 병렬하게 처리하는 단계와, 상기 매크로 블록의 처리 동작에 따른 중간 처리 결과를 저장하는 단계 및 상기 중간 처리 결과를 참조하여 최종 인코딩/디코딩된 데이터를 생성하는 단계를 구비하는 것을 특징으로 한다.Meanwhile, a method of driving an apparatus for encoding / decoding video data according to an embodiment of the present invention may include receiving video data to be encoded or decoded from the outside, and first to Nth apparatuses provided in the apparatus. Allocating the video data to each macroblock processing unit in units of macroblocks, and processing data of at least two macroblocks in the same frame in parallel with respect to the data of each allocated macroblock unit according to a processing state; And storing the intermediate processing result according to the processing operation of the macro block and generating the final encoded / decoded data with reference to the intermediate processing result.

상기한 바와 같은 본 발명에 따르면, 동영상 데이터를 매크로 블록을 단위로 병렬 처리함으로써 데이터 처리 속도를 향상시키며, 또한 이전의 매크로 블록의 처리 결과를 효과적으로 이용함으로써 화질 저하없이 데이터 처리 속도를 향상시킬 수 있는 효과가 있다.According to the present invention as described above, it is possible to improve the data processing speed by parallel processing of the video data in units of macro blocks, and to improve the data processing speed without deterioration of image quality by effectively using the processing results of the previous macro block. It works.

본 발명과 본 발명의 동작상의 이점 및 본 발명의 실시에 의하여 달성되는 목적을 충분히 이해하기 위해서는 본 발명의 바람직한 실시 예를 예시하는 첨부 도면 및 도면에 기재된 내용을 참조하여야 한다.DETAILED DESCRIPTION In order to fully understand the present invention, the operational advantages of the present invention, and the objects achieved by the practice of the present invention, reference should be made to the accompanying drawings that illustrate preferred embodiments of the present invention.

이하, 첨부한 도면을 참조하여 본 발명의 바람직한 실시 예를 설명함으로써, 본 발명을 상세히 설명한다. 각 도면에 제시된 동일한 참조부호는 동일한 부재를 나타낸다.Hereinafter, exemplary embodiments of the present invention will be described in detail with reference to the accompanying drawings. Like reference numerals in the drawings denote like elements.

도 2는 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 장치를 나타내는 블록도이다. 도 2에 도시된 바와 같이, 상기 동영상 인코딩/디코딩 장치(100)는 입출력부(110), 데이터 처리부(120) 및 중간 처리 결과 저장부(130)를 구비할 수 있다. 또한 상기 동영상 인코딩/디코딩 장치(100)는 데이터 처리부(120)의 전체적인 데이터 처리 동작을 제어하는 작업 제어부(140), 상기 데이터 처리부(120)의 데이터 처리상태에 관련된 정보를 저장하는 처리 상태 관리부(150) 및 원본 프레임 데이터 또는 처리가 완료된 프레임 데이터 등을 저장하기 위한 메모리부(160)를 더 구비할 수 있다. 2 is a block diagram illustrating a video encoding / decoding apparatus according to an embodiment of the present invention. As shown in FIG. 2, the video encoding / decoding apparatus 100 may include an input / output unit 110, a data processing unit 120, and an intermediate processing result storage unit 130. In addition, the video encoding / decoding apparatus 100 may include a task controller 140 for controlling an overall data processing operation of the data processor 120 and a processing state manager configured to store information related to a data processing state of the data processor 120 ( 150 and a memory unit 160 for storing original frame data or processed frame data.

상기와 같은 동영상 인코딩/디코딩 장치(100)에 구비되는 구성의 기능은 다음과 같다. 먼저, 동영상 인코딩/디코딩 장치(100)에 구비되는 구성들의 기능을 설명하며, 실제 데이터를 인코딩 또는 디코딩하는 실시예는 후술한다.The function of the configuration included in the video encoding / decoding apparatus 100 as described above is as follows. First, the functions of the components included in the video encoding / decoding apparatus 100 will be described. An embodiment of encoding or decoding actual data will be described later.

상기 동영상 인코딩/디코딩 장치(100)에 구비되는 입출력부(110)는 인코딩될 프레임 데이터를 외부로부터 수신하거나, 또는 디코딩될 비트 스트림을 외부로부터 수신한다. 상기 입출력부(110)는, 수신된 프레임 데이터 또는 비트 스트림을 동영상 인코딩/디코딩 장치(100)에 구비되는 블록들로 제공하여 인코딩/디코딩 동작이 수행되도록 한다. 또한 수신된 프레임 데이터 또는 비트 스트림은 메모리부(160)에 일시 저장될 수 있다. The input / output unit 110 included in the video encoding / decoding apparatus 100 receives frame data to be encoded from the outside or a bit stream to be decoded from the outside. The input / output unit 110 provides the received frame data or bit stream to blocks included in the video encoding / decoding apparatus 100 to perform an encoding / decoding operation. In addition, the received frame data or bit stream may be temporarily stored in the memory unit 160.

상기 수신된 프레임 데이터 또는 비트 스트림은 데이터 처리부(120)로 제공되어 데이터 처리 동작이 수행된다. 본 발명의 일실시예에 따르면, 데이터를 처리함에 있어서 매크로 블록 단위로 병렬하게 데이터가 처리되며, 이를 위하여 데이터 처리부(120)는 두 개 이상의 매크로블록 처리부를 구비한다. 도 2에는 그 일예로서, 데이터 처리부(120)가 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)를 구비하는 것이 도시된다. 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각은 매크로 블록 단위의 데이터를 처리한다. 바람직하게는, 하나의 프레임은 N 개의 로우(row) * M 개의 칼럼(column)으로 이루어지는 매크로 블록들을 구비하며, 상기 데이터 처리부(120)는 N 개의 로우(row)에 대응하여 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)를 구비하도록 한다. 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각은 어느 하나의 로우(row)에 배치되는 매크로 블록들의 데이터를 순차적으로 처리한다. The received frame data or bit stream is provided to the data processor 120 to perform a data processing operation. According to an embodiment of the present invention, in processing data, data is processed in parallel in units of macro blocks, and for this purpose, the data processor 120 includes two or more macro block processors. As an example, FIG. 2 shows that the data processing unit 120 includes the first to Nth macroblock processing units 120_1 to 120_N. Each of the first to Nth macroblock processing units 120_1 to 120_N processes data in macroblock units. Preferably, one frame includes macroblocks consisting of N rows * M columns, and the data processing unit 120 corresponds to the N rows to the first through Nth rows. The macroblock processing unit 120_1 to 120_N is provided. Each of the first to Nth macroblock processing units 120_1 to 120_N sequentially processes data of macroblocks arranged in any one row.

작업 제어부(140)는 수신된 프레임 데이터 또는 비트 스트림을 데이터 처리부(120)에 할당하는 동작을 제어한다. 상기한 바와 같이 하나의 프레임이 N 개의 로우(row)를 구비하고 데이터 처리부(120)가 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)를 구비하는 경우, 작업 제어부(140)는 N 개의 로우(row) 각각에 배치되는 매크로 블록의 데이터를 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각으로 할당한다. 바람직하게는, 프레임 데이터에 구비되는 매크로 블록들이 좌측 상단에 위치하는 매크로 블록에서 우측 하단에 위치하는 매크로 블록의 순서로 처리되는 경우, 작업 제어부(140)는 N 개의 로우(row)에서 가장 왼쪽에 배치된 매크로 블록을 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각으로 할당한다. 그러나, 상기와 같은 할당 방식은 본 발명에서 수행될 수 있는 하나의 예에 불과한 것이며, 데이터 처리 방식은 다양하게 가변할 수 있다. 즉, 데이터 처리 방식에 따라서, 하나의 매크로블록 처리부는 프레임의 어느 하나의 칼럼(column)에 배치되는 매크로 블록들을 순차적으로 처리할 수도 있으며, 또는 다른 방식으로 배열되는 매크로 블록들을 순차적으로 처리할 수도 있다.The job controller 140 controls an operation of allocating the received frame data or bit stream to the data processor 120. As described above, when one frame includes N rows and the data processor 120 includes the first through Nth macroblock processors 120_1 through 120_N, the job controller 140 may have N rows. (row) The data of the macro blocks arranged in each row are allocated to each of the first to Nth macroblock processing units 120_1 to 120_N. Preferably, when the macroblocks included in the frame data are processed in the order of the macroblocks located at the lower right side from the macroblocks located at the upper left, the operation control unit 140 is located at the leftmost in N rows. The arranged macroblocks are allocated to each of the first to Nth macroblock processing units 120_1 to 120_N. However, the above allocation scheme is just one example that can be performed in the present invention, and the data processing scheme may be variously changed. That is, according to the data processing method, one macroblock processing unit may sequentially process macroblocks arranged in any one column of a frame, or sequentially process macroblocks arranged in another manner. have.

또한, 본 발명의 일실시예에 따르면, 데이터 처리부(120)가 데이터를 처리함 에 있어서 처리 상태 관리부(150)에 저장된 정보를 참조할 수 있다. 즉, 어느 하나의 매크로 블록을 처리함에 있어서, 이에 인접한 매크로 블록들의 처리 결과를 참조하거나 또는 그 이전에 처리된 매크로 블록들의 결과를 참조할 필요가 있다. 이에 따라 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)가 단순히 매크로 블록들을 병렬하게 처리하는 것 보다는 각각의 매크로블록 처리부의 데이터 처리 상태를 참조하여 데이터를 처리하는 것이 바람직하다. 이를 위하여, 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각은 데이터 처리 상태에 관련된 정보를 처리 상태 관리부(150)로 제공하며, 처리 상태 관리부(150)는 수신된 정보를 일시 저장한다. 또한 작업 제어부(140)는 프레임 데이터 또는 비트 스트림을 데이터 처리부(120)에 할당함에 있어서 처리 상태 관리부(150)에 저장된 정보를 참조할 수도 있다. In addition, according to an embodiment of the present invention, the data processing unit 120 may refer to the information stored in the processing state management unit 150 in processing the data. That is, in processing any macro block, it is necessary to refer to the processing result of macro blocks adjacent thereto or to the result of macro blocks processed before. Accordingly, it is preferable that the first to N-th macroblock processing units 120_1 to 120_N process data by referring to the data processing state of each macroblock processing unit, rather than simply processing the macroblocks in parallel. To this end, each of the first to N-th macroblock processing units 120_1 to 120_N provides information related to the data processing state to the processing state manager 150, and the processing state manager 150 temporarily stores the received information. In addition, the job controller 140 may refer to the information stored in the processing state manager 150 when allocating the frame data or the bit stream to the data processor 120.

데이터 처리부(120)는 적어도 두 개의 매크로 블록의 데이터를 병렬하게 처리하며, 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각은 그 처리상태를 처리 상태 관리부(150)로 제공한다. 또한 그 데이터 처리 결과를 중간 처리 결과 저장부(130)로 제공한다. 중간 처리 결과 저장부(130)에 저장된 소정의 매크로 블록의 데이터의 처리 결과는 다른 매크로 블록을 처리하는 매크로 블록 처리부에 의해 참조될 수 있다. 일예로서, 도 3에 도시된 바와 같은 배치를 갖는 매크로 블록들을 처리함에 있어서, 제1 매크로블록 처리부(120_1)는 첫 번째 로우를 처리하고 제2 매크로블록 처리부(120_2)는 두 번째 로우를 처리하는 경우, 두 번째 로우의 매크로 블록 MB는 매크로 블록 A 내지 D가 모두 처리되고 난 후에 처리되는 것이 바람직하다. 이에 따라, 제2 매크로블록 처리부(120_2)는 제1 매크로블록 처리부(120_1)의 데이터 처리상태를 참조하고, 제1 매크로블록 처리부(120_1)가 매크로 블록 B 내지 D를 처리한 것으로 참조된 경우에 제2 매크로블록 처리부(120_2)는 매크로 블록 MB에 대한 데이터 처리 동작을 시작한다(동일 로우에서는 좌측에서 우측으로 매크로 블록이 순차적으로 처리되는 것으로 가정할 때, 매크로 블록 A는 이미 처리가 완료됨). The data processor 120 processes data of at least two macroblocks in parallel, and each of the first to Nth macroblock processors 120_1 to 120_N provides the processing state to the processing state manager 150. In addition, the data processing result is provided to the intermediate processing result storage unit 130. The processing result of the data of the predetermined macro block stored in the intermediate processing result storage unit 130 may be referred to by the macro block processing unit processing other macro blocks. For example, in processing the macroblocks having the arrangement as shown in FIG. 3, the first macroblock processing unit 120_1 processes the first row and the second macroblock processing unit 120_2 processes the second row. In this case, the macro block MB of the second row is preferably processed after all of the macro blocks A to D have been processed. Accordingly, when the second macroblock processing unit 120_2 refers to the data processing state of the first macroblock processing unit 120_1, and the first macroblock processing unit 120_1 is referred to as processing the macroblocks B to D, The second macroblock processing unit 120_2 starts a data processing operation on the macroblock MB (assuming that macroblocks are processed sequentially from left to right in the same row, macroblock A has already been processed) .

중간 처리 결과 저장부(130)는 프레임 내의 모든 매크로 블록들의 각 처리 단계의 중간 처리 결과들을 저장한다. 중간 처리 결과 저장부(130)에 저장된 중간 처리 결과들은, 소정의 매크로 블록의 데이터를 처리하는 경우 이웃하는 또는 그 이전의 매크로 블록들의 데이터 처리 결과를 참조하기 위해 이용된다. 또한 후술하는 바와 같이 본 발명의 일실시예에 따른 데이터 인코딩/디코딩 동작시 상기 동작은 제1 및 제2 단계를 포함할 수 있으며, 제2 단계를 처리하기 위하여 중간 처리 결과 저장부(130)에 저장된 제1 단계의 중간 처리 결과가 참조될 수 있다. 또한 상기 중간 처리 결과 저장부(130)에 저장된 중간 처리 결과들은, 입출력부(110)에서 각각의 매크로 블록의 처리 결과를 결합하여 최종 처리 결과를 발생하기 위해 참조될 수도 있다. The intermediate processing result storage unit 130 stores intermediate processing results of each processing step of all macro blocks in the frame. The intermediate processing results stored in the intermediate processing result storage unit 130 are used to refer to data processing results of neighboring or previous macro blocks when processing data of a predetermined macro block. In addition, as described below, in the data encoding / decoding operation according to an embodiment of the present invention, the operation may include first and second steps, and the intermediate processing result storage unit 130 may process the second step. The intermediate processing result of the first stored step may be referred to. In addition, the intermediate processing results stored in the intermediate processing result storage unit 130 may be referenced to combine the processing results of each macro block in the input / output unit 110 to generate a final processing result.

상기와 같이 구성될 수 있는 본 발명의 동영상 인코딩/디코딩 장치(100)의 구체적인 인코딩/디코딩 동작을 설명하기에 앞서, 일반적인 H.264 표준에서 매크로 블록 단위의 데이터 병렬 처리 동작의 제약을 먼저 개시하고, 상기 제약에도 불구하고 매크로 블록 단위로 데이터를 병렬 처리하는 본 발명의 동영상 인코딩/디코딩 장치(100)의 실시예를 설명한다. Before describing a specific encoding / decoding operation of the video encoding / decoding apparatus 100 of the present invention, which can be configured as described above, the general limitation of the data parallel processing operation in units of macro blocks in the H.264 standard is disclosed. In the following description, an embodiment of a video encoding / decoding apparatus 100 according to the present invention, which processes data in macroblock units in parallel, will be described.

H.264 표준에서는 압축 효율의 향상을 위하여 context-adaptive 한 인코딩/디코딩 방식을 채택하고 있다. 일예로서 CAVLC(Context Adaptive Variable Length Coding)와 CABAC(Context Adaptive Binary Arithmetic Coding) 등과 같은 엔트로피 압축 방식이 H.264 표준에 채택되고 있으며, 상기와 같은 압축 방식을 포함하여 기타의 이유(일예로서, 인트라 예측 모드, 디블록킹 필터링)로 인하여 매크로 블록의 처리과정은 이웃하는 매크로 블록의 중간 처리 결과에 의존하고 있다. 또한 H.264 표준에서는 매크로 블록을 처리함에 있어서 매크로 블록 어드레스의 순서에 따라 순차적으로 진행되는 것을 가정하고 있다. 상기와 같은 이유들로 인하여 동영상 데이터를 매크로 블록 단위로 병렬하게 처리하는 것에는 제약이 발생하게 된다.The H.264 standard adopts a context-adaptive encoding / decoding scheme to improve compression efficiency. As an example, entropy compression schemes such as Context Adaptive Variable Length Coding (CAVLC) and Context Adaptive Binary Arithmetic Coding (CABAC) have been adopted in the H.264 standard, and other reasons including such compression schemes (for example, intra Due to the prediction mode and deblocking filtering, the macroblock processing depends on the intermediate processing result of the neighboring macroblock. In addition, the H.264 standard assumes that the macroblocks are sequentially processed in order of macroblock addresses. For the above reasons, there is a limitation in processing video data in macroblock units in parallel.

H.264 표준에서 매크로 블록을 인코딩하는 과정은, (1) 모드 결정(mode decision), (2) 매크로 블록 단위의 예측(prediction) 데이터 생성, (3) 변환 과정(DCT, 양자화 등), (4) 재구성(Reconstruction) 과정(rescaling, iDCT 등 디블록킹 필터링 전의 매크로 블록 샘플 데이터 생성), (5) 엔트로피 코딩 과정(CAVLC/CABAC 등을 통한 비트 스트림 생성), (6) 디블록킹 필터링 과정 등을 포함할 수 있다. 상기 개시되는 과정들은, 기재된 순서에 따라 인코딩 과정이 반드시 순차적으로 진행되는 것은 아니며, 그 과정의 포함여부나 실제 동작 특성에 대해서는 일부의 변경이 가능하다. The encoding of macro blocks in the H.264 standard includes (1) mode decision, (2) generation of prediction data in units of macro blocks, (3) transformation (DCT, quantization, etc.), ( 4) Reconstruction process (creation of macroblock sample data before deblocking filtering such as rescaling, iDCT), (5) entropy coding process (bit stream generation through CAVLC / CABAC, etc.), (6) deblocking filtering process, etc. It may include. The above-described processes are not necessarily sequentially performed in the order described, and some modifications may be made to whether the process is included or the actual operation characteristics.

상기와 같은 동영상 인코딩 과정들 중에서, 모드 결정, 엔트로피 코딩 과정, 및 디블록킹 필터링 과정 등은 이웃하는 매크로 블록들의 대응되는 단계와 이전 단 계의 처리 결과에 의존하게 된다. 또한 상기 모드 결정을 통하여 인트라 예측 모드(intra prediction mode)가 선택된 경우에는, 상기 예측(prediction) 데이터 생성 과정은 이웃하는 매크로 블록들의 재구성 과정에 따른 중간 처리 결과에 의존하여 수행되어진다. 반면에, 상기 변환 과정 및 재구성 과정은 상기와 같은 의존 없이 처리될 수 있다. Among the video encoding processes as described above, the mode determination, the entropy coding process, and the deblocking filtering process depend on the corresponding step of neighboring macroblocks and the processing result of the previous step. In addition, when an intra prediction mode is selected through the mode determination, the prediction data generation process is performed depending on an intermediate process result of reconstruction of neighboring macroblocks. On the other hand, the conversion process and the reconstruction process can be handled without such dependency.

도 4는 상기와 같은 동영상 인코딩 과정을 나타내는 플로우차트이다. 도 4에 도시된 바와 같이 동영상 인코딩 과정은 모드 결정(S11), 예측(prediction) 데이터 생성(S12), 변환 과정(S13), 재구성 과정(S14), 비트 스트림 생성 과정(S15), 및 디블록킹 필터링 과정(S16)을 포함할 수 있다. 도 4의 좌측에 도시된 화살표는 동일 매크로 블록 내의 처리 순서를 나타내며, 우측에 도시된 화살표는 이웃하는 매크로 블록의 중간 처리결과의 의존 관계를 나타낸다. 4 is a flowchart illustrating a video encoding process as described above. As shown in FIG. 4, the video encoding process includes mode determination (S11), prediction data generation (S12), conversion process (S13), reconstruction process (S14), bitstream generation process (S15), and deblocking. It may include a filtering process (S16). Arrows shown on the left side of FIG. 4 indicate the processing order in the same macro block, and arrows shown on the right side indicate the dependency relationship between intermediate processing results of neighboring macro blocks.

한편, H.264 표준에서 매크로 블록을 디코딩하는 과정은, (1) Parsing 단계(비트 스트림으로부터 매크로 블록의 정보 취득), (2) 매크로 블록 단위의 예측(prediction) 데이터 생성, (3) 구성화(Cconstruction) 과정(rescaling, iDCT 등 디블록킹 필터링 전의 매크로 블록 샘플 데이터 생성) 및 (4) 디블록킹 필터링 과정 등을 포함할 수 있다. On the other hand, decoding the macro block in the H.264 standard includes (1) parsing step (acquiring information of the macro block from the bit stream), (2) generating prediction data in units of macro blocks, and (3) organizing (Cconstruction) process (reduction of macroblock sample data before deblocking filtering such as iDCT) and (4) deblocking filtering process.

상기와 같은 동영상 디코딩 과정들 중에서, Parsing 단계와 디블록킹 필터링 과정들은 이웃하는 매크로 블록들의 대응되는 단계와 이전 단계의 처리 결과에 의존한다. 또한 인트라 예측 모드(intra prediction mode)에서 상기 예측 데이터 생성 과정은 이웃하는 매크로 블록들의 구성화 과정의 중간 처리 결과에 의존한다. 반면에, 상기 구성화 과정은 상기와 같은 의존 없이 처리될 수 있다. Among the video decoding processes as described above, the parsing step and the deblocking filtering processes depend on the processing result of the corresponding step and the previous step of neighboring macroblocks. Also, in the intra prediction mode, the prediction data generation process depends on the intermediate processing result of the construction of neighboring macroblocks. On the other hand, the configuration process can be handled without such dependency.

도 5는 상기와 같은 동영상 디코딩 과정을 나타내는 플로우차트이다. 도 5에 도시된 바와 같이 동영상 디코딩 과정은 Parsing 단계(S21), 예측(prediction) 데이터 생성(S22), 구성화 과정(S23), 및 디블록킹 필터링 과정(S24) 등을 포함할 수 있다. 도 5의 좌측에 도시된 화살표는 동일 매크로 블록 내의 처리 순서를 나타내며, 우측에 도시된 화살표는 이웃하는 매크로 블록의 중간 처리결과의 의존 관계를 나타낸다. 5 is a flowchart illustrating a video decoding process as described above. As shown in FIG. 5, the video decoding process may include a parsing step S21, a prediction data generation S22, a composition process S23, a deblocking filtering process S24, and the like. Arrows shown on the left of FIG. 5 indicate the processing order in the same macro block, and arrows shown on the right indicate the dependency relationship between the intermediate processing results of neighboring macro blocks.

한편, 동영상 데이터를 매크로 블록 단위로 병렬하게 처리하는 데 발생하는 제약으로서, 다음과 같은 제약들이 있다. On the other hand, there are the following constraints that occur in parallel processing of video data in macroblock units.

동영상 데이터를 CAVLC 방식을 적용하여 인코딩을 수행할 때 계산되어져야 할 플래그(flag)로서 스킵 개수 플래그(mb_skip_run)가 존재하며, 상기 스킵 개수 플래그(mb_skip_run)는 해당 매크로 블록의 이전에 이웃하는 매크로 블록들 중 비트 스트림 생성이 생략된 블록들의 개수를 나타낸다. 상기 스킵 개수 플래그(mb_skip_run)는 이웃하는 매크로 블록들의 중간 처리결과 만으로는 알 수 없으며, 순차적으로 처리되는 매크로 블록들의 처리순서의 역순으로 따라가면서 계수 동작(counting)이 수행되어야 한다. 또한 인코딩 과정에서 양자화를 수행하는 경우 양자화 차분값 및 양자화 값이 산출되어야 하는데, 상기와 같은 과정 또한 매크로 블록들의 처리순서의 역순으로 따라가면서 계산이 되어야 한다.A skip count flag (mb_skip_run) exists as a flag to be calculated when encoding video data by applying the CAVLC method, and the skip count flag (mb_skip_run) is a macro block neighboring the previous macroblock. The number of blocks in which bit stream generation is omitted is shown. The skip count flag mb_skip_run cannot be known only by an intermediate process result of neighboring macroblocks, and a counting operation must be performed while following the reverse order of processing of macroblocks that are sequentially processed. In addition, when the quantization is performed in the encoding process, the quantization difference value and the quantization value should be calculated. The above process should also be performed while following the reverse order of the macroblock processing.

또한 디코딩 과정에서, 양자화 차분값을 이용하여 해당 매크로 블록의 양자화 값을 계산하는 작업 또한 매크로 블록 어드레스 순서의 역순으로 진행하여 계산 되어져야 한다. 또한 인코딩 과정에서 생성하는 매크로 블록 계층(layer)과 스킵 개수 플래그(mb_skip_run)의 비트 스트림 데이터는 매크로 블록 어드레스 순서대로 생성되어야 한다. 따라서 매크로 블록 단위로 생성된 비트 스트림 데이터는 다시 합치는 과정(비트 수준의 연결)이 필요하다. 또한 디코딩 과정의 Parsing 단계에서는 수신된 비트 스트림 데이터로부터 각각의 매크로 블록 계층 정보와 스킵 개수 플래그(mb_skip_run)등을 구하는 과정이 수행되는데, 이는 매크로 블록 어드레스 순서대로 처리될 수 밖에 없다. 이는 각각의 매크로 블록의 비트스트림 데이터의 크기는 가변적이므로, 각 매크로 블록의 비트 스트림 데이터의 시작 위치는 순차적 처리에 의해서만 알 수 있기 때문이다.In the decoding process, the operation of calculating the quantization value of the corresponding macroblock by using the quantization difference value must also be calculated in the reverse order of the macroblock address order. In addition, the bit stream data of the macroblock layer and the skip count flag mb_skip_run generated during the encoding process should be generated in the order of macroblock addresses. Therefore, bit stream data generated in units of macro blocks needs to be merged again (bit level concatenation). In the parsing step of the decoding process, the macroblock layer information and the skip count flag (mb_skip_run) are obtained from the received bit stream data, which is processed in macroblock address order. This is because the size of the bitstream data of each macroblock is variable, so that the start position of the bitstream data of each macroblock can be known only by sequential processing.

상기와 같은 이유로 인하여, 인접한 매크로 블록 또는 이전의 매크로 블록 들을 참조하는 데이터 인코딩/디코딩 특성상, 동일한 프레임에 구비되는 매크로 블록들을 병렬 처리함에 있어서 제약이 발생하게 되며, 본 발명의 실시예에 따르면 상기와 같은 제약을 극복하고 다수의 매크로 블록들이 병렬하게 처리될 수 있도록 한다. 이에 따른 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 장치(100)의 구체적인 동작을 설명하면 다음과 같다. Due to the above reason, due to the data encoding / decoding characteristic of referring to adjacent macro blocks or previous macro blocks, a limitation occurs in parallel processing of macro blocks included in the same frame. According to an embodiment of the present invention, It overcomes the same limitations and allows multiple macro blocks to be processed in parallel. Accordingly, a detailed operation of the video encoding / decoding apparatus 100 according to an embodiment of the present invention will be described.

도 6은 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 장치의 데이터 병렬 처리의 일예를 나타내는 도면이다. 도 6에는 그 일예로서 복수의 매크로 블록(N 개의 row * M 개의 column에 해당하는 매크로 블록들)을 포함하는 프레임이 도시된다. 각각의 매크로 블록에 표시된 부호 "e"는 처리 동작이 완료된 매크로 블록을 나타내며, 매크로 블록에 표시된 부호 "p"는 현재 병렬적으로 처리되고 있는 매크 로 블록을 나타낸다. 6 is a diagram illustrating an example of data parallel processing of a video encoding / decoding apparatus according to an embodiment of the present invention. 6 illustrates a frame including a plurality of macro blocks (macro blocks corresponding to N rows * M columns). The symbol "e" indicated in each macro block represents a macro block in which a processing operation is completed, and the symbol "p" indicated in a macro block represents a macro block currently being processed in parallel.

도 6에 도시된 바와 같이, 프레임의 좌측 상단에 배치된 매크로 블록으로부터 우측 하단에 배치된 매크로 블록으로 데이터를 처리하는 경우, 소정의 매크로 블록을 처리함에 있어서 해당 매크로 블록의 상부에 인접하는 세 개의 매크로 블록들과 좌측에 인접하는 하나의 매크로 블록이 해당 매크로 블록의 처리에 참조된다. 일예로서, 도 6에 도시된 매크로 블록에서, 매크로 블록 "A"를 처리하는 경우 이에 인접하는 매크로 블록들 "B", "C", "D" 및 "E"가 상기 매크로 블록 "A"의 처리에 참조된다.As shown in FIG. 6, when data is processed from a macroblock disposed at the upper left of a frame to a macroblock disposed at the lower right, three adjacent to the upper part of the macroblock in processing a predetermined macroblock. Macro blocks and one macro block adjacent to the left side are referred to the processing of the macro block. As an example, in the macro block shown in FIG. 6, macro blocks "B", "C", "D", and "E" adjacent to the macro block "A" when processing the macro block "A" are defined by the macro block "A". Reference to processing.

본 발명의 일실시예에 따르면, 하나의 프레임에 속하는 다수의 매크로 블록들 중 적어도 두 개의 매크로 블록이 동시에 병렬 처리된다. 해당 매크로 블록의 상부 및 좌측에 인접하는 매크로 블록들의 처리 결과가 해당 매크로 블록의 처리에 참조되므로, 바람직하게는 도 6에 도시된 바와 같이 적어도 하나의 칼럼 간격을 가지는 매크로 블록들이 동시에 병렬 처리되도록 한다. 다시 말하면, 적어도 두 개의 로우(row)에 배치된 매크로 블록들이 동시에 병렬 처리되도록 하며, 또한 상기 병렬 처리되는 매크로 블록들은 적어도 하나의 칼럼(column)에 대응하는 간격을 갖도록 한다. 이에 따라 두 개 이상의 매크로 블록들을 병렬하게 처리함에 있어서, 인접한 매크로 블록들이 처리된 후에 해당 매크로 블록의 처리가 수행되므로, 인접한 매크로 블록들의 중간 처리 결과를 적절하게 참조할 수 있다.According to an embodiment of the present invention, at least two macroblocks of a plurality of macroblocks belonging to one frame are simultaneously processed in parallel. Since the processing results of the macroblocks adjacent to the upper and left side of the macroblock are referred to the processing of the macroblock, macroblocks having at least one column interval as shown in FIG. 6 are preferably simultaneously processed in parallel. . In other words, macro blocks arranged in at least two rows are simultaneously processed in parallel, and the macro blocks to be processed in parallel have an interval corresponding to at least one column. Accordingly, in processing two or more macroblocks in parallel, processing of the macroblock is performed after the adjacent macroblocks are processed, so that intermediate processing results of the adjacent macroblocks can be appropriately referred to.

도 6에 도시된 매크로 블록 단위의 병렬 처리방식은 본 발명의 일예에 따른 것으로서, 이외에도 다양한 병렬 처리 방식이 가능하다. 일예로서, 병렬 처리되는 매크로 블록들이 서로 적어도 두 개 이상의 칼럼(column) 간격을 두고 위치할 수도 있다. 또한 프레임에 구비되는 모든 로우(row)의 매크로 블록들이 병렬하게 처리되는 것으로 도시되었으나, 적어도 하나의 로우(row) 간격을 갖는 매크로 블록들이 병렬하게 처리될 수도 있다. 이 경우 도 2에 도시된 바와 같은 데이터 처리부(120)에 구비되는 매크로 블록 처리부의 개수가 감소될 수 있다.The parallel processing method in units of macro blocks illustrated in FIG. 6 is one example of the present invention, and various parallel processing methods are possible. As an example, macro blocks that are processed in parallel may be located at least two or more columns apart from each other. In addition, although all row macro blocks provided in the frame are shown to be processed in parallel, macro blocks having at least one row interval may be processed in parallel. In this case, the number of macroblock processing units included in the data processing unit 120 as shown in FIG. 2 may be reduced.

도 6에 도시된 바와 같이 매크로 블록이 처리되는 경우, 매크로 블록의 처리 순서는 도 6에 도시된 순서와 같이 이루어질 수 있다. 데이터 처리부(120)에 구비되는 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N) 각각으로, 프레임에 구비되는 N 개의 로우(row)의 가장 왼쪽에 배치되는 매크로 블록들 각각이 할당된다. 제1 매크로블록 처리부(120_1)는 첫 번째 로우(row)의 제1 매크로 블록을 처리하고, 매크로 블록을 처리하였다는 상태 정보를 처리 상태 관리부(150)로 제공한다. 제1 매크로블록 처리부(120_1)는 이후 첫 번째 로우(row)의 제2 매크로 블록을 처리하며, 또한 상기 제2 매크로 블록의 처리를 완료한 경우 이에 대한 정보를 처리 상태 관리부(150)로 제공한다.When the macro block is processed as shown in FIG. 6, the processing order of the macro block may be performed as shown in FIG. 6. Each of the first to Nth macroblock processing units 120_1 to 120_N included in the data processing unit 120 is assigned to each of the macro blocks disposed at the leftmost side of the N rows provided in the frame. The first macroblock processor 120_1 processes the first macroblock of the first row and provides the processing state manager 150 with status information indicating that the macroblock has been processed. The first macroblock processor 120_1 then processes the second macroblock of the first row, and provides information about the second macroblock to the processing state manager 150 when the processing of the second macroblock is completed. .

제1 매크로블록 처리부(120_1)는 이후 첫 번째 로우(row)의 제3 매크로 블록을 처리한다. 또한 제2 매크로블록 처리부(120_2)는 처리 상태 관리부(150)의 정보를 참조하여, 제1 매크로블록 처리부(120_1)가 제2 매크로 블록을 처리하였는지를 확인한다. 상기 제2 매크로 블록을 처리한 것으로 확인되면, 제2 매크로블록 처리부(120_2)는 두 번째 로우(row)의 제1 매크로 블록의 처리동작을 수행한다. 도 7에 도시된 바와 같이 제1 매크로블록 처리부(120_1)의 제3 매크로 블록 처리동작과 제 2 매크로블록 처리부(120_2)의 제1 매크로 블록의 처리동작은 병렬하게 수행된다. 또한 상기한 바와 유사하게, 제1 매크로블록 처리부(120_1)의 제5 매크로 블록 처리동작과 제2 매크로블록 처리부(120_2)의 제3 매크로 블록의 처리동작, 및 제3 매크로블록 처리부(120_3)의 제1 매크로 블록의 처리동작은 병렬하게 수행된다. 상기한 바와 같은 동작에 따라, 도 6에 도시된 예에서 데이터 처리부(120)는 최대 N 개의 매크로 블록들을 동시에 병렬하게 처리한다.The first macroblock processor 120_1 then processes the third macroblock of the first row. In addition, the second macroblock processing unit 120_2 refers to the information of the processing state manager 150 to determine whether the first macroblock processing unit 120_1 has processed the second macroblock. When it is determined that the second macro block has been processed, the second macro block processor 120_2 performs a processing operation of the first macro block of the second row. As illustrated in FIG. 7, the third macroblock processing operation of the first macroblock processing unit 120_1 and the first macroblock processing operation of the second macroblock processing unit 120_2 are performed in parallel. In addition, as described above, the fifth macro block processing operation of the first macroblock processing unit 120_1, the processing operation of the third macroblock of the second macroblock processing unit 120_2, and the third macroblock processing unit 120_3 may be performed. Processing operations of the first macro block are performed in parallel. According to the operation as described above, in the example illustrated in FIG. 6, the data processor 120 processes up to N macroblocks in parallel at the same time.

한편, 상술하였던 바와 같이, 해당 매크로 블록들을 처리함에 있어서 바로 인접한 매크로 블록들만 참조하는 것이 아니라, 매크로 블록 어드레스 순서(또는 그 역순)를 따라 매크로 블록들의 중간 처리 결과를 참조할 필요가 있다. 상기와 같은 참조 동작을 적절하게 수행하기 위하여, 본 발명의 일실시예에 따르면 데이터 인코딩/디코딩 과정은 두 단계에 걸쳐 수행된다.On the other hand, as described above, in processing the macroblocks, it is necessary to refer not only to the immediately adjacent macroblocks, but also to the intermediate processing result of the macroblocks according to the macroblock address order (or vice versa). In order to properly perform the above reference operation, according to an embodiment of the present invention, the data encoding / decoding process is performed in two steps.

첫 번째 단계에서는, 각각의 매크로 블록에 대해 인코딩 동작을 수행하는 경우, 앞서 6 개의 과정으로 이루어질 수 있는 인코딩 과정들 중 첫 번째에서 네 번째 과정이 수행될 수 있다. 즉, 첫 번째 단계에서 각각의 매크로 블록에 대해 모드 결정, 매크로 블록 단위의 예측(prediction) 데이터 생성, 변환 과정 및 재구성(Reconstruction) 과정 등이 수행될 수 있다. 상기와 같은 첫 번째 단계에서 생성된 중간 처리 결과는 이후에 수행되는 두 번째 단계에서 참조되어진다. 한편 각각의 매크로 블록에 대해 디코딩 동작을 수행하는 경우, 앞서 4 개의 과정으로 이루어질 수 있는 디코딩 과정들 중 첫 번째 과정이 수행될 수 있다. 즉, 첫 번째 단계에서 각각의 매크로 블록에 대해 Parsing 과정이 수행될 수 있다. In the first step, when performing the encoding operation for each macro block, the first to the fourth of the encoding processes that can be made of the above six processes may be performed. That is, in the first step, a mode decision, generation of prediction data in units of macro blocks, a conversion process, and a reconstruction process may be performed for each macro block. The intermediate processing result generated in the first step as described above is referred to in the second step performed later. On the other hand, when performing a decoding operation for each macro block, the first of the decoding process that can be made of the above four processes may be performed. That is, in the first step, a parsing process may be performed for each macro block.

두 번째 단계에서는, 각각의 매크로 블록에 대해 인코딩 동작을 수행하는 경우, 앞서 6 개의 과정으로 이루어질 수 있는 인코딩 과정들 중 다섯 번째에서 여섯 번째 과정이 수행될 수 있다. 즉, 상기 두 번째 단계에서 각각의 매크로 블록에 대해 엔트로피 코딩 과정 및 디블록킹 필터링 과정이 수행될 수 있다. 한편, 각각의 매크로 블록에 대해 디코딩 동작을 수행하는 경우, 앞서 4 개의 과정으로 이루어질 수 있는 디코딩 과정들 중 두 번째 내지 네 번째 과정이 수행될 수 있다. 즉, 상기 두 번째 단계에서 매크로 블록 단위의 예측(prediction) 데이터 생성, 구성화(Cconstruction) 과정 및 디블록킹 필터링 과정 등이 수행될 수 있다. 상기 첫 번째 단계에서 생성된 중간 처리 결과를 이용하여, 두 번째 단계에서 스킵 개수 플래그, 양자화 차분값 및 매크로 블록 양자화값 등이 계산될 수 있다. In the second step, when performing an encoding operation for each macro block, fifth to sixth processes of encoding processes that may be performed in six processes may be performed. That is, in the second step, an entropy coding process and a deblocking filtering process may be performed on each macro block. On the other hand, when performing a decoding operation for each macro block, the second to fourth of the decoding process that can be made of the above four processes may be performed. That is, in the second step, prediction data generation, construction and deblocking filtering may be performed in units of macro blocks. In the second step, a skip count flag, a quantization difference value, a macroblock quantization value, and the like may be calculated using the intermediate processing result generated in the first step.

상기와 같은 제1 단계 및 제2 단계를 포함하는 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 동작을 도 2를 참조하여 설명하면 다음과 같다. A video encoding / decoding operation according to an embodiment of the present invention including the first and second steps as described above will be described with reference to FIG. 2.

도 2의 동영상 인코딩/디코딩 장치(100)가 인코딩 동작을 수행하는 경우, 입출력부(110)는 인코딩 수행될 프레임 데이터를 입력받으며, 입력된 프레임 데이터를 메모리부(160)에 저장한다. 상기 입력된 프레임 데이터는 중간 처리결과 저장부(130)에 저장되어도 무방하다. When the video encoding / decoding apparatus 100 of FIG. 2 performs an encoding operation, the input / output unit 110 receives frame data to be encoded and stores the input frame data in the memory unit 160. The input frame data may be stored in the intermediate processing result storage unit 130.

상기 프레임 데이터에 대한 인코딩 동작을 수행함에 앞서, 처리 상태 관리부(150)는 내부에 저장된 처리 결과 정보를 리셋하며, 작업 제어부(140)는 장치 내에 저장된 프레임 데이터를 데이터 처리부(120)에 할당한다. 데이터 처리부(120)는 다수 개의 매크로블록 처리부를 포함하며, 프레임 데이터는 상술한 바와 같이 매크 로 블록 단위별로 매크로블록 처리부에 할당될 수 있다. 도 6에 도시된 바와 같이 프레임 데이터가 N 개의 row에 해당하는 매크로 블록들을 구비하고, 또한 데이터 처리부(120)에 구비되는 각각의 매크로블록 처리부가 하나의 row에 해당하는 매크로 블록들을 순차적으로 처리하는 경우, N 개의 row 각각의 가장 왼쪽에 위치하는 N 개의 매크로 블록들이 상기 N 개의 매크로블록 처리부(120_1 내지 120_N) 각각에 할당될 수 있다. Prior to performing the encoding operation on the frame data, the processing state manager 150 resets the processing result information stored therein, and the task controller 140 allocates the frame data stored in the apparatus to the data processor 120. The data processor 120 may include a plurality of macroblock processors, and the frame data may be allocated to the macroblock processor for each macroblock unit as described above. As shown in FIG. 6, frame data includes macroblocks corresponding to N rows, and each macroblock processor included in the data processor 120 sequentially processes macroblocks corresponding to one row. In this case, N macroblocks located at the leftmost side of each of the N rows may be allocated to each of the N macroblock processing units 120_1 to 120_N.

상기와 같은 할당이 수행되고 나면, 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)는 각각 할당된 매크로 블록들에 대한 인코딩 동작을 수행한다. 바람직하게는, 각각의 매크로 블록 처리부는 처리 상태 관리부(150)의 정보를 이용하여 다른 매크로 블록 처리부의 데이터 처리 상태를 참조한다. 또한 각각의 매크로 블록 처리부는 해당 매크로 블록에 대한 전체 인코딩 동작을 연속적으로 수행하는 것이 아니라, 제1 및 제2 단계를 포함하는 인코딩 동작 중 제1 단계만을 수행한다. 앞서 언급한 바와 같이, 상기 인코딩 동작의 제1 단계는, 모드 결정, 크로 블록 단위의 예측(prediction) 데이터 생성, 변환 과정 및 재구성(Reconstruction) 과정 등을 포함할 수 있다. 상기 제1 단계를 통하여 생성된 중간 처리 결과는 중간 처리결과 저장부(130)에 저장된다. After the above allocation is performed, the first to N-th macroblock processing units 120_1 to 120_N perform encoding operations on the allocated macroblocks, respectively. Preferably, each macro block processing unit refers to the data processing state of another macro block processing unit by using the information of the processing state management unit 150. In addition, each macro block processor does not continuously perform the entire encoding operation on the macro block, but performs only the first step of the encoding operation including the first and second steps. As mentioned above, the first step of the encoding operation may include mode determination, generation of prediction data in units of blocks, conversion, reconstruction, and the like. The intermediate processing result generated through the first step is stored in the intermediate processing result storage unit 130.

상기와 같은 동작에 따라, 동일한 프레임에 구비되는 적어도 두 개의 매크로 블록들이 동시에 병렬 처리되며, 또한 프레임 전체에 구비되는 매크로 블록들에 대해 인코딩 동작 중 제1 단계가 수행된다. 상기 전체 매크로 블록에 대하여 제1 단계 수행이 완료되고 나면, 제2 단계를 수행하기 위하여 상기한 동작이 반복된다. According to the above operation, at least two macro blocks included in the same frame are simultaneously processed in parallel, and a first step of the encoding operation is performed on the macro blocks provided in the entire frame. After the execution of the first step is completed for the entire macroblock, the above operation is repeated to perform the second step.

즉, 전체 매크로 블록에 대하여 제1 단계 수행이 완료되고 나면, 처리 상태 관리부(150)는 내부에 저장된 처리 결과 정보를 다시 리셋하며, 작업 제어부(140)는 제2 단계의 처리를 수행할 데이터를 데이터 처리부(120)에 할당한다. 일예로서, 중간 처리결과 저장부(130)에 저장된 각각의 매크로 블록의 제1 단계의 결과가 상기 데이터 처리부(120)에 할당될 수 있다. That is, after the execution of the first step is completed for the entire macroblock, the processing state manager 150 resets the processing result information stored therein, and the job controller 140 supplies data to perform the processing of the second step. It is assigned to the data processor 120. As an example, the result of the first step of each macro block stored in the intermediate processing result storage unit 130 may be allocated to the data processing unit 120.

상기와 같은 할당이 완료되면, 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)는 각각 인코딩 동작의 제2 단계를 수행한다. 전체 매크로 블록들의 제1 단계의 중간 결과가 중간 처리결과 저장부(130)에 저장되어 있으므로, 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)는 각각 제2 단계를 수행함에 있어서 전체 매크로 블록의 제1 단계의 처리 결과를 이용할 수 있다. 제1 내지 제N 매크로블록 처리부(120_1 내지 120_N)가 제2 단계를 수행함에 있어서, 그 데이터 병렬 처리 동작은 상술한 바와 같이 수행될 수 있다. 즉, 서로 다른 로우(row)에 배치되고 또한 적어도 하나의 칼럼(column) 간격을 갖는 적어도 두 개의 매크로 블록들을 병렬하게 처리할 수 있다.When the above allocation is completed, the first to N-th macroblock processing units 120_1 to 120_N each perform the second step of the encoding operation. Since the intermediate result of the first step of the entire macroblocks is stored in the intermediate processing result storage unit 130, the first to Nth macroblock processing units 120_1 to 120_N each perform the second step. The processing result of the first step can be used. When the first to N-th macroblock processing units 120_1 to 120_N perform the second step, the data parallel processing operation may be performed as described above. That is, at least two macroblocks arranged in different rows and having at least one column spacing may be processed in parallel.

상기와 같은 인코딩 동작의 제2 단계가 수행 완료되면, 입출력부(110)는 중간 처리결과 저장부(130)로부터 처리 완료된 비트 스트림들을 불러들인 후 이들을 결합하여 해당 프레임에 대응되는 비트 스트림으로서 외부로 제공할 수 있다. 또한 상기 입출력부(110)는 해당 프레임에 대한 처리 결과를 장치(100) 내의 메모리부(160) 또는 기타 다른 저장수단에 저장하며, 상기 저장된 처리 결과는 이후의 프레임의 처리동작시 기준 프레임(reference frame)으로 사용될 수 있다. When the second step of the encoding operation is completed, the input / output unit 110 retrieves the processed bit streams from the intermediate processing result storage unit 130 and combines them to the outside as a bit stream corresponding to the corresponding frame. Can provide. In addition, the input / output unit 110 stores the processing result of the corresponding frame in the memory unit 160 or other storage means in the apparatus 100, and the stored processing result is a reference frame in the processing operation of a subsequent frame. frame).

한편, 동영상 인코딩/디코딩 장치(100)가 디코딩 동작을 수행하는 일예는 다음과 같다. 먼저, 입출력부(110)는 디코딩 수행될 하나의 프레임에 해당하는 비트 스트림 데이터를 입력받는다. 상기 디코딩 동작은 두 개의 단계로 이루어질 수 있으며, 바람직하게는 제1 단계에서 Parsing 과정이 수행되고, 제2 단계에서 매크로 블록 단위의 예측(prediction) 데이터 생성과정, 구성화(Cconstruction) 과정, 및 디블록킹 필터링 과정 등이 수행될 수 있다. 일예로서, 입출력부(110)가 상기 제1 단계에 해당하는 Parsing 과정이 수행할 수 있으며, 상기 Parsing 과정이 수행된 결과는 중간 처리결과 저장부(130)에 저장된다.Meanwhile, an example in which the video encoding / decoding device 100 performs a decoding operation is as follows. First, the input / output unit 110 receives bit stream data corresponding to one frame to be decoded. The decoding operation may be performed in two steps. Preferably, a parsing process is performed in a first step, and a prediction data generation process, a construction process, and a decode in macroblock units are performed in a second step. A blocking filtering process may be performed. For example, the input / output unit 110 may perform a parsing process corresponding to the first step, and the result of the parsing process is stored in the intermediate processing result storage unit 130.

이후 처리 상태 관리부(150)는 내부에 저장된 처리 결과 정보를 리셋하며, 작업 제어부(140)는 장치 내에 저장된 프레임 데이터를 데이터 처리부(120)에 할당한다. 상기 할당 과정은 인코딩 과정에서 수행된 방식과 유사 또는 동일하게 수행될 수 있다. 데이터 처리부(120)에 대한 데이터 할당 동작이 완료되면, 데이터 처리부(120)에 구비되는 N 개의 매크로블록 처리부(120_1 내지 120_N) 각각은 할당된 데이터에 대한 디코딩 동작을 수행한다. 바람직하게는 상기 디코딩 동작 중 제2 단계에 대응하는 과정들이 N 개의 매크로블록 처리부(120_1 내지 120_N)에서 수행될 수 있다. Thereafter, the processing state manager 150 resets the processing result information stored therein, and the job controller 140 allocates the frame data stored in the apparatus to the data processor 120. The allocation process may be performed similarly or identically to the method performed in the encoding process. When the data allocation operation for the data processing unit 120 is completed, each of the N macroblock processing units 120_1 to 120_N included in the data processing unit 120 performs a decoding operation on the allocated data. Preferably, processes corresponding to the second step of the decoding operation may be performed by the N macroblock processing units 120_1 to 120_N.

또한 디코딩 동작시, N 개의 매크로블록 처리부(120_1 내지 120_N)가 매크로 블록 단위로 데이터를 병렬처리하는 동작 또한 상기 인코딩 과정에서와 유사 또는 동일하게 수행된다. 즉, 매크로블록 처리부 각각은 그 데이터 처리 상태에 관한 정보를 처리 상태 관리부(150)로 제공한다. 또한 매크로블록 처리부 각각은 처리 상 태 관리부(150)의 정보를 이용하여 다른 매크로 블록 처리부의 데이터 처리 상태를 참조한다. 각 과정에서의 생성된 중간 처리 결과는 중간 처리결과 저장부(130)에 저장된다. In addition, during the decoding operation, the N macroblock processing units 120_1 to 120_N process the data in parallel in units of macroblocks in the same manner as in the encoding process. That is, each of the macroblock processing units provides the processing state manager 150 with information about the data processing state. In addition, each of the macroblock processing units refers to data processing states of other macroblock processing units using information of the processing state management unit 150. The intermediate processing result generated in each process is stored in the intermediate processing result storage unit 130.

프레임 전체에 대응하는 매크로 블록들에 대해 상기 디코딩 동작의 제2 단계가 완료되고 나면, 입출력부(110)는 중간 처리결과 저장부(130)에 저장된 처리 결과를 이용하여 디코딩된 프레임 데이터를 도출하고 이를 출력한다. 또한 상기 입출력부(110)는 중간 처리결과 저장부(130)에 저장된 처리 결과를 이용하여 기준 프레임(reference frame)을 도출하고, 이를 장치(100) 내부에 구비되는 메모리부(160) 또는 기타 다른 저장수단에 저장할 수 있다. After the second step of the decoding operation is completed for the macro blocks corresponding to the entire frame, the input / output unit 110 derives the decoded frame data using the processing result stored in the intermediate processing result storage unit 130. Print this out. In addition, the input / output unit 110 derives a reference frame by using the processing result stored in the intermediate processing result storage unit 130, and the memory unit 160 or other devices provided in the device 100. Can be stored in the storage means.

본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.Although the present invention has been described with reference to the embodiments shown in the drawings, this is merely exemplary, and it will be understood by those skilled in the art that various modifications and equivalent other embodiments are possible. Therefore, the true technical protection scope of the present invention will be defined by the technical spirit of the appended claims.

도 1은 일반적인 동영상 데이터 병렬 처리 동작을 나타내는 도면이다.1 is a diagram illustrating a general video data parallel processing operation.

도 2는 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 장치를 나타내는 블록도이다.2 is a block diagram illustrating a video encoding / decoding apparatus according to an embodiment of the present invention.

도 3은 인접한 로우들에 배치되는 매크로 블록들을 처리하는 일예를 나타내는 도면이다. 3 is a diagram illustrating an example of processing macro blocks disposed in adjacent rows.

도 4는 동영상 인코딩 과정을 나타내는 플로우차트이다. 4 is a flowchart illustrating a video encoding process.

도 5는 동영상 디코딩 과정을 나타내는 플로우차트이다. 5 is a flowchart illustrating a video decoding process.

도 6은 본 발명의 일실시예에 따른 동영상 인코딩/디코딩 장치의 데이터 병렬 처리의 일예를 나타내는 도면이다. 6 is a diagram illustrating an example of data parallel processing of a video encoding / decoding apparatus according to an embodiment of the present invention.

* 도면의 주요부분에 대한 부호의 설명 *  Explanation of symbols on the main parts of the drawings

100: 동영상 인코딩/디코딩 장치100: video encoding / decoding device

110: 입출력부110: input and output unit

120: 데이터 처리부120: data processing unit

130: 중간 처리 결과 저장부130: intermediate processing result storage unit

140: 작업 제어부140: job control unit

150: 처리 상태 관리부150: processing status management unit

160: 메모리부160: memory unit

Claims (13)

외부로부터 인코딩 또는 디코딩 처리를 수행할 동영상 데이터를 수신하는 입출력부;An input / output unit that receives moving image data to be encoded or decoded from the outside; 각각 할당되는 매크로 블록의 데이터를 처리하는 제1 내지 제N 매크로블록 처리부(단, N은 2 이상의 정수)를 구비하며, 상기 수신된 동영상 데이터에 대하여 동일 프레임 내의 적어도 두 개의 매크로 블록들의 데이터를 병렬하게 처리하는 데이터 처리부; 및First to N-th macroblock processing units (where N is an integer of 2 or more), each of which processes data of a macroblock to be allocated, and parallelizes data of at least two macroblocks in the same frame with respect to the received video data; A data processing unit for processing the data; And 상기 동영상 데이터를 매크로 블록 단위로 상기 제1 내지 제N 매크로블록 처리부에 할당하는 것을 제어하는 작업 제어부를 구비하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.And a task controller for controlling allocation of the video data to the first to Nth macroblock processing units in macroblock units. 제1항에 있어서, The method of claim 1, 상기 프레임은 a 개의 로우(row)와 b 개의 칼럼(column)을 갖는 매크로 블록들을 구비하고(단, a와 b는 2 이상의 정수), 상기 병렬하게 처리되는 매크로 블록들은 서로 적어도 하나의 칼럼(column) 간격을 갖는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.The frame has macro blocks with a row and b columns (where a and b are integers of 2 or more), and the macro blocks processed in parallel are at least one column with each other. Video encoding / decoding device, characterized in that it has an interval. 제2항에 있어서, The method of claim 2, 상기 데이터 처리부에 구비되는 매크로블록 처리부의 개수와 상기 프레임의 로우(row)의 개수는 서로 동일하며(N=a),The number of macroblock processing units and the number of rows of the frame included in the data processing unit are the same (N = a), 상기 제1 내지 제N 매크로블록 처리부 각각은, 상기 프레임의 어느 하나의 로우(row)에 배치되는 매크로 블록들을 순차적으로 처리하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.Each of the first to Nth macroblock processing units sequentially processes macroblocks arranged in any one row of the frame. 제3항에 있어서, The method of claim 3, 제(N-1) 매크로블록 처리부는, (N-1) 번째 로우(row)에 배치되는 매크로 블록들을 순차적으로 처리하고, 제N 매크로블록 처리부는, N 번째 로우(row)에 배치되는 매크로 블록들을 순차적으로 처리하며,The (N-1) macroblock processing unit sequentially processes the macroblocks arranged in the (N-1) th row, and the Nth macroblock processing unit performs the macroblock disposed in the Nth row. Process them sequentially, 상기 (N-1) 번째 로우(row)의 i 번째 매크로 블록(단, i는 b 이하의 정수)과 상기 N 번째 로우(row)의 (i-2) 번째 매크로 블록은 서로 병렬하게 처리되는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.I-th macroblock of the (N-1) th row (where i is an integer less than or equal to b) and (i-2) th macroblock of the Nth row are processed in parallel with each other. Video encoding / decoding device. 제1항에 있어서, The method of claim 1, 상기 제1 내지 제N 매크로블록 처리부 각각으로부터 매크로 블록의 처리 상태에 관한 정보를 수신하고 이를 저장하는 처리 상태 관리부; 및A processing state manager which receives and stores information on the processing state of the macroblock from each of the first to Nth macroblock processing units; And 상기 제1 내지 제N 매크로블록 처리부 각각으로부터 매크로 블록의 처리 동작에 따른 중간 처리 결과를 수신하고 이를 저장하는 중간 처리결과 저장부를 더 구비하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.And an intermediate processing result storage unit for receiving and storing intermediate processing results according to processing operations of the macro blocks from each of the first to Nth macroblock processing units. 제5항에 있어서, The method of claim 5, 상기 중간 처리결과 저장부에 저장된 각각의 매크로 블록들의 처리 결과를 이용하여, 상기 프레임에 대한 처리 결과를 기준 프레임 데이터(reference frame data)로서 저장하는 메모리부를 더 구비하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.And a memory unit which stores the processing result of the frame as reference frame data by using the processing result of each macro block stored in the intermediate processing result storage unit. Device. 제5항에 있어서, The method of claim 5, 상기 인코딩 동작은 적어도 하나의 과정을 포함하는 제1 단계와, 다른 적어도 하나의 과정을 포함하는 제2 단계를 포함하고,The encoding operation includes a first step including at least one step and a second step including another at least one step, 인코딩 동작시, In the encoding operation, 상기 데이터 처리부는, 상기 프레임의 전체 매크로 블록에 대하여 상기 제1 단계에 포함되는 과정들을 수행하고, 상기 제1 단계에서 처리된 중간 결과들을 상기 중간 처리결과 저장부로 제공하며,The data processing unit performs processes included in the first step for all macro blocks of the frame, and provides intermediate results processed in the first step to the intermediate processing result storage unit. 상기 인코딩 동작의 제1 단계를 수행하고 난 후 상기 프레임의 전체 매크로 블록에 대하여 상기 제2 단계에 포함되는 과정들을 수행하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.And performing the steps included in the second step on all macroblocks of the frame after performing the first step of the encoding operation. 제7항에 있어서, The method of claim 7, wherein 상기 인코딩 동작의 제1 단계는, 모드 결정, 매크로 블록 단위의 예측(prediction) 데이터 생성, 변환(Transformation) 과정 및 재구 성(Reconstruction) 과정을 포함하고,The first step of the encoding operation may include mode determination, prediction data generation in units of macroblocks, transformation, and reconstruction. 상기 인코딩 동작의 제2 단계는, 엔트로피 코딩(entropy coding) 과정 및 디블록킹 필터링(deblocking filtering) 과정을 포함하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.The second step of the encoding operation includes an entropy coding process and a deblocking filtering process. 제5항에 있어서, The method of claim 5, 상기 디코딩 동작은 적어도 하나의 과정을 포함하는 제1 단계와, 다른 적어도 하나의 과정을 포함하는 제2 단계를 포함하고,The decoding operation includes a first step including at least one step and a second step including another at least one step, 디코딩 동작시, In decoding operation, 상기 입출력부는, 상기 프레임의 전체 매크로 블록에 대하여 상기 제1 단계에 포함되는 과정들을 수행하고, 상기 제1 단계에서 처리된 중간 결과들을 상기 중간 처리결과 저장부로 제공하며,The input / output unit performs processes included in the first step with respect to all macroblocks of the frame, and provides intermediate results processed in the first step to the intermediate processing result storage unit. 상기 데이터 처리부는, 상기 제1 단계의 완료 이후 상기 프레임의 전체 매크로 블록에 대하여 상기 제2 단계에 포함되는 과정들을 수행하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.And the data processor performs the processes included in the second step on the entire macroblock of the frame after completion of the first step. 제9항에 있어서, 10. The method of claim 9, 상기 디코딩 동작의 제1 단계는, 파싱(Parsing) 과정을 포함하고,The first step of the decoding operation includes a parsing process, 상기 디코딩 동작의 제2 단계는, 매크로 블록 단위의 예측(prediction) 데이터 생성, 구성화(Cconstruction) 과정 및 디블록킹 필터링(deblocking filtering) 과정을 포함하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치.The second step of the decoding operation may include the generation of macroblock prediction data, a construction process, and a deblocking filtering process. 동영상 데이터를 인코딩/디코딩하는 장치를 구동하는 방법에 있어서,In the method of driving an apparatus for encoding / decoding video data, 외부로부터 인코딩 또는 디코딩 처리를 수행할 동영상 데이터를 수신하는 단계;Receiving moving image data to perform encoding or decoding processing from the outside; 상기 장치에 구비되는 제1 내지 제N 매크로블록 처리부 각각에 상기 동영상 데이터를 매크로 블록 단위로 할당하는 단계;Allocating the moving image data in macroblock units to each of the first to Nth macroblock processing units included in the apparatus; 상기 각각 할당된 매크로 블록 단위의 데이터에 대하여, 처리 상태에 따라 동일 프레임 내의 적어도 두 개의 매크로 블록들의 데이터를 병렬하게 처리하는 단계; Processing the data of at least two macroblocks in the same frame in parallel with respect to the data of each allocated macroblock unit according to a processing state; 상기 매크로 블록의 처리 동작에 따른 중간 처리 결과를 저장하는 단계; 및Storing an intermediate processing result according to a processing operation of the macro block; And 상기 중간 처리 결과를 참조하여 최종 인코딩/디코딩된 데이터를 생성하는 단계를 구비하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치의 구동방법.And generating final encoded / decoded data with reference to the intermediate processing result. 제11항에 있어서, The method of claim 11, 상기 인코딩/디코딩 동작은, 적어도 하나의 과정을 포함하는 제1 단계와, 다른 적어도 하나의 과정을 포함하는 제2 단계를 포함하고,The encoding / decoding operation includes a first step including at least one step and a second step including another at least one step, 상기 프레임의 전체 매크로 블록에 대하여 상기 제1 단계에 포함되는 과정들을 수행하고, 상기 제1 단계에서 처리된 중간 결과들을 상기 중간 처리결과 저장부로 제공하며, 상기 제1 단계 및 상기 중간 결과 저장 이후 상기 프레임의 전체 매 크로 블록에 대하여 상기 제2 단계에 포함되는 과정들을 수행하는 것을 특징으로 하는 동영상 인코딩/디코딩 장치의 구동방법.Performing the processes included in the first step with respect to the entire macroblock of the frame, providing the intermediate results processed in the first step to the intermediate processing result storage unit, and after storing the first step and the intermediate results A method of driving a video encoding / decoding apparatus, comprising performing the processes included in the second step with respect to an entire macroblock of a frame. 제11항에 기재된 인코딩/디코딩 방법이 수행되도록 하는 프로그램을 저장한 컴퓨터로 판독 가능한 저장매체. A computer-readable storage medium storing a program for performing the encoding / decoding method according to claim 11.
KR1020090042546A 2009-05-15 2009-05-15 Device for encoding/decoding video data capable of processing parallel macroblock-based data KR100999505B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090042546A KR100999505B1 (en) 2009-05-15 2009-05-15 Device for encoding/decoding video data capable of processing parallel macroblock-based data

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090042546A KR100999505B1 (en) 2009-05-15 2009-05-15 Device for encoding/decoding video data capable of processing parallel macroblock-based data

Publications (2)

Publication Number Publication Date
KR20100123363A true KR20100123363A (en) 2010-11-24
KR100999505B1 KR100999505B1 (en) 2010-12-09

Family

ID=43408055

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090042546A KR100999505B1 (en) 2009-05-15 2009-05-15 Device for encoding/decoding video data capable of processing parallel macroblock-based data

Country Status (1)

Country Link
KR (1) KR100999505B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116389762A (en) * 2023-06-05 2023-07-04 长沙千视电子科技有限公司 Video data SpeedHQ coding method and device

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
SG10201608508QA (en) * 2012-01-20 2016-12-29 Samsung Electronics Co Ltd Video Encoding Method And Apparatus And Video Decoding Method And Apparatus Using Unified Syntax For Parallel Processing
KR102459734B1 (en) * 2017-08-30 2022-10-28 삼성전자 주식회사 Video processing apparatus and the control method thereof

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4453518B2 (en) 2004-10-29 2010-04-21 ソニー株式会社 Encoding and decoding apparatus and encoding and decoding method
JP4807320B2 (en) 2007-05-14 2011-11-02 ソニー株式会社 Decoding device, encoding device, decoding method, encoding method, and program for decoding and encoding video

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN116389762A (en) * 2023-06-05 2023-07-04 长沙千视电子科技有限公司 Video data SpeedHQ coding method and device
CN116389762B (en) * 2023-06-05 2023-08-15 长沙千视电子科技有限公司 Video data SpeedHQ coding method and device

Also Published As

Publication number Publication date
KR100999505B1 (en) 2010-12-09

Similar Documents

Publication Publication Date Title
CN110024392B (en) Low complexity symbol prediction for video coding
CA2760425C (en) Method and system for parallel encoding of a video
CN107277539B (en) Method and apparatus for reducing line cache in context adaptive entropy decoding
KR101184244B1 (en) Parallel batch decoding of video blocks
US10708585B2 (en) Codeword assignment for intra chroma mode signalling for HEVC
JP4647558B2 (en) Video encoding parallel processing method, video encoding device, video encoding program, and recording medium therefor
JP2013051741A (en) Coding/decoding apparatus for moving image using adaptive scan
JP2009544225A (en) Parallel processing unit for video compression
JP2006222968A (en) Method and device for coding video screen in inter-screen or in-screen mode
CN103975599A (en) Method, device, and program for coding and decoding of images
US20240223806A1 (en) Image decoding device, image decoding method, and program
KR100999505B1 (en) Device for encoding/decoding video data capable of processing parallel macroblock-based data
JP2008271127A (en) Coding apparatus
US9781439B2 (en) Combined parallel and pipelined video encoder
US9749650B2 (en) Scalable motion estimation with macroblock partitions of different shapes and sizes
JP2010141513A (en) Arithmetic unit and video image encoder
KR20160105203A (en) A multimedia codec, an application processor including the multimedia codec, and a method of operating the application processor
KR101172346B1 (en) Data processing device improving processing speed and operating method thereof
US20170257632A1 (en) Encoding method of image encoding device
JP2009141539A (en) Image processing apparatus, image processing method, program of image processing method, and recording medium for program of image processing method
JP2010050833A (en) Video coding device
JP2007208802A (en) Image encoding apparatus and image encoding method
US20140233635A1 (en) Sub-picture hierarchical qp coding
KR20170085382A (en) Complexity reduction method for an HEVC merge mode encoder
Kim et al. Prediction mode reordering and IDCT direction control for fast intra 8× 8 prediction

Legal Events

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

Payment date: 20131114

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20141106

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20151004

Year of fee payment: 6

FPAY Annual fee payment

Payment date: 20161004

Year of fee payment: 7

FPAY Annual fee payment

Payment date: 20171002

Year of fee payment: 8

FPAY Annual fee payment

Payment date: 20180923

Year of fee payment: 9

FPAY Annual fee payment

Payment date: 20191026

Year of fee payment: 10