KR100836534B1 - A low power sub-pixel interpolator architecture - Google Patents

A low power sub-pixel interpolator architecture Download PDF

Info

Publication number
KR100836534B1
KR100836534B1 KR1020060120670A KR20060120670A KR100836534B1 KR 100836534 B1 KR100836534 B1 KR 100836534B1 KR 1020060120670 A KR1020060120670 A KR 1020060120670A KR 20060120670 A KR20060120670 A KR 20060120670A KR 100836534 B1 KR100836534 B1 KR 100836534B1
Authority
KR
South Korea
Prior art keywords
pixels
interpolation
submacroblock
integer pixels
block
Prior art date
Application number
KR1020060120670A
Other languages
Korean (ko)
Other versions
KR20080049998A (en
Inventor
경종민
김선필
Original Assignee
한국과학기술원
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 한국과학기술원 filed Critical 한국과학기술원
Priority to KR1020060120670A priority Critical patent/KR100836534B1/en
Publication of KR20080049998A publication Critical patent/KR20080049998A/en
Application granted granted Critical
Publication of KR100836534B1 publication Critical patent/KR100836534B1/en

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • H04N19/433Hardware specially adapted for motion estimation or compensation characterised by techniques for memory access
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/182Methods 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 a pixel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/523Motion estimation or motion compensation with sub-pixel accuracy
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution

Abstract

서브픽셀 보간블록은 정수 픽셀 데이터를 수직적으로 재사용하기 위해, 복수의 서브매크로블록들의 정수 픽셀들을 입력받아 보간하여 서브 픽셀을 각각 생성하는 가로 및 세로 보간기들, 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제1 및 제2 서브매크로블록들의 보간 영역들 중 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하고, 상기 제2 서브매크로블록의 보간 연산 시에 상기 버퍼링된 정수 픽셀들을 출력하는 적어도 두 개의 라인 버퍼들, 그리고 상기 라인 버퍼들과 외부의 메모리 중에서 선택적으로 입력된 정수 픽셀들을 상기 세로 보간기들에 제공하는 멀티플렉서들을 포함한다.The subpixel interpolation blocks are horizontal and vertical interpolators that respectively receive subpixels of a plurality of submacroblocks and generate subpixels to vertically reuse integer pixel data. Buffers all or some of the integer pixels included in the overlapping regions of the interpolation regions of the first and second submacroblocks whose interpolation operations are not adjacent to each other by horizontal lines during the interpolation operation of the first submacroblock. And at least two line buffers for outputting the buffered integer pixels and an integer pixel selectively input from the line buffers and an external memory to the vertical interpolators in an interpolation operation of the second submacroblock. It provides multiplexers.

Description

저전력 서브 픽셀 보간 블록 구조{A LOW POWER SUB-PIXEL INTERPOLATOR ARCHITECTURE}LOW POWER SUB-PIXEL INTERPOLATOR ARCHITECTURE

도 1은 하프 샘플 위치에서 움직임 추정 및 보상 연산을 할 경우에 서브 픽셀 보간을 위한 메모리 참조를 설명하기 위한 개념도이다.1 is a conceptual diagram illustrating a memory reference for subpixel interpolation when a motion estimation and compensation operation is performed at a half sample position.

도 2a는 종래 기술에서 연산 순서에서 서로 떨어져 있는 서브매크로블록들 사이에서도 메모리 값을 수평적으로 재사용할 수 있는 서브픽셀 보간블록의 블록도이고, 도 2b는 도 2a의 서브픽셀 보간블록에 사용되는 CSB(Context Switching Buffer)의 블록도이다.FIG. 2A is a block diagram of a subpixel interpolation block capable of horizontally reusing a memory value even among submacroblocks spaced apart from each other in an operation order in the prior art, and FIG. 2B is used for the subpixel interpolation block of FIG. 2A. A block diagram of a context switching buffer (CSB).

도 3은 본 발명의 일 실시예에 따라 서브픽셀 보간블록에서 메모리 값을 수직적으로 재사용하는 것을 설명하기 위한 개념도이다.3 is a conceptual diagram illustrating vertical reuse of memory values in a subpixel interpolation block according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 서브픽셀 보간블록을 예시한 블록도이다4 is a block diagram illustrating a subpixel interpolation block according to an embodiment of the present invention.

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

I0, I1, I2 : 0번 내지 2번 서브매크로블록의 보간 영역I0, I1, I2: Interpolation area of sub macroblocks 0 to 2

I01 : 0번과 1번 서브매크로블록의 보간 영역이 서로 겹치는 영역I01: Area where interpolation areas of sub macroblocks 0 and 1 overlap

I02 : 0번과 2번 서브매크로블록의 보간 영역이 서로 겹치는 영역I02: Area where interpolation areas of sub macroblocks 0 and 2 overlap with each other

421 내지 424 : 멀티플렉서421 to 424: multiplexer

431 내지 434 : 세로 보간기431 to 434: vertical interpolator

441 내지 449 : 레지스터체인441 to 449: register chain

451 내지 459 : 가로 보간기451 to 459: horizontal interpolator

461 내지 464 : 라인 버퍼461-464 line buffer

본 발명은 동영상 코덱에 관한 것으로, 더욱 상세하게는 움직임 보상을 이용하는 동영상 코덱을 하드웨어로 구현한 구조에 관한 것이다. The present invention relates to a video codec, and more particularly, to a structure in which a video codec using motion compensation is implemented in hardware.

MPEG-4와 H.264는 최근에 가장 주목받는 영상 코덱들이다. MPEG-4는 국제 표준화 기구(ISO) 소속의 워킹 그룹인 MPEG(Moving Picture Experts Group)에서 개발된 것이고, H.264는 국제 통신 위원회(ITU-T) 소속의 워킹 그룹인 VCEG(Video Coding Experts Group)에서 시작되었다. MPEG-4와 H.264 표준안들은 모두 시각 데이터의 압축과 복원에 관련되어 있고 유사한 기술을 이용하는 부분이 많지만, MPEG-4는 직사각형의 프레임, 정지 이미지, 비디오 객체와 같은 광범위한 시각 데이터를 다룰 수 있도록 유연성을 강조하였고 H.264는 대단히 뛰어난 비디오 프레임의 압축효율과 전송효율을 제공할 수 있도록 효율과 신뢰성을 강조한다. MPEG-4 and H.264 are the most popular video codecs in recent years. MPEG-4 was developed by the Moving Picture Experts Group (MPEG), a working group of the International Organization for Standardization (ISO), and H.264 is the Video Coding Experts Group (VCEG), a working group of the International Telecommunications Commission (ITU-T). Started at). While the MPEG-4 and H.264 standards are both involved in the compression and decompression of visual data and often use similar techniques, MPEG-4 can handle a wide range of visual data such as rectangular frames, still images, and video objects. Flexibility is emphasized, and H.264 emphasizes efficiency and reliability to provide exceptional compression and transmission efficiency for video frames.

MPEG-1, MPEG-2, H.261, H.263 등의 영상 코덱에 관한 다른 표준안들과 마찬가지로 두 표준안도 모두 블록기반 움직임 추정 및 보상 기법, 이산 여현 변환, 양자화, 엔트로피 코딩 등을 사용한다는 점에서 일반적인 특징들을 공유한다고 볼 수 있다. 이 중에서, 블록기반의 움직임 추정 및 보상은 주어진 시각 데이터를 압축 및 복원하는 과정 중에서 가장 많은 연산을 요구하는 프로세스라 할 수 있다. Like other standards for video codecs such as MPEG-1, MPEG-2, H.261, and H.263, both standards use block-based motion estimation and compensation techniques, discrete cosine transform, quantization, and entropy coding. In this respect, it can be said that they share common features. Among these, block-based motion estimation and compensation are processes that require the most computation among processes of compressing and reconstructing given visual data.

상기 표준안들에서는 기본적으로 MxN개의 픽셀로 이루어진 서브매크로블록과, 4x4개(즉 16개)의 서브매크로블록으로 이루어진 매크로블록을 기본 단위로 하여 움직임 추정 및 보상을 수행한다. 특히 MPEG-4와 H.264는 매크로블록단위로 비디오 프레임을 처리한다. 이하에서, 매크로블록 또는 서브매크로블록, 움직임 추정 및 움직임 보상이라는 용어들은 표준안별로 구분하지 않는다.In the above standards, motion estimation and compensation are performed based on a basic macroblock composed of M × N pixels and a macroblock composed of 4 × 4 (ie, 16) submacroblocks. In particular, MPEG-4 and H.264 process video frames in macroblock units. In the following, the terms macroblock or submacroblock, motion estimation and motion compensation are not divided by standard.

서브매크로블록의 움직임 추정은 현재의 서브매크로블록과 가장 비슷한 16x16 픽셀 영역을 참조 프레임에서 찾아내는 연산이다. 참조 프레임은 이전에 인코딩된 프레임으로, 화면에 표시되는 시간적 순서는 현재 프레임의 이전일 수도 있고, 이후일 수도 있다. 참조프레임에서, 현재 서브매크로블록 위치를 중심으로 하는 소정 면적의 영역을 탐색하여, 그 중에서 현재 서브매크로블록과의 차이(오차)가 가장 작은 16x16 영역을 가장 일치하는 영역으로 선택한다. 상기 현재 서브매크로블록의 위치에 대한 상기 가장 일치하는 영역의 상대적인 위치를 움직임 벡터(Motion Vector)라고 한다. 현재 서브매크로블록에서 상기 가장 일치하는 영역을 뺀 오차 서브매크로블록은 상기 움직임 벡터와 함께 코딩된다. 움직임 보상은 코딩된 오차 서브매크로블록, 움직임 벡터, 가장 일치하는 영역, 참조 프레임 등을 이용하여 원래의 현재 서브매크로블록을 재구성하는 연산이다. The motion estimation of the submacroblock is an operation of finding the 16x16 pixel area in the reference frame that is most similar to the current submacroblock. The reference frame is a previously encoded frame, and the temporal order displayed on the screen may be before or after the current frame. In the reference frame, an area of a predetermined area centered on the current submacroblock position is searched, and the 16x16 area having the smallest difference (error) with the current submacroblock is selected as the most matching area. The relative position of the closest region with respect to the position of the current submacroblock is called a motion vector. The error submacroblock subtracting the most matching region from the current submacroblock is coded together with the motion vector. Motion compensation is an operation for reconstructing the original current submacroblock using a coded error submacroblock, a motion vector, a closest match region, a reference frame, and the like.

