KR20110065335A - 영상 처리를 위한 시스템 - Google Patents

영상 처리를 위한 시스템 Download PDF

Info

Publication number
KR20110065335A
KR20110065335A KR1020100116380A KR20100116380A KR20110065335A KR 20110065335 A KR20110065335 A KR 20110065335A KR 1020100116380 A KR1020100116380 A KR 1020100116380A KR 20100116380 A KR20100116380 A KR 20100116380A KR 20110065335 A KR20110065335 A KR 20110065335A
Authority
KR
South Korea
Prior art keywords
buffer
search window
frame memory
motion estimation
frame
Prior art date
Application number
KR1020100116380A
Other languages
English (en)
Other versions
KR101419378B1 (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 US12/961,196 priority Critical patent/US20110135008A1/en
Priority to JP2010271823A priority patent/JP5378344B2/ja
Publication of KR20110065335A publication Critical patent/KR20110065335A/ko
Application granted granted Critical
Publication of KR101419378B1 publication Critical patent/KR101419378B1/ko

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/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/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/57Motion estimation characterised by a search window with variable size or shape
    • 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
    • HELECTRICITY
    • H01ELECTRIC ELEMENTS
    • H01LSEMICONDUCTOR DEVICES NOT COVERED BY CLASS H10
    • H01L2924/00Indexing scheme for arrangements or methods for connecting or disconnecting semiconductor or solid-state bodies as covered by H01L24/00
    • H01L2924/10Details of semiconductor or other solid state devices to be connected
    • H01L2924/11Device type
    • H01L2924/14Integrated circuits
    • H01L2924/143Digital devices
    • H01L2924/1434Memory
    • H01L2924/1435Random access memory [RAM]
    • H01L2924/1436Dynamic random-access memory [DRAM]
    • H01L2924/14361Synchronous dynamic random access memory [SDRAM]

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

영상 처리를 위한 시스템을 제공한다. 영상 처리를 위한 시스템은 프레임 데이터를 저장하기 위한 프레임 메모리, 입력되는 데이터를 저장하고, 프레임 메모리부로 전달하기 위한 입력 비디오 버퍼, 복수의 매크로 블록을 저장하기 위한 매크로 블록 버퍼, 거친 움직임 예측을 위한 참조 프레임의 검색영역을 저장하기 위한 제1 서치윈도우 버퍼, 미세 움직임 예측을 위한 참조 프레임의 검색영역을 저장하기 위한 제2 서치윈도우 버퍼, 디블로킹 필터를 수행한 결과를 저장하기 위한 디블록드 매크로 블록 버퍼 및 입력 비디오 버퍼, 매크로 블록 버퍼, 제1 서치윈도우 버퍼, 제2 서치윈도우 버퍼, 디블록드 매크로 블록 버퍼 및 프레임 메모리에 대한 기입 및 독출을 수행하기 위한 프레임 메모리 컨트롤러를 포함한다.

Description

영상 처리를 위한 시스템{System for Video Processing}
본 발명은 영상 처리를 위한 시스템에 관한 것으로, 더욱 상세하게는 매크로 블록 당 수행 사이클을 단축시킬 수 있는 영상 처리를 위한 시스템에 관한 것이다.
일반적으로, 영상 처리에 있어서 영상 부호기는 프레임의 많은 데이터로 인해 SDRAM과 같은 프레임 메모리에 저장해 두고, 필요한 프레임 데이터만을 부호기 내의 특정 버퍼(Buffer)에 옮겨 처리를 하게 된다.
최근의 영상 부호화 표준 기술은 구현 시 요구되는 메모리 대역폭과 연산의 복잡도가 높기 때문에 실시간 응용에 적용하는데 어려움이 있다. 특히, 기존의 1/2 화소 단위보다 복잡도가 높은 1/4 화소 단위의 움직임 예측을 수행함으로 인해, 화소 보간 방식과 움직임 예측 방식에 따라 프레임 메모리에서 많은 데이터를 읽어야 하는 필요성이 커지고 있으며, 영상의 크기가 증가함에 따라 프레임 메모리와 부호기 내의 특정 버퍼(Buffer) 간의 데이터 전송 속도는 부호기의 성능에 많은 영향을 미치게 되었다.
본 발명의 목적은 매크로 블록 당 수행 사이클을 단축시킬 수 있는 영상 처리를 위한 시스템을 제공하는 것이다.
상술한 본 발명의 목적을 달성하기 위한 영상 처리를 위한 시스템은 프레임 데이터를 저장하기 위한 프레임 메모리(Frame Memory), 입력되는 데이터를 저장하고, 상기 프레임 메모리부로 전달하기 위한 입력 비디오 버퍼(Input Video Buffer), 복수의 매크로 블록(MB: Macro Block)을 저장하기 위한 매크로 블록 버퍼(MB Buffer), 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 제1 서치윈도우 버퍼(SW 1 Buffer), 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 제2 서치윈도우 버퍼(SW 2 Buffer), 디블로킹 필터를 수행한 결과를 저장하기 위한 디블록드 매크로 블록 버퍼(Deblocked MB Buffer) 및 상기 입력 비디오 버퍼, 매크로 블록 버퍼, 제1 서치윈도우 버퍼, 제2 서치윈도우 버퍼, 디블록드 매크로 블록 버퍼 및 상기 프레임 메모리에 대한 기입 및 독출을 수행하기 위한 프레임 메모리 컨트롤러(Frame Memory Controller)를 포함하여 구성될 수 있다.
여기에서, 상기 프레임 메모리는 에스디램(SDRAM)인 것일 수 있다.
여기에서, 상기 입력 비디오 버퍼는 상기 입력되는 데이터를 프레임 내 매크로 블록 개수만큼으로 나누어 저장하는 것일 수 있다.
여기에서, 상기 매크로 블록 버퍼는 상기 프레임 메모리로부터 독출한 복수의 매크로 블록이 순차적으로 저장되고, 저장된 상기 각각의 매크로 블록이 동시에 독출될 수 있는 것일 수 있다.
여기에서, 상기 매크로 블록 버퍼는 복수의 메모리로 구성되며, 각각의 메모리는 매크로 블록의 밝기(Luminance) 및 채도(chroma)를 저장할 수 있는 것일 수 있다.
여기에서, 상기 제1 서치윈도우 버퍼에서 각각의 참조 프레임의 검색영역의 크기는 가변적인 것일 수 있다.
여기에서, 상기 제1 서치윈도우 버퍼에서 각각의 참조 프레임의 검색영역은 동시에 독출될 수 있는 것일 수 있다.
여기에서, 상기 제2 서치윈도우 버퍼는 상기 제1 서치윈도우 버퍼 이외의 참조 프레임의 검색영역을 저장하는 것일 수 있다.
여기에서, 상기 제1 서치윈도우 버퍼 이외의 참조 프레임의 검색영역은 거친 움직임 예측(CME: Coarse Motion Estimation)의 결과에 따라 달라지는 것일 수 있다.
여기에서, 상기 디블록드 매크로 블록 버퍼에서 상기 디블로킹 필터를 수행한 결과는 상기 프레임 메모리에 저장되는 것일 수 있다.
여기에서, 상기 프레임 메모리 컨트롤러는 매크로 블록 단위 데이터의 기입 및 독출을 위하여 구성된 것일 수 있다.
상기와 같은 영상 처리를 위한 시스템에 따르면, 동시에 복수의 매크로 블록에 대한 독출을 할 수 있으며, 동시에 복수의 동작을 수행할 수 있다. 특히, 영상 처리를 위한 시스템을 파이프 라인으로 구성한 경우에 영상 처리를 위한 시스템의 매크로 블록 당 수행 사이클을 단축시킬 수 있으므로, 동일 시간 동안 처리할 수 있는 매크로 블록 개수를 증가시킬 수 있다. 결국, 보다 많은 데이터를 가지는 멀티미디어 영상을 실시간 처리할 수 있다.
도 1은 본 발명의 일 실시예에 따른 영상 처리를 위한 시스템의 구조를 설명하기 위한 구성도이다.
도 2는 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러를 설명하기 위한 인터페이스 구성도이다.
도 3은 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러를 설명하기 위한 블록 구성도이다.
도 4는 본 발명의 일 실시예에 따른 입력 비디오 버퍼를 설명하기 위한 인터페이스 구성도이다.
도 5는 본 발명의 일 실시예에 따른 입력 비디오 버퍼를 설명하기 위한 블록 구성도이다.
도 6은 본 발명의 일 실시예에 따른 매크로 블록 버퍼를 설명하기 위한 인터페이스 구성도이다.
도 7은 본 발명의 일 실시예에 따른 매크로 블록 버퍼를 설명하기 위한 블록 구성도이다.
도 8은 본 발명의 일 실시예에 따른 매크로 블록 버퍼의 동작을 설명하기 위한 예시도이다.
도 9는 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼를 설명하기 위한 인터페이스 구성도이다.
도 10은 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼를 설명하기 위한 블록 구성도이다.
도 11은 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼의 동작을 설명하기 위한 예시도이다.
도 12는 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼의 동작을 설명하기 위한 다른 예시도이다.
도 13은 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼의 동작을 설명하기 위한 또 다른 예시도이다.
도 14는 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼를 설명하기 위한 인터페이스 구성도이다.
도 15는 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼를 설명하기 위한 블록 구성도이다.
도 16은 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼의 동작을 설명하기 위한 예시도이다.
도 17은 본 발명의 일 실시예에 따른 디블록드 매크로 블록 버퍼를 설명하기 위한 인터페이스 구성도이다.
도 18은 본 발명의 일 실시예에 따른 디블록드 매크로 블록 버퍼를 설명하기 위한 블록 구성도이다.
도 19는 본 발명의 일 실시예에 따른 영상 처리를 위한 시스템의 스테이지(Stage) 별 동작을 설명하기 위한 예시도이다.
본 발명은 다양한 변경을 가할 수 있고 여러 가지 실시예를 가질 수 있는 바, 특정 실시예들을 도면에 예시하고 상세하게 설명하고자 한다.
그러나, 이는 본 발명을 특정한 실시 형태에 대해 한정하려는 것이 아니며, 본 발명의 사상 및 기술 범위에 포함되는 모든 변경, 균등물 내지 대체물을 포함하는 것으로 이해되어야 한다.
제1, 제2 등의 용어는 다양한 구성요소들을 설명하는데 사용될 수 있지만, 상기 구성요소들은 상기 용어들에 의해 한정되어서는 안 된다. 상기 용어들은 하나의 구성요소를 다른 구성요소로부터 구별하는 목적으로만 사용된다. 예를 들어, 본 발명의 권리 범위를 벗어나지 않으면서 제1 구성요소는 제2 구성요소로 명명될 수 있고, 유사하게 제2 구성요소도 제1 구성요소로 명명될 수 있다. 및/또는 이라는 용어는 복수의 관련된 기재된 항목들의 조합 또는 복수의 관련된 기재된 항목들 중의 어느 항목을 포함한다.
어떤 구성요소가 다른 구성요소에 "연결되어" 있다거나 "접속되어" 있다고 언급된 때에는, 그 다른 구성요소에 직접적으로 연결되어 있거나 또는 접속되어 있을 수도 있지만, 중간에 다른 구성요소가 존재할 수도 있다고 이해되어야 할 것이다. 반면에, 어떤 구성요소가 다른 구성요소에 "직접 연결되어" 있다거나 "직접 접속되어" 있다고 언급된 때에는, 중간에 다른 구성요소가 존재하지 않는 것으로 이해되어야 할 것이다.
본 출원에서 사용한 용어는 단지 특정한 실시예를 설명하기 위해 사용된 것으로, 본 발명을 한정하려는 의도가 아니다. 단수의 표현은 문맥상 명백하게 다르게 뜻하지 않는 한, 복수의 표현을 포함한다. 본 출원에서, "포함하다" 또는 "가지다" 등의 용어는 명세서상에 기재된 특징, 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것이 존재함을 지정하려는 것이지, 하나 또는 그 이상의 다른 특징들이나 숫자, 단계, 동작, 구성요소, 부품 또는 이들을 조합한 것들의 존재 또는 부가 가능성을 미리 배제하지 않는 것으로 이해되어야 한다.
다르게 정의되지 않는 한, 기술적이거나 과학적인 용어를 포함해서 여기서 사용되는 모든 용어들은 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자에 의해 일반적으로 이해되는 것과 동일한 의미를 가지고 있다. 일반적으로 사용되는 사전에 정의되어 있는 것과 같은 용어들은 관련 기술의 문맥상 가지는 의미와 일치하는 의미를 가진 것으로 해석되어야 하며, 본 출원에서 명백하게 정의하지 않는 한, 이상적이거나 과도하게 형식적인 의미로 해석되지 않는다.
이하, 첨부한 도면들을 참조하여, 본 발명의 바람직한 실시예를 보다 상세하게 설명하고자 한다. 본 발명을 설명함에 있어 전체적인 이해를 용이하게 하기 위하여 도면상의 동일한 구성요소에 대해서는 동일한 참조부호를 사용하고 동일한 구성요소에 대해서 중복된 설명은 생략한다.
도 1은 본 발명의 일 실시예에 따른 영상 처리를 위한 시스템의 구조를 설명하기 위한 구성도이다.
도 1을 참조하면, 본 발명의 일 실시예에 따른 영상 처리를 위한 시스템(100)은 프레임 데이터를 저장하기 위한 프레임 메모리(Frame Memory, 110), 입력되는 데이터를 저장하고, 상기 프레임 메모리부로 전달하기 위한 입력 비디오 버퍼(Input Video Buffer, 130), 복수의 매크로 블록(MB: Macro Block)을 저장하기 위한 매크로 블록 버퍼(MB Buffer, 140), 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 제1 서치윈도우 버퍼(SW 1 Buffer, 150), 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 제2 서치윈도우 버퍼(SW 2 Buffer, 160), 디블로킹 필터를 수행한 결과를 저장하기 위한 디블록드 매크로 블록 버퍼(Deblocked MB Buffer, 170) 및 상기 입력 비디오 버퍼, 매크로 블록 버퍼, 제1 서치윈도우 버퍼, 제2 서치윈도우 버퍼, 디블록드 매크로 블록 버퍼 및 상기 프레임 메모리에 대한 기입 및 독출을 수행하기 위한 프레임 메모리 컨트롤러(Frame Memory Controller, 120)를 포함하여 구성될 수 있다.
더불어, 3개의 BUS인 독출 데이터 버스(Read Data Bus), 기입 데이터 버스(Write Data Bus), 레지스터 버스(Register Bus)를 포함하여 구성될 수 있다.
도 1을 다시 참조하면, 본 발명의 일 실시예에 따른 영상 처리를 위한 시스템(100)은 다음과 같이 동작을 하게 된다.
입력 비디오 버퍼(Input Video Buffer, 130)를 통해 프레임 메모리(Frame Memory, 110)에 저장된 프레임 데이터는 16x16만큼의 매크로 블록(MB) 단위로 독출되어 매크로 블록 버퍼(MB Buffer, 140)에 저장되며, 동시에 상기 저장된 매크로 블록(MB)은 인트라 예측(IPRED: Intra Prediction), 거친 움직임 예측(CME: Coarse Motion Estimation) 및 미세 움직임 예측(FME: Fine Motion Estimation)의 과정에서 사용될 수 있다.
현재 프레임의 참조 프레임 영역 중에 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역은 제1 서치윈도우 버퍼(SW 1 Buffer, 150)에 저장될 수 있다.
상기 제1 서치윈도우 버퍼(SW 1 Buffer, 150)에 저장된 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역과 상기 매크로 블록 버퍼(MB Buffer, 140)에 저장된 매크로 블록을 사용하여 거친 움직임 예측(CME: Coarse Motion Estimation)을 통하여 움직임 벡터(Motion Vector)를 출력한다.
상기 수행된 거친 움직임 예측(CME: Coarse Motion Estimation)의 출력인 움직임 벡터(Motion Vector)를 이용하여 계산된 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역은 제2 서치윈도우 버퍼(SW 2 Buffer, 160)에 저장된다.
상기 제2 서치윈도우 버퍼(SW 2 Buffer, 160)에 저장된 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역과 제1 서치윈도우 버퍼(SW 1 Buffer, 150)에 저장된 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역 그리고 상기 매크로 블록 버퍼(MB Buffer, 140)에 저장된 매크로 블록(MB)을 사용하여, 미세 움직임 예측(FME: Fine Motion Estimation)에서는 움직임 벡터(Motion Vector)와 예측된 매크로 블록(Predicted MB)을 출력한다.
상기 미세 움직임 예측(FME: Fine Motion Estimation)에 의해 출력된 움직임 벡터(Motion Vector)와 상기 매크로 블록 버퍼(MB Buffer, 140)에 저장된 매크로 블록(MB)을 이용하여 인트라 예측(IPRED: Intra Prediction), 하다마드 변환(Hadamard Transform), 이산 코사인 변환(DCT: Discrete Cosine Transform) 및 양자화(Quantization)까지 수행된 결과는 CAVLC(Context Adaptive Variable Length Coding)이 수행되어 압축 영상으로 출력된다.
양자화까지 수행된 결과는 역양자화(Inverse Quantization), 역이산 코사인 변환(IDCT: Inverse Discrete Cosine Transformation), 역하다마드 변환(Inverse Hadamard Transform) 및 REC(Reconstruction)가 수행되며, 그 결과는 디블로킹 필터(Deblocking Filter)에서 디블로킹 처리되어 디블록드 매크로 블록 버퍼(Deblocked MB Buffer, 170)에 저장된다.
상기 디블록드 매크로 블록 버퍼(Deblocked MB Buffer, 170)에 저장된 디블록드 매크로 블록(Deblocked MB)은 프레임 메모리(Frame Memory, 110)에 저장된다.
도 2는 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러를 설명하기 위한 인터페이스 구성도이다. 도 3은 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러를 설명하기 위한 블록 구성도이다.
도 2 및 도 3을 병행하여 참조하면, 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러(Frame Memory Controller, 120)는 매크로 블록 단위 데이터의 기입 및 독출을 위하여 구성된 것일 수 있다. 즉, 매크로 블록 단위 크기의 데이터에 대하여 적합한 구조로 형성되어 매크로 블록 단위 크기의 기입 및 독출을 빠르게 수행할 수 있도록 구성된 것일 수 있다.
프레임 메모리 컨트롤러(Frame Memory Controller, 120)는 상기 입력 비디오 버퍼, 매크로 블록 버퍼, 제1 서치윈도우 버퍼, 제2 서치윈도우 버퍼, 디블록드 매크로 블록 버퍼 및 상기 프레임 메모리에 대한 기입 및 독출을 수행한다.
레지스터 버스(Register Bus)를 통해 설정이 되며, 설정에 따라 기입 데이터 버스(Write Data Bus)와 독출 데이터 버스(Read Data Bus)를 통해 데이터를 기입하고 독출하는 역할을 수행한다.
프레임 메모리 컨트롤러(Frame Memory Controller)는 프레임 메모리(Frame Memory)로 에스디램(SDRAM)이 사용될 수 있으므로, 데이터(Data)를 전송하는 부분 외에 Refresh와 Precharge 및 Bank Interleaving 기능을 쓰기 위한 SDRAM 제어 기능, Buffer가 단지 Source Memory, Destination Memory의 영역만을 알려 주기만 하면 프레임 메모리 컨트롤러(Frame Memory Controller)가 직접 Memory간의 전송을 담당하도록 하여 상기 버퍼(Buffer)들과 프레임 메모리(Frame Memory)간 전송 기능을 없앤 직접 메모리 접근 기능 및 영상 부호기의 특성상 매크로 블록(MB) 단위의 데이터(data) 전송을 빠르게 하기 위한 2D 전송 기능을 지원한다.
도 2를 다시 참조하면, 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러(Frame Memory Controller, 120)의 인터페이스는 다음과 같다.
CLKO, CKE, CS, RAS, CAS, WE, DOE, BA[1:0], A[12:0], DQM[3:0], DOUT[31:0], CLKI, DIN[31:0]은 JDEC 기준 SDRAM 인터페이스이다. WE_REG, ADDR_REG[31:0], DATA_REG[31:0]은 프레임 메모리 컨트롤러(Frame Memory Controller) Register 인터페이스로 레지스터 버스(Register Bus)를 통해 각각의 버퍼(Buffer)로부터 신호가 전달된다. BUSY, Select[3:0], WE, ADDR[31:0], RDATA[31:0], WDATA[31:0] 신호는 각각의 버퍼(Buffer) 내의 Memory를 읽고 쓰기 위한 신호이다.
도 3을 다시 참조하면, 본 발명의 일 실시예에 따른 프레임 메모리 컨트롤러(Frame Memory Controller, 120)의 내부 구조는 다음과 같다.
SDRAM 컨트롤러(SDRAM Controller)는 데이터 전송과 함께 레지스터(Register) 값에 따른 Command를 보내 SDRAM 제어를 한다.
커맨드 피포(Command FIFO)는 레지스터(Register) 값에 따라 Source Address 및 Destination Address를 저장하고 있으며, 이를 순차적으로 SDRAM 컨트롤러(SDRAM Controller)에 보낸다.
1차 커맨드 제너레이터(1D Command Generator)는 2차 커맨드 제너레이터(2D Command Generator)에서부터 Source와 Destination의 Start Address와 End Address를 받아 순차적으로 해당 SDRAM Interface 신호를 발생시킨다.
2차 커맨드 제너레이터(2D Command Generator)는 2D Block 전송 모드 일 경우 여러 1D 전송을 위한 Start와 End address를 1차 커맨드 제너레이터(1D Command Generator)에 보낸다.
주변 인터페이스 모듈(Peripheral Interface Module)은 커맨드 피포(Command FIFO)로부터 받은 peripheral address와 데이터 피포(Data FIFO)로부터 받은 data를 master interface를 통해 Buffer에 data를 저장을 하거나 master interface를 통해 buffer로부터 받은 data와 커맨드 피포(Command FIFO)로부터 받은 SDRAM Interface 신호를 데이터 피포(Data FIFO)에 저장을 한다.
데이터 피포(Data FIFO)는 SDRAM 컨트롤러(SDRAM Controller)와 주변 인터페이스 모듈(Peripheral Interface Module)간 전송 data, address 그리고, 제어신호를 저장하고 SDRAM 컨트롤러(SDRAM Controller)나 주변 인터페이스 모듈(Peripheral Interface Module)로부터 요청 시 이를 순차적으로 보낸다.
도 4는 본 발명의 일 실시예에 따른 입력 비디오 버퍼를 설명하기 위한 인터페이스 구성도이다. 도 5는 본 발명의 일 실시예에 따른 입력 비디오 버퍼를 설명하기 위한 블록 구성도이다.
도 4 및 도 5를 병행하여 참조하면, 본 발명의 일 실시예에 따른 입력 비디오 버퍼(Input Video Buffer, 130)는 입력되는 데이터를 저장하고, 상기 프레임 메모리부로 전달하기 위한 버퍼로서, 상기 입력 비디오 버퍼는 상기 입력되는 데이터를 프레임 내 매크로 블록 개수만큼으로 나누어 저장하는 것일 수 있다.
입력 비디오 버퍼(Input Video Buffer, 130)는 입력 영상을 저장하고, 저장된 영상을 프레임 메모리 컨트롤러(Frame Memory Controller, 120)를 통해 프레임 메모리(frame memory, 110)에 저장하는 역할을 한다.
YUV format으로 되어 있는 입력 영상은 카메라 인터페이스를 통해 영상 크기와 초당 frame 수에 맞게 일방적으로 들어오게 된다. 이를 프레임 메모리 컨트롤러를 통해 프레임 메모리(frame memory)로 바로 저장하기에는 프레임 메모리 컨트롤러가 다른 Buffer에 의해 사용 중일 수도 있어 프레임 메모리 컨트롤러의 상태에 따라 입력 영상을 바로 저장을 못할 수가 있으므로, 입력 비디오 버퍼(Input Video Buffer)의 Memory에 저장을 한 후 frame내 매크로 블록(MB) 개수만큼으로 나누어, 프레임 메모리 컨트롤러를 통해 프레임 메모리(frame memory)에 저장을 하여 일정한 매크로 블록(MB)당 처리 cycle 수를 유지하는 기능을 한다.
도 4 및 도 5를 다시 병행하여 참조하면, 본 발명의 일 실시예에 따른 입력 비디오 버퍼의 인터페이스 신호는 다음과 같다.
CIS_CON은 카메라 입력을 받아 유효한 SRAM 0/1의 Memory에 Line 단위로 저장을 한다. SRAM0와 SRAM1은 1 line의 luma(밝기, Luminance), chrom(색차, Chrominance) 값을 저장할 수 있는 크기를 갖고 있다. FMC_CON은 line이 채워져 있는 memory를 읽어, 프레임 메모리 컨트롤러 설정을 통해 프레임 메모리(frame memory)로 저장되어 있는 line data를 보내게 된다.
VICLK, VIVSYNC, VIHSYNC, VIY[7:0]을 통해 YUV format 영상이 들어오고 이는 내부 Memory에 저장이 된다. 영상이 들어오는 방식은 frame 내 line 단위로 들어오는 영상 format에 따라 chroma값이 포함이 되는 경우가 있다. 그래서 SRAM0/SRAM1은 최대 영상크기의 luma, chroma의 1 line을 저장할 수 있는 만큼의 크기를 가지며, 하나의 line이 SRAM0에 저장된 후 다음 line이 SRAM1에 저장이 되는 동안 SRAM0에 있는 line은 FMC_CON에 의해 MB만큼의 data가 frame memory에 저장이 된다.
도 6은 본 발명의 일 실시예에 따른 매크로 블록 버퍼를 설명하기 위한 인터페이스 구성도이다. 도 7은 본 발명의 일 실시예에 따른 매크로 블록 버퍼를 설명하기 위한 블록 구성도이다.
도 6 및 도 7을 병행하여 참조하면, 본 발명의 일 실시예에 따른 매크로 블록 버퍼(MB Buffer, 140)는 상기 프레임 메모리로부터 독출한 복수의 매크로 블록(MB)이 순차적으로 저장되고, 저장된 상기 각각의 매크로 블록(MB)이 동시에 독출될 수 있는 것일 수 있다.
현재 처리 중인 프레임(frame)에서 순차적으로 매크로 블록(MB) 단위만큼의 영상 데이터를 프레임 메모리(Frame memory, 110)로부터 읽어 오며, 동시에 이미 읽어 온 매크로 블록(MB) N개를 저장하고 있으므로, 이들 매크로 블록(MB)을 필요로 하는 내부 기능 블록이 각각의 매크로 블록(MB)을 동시에 읽어 갈 수 있다.
내부에는 N개로 구성된 메모리를 갖고 있고, 하나의 Memory는 매크로 블록(MB)의 luma, chroma를 저장할 수 있으며, 독립적인 port를 갖고 있으며, 자신이 저장하고 있는 MB의 index를 갖고 있어서, 이를 필요로 하는 내부 블록이 해당 index를 보고 읽어 갈 수 있다. 또한, 다수의 블록이 다른 index의 매크로 블록(MB)을 동시에 읽어 갈 수 있다.
도 6 및 도 7을 다시 병행하여 참조하면, 본 발명의 일 실시예에 따른 매크로 블록 버퍼(MB Buffer, 140)의 인터페이스 신호 및 내부 블록은 다음과 같다.
내부 Memory인 SRAM은 N개가 존재할 수 있으며, 여기서는 N이 4인 경우를 가정하여 동작 방식을 설명한다. SRAM0은 프레임 메모리 컨트롤러(Frame Memory Controller)에 의해 다음 거친 움직임 예측(CME: Coarse Motion Estimation)에서 쓰일 (N+1)th MB를 저장을 하고 있으며, 이미 프레임 메모리 컨트롤러(Frame Memory Controller)에 의해 Nth MB가 저장된 SRAM1은 거친 움직임 예측(CME: Coarse Motion Estimation)에 의해 사용되고, (N-1)th MB가 저장된 SRAM2는 인트라 예측(IPRED: Intra Prediction)에 의해서 사용된다. (N-2)th MB가 저장된 SRAM3는 미세 움직임 예측(FME: Fine Motion Estimation)에 의해 사용이 된다.
다음으로, 더 이상 쓰이지 않는 (N-2)th MB가 저장된 SRAM3는 프레임 메모리 컨트롤러(Frame Memory Controller)에 의해 (N+2)th MB가 저장된다. 거친 움직임 예측(CME: Coarse Motion Estimation)은 (N+1)th MB가 저장되어 있는 SRAM0을 사용한다. 그리고, Nth MB 가 저장되어 있던 SRAM1은 인트라 예측(IPRED: Intra Prediction)에서 사용하며, 미세 움직임 예측(FME: Fine Motion Estimation)은 (N-1)th MB 가 저장되어 있던 SRAM2를 사용한다.
계속해서 다음 단계에는 더 이상 사용하지 않는 MB가 저장되어 있는 SRAM을 찾아 프레임 메모리 컨트롤러(Frame Memory Controller)는 새로운 MB를 저장하게 된다.
도 8은 본 발명의 일 실시예에 따른 매크로 블록 버퍼의 동작을 설명하기 위한 예시도이다.
도 8을 참조하면, 본 발명의 일 실시예에 따른 매크로 블록 버퍼(MB Buffer, 140) SRAM 0~3의 내부는 블록들이 좀더 효율적으로 읽어갈 수 있도록 구성된다.
매크로 블록 버퍼(MB Buffer, 140) 내 SRAM은 Block_w0, Block_w1, Block_w2, Block_w3로 나누어 있으며 MB내 Block의 4 word를 나누어 저장을 하고 있다. 그래서, 동시에 하나의 Block을 읽을 수가 있도록 하여, Block 단위 처리를 하는 블록들이 동시에 하나의 Block을 읽어 처리할 수 있도록 하였다.
또한, 거친 움직임 예측(CME: Coarse Motion Estimation)의 연산의 특성인 기존의 MB의 크기인 16x16 매트리스만큼의 화소에 대한 움직임 예측을 하지 않고, 1/2샘플링을 한 8x8 매트리스만큼의 화소에 대한 움직임 예측을 한다. 따라서, 외부메모리에서 읽어온 화소 중 유효화소와 무효화소를 나누어 물리적으로 다른 메모리에 저장하도록 하였다.
즉, Block내에서 같은 line에 있는 4화소들 중에 첫 번째, 세 번째 화소는 odd 메모리에 저장을 하고, 두 번째, 네 번째 화소는 even 메모리에 저장을 한다.
거친 움직임 예측(CME: Coarse Motion Estimation)은 매크로 블록(MB)을 읽어 올 때 Block_w0, Block_w1내의 odd SRAM 만을 사용하며, word단위로 읽을 때는 Block_w0와 Block_w1에 저장되는 Line의 이웃 Block의 화소까지 각각 4개의 유효 화소를 얻게 된다. 이렇게 Block_w0와 Block_w1으로 구성하여도 인트라 예측(IPRED: Intra Prediction) 및 미세 움직임 예측(FME: Fine Motion Estimation)에서 Block_w0, Block_w1을 사용할 때 word단위로 읽을 수 있도록 odd/even 메모리는 half-word 단위로 읽혀질 수 있을 것이다.
도 9는 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼를 설명하기 위한 인터페이스 구성도이다. 도 10은 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼를 설명하기 위한 블록 구성도이다.
도 9 및 도 10을 병행하여 참조하면, 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼(SW 1 Buffer, 150)는 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 것으로, 제1 서치윈도우 버퍼에서 각각의 참조 프레임의 검색영역의 크기는 가변적인 것일 수 있으며, 제1 서치윈도우 버퍼에서 각각의 참조 프레임의 검색영역은 동시에 독출될 수 있는 것일 수 있다.
인터 예측(Inter Prediction)을 위해서는 이전 Frame의 영역을 이용하여 움직임 예측(Motion Estimation)을 하는데, 이를 위한 이전 Frame의 영역 즉, 서치윈도우(Search Window) 중 계층적 움직임 예측의 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 저장하며, 상기 저장된 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 거친 움직임 예측 기능 블록과 미세 움직임 예측 기능 블록에서 읽어 갈 수 있도록 하는 기능을 한다.
도 9 및 도 10을 다시 병행하여 참조하면, 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼(SW 1 Buffer)의 인터페이스 신호 및 블록도는 다음과 같다.
제1 서치윈도우 버퍼(SW 1 Buffer, 150)는 N개의 SRAM이 존재할 수 있으며, 저장할 수 있는 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)의 크기 또한 가변적일 수 있다.
단지, 미세 움직임 예측(FME: Fine Motion Estimation)의 움직임 추정이 여러 단계로 나뉘어져 있을 때, 각 단계를 담당하는 움직임 추정 블록들이 동시에 서로 다른 MB의 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 읽어 갈 수 있도록 구성이 되어 있다.
동작을 살펴보면, 서치윈도우(SW)는 48x48 pixel 만큼으로 MB의 중심에서 MB의 9배 크기가 되는 경우이고, 움직임 추정은 계층적 움직임 추정을 하므로, 거친 움직임 추정과 미세한 움직임 추정으로 나뉠 수 있고, 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)은 거친 움직임 추정을 위한 참조 프레임의 서치윈도우(Search Window)를 저장하게 된다. 이를 기반으로 통상의 여러 단계의 움직임 추정을 하는 인터 예측 방식 등에 적용이 가능하다.
도 11은 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼의 동작을 설명하기 위한 예시도이다. 도 12는 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼의 동작을 설명하기 위한 다른 예시도이다. 도 13은 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼의 동작을 설명하기 위한 또 다른 예시도이다.
도 11을 참조하면, 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼(SW 1 Buffer, 150)는 거친 움직임 예측(CME: Coarse Motion Estimation)의 Search Window 영역을 균등하게 수직으로 3등분하고, 한 영역의 Y만을 하나의 Bank에 저장을 하도록 하였다. 9개의 Bank를 갖고, 프레임 메모리 컨트롤러(Frame Memory Controller), 거친 움직임 예측(CME: Coarse Motion Estimation)과 미세 움직임 예측(FME: Fine Motion Estimation)이 동시에 서로 단위 MB의 Search Window 영역을 읽고 쓸 수 있다.
현재 MB의 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)이 (N+1)th SW, (N+2)th SW, (N+3)th SW라면, 다음 MB의 SW 영역은 (N+2)th SW, (N+3)th SW, (N+4)th SW가 된다.
프레임 메모리 컨트롤러는 처음에는 세 개의 SW를 연속해서 Frame memory에서 읽은 후에, 프레임 메모리 컨트롤러는 한 개의 SW를 Frame Memory에서 읽어 제1 서치윈도우 버퍼(SW 1 Buffer)에 쓰고 동시에 거친 움직임 예측(CME: Coarse Motion Estimation)이 전 세 개의 SW를 읽으며, 다시 프레임 메모리 컨트롤러가 한 개의 SW를 Frame Memory에서 읽어 제1 서치윈도우 버퍼(SW 1 Buffer)에 쓰고, 동시에 거친 움직임 예측(CME: Coarse Motion Estimation)가 전 세 개의 SW를 읽고 동시에 미세 움직임 예측(FME: Fine Motion Estimation)가 전 세 개의 SW를 읽게 된다.
프레임 메모리 컨트롤러는 이미 앞에서 Nth SW의 Y를 SRAM0, SRAM5에 읽어 온다. SRAM0, SRAM5는 같은 내용이 저장된다. 그렇게 (N+1)th SW, (N+2)th SW, (N+3)th SW까지 SRAM1, SRAM6, SRAM2, SRAM7, SRAM3, SRAM8에 저장이 된다. 프레임 메모리 컨트롤러가 (N+3)th SW를 저장할 때 CME는 Nth SW, (N+1)th SW, (N+2)th SW인 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 읽기 위해 SRAM0, SRAM1, SRAM2을 읽는다.
도 12를 참조하면, 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼(SW 1 Buffer, 150)에서 다음 단계의 동작을 설명하면, 프레임 메모리 컨트롤러는 (N+4)th SW를 SRAM0, SRAM4에 저장을 한다. 동시에 거친 움직임 예측(CME: Coarse Motion Estimation)은 (N+1)th SW, (N+2)th SW, (N+3)th SW 인 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 읽기 위해 SRAM1, SRAM2, SRAM3을 읽는다.
미세 움직임 예측(FME: Fine Motion Estimation)은 미세 움직임 추정을 위한 Search Window의 일부를 읽기 위해 Nth SW, (N+1)th SW, (N+2)th SW 를 저장하고 있는 SRAM5, SRAM6, SRAM7을 읽는다.
도 13을 참조하면, 본 발명의 일 실시예에 따른 제1 서치윈도우 버퍼(SW 1 Buffer, 150)에서 다음 단계의 동작을 설명하면, 프레임 메모리 컨트롤러는 (N+5)th SW를 SRAM1, SRAM5에 저장을 한다. 동시에 거친 움직임 예측(CME: Coarse Motion Estimation)은 (N+2)th SW, (N+3)th SW, (N+4)th SW 인 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 읽기 위해 SRAM2, SRAM3, SRAM4을 읽는다. 미세 움직임 예측(FME: Fine Motion Estimation)은 미세 움직임 추정을 위한 Search Window의 일부를 읽기 위해 (N+1)th SW, (N+2)th SW, (N+3)th SW을 저장하고 있는 SRAM6, SRAM7, SRAM8을 읽는다.
도 14는 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼를 설명하기 위한 인터페이스 구성도이다. 도 15는 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼를 설명하기 위한 블록 구성도이다.
도 14 및 도 15를 병행하여 참조하면, 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼(SW 2 Buffer, 160)는 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역(SW II)을 저장하기 위한 것으로서, 제2 서치윈도우 버퍼는 상기 제1 서치윈도우 버퍼 이외의 참조 프레임의 검색영역을 저장하는 것일 수 있으며, 상기 제1 서치윈도우 버퍼 이외의 참조 프레임의 검색영역은 거친 움직임 예측(CME: Coarse Motion Estimation)의 결과에 따라 달라질 수 있는 것이다.
보편적으로, 하드웨어로 설계되는 영상부호기의 인터 예측을 위한 움직임 추정은 계층적 움직임 추정을 하며, 계층적 움직임 추정은 크게 거친 움직임 추정과 미세한 움직임 추정으로 나뉜다.
거친 움직임 추정에 의해 넓은 Search Window 영역에서 큰 움직임 벡터(Motion Vector) 간격으로 모든 Search Window 영역을 검색하여 최적의 Motion Vector를 찾으며, 미세한 움직임 추정에서 그 Motion Vector를 기준으로 주변 Search Window 영역에서만 1/4 화소단위까지의 움직임 추정을 하게 된다.
미세한 움직임 추정에서 필요한 Search Window 영역은 많은 부분이 거친 움직임 추정에서 필요로 하는 Search Window영역과 겹치게 되며, 그렇지 않은 Search Window 영역을 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역(SW II)이라고 하고, 이를 저장하기 위해 제2 서치윈도우 버퍼(SW 2 Buffer)를 사용하게 된다.
그래서, 제2 서치윈도우 버퍼(SW 2 Buffer)에서는 거친 움직임 추정의 결과인 움직임 벡터를 기준으로 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역(SW II)을 Frame Memory에서 읽어 오며, 동시에 미세 움직임 추정에서 필요로 하는 SW를 상기 저장된 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역(SW II)영역과 제1 서치윈도우 버퍼(SW 1 Buffer)를 통해 읽어온 거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역(SW I)을 이용하여 미세 움직임 예측(FME: Fine Motion Estimation)을 수행하게 된다.
도 16은 본 발명의 일 실시예에 따른 제2 서치윈도우 버퍼의 동작을 설명하기 위한 예시도이다.
도 16을 참조하면, 거친 움직임 예측(CME: Coarse Motion Estimation)은 연산의 특성인 기존의 MB의 크기인 16x16 매트리스만큼의 화소에 대한 움직임 예측을 하지 않고, 1/2샘플링을 한 8x8 매트리스만큼의 화소에 대한 움직임 예측을 하므로, Search Window 영역 내의 데이터도 매크로 블록 버퍼(MB Buffer)를 읽는 특성을 그대로 따라간다.
따라서, 제1 서치윈도우 버퍼(SW 1 Buffer)의 SRAM들은 Search Window 영역을 Block 단위로 나누었을 때, 4 개의 word 중에 첫 번째와 두 번째 만이 제1 서치윈도우 버퍼(SW 1 Buffer)의 SRAM내의 Block_w0와 Block_w1에 저장된다. 이중에 word내의 첫 번째와 세 번째 화소는 odd, 두 번째와 네 번째 화소는 even에 저장이 되고, 거친 움직임 예측(CME: Coarse Motion Estimation)은 odd만을 읽어 가게 된다. Even은 미세 움직임 예측(FME: Fine Motion Estimation)에서 사용될 데이터들이 저장된다.
제2 서치윈도우 버퍼(SW 2 Buffer)는 거친 움직임 예측(CME: Coarse Motion Estimation)의 결과에 따라 필요한 Block의 두 번째와 네 번째 word를 읽어오게 된다. 각각은 Block_w2와 Block_w3에 저장이 된다. 뿐만 아니라, 미세 움직임 예측(FME: Fine Motion Estimation) 내에서 half-pel 연산을 위해서는 Search Window 영역 외에 상하좌우로 3개의 화소를 포함하는 영역이 더 필요하다.
이미 제1 서치윈도우 버퍼(SW 1 Buffer)와 Block_w2와 Block_w3에 포함이 되어 있을 수 있으나, 그렇지 못한 경우, 포함되지 않은 영역 중에 상위Interpolation_upper와 하위 Interpolation_bottem 영역은 Interpolation_upper_bottom에 저장이 되고, 좌우 영역 중에 Block_w0와 Block_w1에 저장된 line같은 영역은 Block_w0_w1_interpol에 저장이 된다.
도 17은 본 발명의 일 실시예에 따른 디블록드 매크로 블록 버퍼를 설명하기 위한 인터페이스 구성도이다. 도 18은 본 발명의 일 실시예에 따른 디블록드 매크로 블록 버퍼를 설명하기 위한 블록 구성도이다.
도 17 및 도 18을 병행하여 참조하면, 본 발명의 일 실시예에 따른 디블록드 매크로 블록 버퍼(Deblocked MB Buffer, 170)는 디블로킹 필터를 수행한 결과를 저장하기 위한 것으로, 상기 디블록드 매크로 블록 버퍼에서 상기 디블로킹 필터를 수행한 결과는 추가적으로 상기 프레임 메모리에 저장하는 것일 수도 있다.
디블록드 매크로 블록 버퍼(Deblocked MB Buffer, 170)는 인트라 예측(Intra Prediction) 또는 인터 예측(Inter Prediction)으로 예측된 매크로 블록(Predicted MB)과 부호화를 중인 매크로 블록(MB)과의 차이를 변환 및 양자화 후 다시 역변환 및 역영자화 한 값을 이용하여 복원한 매크로 블록(MB)을 MB단위간의 block 현상을 없애기 위해 디블록킹 필터(Deblocking filter)를 수행한 결과(deblocked MB)를 저장하며, 동시에 이미 저장된 Deblocked MB를 프레임 메모리 컨트롤러(Frame Memory Controller)를 통해 프레임 메모리(Frame Memory)에 저장한다.
도 17 및 도 18을 다시 병행하여 참조하면, DB_CON에 의해 Deblocking Filter를 수행한 결과는 MB_num과 함께 비어있는 SRAM에 저장이 된다. 그리고, 채워진 SRAM은 FMC_CON에 의해 프레임 메모리 컨트롤러(Frame Memory Controller) 설정을 하여 프레임 메모리(Frame Memory)에 저장이 된다.
통상적으로 MB를 채울 수 있는 SRAM은 N개가 될 수 있으며, 이는 Frame Memory에 저장을 하지 않은 Deblocked MB를 N개 저장을 가능하게 하여 N-1만큼의 MB처리기간 동안 기다린 후에 프레임 메모리(Frame Memory)에 저장을 할 수 있도록 한다.
도 19는 본 발명의 일 실시예에 따른 영상 처리를 위한 시스템의 스테이지(Stage) 별 동작을 설명하기 위한 예시도이다.
도 19를 참조하면, 파이프 라인 스테이지(Pipeline Stage)를 갖는 실시예에서 MB 단위 처리를 위한 Clock 수를 비교하였다. 그리고, 이러한 구조에서 통상적으로 지배적인 파이프 라인 스테이지(Pipeline Stage)를 결정하는 요인은 프레임 메모리 컨트롤러(Frame Memory Controller)에 의해 매 Stage상기 필요한 Buffer의 내용을 채우거나 비우는 시간이 된다. 따라서, MB 단위 처리를 위한 Clock 수를 매 Stage마다 프레임 메모리 컨트롤러(Frame Memory Controller)에 의해 Buffer를 채우는 Clock 수로 보아도 무방하다.
본 발명에서 제안된 구조를 갖지 않는다면, 거친 움직임 예측(CME: Coarse Motion Estimation)과 인트라 예측(IPRED: Intra Prediction) 및 미세 움직임 예측(FME: Fine Motion Estimation)은 다른 Stage에 있어서 서로 다른 Current MB를 필요로 하며, 같은 Stage에 있는 인트라 예측(IPRED: Intra Prediction)과 미세 움직임 예측(FME: Fine Motion Estimation)이 필요로 하는 Current MB의 유효 화소도 다르다.
그러므로, 인트라 예측(IPRED: Intra Prediction), 거친 움직임 예측(CME: Coarse Motion Estimation) 및 미세 움직임 예측(FME: Fine Motion Estimation)을 위한 현재 매크로 블록(Current MB)은 각각 저장되어 있어야 하며, 모두 각각이 필요로 하는 Current MB를 프레임 메모리 컨트롤러(Frame Memory Controller)를 통해 반복적으로 프레임 메모리(Frame Memory)로부터 읽어 와야 한다.
그리고, 제2 서치윈도우 버퍼(SW 2 Buffer)의 내용을 채울 때는 제1 서치윈도우 버퍼(SW 1 Buffer)의 내용을 참조하지 않으므로, 미세 움직임 예측(FME: Fine Motion Estimation)의 Search Range의 모든 YUV를 저장해야 한다.
그리고, 프레임 메모리(Frame Memory)는 통상적으로 SDRAM으로 하며 720p나 1080p 등의 영상크기를 지원하지 위해 Cas Latency 3, tRAC 7의 Parameter로 하며, Read/Write Cycle 측정을 위해 tRAC은 측정에 지배적이지 않으므로 무시하고, 단지 Cas Latency 3으로 성능을 비교할 수 있다.
Figure pat00001
상기 표에서는 각각의 Buffer별로 필요한 Clock 수와 이를 통한 MB단위 처리를 위한 Clock 수를 비교하였다.
파이프 라인(Pipeline)의 Throughput(Cycle/MB)은 984.3 cycle이었던 것이 본 발명의 제안된 구조를 사용한 경우에 Throughput(Cycle/MB)가 720.9 cycle이 되었다. 결국, Throughput에 의한 MB단위 처리를 위한 Clock 수는 미 적용시의 73.24 %가 되었으며, 약 26.76%가 감소하는 효과를 볼 수 있다.
이상 실시예를 참조하여 설명하였지만, 해당 기술 분야의 숙련된 당업자는 하기의 특허 청구의 범위에 기재된 본 발명의 사상 및 영역으로부터 벗어나지 않는 범위 내에서 본 발명을 다양하게 수정 및 변경시킬 수 있음을 이해할 수 있을 것이다.
100: 영상 처리를 위한 시스템 110: 프레임 메모리
120: 프레임 메모리 컨트롤러 130: 입력 비디오 버퍼
140: 매크로 블록 버퍼 150: 제1 서치윈도우 버퍼
160: 제2 서치윈도우 버퍼 170: 디블록드 매크로 블록 버퍼

