KR101004825B1 - Pipielined deblocking filter using two filters simultaneously - Google Patents

Pipielined deblocking filter using two filters simultaneously Download PDF

Info

Publication number
KR101004825B1
KR101004825B1 KR1020090080453A KR20090080453A KR101004825B1 KR 101004825 B1 KR101004825 B1 KR 101004825B1 KR 1020090080453 A KR1020090080453 A KR 1020090080453A KR 20090080453 A KR20090080453 A KR 20090080453A KR 101004825 B1 KR101004825 B1 KR 101004825B1
Authority
KR
South Korea
Prior art keywords
filter
horizontal
vertical
data
buffer memory
Prior art date
Application number
KR1020090080453A
Other languages
Korean (ko)
Inventor
조준동
황진우
Original Assignee
성균관대학교산학협력단
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 성균관대학교산학협력단 filed Critical 성균관대학교산학협력단
Priority to KR1020090080453A priority Critical patent/KR101004825B1/en
Application granted granted Critical
Publication of KR101004825B1 publication Critical patent/KR101004825B1/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/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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/30Arrangements for executing machine instructions, e.g. instruction decode
    • G06F9/38Concurrent instruction execution, e.g. pipeline, look ahead
    • 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/80Details of filtering operations specially adapted for video compression, e.g. for pixel interpolation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • H04N19/86Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression involving reduction of coding artifacts, e.g. of blockiness

Abstract

PURPOSE: A de-blocking filter apparatus of a pipeline structure using a vertical filter and a horizontal filter reusing the data is provided to reduce the entire buffer occupancy by removing the use of pre-buffer. CONSTITUTION: A buffer memory(210) stores the row direction data of a macro block. A B buffer memory(220) stores the column direction data of the macro block. A horizontal filter(260) performs horizontal filtering operation about a vertical edge by one or more pipe stages by the row direction data. A vertical filter(270) performs vertical filtering about the horizontal edge.

Description

수평 필터와 수직 필터를 이용하는 파이프라인 구조의 디블록킹 필터 장치{Pipielined Deblocking Filter Using Two Filters Simultaneously}Pipelined Deblocking Filter Using Two Filters Simultaneously}

본 발명은 수평 필터와 수직 필터를 이용하는 파이프라인 구조의 디블록킹 필터 장치에 관한 것으로, 특히 수평과 수직 두 개의 필터 연산부를 이용하여 디블록킹 필터의 고속 처리가 가능하면서 적은 양의 버퍼 메모리를 사용하며 부수적인 전치 행렬 연산을 제거하여 전력 소모가 적은 디블록킹 필터에 관한 것이다.The present invention relates to a pipeline deblocking filter device using a horizontal filter and a vertical filter. In particular, the present invention relates to a deblocking filter device having a horizontal filter and a vertical filter. It relates to a low power consumption deblocking filter by eliminating ancillary prematrix operations.

세계 표준화 기구(ISO) 산하의 MPEG(Motion Picture Experts Group)에서 표준화한 비디오 압축 코덱인 MPEG-2, MPEG-4와 국제전기통신 연합(ITU-T) 산하의 VCEG(Video Coding Experts Group)에서 표준화한 H.263, H.264와 같은 비디오 압축 코덱은 일정한 크기의 블록을 기본 단위로 하여 부호화 과정과 복호화 과정을 수행한다. 블록 기반의 비디오 압축 코덱에는 영상의 주관적 화질과 객관적 화질을 저하시키는 블록킹 아티팩트(Blocking Artifact) 현상이 발생하며 이를 제거하기 위해서는 디블록킹 필터가 인-루프 또는 포스트 방식으로 이용된다.Standardized by MPEG-2 and MPEG-4, video compression codecs standardized by the Motion Picture Experts Group (MPEG) under the World Organization for Standardization (ISO), and by the Video Coding Experts Group (VCEG) under the International Telecommunication Union (ITU-T). A video compression codec such as H.263 and H.264 performs encoding and decoding processes based on a block having a predetermined size. In the block-based video compression codec, a blocking artifact phenomenon occurs that degrades the subjective and objective image quality of the image, and a deblocking filter is used in an in-loop or post manner to remove the blocking artifact.

H.264/AVC 코덱에서는 16×16 크기를 갖는 블록을 영상 부호화, 복호화의 기본 단위로 하며 이를 매크로블록이라고 한다. 매크로블록 단위의 비디오 코덱 부호 화 과정을 설명하기로 한다.In the H.264 / AVC codec, a block having a size of 16 × 16 is used as a basic unit for image encoding and decoding, which is called a macroblock. A video codec encoding process in units of macroblocks will be described.

도 1은 일반적인 매크로블록 단위의 비디오 코덱 부호화기의 블록 구성을 나타낸 도면이다.FIG. 1 is a block diagram of a video codec encoder in a macroblock unit.

비디오 코덱 부호화기(100)는 DCT(Discrete Cosine Transform)부(110), 양자화부(120), 움직임 예측부(130), 움직임 보상부(140), 엔트로피 부호화 및 복호화부(150), 역양자화부(160), 역 DCT부(170) 및 디블록킹 필터(180)를 포함하여 구성될 수 있다.The video codec encoder 100 may include a discrete cosine transform (DCT) unit 110, a quantization unit 120, a motion predictor 130, a motion compensator 140, an entropy encoding and decoding unit 150, and an inverse quantization unit. 160, an inverse DCT unit 170, and a deblocking filter 180.

먼저 비디오 코덱 부호화기(100)는 부호화를 하고자 하는 원본 영상 프레임의 매크로 블록에 인트라 혹은 인터 예측을 통해 참조 영상 프레임 중에 상기 매크로 블록과 가장 차이가 적은 부분을 탐색한다. 이후 가장 유사한 부분과의 차(Residual)를 구하며, DCT부(110)는 이 차이값을 입력으로 하여 이산 코사인 변환(Discrete Cosine Transform)을 수행하며, 양자화부(120)는 이산 코사인 변환 결과에 대해 양자화 과정을 수행한다.First, the video codec encoder 100 searches for a portion of the reference video frame having the smallest difference from the macroblock through intra or inter prediction on the macroblock of the original video frame to be encoded. After that, the residual with the most similar part is obtained. The DCT unit 110 performs a discrete cosine transform by inputting the difference value, and the quantization unit 120 performs a discrete cosine transform on the result. Perform the quantization process.

엔트로피 부호화 및 복호화부(150)는 양자화 과정 수행 결과 값에 대해 엔트로피 부호화를 수행하고 최종적으로 압축된 H.264/AVC 비트스트림(Bitstream)을 생성한다. The entropy encoding and decoding unit 150 performs entropy encoding on the result of the quantization process and finally generates a compressed H.264 / AVC bitstream.

한편, 비디오 코덱 부호화기(100)는 그 다음 압축 수행과정에서 필요하게 될 참조 영상 프레임을 생성하기 위해서 복호화 과정과 동일한 절차로 복원 과정을 수행한다.On the other hand, the video codec encoder 100 performs the reconstruction process in the same procedure as the decoding process to generate a reference image frame that will be needed in the next compression process.

즉, 엔트로피 부호화 및 복호화부(150)는 압축된 H.264/AVC 비트스트림을 엔트로피 복호화 과정을 수행하며, 역양자화부(160)는 이를 역양자화한다. 그 결과에 대해 역 DCT부(170)는 역이산 코사인 변환을 수행하여 차이값(Residual) 정보를 복원하는 것이다. 이와 같이 복원된 차이값 정보는 인트라 혹은 인터 움직임 보상을 거친 매크로 블록과 합해져서 복호화된다.That is, the entropy encoding and decoding unit 150 performs an entropy decoding process on the compressed H.264 / AVC bitstream, and the dequantization unit 160 dequantizes it. On the result, the inverse DCT unit 170 performs inverse discrete cosine transform to restore residual information. The difference value information reconstructed as described above is decoded by being combined with a macro block subjected to intra or inter motion compensation.

이와 같이 복호화된 영상 프레임은 매크로블록 혹은 세부 분할된 매크로블록 경계에 원래의 영상에는 존재하지 않는 격자 형태의 경계 오차를 표현하게 된다. 상기 오차는 블록 단위로 이산 코사인 변환을 수행함으로 인해서 블록 경계 픽셀에 상대적으로 부정확한 이상 코사인 변환이 수행되는 현상, 양자화 과정을 통해 손실 압축이 수행되고 역양자화 과정에서 원 영상과는 다른 값으로 복원되는 현상, 블록 단위의 움직임 예측으로 인한 현상으로 인하여 발생한다.The decoded image frame expresses a lattice boundary error that does not exist in the original image at the macroblock or subdivided macroblock boundary. The error is a phenomenon in which abnormal cosine transforms are relatively inaccurate for block boundary pixels due to discrete cosine transforms in blocks, lossy compression is performed through quantization, and restored to a value different from the original image in inverse quantization. This is caused by a phenomenon that occurs due to block prediction.