움직임 추정 및 보상에서, 비디오 객체가 프레임 사이에서 항상 정수 단위로 움직일 리는 없기 때문에, 참조 프레임의 픽셀 위치가 정수가 아닌 소수인 위치(이를 서브 픽셀 위치라 한다)를 가질 수 있도록 보간법(interpolation)이 일반적으로 사용된다. 참조 프레임의 보간된 샘플 위치에서 움직임 추정 및 보상을 수행하는 것을 서브 픽셀 보간이라고 한다. 일반적으로 먼저 정수 샘플 위치에서 1차 움직임 추정을 수행하여 가장 일치하는 영역 찾는다. 상기 가장 일치하는 영역을 중심으로 1/2 샘플(half sample) 위치에서 2차 움직임 추정을 수행한다. 필요한 경우 1/4 샘플(quarter-sample) 위치에서 한차례 더 움직임 추정을 수행할 수도 있다.In motion estimation and compensation, interpolation allows a video object to have a non-integer, non-integer position (this is called a subpixel position) because the video object may not always move in integers between frames. This is commonly used. Performing motion estimation and compensation at the interpolated sample position of the reference frame is called subpixel interpolation. In general, first-order motion estimation is performed at integer sample positions to find the best match. Secondary motion estimation is performed at a half sample position around the most matched region. If necessary, one more motion estimation may be performed at the quarter-sample position.

도 1은 하프 샘플 위치에서 움직임 추정 및 보상 연산을 할 경우에 서브 픽셀 보간을 위한 메모리 참조를 설명하기 위한 개념도이다.1 is a conceptual diagram illustrating a memory reference for subpixel interpolation when a motion estimation and compensation operation is performed at a half sample position.

도 1을 참조하면, 어느 참조 프레임의 한 매크로블록은 각각 4x4 개의 픽셀로 이루어진 0번 ~ 15번 서브매크로블록으로 구성되어 있다. 그중 0번 서브매크로블록에 대해 서브 픽셀 보간을 하려면, 0번 서브매크로블록을 둘러싼 소정 면적의 보간 영역(I0)을 설정하고 상기 보간 영역(I0) 내의 정수 픽셀(integer pixel) 값들을 메모리에서 읽어들여 보간 연산을 수행하고 하프 픽셀(half pixel)들을 얻는다. 1번 서브매크로블록에 대해서도 상응하는 보간 영역(I1)이 설정된다. 만약에, 인접한 서브매크로블록들이 서로 같은 움직임벡터를 가지며 연산도 이어서 이뤄진다면 서브 픽셀 보간을 위해 정수 픽셀들 값도 다시 재사용될 수 있다. 예를 들어, 0번 서브매크로블록과 1번 서브매크로블록이 같은 움직임벡터를 가지고 있고 연이어 연산된다면, 두 서브매크로블록들에 상응하는 두 보간 영역들(I0, I1)의 겹치는 영역(I01)의 정수 픽셀들은 동일하므로, 그 영역(I01) 내의 정수 픽셀들에 해당하는 값들은 외부의 메모리에서 다시 읽어오지 않고 그대로 재사용될 수 있다.Referring to FIG. 1, one macroblock of a reference frame includes sub macroblocks 0 to 15 each consisting of 4x4 pixels. In order to perform subpixel interpolation for sub macroblock 0, an interpolation region I0 having a predetermined area surrounding sub macroblock 0 is set, and integer pixel values in the interpolation region I0 are read from memory. Indent the interpolation operation and get half pixels. The corresponding interpolation area I1 is also set for the first sub macroblock. If adjacent submacroblocks have the same motion vector and the operation is subsequently performed, integer pixel values can be reused again for subpixel interpolation. For example, if the submacroblock 0 and the submacroblock 1 have the same motion vector and are sequentially calculated, the overlapping area I01 of the two interpolation areas I0 and I1 corresponding to the two submacroblocks is calculated. Since the integer pixels are the same, the values corresponding to the integer pixels in the area I01 can be reused as they are without being read back from the external memory.

인접한 서브매크로블록들이 같은 움직임벡터를 가지며 연산도 연이어 일어나 는 경우는 실제로 빈번하게 일어나므로, 메모리에 저장된 값을 수평적으로 재사용하는 기법을 통해 연산 속도나 전력 소모를 어느 정도 개선할 수 있었다.Since adjacent submacroblocks have the same motion vector and operations occur frequently, the computation speed and power consumption can be improved to some extent through the technique of horizontal reuse of values stored in memory.

그런데, 1번 서브매크로블록과 4번 서브매크로블록은 인접해 있지만 연산 순서에서 동떨어져있기 때문에 비록 동일한 정수 픽셀들을 이용하여 보간 연산하더라도 4번 서브매크로블록에 대해 보간 연산할 때에 이 정수 픽셀들의 값들을 재사용할 수가 없었다. However, since the submacroblock 1 and the submacroblock 4 are adjacent to each other but are separated from each other in the calculation order, even though the interpolation operation is performed using the same integer pixels, the values of these integer pixels when the interpolation operation is performed on the submacroblock 4 is performed. Could not reuse them.

도 2a는 종래 기술에서 연산 순서에서 이격된 서브매크로블록들 사이에서도 메모리 값을 수평적으로 재사용할 수 있는 서브픽셀 보간블록의 블록도이고, 도 2b는 도 2a의 서브픽셀 보간블록에 사용되는 CSB의 블록도이다.FIG. 2A is a block diagram of a subpixel interpolation block capable of horizontally reusing a memory value even among submacroblocks spaced in a calculation order in the prior art, and FIG. 2B is a CSB used in the subpixel interpolation block of FIG. 2A. Is a block diagram of.

도 2a를 참조하면, 서브픽셀 보간블록은 어느 서브매크로블록과 그 주변의 보간 영역에 대해 가로 보간과 세로 보간을 수행한다. 서브매크로블록은 설명의 편의를 위해 4x4 픽셀로 구성된다. 상기 서브픽셀 보간블록은 9개의 정수 픽셀들을 각각 입력받는 입력 버퍼들(21), 세로 보간 연산을 수행하는 세로 보간기들(22), 정수 픽셀들을 순차적으로 쉬프트 저장하는 정수 픽셀 버퍼들(23), 세로 보간 결과들을 순차적으로 저장하는 하프 픽셀 버퍼들(24), 가로 보간 연산을 수행하는 가로 보간기들(25)을 포함한다.Referring to FIG. 2A, a subpixel interpolation block performs horizontal interpolation and vertical interpolation on an interpolation region around a sub macroblock. The submacroblock is composed of 4x4 pixels for convenience of description. The subpixel interpolation block includes input buffers 21 for receiving nine integer pixels, vertical interpolators 22 for performing vertical interpolation operations, and integer pixel buffers 23 for sequentially shift storing integer pixels. Half pixel buffers 24 sequentially storing vertical interpolation results, and horizontal interpolators 25 performing horizontal interpolation operations.

상기 서브픽셀 보간블록은 세로로는 한 하프 샘플 위치 당 각각 6 개의 정수 픽셀들을 입력받아 세로 보간기들(22)들을 이용하여 보간 연산을 수행하고, 보간 연산 결과인 하프 픽셀들을 각 하프 픽셀 버퍼(24)들에 순차적으로 저장한다. 가로로는 한 하프 샘플 위치 당 각각 6 개의 정수 픽셀 버퍼(23)들 또는 위에서 구한 하프 픽셀 버퍼(24)들의 출력을 가로 보간기들(25)에 입력시켜 각 하프 샘플 위치에 해당하는 보간값을 연산할 수 있다. 상기 세로 보간기들(22) 및 가로 보간기들(25)은 FIR(Finite Impulse Response) 필터들이다.The subpixel interpolation block vertically receives six integer pixels per half sample position and performs interpolation using the vertical interpolators 22, and the half pixels, which are the result of the interpolation operation, are stored in each half pixel buffer ( 24) sequentially. Horizontally, the inputs of the six integer pixel buffers 23 or the half pixel buffers 24 obtained above are input to the horizontal interpolators 25 for each half sample position, and an interpolation value corresponding to each half sample position is input. Can be calculated. The vertical interpolators 22 and the horizontal interpolators 25 are finite impulse response (FIR) filters.

도 2b를 참조하면, 도 2a의 하프 픽셀 버퍼들과 정수 픽셀 버퍼들은 컨텍스트 스위치 버퍼(Context Switch Buffer, CSB)라고 하며, 각각 제1 및 제2 멀티플렉서(231, 232), 쉬프트 레지스터(233) 및 스위칭 레지스터(234)를 포함한다. 상기 쉬프트 레지스터(233)는 현재 보간되는 값을 저장하며, 상기 스위칭 레지스터(234)는 추후에 재사용할 값을 저장한다. 상기 제1 멀티플렉서(231)는 입력되는 값과 재사용을 위해 저장된 값 중에 선택한 한 값을 쉬프트 레지스터(233)에 전달한다. 상기 제2 멀티플렉서(232)는 현재 보간되는 값이 재사용될 값이면 이를 상기 스위칭 레지스터(234)에 전달한다. 이러한 CSB(23)를 이용하여 상기 저장된 정수 픽셀들은 연속하지 않는 서브매크로블록들 사이에서 재사용될 수 있다. Referring to FIG. 2B, the half pixel buffers and the integer pixel buffers of FIG. 2A are referred to as context switch buffers (CSBs), and the first and second multiplexers 231 and 232, the shift register 233, and And a switching register 234. The shift register 233 stores a value currently being interpolated, and the switching register 234 stores a value to be reused later. The first multiplexer 231 transfers a value selected from an input value and a stored value for reuse to the shift register 233. The second multiplexer 232 transfers the current interpolated value to the switching register 234 if it is a value to be reused. Using this CSB 23, the stored integer pixels can be reused between non-contiguous submacroblocks.

이러한 구조의 서브픽셀 보간블록을 이용하면, 도 1의 매크로블록에서 1번과 4번 서브매크로블록들, 3번과 6번 서브매크로블록들, 9번과 12번 서브매크로블록들, 그리고 11번과 14번 서브매크로블록들의 4 가지 경우에 정수 픽셀들을 저장해두었다가 나중에 재사용하는 이른바 수평적 재사용이 가능하다.Using the subpixel interpolation block of this structure, sub macro blocks 1 and 4, sub macro blocks 3 and 6, sub macro blocks 9 and 12, and 11 in the macroblock of FIG. In four cases of and macroblocks 14 and 14, integer horizontal pixels are stored and reused later.