Claims (11)

  1. 프레임 데이터를 저장하기 위한 프레임 메모리(Frame Memory);
    입력되는 데이터를 저장하고, 상기 프레임 메모리부로 전달하기 위한 입력 비디오 버퍼(Input Video Buffer);
    복수의 매크로 블록(MB: Macro Block)을 저장하기 위한 매크로 블록 버퍼(MB Buffer);
    거친 움직임 예측(CME: Coarse Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 제1 서치윈도우 버퍼(SW 1 Buffer);
    미세 움직임 예측(FME: Fine Motion Estimation)을 위한 참조 프레임의 검색영역을 저장하기 위한 제2 서치윈도우 버퍼(SW 2 Buffer);
    디블로킹 필터를 수행한 결과를 저장하기 위한 디블록드 매크로 블록 버퍼(Deblocked MB Buffer); 및
    상기 입력 비디오 버퍼, 매크로 블록 버퍼, 제1 서치윈도우 버퍼, 제2 서치윈도우 버퍼, 디블록드 매크로 블록 버퍼 및 상기 프레임 메모리에 대한 기입 및 독출을 수행하기 위한 프레임 메모리 컨트롤러(Frame Memory Controller)를 포함하여 구성되는 영상 처리를 위한 시스템.
  2. 제1항에 있어서,
    상기 프레임 메모리는 에스디램(SDRAM)인 것을 특징으로 하는 영상 처리를 위한 시스템.
  3. 제1항에 있어서,
    상기 입력 비디오 버퍼는 상기 입력되는 데이터를 프레임 내 매크로 블록 개수만큼으로 나누어 저장하는 것을 특징으로 하는 영상 처리를 위한 시스템.
  4. 제1항에 있어서,
    상기 매크로 블록 버퍼는 상기 프레임 메모리로부터 독출한 복수의 매크로 블록이 순차적으로 저장되고, 저장된 상기 각각의 매크로 블록이 동시에 독출될 수 있는 것을 특징으로 하는 영상 처리를 위한 시스템.
  5. 제4항에 있어서,
    상기 매크로 블록 버퍼는 복수의 메모리로 구성되며, 각각의 메모리는 매크로 블록의 밝기(Luminance) 및 채도(chroma)를 저장할 수 있는 것을 특징으로 하는 영상 처리를 위한 시스템.
  6. 제1항에 있어서,
    상기 제1 서치윈도우 버퍼에서 각각의 참조 프레임의 검색영역의 크기는 가변적인 것을 특징으로 하는 영상 처리를 위한 시스템.
  7. 제1항에 있어서,
    상기 제1 서치윈도우 버퍼에서 각각의 참조 프레임의 검색영역은 동시에 독출될 수 있는 것을 특징으로 하는 영상 처리를 위한 시스템.
  8. 제1항에 있어서,
    상기 제2 서치윈도우 버퍼는 상기 제1 서치윈도우 버퍼 이외의 참조 프레임의 검색영역을 저장하는 것을 특징으로 하는 영상 처리를 위한 시스템.
  9. 제8항에 있어서,
    상기 제1 서치윈도우 버퍼 이외의 참조 프레임의 검색영역은 거친 움직임 예측(CME: Coarse Motion Estimation)의 결과에 따라 달라지는 것을 특징으로 하는 영상 처리를 위한 시스템.
  10. 제1항에 있어서,
    상기 디블록드 매크로 블록 버퍼에서 상기 디블로킹 필터를 수행한 결과는 상기 프레임 메모리에 저장되는 것을 특징으로 하는 영상 처리를 위한 시스템.
  11. 제1항에 있어서,
    상기 프레임 메모리 컨트롤러는 매크로 블록 단위 데이터의 기입 및 독출을 위하여 구성된 것을 특징으로 하는 영상 처리를 위한 시스템.
KR1020100116380A 2009-12-07 2010-11-22 영상 처리를 위한 시스템 KR101419378B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
US12/961,196 US20110135008A1 (en) 2009-12-07 2010-12-06 Video processing system
JP2010271823A JP5378344B2 (ja) 2009-12-07 2010-12-06 映像処理のためのシステム

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
KR20090120355 2009-12-07
KR1020090120355 2009-12-07

Publications (2)

Publication Number Publication Date
KR20110065335A true KR20110065335A (ko) 2011-06-15
KR101419378B1 KR101419378B1 (ko) 2014-07-16

Family

ID=44398607

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020100116380A KR101419378B1 (ko) 2009-12-07 2010-11-22 영상 처리를 위한 시스템

Country Status (1)

Country Link
KR (1) KR101419378B1 (ko)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013158125A1 (en) * 2012-04-20 2013-10-24 Intel Corporation Performance and bandwidth efficient fractional motion estimation
KR20150097261A (ko) * 2014-02-18 2015-08-26 한국전자통신연구원 컨볼루션 기법 기반의 고속 적응적 샘플 오프셋 필터링 장치 및 방법
CN106960412A (zh) * 2016-01-12 2017-07-18 三星电子株式会社 包括多个缓冲区的存储器设备和驱动存储器的方法

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007189518A (ja) 2006-01-13 2007-07-26 Matsushita Electric Ind Co Ltd 信号処理装置、撮像装置、ネットワークカメラシステム及び映像システム
JP2009130599A (ja) 2007-11-22 2009-06-11 Toshiba Corp 動画像復号装置

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013158125A1 (en) * 2012-04-20 2013-10-24 Intel Corporation Performance and bandwidth efficient fractional motion estimation
US10021387B2 (en) 2012-04-20 2018-07-10 Intel Corporation Performance and bandwidth efficient fractional motion estimation
KR20150097261A (ko) * 2014-02-18 2015-08-26 한국전자통신연구원 컨볼루션 기법 기반의 고속 적응적 샘플 오프셋 필터링 장치 및 방법
CN106960412A (zh) * 2016-01-12 2017-07-18 三星电子株式会社 包括多个缓冲区的存储器设备和驱动存储器的方法
CN106960412B (zh) * 2016-01-12 2021-11-12 三星电子株式会社 包括多个缓冲区的存储器设备和驱动存储器的方法

Also Published As

Publication number Publication date
KR101419378B1 (ko) 2014-07-16

Similar Documents

Publication Publication Date Title
US10469868B2 (en) Motion estimation and in-loop filtering method and device thereof
US8566515B2 (en) Memory subsystem
JP5378344B2 (ja) 映像処理のためのシステム
US8031772B2 (en) Parallel processing architecture for video decompression
US20070208919A1 (en) Burst memory access method to rectangular area
KR100606812B1 (ko) 비디오 디코딩 시스템
US8451901B2 (en) High-speed motion estimation apparatus and method
JPH08123953A (ja) 画像処理装置
US20080259089A1 (en) Apparatus and method for performing motion compensation by macro block unit while decoding compressed motion picture
US8514937B2 (en) Video encoding apparatus
KR101419378B1 (ko) 영상 처리를 위한 시스템
EP1992162B1 (en) Memory organizational scheme and controller architecture for image and video processing
Wang et al. Motion compensation architecture for 8K UHDTV HEVC decoder
KR100891116B1 (ko) 대역폭 인식 움직임 보상 장치 및 그 방법
US6996185B2 (en) Image signal decoding apparatus
US10146679B2 (en) On die/off die memory management
US20030123555A1 (en) Video decoding system and memory interface apparatus
JP2009130599A (ja) 動画像復号装置
EP2073553A1 (en) Method and apparatus for performing de-blocking filtering of a video picture
KR100288141B1 (ko) 엠펙 비디오 인코더의 메모리 접속 장치
Shen et al. Memory bandwidth reduction for video decoders based on data arrangements
KR100903863B1 (ko) Wmv 디코더의 오버랩 변환부와 디블록킹 필터 사이의인터페이스 방법
Hyun et al. A synchronous DRAM controller for an H. 264/AVC encoder
Hilgenstock et al. A single-chip video signal processing system with embedded DRAM
KR100504507B1 (ko) 비디오 디코딩 시스템

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

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20180627

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20190625

Year of fee payment: 6