이러한 블록킹 아티팩트는 주관적 화질 저하의 원인으로 복원 품질을 향상시키기 위해서 현대의 비디오 압축 코덱들은 디블록킹 필터(180)의 사용을 권고하고 있다. 특히 H.264/AVC에서는 디블록킹 필터가 영상의 부호화, 영상의 복호화 루프안에 위치하여 반드시 수행되도록 표준으로 포함시키고 있다.Such blocking artifacts recommend the use of the deblocking filter 180 in modern video compression codecs in order to improve reconstruction quality due to subjective picture quality degradation. In particular, in H.264 / AVC, the deblocking filter is included as a standard so that the deblocking filter is performed in a video encoding and decoding loop.

H.264/AVC의 디블록킹 필터(180)는 원본 영상에 존재하고 있던 에지와 블록킹 아티팩트로 인하여 발생하는 에지를 구별하여, 실제 원본 영상에 존재하고 있던 에지에 대해서는 디블록킹을 수행하지 않도록 설계되어 있다. The deblocking filter 180 of H.264 / AVC distinguishes the edge existing in the original image from the edge generated by the blocking artifact, and does not deblock the edge existing in the original image. have.

H.264/AVC 비디오 압축 코덱은 기존의 MPEG-2, H.263과 같은 코덱에 비하여 높은 압축률을 보이면서도 주관적, 객관적인 화질 향상을 위하여 여러 기술을 표준 안에 도입하였다. 그 중 하나가 인-루프 디블록킹 필터로 비디오 압축 부호화, 복호화 과정에서 생성되는 코딩 조건들에 따라 경계면 세기를 판단하고, 그 경계면 세기에 따라 보통 세기의 필터, 강한 세기의 필터를 각각 적용하고 있다.The H.264 / AVC video compression codec introduces several technologies into the standard to improve the subjective and objective image quality while showing higher compression ratio than the existing codecs such as MPEG-2 and H.263. One of them is the in-loop deblocking filter, which determines the boundary strength according to the coding conditions generated during video compression encoding and decoding, and applies the normal intensity filter and the strong intensity filter according to the boundary strength. .

뿐만 아니라, H.264/AVC 디블록킹 필터는 촬영된 원본 영상 프레임에 나타나는 영상의 실제 에지들과 블록 단위의 부호화, 복호화 과정으로 인하여 발생되는 블로킹 아티팩트를 구분하여 적응적으로 디블록킹 필터링을 수행하도록 구현된다.In addition, the H.264 / AVC deblocking filter performs adaptive deblocking filtering by dividing the actual edges of the image appearing in the original image frame and the blocking artifacts generated by the encoding and decoding processes in units of blocks. Is implemented.

이 경우 블록 에지를 기준으로 인접한 블록의 픽셀 데이터 분포 특성을 분석하여 보통 세기의 필터, 강한 세기의 필터 각각에서도 여러 종류의 필터 수식이 이루어지고 있다. 이와 같이 H.264/AVC 디블록킹 필터는 적응성이 높아 실제 구현시 복잡도와 많은 연산량을 고려되어야 한다. 따라서 고성능의 디블록킹 방법 및 장치가 요구되고 있으며 한편으로 같은 성능이라면 보다 적은 메모리 자원을 사용하고 저전력으로 동작할 수 있도록 디블록킹 필터의 성능 개선이 요구된다. In this case, by analyzing the pixel data distribution characteristics of adjacent blocks on the basis of the block edge, various types of filter equations are performed in the filter of the normal intensity and the filter of the strong intensity. As such, the H.264 / AVC deblocking filter is highly adaptable and needs to consider complexity and a large amount of computation in actual implementation. Therefore, a high performance deblocking method and apparatus are required. Meanwhile, if the same performance is required, the performance of the deblocking filter needs to be improved to use less memory resources and operate at a lower power.

따라서 본 발명은 상기한 종래 기술에 따른 문제점을 해결하기 위한 것으로, 전치 버퍼를 제거하기 위해 수평 필터에서 파이프라인 단계별로 연산된 결과를 출력하고, 수직 필터의 파이프라인 레지스터를 이용하는 것을 특징으로 하는 수평 필터와 수직 필터를 포함한 파이프라인 구조의 디블록킹 필터 장치의 제공을 그 목적으로 한다.Accordingly, the present invention is to solve the problems according to the prior art described above, to output the results calculated by the pipeline stages in the horizontal filter to remove the pre-buffer, and horizontal characterized in that using the pipeline register of the vertical filter It is an object of the present invention to provide a deblocking filter device of a pipeline structure including a filter and a vertical filter.

본 발명의 일 측면에 따른 디블록킹 필터는 매크로 블록의 열 방향 데이터를 저장하기 위한 A 버퍼 메모리; 매크로 블록의 행 방향 데이터를 저장하기 위한 B 버퍼 메모리; 상기 A 버퍼 메모리에 저장되어 있는 열 방향 데이터를 이용하여 적어도 하나의 파이프 단계별로 수직 에지에 대하여 수평 필터링을 수행하고, 그 결과 데이터를 해당 단계에서 출력하는 수평 필터; 및 상기 B 버퍼 메모리에 저장되어 있는 행 방향 데이터와 상기 수평 필터가 출력한 결과 데이터를 입력받아 수평 에지에 대하여 수직 필터링을 수행하는 수직 필터를 포함한다.A deblocking filter according to an aspect of the present invention includes an A buffer memory for storing column direction data of a macro block; A B buffer memory for storing row direction data of a macro block; A horizontal filter performing horizontal filtering on vertical edges in at least one pipe step by using column direction data stored in the A buffer memory, and outputting the result data in a corresponding step; And a vertical filter which receives the row direction data stored in the B buffer memory and the result data output by the horizontal filter and performs vertical filtering on the horizontal edge.

상기 A 버퍼 메모리는, 현재 처리할 매크로 블록의 필터링 시작 시점에서, 현재 처리할 매크로 블록의 좌측 매크로 블록 중 최우측 열에 해당하는 픽셀 데이터를 저장하는 것을 특징으로 한다.The A buffer memory may store pixel data corresponding to the rightmost column of the left macroblock of the macroblock to be processed at the start of filtering of the macroblock to be processed.

상기 B 버퍼 메모리는, 현재 처리할 매크로 블록의 필터링 시작 시점에서, 현재 처리할 매크로 블록의 상측 매크로 블록 중 최하측 행에 해당하는 픽셀 데이 터를 저장하는 것을 특징으로 한다.The B buffer memory may store pixel data corresponding to the lowest row among upper macroblocks of the macroblock to be processed at the start of filtering the macroblock to be processed.

상기 수평 필터가 수평 필터링한 결과 데이터를 상기 수평 필터로 재입력하기 위한 제1 포워딩 수단; 상기 수평 필터가 수평 필터링한 결과 데이터를 상기 수직 필터로 입력하기 위한 제2 포워딩 수단; 및 상기 수직 필터가 수직 필터링한 결과 데이터를 상기 수직 필터로 재입력하기 위한 제3 포워딩 수단을 더 포함할 수 있다.First forwarding means for re-inputting the horizontal filter result data into the horizontal filter; Second forwarding means for inputting the horizontal filtering result data into the vertical filter; And third forwarding means for re-inputting the vertical filter result data into the vertical filter.

상기 수평 필터는, 적어도 하나 이상의 단계로 구성된 파이프라인에서, 상기 A 버퍼 메모리, 상기 제1 포워딩 수단 또는 상기 디블록킹 필터 외부에 위치한 메모리 중 적어도 하나로부터 재입력된 결과 데이터를 이용하여 필터링 연산을 수행하는 것을 특징으로 할 수 있다.The horizontal filter performs a filtering operation using result data re-input from at least one of the A buffer memory, the first forwarding means, or a memory located outside the deblocking filter in a pipeline composed of at least one step. It can be characterized by.