그러나, CSB는 각각 두 개의 8비트 레지스터와 2개의 8비트 멀티플렉서를 가지며, 하나의 서브픽셀 보간블록은 54개의 CSB를 가진다. 이때 CSB는 하드웨어로 구현할 때 각자 상당한 면적이 필요하며 소모하는 전력도 적지 않다. 또한, CSB는 각자 두 개씩의 멀티플렉서들에 대해 제어 신호들을 인가하여야 하므로 매우 복잡 해진다. 상기 서브픽셀 보간블록은 이러한 CSB를 매우 많이 필요로 하므로, 외부 메모리를 참조하는 회수를 줄일 수 있다는 장점에도 불구하고, 면적을 많이 차지하고 전력을 많이 소모한다는 단점을 가진다.However, each CSB has two 8-bit registers and two 8-bit multiplexers, and one subpixel interpolation block has 54 CSBs. In this case, each CSB requires a considerable area when implemented in hardware and consumes little power. In addition, the CSB becomes very complicated because it must apply control signals to two multiplexers each. Since the subpixel interpolation block requires such a large number of CSBs, the subpixel interpolation block occupies a large area and consumes a lot of power despite the advantage of reducing the number of references to external memory.

본 발명의 목적은 움직임 추정 및 보상 연산 시에 외부 메모리를 참조하는 횟수를 줄일 수 있는 서브픽셀 보간 블록을 제공하는 것이다. An object of the present invention is to provide a subpixel interpolation block which can reduce the number of times of referencing an external memory during motion estimation and compensation operation.

본 발명의 다른 목적은 움직임 추정 및 보상 연산 시에 외부 메모리를 참조하는 회수를 줄일 수 있는 서브픽셀 보간 블록을 포함하는 비디오 코덱을 제공하는 것이다. Another object of the present invention is to provide a video codec including a subpixel interpolation block which can reduce the number of times of referring to an external memory during motion estimation and compensation operation.

본 발명의 다른 목적은 움직임 추정 및 보상 연산 시에 외부 메모리를 참조하는 횟수를 줄일 수 있는 서브픽셀 보간 방법을 제공하는 것이다. Another object of the present invention is to provide a subpixel interpolation method capable of reducing the number of times of referencing an external memory in a motion estimation and compensation operation.

본 발명의 일 실시예에 따른 서브픽셀 보간블록은 가로,세로 보간기들, 적어도 두개의 라인 버퍼들 및 멀티플렉서들을 포함한다. 상기 세로 보간기는 복수의 서브매크로블록들의 정수 픽셀들을 입력받아 보간하여 서브 픽셀을 각각 생성한다. 상기 라인 버퍼들은 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제1 및 제2 서브매크로블록들의 보간 영역들 중 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하고, 상기 제2 서브매크로블록의 보간 연산 시에 상기 버퍼링된 정수 픽셀들을 출력한다. 상기 멀티플렉서는 상기 라인 버퍼들과 외부의 메모리 중에서 선택적으로 입력된 정수 픽셀들을 상기 세로 보간기들에 제공한다.The subpixel interpolation block according to an embodiment of the present invention includes horizontal and vertical interpolators, at least two line buffers, and multiplexers. The vertical interpolator receives the integer pixels of the plurality of submacroblocks and interpolates to generate subpixels. The line buffers may include all or a portion of integer pixels included in an overlapping region among interpolation regions of the first and second submacroblocks that are spatially vertically adjacent and whose interpolation order is not adjacent in time. The interpolation operation of the submacroblock is buffered for each horizontal line, and the buffered integer pixels are output during the interpolation operation of the second submacroblock. The multiplexer provides the vertical interpolators with integer pixels selectively input between the line buffers and an external memory.

실시예에 따라, 상기 라인 버퍼들은 상기 서로 겹치는 영역 중에서 상기 제1 서브매크로블록의 아래쪽 절반을 포함하는 수평 라인들의 정수 픽셀들을 버퍼링할 수 있다. 이때, 상기 라인 버퍼들은 그 저장 값이 쉬프트되도록 직렬 연결된 복수의 레지스터들로 각각 구성된 적어도 하나의 재사용 레지스터 체인들을 포함할 수 있다. 또한, 상기 서브매크로블록들은 4x4 픽셀의 블록이고, 상기 적어도 하나의 재사용 레지스터 체인들은 각각 적어도 13개의 레지스터들을 포함하며, 상기 라인 버퍼들은 상기 각 재사용 레지스터 체인들의 9번째 또는 13번째 레지스터들 중 어느 한 레지스터의 저장값을 선택적으로 상기 멀티플렉서들에 각각 제공하도록 구성될 수 있다. 구체적으로 상기 라인 버퍼들은, 움직임 추정 및 보상이 4x4 픽셀, 4x8 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 9번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하고, 움직임 추정 및 보상이 8x4 픽셀, 또는 8x8 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 13번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하도록 구성될 수 있다.In example embodiments, the line buffers may buffer integer pixels of horizontal lines including a lower half of the first submacroblock in the overlapping area. In this case, the line buffers may include at least one reuse register chain each composed of a plurality of registers connected in series to shift the stored value. Further, the submacroblocks are blocks of 4x4 pixels, the at least one reuse register chains each comprising at least 13 registers, and the line buffers are any one of the ninth or thirteenth registers of the respective reuse register chains. It may be configured to selectively provide a stored value of a register to each of the multiplexers. Specifically, the line buffers provide the multiplexer with a stored value of the ninth register of each reuse register chain when the motion estimation and compensation is based on a block of 4x4 pixels and 4x8 pixels, and the motion estimation and compensation is 8x4. When based on a pixel, or block of 8x8 pixels, the multiplexer may be configured to provide a stored value of the thirteenth register of each reuse register chain.

실시예에 따라, 상기 서브픽셀 보간블록은 상기 정수 픽셀들과 상기 하프 픽셀들을 각각 가로로 보간하는 가로 보간기들을 더 포함할 수 있다.According to an embodiment, the subpixel interpolation block may further include horizontal interpolators for horizontally interpolating the integer pixels and the half pixels.

본 발명의 다른 실시예에 따른 영상 코덱은 블록 기반의 움직임 추정 및 보상을 이용하며 영상 데이터를 압축 또는 복원하며, 움직임 추정 및 보상 시에 서브픽셀 보간을 수행하는 서브픽셀 보간블록을 포함하는 것으로서, 이때 상기 서브픽 셀 보간블록은 복수의 서브매크로블록들의 정수 픽셀들을 입력받아 보간하여 서브 픽셀을 각각 생성하는 보간기들, 상기 복수의 서브매크로블록들 중에서 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제1 및 제2 서브매크로블록들의 보간 영역들 중 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하고, 상기 제2 서브매크로블록의 보간 연산 시에 상기 버퍼링된 정수 픽셀들을 출력하는 라인 버퍼들 및 상기 라인 버퍼들과 외부의 메모리 중에서 선택적으로 입력된 정수 픽셀들을 상기 보간기들에 제공하는 멀티플렉서들을 포함한다. An image codec according to another embodiment of the present invention includes a subpixel interpolation block that uses block-based motion estimation and compensation, compresses or reconstructs image data, and performs subpixel interpolation during motion estimation and compensation. In this case, the subpixel interpolation blocks are interpolators that receive integer pixels of a plurality of submacroblocks to generate interpixels, and interpolate spatially vertically and interpolate temporally among the plurality of submacroblocks. Buffer all or some of the integer pixels included in the overlapping regions of the interpolation regions of the first and second submacroblocks whose operation order is not adjacent to each other by horizontal lines during the interpolation operation of the first submacroblock, A line burr that outputs the buffered integer pixels during an interpolation operation of the second submacroblock And it includes a multiplexer for selectively providing the input to the integer pixel from said line buffer to the external memory in the interpolation groups.

실시예에 따라, 상기 라인 버퍼들은 상기 서로 겹치는 영역 중에서 상기 제1 서브매크로블록의 아래쪽 절반을 포함하는 수평 라인들의 정수 픽셀들을 버퍼링할 수 있다. 이때, 상기 라인 버퍼들은 그 저장 값이 쉬프트되도록 직렬 연결된 복수의 레지스터들로 각각 구성된 적어도 하나의 재사용 레지스터 체인들을 포함할 수 있다. 또한, 상기 서브매크로블록들은 4x4 픽셀의 블록이고, 상기 적어도 하나의 재사용 레지스터 체인들은 각각 적어도 13개의 레지스터들을 포함하며, 상기 라인 버퍼들은 상기 각 재사용 레지스터 체인들의 9번째 또는 13번째 레지스터들 중 어느 한 레지스터의 저장값을 선택적으로 상기 멀티플렉서들에 각각 제공하도록 구성될 수 있다. 구체적으로 상기 라인 버퍼들은, 움직임 추정 및 보상이 4x4 픽셀, 4x8 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 9번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하고, 움직임 추정 및 보상이 8x4 픽셀, 또는 8x8 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 13번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하도록 구성될 수 있다.In example embodiments, the line buffers may buffer integer pixels of horizontal lines including a lower half of the first submacroblock in the overlapping area. In this case, the line buffers may include at least one reuse register chain each composed of a plurality of registers connected in series to shift the stored value. Further, the submacroblocks are blocks of 4x4 pixels, the at least one reuse register chains each comprising at least 13 registers, and the line buffers are any one of the ninth or thirteenth registers of the respective reuse register chains. It may be configured to selectively provide a stored value of a register to each of the multiplexers. Specifically, the line buffers provide the multiplexer with a stored value of the ninth register of each reuse register chain when the motion estimation and compensation is based on a block of 4x4 pixels and 4x8 pixels, and the motion estimation and compensation is 8x4. When based on a pixel, or block of 8x8 pixels, the multiplexer may be configured to provide a stored value of the thirteenth register of each reuse register chain.

실시예에 따라, 상기 보간기는 상기 정수 픽셀들과 상기 하프 픽셀들을 각각 세로로 보간하는 세로 보간기들과, 상기 정수 픽셀들과 상기 하프 픽셀들을 각각 가로로 보간하는 가로 보간기들을 포함할 수 있다.The interpolator may include vertical interpolators vertically interpolating the integer pixels and the half pixels, and horizontal interpolators horizontally interpolating the integer pixels and the half pixels, respectively.

