KR20050070984A - 비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법 - Google Patents

비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법 Download PDF

Info

Publication number
KR20050070984A
KR20050070984A KR1020030101714A KR20030101714A KR20050070984A KR 20050070984 A KR20050070984 A KR 20050070984A KR 1020030101714 A KR1020030101714 A KR 1020030101714A KR 20030101714 A KR20030101714 A KR 20030101714A KR 20050070984 A KR20050070984 A KR 20050070984A
Authority
KR
South Korea
Prior art keywords
predetermined unit
data
specific order
unit data
hardware
Prior art date
Application number
KR1020030101714A
Other languages
English (en)
Other versions
KR100575962B1 (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 KR1020030101714A priority Critical patent/KR100575962B1/ko
Priority to US10/936,187 priority patent/US20050141608A1/en
Publication of KR20050070984A publication Critical patent/KR20050070984A/ko
Application granted granted Critical
Publication of KR100575962B1 publication Critical patent/KR100575962B1/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
    • 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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • 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

Landscapes

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

Abstract

1. 청구범위에 기재된 발명이 속하는 기술분야
본 발명은 이동통신 단말기에 있어서 멀티미디어 데이터 서비스에 관한 것으로 특히, 이산 코사인 변환(DCT : Discrete Cosine Transform)을 이용한 비디오 인코더/디코더에 관한 것임.
2. 발명이 해결하려고 하는 기술적 과제
본 발명은 기능별 하드웨어 모듈로 구성된 비디오 처리 장치에서 동작 유닛 단위로 데이터 처리를 하지 않고 각각의 하드웨어 모듈을 병렬적으로 동작시켜 하드웨어 모듈의 유휴 동작을 줄이는 파이프 라인 동작 방법을 제공하는데 그 목적이 있음.
3. 발명의 해결 방법의 요지
본 발명은, 다수의 하드웨어 모듈을 포함하여 구성된 비디오 처리 장치의 파이프 라인 동작 방법에 있어서, 비디오 처리 과정에서 필요한 기능별로 상기 다수의 하드웨어 모듈을 구성하는 제 1 단계; 상기 제 1 단계에서 구성된 기능별 하드웨어 모듈에 대해, 상기 기능별 하드웨어 모듈의 입력되는 데이터의 흐름 순으로 배열하고, 배열된 제 1 하드웨어 모듈에 대해 제 1 소정 단위의 데이터를 입력하는 제 2 단계; 상기 제 1 하드웨어 모듈이 입력된 소정 단위의 데이터를 처리하면, 상기 제 1 하드웨어 모듈은 처리된 데이터를 제 2 하드웨어 모듈로 전달하고 다음 순서의 소정 단위의 데이터를 입력받는 제 3 단계; 상기 제 3 단계를 상기 기능별 하드웨어 모듈이 모두 동작하기까지, 하드웨어 모듈과 입력되는 소정 단위의 데이터의 순서를 늘이면서 반복하는 제 4 단계; 상기 각각의 기능별 하드웨어 모듈은, 상기 데이터 흐름 순으로 바로 앞선 하드웨어 모듈에서 바로 앞선 단계에서 처리한 데이터를 입력받아 처리하는 제 5 단계; 및 상기 제 5 단계의 과정을 입력받을 소정 단위의 데이터가 없을 때까지 반복하는 제 6 단계를 포함함.
4. 발명의 중요한 용도
본 발명은 비디오 처리 장치 등에 이용됨.

Description

비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른 비트율 제어 방법{Pipeline Operation Method of Video Management Apparatus and Bit Rate Control Method}
본 발명은 이동통신 단말기에 있어서 멀티미디어 데이터 서비스에 관한 것으로 특히, 이산 코사인 변환(DCT : Discrete Cosine Transform)을 이용한 비디오 인코더/디코더에 관한 것이다.
양방향 동영상 통화를 할 수 있는 이동통신 단말기에서는 고정 비트율로 통신을 할 수 있도록 비디오 인코더에서 비트율을 제어하고 있다. 현재 3GPP(3rd Generation Partnership Project)나 국내 이동통신 사업자들의 경우 동영상 인코더로서 H.263과 MPEG(Motion Pcture Ecperts Group) 4를 사용하도록 표준안을 세워 놓고 권고하고 있다. 이들 표준 비디오 인코더의 압축 원리는 이산코사인변환과 움직임 예측에 기초하고 있기 때문에 영상의 특성에 따라 압축률이 달라지는데, 이에 따른 기민한 비트율 제어 기술은 구현이 매우 어렵다. 따라서, 표준 스펙에는 양자화 단계값의 변화를 통해 영상의 압축률을 제어할 수 있도록 하는 방안을 권고하고 있다.
도 1 은 일반적인 H.263/MPEG 비디오 인코더의 일실시예 구성도이다.
도 1 에 도시된 바와 같이, 일반적인 H.263/MPEG 비디오 인코더는 프레임 단위의 영상 정보를 입력받아 이를 저장하는 원본 저장부(101), 원본 저장부(101)로부터의 영상 정보를 첫 프레임은 바로 DCT부(104)로 전달하고 나머지 프레임인 경우는 엠시디 저장부(114)에 저장된 움직임 보상된 정보와의 연산(102)을 통해 DCT부(104)로 전달하는 제 1 스위치(103), 이산 코사인 변환을 수행하는 DCT부(104), DCT부의 출력을 양자화하는 양자화부(Q)(105), 양자화된 데이터를 역양자화하는 역양자화부(IQ)(106), 역양자화부(106)의 출력을 역 이산 코사인 변환하는 IDCT부(107), 엠시디 저장부(114)에 저장된 이전 프레임(n-1)의 움직임 보상된 정보와 IDCT부(107)를 통한 디코딩된 당 프레임(n)의 디코딩 정보를 결합하는 결합기(110), 다음 프레임(n)을 위한 디코딩 정보를 저장하는 리콘 저장부(Recon Memory)(111), 리콘 저장부(111)에 저장된 이전 프레임(n-1)의 디코딩 정보와 당 프레임(n)의 원본 영상을 입력받아 움직임 예측을 위한 움직임 벡터와 디퍼렌셜 이미지를 출력하는 움직임 예측부(112), 리콘 저장부(111)에 저장된 이전 프레임(n-1)의 디코딩 정보에 움직임 예측부(112)의 출력을 받아 움직임을 보상하는 움직임 보상부(113), 움직임 보상된 이전 프레임(n-1)을 저장하는 엠시디 저장부(Mced Memory)(114), 입력되는 영상 정보가 인트라(Intra)/인터(Inter) 및 스킵(Skipped)임에 따라 비트율 제어를 위한 양자화값을 양자화부(Q)(105)로 전달하는 QP저장부(116), 양자화부(Q)(105)로부터의 인코딩된 데이터를 저장하는 ODTQ저장부(108) 및 자주 나오는 값을 작은 비트로 할당하고 가끔 나오는 값일수록 큰 비트로 할당하도록 하는 엔트로피 코딩을 위한 VLC(Variable Length Coding)부(109)를 포함한다.
이와 같은 구성에서 양자화부(105)에서의 양자화값이 결정됨에 따라, 양자화값보다 작은 값은 모두 '0'이 된다. 즉, 양자화값은 일정한 범위의 값을 가지면서, 이산 코사인 변환을 거친 블럭 내의 계수들을 나누어서 그 몫을 취하게 하는 값으로, 그 값이 커지면 오차가 커져서 화질이 저하되지만 압축 효과는 크게 된다. 반대로 그 값이 작아지면 오차가 작아 화질이 저하되지 않지만 압축 효과는 줄어들게 된다. 따라서, 이러한 양자화값을 어떻게 결정하여 어느 부분까지를 손실로 처리하느냐 하는 결정이 필요하다.
또한, H.263 비트 스트림으로 출력되는 도 1 의 출력을 고려하면, H.263 코덱 표준안에 의해 비트율 제어를 하기 위해서는 최소 매크로 블럭 단위에서부터 또는 그 이상의 단위로 인코딩을 하면서 주어진 대역폭에서 할당한 비트율과의 차이를 계산하여 양자화값을 가감하도록 한다.
이와 같은 종래의 비디오 인코더는 비디오 데이터의 처리를 위해 방대한 영상데이터의 압축을 위한 연산이 필요하게 된다. 이에 따라, MPEG(Moving picture expert group), H.26X 계열의 표준 영상 압축 기법들이나 JPEG(Joint Photographic Experts Group)등의 표준 정지 영상 압축 기법을 사용하게 된다. 이러한 영상 압축 알고리즘들은 점점 복잡화되면서 성능을 향상시키지만, 그만큼 소프트웨어 만을 사용해서의 처리 또한 어려워지고 있는 실정이다.
따라서, 이에 따른 비디오 데이터 처리를 위한 하드웨어들이 사용되고 있으며, 특히, 연산이 많은 부분들(이를테면, ME(Motion Estimation), MC(Motion Compensation), DCT(Discrete Cosine Transform))을 하드웨어 모듈화하여 하드웨어적으로 추가되는 경우도 많이 발생하고 있다.
도 2 는 하드웨어 모듈화된 비디오 인코더의 일반적인 구성 예시도이다.
도 2에 도시된 바와 같이, 하드웨어 모듈화된 비디오 인코더를 도 1에 도시된 일반적인 비디오 인코더와의 비교를 통해 설명하면 다음과 같다.
비디오 코덱에서 사용되는 알고리즘으로 연산이 많이 발생하는 부분은 ME, MC, DCT/Q, IDCT/Q 등으로 볼 수 있다. 무선단말기에서 이러한 부분들을 소프트웨어로 처리가 가능한 경우는 굳이 하드웨어를 사용할 필요는 없다.
그러나, 비디오 디코더의 경우는 어느 정도 가능성이 있다고 하더라도, 비디오 인코더의 경우는 소프트웨어 처리가 거의 힘들고, 구현하였더라도 성능에 있어서 만족스러운 결과를 얻기가 힘들다. 따라서, 연산이 많이 요구되는 부분에 대해서 하드웨어 모듈을 사용하게 된다. 이 경우, ME, MC, DCT 등을 순차적으로 처리하여 기능을 구현하게 된다.
도 2에 도시된 바에 따르면, 인터 프레임간의 움직임 예측을 위한 ME 모듈(201), 움직임 예측된 값과 이전 결과값인 리콘 이미지(207)를 이용하여 움직임 보상을 하는 MC 모듈(202), 움직임 보상된 결과값을 이용하여 이산 코산인 변환 처리하는 DCT 모듈(203) 및 비트율 제어를 위한 엔테로피 코딩을 수행하는 VLC 모듈(206)을 포함하는 구성을 가진다.
여기서, ME 모듈(201)을 통해서는 움직임 예측된 값과 움직임 벡터(MV : Motion Vector)(208)가 출력된다. 그리고, DCT 모듈(203)은 인코딩을 위한 DCT 처리부(204)와 인코딩된 값을 다음 입력되는 데이터의 처리를 위해 사용하도록 디코딩하는 IDCT 처리부(205)를 포함한다.
즉, 각각의 하드웨어 모듈을 정리하면 다음과 같다. 먼저, ME 모듈(201)은 움직임 벡터(Motion vector)(208)을 추출한다. ME 모듈(201)은 구성하려는 영상을 미리 일정 크기로 쪼개어 놓고 해당 블록을 시간적으로 이른 프레임의 해당위치에서부터 탐색 영역 내에서 가장 근접하게 일치하는 위치를 찾을 때까지 화소끼리 비교를 하여, 움직임 벡터(208)를 저장한다. ME 모듈(201)은 비디오 인코더와 비디오 디코더에 필수인 요소이다.
그리고, MC 모듈(202)은 움직임 벡터(208)를 이용하여 해당 영역을 획득하여 리콘 이미지(reconstructed image)(207)를 생성(복사+interpolation)한다. 즉, ME(motion estimation)로 추정된 움직임 벡터(208)에 해당되는 위치의 블록 데이터를 이전에 디코딩(decoding)하여 복원한 영상(리콘 이미지(207))으로부터 가져온다.
이때, 움직임 벡터(208)가 정수(integer) 단위라면 해당 위치의 블록 데이터를 가져와 영상을 복원하면 문제가 없지만, half pixel 단위인 경우 인터폴레이션(interpolation)을 통하여 영상을 재구성하게 된다. 따라서, 이 때 많은 연산량이 발생하므로, 하드웨어 모듈화가 필요할 가능성이 높다.
그리고, DCT 모듈(203)은 리콘 이미지(207)와 새로운 이미지와의 영상의 차이를 DCT/Q, IDCT/IQ 수행 후 생성된 새로운 영상을 리콘 이미지(207)에 더하여 최종적인 리콘 이미지(207)를 생성한다.
도 3 은 하드웨어 모듈화된 비디오 인코더의 일반적인 동작처리 흐름에 관한 예시도이다.
도 3에 도시된 바에 따르면, 입력되어 처리되는 영상 블록을 GOB(Group of Blocks) 단위로 하는 경우, ME 모듈(201)의 동작이 끝나야 MC 모듈(202)이 동작이 가능해 지고, 또한 MC 모듈(202)의 동작이 끝나야 DCT 모듈(203)의 동작이 가능해진다.
결국, 하나의 모듈이 동작하는 동안 다른 모듈은 아이들 상태로 유지된다.
또한, 소프트웨어 부분도 하드웨어 모듈(201, 202, 203)의 동작이 끝난 후에야 작업 시작이 가능하므로 하드웨어 모듈(201, 202, 203)이 동작하는 동안은 소프트웨어 처리도 아이들 상태임을 알 수 있다.
좀 더 상세히 살펴보면, 도 3 은 하드웨어 부분(31), 소프트웨어 부분(32) 및 처리블록(33)으로 나누어 그 처리의 시간적 흐름을 도시한 것이다. 우선, 첫번째 처리블록인 GOB 0(301)에 대해서 ME(201), MC(202) 및 DCT(203)를 시간 순으로 수행한다. 이때, 소프트웨어 부분(32)은 아이들(Idle) 상태(304)를 유지한다. 그리고, GOB 0(301)에 대한 DCT(203)가 처리되면, 하드웨어 부분(31)은 아이들 상태(303)가 되고 소프트웨어 부분(32)는 동작을 수행한다(305). 소프트웨어 부분(32)의 동작이 종료하면, 다음 처리블록인 GOB 1(302)이 입력되어 각각의 하드웨어 부분 및 소프트웨어 부분의 동작이 수행된다.
이와 같이 하드웨어 모듈화된 비디오 처리 장치의 경우에, 비록 비디오 코덱(video codec)에서 연산이 많은 부분을 하드웨어 모듈화하였다 하더라도, 화상회의와 같이 인코더와 디코더가 동시에 동작하는 복잡한 동작이 요구되는 경우는 도 3과 같이 순차적으로 하드웨어 모듈을 사용하여서는 성능을 만족스럽게 나타내는 것은 힘든 일이다.
즉, 순차적으로 하드웨어 모듈들을 사용할 경우, 어느 하나의 모듈(예로 ME 모듈)이 동작하는 동안은 다른 모듈들(예로 MC, DCT 등)은 동작을 하지 않고 있는 상태로 유지되고, 또한, 소프트웨어 부분(32)을 처리하는 중앙처리장치(CPU)도 동작하는 모듈 이 동작을 끝낸 결과를 이용하기 때문에 이 기간 동안 역시 정지한 상태가 되어 효율이 떨어지게 되는 문제점이 발생한다.
게다가, 비디오 데이터의 발생 비트를 조절하는 비트율 제어(rate control)를 수행하기 위해서는 처리블록별로 ME, MC, DCT 및 VLC 등이 순차적으로 이루어지게 된다. 즉, 하나의 처리 단위가 끝나면, 그 결과로 발생한 비트량을 보고, 다음 발생 비트를 조절하게 된다. 이와 같이 하나의 처리블록에 대한 동작 수행 후 다음 처리블록에 대한 파라미터를 결정하게 된다.
여기서, 파라미터로는 비트를 할당 받는 DCT 계수를 제한하는 것일 수도 있지만, 보통 DCT 계수에 적용되는 양자화 값이 주로 사용되고 있다. 결국, 발생한 비트량이 많다고 판단되면 양자화 값 Q를 크게 하여 비트 할당할 계수의 수를 줄여 다음 처리 단위의 비트량을 줄이게 된다. 반대로 발생한 비트량이 적다고 판단되면 양자화 값 Q를 작게 하여 비트 할당할 계수의 수를 늘여 다음 처리 단위의 비트량을 늘이게 된다.
이와 같이, 비트율 제어를 위한 VLC 하드웨어 블록까지 포함시키는 경우에는 하나의 처리블록(GOB)에 대해 ME, MC, DCT, VLC의 처리 과정을 거치게 되고 각각의 하드웨어 블록의 동작시에 다른 하드웨어 블록은 아이들 상태가 되며, 소프트웨어 부분의 동작 역시 아이들 상태로 되어 각각의 비디오 데이터에 대한 처리 시간이 증가하고 자원이 비효율적으로 사용되는 문제점이 발생한다.
본 발명은, 상기와 같은 문제점을 해결하기 위하여 제안된 것으로, 기능별 하드웨어 모듈로 구성된 비디오 처리 장치에서 동작 유닛 단위로 데이터 처리를 하지 않고 각각의 하드웨어 모듈을 병렬적으로 동작시켜 하드웨어 모듈의 유휴 동작을 줄이는 파이프 라인 동작 방법을 제공하는데 그 목적이 있다.
또한, 본 발명은, 파이프 라인 동작시에 문제가 되는 양자화 값의 제어를 통한 비트율 제어를 위해 동작 유닛의 SAD 값을 이용한 비트율 제어 방법을 제공한다.
상기의 목적을 달성하기 위한 본 발명은, 다수의 하드웨어 모듈을 포함하여 구성된 비디오 처리 장치의 파이프 라인 동작 방법에 있어서, 비디오 처리 과정에서 필요한 기능별로 상기 다수의 하드웨어 모듈을 구성하는 제 1 단계; 상기 제 1 단계에서 구성된 기능별 하드웨어 모듈에 대해, 상기 기능별 하드웨어 모듈의 입력되는 데이터의 흐름 순으로 배열하고, 배열된 제 1 하드웨어 모듈에 대해 제 1 소정 단위의 데이터를 입력하는 제 2 단계; 상기 제 1 하드웨어 모듈이 입력된 소정 단위의 데이터를 처리하면, 상기 제 1 하드웨어 모듈은 처리된 데이터를 제 2 하드웨어 모듈로 전달하고 다음 순서의 소정 단위의 데이터를 입력받는 제 3 단계; 상기 제 3 단계를 상기 기능별 하드웨어 모듈이 모두 동작하기까지, 하드웨어 모듈과 입력되는 소정 단위의 데이터의 순서를 늘이면서 반복하는 제 4 단계; 상기 각각의 기능별 하드웨어 모듈은, 상기 데이터 흐름 순으로 바로 앞선 하드웨어 모듈에서 바로 앞선 단계에서 처리한 데이터를 입력받아 처리하는 제 5 단계; 및 상기 제 5 단계의 과정을 입력받을 소정 단위의 데이터가 없을 때까지 반복하는 제 6 단계를 포함한다.
또한, 본 발명은, VLC(Variable Length Coding) 모듈을 포함한 다수의 하드웨어 모듈로 구성된 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법에 있어서, 상기 VLC 모듈을 포함하는 상기 다수의 하드웨어 모듈이 각각 독립적으로 파이프 라인 구조로 동작하는 제 1 단계; 상기 VLC 모듈은 현재 부호화하고자 하는 특정한 순서의 소정의 단위 데이터에 대한 양자화 값의 결정을 위해, 상기 특정한 순서로부터 2개 앞선 소정의 단위 데이터에 대한 부호화 결과를 전달받는 제 2 단계; 및 상기 제 2 단계에서 전달된 부호화 결과에 의해, 부호화에 필요한 양자화 값을 결정하고 이를 상기 특정한 순서로부터 2개 늦은 소정의 단위 데이터에 대한 부호화 과정에 전달하는 제 3 단계를 포함한다.
이하, 첨부된 도면을 참조하여 본 발명에 따른 바람직한 일실시예를 상세히 설명한다. 도면에서 동일한 구성 요소들에 대해서는 비록 다른 도면에 표시되더라도 가능한 한 동일한 참조번호 및 부호로 나타내고 있음에 유의해야 한다. 또한, 본 발명을 설명함에 있어서, 관련된 공지기능 혹은 구성에 대한 구체적인 설명이 본 발명의 요지를 불필요하게 흐릴 수 있다고 판단되는 경우 그 상세한 설명은 생략한다.
도 4 는 본 발명에 따른 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더의 일실시예 처리 예시도이다.
도 4에 도시된 바와 같이, 본 발명에 따른 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더는, 각각의 ME, MC, DCT의 하드웨어 모듈이 연속적으로 움직이는 것을 도시하고 있다. 즉, 종래와 같이 하나의 하드웨어 모듈의 동작 처리가 있으면 이를 이용한 다음 하드웨어의 동작이 처리되는 방식을 취하고는 있지만, 하나의 하드웨어 모듈만이 동작하는 종래의 구조와는 달리 각각의 하드웨어 모듈이 독립적으로 각각 동작을 수행한다.
도 4를 이용하여 좀 더 상세히 살펴보면 다음과 같다.
우선, GOB 0에 대한 ME 동작을 수행한다(201-0). 그리고, GOB 1에 대한 ME 동작을 수행한다(201-1). 이때, GOB 0에 대한 ME 동작의 결과를 이용한 MC 동작을 GOB 1에 대한 ME 동작과 동시에 수행한다(202-0). 그리고, GOB 2에 대한 ME 동작을 수행한다(201-2). 이때, GOB 1에 대한 ME 동작의 결과를 이용한 MC 동작(202-1)와 GOB 0에 대한 MC 동작의 결과를 이용한 GOB 0에 대한 DCT 동작을 GOB 2에 대한 ME 동작과 동시에 수행한다(203-0).
이후부터는, GOB n에 대한 ME 동작(201-n)과 GOB (n-1)에 대한 MC 동작(202-(n-1)), GOB (n-2)에 대한 DCT 동작(203-(n-2))의 동작은 동시에 수행된다.
이와 같이 병렬 구조의 하드웨어 동작을 수행함으로써, 각각의 하드웨어 모듈(ME, MC, DCT)의 GOB 블록 하나에 대한 처리 시간이 각각 T1, T2, T3 일 때, 각각의 하드웨어 모듈 중의 가장 긴 처리 시간(예컨데, T1)으로 처리 시간이 결정된다. 이는 종래의 T1+ T2+ T3 와는 큰 차이를 가진다.
이와 같이 병렬적인 동작을 위해서 각각의 하드웨어 모듈은 입력되는 데이터가 있으면 이를 처리하여 다음 하드웨어 모듈로 전달한다. 이러한 하드웨어 모듈에 대한 데이터의 입력은 가장 많은 시간이 소모되는 ME 모듈의 처리 시간에 따라 GOB 블록 단위의 데이터를 주기적으로 입력함으로써 ME 모듈의 처리 시간 당 입력되는 GOB 단위의 데이터를 병렬적으로 처리하는 것이 가능하다.
따라서, ME 모듈은 데이터 처리에 따라 GOB 데이터의 입력을 요청한다. 나머지 모듈의 경우는 입력되는 데이터가 있으면, 현재 처리중인 데이터가 있는지를 확인하고 현재 처리 중인 데이터가 있으면 해당 데이터의 처리 종료 시까지 입력 데이터를 버퍼링하고, 처리 중인 데이터가 없으면 입력 데이터에 대한 처리를 한다.
도 5 는 본 발명에 따른 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더의 제 2 실시예 처리 예시도이다.
도 5에 도시된 바와 같이, MC와 DCT 2가지 기능 블록만이 하드웨어 모듈로 구성된 경우의 실시예이다. 도 5를 이용하여 2가지 하드웨어 모듈을 가지는 경우의 동작을 상세히 살펴보면 다음과 같다.
우선, GOB 0에 대한 MC 동작을 수행한다(202-0). 그리고, GOB 1에 대한 MC 동작을 수행한다(202-1). 이때, GOB 0에 대한 MC 동작의 결과를 이용한 DCT 동작을 GOB 1에 대한 MC 동작과 동시에 수행한다(203-0). 그리고, GOB 2에 대한 MC 동작을 수행한다(202-2). 이때, GOB 1에 대한 MC 동작의 결과를 이용한 DCT 동작을 동시에 수행한다(203-1).
이후부터는, GOB n에 대한 MC 동작(202-n), GOB (n-1)에 대한 DCT 동작(203-(n-1))의 동작은 동시에 수행된다.
이와 같이 병렬 구조의 하드웨어 동작을 수행함으로써, 각각의 하드웨어 모듈(MC, DCT)의 GOB 블록 하나에 대한 처리 시간이 각각 T2, T3 일 때, 각각의 하드웨어 모듈 중의 가장 긴 처리 시간(예컨데, T2)으로 처리 시간이 결정된다. 이는 종래의 T1+ T2와는 큰 차이를 가진다.
이와 같이 두 개의 하드웨어 모듈로 구성되는 경우에도 파이프 라인 구조의 동작을 수행하는 것은 가능하다. 또한, 하나의 하드웨어 모듈과 소프트웨어 간의 파이프 라인 동작도 가능할 것이다. 즉, 소프트웨어 동작을 하나의 하드웨어 모듈로 간주하고 이를 통해 파이프 라인 구조의 구현이 가능한 것이다.
도 6 은 도 4의 파이프 라인 구조를 가지는 비디오 인코더에 비트율 제어 모듈을 포함시키는 경우의 일실시예 설명 예시도이다.
도 6에 도시된 바에 따르면, 도 4에서 보여진 바와 같은 파이프라인 구조의 비디오 인코더에서 비트율 제어를 위한 VLC 모듈을 포함시키는 경우는 ME, MC 및 DCT의 하드웨어 모듈의 경우는 도 4와 같이 파이프 라인 형태의 구조를 가지지만 VLC의 경우는 문제가 발생한다.
VLC 모듈은 현재의 GOB에 대한 비트율을 계산하고, 이를 이용하여 다음 GOB의 DCT 모듈에서 사용되는 양자화 값(Q)을 결정하는 것이다. 따라서, VLC 모듈은 현재의 DCT 모듈의 동작 이후에 동작이 이루어져야 하며, 해당 동작이 이루어진 후에야 다음 DCT 모듈의 동작이 이루어질 수 있다. 즉, 도 6과 같은 동작 구조를 가질 수 밖에 없다.
도 6의 동작 구조를 살펴보면, GOB (n+1)에 대한 ME(601-(n+1)), GOB (n)에 대한 MC(602-n) 및 GOB (n-1)에 대한 DCT(601-(n-1))가 동시에 동작을 하고 그 동작 중에 VLC 모듈은 아이들 상태를 유지한다. 그리고, ME(601-(n+1)), MC(602-n) 및 DCT(601-(n-1))가 동작을 마치면, GOB (n-1)에 대한 VLC(604-(n-1))에 대한 동작이 있게 된다. 이때, ME(601-(n+1)), MC(602-n) 및 DCT(601-(n-1)) 동작과 VLC(604-(n-1)) 동작은 서로 엇갈려 아이들 상태를 가지게 된다.
하지만, 이 경우는 종래 기술의 문제점에서 본 바와 같이, 불필요한 아이들 상태를 많이 가지게 되고 하드웨어 모듈의 자원을 낭비하는 문제점이 있다.
도 7 은 본 발명에 따른 VLC를 포함하여 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더의 일실시예 처리 예시도이다.
도 7 에 도시된 바와 같이, 본 발명에 따른 VLC를 포함하여 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더는, 각각의 ME, MC, DCT, VLC의 하드웨어 모듈이 연속적으로 움직이는 것을 도시하고 있다. 즉, 종래와 같이 하나의 하드웨어 모듈의 동작 처리가 있으면 이를 이용한 다음 하드웨어의 동작이 처리되는 방식을 취하고는 있지만, 하나의 하드웨어 모듈만이 동작하는 종래의 구조와는 달리 각각의 하드웨어 모듈이 독립적으로 각각 동작을 수행한다.
도 7를 이용하여 좀 더 상세히 살펴보면 다음과 같다.
우선, GOB 0에 대한 ME 동작을 수행한다(701-0). 그리고, GOB 1에 대한 ME 동작을 수행한다(701-1). 이때, GOB 0에 대한 ME 동작의 결과를 이용한 MC 동작을 GOB 1에 대한 ME 동작과 동시에 수행한다(702-0). 그리고, GOB 2에 대한 ME 동작을 수행한다(701-2). 이때, GOB 1에 대한 ME 동작의 결과를 이용한 MC 동작(702-1)과 GOB 0에 대한 MC 동작의 결과를 이용한 GOB 0에 대한 DCT 동작을 GOB 2에 대한 ME 동작과 동시에 수행한다(703-0). 그리고, GOB 3에 대한 ME 동작을 수행한다(701-3). 이때, GOB 2에 대한 ME 동작의 결과를 이용한 MC 동작(702-2)과 GOB 1에 대한 MC 동작의 결과를 이용한 GOB 1에 대한 DCT 동작(703-1)과 GOB 0에 대한 DCT 동작(703-0)의 결과를 이용하여 양자화 값을 결정하는 VLC 모듈(704-0)의 동작을 GOB 3에 대한 ME 동작(701-3)과 동시에 수행한다.
이때, 문제가 되는 것은, VLC 모듈이 DCT 모듈의 결과를 가지고 다음 번의 DCT 모듈의 양자화 계수 등의 제어를 통해 비트율의 제어를 한다는 점이다.
즉, VLC 모듈은 703-0의 DCT 모듈의 처리 결과를 가지고 704-0의 VLC 동작을 한 후 비트율 제어를 위한 결과 값을 703-1을 위하여 DCT 모듈로 전달하여야 하지만, 도시된 바와 같이, 704-0의 VLC 동작과 703-1의 DCT 동작은 동시에 수행되도록 이루어져 있다.
따라서, 정상적인 방법의 DCT 동작 및 VLC 동작이 이루어질 수 없다.
이에 따라, 본 발명의 실시예에서는 VLC를 통한 비트율의 제어를 N번째 처리 블록에서 얻어진 비트율 제어를 위한 값을 N+2번째의 처리 블록의 DCT 처리를 위한 제어값으로 사용하도록 한다. 즉, 도 8과 같이 하나의 처리 블록을 건너서 제어값을 전달함으로써, 파이프 라인 구조의 동작을 수행할 수 있다.
도 8 은 본 발명에 따른 DCT 모듈과 VLC 모듈간의 제어값 전달에 따른 파이프 라인 구조 동작의 처리 예시도이다.
도 8에 도시된 바와 같은 DCT 모듈과 VLC 모듈간의 제어값 전달에 따른 파이프 라인 구조 동작의 처리 과정을 보면, GOB 0에 대한 DCT 수행 후(803-0) 그 값을 GOB 0에 대한 VLC(804-0)에서 제어값을 생성하여 이를 GOB 2에 대한 DCT 수행을 위한 제어값으로 전달한다(803-2). 또한, GOB 1에 대한 DCT 수행 후(803-1) 그 값을 GOB 1에 대한 VLC(804-1)에서 제어값을 생성하여 이를 GOB 3에 대한 DCT 수행을 위한 제어값으로 전달한다(803-3).
그리고, 해당 프레임(N)이 끝나고 다음 프레임(N+1)으로 전달되는 경우에는, 해당 프레임(N)의 마지막 2개의 GOB에 대한 VLC를 통해 다음 프레임(N+1)의 처음 2개의 GOB에 대한 DCT를 위한 제어값을 생성한다(804-7).
이상과 같이, VLC 모듈은 DCT 모듈의 양자화 값(Q)을 변화시켜 비트율을 제어하는데 이하에서는 VLC 모듈에서의 DCT 모듈의 양자화 값(Q)의 변화를 위한 제어 동작에 대해 살펴보기로 한다.
본 발명의 실시예에서는 각각의 하드웨어 모듈들이 처리하는 동작 유닛(OP :Operation Unit)을 GOB 단위로 동작하는 것을 예시하고 있다. 그러나, 이에 한정되는 것은 아니고, MB(Macro Block), N*MB, 프레임 등의 다양한 동작 유닛에 대해 본 발명은 적용이 가능하다.
일반적으로 비디오 인코더/디코더에서 비트율 제어를 위해 양자화 값을 변화시킴에 있어서, VLC 모듈에 의해 양자화 값이 자유롭게 변화되는 것은 아니며 이전의 양자화 값에 따라 그 변화량이 한정된다. 즉, 동작 유닛이 GOB보다 작은 N*MB 단위인 경우는 MPEG 표준에 따라 이전의 양자화 값에서 +2~-2 사이의 값을 갖는 것으로 한정된다.
한편, 본 발명의 실시예에서 살펴본 바와 같이 GOB 단위의 동작 유닛을 가지는 경우는 좀 더 다양한 양자화 값의 변화가 가능하다. 그러나, 동작 유닛 간의 양자화 값의 차이가 크면, 화질차이가 심해지게 된다. 즉, 좋은 화질과 나쁜 화질이 겹쳐 나타나면 전체적으로는 나쁜 화질로 인식이 되므로 각각의 동작 유닛 간의 화질의 차이가 심하게 벌어지지 않도록 동작 유닛간의 양자화 값의 변동 범위에 대한 제어가 필요하게 된다.
본 발명의 실시예에서 동작 유닛간의 양자화 값의 변동 범위는 다음과 같다.
현재의 동작 유닛의 양자화 값은 참조하는 동작 유닛의 양자화 값으로부터 +K~-K의 값을 갖도록 제한한다. 또한, 현재의 동작 유닛의 양자화 값은 이전 동작 유닛의 양자화 값으로부터 +M~-M의 값을 갖도록 제한한다.
예컨데, K를 4로 하고 M을 2로 한다면, 양자화 값은 각각의 동작 유닛 순으로 30, 28, 26, 24, 25 와 같이 나타날 수 있는데, 26을 예로 들자면 참조하는 동작 유닛인 30으로부터 4이고 이전 동작 유닛으로부터 2이므로 앞서 기술한 조건들을 만족시키고 있다.
그리고, 이와 같은 동작 유닛간의 양자화 값의 변동 범위에도 불구하고, 프레임간의 변동이 있는 경우에는 문제가 발생한다. 일반적으로 프레임 내의 양자화 값의 변화가 크지 않고 프레임 간의 변화도 별로 없다면 동작 유닛 단위로 이루어지는 양자화 값의 변동 범위와 그 제어 방법을 사용하는 것이 무방하다. 그러나, 하나의 프레임 내의 양자화 값이 위 아래의 편차가 심한 경우에는 다음 장으로 전환되는 경우, 아랫쪽 동작 유닛으로부터 위쪽 동작 유닛으로 변화가 되어 맞지 않는 양자화 값을 가지게 된다.
예컨대, 프레임의 윗부분은 비트율이 높고 아랫부분은 비트율이 낮은 경우, 동작 유닛 단위로의 비트율 제어에 따르면 새로운 프레임으로의 전환시에 낮은 비트율을 이용하여 첫번째 동작 유닛을 처리할 것이다. 이때, 새로운 프레임의 윗부분은 비트율이 높으므로 계속해서 비트율을 높여나갈 것이지만, 앞서 살펴본 바오 같은 제한이 있으므로 급격한 변화를 주는 것이 힘들다. 따라서, 프레임의 첫 양자화 값은 전체 프레임의 비트 발생에 큰 영향을 주게 되며, 첫 양자화 값이 잘못되면 좋은 영상을 얻을 수 없게 된다.
따라서, 프레임간의 양자화 값의 변동 범위 제어는 일반적인 동작 유닛에서의 변동 범위 제어와는 다른 방식으로 이루어져야 한다. 이와 같은 프레임간의 양자화 값의 변동 범위에 대한 제어를 위해서는 어느 정도의 폭으로 변화를 허용할 것인지 여부와 현재 프레임에서 발생할 비트량이 이전 프레임에 비해 큰지 여부를 판단할 필요가 있다.
본 발명의 실시예에서 살펴보면, 프레임의 첫 동작 유닛의 경우는 이전 프레임의 마지막 2번째 동작 유닛의 VLC 결과에 따라 그 양자화 값을 유추한다. 이때, 본 본 발명에서는 현재 프레임에서 발생할 비트량이 이전 프레임에 비해 큰지 여부를 판단하기 위해 ME 과정에서 발생하는 SAD(Sum of Absolute Difference)를 이용한다.
즉, 참조하는 양자화 값(현재 동작 유닛에서 2개 이전의 동작 유닛의 양자화 값)이 현재 동작 유닛에 사용되고 동작 유닛의 SAD값이 발생 비트량에 비례한다고 가정하고 예상 발생 비트를 계산한다. 이때, 예상 발생 비트가 할당된 비트보다 많으면, 차모하는 동작 유닛(현재 동작 유닛에서 2개 이전의 동작 유닛)의 발생 비트가 적더라도 양자화 값을 크게 하여 비트의 발생을 줄여준다.
여기서, 예상 발생 비트량을 계산하면, <수학식 1>과 같다.
spentbit_prev : sad_prev = pred : sad_cur
∴ pred = (spentbit_prev* sad_cur)/ sad_prev
여기서, spentbit_prev는 참조하는 동작 유닛의 발생 비트량, pred 는 현 동작 유닛의 예상 발생 비트량, sad_cur은 현재의 동작 유닛의 SAD값, sad_prev 참조하는 동작유닛의 SAD값.
이와 같이 <수학식 1>에서 예상 발생 비트량을 이용해서 새로운 프레임의 양자화 값을 예상한다. 따라서, 종래와 같이 동작 유닛으로부터 예상된 양자화 값을 이용한 것에 비해 그 변화의 폭을 크게 할 수 있다.
도 9a 내지 도 9b 는 본 발명에 따른 파이프 라인 구조의 비디오 인코딩 방법의 일실시예 동작 흐름도이다.
도 9a 내지 도 9b에 도시된 바와 같이 본 발명에 따른 파이프 라인 구조의 비디오 인코딩 방법은, 우선 프레임을 입력받는다(901).
그리고, 입력된 프레임이 인트라 프레임인지를 확인한다(902). 여기서, 인트라 프레임임을 확인하는 이유는 본 발명은 특정 프레임 주위의 프레임은 매우 유사하다는 사실을 이용한 압축방식으로 전체의 프레임을 저장하지 않고 특정 프레임과 프레임간의 차이만을 저장하는 방법인 인터 프레임에 대한 것이기 때문이다. 즉, 각각의 프레임을 개별적으로 압축하는 인트라 프레임의 경우는 본 발명의 대상이 아니다.
그리고, 인트라 프레임으로 확인이 되면, 인트라 프레임의 코딩을 한다(903).
그리고, 인트라 프레임이 아닌 경우에는, 입력된 프레임이 인트라 프레임 후 첫 인터 프레임인지를 확인한다(904). 이는 초기화 과정을 거칠 필요가 있는 지를 확인하기 위한 것으로 첫 인터 프레임인 경우는 비트율 제어 초기화 과정(905)과 파이프 라인 구조의 동작을 수행하기 위한 초기화 과정(906)을 수행한다.
여기서, 비트율 제어 초기화 과정(905)을 좀 더 상세히 살펴보면 다음과 같다.
우선, 비트율 제어 초기화를 위해서 이전 프레임의 발생 비트수와 이전 프레임의 평균 양자화 값을 입력받는다. 그리고, 새로운 목적 비트를 할당한다. 새로운 목적 비트의 할당은 <수학식 2>와 같다.
새로운 목적 비트= (전체 비트율-현재까지 누적 발생한 비트율)/남아있는 프레임의 수
그리고, 새로운 목적 비트가 할당되면 초기 양자화 값을 얻어냄으로써 비트율 제어 초기화 과정을 종료한다. 초기 양자화 값은 <수학식 3>을 통해 얻어진다.
초기 양자화 값 = 이전 프레임의 평균 양자화 값*(1+global)
여기서, global은 (이전 프레임의 발생 비트수 새로운 목적 비트수)/(2*새로운 목적 비트수).
또한, 파이프 라인 구조의 동작을 수행하기 위한 초기화 과정(906)을 상세히 살펴보면 다음과 같다.
우선, 첫번째 동작 유닛(예컨대, GOB 0)에 대한 움직임 예측(ME) 과정을 수행하고, 다음으로 두번째 동작 유닛(예컨대, GOB 1)에 대한 움직임 예측(ME) 과정과 첫번째 동작 유닛에 대한 움직임 보상(MC) 과정을 수행하고, 다음으로 세번째 동작 유닛(예컨대, GOB 2)에 대한 움직임 예측(ME) 과정과 두번째 동작 유닛에 대한 움직임 보상(MC) 과정, 첫번째 동작 유닛에 대한 DCT 과정을 수행한다.
이상과 같이 905, 906 의 초기화 과정을 수행한 이후 현재의 프레임의 마지막 동작 유닛까지 j를 0으로부터 1씩 증가시키면서, j+3 동작 유닛에 대한 움직임 예측(ME) 과정과 j+2 동작 유닛에 대한 움직임 보상(MC) 과정, j+1 동작 유닛에 대한 DCT 과정 및 j 동작 유닛에 대한 VLC 과정을 파이프 라인 구조로 수행한다(907, 908, 909, 910).
여기서, 현재 프레임(N)의 마지막 동작 유닛임을 파악하기 위해서, (하나의 프레임에 포함되는 동작 유닛의 수 - 1)을 G로 설정하고, j+3 이 G보다 커지면 현재 프레임이 종료된 것으로 파악하여 다음 프레임(N+1)을 입력 받는다(911).
그리고, 입력된 다음 프레임(N+1)이 인트라 프레임인지를 확인한다(912). 이것은 다음 프레임(N+1)이 인트라 프레임인 경우는 현재 프레임(N)에서 본 발명의 과정을 종료하기 위함이다. 물론 전체 프레임이 종료되는 경우도 같다.
입력되는 다음 프레임(N+1)이 인트라 프레임인 경우에는 더 이상의 ME 동작은 수행하지 않고, 현재 프레임의 마지막 동작 유닛까지 MC, DCT 과정을 수행한다(913). 그리고, VLC 과정은 마지막 동작 유닛과 그 앞 동작 유닛에서는 수행할 필요는 없다. 왜냐하면, 이러한 과정을 통해 만들어진 양자화 값을 전달할 대상이 없기 때문이다.
그리고, 913 과정을 통해 현재 프레임에 대한 동작을 마친 후, 입력되는 다음 프레임(N+1)에 대해서는 인트라 코딩을 한다(914).
한편, 입력된 다음 프레임(N+1)이 인트라 프레임이 아닌 경우는, 다음 프레임(N+1)의 첫번째 동작 유닛(예컨대, GOB 0)에 대한 움직임 예측(ME) 과정과 현재 프레임의 j+3 동작 유닛에 대한 MC 과정과 j+2 동작 유닛에 대한 DCT 과정과 j+1 동작 유닛에 대한 VLC 과정을 수행하고(915), 다음으로 다음 프레임(N+1)의 두번째 동작 유닛(예컨대, GOB 1)에 대한 움직임 예측(ME) 과정과 다음 프레임(N+1)의 첫번째 동작 유닛에 대한 MC 과정과 현재 프레임의 j+3 동작 유닛에 대한 DCT 과정과 j+2 동작 유닛에 대한 VLC 과정을 수행하고(916), 다음으로 다음 프레임(N+1)의 세번째 동작 유닛(예컨대, GOB 2)에 대한 움직임 예측(ME) 과정과 다음 프레임(N+1)의 두번째 동작 유닛에 대한 MC 과정과 다음 프레임(N+1)의 첫번째 동작 유닛에 대한 DCT 과정과 현재 프레임의 j+3 동작 유닛에 대한 VLC 과정을 수행한다(917).
이와 같이 현재의 프레임과 다음 프레임간의 겹치는 부분의 처리가 종료하면 907 과정으로 진행하여 일반적인 파이프 라인 구조의 동작을 수행한다.
이상에서 916 과정과 917 과정에서의 j+2 동작 유닛에 대한 VLC 과정과 j+3 동작 유닛에 대한 VLC 과정은, 새로운 프레임(N+1)의 첫번째 동작 유닛과 두번째 동작 유닛에 대한 양자화 값을 결정하는 것이다. 이와 같이 프레임이 변화하는 경우의 양자화 값의 제어는 다음과 같은 과정을 통해 수행된다.
우선 현재까지의 동작 유닛에 할당 비트(A)를 계산한다.
그리고, 현재의 동작 유닛(새로운 프레임의 첫번째 동작 유닛 또는 두번째 동작 유닛)에서의 예상 발생 비트(B)를 계산한다. 이는 앞서 살펴본 바와 같이 <수학식 1>을 통해 구해진다.
그리고, 현재의 동작 유닛까지 발생한 할당 비트(C)를 계산한다. 여기서, C=B+이전 동작 유닛까지의 누적 발생 비트량 이다.
그리거, A와 C를 비교해서 A가 C보다 크면 양자화 값을 감소시키고, A가 C보다 작으면 양자화 값을 증가시키도록 제어한다.
상술한 바와 같은 본 발명의 방법은 프로그램으로 구현되어 컴퓨터로 읽을 수 있는 형태로 기록매체(씨디롬, 램, 플로피 디스크, 하드 디스크, 광자기 디스크 등)에 저장될 수 있다.
이상에서 설명한 본 발명은, 본 발명이 속하는 기술분야에서 통상의 지식을 가진 자에 있어 본 발명의 기술적 사상을 벗어나지 않는 범위 내에서 여러 가지 치환, 변형 및 변경이 가능하므로 전술한 실시예 및 첨부된 도면에 의해 한정되는 것이 아니다.
즉, 본 발명의 실시예를 통해서는 비디오 인코더에 관하여 설명을 하고 있으나, 본 발명의 범위는 이에 한정되는 것이 아니고 비디오 디코더의 경우에도 동일한 방법으로 적용이 가능함은 당 업자의 상식에서 비추어 판단할 때 자명한 것이라 할 수 있다.
상기와 같은 본 발명은, 기능별 하드웨어 모듈로 구성된 비디오 처리 장치에서 동작 유닛 단위로 데이터 처리를 하지 않고 각각의 하드웨어 모듈을 병렬적으로 동작시킴으로써 하드웨어 모듈의 유휴 동작을 줄이고 그에 따라 자원의 효율적인 이용이 가능하게 하는 효과가 있다.
또한, 본 발명은, 파이프 라인 동작 시에 문제가 되는 DCT 모듈의 비트율 제어를 위해 참조 범위를 포함하는 양자화 값의 변동 범위를 제공하여 효율적인 비트율 제어가 가능하도록 하는 효과가 있다.
또한, 본 발명은, 비트율 제어에 있어서, 프레임간의 비트율 제어를 위해 동작 유닛의 SAD 값을 이용함으로써 프레임간의 이동 시에 비트율의 변화의 폭을 넓힐 수 있는 효과가 있다
도 1 은 일반적인 H.263/MPEG 비디오 인코더의 일실시예 구성도.
도 2 는 하드웨어 모듈화된 비디오 인코더의 일반적인 구성 예시도.
도 3 은 하드웨어 모듈화된 비디오 인코더의 일반적인 동작처리 흐름에 관한 예시도.
도 4 는 본 발명에 따른 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더의 일실시예 처리 예시도.
도 5 는 본 발명에 따른 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더의 제 2 실시예 처리 예시도.
도 6 은 도 4의 파이프 라인 구조를 가지는 비디오 인코더에 비트율 제어 모듈을 포함시키는 경우의 일실시예 설명 예시도.
도 7 은 본 발명에 따른 VLC를 포함하여 파이프 라인 구조로 동작하는 하드웨어 모듈화된 비디오 인코더의 일실시예 처리 예시도.
도 8 은 본 발명에 따른 DCT 모듈과 VLC 모듈간의 제어값 전달에 따른 파이프 라인 구조 동작의 처리 예시도.
도 9a 내지 도 9b 는 본 발명에 따른 파이프 라인 구조의 비디오 인코딩 방법의 일실시예 동작 흐름도.

Claims (9)

  1. 다수의 하드웨어 모듈을 포함하여 구성된 비디오 처리 장치의 파이프 라인 동작 방법에 있어서,
    비디오 처리 과정에서 필요한 기능별로 상기 다수의 하드웨어 모듈을 구성하는 제 1 단계;
    상기 제 1 단계에서 구성된 기능별 하드웨어 모듈에 대해, 상기 기능별 하드웨어 모듈의 입력되는 데이터의 흐름 순으로 배열하고, 배열된 제 1 하드웨어 모듈에 대해 제 1 소정 단위의 데이터를 입력하는 제 2 단계;
    상기 제 1 하드웨어 모듈이 입력된 소정 단위의 데이터를 처리하면, 상기 제 1 하드웨어 모듈은 처리된 데이터를 제 2 하드웨어 모듈로 전달하고 다음 순서의 소정 단위의 데이터를 입력받는 제 3 단계;
    상기 제 3 단계를 상기 기능별 하드웨어 모듈이 모두 동작하기까지, 하드웨어 모듈과 입력되는 소정 단위의 데이터의 순서를 늘이면서 반복하는 제 4 단계;
    상기 각각의 기능별 하드웨어 모듈은, 상기 데이터 흐름 순으로 바로 앞선 하드웨어 모듈에서 바로 앞선 단계에서 처리한 데이터를 입력받아 처리하는 제 5 단계; 및
    상기 제 5 단계의 과정을 입력받을 소정 단위의 데이터가 없을 때까지 반복하는 제 6 단계를 포함하는 비디오 처리 장치의 파이프 라인 동작 방법.
  2. 제 1 항에 있어서,
    상기 다수의 하드웨어 모듈의 동작에 의해, 상기 다수의 하드웨어 모듈의 동작에 따른 연산을 위한 소프트웨어부가 독립적으로 동작하는 것을 특징으로 하는 비디오 처리 장치의 파이프 라인 동작 방법.
  3. VLC(Variable Length Coding) 모듈을 포함한 다수의 하드웨어 모듈로 구성된 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법에 있어서,
    상기 VLC 모듈을 포함하는 상기 다수의 하드웨어 모듈이 각각 독립적으로 파이프 라인 구조로 동작하는 제 1 단계;
    상기 VLC 모듈은 현재 부호화하고자 하는 특정한 순서의 소정의 단위 데이터에 대한 양자화 값의 결정을 위해, 상기 특정한 순서로부터 2개 앞선 소정의 단위 데이터에 대한 부호화 결과를 전달받는 제 2 단계; 및
    상기 제 2 단계에서 전달된 부호화 결과에 의해, 부호화에 필요한 양자화 값을 결정하고 이를 상기 특정한 순서로부터 2개 늦은 소정의 단위 데이터에 대한 부호화 과정에 전달하는 제 3 단계를 포함하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
  4. 제 3 항에 있어서,
    상기 양자화 값의 결정은,
    상기 양자화 값의 결정이 프레임 내에서 이루어지는 것인 경우,
    상기 특정한 순서로부터 2개 앞선 소정의 단위 데이터의 부호화 시의 양자화 값과 상기 특정한 순서로부터 1개 앞선 소정의 단위 데이터의 부호화 시의 양자화 값을 참조하여 소정의 폭으로 변화하도록 제어하는 것을 특징으로 하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
  5. 제 3 항에 있어서,
    상기 양자화 값의 결정은,
    상기 양자화 값의 결정이 프레임 간에 이루어지는 것인 경우,
    상기 특정한 순서로부터 2개 앞선 소정의 단위 데이터의 SAD(Sum of Absolute Difference) 값과 상기 특정한 순서의 소정의 단위 데이터의 SAD(Sum of Absolute Difference) 값의 비를 이용하여 상기 특정한 순서의 소정의 단위 데이터의 복잡도를 추정하여 양자화 값을 제어하는 것을 특징으로 하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
  6. 제 5 항에 있어서,
    상기 특정한 순서로부터 2개 앞선 소정의 단위 데이터의 SAD(Sum of Absolute Difference) 값과 상기 특정한 순서의 소정의 단위 데이터의 SAD(Sum of Absolute Difference) 값의 비는 <수학식 4>와 같은 것을 특징으로 하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
    spentbit_prev : sad_prev = pred : sad_cur
    ∴ pred = (spentbit_prev* sad_cur)/ sad_prev
    여기서, spentbit_prev는 특정한 순서로부터 2개 앞선 소정의 단위 데이터의 발생 비트량, pred는 특정한 순서의 소정의 단위 데이터의 예상 발생 비트량, sad_cur은 특정한 순서의 소정의 단위 데이터의 SAD값, sad_prev는 특정한 순서로부터 2개 앞선 소정의 단위 데이터의 SAD값.
  7. 제 6 항에 있어서,
    상기 특정한 순서의 소정의 단위 데이터에 대한 예상 발생 비트량을 추정하여 특정한 순서의 소정의 단위 데이터의 예상 발생 비트를 계산하고, 특정한 순서의 소정의 단위 데이터에 할당된 비트와의 차이에 따라 상기 특정한 순서의 소정의 단위 데이터에 대한 부호화 시의 양자화 값을 가변 시키는 것을 특징으로 하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
  8. 제 7 항에 있어서,
    상기 특정한 순서의 소정의 단위 데이터에 대한 예상 발생 비트량과 특정한 순서로부터 2개 앞선 소정의 단위 데이터까지 발생한 비트량의 합이, 상기 특정한 순서로의 소정의 단위 데이터까지 할당된 비트보다 크면 상기 양자화 값을 감소시키는 것을 특징으로 하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
  9. 제 7 항에 있어서,
    상기 특정한 순서의 소정의 단위 데이터에 대한 예상 발생 비트량과 특정한 순서로부터 2개 앞선 소정의 단위 데이터까지 발생한 비트량의 합이, 상기 특정한 순서로의 소정의 단위 데이터까지 할당된 비트보다 작으면 상기 양자화 값을 증가시키는 것을 특징으로 하는 파이프 라인 구조의 비디오 처리 장치의 비트율 제어 방법.
KR1020030101714A 2003-12-31 2003-12-31 비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법 KR100575962B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1020030101714A KR100575962B1 (ko) 2003-12-31 2003-12-31 비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법
US10/936,187 US20050141608A1 (en) 2003-12-31 2004-09-08 Pipeline-type operation method for a video processing apparatus and bit rate control method using the same

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1020030101714A KR100575962B1 (ko) 2003-12-31 2003-12-31 비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법

Publications (2)

Publication Number Publication Date
KR20050070984A true KR20050070984A (ko) 2005-07-07
KR100575962B1 KR100575962B1 (ko) 2006-05-02

Family

ID=34698900

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020030101714A KR100575962B1 (ko) 2003-12-31 2003-12-31 비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법

Country Status (2)

Country Link
US (1) US20050141608A1 (ko)
KR (1) KR100575962B1 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101374851B1 (ko) * 2006-01-10 2014-03-14 톰슨 라이센싱 4:4:4 코딩의 병렬 구현을 위한 방법 및 장치

Families Citing this family (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101590633B1 (ko) * 2008-11-11 2016-02-02 삼성전자주식회사 슬라이스 단위로 분할된 동영상을 처리하는 동영상 부호화/복호화장치 및 동영상 부호화/복호화방법
US8437391B2 (en) * 2009-06-26 2013-05-07 Intel Corporation Transmitting video between two stations in a wireless network

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6160846A (en) * 1995-10-25 2000-12-12 Sarnoff Corporation Apparatus and method for optimizing the rate control in a coding system
GB2346282B (en) * 1999-01-28 2003-02-19 Snell & Wilcox Ltd Bit rate control in compression encoding
US6351491B1 (en) * 1999-06-23 2002-02-26 Sarnoff Corporation Apparatus and method for optimizing the rate control for multiscale entropy encoding
US6842483B1 (en) * 2000-09-11 2005-01-11 The Hong Kong University Of Science And Technology Device, method and digital video encoder for block-matching motion estimation
US6763067B2 (en) * 2000-10-10 2004-07-13 Sarnoff Corporation Rate control for bitstream re-encoding
US7072393B2 (en) * 2001-06-25 2006-07-04 International Business Machines Corporation Multiple parallel encoders and statistical analysis thereof for encoding a video sequence
US6934330B2 (en) * 2001-08-01 2005-08-23 Sony Corporation Image processing apparatus

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR101374851B1 (ko) * 2006-01-10 2014-03-14 톰슨 라이센싱 4:4:4 코딩의 병렬 구현을 위한 방법 및 장치
US9445113B2 (en) 2006-01-10 2016-09-13 Thomson Licensing Methods and apparatus for parallel implementations of 4:4:4 coding

Also Published As

Publication number Publication date
KR100575962B1 (ko) 2006-05-02
US20050141608A1 (en) 2005-06-30

Similar Documents

Publication Publication Date Title
KR101644208B1 (ko) 이전에 계산된 모션 정보를 이용하는 비디오 인코딩
JP4109113B2 (ja) ビデオ伝送におけるビットストリーム間の切換
US7848426B2 (en) Motion vector estimation method and encoding mode determining method
CN101406056B (zh) 减少数字视频编码器中的内预测和模式判决处理中的计算的方法
CN101483774B (zh) 用于视频编解码器的选择性的和/或可缩放的复杂度控制
US8311095B2 (en) Method and apparatus for transcoding between hybrid video codec bitstreams
US9584832B2 (en) High quality seamless playback for video decoder clients
US20030043908A1 (en) Bandwidth scalable video transcoder
KR20040047977A (ko) 공간적으로 스케일가능한 압축
KR20040077774A (ko) 화상 정보 부호화 장치 및 방법, 및 화상 정보 복호 장치및 방법
KR100594056B1 (ko) 효율적인 비트율 제어를 위한 h.263/mpeg 비디오인코더 및 그 제어 방법
KR20000053028A (ko) 움직임 보상을 이용한 예측 코딩 방법 및 장치
US20010053182A1 (en) Picture encoding format converting apparatus
KR100575962B1 (ko) 비디오 처리 장치의 파이프 라인 동작 방법과 그에 따른비트율 제어 방법
KR20050105550A (ko) 평균 히스토그램 오차 방식을 이용한 h.263/mpeg비디오 인코더 및 그 제어 방법
KR20040007818A (ko) 동영상 부호화를 위한 dct연산량 조절 방법 및 그 장치
Slowack et al. Bitplane intra coding with decoder-side mode decision in distributed video coding
KR100778473B1 (ko) 비트율 제어 방법
Notebaert et al. Mixed architectures for H. 264/AVC digital video transrating
KR0178226B1 (ko) 영상 부호기의 왜곡값 보정방법
Atta et al. A drift compensation architecture for DCT-pyramid video coding
KR20050052756A (ko) 움직임 추정 방법
Lin et al. Introduction to Video Coding and H. 264/AVC
KR20090037031A (ko) 필터 적용 예측 기능을 가지는 동영상 압축 장치
WO2006104357A1 (en) Method for compressing/decompressing motion vectors of unsynchronized picture and apparatus using the same

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
FPAY Annual fee payment
FPAY Annual fee payment

Payment date: 20160330

Year of fee payment: 11

LAPS Lapse due to unpaid annual fee