상기 수직 필터는, 파이프라인 단계 중 적어도 하나의 단계에서, 상기 수평 필터 또는 상기 B 버퍼 메모리로부터 하나의 픽셀 쌍 데이터를 입력받고, 상기 입력된 픽셀 쌍 데이터 또는 이전 파이프라인 단계에서 처리되어 상기 제3 포워딩 수단을 통해 재입력된 결과 데이터를 이용하여 필터링 연산을 수행하는 것을 특징으로 할 수 있다.The vertical filter is configured to receive one pixel pair data from the horizontal filter or the B buffer memory in at least one of the pipeline stages, and to process the inputted pixel pair data or the previous pipeline stage to perform the third filter. The filtering operation may be performed using the result data re-input through the forwarding means.

본 발명에 따른 디블록킹 필터는 상기 수직 필터링된 결과 데이터를 행 방향 라인의 데이터로 전치하기 위한 버퍼를 더 포함할 수도 있다. 상기 버퍼는 상기 수직 필터의 파이프라인 레지스터로 구현되는 것을 특징으로 할 수 있다.The deblocking filter according to the present invention may further include a buffer for transposing the vertically filtered result data into data of a row direction line. The buffer may be implemented as a pipeline register of the vertical filter.

상기한 바와 같이 본 발명에 따른 수평 필터와 수직 필터를 이용하는 파이프 라인 구조의 디블록킹 필터 장치에 따르면, 별도의 전치 버퍼를 사용하지 않아도 되어 총 버퍼 사용량의 감소와 함께 기존의 구조에서 전치 동작의 수행으로 인한 전력 낭비를 줄일 수 있다는 이점이 있다.As described above, according to the pipeline deblocking filter device using the horizontal filter and the vertical filter according to the present invention, there is no need to use a separate pre-buffer, and thus the pre-operation is performed in the existing structure with a decrease in the total buffer usage. There is an advantage that can reduce the waste of power.

또한, 수직 필터에도 수평 필터와 같이 포워딩 구조가 적용되어 있으며 수직 필터의 포워딩 구조는 수직 필터가 필터링하는 수평 에지들을 연속적으로 필터링할 수 있도록 하여 데이터를 재사용하는 효과가 있다. 이를 통하여 버퍼 메모리에 접근하는 횟수를 감소시킬 수 있고 필요한 전력의 양이 감소된다.In addition, the forwarding structure is applied to the vertical filter like the horizontal filter, and the forwarding structure of the vertical filter allows the vertical filter to continuously filter the horizontal edges filtered, thereby reusing data. This reduces the number of times the buffer memory is accessed and reduces the amount of power required.

이하, 본 발명에 따른 수평 필터와 수직 필터를 이용하는 파이프라인 구조의 디블록킹 필터 장치에 대하여 첨부된 도면을 참조하여 상세히 설명한다.Hereinafter, a deblocking filter device having a pipeline structure using a horizontal filter and a vertical filter according to the present invention will be described in detail with reference to the accompanying drawings.

도 2는 본 발명의 일 실시예에 따른 디블록킹 필터의 블록 구성을 나타낸 도면이다.2 is a block diagram illustrating a deblocking filter according to an embodiment of the present invention.

도 2에 도시된 바와 같이 디블록킹 필터(200)는 A 버퍼 메모리(210), B 버퍼 메모리(220), 버퍼 및 외부 메모리 제어부(230), 경계면 세기 판단부 및 임계치 생성부(240), 파이프라인 제어기(250), 수평 필터(260), 수직 필터(270) 및 다수의 포워딩부(281, 282, 282) 등을 포함하여 구성된다.As shown in FIG. 2, the deblocking filter 200 includes an A buffer memory 210, a B buffer memory 220, a buffer and an external memory controller 230, an interface strength determiner and a threshold generator 240, and a pipe. And a line controller 250, a horizontal filter 260, a vertical filter 270, a plurality of forwarding units 281, 282, 282, and the like.

A 버퍼 메모리(210)는 현재 처리하는 매크로블록 좌측에 위치하는 루마 4×16 또는 크로마 2×4×8 픽셀 데이터를 저장한다. B-버퍼 메모리(220)는 현재 처리하는 매크로블록 위측에 위치하는 루마 16×4 또는 크로마 2×8×4 픽셀 데이터를 저장한다. The A buffer memory 210 stores luma 4 × 16 or chroma 2 × 4 × 8 pixel data located to the left of the macroblock currently being processed. The B-buffer memory 220 stores luma 16 × 4 or chroma 2 × 8 × 4 pixel data located above the macroblock currently being processed.

또한, 도 2의 디블록킹 필터는 크게 세 개의 포워딩 수단(281, 282, 283)을 포함한다. 제1 포워딩 수단(281)은 수평 필터(260)가 수평 필터링한 결과 데이터를 수평 필터로 재입력하기 위한 구성 요소이다. 제1 포워딩 수단(281)이 존재하는 경우 다른 종류의 필터링 에지 순서를 적용하는데 이용할 수 있다.In addition, the deblocking filter of FIG. 2 largely includes three forwarding means 281, 282, 283. The first forwarding means 281 is a component for re-inputting the horizontal filter 260 the horizontally filtered result data into the horizontal filter. If present, the first forwarding means 281 can be used to apply other types of filtering edge order.

또한, 제2 포워딩 수단(282)은 수평 필터(260)가 수평 필터링한 결과 데이터를 수직 필터(270)로 포워딩하기 위한 구성 요소이다. 수평 필터(260)는 파이프라인 단계에서 수행한 결과 데이터를 최종 단계에 종합하여 출력하는 것이 아니라, 제2 포워딩 수단(282)을 통해 해당 단계에서 바로바로 수직 필터(270)로 출력하는 것이다. 도 2의 수평 필터(260) 우측의 4개의 네모들은 파이프라인 각 단계에서 연산된 결과를 해당 단계에서 즉시 출력함을 의미한다. 수평 필터(260)는 다수의 단계를 가지는 파이프라인 형태로 구성될 수 있다. In addition, the second forwarding means 282 is a component for forwarding the resultant data filtered by the horizontal filter 260 to the vertical filter 270. The horizontal filter 260 does not output the result data performed in the pipeline stage to the final stage, but outputs the vertical data to the vertical filter 270 directly at the stage through the second forwarding means 282. The four squares on the right side of the horizontal filter 260 of FIG. 2 mean that the result calculated at each stage of the pipeline is immediately output at the corresponding stage. The horizontal filter 260 may be configured in the form of a pipeline having a plurality of stages.

제3 포워딩 수단(283)은 수직 필터(270)가 수직 필터링한 결과 데이터를 상기 수직 필터(270)로 재입력하기 위한 수단에 해당한다.The third forwarding means 283 corresponds to a means for re-input of the result data vertically filtered by the vertical filter 270 into the vertical filter 270.

수평 필터(260)는 입력되는 행 방향 데이터를 이용하여 적어도 하나의 파이프 단계별로 수평 필터링을 수행하고, 그 결과 데이터를 해당 단계에서 출력한다. The horizontal filter 260 performs horizontal filtering on at least one pipe step by using the input row direction data, and outputs the result data in the corresponding step.

이 경우 수평 필터(260)는 하나의 파이프라인 단계에서 행 방향 데이터, 즉 8개의 픽셀 데이터를 한꺼번에 읽어들인다. 이에 반해 수직 필터(270)는 수평 필터(260)에서 처리하여 파이프 단계별로 출력된 결과 데이터를 입력받고, 이를 이용하여 수직 필터링을 수행한다는 점에서 수평 필터(260)와 차이가 있다.In this case, the horizontal filter 260 reads row direction data, that is, eight pixel data at once, in one pipeline stage. On the other hand, the vertical filter 270 is different from the horizontal filter 260 in that the vertical filter 270 receives the result data output by pipe processing by the horizontal filter 260 and performs vertical filtering using the result data.

한편, 도 2를 참조하면 수평 필터(260)의 결과는 A 버퍼 메모리(210)로 입력되는 것을 살펴볼 수 있다. 수평 필터(260)의 Q 블록은 4개의 픽셀 데이터 한꺼번에 출력되며 이러한 픽셀 데이터들은 다음 수직 라인에 대한 필터링을 위해 A 버퍼 메모리(210)에 저장되는 것이다.Meanwhile, referring to FIG. 2, it can be seen that the result of the horizontal filter 260 is input to the A buffer memory 210. The Q block of the horizontal filter 260 is outputted with four pixel data at once and these pixel data are stored in the A buffer memory 210 for filtering on the next vertical line.