본 발명의 다른 실시예에 따른 서브픽셀 보간 방법은 제1 서브매크로블록의 보간 영역들의 정수 픽셀들을 이용하여 보간 연산을 수행하는 단계; 상기 제1 서브매크로블록과 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제2 서브매크로블록들의 보간 영역들 중 상기 제1 서브매크로블록의 보간 영역과 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하는 단계; 상기 제2 서브매크로블록의 보간 연산을 위해, 상기 서로 겹치는 영역에 포함되어 버퍼링된 정수 픽셀들을 읽어들이고, 상기 임시 저장된 정수 픽셀들을 제외한 정수 픽셀들은 외부 메모리에서 읽어들이는 단계; 및 상기 읽어들인 정수 픽셀들을 이용하여 상기 제2 서브매크로블록의 보간 연산을 수행하는 단계를 포함한다.In accordance with another aspect of the present invention, a subpixel interpolation method includes performing an interpolation operation using integer pixels of interpolation regions of a first submacroblock; It is included in the region overlapping with the interpolation region of the first sub-macroblock among the interpolation regions of the second sub-macroblocks spatially vertically adjacent to the first sub-macroblock, the temporal interpolation sequence is not adjacent in time. Buffering all or a part of integer pixels for each horizontal line in the interpolation operation of the first submacroblock; Reading integer pixels buffered in the overlapping area and buffered integer pixels except the temporarily stored integer pixels for interpolation of the second submacroblock; And performing an interpolation operation of the second submacroblock using the read integer pixels.

실시예에 따라, 상기 정수 픽셀들을 버퍼링하는 단계는 상기 서로 겹치는 영역 중에서 상기 제1 서브매크로블록의 아래쪽 절반을 포함하는 수평 라인들의 정수 픽셀들을 버퍼링하는 단계를 포함할 수 있다. In some embodiments, the buffering of the integer pixels may include buffering integer pixels of horizontal lines including a lower half of the first sub-macroblock among the overlapping regions.

본문에 개시되어 있는 본 발명의 실시예들에 대해서, 특정한 구조적 내지 기능적 설명들은 단지 본 발명의 실시예를 설명하기 위한 목적으로 예시된 것으로, 본 발명의 실시예들은 다양한 형태로 실시될 수 있으며 본문에 설명된 실시예들에 한정되는 것으로 해석되어서는 아니 된다.With respect to the embodiments of the present invention disclosed in the text, specific structural to functional descriptions are merely illustrated for the purpose of describing embodiments of the present invention, embodiments of the present invention may be implemented in various forms and It should not be construed as limited to the embodiments described in.

본 발명은 다양한 변경을 가할 수 있고 여러 가지 형태를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 본문에 상세하게 설명하고자 한다. 그러나, 이는 본 발명을 특정한 개시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다. 각 도면을 설명하면서 유사한 참조부호를 구성요소에 대해 사용하였다.As the inventive concept allows for various changes and numerous embodiments, particular embodiments will be illustrated in the drawings and described in detail in the text. However, this is not intended to limit the present invention to the specific disclosed form, it should be understood to include all modifications, equivalents, and substitutes included in the spirit and scope of the present invention. In describing the drawings, similar reference numerals are used for the components.

제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위로부터 이탈되지 않은 채 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. Terms such as first and second may be used to describe various components, but the components should not be limited by the terms. The terms are used only for the purpose of distinguishing one component from another. For example, without departing from the scope of the present invention, the first component may be referred to as the second component, and similarly, the second component may also be referred to as the first component.

어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다. 구성요소들 간의 관계를 설명하는 다른 표현들, 즉 "~사이에"와 "바로 ~사이에" 또는 "~에 이웃하는"과 "~에 직접 이웃하는" 등도 마찬가지로 해석되어야 한다.When a component is referred to as being "connected" or "connected" to another component, it may be directly connected to or connected to that other component, but it may be understood that other components may be present in between. Should be. On the other hand, when a component is said to be "directly connected" or "directly connected" to another component, it should be understood that there is no other component in between. Other expressions describing the relationship between components, such as "between" and "immediately between," or "neighboring to," and "directly neighboring to" should be interpreted as well.

본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것 으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 설시된 특징, 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부분품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.The terminology used herein is for the purpose of describing particular example embodiments only and is not intended to be limiting of the invention. Singular expressions include plural expressions unless the context clearly indicates otherwise. In this application, the terms "comprise" or "having" are intended to indicate that there is a feature, number, step, action, component, part, or combination thereof that is described, and that one or more other features or numbers are present. It should be understood that it does not exclude in advance the possibility of the presence or addition of steps, actions, components, parts or combinations thereof.

다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥 상 가지는 의미와 일치하는 의미를 가지는 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다. Unless defined otherwise, all terms used herein, including technical or scientific terms, have the same meaning as commonly understood by one of ordinary skill in the art. Terms such as those defined in the commonly used dictionaries should be construed as having meanings consistent with the meanings in the context of the related art and shall not be construed in ideal or excessively formal meanings unless expressly defined in this application. Do not.

이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다. Hereinafter, with reference to the accompanying drawings, it will be described in detail a preferred embodiment of the present invention. The same reference numerals are used for the same elements in the drawings, and duplicate descriptions of the same elements are omitted.

도 3은 본 발명의 일 실시예에 따라 서브픽셀 보간블록에서 메모리 값을 수직적으로 재사용하는 것을 설명하기 위한 개념도이다.3 is a conceptual diagram illustrating vertical reuse of memory values in a subpixel interpolation block according to an embodiment of the present invention.

도 3을 참조하면, 참조 프레임의 한 매크로블록은 16개의 4x4 픽셀 서브매크로블록으로 구성되어 있다. 서브픽셀 보간블록은 현재 프레임의 한 서브매크로블록의 움직임 추정 또는 보상을 위해 상기 참조 프레임의 각 서브매크로블록들에 대해 서브픽셀 보간을 수행한다. 서브매크로블록의 번호는 서브픽셀 보간의 순서와 일치한다. 설명의 편의를 위해 도 3의 서브픽셀 보간블록은 하프 픽셀만을 연산하는 경우만 설명한다. Referring to FIG. 3, one macroblock of a reference frame is composed of 16 4x4 pixel submacroblocks. The subpixel interpolation block performs subpixel interpolation on each submacroblock of the reference frame for motion estimation or compensation of one submacroblock of the current frame. The number of submacroblocks corresponds to the order of subpixel interpolation. For convenience of explanation, the subpixel interpolation block of FIG. 3 will be described only when calculating only half pixels.

H.264 등의 영상 코덱 표준안에서는 움직임 추정 및 보상의 단위 블록의 크기는 4x4, 4x8, 8x4, 8x8 등으로 가변될 수 있지만, 서브픽셀 보간 연산 자체는 4x4 픽셀 단위로 이뤄지며 그 순서는 도 3에 나타난 서브매크로블록의 번호와 같도록 규정되어 있다. In the video codec standard such as H.264, the unit block size of motion estimation and compensation can be changed to 4x4, 4x8, 8x4, 8x8, etc., but the subpixel interpolation operation itself is performed in units of 4x4 pixels, and the order thereof is shown in FIG. It is defined to be equal to the number of the indicated submacroblock.

서브픽셀 보간은 0번 서브매크로블록부터 시작하여, 1번 서브매크로블록, 2번 서브매크로블록, 3번 서브매크로블록 등의 순서로 수행된다. The subpixel interpolation is performed in the order of sub macroblock 1, sub macro block 2, sub macro block 3, and the like.

2번 서브매크로블록에 대해 서브픽셀 보간을 하는 것을 살펴보면, 0번 서브매크로블록의 보간 영역(I0) 중 일부는 2번 서브매크로블록의 보간 영역(I2)의 일부와 겹친다는 것을 알 수 있다. Looking at the subpixel interpolation for the second macroblock, it can be seen that some of the interpolation region I0 of the submacroblock 0 overlaps with a part of the interpolation region I2 of the submacroblock # 2.

이때, 어느 서브매크로블록의 보간 영역이란, 상기 서브매크로블록의 서브 픽셀들을 얻기 위해 보간하는 영역으로, 예를 들어 4x4 픽셀의 서브매크로블록을 중심으로 위로 2픽셀, 아래로 3픽셀, 좌로 2픽셀, 우로 3픽셀만큼씩 확장한 영역을 말한다. 그렇다면 두 서브매크로블록의 겹치는 보간 영역은 위쪽의 서브매크로블록의 보간 영역 중 아래쪽 5 라인(이하, 겹치는 보간 영역이라 함)에 해당한다. In this case, an interpolation area of a submacroblock is an area interpolated to obtain subpixels of the submacroblock, for example, 2 pixels up, 3 pixels down, and 2 pixels left around a 4 × 4 pixel sub macroblock. , Which extends by 3 pixels to the right. Then, the overlapping interpolation region of the two submacroblocks corresponds to the lower five lines (hereinafter, referred to as the overlapping interpolation region) of the interpolation region of the upper submacroblock.

만약, 0번 및 2번 서브매크로블록들의 겹치는 보간 영역(I02)의 정수 픽셀들을 0번 서브매크로블록의 서브픽셀 보간 연산 시에 서브픽셀 보간블록 내에 따로 저장해둔다면, 2번 서브매크로블록에 대해 서브픽셀 보간을 할 때에 2번 서브매크 로블록의 위쪽 보간 영역에 대해서는 0번 서브매크로블록의 아래쪽 보간 영역에 해당하는 정수 픽셀들을 외부 메모리에서 읽어오지 않고서도 바로 재사용할 수 있다. If the integer pixels of the overlapping interpolation region I02 of the 0 and 2 submacroblocks are stored separately in the subpixel interpolation block during the subpixel interpolation operation of the 0 submacroblock, the subpixels for the 2nd submacroblock When pixel interpolation, integer pixels corresponding to the lower interpolation area of sub macroblock 0 can be directly reused without reading from external memory.

마찬가지로, 1번 서브매크로블록의 아래쪽 보간 영역의 정수 픽셀들은 서브픽셀 보간블록 내에 별도로 마련된 라인 버퍼링 공간에 저장되어 3번 서브매크로블록의 서브픽셀 보간 시에 재사용한다. Likewise, the integer pixels of the lower interpolation region of the submacroblock 1 are stored in a line buffering space provided separately in the subpixel interpolation block, and reused when interpixel interpolation of the submacroblock 3 is performed.

