KR20050068770A - 데이터 처리 시스템 및 데이터 처리 방법 - Google Patents

데이터 처리 시스템 및 데이터 처리 방법 Download PDF

Info

Publication number
KR20050068770A
KR20050068770A KR1020030100578A KR20030100578A KR20050068770A KR 20050068770 A KR20050068770 A KR 20050068770A KR 1020030100578 A KR1020030100578 A KR 1020030100578A KR 20030100578 A KR20030100578 A KR 20030100578A KR 20050068770 A KR20050068770 A KR 20050068770A
Authority
KR
South Korea
Prior art keywords
task
data
motion
memory
data processing
Prior art date
Application number
KR1020030100578A
Other languages
English (en)
Other versions
KR101160640B1 (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 KR20030100578A priority Critical patent/KR101160640B1/ko
Priority to US11/018,762 priority patent/US7986734B2/en
Priority to JP2004375342A priority patent/JP2005198289A/ja
Priority to CN2004100757395A priority patent/CN1652605B/zh
Publication of KR20050068770A publication Critical patent/KR20050068770A/ko
Application granted granted Critical
Publication of KR101160640B1 publication Critical patent/KR101160640B1/ko

Links

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
    • 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/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/423Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Abstract

여기에 개시되는 데이터 처리 시스템은 독립적으로 동작하는 다수 개의 데이터 처리 단위들과 이들이 파이프 라인 동작을 하도록 하고 또한 그 파이프 라인 동작을 태스크별로 구별하여 제어하는 태스크 조정자와, 상기 데이터 처리 단위들의 동작을 위한 데이터를 저장하는 메모리 푸울을 포함한다. 상기 데이터 처리 단위들은 상기 태스크 조정자로부터 받은 태스크 시작 신호에 의해 태스크를 수행한다. 상기 태스크 조정자가 지시한 태스크 처리가 끝이 나면 상기 데이터 처리 단위들은 상기 태스크 조정자에게로 태스크 종료 신호를 전달하고 상기 태스크 조정자로부터 다음 태스크 수행을 지시하는 제어신호를 기다리는 대기 상태가 된다. 상기 데이터 처리 단위들로부터 태스크 종료 신호를 받은 상기 태스크 조정자는 태스크를 전환한다.

Description

데이터 처리 시스템 및 데이터 처리 방법{DATA PROCESSING SYSTEM AND DATA PROCESSING METHOD}
본 발명은 데이터 처리 시스템 및 데이터 처리 방법에 관한 것으로서, 더욱 상세하게는 MPEG 동화상 부호화를 위한 비디오 코덱 및 비디오 코덱의 데이터 처리 방법에 관한 것이다.
MPEG(Moving Pictures Experts Group)의 비디오 동화상(moving picture) 압축 기술은 동화상을 압축, 복원하는 기술들에 관하여 정의하고 있다. MPEG 비디오 동화상 압축 기술은 동화상이 가지는 시간적으로 중복되는 시간적 잉여성(temporal redundancy), 공간적으로 중복되는 공간적 잉여성(spatial redundancy)을 이용하여 압축을 한다. 공간적 잉여성은 한 프레임 내에서 나타나며, 시간적 잉여성은 연속하는 프레임 사이에서 나타난다.
전형적인 비디오 코덱(video codec)은 입력 화상 데이터(input picture)를 저장하기 위한 프레임 메모리(frame memory), 이산여현변환기(DCT:Discrete Cosine Transformer)/역이산여현변환기(IDCT:Inverse DCT), 양자화기(Quantizer)/역양자화기(Inverse Quantizer), 가변장 부호기(VLC:Variable Length Coder), 움직임 추정기(Motion Estimator), 움직임 보상기(Motion Compensator)를 포함한다. 도 1은 이 같은 전형적인 비디오 코덱을 개략적으로 도시하는 블록도이다. 도 1에서, 참조번호 11, 13, 15는 프레임 메모리를, 참조번호 17은 이산여현변환기를, 참조번호 19는 양자화기를, 참조번호 21은 역양자화기를, 참조번호 23은 역이산여현변환기를, 참조번호 25는 움직임 보상기를, 참조번호 27은 움직임 추정기를, 참조번호 27은 가변장 부호기를 가리킨다.
프레임 메모리(11)는 현재 처리하고자 하는 입력 화상 데이터(현재 프레임)를 저장하고, 프레임 메모리(13)는 현재 프레임 이전의 재구성된 화상 데이터(재구성 프레임, 이전 프레임)를 저장하고, 프레임 메모리(15)는 움직임이 보상된 화상 데이터(움직임 보상된 프레임)를 저장한다.
먼저 인터 모드(Inter Mode)에 대해서 설명을 한다. 움직임 보상은 16*16 픽셀 크기의 블록(매크로 블록) 단위로 수행된다. 움직임 보상을 위해서 움직임 추정기(27)는 프레임 메모리(13)에 저장된 재구성된 프레임에서 프레임 메모리(11)로부터 읽은 현재 매크로 블록과 가장 유사한 블록을 찾아 움직임 벡터(Motion Vector)를 추정한다.
움직임 보상기(25)는 움직임 추정기(27)에서 제공되는 움직임 벡터 및 프레임 메모리(13)로부터 제공되는 이전 프레임을 이용해서 움직임이 보상된 프레임을 구한다. 프레임 메모리(15)로부터 제공되는 움직임 보상된 프레임 및 프레임 메모리(11)로부터 제공되는 현재 프레임 사이의 화상 차분 데이터(image differential data)가 8*8 픽셀 블록 단위로 이산여현변환기(17)에 의해서 처리된 후 양자화기(19)를 거쳐서 양자화된다. 양자화된 화상 차분 데이터는 역이산여현변환기(21) 및 역양자화기(23)에 의해서 복원되어 움직임이 보상된 화상 데이터와 함께재구성 프레임을 생성하는 데 사용된다.
가변장 부호기(29)는 양자화된 화상 차분 데이터 및 움직임 벡터에 대해서 엔트로피 부호화를 진행한다.
한편, 인트라 모드(Intra Mode)의 경우, 움직임 보상을 진행하지 않는다. 즉, 프레임 메모리(11)로부터 제공된 현재 프레임에 대해서 이산여현변환, 양자화를 거쳐서 가변장 부호화를 진행한다.
상술한 전형적인 비디오 코덱은 다수 개의 데이터 처리 단위들 즉, 이산여현변환기, 역이산여현변환기, 양자화기, 역양자화기, 가변장 부호기, 움직임 추정기, 움직임 보상기를 포함하고 있다. 이 같은 전형적인 비디오 코덱은 공통 버스 구조를 취하고 있어, 각 데이터 처리 단위들이 개별적으로 동작을 한다. 따라서, 공통적으로 사용될 수 있는 데이터를 공유하기 어려워 외부 메모리 대역폭 요구 사항이 증가한다. 또한, 각 데이터 처리 단위들의 동작은 처리해야 할 데이터에 의해서 버스상의 제약을 받게된다.
특히, 최근 휴대 전화기, 디지털 카메라, 캠코더와 같은 휴대정보통신기기에서 취급하는 동화상 데이터의 화소수가 급증하는 추세이고 이에 비례하여 높은 연산 능력이 요구되는 반면 동등한 소비 전력을 요구하는 현실을 감안할 때, 새로운 비디오 코덱이 절실히 요구된다.
따라서 본 발명이 이루고자 하는 기술적 과제는 고성능, 저전력의 데이터 처리 시스템, 데이터 처리 방법 및 비디오 코덱을 제공하는 것이다.
상기 발명이 이루고자 하는 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 처리 시스템은 고유의 데이터를 처리하는 복수 개의 데이터 처리 단위들과, 상기 복수 개의 데이터 처리 단위들 각각의 복수 개의 동작을 태스크별로 구별하고 이들이 파이프 라인 동작을 하도록 제어하는 태스크 조정자를 포함한다.
상기 태스크 조정자는 상기 복수 개의 데이터 처리 단위들의 파이프 라인 동작을 태스크별로 구별하여 제어하는 태스크 시작 신호를 상기 데이터 처리 단위들에게 전달하여 태스크를 수행하도록 하고 상기 데이터 처리 단위들로부터 태스크 종료 신호를 전달받고 태스크를 전환한다. 한편, 상기 데이터 처리 단위들은 상기 태스크 조정자로부터 받은 상기 태스크 시작 신호에 의해 태스크를 수행하고, 태스크 처리가 끝이 나면 상기 태스크 조정자에게로 상기 태스크 종료 신호를 전달한다.
따라서 이 같은 본 발명에 따르면, 데이터 처리 시스템의 데이터 처리 성능을 향상시킬 수 있다. 뿐만 아니라 태스크 시작 신호 및 태스크 종료 신호에 의해서 각 데이터 처리 단위들의 파이프 라인 동작이 태스크별로 제어되기 때문에 데이터 처리 시스템을 구성하는 개개의 데이터 처리 단위들의 구현, 유지 보수, 및 변경이 매우 용이해진다.
상기 데이터 처리 시스템은 상기 데이터 처리 시스템의 기능을 설정하기 위한 제어 레지스터와, 상기 데이터 처리 단위들의 동작에 필요한 데이터를 저장하는 내부 메모리 푸울을 더 포함한다. 이때, 상기 복수 개의 데이터 처리 단위들은 MPEG 동화상 부호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기를 포함한다.
상기 내부 메모리 푸울은 상기 움직임 보상기에 의해 보상된 휘도 성분 및 색차 성분을 저장하는 움직임 보상된 휘도 및 색차 데이터 메모리들과, 프레임 메모리로부터 현재 입력된 프레임의 휘도 및 색차 성분을 읽어들여 저장하는 기준 매크로 블록 휘도 및 색차 데이터 메모리들과 상기 프레임 메모리로부터 상기 현재 입력된 프레임 이전의 재구성된 프레임으로부터 휘도 성분을 읽어들여 저장하는 탐색 영역 데이터 메모리를 포함한다.
상기 탐색 영역 데이터 메모리는 상기 움직임 추정기와 상기 움직임 보상기에 이전 프레임의 휘도 데이터를 제공한다. 상기 움직임 보상된 휘도 및 색차 데이터 메모리는 상기 이산여현변환기 및 역이산여현변환기에 움직임 보상된 휘도 및 색차 데이터를 제공한다. 상기 기준 매크로 블록 휘도 및 색차 데이터 메모리는 상기 움직임 추정기에 현재 프레임의 휘도 블록 데이터를 제공하고 이산여현변환기에 현재 프레임의 휘도 및 색차 블록 데이터를 제공한다. 즉, 데이터 처리 단위들이 내부 데이터 메모리를 공유하기 때문에, 외부 메모리 대역폭 요구 사항을 최소화시킬 수 있다.
일 실시예에 있어서, 상기 데이터 처리 단위들은 상기 태스크 시작 신호 및 상기 태스크 종료 신호 사이에서만 시스템 클록을 공급받는다.
일 실시예에 있어서, 상기 제어 레지스터에 의해 상기 데이터 처리 시스템이 부호화 인트라 모드로 동작할 경우, 상기 움직임 추정기 및 움직임 보상기에는 시스템 클록을 공급하지 않고, 복호화 인터 모드로 동작할 경우 움직임 추정기에게 시스템 클록을 공급하지 않고, 복호화 인트라 모드로 동작할 경우 상기 메모리 푸울, 움직임 추정기 및 움직임 보상기에게 시스템 클록을 공급하지 않는다.
따라서, 시스템의 전력 소모를 줄일 수 있다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비디오 코덱은 MPEG 동화상 부호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기를 포함하는 데이터 처리 단위들과, 상기 데이터 처리 단위들이 데이터를 공유하도록 공통 데이터를 저장하기 위한 내부 메모리 푸울과, 상기 복수 개의 데이터 처리 단위들 각각의 복수 개의 동작을 태스크별로 구별하고 이들이 파이프 라인 동작을 하도록 제어하는 태스크 조정자와, 상기 데이터 처리 시스템의 기능을 설정하는 제어 레지스터를 포함한다.
상기 태스크 조정자는 태스크 시작 신호를 발생하여 상기 데이터 처리 단위들에게 태스크의 시작을 지시한다. 한편, 상기 데이터 처리 단위들은 상기 태스크 조정자로부터 받은 상기 태스크 시작 신호에 의해 태스크를 수행하는 동작 상태가 된다. 그리고, 상기 데이터 처리 단위들은 상기 태스크 조정자로부터 상기 태스크 시작 신호에 의해 지시 받은 태스크 처리가 끝이 나면 상기 태스크 조정자에게로 태스크 종료 신호를 전달하여 지시 받은 태스크가 종료되었음을 알린다. 이에 따라 상기 데이터 처리 단위들은 상기 태스크 조정자로부터 다음 태스크 수행을 지시하는 태스크 시작 신호를 기다리는 대기 상태가 된다. 한편, 상기 태스크 조정자는 상기 데이터 처리 단위들로부터 상기 태스크 종료 신호를 받고서 다음 태스크 시작 신호를 발생하여 데이터 처리 단위들의 태스크를 전환한다.
상기 움직임 추정기는 움직임 추정 태스크 및 움직임 벡터 전달 태스크를 수행한다. 상기 움직임 보상기는 휘도 성분에 대한 움직임 보상 태스크 및 색차 성분에 대한 움직임 보상 태스크를 수행한다. 상기 이산여현변환양자화기는 휘도 성분에 대한 DCTQ 태스크, 색차 성분에 대한 DCTQ 태스크, 및 재구성 프레임 기입 태스크를 수행한다. 상기 메모리 푸울의 프레임 메모리 제어회로는 프레임 메모리로부터 상기 메모리 푸울의 데이터 메모리로의 이전 프레임의 휘도 성분 기입 태스크, 현재 프레임의 휘도 성분 기입 태스크 및 색차 성분 기입 태스크를 제어한다. 가변장 부호기/복호기에 의해 또는 소프트웨어적으로 휘도 성분에 대한 가변장 부호화/복호화 태스크 및 색차 성분에 대한 가변장 부호화/복호화 태스크가 수행된다.
상기 메모리 푸울은, 상기 움직임 보상기에 의해 보상된 휘도 성분 및 색차 성분을 저장하는 움직임 보상된 휘도 데이터 메모리 및 움직임 보상된 색차 데이터 메모리와, 프레임 메모리로부터 현재 입력된 프레임의 휘도 및 색차 성분을 읽어들여 저장하는 기준 매크로 블록 휘도 데이터 메모리 및 기준 매크로 블록 색차 데이터 메모리와, 상기 프레임 메모리로부터 상기 현재 프레임 이전의 재구성된 프레임으로부터 휘도 성분을 읽어들여 저장하는 탐색 영역 데이터 메모리를 포함하는 내부 데이터 메모리와, 상기 각 데이터 처리 단위들로부터 내부 데이터 메모리 제어 신호를 받아 필요한 데이터를 각 데이터 처리 단위들에게 제공하는 내부 데이터 메모리 제어 회로와, 외부 프레임 메모리를 액세스하여 상기 기준 매크로 블록 데이터 메모리와 상기 탐색 영역 데이터 메모리에 데이터를 저장하는 것을 제어하는 프레임 메모리 제어 회로와, 상기 태스크 조정자로부터 수행해야 될 태스크 시작 신호를 받아 상기 프레임 메모리에 전달하여 태스크를 수행하도록 하고 태스크 수행이 완료되면 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 태스크 제어 회로를 포함한다.
상기 움직임 추정기는, 상기 탐색 영역 데이터 메모리와 상기 기준 매크로 블록 휘도 메모리로부터 휘도 매크로 블록을 읽어 내어 움직임 추정을 수행하여 움직임 벡터를 계산하는 움직임 추정 엔진과, 상기 움직임 벡터를 상기 움직임 보상기와 상기 가변장 부호기에 전달하는 움직임 벡터 전달기와, 상기 태스크 조정자로부터 상기 태스크 시작 신호를 받고 상기 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 움직임 추정기 태스크 제어 회로와, 상기 탐색 영역 데이터 메모리와 상기 기준 매크로 블록 휘도 메모리로부터 휘도 성분 데이터를 읽어 내기 위한 내부 데이터 메모리 제어 신호를 발생하는 움직임 추정기 내부 데이터 메모리 읽기 제어 회로를 포함한다.
상기 움직임 보상기는 부호화 시에는 상기 움직임 추정기로부터 복호화 시에는 상기 가변장 복호기로부터 상기 움직임 벡터를 받아 해석하는 움직임 벡터 해석 회로와, 상기 해석된 움직임 벡터를 기반으로 휘도 성분 및 색차 성분에 대하여 움직임 보상을 수행하는 움직임 보상 엔진과, 상기 태스크 조정자로부터 상기 태스크 시작 신호를 받고 상기 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 움직임 보상기 태스크 제어 회로와, 상기 탐색 영역 데이터 메모리로부터 데이터를 읽기 위한 내부 데이터 메모리 제어 신호 및 상기 움직임 보상기에 의해 움직임 보상된 휘도 성분 데이터와 움직임 보상된 색차 성분 데이터를 상기 움직임 보상된 데이터 메모리들에 쓰기 위한 내부 데이터 메모리 제어 신호를 발생시키는 움직임 보상기 내부 데이터 메모리 읽기/쓰기 제어 회로와, 상기 프레임 메모리로부터 색차 성분의 움직임 보상을 위해 색차 성분 데이터를 읽기 위한 프레임 메모리 읽기 제어 신호를 발생시키기 위한 프레임 메모리 읽기 제어 회로를 포함한다.
상기 이산여현변환양자화기(DCTQ)는 상기 태스크 조정자로부터 태스크 시작 신호를 받고 태스크의 처리 종료를 상기 태스크 조정자에게 알리는 상기 태스크 종료 신호를 전달하는 DCTQ 태스크 제어 회로와, 기준 매크로 블록 데이터 메모리로부터 휘도 및 색차 성분 데이터와 움직임 보상된 데이터 메모리들로부터 움직임 보상된 휘도 및 색차 데이터를 읽기 위한 내부 데이터 메모리 제어 신호를 발생시키는 DCTQ 내부 데이터 메모리 읽기 제어 회로와, 재구성된 프레임을 상기 프레임 메모리에 저장하기 위한 DCTQ 프레임 메모리 쓰기 제어 회로를 포함한다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 비디오 코덱은 MPEG 동화상 부호화 및 복호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기, 그리고 가변장 부호기/가변장 복호기를 포함하는 데이터 처리 단위들과, 상기 데이터 처리 단위들이 데이터를 공유하도록 공통 데이터를 저장하기 위한 내부 메모리 푸울을 포함하며, 상기 움직임 추정기와 상기 움직임 보상기는 상기 탐색 영역 데이터 메모리를 공유하고, 상기 이산여현변환기 및 역이산여현변환기는 상기 움직임 보상된 데이터 메모리를 공유하고, 상기 움직임 추정기 및 상기 이산여현변환기는 상기 기준 매크로 블록 휘도 데이터 메모리를 공유한다.
상기 비디오 코덱은 상기 복수 개의 데이터 처리 단위들이 파이프 라인 동작을 하도록 제어하고 상기 파이프 라인 동작을 태스크별로 구별하여 제어하는 태스크 조정자를 더 포함하고, 상기 태스크 조정자는 상기 복수 개의 데이터 처리 단위들의 파이프 라인 동작을 태스크별로 구별하여 제어하는 태스크 시작 신호를 상기 데이터 처리 단위들에게 전달하여 태스크를 수행하도록 하고 상기 데이터 처리 단위들로부터 태스크 종료 신호를 전달받고 태스크를 전환하고, 상기 데이터 처리 단위들은 상기 태스크 조정자로부터 받은 상기 태스크 시작 신호에 의해 태스크를 수행하고, 태스크 처리가 끝이 나면 상기 태스크 조정자에게로 상기 태스크 종료 신호를 전달한다.
이 같은 본 발명의 비디오 코덱에 따르면, 데이터 처리 시스템의 데이터 처리 성능을 향상시킬 수 있다. 뿐만 아니라 태스크 시작 신호 및 태스크 종료 신호에 의해서 각 데이터 처리 단위들의 파이프 라인 동작이 태스크별로 제어되기 때문에 비디오 코덱을 구성하는 개개의 데이터 처리 단위들의 구현, 유지 보수, 및 변경이 매우 용이해진다.
또한 본 발명의 비디오 코덱에 따르면, 탐색 영역 데이터 메모리가 상기 움직임 추정기와 상기 움직임 보상기에 의해 공유된다. 움직임 보상된 휘도 및 색차 데이터 메모리들은 이산여현변환기 및 역이산여현변환기에 의해서 공유되고, 기준 매크로 블록 휘도 데이터 메모리는 움직임 추정기 및 이산여현변환기에 의해서 공유된다.
상기 기술적 과제를 달성하기 위한 본 발명의 일 실시예에 따른 데이터 처리 방법은, 복수 개의 데이터 처리 단위들은 태스크 조정자로부터 받은 태스크 시작 신호에 의해서 지시 받은 태스크를 수행하고, 태스크 수행이 종료되면 태스크 종료를 알리는 태스크 종료 신호를 발생하여 다음 태스크 시작 신호를 기다리는 대기 상태가 되고, 상기 태스크 조정자는 태스크 완료 신호를 받고 태스크를 전환하는 것을 특징으로 한다.
이하 첨부한 도면들을 참조하여 본 발명의 실시예들을 상세히 설명하기로 한다. 그러나, 본 발명은 여기서 설명되어지는 실시예들에 한정되지 않고 다른 형태로 구체화될 수도 있다. 오히려, 여기서 소개되는 실시예들은 개시된 내용이 철저하고 완전해질 수 있도록 그리고 당업자에게 본 발명의 사상이 충분히 전달될 수 있도록 하기 위해 제공되어지는 것이다.
도 2는 데이터 처리 시스템의 하나인 본 발명에 따른 메모리 대역폭 요구 사항(memory bandwidth requirement)을 최소화하는 비디오 코덱(200)을 개략적으로 도시하는 블록도이다. 도 2를 참조하여, 본 발명의 일 실시예에 따른 비디오 코덱(200)은 독립적인 데이터 처리 동작을 수행하는 데이터 처리 단위들(data processing uints)(201, 221, 231) 및 이들의 동작을 제어하는 마이크로컨트롤러(270)를 포함한다. 데이터 처리 단위(201)은 이산여현변환양자화기(DCTQ)이고, 데이터 처리 단위(221)은 움직임 추정기(ME)이고, 데이터 처리 단위(231)은 움직임 보상기(MC)이다. 이산여현변환양자화기(DCTQ)(201)은 이산여현변환기(203)(DCT), 양자화기 (205)(Q), 역양자화기(207)(IQ), 역이산여현변환기 (209)(IDCT)와 같은 데이터 처리 단위들로 구성된다. 코딩 제어기(215)는 인트라 모드, 인터 모드, 양자화 인덱스 등을 제어한다.
본 발명의 비디오 코덱(200)은 메모리 대역폭 요구 사항을 최소화하기 위하여 메모리 푸울(241)을 포함한다. 메모리 푸울(241)은 비디오 코덱(200)의 내부 데이터 메모리인 탐색 영역 데이터 메모리(243)(prev mem), 움직임 보상된 데이터 메모리(245)(mced mem) 및 기준 매크로 블록 데이터 메모리(247)(curr mem)를 포함한다. 이들 각 내부 데이터 메모리들(43, 245, 247)에 저장된 데이터를 데이터 처리 단위들(201, 221, 231)이 공유한다. 즉, 움직임 추정기(221)와 움직임 보상기(231)는 탐색 영역 데이터 메모리(243)를 공유한다. 이산여현변환기(203) 및 역이산여현변환기(209)는 움직임 보상된 데이터 메모리(245)를 공유한다. 그리고, 움직임 추정기(231) 및 이산여현변환기(203)는 기준 매크로 블록 데이터 메모리(247)를 공유한다.
내부 메모리 푸울(241)은 각 데이터 처리 단위들로부터 제어 신호(내부 데이터 메모리 제어 신호)를 받고 거기에 응답하여 각 데이터 처리 단위들에 필요한 데이터를 제공한다.
프레임 메모리들(281, 291)은 현재 처리하고자 하는 입력 화상 데이터(현재 프레임), 현재 입력 화상 데이터 이전의 재구성된 화상 데이터(재구성 프레임, 이전 프레임) 등을 저장한다. 예컨대, 프레임 메모리들(281, 291)은 버스트 액세스(burst access)가 가능한 에스디램(SDRAM)이다. 마이크로컨트롤러(290)의 제어 하에 프레임 메모리들(281, 291)에 저장된 휘도 및 색차 데이터가 내부 데이터 메모리들(247, 243)에 기입된다.
한편, 이산여현변환양자화기(DCTQ)(201)는 재구성 프레임을 일시적으로 저장하는 재구성 데이터 메모리(211)(recon mem), 양자화 계수(COEF)를 저장하는 양자화 계수 데이터 메모리(213)(COEF mem)를 더 포함할 수 있다.
이하에서, 비디오 코덱(200)을 구성하는 데이터 처리 단위들 고유 동작에 대해서 설명을 하기로 한다. 비디오 코덱(200)은 마이크로컨트롤러(290)의 제어 하에, 부호기(Encoder) 또는 복호기(Decoder)로 동작할 수 있다. 또한 각각에 대하여 인터 모드(Inter mode) 또는 인트라 모드(Intra mode)로 동작할 수 있다.
먼저 부호기로 동작하는 경우를 설명하기로 한다. 부호기로 동작 할 경우, 인트라 부호화(Intra coding) 및 인터 부호화(Inter coding)를 진행한다. 인트라 부호화는 입력된 현재 프레임의 공간적 중복성을 제거하기 위한 것으로서, 입력되는 현재 프레임에 대하여 이산여현변환 및 양자화를 진행한다. 반면, 인터 부호화는 연속하는 프레임들 사이의 시간적 중복성을 제거하기 위한 것으로서, 움직임 추정, 움직임 보상, 현재 프레임 및 움직임 보상된 프레임(예측 프레임)의 화상 차분 데이터(예측 에러 신호)에 대한 이산여현변환, 양자화 등을 수행한다.
부호기 동작중 먼저 인터 부호화 시의 각 데이터 처리 단위들의 동작들에 대해서 설명을 하기로 한다. 움직임 추정기(221)는 휘도 성분(Y)에 대해서 16*16 픽셀 크기의 블록(매크로 블록) 단위로 현재 입력된 프레임과 이전 프레임(재구성 프레임) 사이의 움직임을 추정한다. 즉, 기준 매크로 블록 데이터 메모리(247)로부터 제공되는 현재 입력 프레임의 매크로 블록과 가장 유사한 매크로 블록(매칭 매크로 블록)을 탐색 영역 데이터 메모리(243)로부터 제공되는 이전 프레임의 탐색 영역(searching area)으로부터 찾은 후 이들 두 매크로 블록 사이의 변위량(움직임 벡터)(mv)을 추정한다. 추정된 움직임 벡터(mv)는 움직임 보상 및 가변장 부호화를 위해 사용된다. 탐색 영역은 이전 프레임에서 현재 매크로 블록의 위치에 대응하는 매크로 블록 및 그 주위에 인접한 8개의 매크로 블록으로 구성될 수 있다. 즉, 탐색 영역은 48*48 픽셀들(9개의 매크로 블록)로 구성될 수 있다.
움직임 보상기(231)는 움직임 추정기(221)에 의해서 추정된 움직임 벡터(mv)를 기반으로 하여 탐색 영역 데이터 메모리(243)와 프레임 메모리(291)로 부터 제공되는 이전 프레임의 휘도(Y) 및 색차(Cb/Cr) 블록으로부터 움직임이 보상된 휘도 및 색차 데이터 블록(예측 데이터)을 생성한다. 움직임 보상된 휘도 및 색차 데이터 블록(예측 데이터)이 움직임 보상된 데이터 메모리(245)에 저장된다.
이산여현변환양자화기(DCTQ)(201)는 움직임 보상된 데이터 블록(예측 데이터)을 사용하여 이산여현변환기(203) 및 양자화기(205)의해서 부호화를, 역양자화기(207) 및 역이산여현변환기(209)에 의해서 복호화를 수행한다. 즉, 이산여현변환양자화기(DCTQ)(201)는 기준 매크로 블록 데이터 메모리(247)에서 제공되는 현재 프레임의 휘도 및 색차 데이터 블록에서 움직임 보상된 데이터 메모리(245)에서 제공되는 움직임 보상된 휘도 및 색차 데이터 블록(예측 데이터)을 감산한 결과 얻어진 화상 차분 데이터(image differential data)에 대하여 이산여현변환기(DCT)(203) 및 양자화기(Q)(205)를 통해서 이산여현변환 및 양자화를 진행하여 양자화 계수(COEF)를 양자화 계수 메모리(213)에 저장한다. 한편 양자화된 화상 차분 데이터는 역양자화기(207) 및 역이산여현변환기(209)를 통해서 역양자화 및 역이산여현변환된 후 움직임 보상된 휘도 및 색차 데이터에 가산되어 재구성 프레임이 형성되고 그 결과가 재구성 프레임 메모리(211)에 임시적으로 저장된다. 이산여현변환양자화기(DCTQ)(210)는 8*8 픽셀 블록 단위로 데이터를 처리한다. 재구성 프레임 메모리(211)에 저장된 재구성 프레임은 움직임 보상을 위해서 외부 프레임 메모리(291)에 저장된다.
움직임 추정기(221)에 의해 추정된 움직임 벡터(mv) 및 양자화 계수 데이터 메모리(213)에 저장된 양자화 계수(COEF)에 대하여 가변장 부호화가 진행된다. 가변장 부호화는 가변장 부호기(VLC)와 같은 하드웨어에 의해 수행되거나 프로그램을 통한 소프트웨어에 의해 수행될 수 있다. 소프트웨어에 의해 가변장 부호화를 진행할 경우, 움직임 벡터 및 양자화 계수는 외부 프레임 메모리(291)에 기입된다. 반면 가변장 부호기를 사용할 경우, 외부 메모리로의 기입이 필요 없다. 예컨대, 양자화 계수의 경우, 가변장 부호기가 양자화 계수 데이터 메모리(213)에 접근하여 양자화 계수를 사용한다. 또한, 양자화 계수는 움직임 추정기(221)에 접근하여 움직임 벡터를 접근하여 움직임 벡터를 사용한다. 즉, 가변장 부호기가 사용될 경우, 움직임 벡터(mv)는 움직임 추정기(221)로부터, 양자화 계수는 양자화 계수 데이터 메모리(213)로부터 제공된다. 즉, 가변장 부호기와 이산여현변환양자화기는 양자화 계수 데이터 메모리를 공유한다. 이때, 가변장 부호기는 레디/비지 신호 ready/busy 신호를 발생하여 이산여현변환양자화기(201)에게 자신이 동작하고 있다는 것을 알린다. 이산여현변환양자화기(201)는 양자화 계수를 양자화 계수 데이터 메모리(213)에 기입한 후 그 동작 완료를 알리는 신호를 발생하여 가변장 부호기가 양자화 계수 데이터 메모리(205)에 접근하여 양자화 계수를 사용하여 가변장 부호를 진행하도록 한다.
부호기의 인트라 부호화(Intra coding) 모드의 경우, 공간적 중복성을 제거하기 위하여, 기준 매크로 블록 데이터 메모리(247)로부터 제공되는 현재 프레임에 대해서 8*8 픽셀 블록 단위로 이산여현변환기(203)에 의해 이산여현변환된 후 양자화기(205)에 의해서 양자화되고 생성된 양자화 계수(COEF)는 내부 메모리인 양자화 계수 메모리(213)에 저장된다. 양자화 계수(COEF)는 소프트웨어적으로 또는 가변장 부호기에 의해 엔트로피 부호화된다.
다음 복호기 동작에 대하여 설명을 한다. 복호기 동작의 경우 움직임 추정이 진행되지 않는다. 인터 복호화의 경우, 복호기 동작은 움직임 보상, 엔트로피 부호화된 화상 차분 데이터의 양자화 계수에 대한 복호화, 움직임 벡터를 이용한 프레임 복원을 포함한다. 움직임 보상기(231)는 엔트로피 복호화된 움직임 벡터를 사용하여 휘도 및 색차 성분 데이터에 대한 움직임 보상을 진행한다. 이산여현변환양자화기(201)는 엔트로피 복호화된 휘도 및 색차 성분의 양자화 계수를 역양자화 및 역이산여현변환을 진행하여 움직임 보상된 휘도 및 색차 데이터에 가산하여 프레임을 복원한다.
다음 인트라 복호화를 설명한다. 인트라 복호화는 인터 복호화 동작들 중 움직임 보상을 진행하지 않는다. 인트라 복호화 동작은 엔트로피 복호화, 프레임 복원을 포함한다.
이상에서 설명한 본 발명의 비디오 코덱(200)에 따르면, 움직임 추정기(221)와 움직임 보상기(231)는 탐색 영역 데이터 메모리(243)를 공유하고, 이산여현변환기(203) 및 역이산여현변환기(209)는 움직임 보상된 데이터 메모리(245)를 공유하고, 움직임 추정기(231) 및 이산여현변환기(203)는 기준 매크로 블록 데이터 메모리(247)를 공유한다. 따라서 메모리 대역폭 요구 사항을 최소화 할 수 있다.
도 3은 고성능의 파이프 라인 동작이 가능한 본 발명에 따른 데이터 처리 시스템의 일종인 비디오 코덱(300)을 개략적으로 도시하는 블록도이다. 비디오 코덱(300)은 태스크 조정자(task scheduler)(361) 및 제어 레지스터(371)를 포함하는 마이크로컨트롤러(390), 이산여현변환양자화기(DCTQ) (301), 움직임 추정기(321), 움직임 보상기(331), 가변장 부호기/복호기(351)를 포함하는 데이터 처리 단위들 및 메모리 푸울(341)을 포함한다. 이산여현변환양자화기(DCTQ)(301)는 이산여현변환기(303), 양자화기 (305), 역양자화기(307), 역이산여현변환기(309)를 포함한다.
가변장 부호기/복호기(351)는 엔트로피 부호화/복호화를 수행한다. 엔트로피 부호화/복호화는, 가변장 부호기/복호기 같은 하드웨어에 의하지 않고, 엔트로피 부호화/복호화를 수행하는 알고리즘에 의해 소프트웨어적으로 수행될 수 있다.
제어 레지스터(371)는 비디오 코덱(300)의 기능을 설정한다. 예컨대, 프레임 시작, 인트라 부호화, 인터 부호화, 부호화, 복호화 등 비디오 코덱의 전반적인 기능을 설정한다. 제어 레지스터(371)에 따른 각종 모드별(인트라 부호화, 인터 부호화, 인트라 복호화, 인터 복호화) 데이터 처리 단위들(301, 321, 331, 351)의 동작은 도 2를 참조하여 설명하였다.
메모리 푸울(341)은 탐색 영역 데이터 메모리(343), 움직임 보상된 데이터 메모리(345) 및 기준 매크로 블록 데이터 메모리(347)를 포함하며 데이터 처리 단위들(301, 321, 331)은 공통적인 데이터를 상호연결망(349)을 통해서 공유한다. 즉, 움직임 추정기(321)와 움직임 보상기(331)는 탐색 영역 데이터 메모리(343)를 공유한다. 또한 이산여현변환기(303) 및 역이산여현변환기(309)는 움직임 보상된 데이터 메모리(345)를 공유한다. 그리고, 움직임 추정기(331) 및 이산여현변환기(303)는 기준 매크로 블록 데이터 메모리(347)를 공유한다.
태스크 조정자(361)는 비디오 코덱(300)을 구성하는 데이터 처리 단위들의 파이프 라인 동작을 전체적으로 제어한다. 태스크 조정자(361)는 이산여현변환양자화기(DCTQ)(301), 움직임 추정기(321), 움직임 보상기(331) 및 메모리 푸울(341)에게 태스크의 수행을 지시하는 명령어(제어 신호), 즉 태스크 시작 신호를 보낸다. 태스크 시작 신호를 받은 데이터 처리 단위들(301, 321, 331) 및 메모리 푸울(341)은 그에 상응하는 태스크를 수행한다. 태스크 수행이 끝이 나면 데이터 처리 단위들(301, 321, 331) 및 메모리 푸울(341)은 태스크 수행 종료를 알리는 태스크 종료 신호를 발생하여 태스크 조정자(361)에게 보내고 자신은 다른 태스크 시작 신호를 기다리는 대기 상태가 된다. 데이터 처리 단위들(301, 321, 331) 및 메모리 푸울(341)로부터 태스크 종료 신호를 받은 태스크 조정자(361)는 다음 태스크의 수행을 지시하는 다른 태스크 시작 신호를 발생하여 데이터 처리 단위들(301, 321, 331) 및 메모리 푸울(341)에게 보낸다.
가변장 부호기/복호기(351)는 움직임 추정기(221)로부터 제공되는 움직임 벡터 또는 양자화 계수 메모리(도 2의 213)에 저장된 양자화 계수(COEF)에 대하여 가변장 부호화/복호화를 진행한다. 가변장 부호기/복호기(351)가 없는 경우, 움직임 벡터는 외부 프레임 메모리(도 2의 291)로부터 제공되고(즉, 움직임 벡터가 움직임 추정기로부터 외부 프레임 메모리에 저장된다), 양자화 계수도 외부 프레임 메모리로부터 제공된다(양자하 계수가 양자화 계수 메모리로부터 외부 프레임 메모리에 저장된다).
가변장 부호기/복호기(351)는 레디/비지 신호(ready/busy 신호)를 발생하여 이산여현변환양자화기(301)에게 자신이 동작하고 있다는 것을 알린다. 이산여현변환양자화기(301)는 양자화 계수를 양자화 계수 데이터 메모리에 기입한 후 그 동작 완료를 알리는 신호를 발생하여 가변장 부호기/복호기(351)가 가변장 부호를 진행하도록 한다.
태스크 조정자(361)에 의해서 독립적으로 제어되는 데이터 처리 단위들의 태스크는 다음과 같다. 움직임 추정기(321)는 휘도 데이터 블록에 대해서 움직임을 추정하는 움직임 추정 태스크, 움직임 벡터를 외부 메모리에 기입하는 태스크(가변장 부호기/복호기를 사용하지 않는 경우)를 수행한다. 움직임 보상기(331)는 휘도 및 색차 데이터 블록에 대해서 각각 별개의 태스크, 즉 휘도 데이터 블록에 대한 움직임 보상 태스크, 색차 데이터 블록에 대한 움직임 보상 태스크를 수행한다. 이산여현변환양자화기(DCTQ)(301)는 휘도 및 색차 데이터 블록에 대하여 각각 별개의 태스크, 즉, 휘도 성분에 대한 DCTQ(이산여현변환, 양자화, 역양자화, 역이산여현변환) 태스크, 색차 성분에 대한 DCTQ 태스크, 재구성 프레임을 저장하기 위한 재구성 프레임 저장 태스크를 수행한다. 가변장 부호기/복호기(351)는 움직임 보상기(331) 및 이산여현변환양자화기(DCTQ)의 제어에 의해 휘도 성분에 대한 엔트로피 부호화/복호화를 위한 태스크, 색차 성분의 양자화 계수에 대한 엔트로피 부호화/복호화를 위한 태스크, 움직임 벡터에 대한 가변장 부호화/복호화 태스크를 수행한다.
메모리 푸울(341)은 태스크 조정자(361)의 제어에 따라 프레임 메모리(도 2의 281, 291)로부터 이전 프레임의 휘도 성분을 읽어 탐색 영역 데이터 메모리(343)에 저장하고, 현재 프레임의 휘도 및 색차 성분을 기준 매크로 블록 데이터 메모리(347)에 저장하는 태스크를 수행한다. 움직임 보상기(331)에 의해 보상된 움직임 보상된 휘도 및 색차 성분은 움직임 보상된 데이터 메모리(345)에 저장된다.
한편, 메모리 푸울(341)의 내부 데이터 메모리들(343, 345, 347)에 저장된 데이터는 이산여현변환양자화기(301), 움직임 추정기(321) 및 움직임 보상기(331)의 제어 하에 엑세스된다.
이와 같은 각 데이터 처리 단위들의 태스크들은 태스크 조정자(361)에 의해 제어되어 파이프 라인 동작으로 수행된다. 도 4는 본 발명의 비디오 코덱(300)의 부호화 모드 시의 각 데이터 처리 단위들의 태스크에 대한 파이프 라인 동작을 개략적으로 도시한다.
태스크 조정자(361)의 제어 신호(태스크 시작 신호)에 따라 프레임 메모리로부터 현재 프레임 및 이전 프레임의 휘도 성분이 기준 매크로 블록 휘도 데이터 메모리 및 탐색 영역 데이터 메모리에 기입된 후, 움직임 추정기(321)에 의해서 움직임 추정이 수행되고 움직임 벡터가 생성된다. 움직임 추정기(321)에 의해서 움직임 추정이 완료되면, 움직임 벡터를 기반으로 해서, 움직임 보상기(331)에 의한 휘도 및 색차 성분에 대한 움직임 보상이 수행된다. 가변장 부호기/복호기를 사용하지 않을 경우, 휘도 성분에 대한 움직임 보상을 수행할 때, 움직임 벡터가 외부 프레임 메모리에 기입된다. 움직임 보상기(331)에 의해서 휘도 성분에 대한 움직임 보상이 완료된 후, 이산여현변환양자화기(DCTQ)(301)에 의해서 휘도 성분에 대한 DCTQ 태스크가 수행되고, 움직임 보상기(331)에 의해서 색차 성분에 대한 움직임 보상이 완료되면 이산여현변환양자화기(DCTQ)(301)에 의해서 색차 성분에 대한 DCTQ 태스크, 그리고 재구성 프레임 저장 태스크가 수행된다. 이산여현변환양자화기(DCTQ)(301)에 의해서 휘도 성분에 대한 DCTQ 태스크가 완료된 후 양자화 계수(COEF)에 대한 엔트로피 부호화가 이루어진다.
상술한 데이터 처리 단위들의 태스크별 효율적인 파이프 라인 동작 및 외부 메모리 대역 요구 사항을 최소화하기 위한 메모리 푸울(341)의 구성의 일 예가 도 5, 도 6a, 도 6b, 도 7a, 그리고 도 7b에 개략적으로 도시되어 있다. 본 예에서는 움직임 보상을 위한 탐색 영역이 [-16, 16]이고, 즉 탐색 영역이 48*48 픽셀 블록이고 시스템에서 지원되는 메모리 액세스 모드가 싱글, 버스트 4, 버스트 8, 버스트 16인 경우에 대한 것을 예시적으로 도시한 것이다. 메모리 푸울(341)은 탐색영역 데이터 메모리, 기준 매크로 블록 데이터 메모리, 움직임 보상된 데이터 메모리를 포함한다.
도 5는 움직임 추정 및 움직임보상을 위해 재구성된 이전 프레임으로부터 제공된 휘도 성분을 저장하는 탐색 영역 데이터 메모리를 도시하고, 도 6a 및 도 6b는 움직임 추정, 이산여현변환양자화기(DCTQ)를 위해 현재 입력 프레임으로부터 제공된 휘도 및 색차 성분을 저장하는 기준 매크로 블록 휘도 데이터 메모리 및 기준 매크로 블록 색차 데이터 메모리를 도시하고, 도 7a 및 도 7b는 이산여현변환양자화기(DCTQ)의 부호화/복호화 그리고 프레임 재구성을 위해 움직임 보상된 휘도 성분 및 색차 성분을 저장하는 메모리를 도시한다.
먼저 도 5를 참조하여, 탐색 영역 데이터 메모리(343)는 외부 프레임 메모리(도 2의 291)에 대하여 버스트 8, 버스트 16으로 액세스된 이전 프레임의 휘도 성분을 저장한다. 탐색 영역이 [-16, 16]인 경우 48*48 픽셀 크기의 데이터가 요구되는 점과 프레임 메모리에 대한 버스트 8, 버스트 16 액세스, 파이프 라인 동작을 고려하여, 탐색 영역 데이터 메모리(343)는 48*(16*10) 픽셀 크기를 저장할 수 있는 메모리 크기를 가지도록 구성된다. 도 5는 48*(16*10) 픽셀 크기의 데이터를 저장하는 탐색 영역 데이터 메모리를 도시한다.
처음에는 패딩 영역을 고려하여 버스트 8로 외부 프레임 메모리(도 2의 291)가 액세스되어 2개의 48*16 픽셀 크기의 휘도 블록이 탐색 영역 데이터 메모리(343) 블록 PY0, PY1에 저장되고 그 이후부터는 버스트 16으로 액세스된다. 즉, 2개의 48*16 픽셀 크기의 휘도 블록이 탐색 영역 데이터 메모리(343) 블록 PY0, PY1에 저장된 후, 프레임 메모리가 버스트 16으로 액세스되어 4개의 48*16 픽셀 크기의 휘도 블록이 탐색 영역 데이터 메모리(343) 블록 PY2, PY3, PY4, PY5에 저장된다. 이후에도 프레임 메모리가 버스트 16으로 액세스되어 4개의 48*16 픽셀 크기의 휘도 블록이 탐색 영역 데이터 메모리(343) 블록 PY6, PY7, PY8, PY9에 저장된다. 탐색 영역 데이터 메모리(343) 블록 PY6, PY7, PY8, PY9에 4개의 48*16 블록이 저장된 후 탐색 영역 데이터 메모리(343) 블록 PY0, PY1, PY2, PY3에 4개의 48*16 블록이 저장된다. 이와 같은 과정은 이전 프레임의 수평 방향 매크로 블록의 액세스가 완료될 때까지 반복된다. 이때, 수평 방향으로 남아 있는 매크로 블록이 4개가 아닐 경우에는 남아 있는 매크로 블록의 수에 대응하여 버스트 액세스가 이루어진다. 여기서 탐색 영역의 범위가 변하게 되면 탐색 영역 데이터 메모리(343)의 수직 픽셀 크기(즉, 48 픽셀) 수평 픽셀 크기(16*10)도 거기에 상응하여 변할 것이다.
다음, 도 6a 및 도 6b를 참조하여 기준 매크로 블록 데이터 메모리(347)는 휘도 성분을 저장하기 위한 기준 매크로 블록 휘도 데이터 메모리(347a) 및 색차 성분을 저장하기 위한 기준 매크로 블록 색차 데이터 메모리(347b)를 포함한다. 기준 매크로 블록 휘도 데이터 메모리(347a)는 프레임 메모리(도 2의 281)을 버스트 16으로 액세스하여 휘도 성분을 저장한다. 기준 매크로 블록 색차 데이터 메모리(347b)는 프레임 메모리(도 2의 281)을 버스트 8로 액세스하여 휘도 성분을 저장한다.
즉, 휘도 성분 데이터는 버스트 16으로 4개의 매크로 블록 단위(16*16 픽셀 크기)로 액세스되어 기준 매크로 블록 휘도 데이터 메모리(347a)의 블록 CY0, CY1, CY2, CY3에 저장되고, 다음 번 액세스 시에 기준 매크로 블록 휘도 데이터 메모리(347a)의 블록 CY4, CY5, CY6, CY7에 4개의 휘도 매크로 블록이 저장된다. 휘도 블록 CY4 ~ CY7이 액세스되어 저장되기 전에 이전에 저장된 휘도 블록 CY0 ~ CY3에 대한 데이터 처리가 완료된다. 기준 매크로 블록 데이터 메모리(347a)의 블록 CY4, CY5, CY6, CY7에 4개의 휘도 16*16 블록이 저장된 후 다음 번 액세스 시에 기준 매크로 블록 데이터 메모리((347a)의 블록 CY0, CY1, CY2, CY3에 4개의 휘도 16*16 블록이 저장된다. 즉, 파이프 라인 동작을 원활하게 하기 위해서 하나의 메모리 블록 그룹 CYO ~ CY3이 처리되고 있는 동안 다음 번 처리를 위해서 다른 메모리 블록 그룹 CY4 ~ CY7에 데이터가 기입된다. 이후부터 이와 같은 과정은 이전 프레임의 수평 방향 매크로 블록의 액세스가 완료될 때까지 반복된다. 이때, 수평 방향으로 남아 있는 매크로 블록의 수에 맞게 버스트 액세스가 이루어진다.
색차 성분 데이터는 색차 성분 Cb, 색차 성분 Cr 순서로 4개의 8*8 픽셀 크기의 블록 단위로 버스트 8로 액세스되어 매크로 블록 색차 데이터 메모리(347b)의 블록 CCb0, CCb1, CCb2, CCb3, CCr0, CCr1, CCr2, CCr3 에 저장된다. 이어서, 동일하게 버스트 8로 색차 성분 Cb, 색차 성분 Cr 순서로 액세스되어 8*8 픽셀 크기의 블록 단위로 기준 매크로 블록 색차 데이터 메모리(347b)의 블록 CCb4, CCb5, CCb6, CCb7, CCr4, CCr5, CCr6, CCr7 에 저장된다. 색차 데이터 블록 CCb4, CCb5, CCb6, CCb7, CCr4, CCr5, CCr6, CCr7 에 색차 성분이 저장되기 전에 그 이전에 색차 데이터 블록 CCb0, CCb1, CCb2, CCb3, CCr0, CCr1, CCr2, CCr3 에 저장된 색차 데이터에 대한 처리가 완료된다. 파이프 라인 동작을 원활하게 하기 위해서 하나의 메모리 블록 그룹 CCb0, CCb1, CCb2, CCb3, CCr0, CCr1, CCr2, CCr3 이 처리되고 있는 동안 다음 번 처리를 위해서 다른 메모리 블록 그룹 CCb4, CCb5, CCb6, CCb7, CCr4, CCr5, CCr6, CCr7에 데이터가 기입된다. 이와 같은 과정들이 반복적으로 이루어진다.
다음, 도 7a 및 도 7b를 참조하여, 움직임 보상된 데이터 메모리(345)는 움직임 보상된 휘도 및 색차 성분 데이터 블록을 저장한다. 이산여현변환양자화기(DCTQ)(301)의 이산여현변환기(303) 및 역이산여현변환기 (309)가 동시에 움직임 보상된 데이터 메모리(345)를 액세스하기 때문에, 움직임 보상된 데이터 메모리(345)는 움직임 보상된 동일한 휘도 성분을 저장하기 위한 한 쌍의 움직임 보상된 휘도 데이터 메모리들(345a) 및 움직임 보상된 동일한 색차 성분을 저장하기 위한 한 쌍의 움직임 보상 색차 데이터 메모리들(345b)을 포함한다.
움직임 보상된 휘도 데이터 메모리(345a)는 2개의 매크로 블록(16*16)을 저장할 수 있는 크기를 가지며, 움직임 보상된 색차 데이터 메모리(345b)는 각 색차 성분에 대해서 2개의 8*8 픽셀 크기의 블록을 저장할 수 있는 크기를 가진다. 즉, 움직임 보상된 휘도 데이터 메모리(345a)는 16*16 픽셀 크기의 메모리 블록 MY0, MY1으로 구성되고, 움직임 보상된 색차 데이터 메모리(345b)는 8*8 픽셀 크기의 메모리 블록 MCb0, MCb1, MCr0, MCr1으로 구성된다.
도 8은 지금까지 설명한 내부 데이터 메모리(841) 및 데이터 처리 단위들 사이의 상호연결망(849)을 통한 상호 연결관계를 도시하는 블록도이다. 이산여현변환기(803) 및 역이산여현변환기(809)는 동일한 움직임 보상된 매크로 블록을 동시에 접근하며, 또한 움직임 보상된 데이터 메모리(845)를 공유한다. 움직임 추정기(821)와 움직임 보상기(831)는 탐색 영역 데이터 메모리(843)를 공유한다. 움직임 추정기(821)와 이산여현변환기(803)는 기준 매크로 블록 데이터 메모리(847)의 휘도 성분 데이터 CY0 ~ CY7를 공유한다.
탐색 영역 데이터 메모리(843)에 저장된 휘도 성분 데이터는 3개의 48*16 블록 단위로 움직임 추정기(821) 및 움직임 보상기(831)에 전달된다. 기준 매크로 블록 휘도 데이터 메모리(847)에 저장된 휘도 성분 매크로 블록 쌍들 (CY0, CY2), (CY1, CY3), (CY4, CY6), (CY5, CY7)은 다중화기(849a, 849b)를 통해서 움직임 추정기(821) 및 이산여현변환기(803)에 제공되고, 기준 매크로 블록 색차 데이터 메모리(847)에 저장된 색차 성분 블록 쌍들 (CCb0, CCr0, CCb2, CCr2), (CCb1, CCr1, CCb3, CCr3), (CCb4, CCr4, CCb6, CCr6), (CCb5, CCr5, CCb7, CCr7)은 다중화기(849c)에 의해서 이산여현변환기(803)에 제공된다.
지금부터는 상술한 파이프 라인 동작을 위한 데이터 처리 단위들 및 메모리 푸울에 대하여 보다 상세히 설명하기로 한다. 여기서 가변장 부호기를 사용하지 않고 소프트웨어적으로 가변장 부호화를 진행하는 것으로 생각하여 설명하기로 한다. 즉, 소프트웨어적으로 가변장 부호화를 수행할 경우, 가변장 부호화를 위해 움직임 벡터 및 양자화 계수가 외부 메모리에 저장된다. 한편, 가변장 부호기를 사용할 경우, 움직임 벡터 및 양자화 계수를 외부 메모리에 전달하지 않아도 상관없다.
도 9는 움직임 추정기에 대한 상세한 블록도이고, 도 10은 움직임 보상기에 대한 상세 블록도이고, 도 11은 이산여현변환양자화기(DCTQ)에 대한 상세 블록도이고, 도 12는 메모리 푸울에 대한 상세 블록도이다.
먼저 도 9를 참조하여, 움직임 추정기(900)는 움직임 추정 엔진(901), 태스크 제어 회로(903), 내부 데이터 메모리 읽기 제어 회로(905), 움직임 벡터 전달 제어 회로(907)를 포함한다.
태스크 제어 회로(903)는 태스크 조정자로부터 수행해야 될 태스크 명령(움직임 추정 시작 신호 me_start, 움직임 벡터 기입 시작 신호 mv_write 와 같은 태스크 제어 신호)을 받고 이들 태스크의 수행 완료를 알리는 태스크 종료 신호(움직임 추정 종료 신호 me_end, 움직임 벡터 기입 종료 신호 mv_write_end) 를 태스크 조정자에게 전달한다. 움직임 벡터 기입 시작 신호(mv_write)에 의해 움직임 벡터는 움직임 벡터 전달 제어 회로(907)의 제어 하에 외부 프레임 메모리에 기입된다. 한편, 가변장 부호기를 사용할 경우, 가변장 부호화를 위해 움직임 벡터를 외부 메모리에 저장할 필요가 없으며, 가변장 부호기가 움직임 추정기를 직접 액세스해서 움직임 벡터를 사용할 수 있다(움직임 보상기 역시 움직임 추정기를 직접 액세스해서 움직임 벡터를 사용한다). 따라서, 움직임 벡터 기입 시작 신호 mv_write 및 움직임 벡터 기입 종료 신호 mv_write_end 는 필요치 않게 된다. 하지만, 움직임 벡터 기입 시작 신호 mv_write 를 사용할 경우, 이 신호가 발생하는 즉시 움직임 벡터 기입 종료 신호 mv_write_end 를 발생하게 하여 태스크 조정자에게 알릴 수 있다.
내부 데이터 메모리 읽기 제어 회로(905)는 메모리 푸울의 탐색 영역 데이터 메모리로부터 휘도 성분 데이터(PY)와 기준 매크로 블록 데이터 메모리로부터 휘도 성분 데이터(CY)를 읽기 위한 내부 데이터 메모리 제어 신호를 발생한다. 움직임 추정 엔진(901)은 태스크 제어 회로(903)를 통해서 태스크 조정자로부터 받은 움직임 추정 시작 신호 me_start 에 응답해서 메모리 푸울의 탐색 영역 데이터 메모리로부터 휘도 성분 데이터(PY)와 기준 매크로 블록 데이터 메모리로부터 휘도 성분 데이터(CY)를 이용하여 움직임을 추정하여 움직임 벡터를 생성한다. 움직임 벡터 전달 제어 회로(907)는 움직임 보상기(또는 가변장 부호기)에게로 움직임 벡터를 제공하기 위해 움직임 벡터를 일시적으로 저장하거나, 움직임 벡터 가변장 부호화를 위해 움직임 벡터를 외부 메모리에 기입한다.
움직임 추정, 움직임 벡터 기입이 종료되면 태스크 제어 회로(903)는 태스크 조정자에게 움직임 추정 종료를 알리는 움직임 추정 종료 신호 me_end, 움직임 벡터 기입 종료를 알리는 움직임 벡터 기입 종료 신호 mv_write_end 를 보낸다.
다음, 도 10을 참조하여 움직임 보상기(1000)는 움직임 보상 엔진(1001), 태스크 제어 회로(1003), 내부 데이터 메모리 읽기/쓰기 회로(1005), 움직임 벡터 해석 회로(1007), 프레임 메모리 읽기 제어 회로(1009)를 포함한다.
태스크 제어 회로(1003)는 태스크 조정자로부터 수행해야 될 태스크 수행 명령(휘도 성분에 대한 움직임 보상 수행의 시작을 지시하는 신호 mc_y_start, 색차 성분에 대한 움직임 보상 수행의 시작을 지시하는 신호 mc_cbcr_start 와 같은 태스크 제어 신호)을 받고 이들 태스크의 수행 완료를 태스크 조정자에게 알리는 태스크 종료 신호(휘도 성분에 대한 움직임 보상이 완료되었음을 알리는 신호 mc_y_end, 색차 성분에 대한 움직임 보상이 완료되었음을 알리는 신호 mc_cbcr_end)를 전달한다. 내부 데이터 메모리 읽기/쓰기 회로(1005)는 메모리 푸울의 탐색 영역 데이터 메모리로부터 휘도 성분 데이터(PY)를 읽고, 움직임 보상된 결과인 움직임 보상된 휘도 성분 데이터(MY)와 움직임 보상된 색차 성분 데이터(MCb/MCr)를 움직임 보상된 데이터 메모리에 쓰기 위한 내부 데이터 메모리 제어 신호를 발생한다. 프레임 메모리 읽기 제어 회로(1009)는 색차 성분의 움직임 보상을 위해 프레임 메모리(도 2의 291) 액세스를 제어한다. 움직임 해석 회로(1007)는 부호화 모드 시에는 움직임 추정기로부터 복호화 모드 시에는 외부 메모리(또는 가변장 복호기)로부터 움직임 벡터를 전달받아 해석한다. 움직임 보상 엔진(1001)은 태스크 조정자로 부터 받은 휘도 성분 움직임 보상 시작 신호 mc_y_start, 색차 성분 움직임 보상 시작 신호 mc_cbcr_start 에 응답해서 해석된 움직임 벡터를 기반으로 휘도 성분 및 색차 성분에 대하여 움직임 보상을 수행한다. 움직임 보상 엔진(1001)에 의해서 움직임 보상이 종료되면 태스크 제어 회로(1003)는 태스크 조정자에게 움직임 보상 종료를 알리는 움직임 보상 종료 신호 mc_y_end, mc_cbcr_end 를 보낸다.
도 11을 참조하여, 이산여현변환양자화기(DCTQ)(1100)는 이산여현변환기 (1111), 양자화기(1113), 역양자화기(1115), 역이산여현변환기(1117), 태스크 제어 회로(1103), 내부 데이터 메모리 읽기 제어 회로(1105), 프레임 메모리 쓰기 제어 회로(1109)를 포함한다.
태스크 제어 회로(1103)는 태스크 조정자로부터 수행해야 될 태스크 수행 명령(휘도 성분에 대한 이산여현변환양자화 시작 신호 dctq_y_start, 색차 성분에 대한 이산여현변환양자화 시작 신호 dctq_cbcr_start, 휘도 성분에 대한 양자화 계수 엔트로피 부호화 시작을 지시하는 신호 coef_y_write, 색차 성분에 대한 양자화 계수 엔트로피 부호화 시작을 지시하는 신호 coef_cbcr_write, 휘도 성분에 대한 역양자화역이산여현변환 시작 신호 iqidct_y_start, 색차 성분에 대한 역양자화역이산여현변환 시작 신호 iqidct_cbcr_start, 재구성 프레임 저장 시작 신호 recon_write와 같은 태스크 제어 신호)를 받고 이들 태스크의 수행 완료를 알리는 태스크 종료 신호(휘도 성분에 대한 이산여현변환양자화 종료 신호 dctq_y_end, 색차 성분에 대한 이산여현변환양자화 종료 신호 dctq_cbcr_end, 휘도 성분에 대한 양자화 계수 엔트로피 부호화 종료를 알리는 신호 coef_y_write_end, 색차 성분에 대한 양자화 계수 엔트로피 부호화 종료를 알리는 신호 coef_cbcr_write_end, 휘도 성분에 대한 역양자화역이산여현변환 종료 신호 iqidct_y_end, 색차 성분에 대한 역양자화역이산여현변환 종료 신호 iqidct_cbcr_write_end, 재구성 프레임 저장 종료 신호 recon_write_end 신호)를 전달한다.
휘도 성분에 대한 양자화 계수 엔트로피 부호화 시작 신호 coef_y_write 및 색차 성분에 대한 양자화 계수 엔트로피 부호화 시작 신호 coef_cbcr_write 는 가변장 부호화를 위해서 양자화 계수를 외부 메모리에 기입하고 가변장 부호화가 진행되도록 지시하는 신호이다.
한편, 가변장 부호기가 사용될 경우, 휘도 성분에 대한 양자화 계수 엔트로피 부호화 시작 신호 coef_y_write 및 색차 성분에 대한 양자화 계수 엔트로피 부호화 시작 신호 coef_cbcr_write에 응답해서(외부 메모리 기입 동작 없이) 가변장 부호기는 이산여현변환양자화기를 직접 액세스해서(즉, 양자화 계수 데이터 메모리(도 2의 213)를 액세스하여) 가변장 부호화를 진행한다.
내부 데이터 메모리 읽기 제어 회로(1105)는 메모리 푸울의 기준 매크로 블록 휘도 데이터 메모리로부터 휘도 성분 데이터(CY)를, 기준 매크로 블록 색차 데이터 메모리로부터 색차 성분 데이터(CCb/CCr)를, 움직임 보상된 휘도 성분 데이터 메모리로부터 휘도 성분 데이터(MY)를, 움직임 보상된 색차 성분 데이터 메모리로부터 색차 성분 데이터(MCb/MCr)를 읽기 위한 내부 데이터 메모리 제어 신호를 발생시킨다. 프레임 메모리 쓰기 제어 회로(1109)는 재구성된 프레임을 프레임 메모리(도 2의 291)에 저장하는 것을 제어한다.
다음, 도 12를 참조하여, 메모리 푸울(1200)은 현재 프레임의 휘도 성분 및 색차 성분을 저장하는 기준 매크로 블록 데이터 메모리(1211), 이전 프레임의 휘도 성분을 저장하는 탐색 영역 데이터 메모리(1213), 움직임 보상된 휘도 및 색차 성분을 저장하는 움직임 보상된 데이터 메모리(1215), 태스크 제어 회로(1203), 내부 데이터 메모리 읽기/쓰기 제어 회로(1205), 프레임 메모리 읽기 제어 회로(1209), 상호 연결망(1217)을 포함한다.
태스크 제어 회로(1203)는 태스크 조정자로부터 수행해야 될 태스크 명령(탐색 영역 휘도 성분 쓰기 시작 신호 py_write, 기준 매크로 블록 휘도 성분 쓰기 시작 신호 cy_write, 기준 매크로 블록 색차 성분 쓰기 시작 신호 ccbccr_write 와 같은 태스크 제어 신호)을 받아 프레임 메모리 읽기 제어 회로(1209)를 통해 외부 프레임 메모리에 저장된 데이터를 액세스하여 기준 매크로 블록 휘도 및 색차 데이터 메모리와 탐색 영역 데이터 메모리에 저장되도록 한다. 또한 태스크 제어 회로(1203)는 이와 같은 각 태스크의 수행 완료를 태스크 조정자에게 알리는 태스크 종료 신호(탐색 영역 휘도 성분 쓰기 종료 신호 py_write_end, 기준 매크로 블록 휘도 성분 쓰기 종료 신호 cy_write_end, 기준 매크로 블록 색차 성분 쓰기 종료 신호 ccbccr_write_end 와 같은 태스크 제어 신호)를 전달한다.
내부 데이터 메모리 읽기/쓰기 회로(1205)는 각 데이터 처리 단위들(움직임 추정기, 움직임 보상기, 이산여현변환양자화기(DCTQ))로부터 내부 데이터 메모리 제어 신호를 받아 상호 연결망(1217)을 통해서 필요한 데이터 즉, 탐색 영역 휘도 데이터(PY), 기준 매크로 블록 휘도 성분 데이터(CY), 기준 매크로 블록 색차 성분 데이터(CCb/CCr), 움직임 보상된 휘도 성분 데이터(MY), 움직임 보상된 색차 성분 데이터(MCb/MCr)를 각 데이터 처리 단위들에 제공한다.
도 13은 본 발명에 따른 비디오 코덱의 전체 동작을 제어하는 태스크 조정자와 각 데이터 처리 단위들이 주고받는 태스크 시작 신호, 태스크 종료 신호등을 개략적으로 도시한다. 태스크 조정자(1361)는 제어 레지스터(1371)로부터 한 프레임의 첫 시작을 알리는 frame_start 신호에 의해 동작을 시작한다. 제어 레지스터(1371)는 모드 설정 신호, 즉, 부호화와 복호화를 구별하는 encoder 신호, 인터 모드와 인트라 모드를 결정하는 inter 신호를 발생하여 태스크 조정자(1361)에게 제공하여 비디오 코덱의 기능을 설정한다. encoder 신호가 "1"일 때 부호화이고, "0"일 때 복호화를 수행하며, inter 신호는 "1"인 경우가 인터 모드, "0"인 경우는 인트라 모드를 나타낸다. 또한 비디오 부호화는 프레임 단위로 처리할 수도 있고, 슬라이스 단위로 처리할 수도 있다. 슬라이스 단위로 처리할 때는 정해진 매크로 블록의 수만큼 부호화를 수행하므로, 제어 레지스터는 다음 슬라이스에 대한 동작을 알리기 위해 동작 시작 신호 op_start 를 발생한다. 신호 mem_mbx, me_mbx, mc_mbx, dctq_mbx는 각각 메모리 푸울(1341), 움직임 추정기(1321), 움직임 보상기(1331)와 이산여현변환양자화기(DCTQ)(1301)에서 현재 처리되고 있는 매크로 블록의 수평 방향의 위치(처리되는 프레임에서의 매크로 블록의 수평 방향 위치)를 나타낸다. mem_mbx의 경우, 4개의 매크로 블록 단위로 내부 데이터 메모리에 저장되기 때문에, 저장이 종료될 때마다 mem_mbx는 4씩 증가한다. 이에 반해 me_mbx, mc_mbx, dctq_mbx는 각각 움직임 벡터 전달, 색차 성분에 대한 움직임 보상 종료, 색차 성분에 대한 DCTQ 태스크가 종료될 때마다 1씩 증가한다.
한편, VGA 해상도를 지원하는 경우 매크로 블록의 수평 방향 위치는 6 비트로 표시될 수 있다. 또한, 수평 방향의 매크로 블록을 4개의 매크로 블록 단위로 구분할 때, 마지막에 남는 매크로 블록의 수는 0, 1, 2, 3의 네 가지 중 한 경우가 된다. 따라서, 남아 있는 매크로 블록의 수를 알리기 위한 신호가 horizontal_end 이다. horizontal_end 신호가 발생한 후에는 남아 있는 매크로 블록의 수만큼의 매크로 블록이 메모리 푸울의 데이터 메모리에 저장된다. 이 경우, 수평 방향의 위치를 나타내는 비트 중 마지막 두 비트로부터 남아 있는 매크로 블록의 수를 알 수 있다.
도 13에 나타난 나머지 신호들은 태스크 조정자(1361)로부터 각 데이터 처리 단위들(1321, 1331, 1301) 및 메모리 푸울(1341)에 태스크의 시작을 알리는 태스크 시작 신호와 그에 대응하는 데이터 처리 단위들(1321, 1331, 1301) 및 메모리 푸울(1341)의 동작의 완료를 나타내는 태스크 종료 신호들이다.
먼저 메모리 푸울(1341)과 태스크 조정자(1361) 사이에 주고받는 신호 쌍들을 살펴본다. 신호 py_write는 태스크 조정자(1361)가 발생하는 신호로서 내부 데이터 메모리의 탐색 영역 데이터 메모리(PY0 ~ PY9)에 쓰기를 알리는 신호이고, 신호 py_write_end는 메모리 푸울(1341)이 발생하는 신호로서 쓰기가 완료되었음을 나타내는 신호이다. 신호 cy_write는 태스크 조정자(1361)가 발생하는 신호로서 기준 매크로 블록 휘도 성분 데이터(CY0 ~ CY7)의 쓰기를 알리는 신호이고, 신호 cy_write_end는 메모리 푸울(1341)이 발생하는 신호로서 쓰기가 완료되었음을 알리는 신호이다. 마찬가지로 신호 ccbccr_write는 기준 매크로 블록 색차 성분 데이터(CCb0 ~ CCb7, CCr0 ~ CCr7)의 쓰기를 알리는 신호이고, 신호 ccbccr_write_end는 쓰기가 완료됨을 나타내는 신호이다.
다음, 움직임 추정기(1321)와 태스크 조정자(1361) 사이에 주고받는 신호 쌍들을 살펴본다. 신호 me_start는 태스크 조정자(1361)가 발생하는 신호로서 움직임 추정기(1321)가 움직임 추정을 시작하도록 명령하는 신호이고, 신호 me_end는 움직임 추정의 완료를 태스크 조정자(1361)에게 알리는 신호로서 움직임 추정기(1321)가 발생하는 신호이다. 신호 mv_write는 움직임 추정의 결과인 움직임 벡터를 외부 메모리에 기입하도록 하는 태스크 조정자(1361)가 발생하는 신호이며, 신호 mv_write_end는 움직임 벡터의 기입이 완료됨을 나타내는 움직임 추정기(1321)가 발생하는 신호이다.
다음 움직임 보상기(1331)와 태스크 조정자(1361) 사이에 주고받는 신호 쌍들에 대해서 살펴본다. 신호 mc_y_start는 움직임 보상기(1331)가 휘도 성분에 대한 움직임 보상을 시작하도록 알리는 태스크 조정자(1361)가 발생하는 신호이고, 신호 mc_cbcr_start는 색차 성분에 대한 움직임 보상을 하도록 알리는 태스크 조정자(1361)가 발생하는 신호이며, 신호 mc_y_end와 mc_cbcr_end는 각각 휘도와 색차 성분의 움직임 보상이 끝났음을 나타내는 움직임 보상기(1331)가 발생하는 신호이다.
다음 이산여현변환양자화기(DCTQ)(1301)와 태스크 조정자(1361) 사이에 주고받는 신호 쌍들을 살펴본다. 신호 dctq_y_start와 신호 dctq_cbcr_start는 부호화의 경우 각각 휘도와 색차 성분에 대한 이산여현변환, 양자화, 역양자화, 역이산여현변환을 수행하도록 태스크 조정자(1361)가 발생하는 신호이고, 신호 dctq_y_end와 신호 dctq_cbcr_end는 각각 휘도와 색차 성분에 대한 동작이 완료되었다는 것을 태스크 조정자(1361)에게 알리는 신호로서 이산여현변환양자화기(1301)가 발생하는 신호이다. 신호 coef_y_write와 신호 coef_cbcr_write는 양자화된 결과인 휘도와 색차 성분의 양자화 계수를 엔트로피 부호화 하도록 태스크 조정자(1361)가 발생하는 신호이며, 신호 coef_y_write_end와 신호 coef_cbcr_write_end는 엔트로피 부호화가 완료됨을 태스크 조정자(1361)에게 알리는 이산여현변환양자화기(1301)가 태스크 조정자(1361)에게 알리는 신호이다. 가변장 부호기를 사용하는 경우, 신호 coef_y_write 신호와 신호 coef_cbcr_write 신호는 가변장 부호기로 하여금 양자화 계수 데이터 메모리에 저장된 양자화 계수에 접근하여 가변장 부호를 수행하도록 지시하는 신호이며, 신호 coef_y_write_end와 신호 coef_cbcr_write_end는 이산여현변환양자화기가 가변장 부호기에 의해서 가변장 부호가 종료되었음을 태스크 조정자에게 알리는 신호이다. 신호 recon_write는 재구성된 프레임 데이터를 저장하도록 이산여현변환양자화기(1301)에게 알리는 신호이며, 완료가 되면 이산여현변환양자화기 (1301)는 신호 recon_write_end 신호를 발생하여 태스크 종료를 태스크 조정자(1301)에게 알린다.
한편 복호화 시에 있어서, 태스크 조정자(1661)는 신호 coef_y_read 신호와 신호 coef_cbcr_read 를 발생하여 이산여현변환양자화기(1301)로 하여금 휘도와 색차 성분에 대한 양자화 계수를 외부 메모리(또는 가변장 복호기)로부터 받아들이도록 지시하는 신호이고, 이산여현변환양자화기(1301)는 신호 coef_y_read_end와 신호 coef_cbcr_read_end 신호를 발생하여 이 동작의 완료를 태스크 조정자(1361)에게 알린다. 신호 iqidct_y_start와 신호 iqidct_cbcr_start는 휘도와 색차 성분에 대해 역양자화와 역이산여현변환의 동작을 시작시키는 신호이며, 신호 iqidct_y_end와 신호 iqidct_cbcr_end는 그 동작이 완료되었음을 알리는 신호이다.
이제까지 설명한 비디오 코덱의 파이프 라인 동작을 모드별로 더 상세하게 나타내면 아래 도 14a 및 도 14b 그리고 도 15a 및 도 15b 와 같다. 도 14a 및 도 14b는 부호화/인터 모드 및 부호화/인트라 모드시의 파이프 라인을 도시하고, 도 15a 및 도 15b는 복호화/인터 모드 및 복화화/인트라 모드의 파이프 라인을 도시한다.
먼저 도 14a를 참조하여, 부호화/인터 모드에서, 프레임 메모리로부터 움직임 추정을 위한 휘도 성분 데이터가 메모리 푸울의 탐색 영역 데이터 메모리 및 기준 매크로 블록 데이터 메모리에 기입된다. 프레임 메모리로부터 메모리 푸울의 내부 데이터 메모리들로의 데이터 저장은 탐색 영역 데이터 메모리, 기준 매크로 블록 휘도 데이터 메모리, 기준 매크로 블록 색차 데이터 메모리 순으로 반복적으로 일어난다. 구체적으로 설명을 하면, 태스크0(T0)에서 탐색 영역 데이터 메모리의 블록 PY0 ~ PY6에 6개의 48*16 휘도 블록이 저장된다. 이때, 프레임 메모리(도 2의 프레임 메모리 291 참조)에 대한 두 번의 액세스를 통해서 이루어진다. 먼저 프레임 메모리가 버스트 8로 액세스되어 메모리 블록 PY0 ~ PY1에 휘도 성분 데이터가 저장되고 이어서 버스트 16으로 액세스되어 메모리 블록 PY2 ~ PY5에 휘도 성분 데이터가 저장된다(도 5 참조).
다음 태스크1(T1)에서 프레임 메모리(도 2의 프레임 메모리 281 참조)가 버스트 16으로 액세스되어 4개의 16*16 휘도 성분 데이터 CY가 기준 매크로 블록 휘도 데이터 메모리의 블록 CY0 ~ CY3에 저장된다(도 6a 참조).
기준 매크로 블록 휘도 메모리에 4개의 휘도 매크로 블록 저장이 완료되면 움직임 추정기가 매크로 블록(16*16) 단위로 기준 매크로 블록 휘도 메모리에 저장된 4개의 휘도 블록들 CY0 ~ CY3에 대해서 움직임 추정 태스크를 시작한다. 즉, 태스크2(T2)에서, 태스크0(T0) 및 태스크1(T1)에서 준비된 탐색 영역 휘도 데이터 PY0 ~ PY2 및 기준 매크로 휘도 데이터 블록 CY0을 사용하여 움직임 추정기가 움직임 추정 태스크를 시작한다. 또, 태스크2(T2)에서 프레임 메모리가 버스트 8로 액세스되어 각각 4개의 8*8 픽셀 색차 성분 데이터 CCb 및 CCr가 기준 매크로 블록 색차 데이터 메모리의 블록 CCb0 ~ CCb3, CCr0 ~ CCr3에 저장된다(도 6b 참조). 여기서, 태스크(T2)에서 움직임 추정이 종료되면, mem_mbx는 초기 0에서 4로 변한다.
태스크2(T2)에서 휘도 매크로 블록(CY0)에 대한 움직임 추정이 완료되어 움직임 벡터가 생성되면, 태스크3(T3)에서 움직임 벡터가 외부 메모리에 전달되고 움직임 보상기는 휘도 블록에 대한 움직임 보상을 수행하여 움직임 보상된 휘도 블록이 움직임 보상된 휘도 데이터 메모리에 저장된다. 여기서, 움직임 벡터의 전달이 종료되면 me_mbx는 초기 0에서 1로 증가한다. 또 태스크2(T2)에서 프레임 메모리가 버스트 8로 액세스되어 색차 성분(CCb0 ~ CCb3, CCr0 ~ CCr3)이 기준 매크로 블록 색차 데이터 메모리에 저장되면, 태스크8(T8)에서(도면에서 세 번째 T8) 휘도 매크로 블록 CY4에 대한 움직임 추정을 위해서, 태스크3(T3)에서 프레임 메모리가 버스트 16으로 액세스되어 48*16 픽셀 크기의 4개의 휘도 블록 PY6 ~ PY9이 탐색 영역 데이터 메모리에 기입되기 시작하고 태스크9(T9)(두 번째 T9)에서 프레임 메모리가 버스트 16으로 액세스되어 16*16 픽셀 크기의 4개의 휘도 블록 CY4 ~ CY7이 기준 매크로 블록 데이트 메모리에 기입되기 시작한다(도 5 참조).
휘도 블록에 대한 움직임 보상이 완료되고 움직임 벡터의 전달이 종료되면, 태스크4(T4)에서 8*8 블록 단위로 이산여현변환양자화기(DCTQ)는 차분 휘도 블록(CY0-PY0)에 대한 DCTQ 태스크(이산여현변환, 양자화, 역양자화, 역이산여현변환)를 수행한다. 이와 동시에, 태스크4(T4)에서 색차 블록에 대한 움직임 보상이 수행되고, 휘도 매크로 블록(CY1)에 대한 움직임 추정이 시작된다. 태스크4(T4)에서 색차 성분에 대한 움직임 보상이 종료되면, mc_mbx는 초기 0에서 1로 증가한다.
휘도 블록(CY0-MY0)에 대한 DCTQ 태스크가 완료되면, 태스크5(T5) 및 태스크6(6)(첫 번째 T6)에 걸쳐 휘도 성분(COEF Y0)에 대한 가변장 부호화 태스크가 수행된다. 또한 태스크4(T4)에서 색차 블록에 대한 움직임 보상이 완료되면, 태스크(5)에서 색차 성분에 대한 DCTQ 태스크가 수행된다. 태스크5(T5)에서 휘도 매크로 블록에 대한 움직임 추정이 종료되면 태스크6(T6)(첫 번째 T6)에서 휘도 매크로 블록에 대한 움직임 보상이 수행되어 움직임 보상된 휘도 블록이 움직임 보상된 휘도 데이터 메모리에 저장된다.
태스크5(T5)에서 색차 블록에 대한 DCTQ 태스크가 종료되면 태스크6(T6)(첫 번째 T6)에서 재구성 프레임 기입 태스크가 수행되며, 그 태스크 수행이 완료된 후 dctq_mbx는 초기 0에서 1로 증가한다.
태스크6(T6)에서 휘도 성분(COEF Y0)에 대한 가변장 부호가 종료되면 태스크8(8)(첫 번째 T8)에서 색차 성분에 대한 가변장 부호가 수행된다. 이때, 색차 성분에 대한 움직임 보상이 움직임 보상기에 의해서, 휘도 성분(CY1-MY1)에 대한 DCTQ가 이산여현변환양자화기에 의해서, 휘도 성분(CY2)에 대한 움직임 추정이 움직임 보상기에 의해서 수행된다.
인터 부호화 모드의 경우, 탐색 영역 데이터는 태스크0(T0)와 태스크3(T3) ~ 태스크8(T8) 동안(T3, T4, T4, T6, T8, T9, T6, T8)에, 기준 매크로 블록의 휘도 데이터는 태스크1(T1)과 태스크9(T9) 동안, 색차 데이터는 태스크2(T2)와 태스크9(T9) 동안에 외부 프레임 메모리에서 액세스되어 저장된다. 움직임 추정은 태스크2(T2), 태스크4(T4) ~ 태스크5(T5) (T4, T5)와 태스크8(T8) ~ 태스크9(T9) 동안(T8, T9)에, 움직임 벡터 전달은 태스크3(T3)와 태스크6(T6), 움직임 보상의 휘도 성분은 태스크3(T3)와 태스크6(T6) 동안에, 움직임 보상의 색차 성분은 태스크4(T4)와 태스크8(T8) 동안에, DCTQ동작의 휘도 성분은 태스크4(T4)와 태스크8(T8) 동안에, DCTQ의 색차 성분은 태스크5(T5)와 태스크9(T9) 동안에, 재구성된 프레임의 저장은 태스크6(T6)에서 수행된다.
휘도 성분에 대한 가변장 부호화는 태스크5(T5) ~ 태스크6(T6)(T5, T6), 태스크9(T9) ~ 태스크6(T6)(T9, T6) 동안에 수행되고, 색차 성분에 대한 가변장 부호화는 태스크8(T8)에서 수행된다.
인트라 부호화 시의 파이프 라인 동작은 도 14b에 도시되어 있다. 인트라 부호화 모드의 경우는 탐색 영역 데이터의 액세스, 움직임 추정기와 움직임 보상기가 동작하지 않으므로 태스크 T0와 T3를 제외하고, 나머지 동작은 인터 모드의 경우와 동일하게 동작한다.
본 발명에 따른 비디오 코덱이 복호기로 동작할 경우의 인트라 복호화, 인터 복호화에 대한 파이프 라인 동작은 도 15a 및 도 15b에 도시된 바와 같다.
도 15a를 참조하여, 인터 복호화 모드는 인터 부호화와 비교해서, 움직임 추정을 수행하지 않으며, 기준 매크로 블록에 대한 동작은 발생하지 않는다. 즉, 인터 복호화 모드는 움직임 추정기가 동작하지 않으므로, 탐색 영역 데이터는 T0와 T3~T6(T3, T4, T5, T6, T7, T8, T9, T6, T7, T8, T9, T6) 동안 액세스되며, 움직임 보상의 휘도 성분은 T3와 T6, 색차 성분은 T4와 T7~T8(T7, T8), DCTQ의 휘도 성분은 T4와 T8, 색차 성분은 T5와 T9, 재구성된 프레임의 저장은 T6 태스크 동안에 수행이 된다.
도 15b를 참조하여, 인트라 복호화 모드는 인터 복호화 모드와 비교하여, 움직임 보상을 진행하지 않는 것을 제외하고는 동일하다.
도 16a 내지 도 16d는 도 14a 및 도 14b, 도 15a 및 도 15c의 각 모드별 파이프 라인 동작에서 태스크 흐름을 개략적으로 도식화한 태스크 흐름도이다.
도 16a 내지 도 16d는 도 14a 및 도 14b 그리고 도 15a 및 도 15b의 각 모드별 파이프 라인 동작에서의 태스크 흐름을 요약하여 도시한다. 도 16a는 인터 부호화 모드시의 태스크 흐름을, 도 16b는 인트라 부호화 모드시의 태스크 흐름을, 도 16c는 인터 복호화 모드시의 태스크 흐름을, 도 16d는 인트라 복호화 모드시의 태스크 흐름을 도시한다.
부호화와 복호화의 경우 각각 T8과 T6태스크에서 수평 방향의 모든 매크로블록의 동작이 완료되면(MX=MXLAST, 여기서 MX는 현재 처리되고 있는 매크로 블록의 수평 방향 위치를 나타내고, MXLAST는 수평 방향 매크로 블록의 마지막 매크로 블록의 위치를 나타낸다) 초기 태스크로 또는 한 프레임에 대한 동작이 완료되면(MB END) 유휴(IDLE) 태스크로 천이하여 수행된다.
도 14a 및 도 14b 그리고 도 15a 및 도 15b에 개략적으로 도시된 모드별 파이프 라인 동작에 대한 태스크 제어 신호에 따른 태스크 조정자의 각 모드별 상태 천이(State Transition)를 도 17 내지 도 20에 나타내었다. 도 17은 인터 부호화 모드, 도 18은 인트라 부호화 모드, 도 19는 인터 복호화 모드, 도 20은 인트라 복호화 모드 경우의 태스크 조정자의 상태 천이 상태를 도시한다. 도 17 내지 도 20에서, mxlast는 한 프레임에서 수평 방향에서 마지막 매크로 블록의 위치이며 M-1(M은 프레임에서 수평 방향으로의 매크로 블록 개수)의 값을 갖고, mx는 현재 DCTQ 처리되는 매크로 블록의 수평위치로서, dctq_mbx와 같은 위치를 나타내고, my는 현재 처리되고 있는 매크로 블록의 수직 방향의 위치이며 0 ~ N-1(N은 수직 방향의 매크로 블록의 개수)의 범위를 갖는다. op_unit은 전체 매크로 블록의 수, 즉 M×N 값을 가지며, op_cnt는 현재 처리된 매크로 블록의 수를 나타낸다.
먼저 도 17을 참조하여(도 14a, 16a도 함께 참조), 인터 부호화 모드의 경우, 태스크 조정자는 제어 레지스터에 의한 프레임 시작 신호 frame_start 에 의해서 한 프레임에 대한 동작을 시작하고 메모리 푸울, 움직임 추정기, 움직임 보상기, 이산여현변환양자화기에 의한 각종 태스크 종료 신호에 의해 태스크를 변환한다(상태가 천이된다). 즉, 제어 레지스터에 의한 프레임 시작 신호 frame_start 에 의해 유휴 상태(IDLE)에서 태스크0(T0)으로 천이한다. 메모리 푸울이 탐색영역 매크로 블록 휘도 데이터 기입 완료 신호 py_write_end를 발생하면 태스크 조정자는 태스크1(T1)으로 태스크를 전환한다. 또, 기준 매크로 블록 휘도 데이터 기입이 완료 신호 cy_write_end가 발생하면 태스크2(T2)로 천이한다. 기준 매크로 블록 색차 데이터 기입 완료 신호 ccbr_write_end와 움직임 추정 완료 신호 me_end가 발생하면 태스크3(T3)으로 천이한다. 외부 프레임 메모리로의 움직임 벡터의 기입이 종료되고(mv_write_end) 휘도 성분에 대한 움직임 보상이 완료되면(mc_y_end) 태스크4(T4)로 천이한다. 색차 데이터에 대한 움직임 보상이 완료되고(mc_cbcr_end) 휘도 성분에 대한 DCTQ 태스크가 완료되면(dctq_y_end) 태스크5(T5)로 천이한다. 태스크 T5에서 태스크 T6으로 천이시 요구되는 신호는 움직임 추정 종료 신호 me_end와 색차 성분에 대한 DCTQ 종료 신호 dctq_cbcr_end 이다(도 14a 참조). 여기서, 수평 방향의 마지막 매크로 블록(이때, me_mbx=M-1)에 대하여는 움직임 추정, 움직임 보상, DCTQ가 순차적으로 수행된다. 따라서 마지막 매크로 블록에 대한 움직임 추정이 종료되고 움직임 벡터가 전달되면 me_mbx= M 이된다. 이때, 색차 성분에 대한 DCTQ가 종료될 때(dctq_cbcr_end) 움직임 추정 종료 신호는 발생하지 않기 때문에 태스크 T5에서 태스크 T6으로 천이되지 않게 된다. 따라서 마지막 매크로 블록에 대하여는 me_end 신호에 상관없이 dctq_cbcr_end 신호만으로 태스크 T5 에서 태스크 T6으로 천이하도록 하기 위해서 항상 참인 논리식 me_mbx==M를 me_end와 논리합 연산하였다(me_end||me_mbx==M).
마찬가지로 태스크 T6에서 태스크 T8로의 천이시 필요한 신호는 움직임 벡터 전달 종료 신호 mv_write_end, 휘도 블록에 대한 움직임 보상 종료 신호 mc_y_end, 재구성 프레임 기입 종료 신호 recon_write_end, 휘도 성분에 대한 가변장 부호화 종료 신호 coef_y_write_end 이다(도 14a 참조). 여기서도 수평 방향의 마지막 매크로 블록에 대한 가변장 부호화 종료 신호가 발생할 때, 움직임 벡터 전달 종료 신호 및 휘도 성분에 대한 움직임 보상 종료 신호가 발생하지 않기 때문에, mv_write_end||me_mbx==M, mc_y_end||mc_mbx=M 을 사용하였다.
태스크8에서는, 전체 프레임에 대한 처리가 완료되지 않고 수평 방향으로의 매크로 블록에 대한 처리가 완료되지 않으면, T8->T9->T6->T8 으로 순환하면서 상태를 천이한다. 또는 현재 처리된 매크로 블록의 개수가 전체 매크로 블록의 개수와 같고(op_unit==op_cnt), 현재 매크로 블록의 수평 방향의 위치가 M(수평 방향의 매크로 블록의 개수)과 같고(mx==M), 현재 매크로 블록의 수직 방향의 프레임 위치가 프레임의 수직 방향의 마지막 매크로 블록의 개수와 같고(nx==N), 색차 성분의 양자화 계수에 대한 가변장 부호가 완료되면(coef_cbcr_write_end), 즉 전체 한 프레임에 대한 처리가 완료되면, 태스크8에서 유휴 상태로 천이하여 새로운 프레임에 대한 동작이 시작되기를 기다리게 된다. 또는, 현재 처리된 매크로 블록의 개수가 전체 매크로 블록의 개수와 같지 않고(op_unit!=op_cnt)(즉, 전체 프레임에 대한 처리가 완료되지 않았고), 색차 성분에 대한 양자화 계수의 가변장 부호가 종료되고(coef_cbcr_write_end) 그리고 수평 방향의 마지막 매크로 블록이 처리되었다면(mx==M), 태스크0으로 천이하고 다음 수평 라인의 매크로 블록에 대한 처리가 진행된다.
한편, 전체 매크로 블록에 대한 처리가 종료되지 않고 또한 수평 라인의 매크로 블록에 대한 처리가 종료되지 않으면(op_unit!=unit && mx!=M), 태스크 T8에서 태스크 T9로 천이한다. 이때, 도 14a에서 첫 번째 태스크 T8에서, 색차 성분에 대한 움직임 보상이 종료되고(mc_cbcr_end), 휘도 성분에 대한 DCTQ가 종료되고(dctq_y_end), 색차 성분의 양자화 계수에 대한 가변장 부호가 종료되면(coef_cbcr_write_end), 태스크 T9로 천이한다. 반면, 두 번째 태스크 T8에서 T9로의 천이시에는, mc_cbcr_end, dctq_y_end, coef_cbcr_write_end 신호 뿐 아니라 휘도 매크로 블록 PY에 대한 기입 종료 신호 py_write_end 도 필요하다. 따라서, py_write_end 신호도 고려해야 한다. 한편, 첫 번째 T8에서 색차 성분에 대한 움직임 보상이 종료되면(mc_cbcr_end), mx[1:0]=1 상태(mx의 최하위 두 비트는 '01')이고, 두 번째 T8에서 색차 성분에 대한 움직임 보상이 종료되면(mc_cbcr_end), mx[1:0]=2(mx의 최하위 두 비트는 '10') 상태이다. 따라서, 모든 경우에 있어서의 태스크8 에서 태스크9로의 천이를 보장하기 위해, 도시된 바와 같이 (((py_write_end)&&mx[1:0]==2'b10)||mx[1:0]!=2'10)||mem_mbx==M)이 추가되었다.
한편 도 14a를 참조하면, 움직임 추정이 종료되고(me_end), 색차 성분에 대한 DCTQ가 종료되면(dctq_cbcr_end) 첫 번째 태스크 9에서 태스크 6으로 천이한다. 반면 두 번째 태스크 9에서 태스크 6으로 천이하기 위해서는, me_end, dctq_cbcr_end 뿐 아니라, 기준 매크로 블록 휘도 데이터에 대한 기입 동작이 완료되어야 한다(cy_write_end). 그리고, 세 번째 태스크 9에서 태스크 6으로 천이하기 위해서는 기준 매크로 블록 색차 데이터에 대한 기입 동작이 완료되어야 한다(ccbccr_write_end). 한편 세 번째 태스크 9가 종료되면 mx[1:0]=3이 된다. 이와 같은 상황을 고려하여, 태스크 9에서 태스크 6으로 천이하기 위해서는 (me_end||me_mbx==M) && dctq_cbcr_end && ((((cy_write_end && mx[1:0]==2'b10) || mx[1:0]!=2'b10) && ((ccbccr_write_end && mx[1:0]==2'b11 || mx[1:0] != 2'b11) || mem_mbx == M) 조건을 만족해야 한다.
한편, 슬라이스 단위로 매크로 블록이 처리되는 것을 지원하기 위해서 태스크 T8에서 대기 상태(Wait)로 천이하도록 하였다. 즉, 처음에 설정한 슬라이드 단위 처리가 완료되었으나(op_unit==op_cnt) 전체 프레임에 대한 처리가 종료되지 않으면(mx!=M||my!=N), 태스크 T8에서 대기 상태(Wait)로 천이한다. 앞서 설명한 태스크 8에서 태스크 9로의 천이에서 설명한 것 같이, 모든 태스크 8에서 대기 상태로의 천이를 담보하기 위해서 (((py_write_end) && mx[1:0]==2'b10) || mx[1:0]!=2'10) || mem_mbx==M || mx==M)이 고려되어야 한다. 따라서 도시된 바와 같이, 태스크 8에서 대기 상태로의 천이는 op_unit==op_cnt && (mx!=M || my!=N) && ((mc_cbcr_end && dctq_y_end) || mx==M) && coef_cbcr_write_end && (((py_write_end) && mx[1:0]==2'b10) || mx[1:0]!=2'10) || mem_mbx==M || mx==M) 조건을 만족해야 한다.
대기 상태에서 슬라이스 단위 처리 시작 신호(op_start)가 제어 레지스터에 의해 발생하고 수평 방향으로의 모든 매크로 블록의 처리가 종료되면(mx==M), 태스크0으로 천이한다. 반면, 슬라이스 단위 처리 시작 신호(op_start)가 제어 레지스터에 의해 발생하고 수평 방향으로의 모든 매크로 블록에 대한 처리가 종료되지 않으면(mx!=M), 태스크9로 천이한다.
도 18은 인트라 부호화 모드 시의 태스크 조정자의 상태 기계를 도시한다. 도 18, 도 14b 및 도 16b를 참조하여, 유휴 상태에서 제어 레지스터에 의한 frame_start 신호에 의해서 태스크1로 천이하고, cy_write_end 신호에 의해 태스크2로 천이하고, 신호 ccbccr_write_end 태스크4로 천이하고, 신호 dctq_y_end가 발생하면 태스크5로 천이하고, 신호 dctq_cbcr_end가 발생하면 태스크6으로 천이한다. 태스크 6에서, 기준 매크로 블록 색차 데이터에 대한 기입 동작을 고려하여 (((ccbccr_write_end && mx[1:0]==2b11) || mx[1:0]!=2b11) || mem_mbx==M) 조건을 만족하고, 휘도 성분에 대한 움직임 보상이 종료되고(mc_y_end ||mc_mbx==M), 휘도 성분의 양자화 계수에 대한 가변장 부호가 종료되고(coef_y_write_end), 재구성 프레임 저장이 종료되면(recon_write_end), 태스크8로 천이한다. 태스크8에서 유휴 상태 및 태스크1로 천이하는 동작은 도 17과 동일하다. 또한 대기 상태에서 태스크9 및 태스크1로 천이하는 동작 역시 도 17과 동일하다. 한편, 움직임 보상이 이루어지지 않기 때문에, 도 17의 태스크8에서 대기 상태로의 천이에서 색차 성분에 대한 움직임 보상 완료 신호(mc_cbcr_end)가 필요 없으며, 신호 py_write_end 대신에 신호 cy_write_end 가 사용된다. 태스크 8 종료 시점에서 mx[1:0]=3이기 때문에, 도 17의 mx[1:0]==2'10은 도 18의 인트라 부호화 모드에서는 mx[1:0]==2'b11 로 바뀐다. 이와 같은 것은 태스크 8에서 태스크 9로의 천이 시에도 동일하게 적용된다.
도 19는 복호화 인터 모드시의 태스크 조정자의 상태 기계를 도시한다. 도 15a, 도 16c 및 도 19를 참조하여, 유휴 상태에서 신호 frame_start에 의해서 태스크0으로 천이한다. 신호 py_write_end(휘도 성분에 대한 기입 동작이 완료되면)에 의해 태스크3으로 천이하고, 신호 mc_y_end(휘도 성분에 대한 움직임 보상이 완료되고)와 coef_y_read_end(외부 메모리 또는 가변장 복호기로부터 휘도 양자화 계수에 대한 독출 동작이 완료하면) 발생하면 태스크4로 천이하고, 신호 mc_cbcr_end(색차 신호에 대한 움직임 보상이 완료하고), coef_cbcr_read_end(외부 메모리 또는 가변장 복호기로부터 색차 양자화 계수에 대한 독출 동작이 완료하고), iqidct_y_end 가 발생하면(휘도 성분에 대한 역양자화역이산여현변환이 완료) 태스크5로 천이하고 신호 iqidct_cbcr_end가 발생하면(색차 성분에 대한 역양자화역이산여현변환이 종료하면) 태스크6으로 천이한다.
태스크6에서는, 전체 프레임에 대한 처리가 완료되지 않고 수평 방향으로의 매크로 블록에 대한 처리가 완료되지 않으면, T6->T7->T8->T9->T6 순환하면서 상태를 천이한다. 또는 현재 처리된 매크로 블록의 개수가 전체 매크로 블록의 개수와 같고(op_unit==op_cnt), 현재 매크로 블록의 수평 방향의 위치가 M(수평 방향의 매크로 블록의 개수)과 같고(mx==M), 현재 매크로 블록의 수직 방향의 프레임 위치가 프레임의 수직 방향의 마지막 매크로 블록의 개수와 같고(my==N), 재구성 프레임 저장이 종료되면(recon_write_end), 즉 전체 한 프레임에 대한 처리가 완료되면, 태스크8에서 유휴 상태(IDLE)로 천이하여 새로운 프레임에 대한 동작이 시작되기를 기다리게 된다. 또는, 현재 처리된 매크로 블록의 개수가 전체 매크로 블록의 개수와 같지 않고(op_unit!=op_cnt)(즉, 전체 프레임에 대한 처리가 완료되지 않았고), 수평 방향의 마지막 매크로 블록이 처리되었고(mx==M), 재구성 프레임 저장이 종료되면(recon_write_end), 즉, 수평 방향으로 모든 매크로 블록에 대한 처리가 종료되면, 태스크0으로 천이하고 다음 수평 라인의 매크로 블록에 대한 처리가 진행된다.
한편, 전체 매크로 블록에 대한 처리가 종료되지 않고 또한 수평 라인의 매크로 블록에 대한 처리가 종료되지 않고(op_unit!=unit && mx!M), 휘도 성분에 대한 움직임 보상이 종료되고(mc_y_end), 재구성 프레임 저장이 종료되면(recon_write_end), 태스크 T6에서 태스크 T7로 천이한다. 태스크7에서 외부 메모리로부터 휘도 성분의 양자화 계수에 대한 독출이 종료되면 태스크8로 천이한다. 태스크8에서, 색차 성분에 대한 움직임 보상이 종료하고(mc_cbcr_end), 외부 메모리로부터 색차 성분의 양자화 계수에 대한 독출이 종료하고(coef_cbcr_read_end), 색차 성분에 대한 역양자화 및 역이산여현변환이 종료하면(iqidct_y_end), 태스크9로 천이한다.
모든 태스크9에서 태스크6으로의 천이 시에는 색차 성분에 대한 역양자화 및 역이산여현변환 종료(iqidct_cbcr_end)가 필요하다. 뿐만 아니라, 경우에 따라서는 태스크9에서 태스크6으로의 천이를 위해 휘도 성분 기입 종료(py_write_end)가 필요한 경우도 있다. 또한 두 번째 태스크9가 종료되는 시점에서 mx[1:0]=3(mx의 최하위 두 비트가 '11') 상태이다. 따라서 모든 태스크9에서 태스크6으로의 천이를 보장하기 위해서 도시된 바와 같이, iqidct_cbcr_end && (((py_write_end && mx[1:0]==2'b11 || mx[1:0]!=2'b11 || mem_mbx==M) 조건을 만족해야 한다.
한편, 슬라이스 단위로 매크로 블록이 처리되는 것을 지원하기 위해서 태스크 T6에서 대기 상태(Wait)로 천이하도록 하였다. 즉, 처음에 설정한 슬라이드 단위 처리가 완료되었으나(op_unit==op_cnt) 전체 프레임에 대한 처리가 종료되지 않고(mx!=M||nx!=N), 재구성 프레임 기입이 종료되고(recon_write_end), 수평 라인의 마지막 매크로 블록을 고려한 휘도 성분에 대한 움직임 보상이 종료되면(mc_y_end||mx==M), 태스크 T6에서 대기 상태(Wait)로 천이한다.
대기 상태에서 슬라이스 단위 처리 시작 신호(op_start)가 제어 레지스터에 의해 발생하고 수평 방향으로의 모든 매크로 블록의 처리가 종료되면(mx==M), 태스크0으로 천이 한다. 반면, 슬라이스 단위 처리 시작 신호(op_start)가 제어 레지스터에 의해 발생하고 수평 방향으로의 모든 매크로 블록에 대한 처리가 종료되지 않으면(mx!=M), 태스크7로 천이 한다.
도 20은 복호화 인트라 모드시의 태스크 조정자에 대한 상태 기계를 도시한다.
도 20, 도 15b, 및 도 16d를 참조하여, 유휴 상태(IDLE)에서 제어 레지스터에 의한 frame_start 신호에 의해 태스크3으로 천이 한다. 태스크3에서 coef_y_read_end 신호에 의해서 태스크4로 천이하고, coef_cbcr_read_end 및 iqidct_y_end 에 의해서 태스크5로 천이하고, iqidc_cbcr_end 에 의해서 태스크6으로 천이 한다.
복호화 인트라 모드의 경우, 움직임 보상이 수행되지 않는다. 따라서, 태스크6에서 대기 상태, 태스크7로의 천이는 휘도 성분에 대한 움직임 보상(mc_y_end)이 없는 것을 제외하고는 도 19의 복호화 인터 모드 시와 동일하다. 태스크 6에서 유휴 상태 및 태스크 3으로 천이하는 동작은 도 19와 동일하다. 또한 대기 상태에서 태스크 7 및 태스크 3으로 천이하는 동작 역시 도 19와 동일하다.
한편, 도 13에 나타난 태스크 조정자가 생성하는 태스크 제어 신호를 각 데이터 처리 단위들에 따라 태스크별로 요약하면 도 21 내지 도 24와 같으며, 이 같은 태스크 제어 신호에 따른 메모리 푸울, 움직임 추정지, 움직임 보상기, 이산여현변환양자화기의 상태 천이는 도 25 내지 도 28에 도시된 바와 같다.
도 21은 메모리 푸울, 도 22은 움직임 추정기, 도 23은 움직임 보상기, 도 24는 이산여현변환양자화기(DCTQ)를 위한 태스크 제어 신호의 발생을 나타내었다. 도 21에서, horizontal_end 신호는 수평 방향으로 남아 있는 매크로 블록의 개수가 3 이하일 경우 이를 알리기 위한 것이다. 예컨대, VGA 해상도를 지원하는 경우 매크로 블록의 수평 방향 위치는 6 비트로 구성된다. 또한, 수평 방향의 매크로 블록을 4개의 매크로 블록 단위로 구분할 때, 마지막에 남는 매크로 블록의 수는 0, 1, 2, 3의 네 가지 중 한 경우가 된다. 즉, mem_mbx 의 상위 4비트([5:2])가 mxlast의 상위 4비트와 동일하다면(즉, 한 수평 라인에서 남아 있는 매크로 블록의 수가 0 ~ 3개 라면), horizontal_end 신호가 발생한다. 이때, mx는 '111100', '111101', '111110', 또는 111111' 값 중 어느 하나를 가질 것이다. horizontal_end 신호가 발생한 후에는 남아 있는 매크로 블록 수만큼 데이터 메모리에 저장된다. 또한 수평 영역의 모든 매크로 블록에 대한 처리가 종료되거나(mx==M) 전체 매크로 블록에 대한 처리가 종료되면(op_unit==op_cnt), horizontal_end 신호가 소멸하여 다음 수평 라인 또는 다음 프레임의 첫 번째 라인의 매크로 블록에 대한 메모리 액세스가 이루어지도록 한다.
한편, 부호화 인터 모드에 있어서, 태스크6에서, mx의 최하위 두 비트가 '11'일 경우 py_write enable 을 발생하여 이전 프레임의 휘도 블록(PY)에 대한 메모리 기입이 일어나도록 한다. 또, 부호화 인터 모드에 있어서, 태스크9에서, mx의 최하위 두 비트가 '11'일 경우 ccbccr_write enable 을 발생하여 현재 프레임의 색차 블록(CCb, CCr)에 대한 메모리 기입이 일어나도록 한다. 또한 태스크9에서 mx의 최하위 두 비트가 '10'일 경우 cy_write enable 을 발생하여 현재 프레임의 휘도 블록(CY)에 대한 메모리 기입이 일어나도록 한다.
부호화 인트라 모드의 경우, 움직임 추정이 일어나지 않기 때문에 py_write_enable 신호의 발생은 없고 현재 프레임의 휘도 블록(CY) 및 색차 블록(CCb,CCr)에 대한 메모리 기입을 지시하는 신호 cy_write enable, ccbccr_write_enable 신호가 발생한다. 태스크9에서 mx의 최하위 두 비트가 '11'일 경우 ccbccr_write enable 을 발생하여 현재 프레임의 색차 블록(CCb, CCr)에 대한 메모리 기입이 일어나도록 하고, mx의 최하위 두 비트가 '10'일 경우 py_write enable 을 발생하여 현재 프레임의 휘도 블록(CY)에 대한 메모리 기입이 일어나도록 한다.
복호화 인터 모드의 경우, py_write enable 신호가 발생한다. 태스크6에서 mx의 최하위 두 비트가 '11'일 경우 py_write enable 을 발생하여 이전 프레임의 휘도 블록(PY)에 대한 메모리 기입이 일어나도록 한다.
다음 도 22를 참조하여, 태스크 조정자는 me_start enable, mv_start enable을 발생하여 인터 모드에서 움직임 추정기로 하여금 움직임 추정 및 움직임 벡터 전달 태스크를 수행하도록 한다.
다음 도 23을 참조하여, 태스크 조정자는 mc_start enable, mc_cbcr_start enable를 발생하여 움직임 보상기로 하여금 휘도 성분에 대한 움직임 보상 및 색차 성분에 대한 움직임 보상을 수행하도록 한다.
다음 도 24를 참조하여, 태스크 조정자는 부호화 인터/인트라 모드 시에 dctq_y_start enalble, dctq_cbcr_start enable, coef_y_write enalbe, recon_write enable, coef_cbcr_write enable 신호를 발생하여 이산여현변환양자화기에게 제공한다. 한편, 복호화 인터/인트라 모드 시에는 coef_y_read enable, coef_cbcr_read enable, iqidct_y_start enable, iqidct_cbcr_start enable, recon_write enable 등의 신호를 발생하여 이산여현변환기에게 제공한다.
도 25는 메모리 푸울의 상태 천이를 도시한다. 전체적으로 탐색 영역 데이터 메모리(PY), 기준 매크로 블록 휘도 성분 데이터 메모리(CY), 기준 매크로 블록 색차 성분 데이터 메모리(CCb/CCr)에 프레임 메모리로부터 해당 데이터를 액세스하여 저장하는 기능들로 구분되어 있고, 태스크 조정자에서 태스크 제어 신호를 받아 동작하며 태스크 조정자에게 각각의 수행이 완료되었음을 알려 준다. 태스크 조정자로부터 태스크 시작 신호, 예컨대, py_write, cy_write, ccbccr_write 등에 의해 프레임 메모리를 액세스하는 상태가 되고 액세스가 종료되면 그에 상응하는 태스크 종료 신호 py_write_end, cy_write_end, ccbccr_write_end를 발생하고 대기 상태가 된다.
메모리 푸울은 태스크 조정자로부터 태스크 시작 신호를 받아 거기에 상응하는 태스크를 수행하고 태스크 시작 신호에 따라 태스크를 전환한다. 탐색 영역 데이터 메모리(PY)의 경우, 유휴상태(IDLE)에서 부호화 모드 시에는 탐색 영역 데이터 메모리 기입을 지시하는 신호 py_write에 의해, 처음에는 버스트 8로 액세스되고 이후부터는 버스트 16으로 액세스된다(~horizontal_end). 버스트 16으로 액세스 하다가 수평 방향으로 남아 있는 매크로 블록이 3개일 경우(horizontal_end && mxlast[1:0]==2'b11)) 패딩 영역을 고려하여 버스트 16으로 액세스된다. 한편 수평 방향으로 남아 있는 매크로 블록의 수가 0 이면 (mxlast[1:0]==2'b00) 패딩 영역을 고려하여 버스트 4로 액세스되고, 2개 또는 1개 남아 있으면 남아 있으면(mxlast[1:0]==2'b01||2'b10) 패딩 영역을 고려하여 먼저 버스트 8로 액세스되고 이어서 버스트 4로 액세스가 이루어진다.
대기 상태에서 태스크 조정자로부터 신호 cy_write 를 받으면 외부 프레임 메모리로부터 휘도 성분이 기준 매크로 휘도 데이터 메모리에 저장된다. 기준 매크로 블록 휘도 데이터는 버스트 16으로 액세스된다(~horizontal). 버스트 16으로 계속해서 액세스되다가 남아 있는 수평 방향의 매크로 블록이 3개 이하가 되면 horizontal 신호가 발생한다. 이때, 수평 방향으로 남아 있는 매크로 블록이 3개일 경우(horizontal_end && mxlast[1:0]==2'b11)) 패딩 영역을 고려하여 버스트 16으로 액세스된다. 한편 수평 방향으로 남아 있는 매크로 블록의 수가 0이면(mxlast[1:0]==2'b00) 패딩 영역을 고려하여 버스트 4로 액세스되고, 1 또는 2이면(mxlast[1:0]==2'b01||2'b10)) 패딩 영역을 고려하여 먼저 버스트 8로 액세스되고 이어서 버스트 4로 액세스된다.
대기 상태에서 태스크 조정자로부터 신호 ccbccr_write가 발생하면 프레임 메모리로부터 기준 매크로 색차 데이터 메모리에 색차 성분이 저장된다. 색차 성분은 처음에는 버스트 8로 액세스된다(~horizontal). 버스트 8로 액세스가 반복되다가 남아 있는 수평 방향으로의 매크로 블록이 3개 이하가 되면 horizontal 신호가 발생한다. 이때, 수평 방향으로 남아 있는 매크로 블록이 3개일 경우(horizontal_end && mxlast[1:0]==2'b11)) 패딩 영역을 고려하여 버스트 8로 액세스된다. 한편 수평 방향으로 남아 있는 매크로 블록의 수가 0이면(mxlast[1:0]==2'b00) 패딩 영역을 고려하여 버스트 2로(싱글 모드) 액세스되고, 1 또는 2이면(mxlast[1:0]==2'b01||2'b10)) 패딩 영역을 고려하여 먼저 버스트 4로 액세스되고 이어서 버스트 2로 액세스된다.
도 26 내지 도 28은 각각 움직임 추정기, 움직임 보상기와 이산여현변환양자화기(DCTQ)의 상태 천이들을 나타내었다. 도 26을 참조하면, 움직임 추정기는 유휴 상태(IDLE)에서 태스크 조정자로 부터 받은 움직임 추정 시작 신호(me_start)에 의해 움직임 추정을 수행하는 상태(ME op)가 되고, 움직임 추정 종료 신호(me_end)를 발생하여 대기 상태(Wait)가 된다. 대기 상태(Wait)에서 움직임 벡터 기입 시작 신호(mv_write)를 받고서 움직임 벡터를 외부 메모리에 기입하는 동작을 수행하는 상태(MV write)가 되고 그 동작이 끝이 나면 움직임 벡터 기입 종료 신호(mv_write_end)를 생성하고 유휴 상태(IDLE)가 된다.
도 27을 참조하여, 움직임 보상기는 파이프 라인 동작을 효율적으로 하기 위해 휘도와 색차 성분에 대해 움직임 보상을 구분하여 수행한다. 유휴 상태에서 mc_y_start 신호에 의해 휘도 성분에 대하여 움직임 보상을 수행하고, mc_y_end 신호를 발생하여 대기 상태가 된다. 대기 상태에서 mc_cbcr_start 신호에 의해 색차 성분에 대한 움직임 보상을 수행하는 상태(MC Cb/Cr op)가 되고 mc_cbcr_end 신호에 의해 유휴 상태가 된다.
도 28을 참조하여, 이산여현변환양자화기(DCTQ)의 상태는 유휴 상태(IDLE), 휘도 성분에 대한 이산여현변환양자화를 수행하는 상태(DCTQ Y), 휘도 성분에 대한 양자화 계수를 외부 메모리에 저장하는 상태(COEF Y Write), 색차 성분에 대한 이산여현변환양자화를 수행하는 상태(DCTQ Cb/Cr), 색차 성분에 대한 양자화 계수를 외부 메모리에 저장하는 상태(COEF Cb/Cr Write), 재구성 프레임을 저장하는 상태(recon Write), 외부 메모리로부터 양자화 계수를 읽어 들이는 상태(COEF Y Read, COEF Cb/Cr Read), 역양자화역이산여현변환을 수행하는 상태(IQIDCT Y, IQIDCT Cb/Cr), 대기 상태(Wait)를 포함한다. 각 상태들 사이에는 대기 상태(Wait)가 존재하며, 각 상태에서 태스크 종료 신호(부호화 동작:dctq_y_end, coef_y_write_end, recon_write_end, dctq_cbcr_end, coef_cbcr_write_end, 복호화 동작:coef_y_read_end, iqidct_y_end, coef_cbcr_read_end, iqidct_cbcr_end, recon_write_end)에 의해 대기 상태로 천이하고, 대기 상태에서 태스크 시작 신호(부호화 동작:dctq_y_start, coef_y_write, dctq_cbcr_start, recon_write, coef_cbcr_write, 복호화 동작:coef_y_read, iqidct_y_start, coef_cbcr_read, iqidct_cbcr_start, recon_write)에 의해 개개 상태로 천이 한다.
유휴 상태에서 dctq_y_start 신호에 의해 부호화 동작이 개시되고, coef_y_read 신호에 의해 복호화 동작이 개시된다. 부호화 동작의 경우, 색차 성분에 대한 부호화가 종료하고 수평 방향의 매크로 블록에 대한 모든 처리가 끝이 나면 유휴 상태로 천이 하여 다음 라인의 매크로 블록에 대한 처리를 지시하는 dctq_y_start 신호를 기다리게 된다. 복호화 동작의 경우, 재구성 프레임 저장이 종료되면(recon_write_end) 유휴 상태로 천이 한다.
가변장 부호기를 사용할 경우, dctq_y_end 신호가 발생하면 휘도 성분에 대한 양자화 계수에 대한 가변장 부호화가 수행되고, 그 이후에, dctq_cbcr_end 신호가 발생되어 있으면 색차 성분에 대한 양자화 계수에 대한 가변장 부호화가 수행된다. 즉, DCTQ Y 상태가 끝이 나면 곧 바로 가변장 부호기에 의해서 휘도 성분에 대한 DCTQ 태스크 수행 결과(휘도 성분에 대한 양자화 계수)에 대하여 가변장 부호화가 수행된다. 마찬가지로 DCTQ Cb/Cr 상태가 끝이 나면 곧 바로 가변장 부호기에 의해서 색차 성분에 대한 DCTQ 태스크 수행 결과(색차 성분에 대한 양자화 계수)에 대하여 가변장 부호화가 수행된다.
본 발명에 따른 비디오 코덱의 소비 전력을 최소화하기 위해 두 가지 방법을 적용한다. 첫 번째 방법은 부호화와 복호화, 인터와 인트라 모드의 경우 동작하지 않는 데이터 처리 단위들에 클럭을 공급하지 않는 전역 전력 관리(Global Power Management)를 수행하고, 두 번째 방법은 각 데이터 처리 단위들이 태스크별로 파이프 라인 동작을 수행하고 각 데이터 처리 단위들의 수행 시간은 다르기 때문에 수행하는 동안에만 클럭을 공급하는 동적 클럭 게이팅 방법(Dynamic Clock Gating Method)을 사용한다. 각 데이터 처리 단위들의 기능 수행은 태스크 조정자가 생성하는 시작 신호와 수행이 끝남을 알리는 완료 신호 사이의 구간에서 동작을 하므로 도 29와 같이 수행 구간(t1 ~ tn)에서만 클럭을 공급하도록 한다.
시작 신호가 t0 시점에서 활성화 되면 시스템 클록의 하강 에지에서(t1에서) 클록 활성화 신호가 활성화된다. 완료 신호가 t(n-1) 시점에서 활성화되면 다음 시스템 클록의 하강에지(tn)에서 클록 활성화 신호가 불활성화된다. 따라서 t1 ~ t(n) 구간 동안에만(즉, 데이터 처리 단위들이 동작을 수행하는 기간 동안에만) 게이팅된 클록이 발생하고 이 구간에서만 데이터 처리 단위들이 동작을 한다.
이제까지 본 발명에 대하여 그 바람직한 실시예(들)를 중심으로 살펴보았다. 본 발명이 속하는 기술 분야에서 통상의 지식을 가진 자는 본 발명이 본 발명의 본질적인 특성에서 벗어나지 않는 범위에서 변형된 형태로 구현될 수 있음을 이해할 수 있을 것이다. 그러므로 본 개시된 실시예들은 한정적인 관점이 아니라 설명적인 관점에서 고려되어야 한다. 본 발명의 범위는 전술한 설명이 아니라 특허청구범위에 나타나 있으며, 그와 동등한 범위 내에 있는 모든 차이점은 본 발명에 포함된 것으로 해석되어야 할 것이다.
이상의 본 발명에 따른 비디오 코덱의 전체 동작은 태스크 조정자에서 처리하므로, 움직임 추정기, 움직임 보상기, DCTQ는 태스크 조정자에서 각 기능의 수행의 시작을 알리는 명령에 의해서만 동작을 하고, 수행이 완료되면 다음 명령을 대기하고 수행 완료 상태를 조정자에게 알려 주면 되므로 기능이 간단해진다.
또한 각 데이터 처리 단위들에게 공통적인 데이터를 저장하는 메모리 푸울을 구비하여 이들의 크기를 최적화 함으로써, 외부 메모리 대역폭 요구 사항을 최소화 할 수 있다.
또한 데이터 처리 단위들이 동작하는 구간에서만 시스템 클록을 공급하거나, 각 모드에서 동작하지 않는 데이터 처리 단위들에게는 시스템 클록을 공급하지 않음으로서, 시스템의 전력 소모를 줄일 수 있다.
도 1은 통상적인 비디오 코덱을 개략적으로 도시하는 블록도이다.
도 2는 메모리 푸울을 구비한 본 발명의 일 실시예에 따른 비디오 코덱을 도시하는 블록도이다.
도 3은 메모리 푸울 및 태스크 조정자를 구비한 본 발명의 일 실시예에 따른 비디오 코덱을 도시하는 블록도이다.
도 4는 도 3의 비디오 코덱의 부호화 모드시의 파이프 라인 동작을 개략적으로 도시하는 도면이다.
도 5는 일 실시예에 따른 도 2 및 도 3의 메모리 푸울의 탐색 영역 데이터 메모리의 구성을 도시한다.
도 6a 및 도 6b는 각각 일 실시예에 따른 도 2 및 도 3의 메모리 푸울의 기준 매크로 블록 휘도 데이터 메모리 및 기준 매크로 블록 색차 데이터 메모리의 구성을 도시한다.
도 7a 및 도 7b는 각각 일 실시예에 따른 도 2 및 도 3의 메모리 푸울의 움직임 보상된 휘도 및 색차 데이터 메모리의 구성을 도시한다.
도 8은 내부 데이터 메모리 및 데이터 처리 단위들 사이의 상호연결망을 통한 상호 연결관계를 도시하는 블록도이다.
도 9는 도 2 및 도 3의 움직임 추정기를 개략적으로 도시하는 블록도이다.
도 10은 도 2 및 도 3의 움직임 보상기를 개략적으로 도시하는 블록도이다.
도 11은 도 2 및 도 3의 이산여현변환양자화기를 개략적으로 도시하는 블록도이다.
도 12는 도 2 및 도 3의 메모리 푸울을 개략적으로 도시하는 블록도이다.
도 13은 태스크 조정자 및 데이터 처리 단위들 사이의 주고받는 신호를 개략적으로 도시한다.
도 14a 및 도 14b는 부호화/인터 모드 및 부호화/인트라 모드시의 파이프 라인을 도시하고, 도 15a 및 도 15b는 복호화/인터 모드 및 복화화/인트라 모드의 파이프 라인을 도시한다.
도 16a 내지 도 16d는 도 14a 및 도 14b, 도 15a 및 도 15c의 각 모드별 파이프 라인 동작에서 태스크 흐름을 개략적으로 도식화한 태스크 흐름도이다.
도 17은 인터 부호화 모드, 도 18은 인트라 부호화 모드, 도 19는 인터 복호화 모드, 도 20은 인트라 복호화 모드 경우의 태스크 조정자의 상태 천이를 도시한다.
도 21은 메모리 푸울, 도 22는 움직임 추정기, 도 23은 움직임 보상기, 도 24는 이산여현변환양자화기(DCTQ)를 위한 태스크 제어 신호의 발생을 도시한다.
도 25는 메모리 푸울의 상태 천이를 도시한다.
도 26은 움직임 추정기의 상태 천이를 도시한다.
도 27은 움직임 보상기의 상태 천이를 도시한다.
도 28은 이산여현변환양자화기의 상태 천이를 도시한다.
도 29는 데이터 처리 단위들이 동작하는 동안에만 시스템 클록을 제공하는 동적 클록 게이팅 방법(Dynamic Clock Gating Method)을 도시한다.

Claims (24)

  1. 복수 개의 데이터 처리 단위들과; 그리고,
    상기 복수 개의 데이터 처리 단위들 각각의 복수 개의 동작을 태스크별로 구별하여 이들이 파이프 라인 동작을 하도록 제어하는 태스크 조정자를 포함하는 것을 특징으로 하는 데이터 처리 시스템
  2. 제 1 항에 있어서,
    상기 태스크 조정자는 태스크 시작 신호들을 상기 데이터 처리 단위들에게 전달하여 고유의 태스크들을 수행하도록 하고 상기 데이터 처리 단위들로부터 고유의 태스크 종료 신호들을 전달받고 태스크를 전환하고,
    상기 데이터 처리 단위들은 상기 태스크 조정자로부터 받은 상기 태스크 시작 신호들에 의해 태스크를 수행하고, 태스크 처리가 끝이 나면 상기 태스크 조정자에게로 상기 태스크 종료 신호들을 전달하여 태스크 처리가 종료되었음을 알리는 것을 특징으로 하는 데이터 처리 시스템.
  3. 제 2 항에 있어서,
    상기 데이터 처리 시스템의 기능을 설정하기 위한 제어 레지스터와;
    상기 데이터 처리 단위들의 동작에 필요한 데이터를 저장하는 내부 메모리 푸울을 더 포함하며,
    상기 복수 개의 데이터 처리 단위들은 MPEG 동화상 부호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  4. 제 3 항에 있어서,
    상기 내부 메모리 푸울은:
    상기 움직임 보상기에 의해 보상된 휘도 성분 및 색차 성분을 저장하는 움직임 보상된 휘도 및 색차 데이터 메모리들과;
    프레임 메모리로부터 현재 입력된 프레임의 휘도 및 색차 성분을 읽어들여 저장하는 기준 매크로 블록 휘도 및 색차 데이터 메모리들과; 그리고,
    상기 프레임 메모리로부터 상기 현재 입력된 프레임 이전의 재구성된 프레임으로부터 휘도 성분을 읽어들여 저장하는 탐색 영역 데이터 메모리를 포함하며,
    상기 메모리 푸울은 태스크 조정자로부터 받은 프레임 메모리 제어 신호에 응답하여 외부 프레임 메모리로부터 필요한 데이터를 상기 데이터 메모리들에 저장하는 태스크를 수행하고,
    상기 메모리 푸울은 상기 데이터 처리 단위들이 제공하는 데이터 메모리 제어 신호에 응답하여 상기 데이터 메모리들에 저장된 데이터를 상기 데이터 처리 단위들에 제공하는 것을 특징으로 하는 데이터 처리 시스템.
  5. 제 4 항에 있어서,
    상기 움직임 추정기와 움직임 보상기는 상기 탐색 영역 데이터 메모리를 공유하고,
    상기 이산여현변환기와 역이산여현변환기는 상기 움직임 보상된 데이터 메모리를 공유하고,
    상기 움직임 추정기와 이산여현변환기는 상기 기준 매크로 블록 데이터 메모리를 공유하는 것을 특징으로 하는 데이터 처리 시스템.
  6. 제 4 항에 있어서,
    상기 움직임 추정기는 움직임 추정 태스크 및 움직임 벡터 전달 태스크를 수행하고,
    상기 움직임 보상기는 휘도 성분에 대한 움직임 보상 태스크 및 색차 성분에 대한 움직임 보상 태스크를 수행하고,
    상기 이산여현변환양자화기는 휘도 성분에 대한 DCTQ 태스크, 색차 성분에 대한 DCTQ 태스크, 및 재구성 프레임 기입 태스크를 수행하고,
    가변장 부호기/복호기에 의해 또는 소프트웨어적으로 휘도 성분에 대한 가변장 부호화/복호화 태스크 및 색차 성분에 대한 가변장 부호화/복호화 태스크가 수행되는 것을 특징으로 하는 데이터 처리 시스템.
  7. 제 2 항 또는 제 4 항에 있어서,
    상기 데이터 처리 단위들은 상기 태스크 시작 신호 및 상기 태스크 종료 신호 사이에서만 시스템 클록을 공급받는 것을 특징으로 하는 데이터 처리 시스템.
  8. 제 4 항에 있어서,
    상기 제어 레지스터에 의해 상기 데이터 처리 시스템이 부호화 인트라 모드로 동작할 경우, 상기 움직임 추정기 및 움직임 보상기에는 시스템 클록을 공급하지 않고, 복호화 인터 모드로 동작할 경우 움직임 추정기에게 시스템 클록을 공급하지 않고, 복호화 인트라 모드로 동작할 경우 상기 메모리 푸울, 움직임 추정기 및 움직임 보상기에게 시스템 클록을 공급하지 않는 것을 특징으로 하는 데이터 처리 시스템.
  9. MPEG 동화상 부호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기를 포함하는 데이터 처리 단위들과;
    상기 데이터 처리 단위들이 데이터를 공유하도록 공통 데이터를 저장하기 위한 내부 메모리 푸울과;
    상기 복수 개의 데이터 처리 단위들 각각의 복수 개의 동작을 태스크별로 구별하고 이들이 파이프 라인 동작을 하도록 제어하는 태스크 조정자와; 그리고,
    상기 데이터 처리 시스템의 기능을 설정하는 제어 레지스터를 포함하는 비디오 코덱.
  10. 제 9 항에 있어서,
    상기 내부 메모리 푸울은:
    상기 움직임 보상기에 의해 보상된 휘도 성분 및 색차 성분을 저장하는 움직임 보상된 휘도 데이터 메모리 및 움직임 보상된 색차 데이터 메모리와;
    프레임 메모리로부터 현재 입력된 프레임의 휘도 및 색차 성분을 읽어들여 저장하는 기준 매크로 블록 휘도 데이터 메모리 및 기준 매크로 블록 색차 데이터 메모리와; 그리고,
    상기 프레임 메모리로부터 상기 현재 입력된 프레임 이전의 재구성된 프레임으로부터 휘도 성분을 읽어들여 저장하는 탐색 영역 데이터 메모리 포함하는 내부 데이터 메모리와;
    상기 각 데이터 처리 단위들로부터 내부 데이터 메모리 제어 신호를 받아 필요한 데이터를 각 데이터 처리 단위들에게 제공하는 내부 데이터 메모리 제어 회로와;
    상기 프레임 메모리를 액세스하여 상기 기준 매크로 블록 데이터 메모리와 상기 탐색 영역 데이터 메모리에 데이터를 저장하는 것을 제어하는 프레임 메모리 제어 회로와; 그리고
    상기 태스크 조정자로부터 수행해야 될 태스크 시작 신호를 받아 상기 프레임 메모리에 전달하여 태스크를 수행하도록 하고 태스크 수행이 완료되면 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 태스크 제어 회로를 포함하는 것을 특징으로 하는 비디오 코덱.
  11. 제 9 항 또는 제 10 항에 있어서,
    상기 태스크 조정자는 태스크 시작 신호를 발생시켜 상기 데이터 처리 단위들이 태스크를 수행하도록 지시하고,
    상기 데이터 처리 단위들 및 상기 메모리 푸울은 상기 태스크 조정자로부터 받은 상기 태스크 시작 신호에 의해 태스크를 수행하는 동작 상태가 되고, 지시 받은 태스크 처리가 끝이 나면 상기 태스크 조정자에게로 태스크 종료 신호를 전달하여 다음 태스크 지시 신호를 기다리는 대기 상태가 되는 것을 특징으로 하는 비디오 코덱.
  12. 제 10 항에 있어서,
    상기 움직임 추정기는:
    상기 탐색 영역 데이터 메모리와 상기 기준 매크로 블록 휘도 메모리로부터 휘도 매크로 블록을 읽어 내어 움직임 추정을 수행하여 움직임 벡터를 계산하는 움직임 추정 엔진과;
    상기 움직임 벡터를 상기 움직임 보상기와 상기 가변장 부호기에 전달하는 움직임 벡터 전달기와;
    상기 태스크 조정자로부터 상기 태스크 시작 신호를 받고 상기 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 움직임 추정기 태스크 제어 회로와; 그리고,
    상기 탐색 영역 데이터 메모리와 상기 기준 매크로 블록 휘도 메모리로부터 휘도 성분 데이터를 읽어 내기 위한 내부 데이터 메모리 제어 신호를 발생하는 움직임 추정기 내부 데이터 메모리 읽기 제어 회로를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  13. 제 9 항 또는 제 12 항에 있어서,
    상기 움직임 보상기는:
    부호화 시에는 상기 움직임 추정기로부터 복호화 시에는 상기 가변장 복호기로부터 상기 움직임 벡터를 받아 해석하는 움직임 벡터 해석 회로와;
    상기 해석된 움직임 벡터를 기반으로 휘도 성분 및 색차 성분에 대하여 움직임 보상을 수행하는 움직임 보상 엔진과;
    상기 태스크 조정자로부터 상기 태스크 시작 신호를 받고 상기 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 움직임 보상기 태스크 제어 회로와;
    상기 탐색 영역 데이터 메모리로부터 데이터를 읽기 위한 내부 데이터 메모리 제어 신호 및 상기 움직임 보상기에 의해 움직임 보상된 휘도 성분 데이터와 움직임 보상된 색차 성분 데이터를 상기 움직임 보상된 데이터 메모리들에 쓰기 위한 내부 데이터 메모리 제어 신호를 발생시키는 움직임 보상기 내부 데이터 메모리 읽기/쓰기 제어 회로와; 그리고,
    상기 프레임 메모리로부터 색차 성분의 움직임 보상을 위해 색차 성분 데이터를 읽기 위한 프레임 메모리 읽기 제어 신호를 발생시키기 위한 프레임 메모리 읽기 제어 회로를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  14. 제 9 항 또는 제 12 항에 있어서,
    상기 이산여현변환양자화기(DCTQ)는:
    상기 태스크 조정자로부터 태스크 시작 신호를 받고 태스크의 처리 종료를 상기 태스크 조정자에게 알리는 상기 태스크 종료 신호를 전달하는 DCTQ 태스크 제어 회로와;
    기준 매크로 블록 데이터 메모리들로부터 휘도 및 색차 성분 데이터 및 움직임 보상된 데이터 메모리들로부터 움직임 보상된 휘도 및 색차 데이터를 읽기 위한 내부 데이터 메모리 제어 신호를 발생시키는 DCTQ 내부 데이터 메모리 읽기 제어 회로와; 그리고,
    재구성된 프레임을 상기 프레임 메모리에 저장하기 위한 DCTQ 프레임 메모리 쓰기 제어 회로를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  15. 제 13 항에 있어서,
    상기 이산여현변환양자화기(DCTQ)는:
    상기 태스크 조정자로부터 상기 태스크 시작 신호를 받고 태스크의 처리 종료를 알리는 상기 태스크 종료 신호를 상기 태스크 조정자에게 전달하는 DCTQ 태스크 제어 회로와;
    기준 매크로 블록 색차 데이터 메모리로부터 색차 성분 데이터 및 움직임 보상된 데이터 메모리들로부터 움직임 보상된 휘도 및 색차 데이터를 읽기 위한 내부 데이터 메모리 제어 신호를 발생시키는 DCTQ 내부 데이터 메모리 읽기 제어 회로와; 그리고,
    재구성된 프레임을 상기 프레임 메모리에 저장하기 위한 DCTQ 프레임 메모리 쓰기 제어 회로를 포함하는 것을 특징으로 하는 데이터 처리 시스템.
  16. 제 9 또는 제 10 항에 있어서,
    상기 데이터 처리 단위들은 상기 태스크 시작 신호 및 상기 태스크 종료 신호 사이에서만 시스템 클록을 공급받는 것을 특징으로 하는 비디오 코덱.
  17. 제 9 항에 있어서,
    데이터 처리 단위들은 가변장 부호기/복호기를 더 포함하는 것을 특징으로 하는 비디오 코덱.
  18. 제 9 항에 있어서,
    상기 제어 레지스터에 의해 상기 데이터 처리 시스템이 부호화 인트라 모드로 동작할 경우, 상기 움직임 추정기 및 움직임 보상기에는 시스템 클록을 공급하지 않고, 복호화 인터 모드로 동작할 경우 움직임 추정기에게 시스템 클록을 공급하지 않고, 복호화 인트라 모드로 동작할 경우 상기 메모리 푸울, 움직임 추정기 및 움직임 보상기에게 시스템 클록을 공급하지 않는 것을 특징으로 하는 비디오 코덱.
  19. 제 13 항에 있어서,
    상기 움직임 추정기는 움직임 추정 태스크 및 움직임 벡터 전달 태스크를 수행하고,
    상기 움직임 보상기는 휘도 성분에 대한 움직임 보상 태스크 및 색차 성분에 대한 움직임 보상 태스크를 수행하고,
    상기 이산여현변환양자화기는 휘도 성분에 대한 DCTQ 태스크, 색차 성분에 대한 DCTQ 태스크, 및 재구성 프레임 기입 태스크를 수행하고,
    상기 메모리 푸울의 프레임 메모리 제어회로는 프레임 메모리로부터 상기 메모리 푸울의 데이터 메모리로의 이전 프레임의 휘도 성분 기입 태스크, 현재 프레임의 휘도 성분 기입 태스크 및 색차 성분 기입 태스크를 제어하고,
    가변장 부호기/복호기에 의해 또는 소프트웨어적으로 휘도 성분에 대한 가변장 부호화/복호화 태스크 및 색차 성분에 대한 가변장 부호화/복호화 태스크가 수행되는 것을 특징으로 하는 비디오 코덱.
  20. MPEG 동화상 부호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기, 그리고 가변장 부호기/가변장 복호기를 포함하는 데이터 처리 단위들과; 그리고,
    상기 데이터 처리 단위들이 데이터를 공유하도록 공통 데이터를 저장하기 위한 내부 메모리 푸울을 포함하되,
    상기 내부 메모리 푸울은 상기 움직임 보상기에 의해 보상된 휘도 성분 및 색차 성분을 저장하는 움직임 보상된 휘도 데이터 메모리 및 움직임 보상된 색차 데이터 메모리와;
    프레임 메모리로부터 현재 입력된 프레임의 휘도 및 색차 성분을 읽어들여 저장하는 기준 매크로 블록 휘도 데이터 메모리 및 기준 매크로 블록 색차 데이터 메모리와;
    상기 프레임 메모리로부터 상기 현재 프레임 이전의 재구성된 프레임으로부터 휘도 성분을 읽어들여 저장하는 탐색 영역 데이터 메모리를 포함하고,
    상기 움직임 추정기와 상기 움직임 보상기는 상기 탐색 영역 데이터 메모리를 공유하고, 상기 이산여현변환기 및 역이산여현변환기는 상기 움직임 보상된 데이터 메모리를 공유하고, 상기 움직임 추정기 및 상기 이산여현변환기는 상기 기준 매크로 블록 데이터 메모리를 공유하는 것을 특징으로 하는 비디오 코덱.
  21. 제 20 항에 있어서,
    상기 복수 개의 데이터 처리 단위들 각각의 복수 개의 동작을 태스크별로 구별하고 이들이 파이프 라인 동작을 하도록 제어하는 태스크 조정자를 더 포함하되,
    상기 태스크 조정자는 태스크 시작 신호를 상기 데이터 처리 단위들에게 전달하여 태스크를 수행하도록 하고 상기 데이터 처리 단위들로부터 태스크 종료 신호를 전달받고 태스크를 전환하고,
    상기 데이터 처리 단위들은 상기 태스크 조정자로부터 받은 상기 태스크 시작 신호에 의해 태스크를 수행하고, 태스크 처리가 끝이 나면 상기 태스크 조정자에게로 상기 태스크 종료 신호를 전달하여 태스크 처리가 종료되었음을 알리는 것을 특징으로 하는 비디오 코덱.
  22. MPEG 동화상 부호화를 위한 이산여현변환기/역이산여현변환기 및 양자화기/역양자화기를 포함하는 이산여현변환양자화기(DCTQ), 움직임 추정기, 움직임 보상기, 그리고 가변장 부호기/가변장 복호기를 포함하는 데이터 처리 단위들을 포함하는 비디오 코덱의 데이터 처리 방법에 있어서:
    각 데이터 처리 단위들은 태스크 조정자로부터 받은 태스크 시작 신호에 의해서 지시 받은 태스크를 수행하고, 태스크 수행이 종료되면 태스크 종료를 알리는 태스크 종료 신호를 발생하여 다음 태스크 시작 신호를 기다리는 대기 상태가 되고,
    상기 태스크 조정자는 태스크 완료 신호를 받고 태스크를 전환하는 것을 특징으로 하는 데이터 처리 방법.
  23. 제 22 항에 있어서,
    상기 태스크 시작 신호 및 상기 태스크 종료 신호 발생 사이에만 상기 데이터 처리단위들이 시스템 클록을 공급받는 것을 특징으로 하는 데이터 처리 방법.
  24. 제 22 항에 있어서,
    상기 제어 레지스터에 의해 상기 데이터 처리 시스템이 부호화 인트라 모드로 동작할 경우, 상기 움직임 추정기 및 움직임 보상기에는 시스템 클록을 공급하지 않고, 복호화 인터 모드로 동작할 경우 움직임 추정기에게 시스템 클록을 공급하지 않고, 복호화 인트라 모드로 동작할 경우 상기 메모리 푸울, 움직임 추정기 및 움직임 보상기에게 시스템 클록을 공급하지 않는 것을 특징으로 하는 데이터 처리 방법.
KR20030100578A 2003-12-30 2003-12-30 데이터 처리 시스템 및 데이터 처리 방법 KR101160640B1 (ko)

Priority Applications (4)

Application Number Priority Date Filing Date Title
KR20030100578A KR101160640B1 (ko) 2003-12-30 2003-12-30 데이터 처리 시스템 및 데이터 처리 방법
US11/018,762 US7986734B2 (en) 2003-12-30 2004-12-22 Video codecs, data processing systems and methods for the same
JP2004375342A JP2005198289A (ja) 2003-12-30 2004-12-27 データ処理システムおよびデータ処理方法
CN2004100757395A CN1652605B (zh) 2003-12-30 2004-12-30 视频编解码器、数据处理系统以及用于上述系统的方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR20030100578A KR101160640B1 (ko) 2003-12-30 2003-12-30 데이터 처리 시스템 및 데이터 처리 방법

Publications (2)

Publication Number Publication Date
KR20050068770A true KR20050068770A (ko) 2005-07-05
KR101160640B1 KR101160640B1 (ko) 2012-06-28

Family

ID=34709277

Family Applications (1)

Application Number Title Priority Date Filing Date
KR20030100578A KR101160640B1 (ko) 2003-12-30 2003-12-30 데이터 처리 시스템 및 데이터 처리 방법

Country Status (4)

Country Link
US (1) US7986734B2 (ko)
JP (1) JP2005198289A (ko)
KR (1) KR101160640B1 (ko)
CN (1) CN1652605B (ko)

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100821922B1 (ko) * 2006-11-28 2008-04-15 전자부품연구원 미디어 디코딩용 국부 메모리 관리 장치
KR100900058B1 (ko) * 2007-04-09 2009-06-01 아주대학교산학협력단 다양한 멀티미디어 코덱에 사용되는 움직임 추정 연산 방법및 그 연산회로
KR101244309B1 (ko) * 2005-07-15 2013-03-18 삼성전자주식회사 영상 데이터 부호화/복호화 방법 및 장치
US8451901B2 (en) 2008-11-11 2013-05-28 Electronics And Telecommunications Research Institute High-speed motion estimation apparatus and method
KR101378804B1 (ko) * 2006-06-13 2014-03-27 라피스 세미컨덕터 가부시키가이샤 동화상 처리장치

Families Citing this family (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8761259B2 (en) * 2005-09-22 2014-06-24 Qualcomm Incorporated Multi-dimensional neighboring block prediction for video encoding
KR20080008137A (ko) * 2006-07-19 2008-01-23 삼성전자주식회사 영상 복원 장치 및 방법
ATE484150T1 (de) * 2006-08-21 2010-10-15 Nxp Bv Verarbeitung von bildsignalen mit bewegungskompensation
US8121196B2 (en) * 2006-11-02 2012-02-21 Corel Corporation Method and apparatus for multi-threaded video decoding
US8199796B2 (en) * 2006-12-22 2012-06-12 Newport Media, Inc. Physical layer aware video encoding for mobile TV applications
JP4991453B2 (ja) * 2007-08-30 2012-08-01 キヤノン株式会社 符号化処理装置、符号化処理システム及び符号化処理装置の制御方法
US8103855B2 (en) * 2007-09-22 2012-01-24 Navosha Corporation Linking functional blocks for sequential operation by DONE and GO components of respective blocks pointing to same memory location to store completion indicator read as start indicator
CN101710994B (zh) * 2009-12-17 2012-12-26 无锡中星微电子有限公司 一种用于视频解码的方法和系统
CN108337507A (zh) * 2017-01-19 2018-07-27 晨星半导体股份有限公司 用于高效率视频编码装置的排程方法
CN113015003B (zh) * 2021-03-08 2022-11-25 展讯通信(上海)有限公司 视频帧缓存方法和设备

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3546437B2 (ja) * 1993-03-31 2004-07-28 ソニー株式会社 適応形ビデオ信号演算処理装置
US5463422A (en) * 1993-10-13 1995-10-31 Auravision Corporation Data processing technique for limiting the bandwidth of data to be stored in a buffer
US5596369A (en) * 1995-01-24 1997-01-21 Lsi Logic Corporation Statistically derived method and system for decoding MPEG motion compensation and transform coded video data
DE19524688C1 (de) * 1995-07-06 1997-01-23 Siemens Ag Verfahren zur Dekodierung und Kodierung eines komprimierten Videodatenstroms mit reduziertem Speicherbedarf
KR100262453B1 (ko) * 1996-08-19 2000-08-01 윤종용 비디오데이터처리방법및장치
KR19980081499A (ko) 1997-04-17 1998-11-25 모리시다요이치 메모리 내장 데이터 처리장치 및 처리시스템
JP3007612B2 (ja) 1997-09-01 2000-02-07 松下電器産業株式会社 マイクロコントローラ、データ処理システム及びタスクスイッチの制御方法
US6243735B1 (en) 1997-09-01 2001-06-05 Matsushita Electric Industrial Co., Ltd. Microcontroller, data processing system and task switching control method
JPH118853A (ja) 1998-06-19 1999-01-12 Mega Chips:Kk 画像圧縮伸張装置
JP3544524B2 (ja) 1998-06-25 2004-07-21 松下電器産業株式会社 画像処理装置
WO2000033199A1 (fr) * 1998-12-03 2000-06-08 Hitachi, Ltd. Circuit de traitement de signal
EP1243141B1 (en) * 1999-12-14 2011-10-19 Scientific-Atlanta, LLC System and method for adaptive decoding of a video signal with coordinated resource allocation
KR100418437B1 (ko) 2001-12-24 2004-02-14 (주)씨앤에스 테크놀로지 멀티미디어 신호처리를 위한 영상복원 프로세서
KR100450844B1 (ko) * 2002-02-21 2004-10-01 (주)씨앤에스 테크놀로지 비디오 코덱 프로세서의 아키텍쳐

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101244309B1 (ko) * 2005-07-15 2013-03-18 삼성전자주식회사 영상 데이터 부호화/복호화 방법 및 장치
KR101378804B1 (ko) * 2006-06-13 2014-03-27 라피스 세미컨덕터 가부시키가이샤 동화상 처리장치
KR100821922B1 (ko) * 2006-11-28 2008-04-15 전자부품연구원 미디어 디코딩용 국부 메모리 관리 장치
KR100900058B1 (ko) * 2007-04-09 2009-06-01 아주대학교산학협력단 다양한 멀티미디어 코덱에 사용되는 움직임 추정 연산 방법및 그 연산회로
US8451901B2 (en) 2008-11-11 2013-05-28 Electronics And Telecommunications Research Institute High-speed motion estimation apparatus and method

Also Published As

Publication number Publication date
US7986734B2 (en) 2011-07-26
KR101160640B1 (ko) 2012-06-28
CN1652605B (zh) 2010-04-28
JP2005198289A (ja) 2005-07-21
CN1652605A (zh) 2005-08-10
US20050149690A1 (en) 2005-07-07

Similar Documents

Publication Publication Date Title
KR101160640B1 (ko) 데이터 처리 시스템 및 데이터 처리 방법
KR100232992B1 (ko) 동화상 디코딩 회로
TWI415446B (zh) 用於視頻壓縮的並行處理裝置
JP5031976B2 (ja) ディジタルビデオデータの処理
US20050147174A1 (en) Encoding apparatus and method of same and decoding apparatus and method of same
JPH05268590A (ja) 動画像符号化復号化回路
JPH08123953A (ja) 画像処理装置
KR20070033417A (ko) 디블록킹 필터링을 수행하는 방법 및 시스템
CN102769753B (zh) H264编码器及编码方法
JP3544524B2 (ja) 画像処理装置
KR100266338B1 (ko) 동화상 압축 유니트 및 방법
JP4822940B2 (ja) 画像処理装置及び画像処理方法
KR100681242B1 (ko) 동영상 복호화 방법, 동영상 복호화 장치 및 이를 가지는시스템 온 칩 시스템
JP2836902B2 (ja) マルチプロセッサ型動画像符号化装置及びバス制御方法
US9300975B2 (en) Concurrent access shared buffer in a video encoder
JPH089385A (ja) 動画像符号化装置
US6097843A (en) Compression encoding apparatus, encoding method, decoding apparatus, and decoding method
US20050080784A1 (en) Data processing system
WO2002087248A2 (en) Apparatus and method for processing video data
US6996185B2 (en) Image signal decoding apparatus
JPH0723389A (ja) 画像処理装置
KR101419378B1 (ko) 영상 처리를 위한 시스템
JP2008136177A (ja) 動き検出装置、MOS(metal−oxidesemiconductor)集積回路および映像システム
KR20080090238A (ko) 대역폭 인식 움직임 보상 장치 및 그 방법
Li et al. An efficient video decoder design for MPEG-2 MP@ ML

Legal Events

Date Code Title Description
AMND Amendment
A201 Request for examination
E902 Notification of reason for refusal
AMND Amendment
E601 Decision to refuse application
AMND Amendment
J201 Request for trial against refusal decision
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20100511

Effective date: 20111229

S901 Examination by remand of revocation
E902 Notification of reason for refusal
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20150601

Year of fee payment: 4

LAPS Lapse due to unpaid annual fee