수직 필터(270)는 수평 필터(260)와 마찬가지로 다수의 단계를 가지는 파이프라인 형태로 구성될 수 있는데, 본 실시예에서는 8단의 파이프라인 구조를 가지는 수직 필터(270)를 고려하기로 하자. 수직 필터(270)는 아래와 같이 파이프라인 동작을 수행할 수 있다.Like the horizontal filter 260, the vertical filter 270 may be configured in a pipeline form having a plurality of stages. In this embodiment, the vertical filter 270 having an eight-stage pipeline structure will be considered. The vertical filter 270 may perform a pipeline operation as follows.

0단계 : P0과 Q0에 관련한 계산. (ex. p0 + q0 또는 ((q0 - p0) << 2) )Step 0: Calculations relating to P0 and Q0. (ex. p0 + q0 or ((q0-p0) << 2))

1단계 : P1과 Q1만 혹은 0단계에서 발생한 계산 결과가 혼합되어 관련된 연산. (ex. p1 q1 또는 p1 + q1 + 2 )1st stage: P1 and Q1 alone or a combination of calculation results from 0th stage. (ex. p1 q1 or p1 + q1 + 2)

2단계 : P2과 Q2만 혹은 0단계, 1단계에서 발생한 계산 결과가 혼합되어 관련된 연산. (ex. p2 + p1 + 2 또는 ((p0 + q0) + (p1 + q1 + 2)) )2nd step: P2 and Q2 only, or calculations related to the mixed results of the 0th and 1st steps. (ex. p2 + p1 + 2 or ((p0 + q0) + (p1 + q1 + 2)))

3단계 : P3과 Q3만 혹은 0단계, 1단계, 2단계에서 발생한 계산 결과가 혼합되어 관련된 연산.Step 3: P3 and Q3 only, or a combination of calculation results generated in steps 0, 1, and 2 related to the calculation.

4단계 이후의 단계 : 0단계, 1단계, 2단계, 3단계에서 발생한 계산 결과가 혼합되어 관련된 연산.Steps after Step 4: Operations related to a mixture of calculation results generated in Step 0, Step 1, Step 2 and Step 3.

예를 들어, 제2 단계를 설명하면, 수직 필터(270)는 수평 필터(260) 또는 B 버퍼 메모리(220)에서 입력받은 P2, Q2 정보와 이전 파이프라인 단계(제1단계)에서 이미 계산되어 재입력된 데이터를 가지고 연산을 하는 것이다. 마찬가지로 제3 단 계에서, 수직 필터(270)는 수평 필터(260) 또는 B 버퍼 메모리(220)로부터 입력받는 P3, Q3 정보와 이전 파이프라인 단계(제1, 2단계)에서 연산되어 재입력된 데이터를 이용해 연산을 하게 된다.For example, referring to the second stage, the vertical filter 270 is already calculated in the previous pipeline stage (first stage) and the P2 and Q2 information received from the horizontal filter 260 or the B buffer memory 220. The operation is performed on the re-entered data. Similarly, in the third stage, the vertical filter 270 is calculated by the horizontal filter 260 or the B buffer memory 220, and the information is calculated and re-input in the previous pipeline stages (first and second stages). The operation is performed using the data.

즉, 수직 필터(270)는 파이프라인 단계 중 적어도 하나의 단계에서, 수평 필터(260) 또는 B 버퍼 메모리(220)로부터 하나의 픽셀 쌍 데이터를 입력받거나, 혹은 상기 입력된 픽셀 쌍 데이터와 수직 필터(270)가 이전 파이프라인 단계에서 처리하여 제3 포워딩 수단(283)을 통해 재입력된 결과 데이터로부터 하나의 픽셀 쌍 데이터를 입력받아서 필터링 연산을 수행하는 것이다.That is, the vertical filter 270 receives one pixel pair data from the horizontal filter 260 or the B buffer memory 220 in at least one of the pipeline stages, or the vertical filter and vertical filter with the input pixel pair data. 270 processes in the previous pipeline stage and receives one pixel pair data from the result data re-input through the third forwarding means 283 to perform a filtering operation.

도 2의 수직 필터(270)의 좌상측에는 전치 로직이 포함되어 있음을 알 수 있다. 이러한 전치 로직은 수직 필터링된 결과, 즉 최종 필터링된 결과 데이터를 행 방향 라인의 데이터로 전치하기 위한 구성 요소이다. 이러한 전치 로직은 상기 수직 필터(270) 상에 마련되어 있는 파이프라인 레지스터로 구현되는 것이 바람직하다.It can be seen that the preposition logic is included in the upper left side of the vertical filter 270 of FIG. 2. This transposition logic is a component for transposing the vertically filtered result, that is, the final filtered result data, into the data of the row direction line. This pre-logic is preferably implemented with a pipeline register provided on the vertical filter 270.

또한, 도 2를 참조하면 수직 필터(270)의 P 블록 출력은 필터링 완료된 픽셀 데이터들이다. 필터링 완료된 데이터는 외부 버스로 출력되는 것이 일반적이나, 픽셀 데이터들이 B 버퍼 메모리(220)에 임시로 저장될 수도 있다. 2, the P block output of the vertical filter 270 is filtered pixel data. Filtered data is generally output to an external bus, but pixel data may be temporarily stored in the B buffer memory 220.

이러한 상황은 다음 상황 등에서 발생할 수 있다. 하나의 매크로블록을 처리할 때 현재 매크로블록 상측 매크로블록 중 최하측 행 블록들을 버스에서 읽어들여 필터링을 수행한다. 이 경우 현재 처리하는 매크로블록의 상측 매크로블록 중 최하측 행에 속하는 셀들의 픽셀 데이터는 그 값의 변동이 발생할 수 있다. 물론, 값의 변동이 발생한 셀들에 대한 외부 메모리에 저장되어 있는 기존의 값 또한 버스를 통하여 갱신하여야 할 것이다. 그러나 외부 버스의 대역폭이 한정되어 있어 결과 픽셀 데이터 발생이 버스 대역폭보다 크다면, 해당 픽셀 데이터는 임시적으로 B 버퍼 메모리(220)에 저장된다. 버스 출력과 B 버퍼 메모리(220)가 연결되어 있으므로, 추후 B 버퍼 메모리(220)에 저장된 데이터들은 외부 메모리로 전달된다.This situation may occur in the following situations. When processing one macroblock, the lowest row blocks among the upper macroblocks of the current macroblock are read from the bus and filtered. In this case, the pixel data of cells belonging to the lowermost row of the upper macroblock of the macroblock currently being processed may change in value. Of course, the existing value stored in the external memory for the cells in which the value is changed will also need to be updated through the bus. However, if the bandwidth of the external bus is limited and the resulting pixel data generation is larger than the bus bandwidth, the pixel data is temporarily stored in the B buffer memory 220. Since the bus output and the B buffer memory 220 are connected, data stored in the B buffer memory 220 is transferred to the external memory later.

디블록킹 필터(200)가 하나의 매크로블록을 처리하기 위해서는 현재 디블록킹 필터(200)가 처리하는 매크로블록에 해당하는 루마 16×16 또는 크로마 2×8×8 픽셀 데이터가 필요하다. In order for the deblocking filter 200 to process one macroblock, luma 16 × 16 or chroma 2 × 8 × 8 pixel data corresponding to the macroblock currently processed by the deblocking filter 200 is required.

또한, 현재 매크로블록 왼쪽에 위치하여 바로 이전에 처리된 매크로블록의 최우측 부분 4×16 또는 크로마 2×4×8에 해당하는 픽셀 정보와 현재 매크로블록 위쪽에 위치하는 매크로블록 최하측 부분 16×4 또는 크로마 2×8×4에 해당하는 픽셀 데이터가 필요하다.In addition, the pixel information corresponding to the rightmost part 4x16 or chroma 2x4x8 of the immediately previous macroblock located to the left of the current macroblock and the lowermost part 16x of the macroblock located above the current macroblock Pixel data corresponding to 4 or chroma 2x8x4 is required.

현재 처리하고자 하는 매크로블록의 왼쪽과 위쪽 매크로블록은 외부 메모리에 저장된 정보를 리드/라이트(READ/WRITE) 과정을 통하여 액세스하거나 디블록킹 필터(200) 내부의 온 칩 SRAM 혹은 플립플롭과 같은 저장 공간을 마련하여 현재 매크로블록의 일부를 다음 처리할 매크로블록을 위한 정보로 저장하여 이용하는 방법이 있다.The left and upper macroblocks of the macroblock to be processed currently access information stored in the external memory through a READ / WRITE process or a storage space such as on-chip SRAM or flip-flop inside the deblocking filter 200. There is a method of preparing and storing a portion of the current macroblock as information for a macroblock to be processed next.