이런 방식으로 각 서브매크로블록의 서브픽셀 보간 시마다 아래쪽 보간 영역에 해당하는 정수 픽셀들을 저장하면, 0번과 2번 서브매크로블록, 1번과 3번 서브매크로블록, 4번과 6번 서브매크로블록, 5번과 7번 서브매크로블록, 8번과 10번 서브매크로블록, 9번과 11번 서브매크로블록, 12번과 14번 서브매크로블록, 13번과 15번 서브매크로블록 사이에서 각각의 아래쪽 보간 영역에 해당하는 정수 픽셀들을 재사용할 수 있다. 따라서, 재사용되는 정수 픽셀들에 해당하는 데이터들을 외부 메모리로부터 읽어들이는 회수를 전체적으로 크게 줄일 수 있다.In this way, if integer pixels corresponding to the lower interpolation area are stored for each subpixel interpolation of each submacroblock, subpixels 0 and 2, submacros 1 and 3, subblocks 4 and 6 Between the sub macroblocks 5 and 7, sub macro blocks 8 and 10, sub macro blocks 9 and 11, sub macro blocks 12 and 14, and sub macro blocks 13 and 15, respectively. Integer pixels corresponding to the interpolation region may be reused. Therefore, the number of times of reading data corresponding to the integer pixels to be reused from the external memory as a whole can be greatly reduced.

예를 들어, 32 비트 대역의 외부 메모리를 사용할 경우, 픽셀당 8비트이므로 픽셀 데이터의 재사용이 없으면 9 픽셀을 읽기 위해서 외부 메모리에 액세스(access)하여야 하는 횟수는 3회이다. 그러나, 본 발명의 일 실시예와 같이 단 두 라인의 픽셀 데이터를 재사용하는 것으로도 외부 메모리에 액세스 횟수는 2회로 줄어든다. 한 서브매크로블록의 서브픽셀 보간시마다 외부 메모리 액세스 횟수가 1회 줄어들면 한 매크로블록마다 16회의 외부 메모리 액세스 횟수가 줄어든다. 만약 CIF 영상 포맷이라면 352x288 픽셀로 이뤄지고 352(=22x18)개의 매크로블록을 포함하기 때문에, 총 5,632회의 외부 메모리 액세스 횟수를 줄일 수 있다. For example, when using an external memory of the 32-bit band, since 8 bits per pixel, without the reuse of pixel data, the number of times to access the external memory to read 9 pixels is three times. However, by reusing only two lines of pixel data as in an embodiment of the present invention, the number of accesses to the external memory is reduced by two times. When the number of external memory accesses is reduced once per subpixel interpolation of one submacroblock, the number of 16 external memory accesses per macroblock is reduced. If the CIF image format is 352x288 pixels and includes 352 (= 22x18) macroblocks, the total number of external memory accesses can be reduced to 5,632 times.

실시예에 따라, 상기 각 라인 버퍼링 공간의 용량을 늘리면, 수직적으로 인접하지만 연산 순서로는 훨씬 떨어져 있는 두 서브매크로블록들 사이에서도 정수 픽셀들의 재사용이 가능하다. 예를 들어, 먼저 2번, 3번, 4번 및 5번의 서브매크로블록의 서브픽셀 보간 연산 시마다 각 서브매크로블록들의 아래쪽 보간 영역들에 해당하는 정수 픽셀들을 하나의 라인 버퍼링 공간 내에 각 서브매크로블록별로 저장한다. 이렇게 하면, 6번 서브매크로블록에 대해 서브픽셀 보간을 할 때에는 4번 서브매크로블록의 서브픽셀 보간 때 사용되었던 정수 픽셀들을 상기 세로 보간기들에 제공할 수 있고, 7번 서브매크로블록에 대해 서브픽셀 보간을 할 때에는 5번 서브매크로블록의 서브픽셀 보간 때 사용된 정수 픽셀들을 상기 세로 보간기들에 제공할 수 있다. 마찬가지로, 8번 서브매크로블록에 대해 서브픽셀 보간을 할 때에는 2번 서브매크로블록의 서브픽셀 보간 때 사용되었던 정수 픽셀들을 상기 세로 보간기들에 제공할 수 있고, 9번 서브매크로블록에 대해 서브픽셀 보간을 할 때에는 3번 서브매크로블록의 서브픽셀 보간 때 사용된 정수 픽셀들을 상기 세로 보간기들에 제공할 수 있다. According to an embodiment, increasing the capacity of each of the line buffering spaces enables reuse of integer pixels even between two submacroblocks that are vertically adjacent but far apart in the order of operation. For example, first, for each subpixel interpolation operation of sub macroblocks 2, 3, 4, and 5, integer pixels corresponding to lower interpolation regions of each sub macroblock are included in each submacroblock in one line buffering space. Save it very much. In this way, when performing subpixel interpolation for subpixel 6, the integer interpolators used in interpixel interpolation of subpixel 4 can be provided to the vertical interpolators, and subpixel for submacroblock 7 When interpolating, integer pixels used to interpolate subpixel of subblock 5 may be provided to the vertical interpolators. Similarly, when performing subpixel interpolation on submacroblock 8, the integer interpolators used in subpixel interpolation of submacroblock 2 may be provided to the vertical interpolators, and subpixel interpolation on submacroblock 9 is performed. In this case, integer pixels used in interpixel interpolation of subpixel block 3 may be provided to the vertical interpolators.

블록의 크기는 가변되더라도 서브픽셀 보간 연산은 4x4 픽셀의 블록 단위로 수행되기 때문에 라인 버퍼링 공간은 움직임 추정 및 보상을 위한 블록의 크기에 따라 라인 별로 9개 또는 13개의 정수 픽셀들을 저장하고 출력할 수 있다. 상기 서브픽셀 보간블록은 4x4 픽셀의 블록과 8x4 픽셀의 블록에 대해 움직임 추정 및 보상을 할 때에는 9개의 정수 픽셀들로부터 서브픽셀 보간을 수행하나, 4x8 픽셀의 블록, 8x8 픽셀의 블록, 8x16 픽셀의 블록, 16x8 픽셀의 블록 또는 16x16 픽셀의 블록에 대해 움직임 추정 및 보상을 할 때에는 13개의 정수 픽셀들로부터 서브픽셀 보간을 수행할 수 있다.Even though the block size is variable, the subpixel interpolation operation is performed in blocks of 4x4 pixels, so the line buffering space can store and output 9 or 13 integer pixels per line according to the block size for motion estimation and compensation. have. The subpixel interpolation block performs subpixel interpolation from nine integer pixels when performing motion estimation and compensation on blocks of 4x4 pixels and blocks of 8x4 pixels, but blocks of 4x8 pixels, blocks of 8x8 pixels, and blocks of 8x16 pixels When performing motion estimation and compensation on a block, a 16x8 pixel block, or a 16x16 pixel block, subpixel interpolation may be performed from 13 integer pixels.

예를 들어, 0번과 1번 서브매크로블록 및 2번과 3번 서브매크로블록이 각각 4x8 픽셀의 움직임 보상 블록인 경우에, 0번과 1번 서브매크로블록의 아래쪽 보간 영역에 해당하는 정수 픽셀들은 한 라인에 13개 정수 픽셀들을 포함하며, 이들 정수 픽셀들은 2번과 3번 서브매크로블록의 서브픽셀 보간 시에 재사용될 수 있다. 항상 9개의 정수 픽셀들만 재사용하는 것보다 경우에 따라서 9개 또는 13개의 정수 픽셀들을 선택적으로 재사용하는 것이 효과적이다.For example, if the sub macroblocks 0 and 1 and the sub macro blocks 2 and 3 are motion compensation blocks of 4x8 pixels, respectively, an integer pixel corresponding to the lower interpolation area of the sub macroblocks 0 and 1 These include 13 integer pixels in a line, and these integer pixels can be reused in the interpixel interpolation of subblocks 2 and 3. It is more effective to selectively reuse 9 or 13 integer pixels in some cases than to always reuse only 9 integer pixels.

