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 PDFInfo
- 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
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/17—Methods 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/176—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/102—Methods 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/117—Filters, e.g. for pre-processing or post-processing
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
- H04N19/436—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation 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
Description
본 발명은 동영상 인코딩/디코딩 장치에 관한 것으로서, 자세하게는 매크로블록 기반의 데이터 병렬 처리를 수행하는 동영상 인코딩/디코딩 장치에 관한 것이다.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 /
상기와 같은 동영상 인코딩/디코딩 장치(100)에 구비되는 구성의 기능은 다음과 같다. 먼저, 동영상 인코딩/디코딩 장치(100)에 구비되는 구성들의 기능을 설명하며, 실제 데이터를 인코딩 또는 디코딩하는 실시예는 후술한다.The function of the configuration included in the video encoding /
상기 동영상 인코딩/디코딩 장치(100)에 구비되는 입출력부(110)는 인코딩될 프레임 데이터를 외부로부터 수신하거나, 또는 디코딩될 비트 스트림을 외부로부터 수신한다. 상기 입출력부(110)는, 수신된 프레임 데이터 또는 비트 스트림을 동영상 인코딩/디코딩 장치(100)에 구비되는 블록들로 제공하여 인코딩/디코딩 동작이 수행되도록 한다. 또한 수신된 프레임 데이터 또는 비트 스트림은 메모리부(160)에 일시 저장될 수 있다. The input /
상기 수신된 프레임 데이터 또는 비트 스트림은 데이터 처리부(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
작업 제어부(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
또한, 본 발명의 일실시예에 따르면, 데이터 처리부(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
데이터 처리부(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
중간 처리 결과 저장부(130)는 프레임 내의 모든 매크로 블록들의 각 처리 단계의 중간 처리 결과들을 저장한다. 중간 처리 결과 저장부(130)에 저장된 중간 처리 결과들은, 소정의 매크로 블록의 데이터를 처리하는 경우 이웃하는 또는 그 이전의 매크로 블록들의 데이터 처리 결과를 참조하기 위해 이용된다. 또한 후술하는 바와 같이 본 발명의 일실시예에 따른 데이터 인코딩/디코딩 동작시 상기 동작은 제1 및 제2 단계를 포함할 수 있으며, 제2 단계를 처리하기 위하여 중간 처리 결과 저장부(130)에 저장된 제1 단계의 중간 처리 결과가 참조될 수 있다. 또한 상기 중간 처리 결과 저장부(130)에 저장된 중간 처리 결과들은, 입출력부(110)에서 각각의 매크로 블록의 처리 결과를 결합하여 최종 처리 결과를 발생하기 위해 참조될 수도 있다. The intermediate processing
상기와 같이 구성될 수 있는 본 발명의 동영상 인코딩/디코딩 장치(100)의 구체적인 인코딩/디코딩 동작을 설명하기에 앞서, 일반적인 H.264 표준에서 매크로 블록 단위의 데이터 병렬 처리 동작의 제약을 먼저 개시하고, 상기 제약에도 불구하고 매크로 블록 단위로 데이터를 병렬 처리하는 본 발명의 동영상 인코딩/디코딩 장치(100)의 실시예를 설명한다. Before describing a specific encoding / decoding operation of the video encoding /
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 /
도 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
도 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
제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
한편, 상술하였던 바와 같이, 해당 매크로 블록들을 처리함에 있어서 바로 인접한 매크로 블록들만 참조하는 것이 아니라, 매크로 블록 어드레스 순서(또는 그 역순)를 따라 매크로 블록들의 중간 처리 결과를 참조할 필요가 있다. 상기와 같은 참조 동작을 적절하게 수행하기 위하여, 본 발명의 일실시예에 따르면 데이터 인코딩/디코딩 과정은 두 단계에 걸쳐 수행된다.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 /
상기 프레임 데이터에 대한 인코딩 동작을 수행함에 앞서, 처리 상태 관리부(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
상기와 같은 할당이 수행되고 나면, 제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
상기와 같은 동작에 따라, 동일한 프레임에 구비되는 적어도 두 개의 매크로 블록들이 동시에 병렬 처리되며, 또한 프레임 전체에 구비되는 매크로 블록들에 대해 인코딩 동작 중 제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
상기와 같은 할당이 완료되면, 제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
상기와 같은 인코딩 동작의 제2 단계가 수행 완료되면, 입출력부(110)는 중간 처리결과 저장부(130)로부터 처리 완료된 비트 스트림들을 불러들인 후 이들을 결합하여 해당 프레임에 대응되는 비트 스트림으로서 외부로 제공할 수 있다. 또한 상기 입출력부(110)는 해당 프레임에 대한 처리 결과를 장치(100) 내의 메모리부(160) 또는 기타 다른 저장수단에 저장하며, 상기 저장된 처리 결과는 이후의 프레임의 처리동작시 기준 프레임(reference frame)으로 사용될 수 있다. When the second step of the encoding operation is completed, the input /
한편, 동영상 인코딩/디코딩 장치(100)가 디코딩 동작을 수행하는 일예는 다음과 같다. 먼저, 입출력부(110)는 디코딩 수행될 하나의 프레임에 해당하는 비트 스트림 데이터를 입력받는다. 상기 디코딩 동작은 두 개의 단계로 이루어질 수 있으며, 바람직하게는 제1 단계에서 Parsing 과정이 수행되고, 제2 단계에서 매크로 블록 단위의 예측(prediction) 데이터 생성과정, 구성화(Cconstruction) 과정, 및 디블록킹 필터링 과정 등이 수행될 수 있다. 일예로서, 입출력부(110)가 상기 제1 단계에 해당하는 Parsing 과정이 수행할 수 있으며, 상기 Parsing 과정이 수행된 결과는 중간 처리결과 저장부(130)에 저장된다.Meanwhile, an example in which the video encoding /
이후 처리 상태 관리부(150)는 내부에 저장된 처리 결과 정보를 리셋하며, 작업 제어부(140)는 장치 내에 저장된 프레임 데이터를 데이터 처리부(120)에 할당한다. 상기 할당 과정은 인코딩 과정에서 수행된 방식과 유사 또는 동일하게 수행될 수 있다. 데이터 처리부(120)에 대한 데이터 할당 동작이 완료되면, 데이터 처리부(120)에 구비되는 N 개의 매크로블록 처리부(120_1 내지 120_N) 각각은 할당된 데이터에 대한 디코딩 동작을 수행한다. 바람직하게는 상기 디코딩 동작 중 제2 단계에 대응하는 과정들이 N 개의 매크로블록 처리부(120_1 내지 120_N)에서 수행될 수 있다. Thereafter, the
또한 디코딩 동작시, 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
프레임 전체에 대응하는 매크로 블록들에 대해 상기 디코딩 동작의 제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 /
본 발명은 도면에 도시된 실시예를 참고로 설명되었으나 이는 예시적인 것에 불과하며, 본 기술 분야의 통상의 지식을 가진 자라면 이로부터 다양한 변형 및 균등한 다른 실시예가 가능하다는 점을 이해할 것이다. 따라서, 본 발명의 진정한 기술적 보호 범위는 첨부된 특허청구범위의 기술적 사상에 의하여 정해져야 할 것이다.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)
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)
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)
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)
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 |
-
2009
- 2009-05-15 KR KR1020090042546A patent/KR100999505B1/en active IP Right Grant
Cited By (2)
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 |