두 가지 방법 중에서 디블록킹 필터(200) 내부에 임시 저장 공간을 구성하는 방법이 지연시간 면에서 뛰어나고 전력을 적게 소모하는 장점이 있으며, 공유 버스 구조의 통신방법을 사용하는 하드웨어 구조에서는 디블록킹 필터(200)를 위해 소요되는 버스 대역폭을 감소시키는 이점이 있다. 외부 메모리의 접근이 상대적으로 지연 시간이 상당히 크며 전력 소모도 크기 때문이다. 그러나 온 칩 SRAM 또는 플립플롭과 같은 추가적 버퍼의 사용은 생산 비용의 증가로 이어지고, 이들 버퍼 역시 전력을 소모하는 구성 요소이므로 될 수 있는 한 적은 양을 사용하는 것이 유리하다.Among the two methods, the method of configuring the temporary storage space inside the deblocking filter 200 has an advantage of excellent latency and consumes less power. In the hardware structure using the communication method of the shared bus structure, the deblocking filter ( There is an advantage in reducing the bus bandwidth required for 200). This is because external memory access has a relatively high latency and high power consumption. However, the use of additional buffers, such as on-chip SRAM or flip-flops, leads to increased production costs, and these buffers are also power consuming components, so it is advantageous to use as little as possible.

H.264/AVC 표준의 디블록킹 과정은 4×4 블록 16개로 구성된 루마 16×16, 4×4 블록 4개로 구성된 두 개의 크로마, 8×8 매크로블록에 대하여 ① 수직 에지들을 먼저 필터링하고(수평 필터링), 수평 필터링된 픽셀들에 대하여 다시 ② 수평 에지들에 대하여 수직 방향으로 필터링하여(수직 필터링) 최종 결과를 얻게 된다.The deblocking process of the H.264 / AVC standard filters the vertical edges first (1) for luma 16 × 16 with 16 4 × 4 blocks, two chroma with 8 4 × 4 blocks, and 8 × 8 macroblocks (horizontal). Filtering), again horizontally filtered pixels (2) vertically with respect to the horizontal edges (vertical filtering) to obtain the final result.

H.264/AVC 표준안의 필터링 순서에 의한 픽셀 데이터 의존성을 만족시키기 위해서는 각각의 4×4 블록은 수직 에지가 먼저 필터링 되고, 수평 에지가 나중에 필터링 되어야 한다. 따라서, 수평 필터와 수직 필터 사이의 시작 시점에는 차이가 존재하여야 한다.In order to satisfy the pixel data dependency by the filtering order in the H.264 / AVC standard, each 4x4 block must be filtered by the vertical edge first and then by the horizontal edge later. Therefore, there must be a difference in starting time between the horizontal filter and the vertical filter.

즉, 각각의 4×4 블록에 대하여 좌측 수직 에지, 우측 수직 에지, 상측 수평 에지, 하측 수평 에지 순서로 필터링을 수행하여야 하는데, 매크로블록에 존재하는 64개의 에지를 필터링하는 방법은 에지들에 필터링을 적용하는 순서에 따라 여러 방법이 존재할 수 있다.In other words, each 4x4 block should be filtered in order of left vertical edge, right vertical edge, upper horizontal edge, and lower horizontal edge. The method of filtering 64 edges present in a macroblock is filtered to edges. There may be several methods depending on the order of application.

도 3은 본 발명에 따른 에지 필터링 처리 순서를 나타낸 도면이다.3 is a view showing an edge filtering processing sequence according to the present invention.

본 발명에서는 두 개의 서로 다른 필터, 즉 수평 필터(260)와 수직 필터(270)가 동시에 실행되므로, 하나의 필터만을 사용하는 경우와는 다른 에지 필터링 처리 순서를 사용한다. 도 3을 참조하여 설명하기로 한다.In the present invention, since two different filters, that is, the horizontal filter 260 and the vertical filter 270 are executed at the same time, a different edge filtering processing sequence is used than when only one filter is used. This will be described with reference to FIG. 3.

도 3에서 셀 내부에는 L0 ~ L3, T0 ~ T3, 0 ~ 15가 기재되어 있다. 현재 처리해야 하는 매크로블록에 속하는 4×4 블록에 대하여 0~15가 기재되어 있다. L0~L3는 현재 처리해야 하는 매크로블록의 좌측 매크로블록의 최우측에 위치한 블록들이다. T0 ~ T3은 현재 처리할 매크로블록의 상측 매크로블록의 최하측 위치 블록들을 의미한다.In FIG. 3, L0 to L3, T0 to T3, and 0 to 15 are described in the cell. 0 to 15 are described for the 4x4 block belonging to the macroblock to be processed at present. L0 to L3 are blocks located at the rightmost side of the left macroblock of the macroblock currently to be processed. T0 to T3 mean lowermost position blocks of the upper macroblock of the macroblock to be processed.

한편, 에지에 마킹된 원은 수평 필터의 에지 필터링을 의미하며, 세모는 수직 필터의 에지 필터링을 의미한다. 원 또는 세모안의 숫자는 에지 필터링 순서를 나타낸다. 예를 들어, 0번 셀의 좌측 에지에는 0이 기재되어 있으므로 처음으로 필터링이 수행된다. 한편, 0번 셀의 상측 에지와 9번 셀의 좌측 에지는 모두 6의 숫자를 가지고 있다. 이들은 여섯 번째 순서에 수평 필터(260)와 수직 필터(270)에서 동시에 필터링되는 것이다.Circles marked at the edges mean edge filtering of the horizontal filter, and triangles mean edge filtering of the vertical filter. Numbers in circles or triangles indicate edge filtering order. For example, filtering is performed for the first time since 0 is written at the left edge of the cell 0. On the other hand, the upper edge of cell 0 and the left edge of cell 9 both have the number 6. These are filtered simultaneously in the horizontal filter 260 and the vertical filter 270 in the sixth order.

한편, 기존의 디블록킹 필터에서는 필요한 크기의 차이가 존재하나 모두 디블록킹 필터링 과정에서 중간에 생성된 결과값을 임시로 저장하기 위한 공간이 필요하다. 예를 들어, 수평 필터가 생성한 중간 필터링된 결과를 임시로 저장하기 위하여 소정의 크기(4×16)를 가진 버퍼가 필요하다.Meanwhile, in the existing deblocking filter, there is a difference in the required size, but all of them need a space for temporarily storing the result value generated in the middle of the deblocking filtering process. For example, a buffer with a predetermined size (4x16) is needed to temporarily store intermediate filtered results generated by the horizontal filter.

본 발명에서는 중간 필터링된 결과를 임시로 저장하기 위한 4×16 크기의 버퍼를 우측 매크로블록의 데이터를 저장하기 위한 버퍼, 즉 도 2의 A 버퍼 메모리(210)로 대체한다.In the present invention, the 4 × 16 buffer for temporarily storing the intermediate filtered result is replaced with the buffer for storing the data of the right macroblock, that is, the A buffer memory 210 of FIG. 2.

예를 들어, 16×16 루마 블록을 필터링하는 경우, 도 3의 원으로 마킹된 에지 0, 1, 2, 3을 디블록킹 처리하는 시점에서 현재 매크로블록의 왼쪽 매크로블록 최우측 4×16 픽셀 데이터들은 A 버퍼 메모리(210)에 저장되고, 다음 열의 필터링 수행시 이용된다.For example, when filtering a 16 × 16 luma block, the rightmost 4 × 16 pixel data of the left macroblock of the current macroblock at the time of deblocking the edges 0, 1, 2, and 3 marked by the circle of FIG. Are stored in the A buffer memory 210 and are used when performing filtering of the next column.

원으로 마킹된 에지 0, 1, 2, 3을 수직 필터링한 후 결과들은 A 버퍼 메모리(210)에 저장되어 있던 데이터를 덮어쓰기 된다. 즉, A 버퍼 메모리(210)는 계속하여 재사용되는 것이다. 이와 같이 덮어쓰기 된 데이터도 다음 열의 필터링 수행시 이용된다.After vertically filtering edges 0, 1, 2, and 3 marked with circles, the results are overwritten with the data stored in the A buffer memory 210. That is, the A buffer memory 210 continues to be reused. This overwritten data is also used to filter the next column.