위에서는 두 서브매크로블록들의 보간 영역 중 겹치는 영역의 모든 정수 픽셀들을 모두 저장하는 경우를 예시하였다. 그런데, 해당하는 모든 정수 픽셀들을 저장하게 되면 그만큼 공간이 필요하고 복잡해지므로, 메모리 참조 회수를 줄임으로써 얻는 장점이 상쇄되어 버릴 수도 있다. 따라서 실시예에 따라서는 그 중에서 특히 서브매크로블록의 3번 및 4번 가로 라인이 포함되는 보간 영역(I02')의 정수 픽셀들만을 저장할 수도 있다. 이 경우에는 재사용되는 정수 픽셀들의 수가 다소 적어질 뿐 원리는 상술한 바와 같다.In the above example, all integer pixels of overlapping regions of the interpolation regions of the two submacroblocks are all stored. However, storing all the corresponding integer pixels requires space and complexity, so that the advantages obtained by reducing the number of memory references may be canceled out. Therefore, according to the exemplary embodiment, only integer pixels of the interpolation region I02 ′ including horizontal lines 3 and 4 of the submacroblock may be stored. In this case, the number of integer pixels to be reused is rather small, but the principle is as described above.

도 4는 본 발명의 일 실시예에 따른 서브픽셀 보간블록을 예시한 블록도이다. 도 4를 참조하면, 서브픽셀 보간블록(40)은 제1 내지 제9 입력버퍼들(411 내지 419), 제1 내지 제4 멀티플렉서들(421 내지 424), 제1 내지 제4 세로 보간기들(431 내지 434), 제1 내지 제9 레지스터 체인들(441 내지 449), 제1 내지 제9 가로 보간기들(451 내지 459) 및 제1 내지 제4 라인 버퍼들(461 내지 464)을 포함한다. 4 is a block diagram illustrating a subpixel interpolation block according to an embodiment of the present invention. Referring to FIG. 4, the subpixel interpolation block 40 includes first to ninth input buffers 411 to 419, first to fourth multiplexers 421 to 424, and first to fourth vertical interpolators. 431 to 434, first to ninth register chains 441 to 449, first to ninth horizontal interpolators 451 to 459, and first to fourth line buffers 461 to 464. do.

도 4에 예시된 상기 서브픽셀 보간블록(40)은 기본적으로 4x4개의 픽셀로 이뤄진 서브매크로블록에 대해 서브픽셀 보간을 수행한다. H.264 등의 표준안은 움직임 추정 및 보상의 기본 블록 단위가 가변될 수 있도록 설계되었는데, 상기 서브픽셀 보간블록은 4x8 픽셀 또는 8x4 픽셀의 블록 단위로도 서브 픽셀 보간을 수행할 수도 있도록 설계된다.The subpixel interpolation block 40 illustrated in FIG. 4 basically performs subpixel interpolation on a submacroblock of 4x4 pixels. H.264 and the like have been designed such that the basic block unit of motion estimation and compensation can be varied, and the subpixel interpolation block is designed to perform subpixel interpolation even in units of 4x8 pixels or 8x4 pixels.

상기 서브픽셀 보간블록(40)은 어느 한 서브매크로블록의 3번 및 4번 가로 라인이 포함되는 보간 영역(예를 들어 I02')의 정수 픽셀들만을 저장하는 경우를 예시한 것이다.The subpixel interpolation block 40 exemplifies a case of storing only integer pixels of an interpolation region (eg, I02 ') including horizontal lines 3 and 4 of one sub macroblock.

서브매크로블록은 세로로 4 개의 정수 픽셀을 가지며, 세로 보간으로 4 개의 하프 픽셀들을 얻는다. 또, 상기 서브픽셀 보간블록(40)은 하나의 하프 픽셀을 얻기 위해 6개의 정수 픽셀들을 보간한다. 따라서, 한번에 총 9개의 정수 픽셀들이 서브픽셀 보간블록에 입력되어야 한다. The submacroblock has four integer pixels vertically, and four half pixels are obtained with vertical interpolation. In addition, the subpixel interpolation block 40 interpolates six integer pixels to obtain one half pixel. Therefore, a total of nine integer pixels must be input to the subpixel interpolation block at one time.

상기 서브픽셀 보간 블록(40)은 상기 총 9개의 정수 픽셀들을 인가받는다. 제1 세로 보간기(431)는 제1 내지 제4 멀티플렉서(421 내지 424)와 제5 및 제6 입력버퍼들(415, 416)로부터 모두 6개의 정수 픽셀들을 입력받아 보간하여 첫 번째 하프 픽셀을 생성한다. 제2 세로 보간기(432)는 제2 내지 제4 멀티플렉서(422 내지 424)와 제5 내지 제7 입력버퍼들(415 내지 417)로부터 모두 6개의 정수 픽셀을 입력받아 보간하여 두 번째 하프 픽셀을 생성한다. 제3 세로 보간기(433)는 제3 및 제4 멀티플렉서(423, 424)와 제5 내지 제8 입력 버퍼들(415 내지 418)로부터 모두 6개의 정수 픽셀을 입력받아 보간하여 세 번째 하프 픽셀을 생성한다. 제4 세로 보 간기(434)는 제4 멀티플렉서(424)와 제5 내지 제9 입력 버퍼들(415 내지 419)로부터 모두 6개의 정수 픽셀을 입력받아 보간하여 네 번째 하프 픽셀을 생성한다. 이렇게 하여 서브매크로블록의 세로로 4 개의 정수 픽셀들에 대해 각각 하나씩 총 4 개의 하프 픽셀들을 보간해 낼 수 있다.The subpixel interpolation block 40 receives the total of nine integer pixels. The first vertical interpolator 431 interpolates six integer pixels from the first to fourth multiplexers 421 to 424 and the fifth and sixth input buffers 415 and 416 to interpolate the first half pixel. Create The second vertical interpolator 432 interpolates six integer pixels from the second to fourth multiplexers 422 to 424 and the fifth to seventh input buffers 415 to 417 to interpolate the second half pixel. Create The third vertical interpolator 433 receives six integer pixels from the third and fourth multiplexers 423 and 424 and the fifth to eighth input buffers 415 to 418 to interpolate the third half pixel. Create The fourth vertical interpolator 434 receives six integer pixels from the fourth multiplexer 424 and the fifth to ninth input buffers 415 to 419 to interpolate to generate a fourth half pixel. In this way, a total of four half pixels, one for each of four integer pixels vertically of the submacroblock, can be interpolated.

예를 들어, 3번 서브매크로블록에서 서브픽셀 보간을 하는 경우에, 3번 서브매크로블록 내 첫 세로줄의 첫 하프 픽셀은, 1번 서브매크로블록 내 첫 세로줄의 3번 및 4번 정수 픽셀들, 그리고 3번 서브매크로블록 내의 첫 세로줄의 1번 내지 4번 정수 픽셀들을 보간하여 생성된다. 두 번째 하프 픽셀은 1번 서브매크로블록 내 첫 세로줄의 4번 정수 픽셀, 3번 서브매크로블록 내의 첫 세로줄의 1번 내지 4번 정수 픽셀들, 그리고 9번 서브매크로블록 내의 첫 세로줄의 1번 정수 픽셀을 보간하여 생성된다.For example, in the case of subpixel interpolation in sub macro block 3, the first half pixel of the first vertical line in sub macro block 3 is integer pixels 3 and 4 of the first vertical line in sub macro block 1, The integer pixels 1 through 4 of the first vertical line in the sub macroblock 3 are interpolated. The second half pixel is the integer pixel 4 of the first vertical line in submacro block 1, the integer pixels 1 to 4 of the first vertical line in submacro block 3, and the integer 1 of the first vertical line in submacro block 9 Created by interpolating pixels.

제1 레지스터 체인(441)은 제3 멀티플렉서(423)로부터 정수 픽셀을 입력받아 차례로 저장한다. 제2 레지스터 체인(442)은 제1 세로 보간기(431)로부터 하프 픽셀을 입력받아 차례로 저장한다. 제3 레지스터 체인(443)은 제4 멀티플렉서(424)로부터 정수 픽셀을 입력받아 차례로 저장한다. 제4 레지스터 체인(444)은 제2 세로 보간기(432)로부터 하프 픽셀을 입력받아 차례로 저장한다. 제5 레지스터 체인(445)은 제5 입력버퍼(415)로부터 정수 픽셀을 입력받아 차례로 저장한다. 제6 레지스터 체인(446)은 제3 세로 보간기(433)로부터 하프 픽셀을 입력받아 차례로 저장한다. 제7 레지스터 체인(447)은 제6 입력버퍼(416)로부터 정수 픽셀을 입력받아 차례로 저장한다. 제8 레지스터 체인(448)은 제4 세로 보간기(434)로부터 하프 픽셀을 입력받아 차례로 저장한다. 제9 레지스터 체인(449)은 제7 입력버퍼(417)로부터 정수 픽셀을 입력받아 차례로 저장한다. 이를 위해, 상기 제1 내지 제9 레지스터 체인들은 각각 6개의 직렬 연결된 레지스터들을 포함할 수 있다. The first register chain 441 receives integer pixels from the third multiplexer 423 and stores them in order. The second register chain 442 receives half pixels from the first vertical interpolator 431 and sequentially stores the half pixels. The third register chain 443 receives integer pixels from the fourth multiplexer 424 and sequentially stores the integer pixels. The fourth register chain 444 receives half pixels from the second vertical interpolator 432 and sequentially stores them. The fifth register chain 445 receives integer pixels from the fifth input buffer 415 and stores them sequentially. The sixth register chain 446 receives half pixels from the third vertical interpolator 433 and sequentially stores them. The seventh register chain 447 receives integer pixels from the sixth input buffer 416 and stores them sequentially. The eighth register chain 448 receives half pixels from the fourth vertical interpolator 434 and sequentially stores them. The ninth register chain 449 receives integer pixels from the seventh input buffer 417 and sequentially stores them. To this end, the first to ninth register chains may each include six serially connected registers.

상기 제1 내지 제9 가로 보간기들(451 내지 459)은 각각 상기 제1 내지 제9 레지스터 체인(441 내지 449) 내의 6개의 레지스터들의 입력들을 보간한다. 상기 세로 보간기들(431 내지 434)과 가로 보간기들(451 내지 459)은 디지털 필터로서, 특히 FIR(Finite Impulse Response) 필터일 수 있다.The first through ninth horizontal interpolators 451 through 459 interpolate inputs of six registers in the first through ninth register chains 441 through 449, respectively. The vertical interpolators 431 to 434 and the horizontal interpolators 451 to 459 are digital filters, and in particular, may be finite impulse response (FIR) filters.

움직임 벡터가 정확히 어떤 서브매크로블록 위치를 가리키는 이상적인 경우에는 서브매크로블록의 아래쪽 두 라인에 해당하는 정수 픽셀들이 다음 하부의 서브매크로블록의 서브픽셀 보간 연산 시에 재사용될 수 있다. 하지만 그렇지 않고 움직임 벡터가 서브매크로블록 내의 어떤 임의의 픽셀을 가리키는 경우도 많은데, 이런 경우에는 다음 재사용되어야 하는 정수 픽셀들은 서브매크로블록의 하단의 두 라인에 해당하는 정수 픽셀들이 아닐 수도 있다. 이런 경우들을 대비하여 총 네 개의 라인 버퍼들, 즉 제1 내지 제4 라인 버퍼들(461 내지 464)을 제5 내지 제9 입력버퍼(415 내지 419)에 각각 연결하고 그 중 연속하는 두 개의 라인 버퍼들에 정수 픽셀들을 저장한다. 예를 들어, 제5 및 제6 입력버퍼(415, 416)의 정수 픽셀들을 제1 및 제2 라인 버퍼(461, 462)에 각각 저장하는 식이다.In the ideal case where the motion vector exactly points to a certain submacroblock position, integer pixels corresponding to the bottom two lines of the submacroblock may be reused in the subpixel interpolation operation of the next lower submacroblock. However, otherwise, the motion vector often points to an arbitrary pixel in the submacroblock. In this case, the next integer pixels to be reused may not be integer pixels corresponding to two lines at the bottom of the submacroblock. In this case, a total of four line buffers, that is, the first to fourth line buffers 461 to 464, are respectively connected to the fifth to ninth input buffers 415 to 419, and two consecutive lines are included. Store integer pixels in buffers. For example, the integer pixels of the fifth and sixth input buffers 415 and 416 are stored in the first and second line buffers 461 and 462, respectively.

상기 라인 버퍼들(461 내지 462)은 내부에 적어도 두 개의 재사용 레지스터 체인(4611, 4612)과 멀티플렉서(4613)를 가진다. 상기 재사용 레지스터 체인(4611, 4612)은 스위치와 적어도 13개의 직렬 연결된 레지스터들을 각각 포함할 수 있다. 상기 스위치는 상기 재사용 레지스터 체인(4611, 4612)에 정수 픽셀 데이터가 저장되어야 할 때에, 입력되는 정수 픽셀 데이터를 통과시킨다. 상기 재사용 레지스터 체인(4611, 4612) 내의 13개의 직렬 연결된 레지스터들은 정수 픽셀 데이터가 입력될 때마다 정수 픽셀 데이터를 쉬프트하여 저장한다. 상기 멀티플렉서(4613)는 상기 적어도 두 재사용 레지스터 체인(4611, 4612)중 선택된 재사용 레지스터 체인의 13번째 레지스터들 또는 9번째 레지스터들 중에서, 움직임 보상 블록이 16x인지, 8x인지 또는 4x인지에 따라 선택된 한 레지스터로부터, 재사용될 정수 픽셀 데이터를 출력한다. 출력된 재사용 정수 픽셀 데이터들은 상기 제1 내지 제4 멀티플렉서(421 내지 424) 중에 각각 전송된다.The line buffers 461 to 462 have at least two reuse register chains 4611 and 4612 and a multiplexer 4613 therein. The reuse register chains 4611 and 4612 may each include at least 13 serially connected registers with the switch. The switch passes the input integer pixel data when integer pixel data is to be stored in the reuse register chains 4611 and 4612. Thirteen serially connected registers in the reuse register chains 4611 and 4612 shift and store integer pixel data each time integer pixel data is input. The multiplexer 4613 is selected from among 13th registers or 9th registers of the selected reuse register chain among the at least two reuse register chains 4611 and 4612 according to whether the motion compensation block is 16x, 8x, or 4x. From the register, output integer pixel data to be reused. The output reuse reuse pixel data are transmitted among the first to fourth multiplexers 421 to 424, respectively.

도 4의 서브픽셀 보간블록(40)은 겹치는 보간 영역의 모든 정수 픽셀들이 아니라, 두 라인에 해당하는 정수 픽셀들만 재사용하는 구조를 예시하고 있지만, 상술하였듯이 실시예에 따라 겹치는 보간 영역의 정수 픽셀들을 모두 저장하여 재사용할 수도 있음은 물론이다.The subpixel interpolation block 40 of FIG. 4 illustrates a structure in which only integer pixels corresponding to two lines are reused, not all integer pixels in the overlapping interpolation region, but as described above, the integer pixels in the overlapping interpolation region may be changed. Of course, you can also save and reuse everything.

이러한 구성을 가지고 서브픽셀 보간블록(40)은 보간 영역의 일부를 수직적으로 재사용할 수 있어 외부 메모리를 참조하는 횟수를 줄일 수 있다.With this configuration, the subpixel interpolation block 40 can vertically reuse a part of the interpolation area, thereby reducing the number of times of referring to the external memory.

일반적으로, 블록기반의 움직임 추정 및 보상 기법을 이용하는 영상 코덱은 움직임 추정 또는 보상을 수행하는 움직임 추정기 또는 움직임 보상기를 포함하며, 상기 움직임 추정기 또는 움직임 보상기는 통상적으로 서브픽셀 보간을 수행하는 서브픽셀 보간블록을 포함한다. 서브픽셀 보간블록이 가져야 하는 기본적인 규칙은 모두 영상 코덱의 표준안들에 규정되어 있으므로, 본 발명의 실시예들과 같은 서브 픽셀 보간블록은 그러한 영상 코덱에서 용이하게 적용될 수 있다. 따라서, 상술한 서브픽셀 보간블록을 코덱에 적용하는 것에 대해서 별도의 설명은 생략한다.In general, an image codec using a block-based motion estimation and compensation technique includes a motion estimator or a motion compensator that performs motion estimation or compensation, and the motion estimator or motion compensator typically performs subpixel interpolation that performs subpixel interpolation. Contains a block. Since the basic rules that the subpixel interpolation block must have are all defined in the standards of the image codec, a subpixel interpolation block such as the embodiments of the present invention can be easily applied in such an image codec. Therefore, a separate description of applying the above-described subpixel interpolation block to the codec is omitted.

본 발명의 일 실시예에 따른 서브픽셀 보간블록은 소프트웨어로 구현될 수도 있고 하드웨어로 구현될 수도 있다. 하드웨어로 구현 시에 종래의 수평적 재사용 구조에 비해 상기 서브픽셀 보간블록은 필요한 레지스터나 멀티플렉서가 적고 따라서 소모하는 전력이나 차지하는 면적이 더 적으며, 멀티플렉서들을 제어할 제어회로도 덜 복잡하다. 또한, 종래의 수평적 재사용 구조에서 수평적 재사용 회수는 한 매크로블록 내에서 통상적으로 4회에 불과하지만, 본 발명의 일 실시예에 따른 서브픽셀 보간블록에서는 정수 픽셀의 수직적 재사용 회수는 한 매크로블록 내에서 통상적으로 8회 정도이며 최대 12회에 이르기 때문에 그만큼 외부 메모리를 참조하는 회수를 줄일 수 있다. 메모리를 참조하는 회수가 줄어들면 참조하는데 걸리는 시간이 줄어들 뿐 아니라, 참조하는 동안에 메모리나 버스, 주변회로에서 소모되는 전력도 아낄 수 있다.The subpixel interpolation block according to an embodiment of the present invention may be implemented in software or hardware. When implemented in hardware, the subpixel interpolation block requires less registers or multiplexers, thus consumes less power or occupy less space than conventional horizontal reuse structures, and is less complicated to control the multiplexers. In addition, in the conventional horizontal reuse structure, the number of horizontal reuses is typically only four times in one macroblock, but in the subpixel interpolation block according to an embodiment of the present invention, the number of vertical reuses of integer pixels is one macroblock. The number of references to external memory can be reduced by about 8 times and up to 12 times. Reducing the number of references to memory reduces the time it takes to reference, as well as saving the power consumed by the memory, bus, and peripherals during the reference.

이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.Although described with reference to the embodiments above, those skilled in the art will understand that the present invention can be variously modified and changed without departing from the spirit and scope of the invention as set forth in the claims below. Could be.

Claims (14)

복수의 서브매크로블록들의 정수 픽셀들을 입력받아 보간하여 서브 픽셀을 각각 생성하는 세로 보간기들;Vertical interpolators which receive integer pixels of the plurality of submacroblocks and interpolate to generate subpixels, respectively; 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제1 및 제2 서브매크로블록들의 보간 영역들 중 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하고, 상기 제2 서브매크로블록의 보간 연산 시에 상기 버퍼링된 정수 픽셀들을 출력하는 적어도 두 개의 라인 버퍼들; 및All or part of the integer pixels included in the overlapping regions of the interpolation regions of the first and second submacroblocks that are spatially vertically adjacent and whose interpolation operation order is not adjacent in time are selected from the first submacroblock. At least two line buffers that buffer each horizontal line during the interpolation operation and output the buffered integer pixels during the interpolation operation of the second submacroblock; And 상기 라인 버퍼들과 외부의 메모리 중에서 선택적으로 입력된 정수 픽셀들을 상기 세로 보간기들에 제공하는 멀티플렉서들을 포함하는 서브픽셀 보간블록.And a multiplexer providing the vertical interpolators with integer pixels selectively input between the line buffers and an external memory. 제1항에 있어서, 상기 라인 버퍼들은 상기 서로 겹치는 영역 중에서 상기 제1 서브매크로블록의 아래쪽 절반을 포함하는 수평 라인들의 정수 픽셀들을 버퍼링하는 것을 특징으로 하는 서브픽셀 보간블록.The subpixel interpolation block of claim 1, wherein the line buffers buffer integer pixels of horizontal lines including a lower half of the first submacroblock in the overlapping area. 제2항에 있어서, 상기 라인 버퍼들은 그 저장 값이 쉬프트되도록 직렬 연결된 복수의 레지스터들로 각각 구성된 적어도 하나의 재사용 레지스터 체인들을 포함하는 것을 특징으로 하는 서브 픽셀 보간블록.3. The subpixel interpolation block of claim 2, wherein the line buffers comprise at least one reuse register chain each composed of a plurality of registers connected in series such that a stored value thereof is shifted. 제3항에 있어서, 상기 서브매크로블록들은 4x4 픽셀의 블록이고, 상기 적어도 하나의 재사용 레지스터 체인들은 각각 적어도 13개의 레지스터들을 포함하며, 상기 라인 버퍼들은 상기 각 재사용 레지스터 체인들의 9번째 또는 13번째 레지스터들 중 어느 한 레지스터의 저장값을 선택적으로 상기 멀티플렉서들에 각각 제공하도록 구성된 것을 특징으로 하는 서브픽셀 보간블록.4. The method of claim 3, wherein the submacroblocks are blocks of 4x4 pixels, the at least one reuse register chains each comprising at least 13 registers, and the line buffers are the ninth or thirteenth registers of the respective reuse register chains. A subpixel interpolation block configured to selectively provide a stored value of any one of the registers to the multiplexers, respectively. 제4항에 있어서, 상기 라인 버퍼들은 움직임 추정 및 보상이 4x4 픽셀, 4x8 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 9번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하고, 움직임 추정 및 보상이 8x4 픽셀, 8x8 픽셀, 8x16 픽셀, 16x8 픽셀 또는 16x16 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 13번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하도록 구성된 것을 특징으로 하는 서브픽셀 보간블록.5. The apparatus of claim 4, wherein the line buffers provide the multiplexer with a stored value of a ninth register of each reuse register chain when motion estimation and compensation is based on a block of 4x4 and 4x8 pixels. When the compensation is based on a block of 8x4 pixels, 8x8 pixels, 8x16 pixels, 16x8 pixels, or 16x16 pixels, subpixel interpolation characterized in that it provides the multiplexer with the stored value of the thirteenth register of each reuse register chain. block. 제1항에 있어서, 상기 정수 픽셀들과 상기 서브 픽셀들을 각각 가로로 보간하는 가로 보간기들을 더 포함하는 것을 특징으로 하는 서브픽셀 보간블록.The subpixel interpolation block of claim 1, further comprising horizontal interpolators for horizontally interpolating the integer pixels and the subpixels, respectively. 블록 기반의 움직임 추정 및 보상을 이용하며 영상 데이터를 압축 또는 복원하며, 움직임 추정 및 보상 시에 서브픽셀 보간을 수행하는 서브픽셀 보간블록을 포함하는 영상 코덱에 있어서, 상기 서브픽셀 보간블록은 An image codec including a subpixel interpolation block that uses block-based motion estimation and compensation and compresses or reconstructs image data, and performs subpixel interpolation in motion estimation and compensation, wherein the subpixel interpolation block includes: 복수의 서브매크로블록들의 정수 픽셀들을 입력받아 보간하여 서브 픽셀을 각각 생성하는 보간기들;Interpolators that receive integer pixels of the plurality of submacroblocks and interpolate to generate subpixels, respectively; 상기 복수의 서브매크로블록들 중에서 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제1 및 제2 서브매크로블록들의 보간 영역들 중 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하고, 상기 제2 서브매크로블록의 보간 연산 시에 상기 버퍼링된 정수 픽셀들을 출력하는 라인 버퍼들; 및All or some of the integer pixels included in the overlapping regions of the interpolation regions of the first and second submacroblocks of the plurality of submacroblocks, which are spatially vertically adjacent and whose interpolation calculation order is not adjacent in time. Line buffers for buffering the horizontal lines during the interpolation operation of the first submacroblock and outputting the buffered integer pixels during the interpolation operation of the second submacroblock; And 상기 라인 버퍼들과 외부의 메모리 중에서 선택적으로 입력된 정수 픽셀들을 상기 보간기들에 제공하는 멀티플렉서들을 포함하는 것을 특징으로 하는 영상 코덱.And multiplexers for providing the interpolators with integer pixels selectively input between the line buffers and an external memory. 제7항에 있어서, 상기 라인 버퍼들은 상기 서로 겹치는 영역 중에서 상기 제1 서브매크로블록의 아래쪽 절반을 포함하는 수평 라인들의 정수 픽셀들을 버퍼링하는 것을 특징으로 하는 영상 코덱.8. The image codec of claim 7, wherein the line buffers buffer integer pixels of horizontal lines including a lower half of the first submacroblock among the overlapping regions. 제8항에 있어서, 상기 라인 버퍼들은 그 저장 값이 쉬프트되도록 직렬 연결된 복수의 레지스터들로 각각 구성된 적어도 하나의 재사용 레지스터 체인들을 포함하는 것을 특징으로 하는 영상 코덱.9. The image codec of claim 8, wherein the line buffers comprise at least one reuse register chain each composed of a plurality of registers connected in series such that a stored value thereof is shifted. 제9항에 있어서, 상기 서브매크로블록들은 4x4 픽셀의 블록이고, 상기 적어도 하나의 재사용 레지스터 체인들은 각각 적어도 13개의 레지스터들을 포함하며, 상기 라인 버퍼들은 상기 각 재사용 레지스터 체인들의 9번째 또는 13번째 레지스터들 중 어느 한 레지스터의 저장값을 선택적으로 상기 멀티플렉서들에 각각 제공하도록 구성된 것을 특징으로 하는 영상 코덱.10. The method of claim 9, wherein the submacroblocks are blocks of 4x4 pixels, the at least one reuse register chains each comprising at least 13 registers, and the line buffers are the ninth or thirteenth registers of the respective reuse register chains. And provide the stored value of any one of the registers selectively to the multiplexers, respectively. 제10항에 있어서, 상기 라인 버퍼들은 움직임 추정 및 보상이 4x4 픽셀, 4x8 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 9번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하고, 움직임 추정 및 보상이 8x4 픽셀, 또는 8x8 픽셀, 8x16 픽셀, 16x8 픽셀 또는 16x16 픽셀의 블록을 기반으로 할 때에는 상기 각 재사용 레지스터 체인의 13번째의 레지스터의 저장값을 상기 멀티플렉서에 제공하도록 구성된 것을 특징으로 하는 영상 코덱.11. The apparatus of claim 10, wherein the line buffers provide the multiplexer with a stored value of a ninth register of each reuse register chain when motion estimation and compensation is based on a block of 4x4 pixels, 4x8 pixels. An image codec configured to provide the multiplexer with a stored value of a thirteenth register of each reuse register chain when the compensation is based on a block of 8x4 pixels, or 8x8 pixels, 8x16 pixels, 16x8 pixels, or 16x16 pixels. . 제7항에 있어서, 상기 보간기는 상기 정수 픽셀들과 상기 서브 픽셀들을 각각 세로로 보간하는 세로 보간기들과, 상기 정수 픽셀들과 상기 서브 픽셀들을 각각 가로로 보간하는 가로 보간기들을 포함하는 것을 특징으로 하는 영상 코덱.8. The interpolator of claim 7, wherein the interpolator comprises vertical interpolators vertically interpolating the integer pixels and the subpixels, and horizontal interpolators horizontally interpolating the integer pixels and the subpixels, respectively. Video codec made. 제1 서브매크로블록의 보간 영역들의 정수 픽셀들을 이용하여 보간 연산을 수행하는 단계;Performing an interpolation operation using integer pixels of interpolation regions of the first submacroblock; 상기 제1 서브매크로블록과 공간적으로는 수직으로 인접하며 시간적으로는 보간 연산 순서가 인접하지 않는 제2 서브매크로블록들의 보간 영역들 중 상기 제1 서브매크로블록의 보간 영역과 서로 겹치는 영역에 포함되는 정수 픽셀들의 전부 또는 일부를 상기 제1 서브매크로블록의 보간 연산 시에 수평한 라인별로 버퍼링하는 단계;It is included in the region overlapping with the interpolation region of the first sub-macroblock among the interpolation regions of the second sub-macroblocks spatially vertically adjacent to the first sub-macroblock, the temporal interpolation sequence is not adjacent in time. Buffering all or a part of integer pixels for each horizontal line in the interpolation operation of the first submacroblock; 상기 제2 서브매크로블록의 보간 연산을 위해, 상기 서로 겹치는 영역에 포함되어 버퍼링된 정수 픽셀들을 읽어들이고, 상기 서로 겹치된 영역에 포함되어 버퍼링된 정수 픽셀들을 제외한 정수 픽셀들은 외부 메모리에서 읽어들이는 단계; 및For the interpolation operation of the second submacroblock, integer pixels included in the overlapping region are read and buffered, and integer pixels except the integer pixels included in the overlapping region are read from an external memory. step; And 상기 읽어들인 정수 픽셀들을 이용하여 상기 제2 서브매크로블록의 보간 연산을 수행하는 단계를 포함하는 서브픽셀 보간 방법.Performing an interpolation operation of the second submacroblock using the read integer pixels. 제13항에 있어서, 상기 정수 픽셀들을 버퍼링하는 단계는 상기 서로 겹치는 영역 중에서 상기 제1 서브매크로블록의 아래쪽 절반을 포함하는 수평 라인들의 정수 픽셀들을 버퍼링하는 단계를 포함하는 것을 특징으로 하는 서브픽셀 보간 방법.14. The subpixel interpolation of claim 13, wherein the buffering of the integer pixels comprises buffering integer pixels of horizontal lines including a lower half of the first submacroblock among the overlapping regions. Way.
KR1020060120670A 2006-12-01 2006-12-01 A low power sub-pixel interpolator architecture KR100836534B1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
KR1020060120670A KR100836534B1 (en) 2006-12-01 2006-12-01 A low power sub-pixel interpolator architecture

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020060120670A KR100836534B1 (en) 2006-12-01 2006-12-01 A low power sub-pixel interpolator architecture

Publications (2)

Publication Number Publication Date
KR20080049998A KR20080049998A (en) 2008-06-05
KR100836534B1 true KR100836534B1 (en) 2008-06-10

Family

ID=39805515

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020060120670A KR100836534B1 (en) 2006-12-01 2006-12-01 A low power sub-pixel interpolator architecture

Country Status (1)

Country Link
KR (1) KR100836534B1 (en)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940010780A (en) * 1992-10-07 1994-05-26 배순훈 Memory device of video signal processor using motion compensation
KR20000070092A (en) * 1997-11-12 2000-11-25 요트.게.아. 롤페즈 Method and apparatus for using interpolation line buffers as pixel look up tables
KR20030078386A (en) * 2002-03-29 2003-10-08 삼성전자주식회사 A apparatus for processing image
KR20050020287A (en) * 2003-08-21 2005-03-04 삼성전자주식회사 Frame Rate Conversion apparatus capable of sharing line memory for performing motion estimation and motion compensation and method thereof

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR940010780A (en) * 1992-10-07 1994-05-26 배순훈 Memory device of video signal processor using motion compensation
KR20000070092A (en) * 1997-11-12 2000-11-25 요트.게.아. 롤페즈 Method and apparatus for using interpolation line buffers as pixel look up tables
KR20030078386A (en) * 2002-03-29 2003-10-08 삼성전자주식회사 A apparatus for processing image
KR20050020287A (en) * 2003-08-21 2005-03-04 삼성전자주식회사 Frame Rate Conversion apparatus capable of sharing line memory for performing motion estimation and motion compensation and method thereof

Also Published As

Publication number Publication date
KR20080049998A (en) 2008-06-05

Similar Documents

Publication Publication Date Title
CN1794814B (en) Pipelined deblocking filter
KR101684207B1 (en) Video decoder, video encoder, video decoding method, and video encoding method
JP5197630B2 (en) Image encoding device, image decoding device, image encoding method, and image decoding method
RU2544799C2 (en) Moving image encoding device, moving image decoding device, moving image encoding method and moving image decoding method
US11350125B2 (en) Method and device for intra-prediction
JP2006222968A (en) Method and device for coding video screen in inter-screen or in-screen mode
US20090010326A1 (en) Method and apparatus for parallel video decoding
KR100842557B1 (en) Method for accessing memory in moving picture processing device
JP2006157925A (en) Pipeline deblocking filter
KR101274112B1 (en) Video encoding apparatus
KR100827093B1 (en) Method for video encoding and apparatus for the same
KR20060002549A (en) Register array structure for effective edge filtering operation of deblocking filter
US9420308B2 (en) Scaled motion search section with parallel processing and method for use therewith
US20050047502A1 (en) Method and apparatus for the efficient representation of interpolated video frames for motion-compensated coding
CN100568920C (en) The method and apparatus of the video image brightness interpolating of serial input and line output
KR100605105B1 (en) Apparatus of Image Interpolation
KR100899730B1 (en) Method Chroma Interpolation of Image Encoder and Decoder
KR100926752B1 (en) Fine Motion Estimation Method and Apparatus for Video Coding
KR100836534B1 (en) A low power sub-pixel interpolator architecture
CN102238385A (en) Encoder and/or vertical and/or horizontal cache device of decoder and method
KR20090102646A (en) Interpolation architecture of motion compensation unit in decoders based on h.264 video coding standard
TWI825751B (en) Method and apparatuses for video encoding
Bae et al. Quarter-pel interpolation architecture in H. 264/AVC decoder
KR100672376B1 (en) Motion compensation method
KR0129802B1 (en) Circuit for compensation of the motion by half pel in a picture compression system

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

Year of fee payment: 5

LAPS Lapse due to unpaid annual fee