원으로 마킹된 에지 4, 5, 6, 7을 수행하며 발생하는 수평 필터(260)의 중간 필터링된 결과들은 마찬가지로 A 버퍼 메모리(210)에 저장된다. 원으로 마킹된 에지 4, 5, 6, 7에 대한 결과값들은 0, 1, 2, 3 에지 필터링 결과값이 저장되어 있던 버퍼 공간에 덮어쓰기 되는 것이다.The intermediate filtered results of the horizontal filter 260 that occur while performing edges 4, 5, 6 and 7 marked with circles are likewise stored in the A buffer memory 210. The results for the edges 4, 5, 6, and 7 marked with a circle are overwritten in the buffer space where the 0, 1, 2, and 3 edge filtering results are stored.

도 3의 (A)에 표현된 매크로블록에 대한 필터링이 완료되면, A 버퍼 메모리(210)에는 그 다음 매크로블록 처리를 위하여 임시 저장된 현재 매크로블록 우측 부분 4×16 데이터, 즉 원으로 마킹된 에지 12, 13, 14, 15를 처리한 결과가 저장된다.When the filtering for the macroblock represented in FIG. 3A is completed, the A buffer memory 210 has 4 × 16 data of the right part of the current macroblock temporarily stored for the next macroblock processing, that is, an edge marked with a circle. The result of processing 12, 13, 14, and 15 is stored.

한편, 도 3의 (B)는 두 개의 크로마 8×8 블록과 크로마 성분에 대한 A 버퍼 메모리(210)의 재사용 방법을 나타낸 것이다. 도 3의 (B)를 참조하면 상측 크로마의 좌측 원으로 마킹된 16, 17 에지에 대한 결과값은 원으로 마킹된 20, 21 에지에 대한 결과값으로 덮어쓰기 된다. 즉, L4와 L5가 담겨 있는 A 버퍼 메모리(210)가 16, 17 에지를 수행후에는 16, 18 블록을 담게 되고 20, 21 에지를 수행후에는 17, 19 블록을 담게 된다. Meanwhile, FIG. 3B illustrates a method of reusing the A buffer memory 210 for two chroma 8x8 blocks and chroma components. Referring to FIG. 3B, the result values for the 16 and 17 edges marked with the left circle of the upper chroma are overwritten with the result values for the 20 and 21 edges marked with the circle. That is, the A buffer memory 210 containing L4 and L5 contains 16 and 18 blocks after performing 16 and 17 edges, and contains 17 and 19 blocks after performing 20 and 21 edges.

도 4는 본 발명에 따른 A 버퍼 메모리에 저장되는 데이터의 이동 방향을 나타낸 도면이다.4 is a diagram illustrating a moving direction of data stored in the A buffer memory according to the present invention.

도 4의 (A)를 참조하면, 현재 매크로블록의 필터링이 시작되는 시점에서 A 버퍼 메모리(210)에는 이전 매크로블록의 최우측열 4개의 블록에 대한 결과값이 저장되어 있다. 현재 매크로블록 제1열의 필터링이 수행된 후, A 버퍼 메모리(210)에는 제1열 필터링 수행 결과 값이 저장된다.Referring to FIG. 4A, a result value of four blocks of the rightmost column of the previous macroblock is stored in the A buffer memory 210 at the start of filtering of the current macroblock. After the filtering of the first column of the current macroblock is performed, the result value of the first column filtering is stored in the A buffer memory 210.

현재 매크로블록의 나머지 열의 필터링이 수행되면서 A 버퍼 메모리(210)에는 제2열 4개의 블록 픽셀값, 제3열 4개의 블록 픽셀값, 제4열 4개의 블록 픽셀값들이 순차적으로 임시 저장된다.As the remaining columns of the current macroblock are filtered, the A buffer memory 210 temporarily stores four block pixel values in the second column, four block pixel values in the third column, and four block pixel values in the fourth column.

현재 매크로 블록의 필터링이 완료된 후 다음 매크로 블록의 제1열 필터링 시, 임시 저장된 제4열 4개의 블록 픽셀값이 참조되며, 이러한 동작은 모든 매크로 블록의 필터링 과정 동안 반복된다.When filtering the first column of the next macro block after filtering of the current macro block is completed, the temporarily stored fourth column four block pixel values are referenced, and this operation is repeated during the filtering process of all the macro blocks.

한편, 두 개의 크로마 8×8 블록과 크로마 성분에 대한 A 버퍼 메모리(210) 재사용 방법도 이상에서 설명한 루마 블록에서의 A 버퍼 메모리(210)의 재사용과 거의 동일하므로 그 자세한 설명을 생략한다.Meanwhile, the method of reusing the A buffer memory 210 for the two chroma 8x8 blocks and the chroma component is also substantially the same as the reuse of the A buffer memory 210 in the luma block described above, and thus a detailed description thereof will be omitted.

병렬 처리를 이용하여 수평과 수직 두 개의 필터(260, 270)를 사용하는 디블록킹 필터(200)는 필터를 하나 이용하는 기존의 디블록킹 필터에 비해 단위 시간당 처리 가능한 연산량이 크다. 따라서 수평과 수직 두 개의 필터(260, 270)를 병렬 처리할 수 있는 디블록킹 필터는 기존의 방식보다 낮은 동작 주파수에서도 고해상도 영상의 실시간 처리가 가능하다.The deblocking filter 200 using two horizontal and vertical filters 260 and 270 using parallel processing has a larger amount of computation per unit time than the conventional deblocking filter using one filter. Therefore, the deblocking filter capable of processing two horizontal and vertical filters 260 and 270 in parallel can perform real-time processing of a high resolution image even at a lower operating frequency than the conventional method.

그러나 수평과 수직 두 개의 필터(260, 270)를 갖는 디블록킹 필터에서, 수평, 수직 필터(260, 270)는 동일한 구조를 갖는 필터 연산부로 구현되는 바, 수평 필터링된 중간 결과물을 수직 필터링 처리하기 위하여 전치 행렬 연산 과정이 필수적이다. 이러한 전치 과정은 실제 필터링 연산과는 무관하나 전치 버퍼(Transpose Buffer)와 같은 추가적인 임시 저장 공간과 상당한 양의 전력 소모가 따른다.However, in a deblocking filter having two horizontal and vertical filters 260 and 270, the horizontal and vertical filters 260 and 270 are implemented as a filter operation unit having the same structure. In order to do this, a transpose process is essential. This transposition process is independent of the actual filtering operation, but involves additional temporary storage, such as a transpose buffer, and a significant amount of power consumption.

그러나 본 발명에서는 서로 다른 구조의 픽셀 데이터 입력 방법을 이용하여, 각 단계에서 처리하는 연산이 상이한 파이프라인 구조의 수평 필터, 수직 필터 연산부를 사용하여 전치 행렬 연산 과정을 제거하게 된다.However, in the present invention, using the pixel data input method having a different structure, the pre-matrix calculation process is eliminated by using a horizontal filter and a vertical filter operation unit having different pipelined structures.

디블록킹 필터링을 수행하기 위해 도 2의 디블록킹 필터(200)는 최초 외부메모리에서 필터링할 데이터를 읽어온다. 데이터 버스는 행 방향 혹은 열 방향 데이터를 정렬하여 한꺼번에 불러오게 된다. 따라서 수평 필터(260)의 경우 불러온 한 라인의 픽셀 데이터를 바로 파이프라인 첫 단계에서 입력으로 받게 된다.In order to perform deblocking filtering, the deblocking filter 200 of FIG. 2 reads data to be filtered from the first external memory. The data bus aligns row- or column-oriented data and loads them all at once. Therefore, in the case of the horizontal filter 260, the pixel data of one line which is loaded is directly received as an input in the first stage of the pipeline.

기존의 일반적 구성에서는 입력된 픽셀 데이터를 파이프라인 단계를 거치면서 파이프라인의 최종 단계에서 한꺼번에 필터링된 픽셀 데이터를 출력하도록 되어 있다. 본 발명의 수평 필터(260)는 파이프라인 단계별로 파이프라인의 최종 단계를 거치지 않고도 먼저 생성될 수 있는 픽셀들을 필터링된 결과값이 생성되는 대로 각각의 단계에서 수직 필터로 포워딩(Forwarding)하여 준다.In the conventional general configuration, the input pixel data is output through the pipeline stage, and the filtered pixel data is output at the same time in the final stage of the pipeline. The horizontal filter 260 of the present invention forwards the pixels that can be generated first without passing through the final stage of the pipeline in the pipeline stage to the vertical filter in each stage as the filtered result is generated.

즉, 도 2의 수평 필터(260) P 블록 우측에는 4개의 블록들이 기재되어 있는데, 이들 4개의 블록은 최종 단계가 아닌 결과값이 생성된 단계에서 바로 그 값을 MUX로 출력함을 의미한다. That is, four blocks are described on the right side of the P block of the horizontal filter 260 of FIG. 2, which means that the four blocks output the value directly to the MUX at the stage where the result value is generated rather than the final stage.

도 5는 본 발명에 따른 수직 필터의 픽셀 입력 및 처리 방법을 나타낸 도면이다. 5 is a diagram illustrating a pixel input and processing method of a vertical filter according to the present invention.

수직 필터(270)는 기존의 필터와는 달리 파이프라인 각 단계에서 픽셀 한 쌍씩을 입력받아 처리하는 구조를 가지고 있다. 블록 사이의 수직 에지를 기준으로 왼쪽 블록을 P 블록, 오른쪽 블록을 Q 블록으로 정의한다. 또한, 수평 에지를 기준으로 위쪽 블록을 P 블록 아래쪽 블록을 Q 블록으로 명명한다.Unlike the existing filter, the vertical filter 270 has a structure of receiving and processing a pair of pixels at each stage of the pipeline. The left block is defined as a P block and the right block is defined as a Q block based on the vertical edges between the blocks. In addition, the upper block is referred to as the P block and the lower block as the Q block based on the horizontal edge.

P 블록과 Q 블록 사이에 위치한 에지를 중심으로 에지에서 가까운 곳에서 먼 곳의 순서로 동일한 에지와의 거리를 갖고 있는 두 픽셀이 한 쌍의 픽셀을 구성한다. 즉, 픽셀 쌍은 P3과 Q3, P2와 Q2, P1과 Q1 및 P0과 Q0로 구성된다.A pair of pixels constitutes a pair of pixels having a distance from the same edge in the order of the distance from the near to the edge around the edge located between the P block and the Q block. That is, the pixel pair is composed of P3 and Q3, P2 and Q2, P1 and Q1, and P0 and Q0.

수직 필터(270)의 파이프라인 각 단계에서 입력받은 픽셀 쌍 또는 그 이전 단계에서 수행된 연산의 결과를 입력으로 하여 연산을 수행하게 된다. 구체적으로, 본 발명에서 0~3 단계의 파이프라인은 각각의 픽셀 쌍을 입력으로 받아 처리하는 한편, 그 다음 단계에서는 이전 단계에서 연산된 값과 입력 픽셀 쌍 데이터를 입력받아 처리한다. 4 단계의 파이프라인부터는 모든 픽셀 값과 구해진 중간 연산 결과 값들을 가지고 연산을 처리하도록 구성된다.The operation is performed by inputting the result of the operation performed in the pixel pair received at each stage of the pipeline of the vertical filter 270 or the previous stage. Specifically, in the present invention, the pipelines of stages 0 to 3 receive and process each pixel pair as inputs, while the next stage receives and processes input values and input pixel pair data calculated in the previous stage. From the pipeline of the fourth stage, it is configured to process the operation with all pixel values and obtained intermediate operation result values.

기존의 방식에서는 수직 에지를 기준으로 필터링 할 때 P 블록에 속하는 1×4 수평 한 줄의 픽셀들을 필터부에서 수평 필터링한 후 그 결과를 4×4 전치 버퍼 블록에 쓰는 동작을 수행한다. P 블록을 구성하는 네 개의 1×4 줄에 대하여 차례로 수행하여 P 블록에 대한 4×4 필터링 결과를 모두 얻은 후에는 이를 각각 4×1 수직 한 라인의 픽셀 데이터로 출력하여 이를 수직 필터의 입력으로 주거나 별도의 버퍼에 향후의 수직 필터링을 위하여 열 방향으로 전치된 형태로 임시로 저장하는 과정을 수행한다.In the conventional method, when filtering based on the vertical edge, the filter unit horizontally filters 1 × 4 horizontal rows of pixels belonging to the P block and writes the result to the 4 × 4 pre-buffer block. After performing all four 1 × 4 lines of the P block in order to obtain all 4 × 4 filtering results for the P block, they are output as 4 × 1 vertical one-pixel pixel data, respectively. A temporary buffer is used for temporary storage in the column direction for future vertical filtering.

이러한 전치 행렬 연산은 H.264/AVC 표준에 제시된 디블록킹 연산에는 규정되어 있지 않은 부수적인 과정으로 본 발명의 수직 필터(270)에서는 전치되어야 하는 입력은 상기 방식으로 수평 필터(260)의 출력을 수직 필터의 입력으로 픽셀 쌍별로 입력해주는 간단한 먹스(MUX)만으로 해결하고 최종 필터링한 결과의 출력을 버스에서 사용하는 정렬 방식으로 다시 변환하기 위해 필요한 전치 연산은 기존의 방식과 달리 필터링을 수행해 나가는 파이프라인 단계 레지스터에서 전치 동작을 포함하여 수행할 수 있도록 한다.This prematrix operation is a secondary process that is not defined in the deblocking operation presented in the H.264 / AVC standard. In the vertical filter 270 of the present invention, the input to be transposed is used to output the output of the horizontal filter 260 in this manner. The pre-operation required to solve the simple MUX input by pixel pairs as the input of the vertical filter and convert the output of the final filtered result into the sorting method used on the bus is different from the conventional method. Allows you to perform prefix operations in line step registers.

이상에서 대표적인 실시예를 통하여 본 발명에 대하여 상세하게 설명하였으나, 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 상술한 실시예에 대하여 본 발명의 범주에서 벗어나지 않는 한도 내에서 다양한 변형이 가능함을 이해할 것이다. 그러므로 본 발명의 권리 범위는 설명된 실시예에 국한되어 정해져서는 안 되며, 후술하는 특허청구범위뿐만 아니라 이 특허청구범위와 균등한 것들에 의하여 정해져야 한다.Although the present invention has been described in detail through the representative embodiments, those skilled in the art to which the present invention pertains can make various modifications without departing from the scope of the present invention. Will understand. Therefore, the scope of the present invention should not be limited to the described embodiments, but should be defined by the claims below and equivalents thereof.

도 1은 일반적인 매크로블록 단위의 비디오 코덱 부호화기의 블록 구성을 나타낸 도면.1 is a block diagram of a video codec encoder in units of typical macroblocks.

도 2는 본 발명의 일 실시예에 따른 디블록킹 필터의 블록 구성을 나타낸 도면.2 is a block diagram illustrating a deblocking filter according to an embodiment of the present invention.

도 3은 본 발명에 따른 에지 필터링 처리 순서를 나타낸 도면.3 illustrates an edge filtering processing sequence according to the present invention.

도 4는 본 발명에 따른 A-버퍼 메모리에 저장되는 데이터의 이동 방향을 나타낸 도면.4 is a diagram illustrating a moving direction of data stored in an A-buffer memory according to the present invention;

도 5는 본 발명에 따른 수직 필터의 픽셀 입력 및 처리 방법을 나타낸 도면.5 illustrates a pixel input and processing method of a vertical filter in accordance with the present invention.

<도면의 주요 부분에 대한 부호 설명><Description of the symbols for the main parts of the drawings>

200 : 디블록킹 필터 210 : A 버퍼 메모리200: deblocking filter 210: A buffer memory

220 : B 버퍼 메모리 230 : 외부 버퍼 메모리220: B buffer memory 230: external buffer memory

240 : 경계면 세기 판단부 및 임계치 생성부240: boundary strength determination unit and threshold generation unit

250 : 파이프라인 제어기 260 : 수평 필터250: pipeline controller 260: horizontal filter

270 : 수직 필터 281 : 제1 포워딩 수단270 vertical filter 281 first forwarding means

282 : 제2 포워딩 수단 283 : 제3 포워딩 수단 282: second forwarding means 283: third forwarding means

Claims (8)

디블록킹 필터에 있어서,In the deblocking filter, 매크로 블록의 열 방향 데이터를 저장하기 위한 A 버퍼 메모리;An A buffer memory for storing column direction data of a macro block; 매크로 블록의 행 방향 데이터를 저장하기 위한 B 버퍼 메모리;A B buffer memory for storing row direction data of a macro block; 상기 A 버퍼 메모리에 저장되어 있는 열 방향 데이터를 이용하여 적어도 하나의 파이프 단계별로 수직 에지에 대하여 수평 필터링을 수행하고, 그 결과 데이터를 해당 단계에서 출력하는 수평 필터; 및A horizontal filter performing horizontal filtering on vertical edges in at least one pipe step by using column direction data stored in the A buffer memory, and outputting the result data in a corresponding step; And 상기 B 버퍼 메모리에 저장되어 있는 행 방향 데이터와 상기 수평 필터가 출력한 결과 데이터를 입력받아 수평 에지에 대하여 수직 필터링을 수행하는 수직 필터를 포함하는 디블록킹 필터.And a vertical filter which receives the row direction data stored in the B buffer memory and the result data output by the horizontal filter and performs vertical filtering on horizontal edges. 제1항에 있어서,The method of claim 1, 상기 A 버퍼 메모리는,The A buffer memory, 현재 처리할 매크로 블록의 필터링 시작 시점에서, 현재 처리할 매크로 블록의 좌측 매크로 블록 중 최우측 열에 해당하는 픽셀 데이터를 저장하는 것을 특징으로 하는 디블록킹 필터.And a pixel data corresponding to the rightmost column of the left macroblock of the macroblock to be processed at the start of filtering the macroblock to be processed at present. 제1항에 있어서,The method of claim 1, 상기 B 버퍼 메모리는,The B buffer memory, 현재 처리할 매크로 블록의 필터링 시작 시점에서, 현재 처리할 매크로 블록의 상측 매크로 블록 중 최하측 행에 해당하는 픽셀 데이터를 저장하는 것을 특징으로 하는 디블록킹 필터.And at the start of filtering the macroblock to be processed, storing pixel data corresponding to the lowest row among the upper macroblocks of the macroblock to be processed. 제1항에 있어서,The method of claim 1, 상기 수평 필터가 수평 필터링한 결과 데이터를 상기 수평 필터로 재입력하기 위한 제1 포워딩 수단;First forwarding means for re-inputting the horizontal filter result data into the horizontal filter; 상기 수평 필터가 수평 필터링한 결과 데이터를 상기 수직 필터로 입력하기 위한 제2 포워딩 수단; 및Second forwarding means for inputting the horizontal filtering result data into the vertical filter; And 상기 수직 필터가 수직 필터링한 결과 데이터를 상기 수직 필터로 재입력하기 위한 제3 포워딩 수단을 더 포함하는 것을 특징으로 하는 디블록킹 필터.And a third forwarding means for re-inputting the vertical filter result data into the vertical filter. 제4항에 있어서,The method of claim 4, wherein 상기 수평 필터는,The horizontal filter, 적어도 하나 이상의 단계로 구성된 파이프라인에서, 상기 A 버퍼 메모리, 상기 제1 포워딩 수단 또는 상기 디블록킹 필터 외부에 위치한 메모리 중 적어도 하나로부터 재입력된 결과 데이터를 이용하여 필터링 연산을 수행하는 것을 특징으로 하는 디블록킹 필터.In the pipeline consisting of at least one or more stages, the filtering operation is performed using the result data re-input from at least one of the A buffer memory, the first forwarding means or a memory located outside the deblocking filter. Deblocking Filter. 제4항에 있어서,The method of claim 4, wherein 상기 수직 필터는,The vertical filter, 파이프라인 단계 중 적어도 하나의 단계에서, 상기 수평 필터 또는 상기 B 버퍼 메모리로부터 하나의 픽셀 쌍 데이터를 입력받고, 상기 입력된 픽셀 쌍 데이터 또는 이전 파이프라인 단계에서 처리되어 상기 제3 포워딩 수단을 통해 재입력된 결과 데이터를 이용하여 필터링 연산을 수행하는 것을 특징으로 하는 디블록킹 필터.In at least one of the pipeline stages, one pixel pair data is received from the horizontal filter or the B buffer memory and processed in the input pixel pair data or previous pipeline stages and re-processed through the third forwarding means. A deblocking filter, wherein the filtering operation is performed using the input result data. 제1항에 있어서,The method of claim 1, 상기 B 버퍼 메모리에 저장되어 있는 행 방향 데이터에 대한 수직 필터링을 수행한 결과데이터 및 상기 수평 필터가 출력한 결과 데이터를 입력받아 수평 에지에 대하여 수직 필터링을 수행한 결과 데이터를 행 방향 라인의 데이터로 전치하기 위한 버퍼를 더 포함하는 것을 특징으로 하는 디블록킹 필터.The result data of performing vertical filtering on the row direction data stored in the B buffer memory and the result data output by the horizontal filter are input, and the result data of performing vertical filtering on the horizontal edge as the data of the row direction line. And a buffer for transposing. 제7항에 있어서,The method of claim 7, wherein 상기 버퍼는 상기 수직 필터의 파이프라인 레지스터로 구현되는 것을 특징으로 하는 디블록킹 필터.And said buffer is implemented as a pipeline register of said vertical filter.
KR1020090080453A 2009-08-28 2009-08-28 Pipielined deblocking filter using two filters simultaneously KR101004825B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020090080453A KR101004825B1 (en) 2009-08-28 2009-08-28 Pipielined deblocking filter using two filters simultaneously

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020090080453A KR101004825B1 (en) 2009-08-28 2009-08-28 Pipielined deblocking filter using two filters simultaneously

Publications (1)

Publication Number Publication Date
KR101004825B1 true KR101004825B1 (en) 2010-12-28

Family

ID=43513496

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020090080453A KR101004825B1 (en) 2009-08-28 2009-08-28 Pipielined deblocking filter using two filters simultaneously

Country Status (1)

Country Link
KR (1) KR101004825B1 (en)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101720216B1 (en) * 2016-02-29 2017-03-28 한밭대학교 산학협력단 Method for filtering of in-loop filter and apparatus for performing filtering method of in-loop filter

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040228415A1 (en) 2003-05-13 2004-11-18 Ren-Yuh Wang Post-filter for deblocking and deringing of video data
KR100843196B1 (en) 2004-12-17 2008-07-02 삼성전자주식회사 Deblocking filter of H.264/AVC video decoder

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20040228415A1 (en) 2003-05-13 2004-11-18 Ren-Yuh Wang Post-filter for deblocking and deringing of video data
KR100843196B1 (en) 2004-12-17 2008-07-02 삼성전자주식회사 Deblocking filter of H.264/AVC video decoder

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101720216B1 (en) * 2016-02-29 2017-03-28 한밭대학교 산학협력단 Method for filtering of in-loop filter and apparatus for performing filtering method of in-loop filter

Similar Documents

Publication Publication Date Title
KR100843196B1 (en) Deblocking filter of H.264/AVC video decoder
US20060115002A1 (en) Pipelined deblocking filter
CN107197259B (en) Through segment or the loop circuit filtering method and its device of band boundaries
CN103947208B (en) Reduce the method and device of deblocking filter
KR20140029436A (en) Method and apparatus for reduction of in-loop filter buffer
Shih et al. A near optimal deblocking filter for H. 264 advanced video coding
TW201332362A (en) Method and apparatus for decoding video data
WO2006078454A1 (en) Method and apparatus for intra prediction for rru
KR100842557B1 (en) Method for accessing memory in moving picture processing device
KR100614647B1 (en) Register array structure for effective edge filtering operation of deblocking filter
KR20060003426A (en) Pipeline decoding apparatus and method, and computer-readable recording media for storing computer program for controlling the apparatus
CN104521234B (en) Merge the method for processing video frequency and device for going block processes and sampling adaptive migration processing
JP2006157925A (en) Pipeline deblocking filter
Li et al. De-blocking filter design for HEVC and H. 264/AVC
KR101051871B1 (en) Apparatus and method for determining boundary strength coefficient in deblocking filter
KR101004825B1 (en) Pipielined deblocking filter using two filters simultaneously
CN103491372A (en) Filtering method of blocking-removing filter suitable for HEVC standard
JP2007258882A (en) Image decoder
KR20050121627A (en) Filtering method of audio-visual codec and filtering apparatus thereof
WO2022116824A1 (en) Video decoding method, video encoding method, related devices, and storage medium
KR20020053336A (en) High speed deblocking filter device
KR20140138537A (en) Method and apparatus for filtering pixel blocks
Messaoudi et al. Performance comparison of two hardware implementations of the deblocking filter used in H. 264 by changing the utilized data width
KR101073150B1 (en) Deblocking Filtering Unit with a Reconfigurable Data-Path and Method Thereof
KR101475286B1 (en) Method and apparatus for intra prediction, and apparatus for processing picture

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: 20131007

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20140923

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee