KR100257191B1 - 움직임 벡터 디코더 - Google Patents

움직임 벡터 디코더 Download PDF

Info

Publication number
KR100257191B1
KR100257191B1 KR1019970080708A KR19970080708A KR100257191B1 KR 100257191 B1 KR100257191 B1 KR 100257191B1 KR 1019970080708 A KR1019970080708 A KR 1019970080708A KR 19970080708 A KR19970080708 A KR 19970080708A KR 100257191 B1 KR100257191 B1 KR 100257191B1
Authority
KR
South Korea
Prior art keywords
motion
code
output
value
motion vector
Prior art date
Application number
KR1019970080708A
Other languages
English (en)
Other versions
KR19990060481A (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 KR1019970080708A priority Critical patent/KR100257191B1/ko
Priority to US09/221,822 priority patent/US6215823B1/en
Publication of KR19990060481A publication Critical patent/KR19990060481A/ko
Application granted granted Critical
Publication of KR100257191B1 publication Critical patent/KR100257191B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/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/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

Abstract

엠펙(MPEG) 비디오 디코더에서의 움직임 벡터(MV)를 디코딩하는 장치에 관한 것으로서, 특히 움직임 나머지부, 움직임 코드 테이블, MV 델타부, MV 가산기, PMV레지스터로 MV 디코더를 구성하고 각각의 블록에 플립플롭을 두어 각각의 블록들이 한 클럭안에 처리되도록 함과 동시에 MV 디코딩에 필요한 파리미터들을 각 블록에 맞게 지연시킨 후 해당 블록으로 제공함으로써, MV 디코딩이 파이프라인 식으로 동작되어 고속 처리가 가능하게 한다. 또한, 움직임 코드 테이블부는 VLC 디코딩 테이블의 맵핑 값을 변형하여 mc_code[3 : 0]와 mc_sign, mc_zero로 출력함에 의해 뒷단에서의 연산의 중복성을 제거하여 로직을 줄이고 속도를 높이며, 제어를 쉬고 편하게 한다. 상기 MV 델타부와 MV 가산기는 멀티플렉서와 쉬프터를 기본으로 구성하여 추가 회로를 없애 산술적인 연산회로를 최소화 한다. 또한, 상기 MV 가산기에서 델타값과 피드백 되는 PMV 값을 더한 결과가 변수 low, high를 벗어나는 겨우 멀티 플렉서와 소수의 게이트를 이용하여 부호 비트들을 반전시킴으로써, 가산기와 감산기 그리고, 비교기가 필요없게 되어 회로를 단순화시키면서 처리 속도를 높인다.

Description

움직임 벡터 디코더
본 발명은 엠펙(MPEG) 비디오 디코더에 관한 것으로서, 특히 움직임 벡터(Motion Vector; MV)를 디코딩하는 움직임 벡터 디코더에 관한 것이다.
최근들어 정보의 디지털호가 급속도로 발전하고 있으며, 이에 따라 화상 압축 기술이 매우 중요하게 부각되고 있다.
동화상 전문가 그룹(Moving Pictures Expert Group; MPEG)은 멀티미디어 환경의 가장 핵심 기술인 디지털 동영상의 압축 부호화를 위한 국제적인 표준안이다.
그리고, 압축 알고리즘으로 상기 MPEG 기술을 사용하는 분야는 통신/방송/게임 등 다양하다. 디지털 TV도 그 중 하나이다.
이때, MPEG 비디오 압축 알고리즘은 두 가지 기본 기술을 바탕으로 한다. 즉, 시간 중복성(Temporal Redundancy)을 줄이기 위해서 블록 단위의 움직임 추정 및 보상을 이용하고, 공간 중복성(Spatial Redundancy)을 줄이기 위해서 이산 코사인 변환(Discrete Cosine Transform; DCT)을 이용한다. 즉, 움직임 예측 보상 기법들은 순수 예측 부호화 및 보간 부호화 예측기를 이용하는데, 예측 오차(Prediction Eorror)는 DCT에 의해서 더욱 압축된다.
상기 DCT된 신호는 데이터들을 제한된 비트 수로 표시하여 데이터 량을 줄이는 양자화 과정, 자주 나오는 값은 적은 수의 비트로, 드물게 나오는 값은 많은 수의 비트로 표시하여 전체 비트 수를 줄이는 가변 길이 부호화(Variable Length Coding; VLC) 과정을 거쳐 전송된다. 그리고, 움직임 벡터는 16×16블록 기본으로 구해지고 상기 VLC된 변환 계수 정보와 함께 전송된다. 이때, 상기 움직임 벡터도 최대의 부호와 효율을 얻기위해서 VLC된다.
여기서, 움직임 벡터란 움직임 보상을 위해서 현재의 픽쳐나 필드의 좌표로부터 기준 프레임이 되는 필드의 좌표의 옵셋(Offest)을 나타내주는 2차원 벡터이다.
즉, 엔코더에서 움직임 추정을 하기 위해서는 먼저 움직임 벡터(MV)를 구해야 한다. MV는 한 매크로블록당 최대 4개까지 나올 수 있는데 이를 그냥 보내면 너무 비트량이 많으므로 바로 전 매크로블록의 MV와의 차이만을 VLC 코딩하여 전송한다. MPEG에서는 이 차이를 구하기 위하여 이전 매크로블록의 MV 값을 MV 예측기에 저장하는데 이 값을 pmv[r][s][t]라 표시한다. 즉, pmv의 값은 바로 이전 매크로블록의 MV가 되고 엔코더에서 코딩하는 값은 vecotor[r][s][t]-pmv[r][s][t]가 된다. 여기서, r(필드 구분), s(픽쳐 타입), t(벡터 방향)의 의미는 표1과 같다.
[표 1]
Figure kpo00001
이 MV의 차이를 여기서 DMV라 정의한다.
그리고, MV의 엔코딩을 위해 미리 탐색영역(serach range)을 정해야 한다. 이러한 탐색영역을 엔코더에서는 f_code로 디코더에 알려주며 디코더는 이 f_code만 보면 표2와 같이 탐색 영역을 알아낼 수 있다. 즉, MPEG에서는 움직임 벡터의 서치 영역을 정해주는데 엔코더의 능력에 따라 정해진다.
[표 2]
Figure kpo00002
상기 표 2에 나타나 있는 영역은 반화소 단위로 표시한 것이며 이를 정수화하기 위해서는 이영역에 2를 곱하면 된다. 엔코딩은 이렇게 2를 곱해서 정수로 만든 후에 하게 된다. 다음에 설명하는 엔코딩 과정에서는 수평축의 MV에 대해서만 설명한다. 예를 들어, f_code가 1인 경우의 최대 변위인 하이는 15가 되고 최소 변위인 로우는 -16이 된다. 따라서, 탐색 영역은 32가 된다(0을 포함해서).
이때 DMV는 [-31, +31]의 영역에 있게 된다. 이 MV는 f변수로 나누었을 때 몫에 해당하는 motion_code와 나머지에 해당하는 motion_residual로 나누어서 코딩하게 되는데 f_code가 1인 경우는 f=1이기 때문에 motion_residual은 없고 motion_code만 있게 된다. 이 motion_code는 하기의 표3으로 전송하는데 이 VLC테이블은 -16부터 +16까지의 값밖에 없으므로 [-31 : +31] 범위를 [-16, 15]로 좁혀서 만들 수 있어야 한다.
따라서, 위의 [-31 : +31]까지의 값중 [-16 : +15]까지의 값은 그냥 그 값을 motion_code로 하고 [-31 : +17]까지의 값은 탐색 영역 range값을 더해서 [1 : 15]로 만든 후 그 값을 motion_code로 한다. 또 [16 : 31]까지의 값은 탐색 영역 range 값32를 빼서 [-16 : -1]까지의 값으로 만든 후 그 값을 motion_code로 한다. 이렇게 [-16 : +15] 사이의 값으로 조정된 값을 델타(delta)라 한다.
디코더에서는 상기 구해진 [-16 : 15]까지의 델타를 pmv에 더하게 된다.
[표 3]
Figure kpo00003
이때, MV의 수는 엄청나게 많으며 이를 직접 코딩하는 VLC 테이블을 만들 수는 없다. 따라서, 그룹으로 나누어야 하는데 보통 MV들을 살펴보면 어떤 픽쳐에서는 물체의 움직임들이 커서 MV값이 대체로 크로 어떤 픽쳐에서는 움직임이 작아서 MV들이 작게 된다. 따라서, 그 픽쳐의 MV들의 크기에 맞게 어떤 값(여기서는 f 값)으로 나누어주면 그 몫중에서 특히 많이 발생하는 값이 있게 되는데 이들 분포는 거의 비슷하므로 같은 VLC 테이블을 이용해서 코딩하면 효율적일 수 있다. 그러나, 나머지는 불규칙하며 따라서 VLC 코딩하지 않고 f값에 따라 고정기이 코딩을 한다.
즉, f=2이면 motion_residual을 1비트로 코딩하고 f=3이면 motion_residual은 2비트...등으로 코딩된다. 따라서, motion_residual은 그때 그때의 비트수를 계산하여 비트스트림에서 추출해 쓰면 된다. 결과적으로 delta, vector[r][s][t], pmv[r][s][t]는 모두 [로우 : 하이]영역에 있게 된다.
지금까지는 엔코딩 과정이고 디코딩 과정은 엔코딩의 역과정으로 수행하면 되는데 프로그램 언어로 나타내면 다음과 같다.
여기서의 변수는 엔코딩에서 사용했던 변수들과 동일하다. 먼저, 엔코딩 과정에서 햇던 것처럼 r_size, f, high, low, range등과 같은 변수값을 구한다. 그후 motion_code가 0이거나 f=1이면 델타를 motion_code로 하고 그렇지 않으면 엔코딩 과정의 역순으로 델타를 구한 후 델타가 [low : high] 영역밖에 있으면 델타에서 탐색 영역 값 range를 더하거나 빼서 값을 조정한다.
설명의 편의를 위해 하기의 프로그램을 식1이라 한다.
[식 1]
r_size=f_code[s][t]-1;
F=1《r_size;
High=(16*f)-1;
Low=((-16)*f);
Range=(32*f);
if((f==1)∥(motion_code[r][s][t]==0))
Delta=motion_code[r][r][t];
Else{
Delta=((Abs(motion_code[r][s][t])-1)*f)
+motion_residual[r][s][t]+1;
If(motion-code[r][s][t]〈0)
Delta=-delta;
}
Prediction=PMV[r][s][t];
if((mv_format=="1")&&(t==0)&&(picture_structure=="11"))
prediction=PMV[r][s][t]DIV2;
vector'[r][s][t]=predicion+delta;
if(vector'[r][s][t]〈low)
vector'[r][s][t]=vector'[r][s][t]+range;
if(vector[r][s][t]〈high
vector'[r][s][t]=vecuor'[r][s][t]-range;
if((mv_format=="1")&&(t==1)&&(picture_structure=="11"));
PMV[r][s][t]=vector'[r][s][t]*2;
Else
PMV[r][s][t]=vector'[r][s][t];
그러나, 상기된 프로그램은 하드웨어 구성으로 되어있지 않고 신택스로만 존재하므로, 상기된 프로그램 그대로 회로를 구현하게 되면 회로가 복잡해지고 처리 속도가 늦어지는 문제점이 발생한다.
즉, 상기 식1의 프로그램을 보면, 가산기, 감산기, 비교기, 멀티플라이어등이 필요하게 되므로 대기시간이 길어지고 회로가 복잡해지게 된다.
본 발명은 상기와 같은 문제점을 해결하기 위한 것으로서, 본 발명의 목적은 각각의 블롤들이 한 클럭안에 처리되도록 함과 동시에 MV디코딩에 필요한 파라미터들을 각 블록에 맞게 지연시킨 후 해당 블록으로 제공함으로써, 고석 처리가 가능한 MV디코더를 제공함에 있다.
본 발명의 다른 목적은 연산의 중복성을 제거하고 산술적인 연산 회로를 최소화하는 움직임 벡터(MV) 디코더를 제공함에 있다.
상기와 같은 목적을 달성하기 위한 본 발명에 따른 MV 디코더는, 움직임 나머지부, 움직임 코드 테이블부, MV 델타부, MV 가산기, PMV 레지스터로 구성되고 상기 각각의 블록에는 플립플롭을 두어 각각의 블록들이 한 클럭안에 처리되도록 함과 동시이 파라미터 지연기를 구비시켜 MV 디코딩에 필요한 파라미터들을 각 블록에 맞게 지연시킨 후 해당 블록으로 제공함으로써, MV 디코딩을 파이프라인 식으로 동작시킴을 특징으로 한다.
상기 움직임 나머지부는 상기 파라미터 지연기를 통해 출력되는 f_code_d[3 : 0] 값에 따라 입력되는 데이터로부터 움직임 나머지(motion_residual) 값을 추출하여 8비트의 양의 정수 값으로 출력함을 특징으로 한다.
상기 움직임 코드 테이블부는 입력되는 데이터를 플립플롭으로 래치한 뒤에 가변 길이 디코딩 테이블을 사용하여 motion_code[3 : 0]와 mc_sign, mc_zero를 서치하고 이를 플립플롭으로 래치하여 출력하는데, motion_code[3 : 0]는 "abs(motion_code) -1" 값을 나타내며 mc_sign은 motion_code의 부호를 나타내며, mc_zero는 motion_code가 0인지 아닌지를 나타냄을 특징으로 한다.
상기 움직임 벡터 델타부는 상기 파라미터 지연기를 통해 출력되는 f_code-2d[3 : 0]에 k라 움직임 코드 테이블부에서 출력되는 motion_code[3 : 0]를 쉬프트시키는 쉬프트와, 상기 쉬프터의 출력중 하위 8비트 값과 움직임 나머지부의 출력을 비트별로 논리합한 후 상기 쉬프터의 상위 8비트 값과 먹싱하여 출력하는 논리부와, 상기 논리부의 출력에 상수 1을 더하는 가산기와, 상기 움직임 코드 테이블부로부터 출력되는 움직임 코드의 부호 상태(mc_sign)에 따라 상기 가산기의 출력 또는 반전시킨 논리부의 출력을 선택 출력하는 멀티플렉서와, 상기 움직임 코드 테이블부의 제로 상태(mc_zero) 값에 의해 클리어되며 클럭에 동기되어 상기 멀티플렉서의 출력에 상기 mc_sign값을 부호 비트로 먹싱하여 출력하는 플립플롭으로 구성됨을 특징으로 한다.
상기 움직임 벡터 가산부는 상기 MV 델타부의 출력과 피드백되는 이전 매크로블록의 움직임 벡터 값을 더한 후 클럭에 동기시켜 래치하는 플립플롭과, 상기 플립플롭에서 래치된 데이터중 상위 8비트 값을 반전시키는 인버터와, 상기 파라미터 지연기를 통해 출력되는 f_code_4d 신호에 따라 상위 8비트 중 하위7비트를 멀티플렉싱하는 7 : 1 멀티플렉서와, 상기 상위 8비트중 최상위 비트와 상기 7 : 1 멀티플렉서의 출력을 배타적 논리합에 의해 비교하는 비교기와, 상기 f_code-4d 신호에 따른 값을 테이블로부터 서치하여 출력하는 선택 테이블과, 상기 비교기의 출력과 선택 테이블의 출력을 논리곱한 후 이를 선택 신호로 사용하여 상기 플립플롭에서 출력되는 상위 8비트 값 또는 상기 인버터의 출력을 선택 출력하는 멀티플렉서와, 상기 멀티플렉서를 통해 출력되는 상위 8비트 값과 상기 플립플롭에서 바이패스된 하위 5비트를 먹싱하는 합성부를 포함하여 구성됨을 특징으로 한다.
도 1는 본 발명에 따른 움직임 벡터 디코더의 구성 블록도.
도 2a 내지 2h도는 도 1의 각 부의 동작 타이밍도.
도 3는 도 1의 MV델타부의 상세 블록도.
도 4는 도 1의 MV가산기의 상세 블록도.
제5a 내지 5d도는 도 4의 MV 가산기에서 델타 값이 로우, 하이 영역을 벗어나는 경우를 보이기 위한 예시도.
도 6는 도 1의 PMV 레지스터의 상세 블록도.
* 도면의 주요부분에 대한 부호의 설명
11 : 움직임 나머지부 12 : 움직임 코드 테이블부
13 : MV 델타부 14 : 파라미터 지연기
15 : MV 가산기 16 : PMV 레지스터
이하, 본 발명의 바람직한 실시예를 첨부도면을 참조하여 상세히 설명한다.
도1은 본 발명에 따른 MV 디코더의 구성 블록도로서, MV 디코딩이 파이프라인 식으로 수행하도록 MV 디코딩에 필요한 여러 입력 신호를 각 부분 블록에서 사용할 때 지연이 맞도록 지연시키는 파라미터 지연기(14), motion residual의 값으 비트 길이를 나타내주는 f_code_d[3 : 0] 값에 따라 입력되는 MV 데이터(vlc[10 : 0])로부터 motion residual 값을 추출하여 8비트의 양의 정수 값으로 출력하는 움직임 나머지부(11), MV 데이터(vlc[10 : 0])를 입력 받아 MPEG 스펙에 있는 움직임 코드 테이블에 의해 구성된 VLC 디코딩 테이블을 사용하여 mc_code[3 : 0]와 mc_sign, mc_zero를 서치하여 출력하는 움직임 코드 테이블부(12), 움직임 나머지부(11)와 움직임 코드 테이블부(12)로부터 MV의 차값(Difference)인 13비트(2의 보수)의 mv_delta를 계산하는 MV 델타부(13), 상기 mv_delta 값과 바로 이전 매크로 블록의 움직임 벡터값(pmv)을 더하여 새로 계산된 13비트(2의 보수)의 새로운 움직임 벡터값(new_pmv)를 출력하는 MV 가산기(15), 및 새롭게 계산된 new_pmv를 현재 (r, s, t)에 맞는 pmv 플립플롭에 업데이트하고 또한 현재의 (r, s, t)에 맞는 것은 아니지만 MPEG 스펙에 따라 동시에 업데이트해주어야 하는 다른 pmv 레지스터를 업데이트해 주는 PMV 레지스터(16)로 구성된다.
이와같이 구성된 본 발명에서 움직임 나머지부(11)와 움직임 코드 테이블부(12)로 입력되는 도2의 (d)와 같은 vlc[10 : 0]는 엔코더에서 VLC된 MV 값으로서, VLC가 최대 11비트까지 가능하므로 11비트의 크기를 가지고 있고 msb fitst이다. 또한, 이 값은 올수도 있고 안올수도 있고 1개만 올수도 있고 8개가 모두 올수도 있다. 그리고, 파라미터 지연기(14)로 입력되는 도2c와 같은 mv_sel은 vlc[10 : 0]를 통해 현재 클럭에서 VLC된 MV가 전송됨을 나타내는 신호이며 도 2b와 같은 r,s,t 신호들은 상기 표 1에 나타낸 바와 같이 MPEG 스펙에 나타나 있는대로 현재 클럭에서 VLC된 MV의 방향과 종류를 나타내는 신호이다. 또한, pict_struct[1 : 0], f_code[1 : 0][3 : 0], mctype[1 :0], mbmf, mbmb, mbintra는 MV를 디코딩하는데 필요한 MPEG 헤더 정보들로 pict_struct[1 ; 0]은 픽쳐 구조(picture structure)로 픽쳐마다 한번씩 변하며, mctype[1 : 0]는 움직임 타입(motion type), mbmf는 매크로 블록 움직임 전방향(macroblock motion forward), mbmb는 매크로 블록 움직임 후방향(macroblock motion backward), mbintra는 매크로블럭 인트라(macroblock intra)를 나타내며 매크로블록마다 한번씩 변한다. f_code도 매크로블록마다 변한다. pmv_rst신호는 MPEG 스펙에 의해 정해진 조건에서 PVM레지스털를 0 값으로 리셋하는 기능을 하는 입력이다. 도2a와 같은 클럭 신호는 MV 디코더를 동기시켜 동작시키는 일반적인 클럭 신호이다.
그리고, 출력 신호중 pmv0∼7[12 : 0] 신호는 도2e 내지 도2h와 같이 MPEG 스펙의 PMV 값을 출력하는 신호로서, 13비트의 2의 보수 형태로 표현되며, 12번째 비트가 부호를 나타내고 index 0∼7은 (r, s, t) 값을 나타낸다.
상기 도2e 내지 도2h를 보면, 본 발명은 5클럭의 디코딩 대기타임(Latency)을 갖고 파이프라인식으로 동작함을 알 수 있다.
이를 위해 파라키터 지연기(14)는 디코딩에 필요한 여러 입력 신호를 각 부분 블록(11∼13, 15, 16)에서 사용할 때 지연이 맞도록 지연시켜주는데, 출력신호의 숫자가 클럭 지연을 나타낸다. 또한, (s, t)쌍에 각각 대응되는 4개의 f_code중에서 현재의 (s, t)쌍에 해당되는 f_code를 선택하고 이를 적절히 지연시켜 해당 블록에 출력한다. 상기 파라미터 지연기(14)는 각 블록마다 대기타임(Latency)가 다르므로 클럭에 따라 각 블록으로 제공할 데이터의 출력 타이밍을 결정한다.
그리고, 움직임 나머지부(11)는 일단 D-타입 플립플롭을 이용하여 VLC된 MV값(vlc[10 : 0])을 래치한 뒤 파라미터 지연기(14)를 통해 출력되는 motion residual의 값의 비트 길이를 나타내주는 f_code_d[3 : 0] 값에 따라 쉬프터를 사용하여 motion ersidual 값을 8비트의 양의 정수 값으로 얻어내고 이것을 플립플롭으로 래치하여 MV 델타부(13)로 출력한다. 여기서, f_code_d[3 : 0] 값이 1일 경우는 motion residual이 없는 경우이므로, 이때는 0을 출력한다.
또한, 움직임 코드 테이블부(12)는 상기 움직임 나머지부(11)와 지연을 맞추기 위해 VLC된 MV값(vlc[10 : 0])을 플립플롭으로 2번 래치한 뒤에 MPEG 스펙에 있는 움직임 코드 테이블에 의해 구성된 VLC디코딩 테이블을 사용하여 mc_code[3 : 0]와 mc_sign, mc_zero를 서치하고 이를 플립플롭으로 래치한 뒤 MV 델타부(13)로 출력한다. 여기서, mc_code[3 : 0]는 "abs(motion_code) -1" 값을 나타내며 mc_sign은 motion_code의 부호를 나타내며, '+'일때는 "0", '-'일때는 '1'을 나타내고, mc_zero는 motion_code가 0인지 아닌지를 나타내는 신호로 0일 때 '1'을 출력한다.
이때, 본 발명은 종래와 다르게 VLC 디코딩 테이블의 맵핑 값을 변형하여 mc_code[3 : 0]와 mc_sign, mc_zero로 출력한다. 이것은 MV 델타부(13)에서의 로직을 줄이고 속도를 높이며, 제어를 쉽고 편하게 하기 위한 것이다.
상기 MV 델타부(13)는 움직임 나머지부(11)와 움직임 코드 테이블부(12)로부터 MV의 차값(Difference)인 13비트(2의 보수)의 mv_delta를 계산하여 MV 가산기(15)로 출력하고, 상기 MV 가산기(15)는 상기 MV 델타부(13)의 mv_delta값과 바로 이전 매크로블록의 움직임 벡터값(pmv)을 더하여 새로 계산된 13비트(2의 보수)의 new_pmv[12 : 0]를 PMV 레지스터(16)로 출력한다. 상기 MV 델타부(13), MV 가산기(15)는 MPEG 스펙인 상기된 MV 디코딩을 위한 프로그램 언어에서의 MV 계산 중 연산의 중복성을 제거하고 산술적인 연산회로를 최소화하며 대신 멀티플렉서와 쉬프터를 기본으로 하여 구현한 것이다.
도 3은 MV 델타부(13)의 상세 블록도로서, 파라미터 지연기(14)를 통해 출력되는 f_code_2d[3 : 0]에 따라 motion_code[3 : 0]를 쉬프트시키는 쉬프터(31), 상기 쉬프터(31)의 출력중 하위 8비트 값(delta_t0[7 : 0])과 8비트로 출력되는 motion_residual값을 논리 조합하는 오아 게이트(32), 상기 쉬프터(31)의 출력중 상위 8비트 값(delta_t0[7 : 0])과 오아 게이트(32)의 출력이 먹싱되어 출력되면 이를 상수 1과 더하는 가산기(33), 상기 쉬프터(31)의 출력중 상위 8비트 값(delta_t0[7 : 0])과 오아 게이트(32)의 출력이 먹싱되어 출력되면 이를 반전시키는 인버터(34), 움직임 코드 테이블부(12)에서 출력되는 mc_sign값에 따라 상기 가산기(33)의 출력 또는 인버터(34)의 출력을 선택한 후 mc)sing 값을 mv_delta의 최상위 비트값(mv_delta[12])으로 하여 선택된 값과 먹싱하여 출력하는 멀티플렉서(35), 및 움직임 코드 테이블부(12)로부터 출력되는 mc_zero 값에 의해 클리어되며 클럭에 동기되어 상기 멀티플렉서(35)의 출력과 mv_delta[12]가 먹싱된 값을 출력한다. 상기 MV 델타부(13)는 움직임 벡터 차값에 해당하는 델타(mv_delta[12 : 0]를 계산한다.
이와같이 구성된 MV 델타부(13)는 상기 식1에서 다음의 신택스를 계산하는 블록이다.
if((f==1)∥(motion_code[r][s][t]-==0))
Delta=motion_code[r][s][t];
Else{
Delta=((Abs(motion_code[r][s][t])-1)*f)
+motion_residual[r][s][t]+1;
If(motion_code[r][s][t]〈0)
Delta=-delta;
}
즉, 쉬프터(31)는 f_code_2d의 값에서 1을 뺀 만큼 motion_code[3 : 0]을 쉬프트하고 나머지 delta_t0의 비트들은 '0'으로 만든다. 따라서, 상기 식에서 f를 곱하기 위한 멀티플라이어가 필요없게 된다.
상기 식1에서 f_code=1과 motion_code=0일 때는 다른 경우와 달리 델타값으로 motion_code를 바로 출력하도록 되어 있는데, 이것을 그대로 구현하면 If, Else 명령에 의해 멀티플렉서가 추가로 필요하나 본 발명에서는 f_code=1인 경우는 f_code가 상위 4비트만 출력된 경우로서, motion_residual 값이 0이므로 도3에서와 같이, motion_code[3 : 0]을 0 쉬프트시키고 motion_residual은 0 값을 입력시킴으로써, 추가의 멀티플렉서가 필요없도록 하였다. 또한, motion_code=0인 경우는 결국 델타 값이 0이 되는 것이므로 움직임 코드 테이블부(12)에서 출력되는 mc_zero 값(motion_code=0이므로 mc_zero 값은 1)을 이용하여 플립플롭(36)을 클리어시켜 구현하였다. 그리고, 상기 식1에서 Abs(motion_code[r][s][t])-1을 구현하려면 절대치 연산기, 감산기등이 추가로 필요하나 본 발명에서는 움직임 코드 테이블부(12)에서 motion_code 값으로 Abs(motion_code[r][s][t])-1을 출력하도록 맵핑값만 변형시켰으므로 추가 회로가 필요없게 된다. 또한, 상기 식1에서
If(motion_code[r][s][t]〈0)
Delta=-delta;
조건일 때는 인버터(34)를 이용하여 delta_t1[11 : 0] 값을 반전시킨 후 멀티플렉서(35)에서 상기 움직임 코드 테이블부(12)에서 출력되는 mc_sign 값에 따라 선택 출력하도록 하였다. 즉, mc_sign 값이 0(=motion_code 값이 +)이면 상기 멀티플렉서(35)는 delta_t1[11 : 0] 값에 상수 1을 더한 가산기(33)의 출력을 선택하고, mc_sign값이 1이면 상기 멀티플렉서(35)는 인버터(34)의 출력을 선택한다. 여기서, 상기 가산기(33)는 상수 1을 더하는 가산기이므로 게이트 구성이 복잡하지 않다. 플립플롭(36)은 클럭에 의해 인에이블될 때에만 저장된 데이터를 출력하므로 파이프라인 즉, 연속적인 데이터의 출력이 가능하게 한다.
도4는 상기 MV 가산기(14)의 상세 블록도로서, 상기 식1에서 델타 계산 이후의 계산을 구현한 것이다. 즉 MV를 디코딩하는데 필요한 MPEG 헤더 정보들 예컨대, pict_struct[1 : 0], 낸드 게이트(41)의 출력, t_3d를 논리조합하는 앤드 게이트(42), 상기 앤드 게이트(42)의 출력을 선택 신호로 입력받아 피드백되는 pmv[12 : 0] 값 또는 피드백되어 한번 쉬프트된 pmv[12, 12 : 0] 값을 선택 출력하는 멀티플렉서(43), 상기 멀티플렉서(43)의 출력(prediction[12 : 0])과 MV 델타부(13)에서 출력되는 mv_delta[12 : 0] 값을 더하는 가산기(44), 상기 가산기(44)의 출력(vector'[12 : 0])를 래치하다가 클럭에 동기시켜 출력하는 플립플롭(35), 상기 플립플롭(35)에서 래치된 vector'[12 :0] 중 상위 8비트(vector'[12 : 5])를 반전시키는 인버터(45), f_code_4d 신호에 따라 다시 상위 8비트(vector'[12 : 5])중의 하위 7비트(vector'[11 : 5])를 멀티플렉싱하는 7 : 1 멀티플렉서(48), 상기 상위 8비트(vector'[12 : 5])중 최상위 비트(vector'[12])와 상기 멀티플렉서(48)의 출력을 논리조합하는 배타적 오아 게이트(50), 상기 f_code_4d 신호에 따른 값을 테이블로부터 서치하여 출력하는 선택 테이블(49), 상기 배타적 오아 게이트(50)의 출력과 선택 테이블(49)의 출력을 논리 조합하는 앤드 게이트(51), 상기 앤드 게이트(51)의 출력을 선택 신호로 하여 상기 상위 8비트(vector'[12 : 5]) 또는 상기 인버터(46)의 출력을 선택 출력하는 멀티플렉서(47), t_3d를 한 클럭 지연시켜 출력하는 플립플롭(53), 상기 플립플롭(53)의 출력과 pict_struct[1 : 0]와 mv_format을 논리 조합하는 앤드 게이트(54), 상기 멀티플렉서(47)의 출력(vector''[12 : 5])과 바이패스된 하위 5비트(vector''[4 : 0])를 먹싱하는 합성부(52), 상기 앤드 게이트(54)의 출력을 선택 신호로 입력받아 상기 합성부(52)의 출력(vector''[12 : 0])과 상기 합성부(52)의 출력을 한번 쉬프트시킨 값(vector''[11 : 0]&'0')을 new_pmv[12 : 0] 값으로 선택 출력하는 멀티플렉서(55)로 구성된다.
이와같이 구성된 도4의 MV 가산부(15)는 상기 식1에서 다음의 신택스 계산하는 블록이다.
Prediction=PMV[r][s][t];
if((mv_format=="1")&&(t==0)&&(picture_structure=="11"))
prediction=PMV[r][s][t]DIV2;
vector'[r][s][t]=prediction+delta;
if(vector'[r][s][t]〈low)
vector'[r][s][t]=vector'[r][s][t]+range;
if(vec색'[r][s][t]〈high)
vector'[r][s][t]=vector'[r][s][t]-range;
if((mv_format=="1")&&(t==1)&&(picture_structure=="11"));
PMV[r][s][t]=vector'[r][s][t]*2;
Else
PMV[r][s][t]=vector'[r][s][t];
즉, mv_format=="1"이고, t==0이며, picture_structure=="11"이면 낸드 게이트(41)와 앤드 게이트(42)의 출력이 모두 1이 되어 멀티플렉서(43)는 피드백된 이전 매크로 블록의 움직임 벡터 값 pmv[12 : 0]을 쉬프트시킴에 의해 2로 나눈 값(pmv[12, 12 : 0])을 선택 출력하고, 그 이외의 경우에는 피드백되는 pmv[12 : 0]값을 선택 출력한다. 가산기(44)는 상기 MV 델타부(13)의 출력(mv_delta[12 : 0])과 멀티플렉서(43)의 출력을 더하여 vector'[r][s][t]를 구한다. 여기서, vector"는 상기 식1에서 한번 계산한 뒤의 vector'를 나타낸다.
상기 가산기(44)의 출력은 파이프라인식 동작을 위해 플립플롭(45)에 래치되었다가 플립플롭(45)이 클럭에 의해 인에이블되면 다음 블록으로 출력되나.
그리고, 상기 식1의 다음 조건에서
if(vector'[r][s][t]〈low)
vector'[r][s][t]=vector'[r][s][t]+range;
if(vector'[r][s][t]〈high)
vector'[r][s][t]=vector'[r][s][t]-range;
가산기(44)의 출력이 변수 low보다 적으면 탐색 영역 값(range)을 더하고 변수 high보다 작으면 탐색 영역 값(range)을 빼도록 되어있다. 이것을 그대로 구현하면 가산기와 감산기 그리거, 비교기가 필요하게 도어 회로가 복잡해지고 처리시간이 길어지게 된다. 이때, +range는 상위 비트를 0으로 하는 것과 같고, -range는 상위 비트를 1로 하는 것과 같다. 따라서, 본 발명에서는 멀티플렉서와 2∼3개의 게이트로 구성하여 회로를 단순화시키고 처리 속도를 높였다. 즉, 인버터(46), 멀티플렉서(47), 7 : 1 멀티플렉서(48), 선택 테이블(49), 배타적 노아 게이트(50), 및 앤드 게이트(51)가 이 부분에 해당된다.
도5a, 도5b는 정상적인 경우이고, 도5b는 변수 로우를 벗어난 경우이며, 도5c는 변수 high를 벗안 경우이다. 그러므로, 도5b, 도5c의 경우에는 최상위 비트를 반전시켜 주면 된다. 이때, f_code가 가리키는 위치를 기준으로 상위 비트는 부호 비트의 확장이므로 최상위 비트를 반전시키게 되면 f_code가 가리키는 위치를 기준으로 상위 비트값 모두를 함께 반전시켜야 한다. 여기서, f_code가 1일 때 4비트이므로 플립플롭(45)의 출력중 하위5비트(vector'[5 : 0]는 그냥 바이패스시킨다. 상위 8비트(vector'[12 : 5])만을 선택을 위해 바로 그리고 인버터(46)를 통해 반전 시킨 후 멀티플렉서(47)로 출력한다.
그리고, 상기 상위 8비트(vector'[12 : 5])중 하위 7비트(vedtor'[12 : 5])는 멀티플렉서(48)로 입력되는데, 상기 멀티플렉서(48)는 f_code가 가리키는 위치의 값을 선택하여 배타적 오아 게이트(50)로 출력한다. 즉, 상기 7 : 0 멀티플렉서(48)는 f_code가 1∼8일 때 vec색'[5]∼vector[11]을 각각 출력하며 f_code=9를 포함하여 그외의 경우는 don't care이다.
이때, 가산기(44)의 출력이 변수 low 또는 high 벗어나는 경우를 보면, 도5의 (b), (c)와 같이 f_code가 가리키는 위치의 값과 최상위 비트 값이 서로 다름을 알 수 있다.
따라서, 상기 배타적 오아 게이트(50)는 가산기(44)의 출력이 변수 low 또는 high 벗어나는 경우에만 하이 신호를 출력한다. 선택 테이블(49)은 f_code가 가리키는 위치를 기준으로 상위 비트값 모두를 반전시키기 위한 테이블로서, f_code 값에 따라 출력 값이 결정된다.
상기 선택 테이블(49)은 다음의 표4와 같다.
[표 4]
Figure kpo00004
따라서, 멀티플렉서(47)는 선택 테이블(49)의 출력과 배타적 오아 게이트(50)의 출력을 논리 조합하는 앤드 게이트(51)의 출력에 따라 플립플롭(45)에서 바로 출력되는 데이터 또는 인버터(46)에 의해 반전된 데이터를 선택 출력하면 vector'[12 ; 0]값이 항상 [low : high] 영역내에 있게 된다.
그리고, mv_format=="1"이고, t==1이며, picture_structure=="11"인 경우에는 앤드 게이트(54)의 출력이 1이 된다. 앤드 게이트(54)의 출력이 1이 도면 멀티플렉서(55)는 상기 멀티플렉서(47)에서 출력되는 상위 8비트(vector'[12 : 5])와 바이패스된 하위 5비트(vector'[5 : 0])가 먹싱된 값(vector'[12 : 0])을 쉬프트시킴에 의해 2를 곱한 값(vector''[12 : 0]&'0')을 선택하여 new_pmv[12 : 0]으로 출력하고, 그 이외의 경우에는 상기 멀티플렉서(47)에서 출력되는 상위 8비트(vector'[12 : 5])와 바이패스된 하위 5비트(vector'[5 : 0])가 먹싱된 값(vectoer''[12 :0])을 선택하여 new_pmv[12 : 0]으로 출력한다.
한편, PMV 레지스터(16)는 새롭게 계산된 new_pmv를 현재 (r, s, t)에 맞는 pmv 플립플롭에 업데이트하고 또한 현재의 (r, s, t)에 맞는 것은 아니지만 MPEG 스펙에 따라 동시에 업데이트해주어야 하는 다른 pmv 레지스터를 업데이트해주는 기능을 구현한 것으로서, 도6은 PMV 레지스터(16)의 상세 블록도이다. 여기서, PMV[r][s][t]값은 r, s, t값에 따라 8개가 되므로 8개의 플립플롭(64∼71)이 필요하고, 멀티플렉서(72)는 플립플롭(62)의 출력에 따라 8개의 플립플롭(64∼71)의 출력 중 하나를 선택하여 최종 MV값(PMV[12 : 0])이 출력된다.
이때, PMV_rst 신호가 입력되면 모든 pmv 플립플롭(64∼71)은 클리어되고, 상기 MV가산기(15)의 출력은 모든 pmv 플립플롭(64∼71)으로 동시에 입력된다. 그리고, 현재의 (r, s, t)에 맞는 pmv 플립플롭(64∼71)만이 인에이블되고 인에이블된 플립플롭의 출력이 멀티플렉서(72)를 통해 최종 출력된다.
여기서, PMV 업데이트 조건부(61)는 관련 헤더 정보를 조합하여 전방향 업데이트 조건과 후방향 업데이트 조건을 얻는다. MPEG에서는 PMV를 상기와 같이 업데이트할 경우가 있다(여기서, first는 r=0인 경우이고, second는 r=1인 경우를 나타낸다.). 이때, forword(s=0)인 경우의 업데이트 조건이 update_condition_f이고 backward(s=0)인 경우의 조건이 update_conditio_b이다. 즉, update_condition_f와 update_condition_b가 '1'일 때 대응하는 first PMV가 업데이트 될 때 second PMV를 동시에 같은 값으로 업데이트하게 된다.
그리고, 레지스터 인에이블 제어부(63)는 전술한 엡데이트 조건과 현재의 (r, s, t) 그리고, 움직임 벡터의 계산을 알리는 mv_sel_4d에 의해 전술한 바와 같이 업데이트될 수 있도록 플립플롭 인에이블 신호 비트를 각각의 플립플롭(64∼71)으로 출력한다.
이상에서와 같이 본 발명에 따른 MV 디코더에 의하면, 움직임 나머지부, 움직임 코드 테이블부, MV 델타부, MV 가산기, PMV 레지스터로 MV 디코더를 구성하고 각각의 블록에 플립플롭을 두어 각각의 블록들이 한 클럭안에 처리되도록 함과 동시에 MV 디코딩에 필요한 파라미터들을 각 블록에 맞게 지연시킨 후 해당 블록으로 제공함으로써, MV 디코딩이 파이프라인 식으로 동작되어 고속 처리가 가능하게 한다.
또한, MV 디코딩시 연산의 중복성을 제거하고 산술적인 연산 호로를 최소화 하여 회로를 단순화시킨다.
즉, 움직임 코드 테이블부는 VLC 디코딩 테이블의 맵핑 값을 변형하여 mc_code{3 : 0]와 mc_sign, mc_zero로 출력함에 의해 뒷단에서의 연산의 중복성을 제거하여 로직을 줄이고 속도를 높이며, 제어를 쉽고 편하게 한다. 상기 MV 델타부와 MV 가산기는 멀티플렉서와 쉬프터를 기본으로 구성하여 추가 회로를 없애 산술적인 연산회로를 최소화한다. 또한, 상기 MV 가산기에서 델타값과 피드백되는 PMV 값을 더한 결과가 변수 low, high를 벗어나는 경우 멀티플렉서와 소수의 게이트를 이용하여 부호 비트들을 반전시킴으로써, 가산기와 감산기 그리고, 비교기가 필요없게 되어 회로를 단순화시키면서 처리 속도를 높인다.
또한, 똑같은 값으로 PMV를 업데이트할 경우에는 MPEG 스펙에 있는대로 조건을 계산하여 동시에 업데이트시킴으로써, 고속 처리가 가능해진다.

Claims (9)

  1. 엠펙 비디오 디코더에서 움직임 보상에 이용하기 위해 움직임 벡터가 전송되면 이를 디코딩 하는 움직임 벡터 디코더에 있어서, 움직임 벡터 디코딩에 필요한 여러 입력 신호를 각 블록에서 사용할 때 지연이 맞도록 서로 다른 시간으로 지연시키는 파라미터 지연기와, 상기 파라미터 지연기를 통해 출력되는 f_code_d[3 : 0] 값에 따라 입력되는 데이터로부터 움직임 나머지(motion_residual) 값을 추출하여 양의 정수 값으로 출력하는 움직임 나머지부와, 가변 길이 디코딩 테이블을 사용하여 입력되는 데이터로부터 움직임 코드(motion_code[3 : 0])와 움직임 코드의 부호 상태(me_sign), 움직임 코드값의 제로상태(me_zero)를 서치하여 출력하는 움직임 코드 테이블부와, 상기 움직임 나머지부와 움직임 코드 테이블부로부터 움직임 벡터의 차값인 델타값(mv_delta)을 계산하는 움직임 벡터 델타부와, 상기 움직임 벡터 델타부의 델타 값과 바로 이전 매크로블록의 움직임 벡터값을 더하여 새로운 움직임 벡터 값을 출력하는 움직임 벡터 가산부와, 새로운 움직임 새로운 움직임 벡터값을 현재(r, s, t)에 맞는 플립플롭에 업데이트하는 레지스터를 포함하여 구성되며, 상기 각각의 블록에는 플립플롭을 구비시켜 각각의 블록들이 한 클럭안에 처리되도록 함을 특징으로 하는 움직임 벡터 디코더.
  2. 제1항에 있어서, 상기 파라미터 지연기는 (s, t)쌍에 각각 대응되는 4개의 f_code중에서 현재의 (s, t) 쌍에 해당되는 f_code를 선택하고 이를 각 블록에 맞게 지연시켜 해당 블록으로 출력함을 특징으로 하는 움직임 벡터 디코더.
  3. 제1항에 있어서, 상기 움직임 나머지부는 플립플롭으로 입력되는 데이터를 래치한 후 파라미터 지연기를 통해 출력되는 f_code_d[3 : 0] 값에 따라 쉬프터를 사용하여 움직임 나머지 값(motion_residual)을 8비트의 양의 정수 값으로 추출하고 이것을 플립플롭으로 래치하여 출력함을 특징으로 하는 움직임 벡터 디코더.
  4. 제1항에 있어서, 상기 움직임 코드 테이블부는 입력되는 데이터를 플립플롭으로 래치한 뒤에 가변 길이 디코딩 테이블을 사용하여 motion_code[3 : 0]와 mc_zero를 서치하고 이를 플립플롭으로 래치하여 출력하는데, mc_code[3 : 0]는 "abs(motion_code) -1"값을 나타내며 mc_sign은 motion_code의 부호를 나타내며, mc_zero는 motion_code가 0인지 아닌지를 나타냄을 특징으로 하는 움직임 벡터 디코더.
  5. 제1항에 있어서, 상기 움직임 벡터 델타부는 상기 파라미터 지연기를 통해 출력되는 f_code_2d[3 : 0]에 따라 움직임 코드 테이블부에서 출력되는 motion_code[3 : 0]를 ntlvmxm시키는 쉬프터와, 상기 쉬프터의 출력 중 하위 8비트 값과 움직임 나머지부의 출력을 비트별로 논리합한 후 상기 쉬프터의 상위 8비트 값과 먹싱하여 출력하는 논리부와, 상기 논리부의 출력에 상수 1을 더하는 가산기와, 상기 움직임 코드 테이블부로부터 출력되는 움직임 코드의 부호 상태(mc_sign)에 따라 상기 가산기의 출력 또는 반전시킨 논리부의 출력을 선택 출력하는 멀티플렉서와, 상기 움직임 코드 테이블부의 제로 상태(mc_zero)값에 의해 클리어 되며 클럭에 동기 되어 상기 멀티플렉서의 출력에 상기 mc_sign값을 부호 비트로서 먹싱하여 출력하는 플립플롭으로 구성됨을 특징으로 하는 움직임 벡터 디코더.
  6. 제5항에 있어서, 상기 쉬프터는 f_code-2d의 값에서 1을 뺀 만큼 움직임 코드 테이블부의 motion_code[3 : 0]을 쉬프트하고 나머지 delta_t0의 비트들은 '0'으로 만듦을 특징으로 하는 움직임 벡터 디코더.
  7. 제1항에 있어서, 상기 움직임 벡터 가산부는 mv_format=1이고, t=0이며, picture_structure=11이면 피드백 되는 이전 매크로블록의 움직임 벡터 값을 쉬프트에 의해 2로 나눈 후 선택하고 그 이외의 경우에는 피드백되는 이전 매크로블록의 움직임 벡터 값을 선택하여 출력하는 멀티플렉서와, 상기 멀티플렉서의 출력과 움직임 벡터 델타부에서 출력되는 델타값을 더하는 가산기와, 상기 가산기의 출력을 래치한 후 클럭에 동기 시켜 출력하는 플립플롭과, 상기 플립플롭에서 래치된 데이터중 상위 8비트 값을 반전시키는 인버터와, 상기 파라미터 지연기를 통해 출력되는 f_code_4d의 신호에 따라 상위 8비트 중 하위 7비트를 멀티클렉싱하는 7 : 1 멀티플렉서와, 상기 상위 8비트중 최상위 비트와 상기 7 : 1 멀티플렉서의 출력을 배타적 논리합에 의해 비교하는 비교기와, 상기 f_code_4d 신호에 따른 값을 테이블로부터 서치하여 출력하는 선택 테이블과, 상기 비교기의 출력과 선택 테이블의 출력을 논리곱한 후 이를 선택 신호로 사용하여 상기 플립플롭에서 출력되는 상위 8비트 값 또는 상기 인버터의 출력을 선택 출력하는 멀티플렉서와, 상기 멀티플렉서를 통해 출력되는 상위 8비트 값과 상기 플립플롭에서 바이 패스된 하위 5비트를 먹싱하는 합성부와, mv_format=1이고, t=1이며, picture_structure="11"인 경우에는 상기 합성부의 출력을 쉬프트에 의해 2를 곱한 후 선택하고 그 이외의 경우에는 상기 합성부의 출력을 선택하여 새로운 움직임 벡터 값으로 출력하는 멀티플렉서로 구성됨을 특징으로 하는 움직임 벡터 디코더.
  8. 제7항에 있어서, 상기 7 : 1 멀티플렉서는, f_code가 1∼8일 때 vector'[ 5]∼vector[11]을 각각 출력함을 특징으로 하는 움직임 벡터 디코더.
  9. 제1항에 있어서, 상기 레지스터는 상기 움직임 벡터 가산부의 출력을 동시에 입력으로 받고 r, s, t값에 따라 각각 인에이블되어 업데이트되는 다수개의 플립플롭과, 상기 다수개의 플립플롭중 업데이트되는 플립플롭의 출력을 선택하여 최종적인 움직임 벡터 값으로 출력함과 동시에 상기 움직임 벡터 가산부로 피드백 시키는 멀티플렉서와, 관련 헤더 정보를 조합하여 전방향 업데이트 조건과 후방향 업데이트 조건을 계산하는 업데이트 조건부와, 상기 업데이트 조건부의 업데이트 조건과 현재의 (r, s, t) 그리고, 움직임 벡터의 계산을 알리는 mv_sel-4d에 의해 상기 다수개의 플립플롭중 해당 플립플롭이 업데이트될 수 있도록 플립플롭 인에이블 신호 비트를 각각의 플립플롭으로 출력하는 레지스터 인에이블 제어부로 구성됨을 특징으로 하는 움직임 벡터 디코더.
KR1019970080708A 1997-12-31 1997-12-31 움직임 벡터 디코더 KR100257191B1 (ko)

Priority Applications (2)

Application Number Priority Date Filing Date Title
KR1019970080708A KR100257191B1 (ko) 1997-12-31 1997-12-31 움직임 벡터 디코더
US09/221,822 US6215823B1 (en) 1997-12-31 1998-12-28 Motion vector decoder

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
KR1019970080708A KR100257191B1 (ko) 1997-12-31 1997-12-31 움직임 벡터 디코더

Publications (2)

Publication Number Publication Date
KR19990060481A KR19990060481A (ko) 1999-07-26
KR100257191B1 true KR100257191B1 (ko) 2000-05-15

Family

ID=19530420

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970080708A KR100257191B1 (ko) 1997-12-31 1997-12-31 움직임 벡터 디코더

Country Status (2)

Country Link
US (1) US6215823B1 (ko)
KR (1) KR100257191B1 (ko)

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2000324498A (ja) * 1999-05-13 2000-11-24 Nec Corp 動画像符号化装置
US6775414B1 (en) * 1999-11-19 2004-08-10 Ati International Srl Variable-length code decoder
US7113545B2 (en) * 2000-08-28 2006-09-26 Thomson Licensing Method and apparatus for motion compensated temporal interpolation of video sequences
US6873655B2 (en) 2001-01-09 2005-03-29 Thomson Licensing A.A. Codec system and method for spatially scalable video data
US7072402B2 (en) * 2002-05-13 2006-07-04 General Instrument Corporation Methods and apparatus for dynamically adjusting f-codes for a digital picture header
KR100506864B1 (ko) * 2002-10-04 2005-08-05 엘지전자 주식회사 모션벡터 결정방법
US20050169376A1 (en) * 2004-01-30 2005-08-04 Pai Ramadas L. Motion vector address computer error detection
KR100987776B1 (ko) * 2004-02-04 2010-10-13 삼성전자주식회사 영상의 움직임 벡터 정보의 치환을 이용한 스크램블 장치및 방법
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
CN100583649C (zh) * 2007-07-23 2010-01-20 华为技术有限公司 矢量编/解码方法、装置及流媒体播放器
KR20110082840A (ko) * 2010-01-12 2011-07-20 삼성전자주식회사 음량 조절 방법 및 장치

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0497586A3 (en) * 1991-01-31 1994-05-18 Sony Corp Motion detection circuit
US5761200A (en) * 1993-10-27 1998-06-02 Industrial Technology Research Institute Intelligent distributed data transfer system
US5576765A (en) * 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
US5566089A (en) * 1994-10-26 1996-10-15 General Instrument Corporation Of Delaware Syntax parser for a video decompression processor
JPH08237660A (ja) * 1995-02-27 1996-09-13 Sony Corp 画像処理装置およびその方法
US5610659A (en) * 1995-05-08 1997-03-11 Futuretel, Inc. MPEG encoder that concurrently determines video data encoding format and rate control

Also Published As

Publication number Publication date
US6215823B1 (en) 2001-04-10
KR19990060481A (ko) 1999-07-26

Similar Documents

Publication Publication Date Title
US6215424B1 (en) System for variable length codeword processing suitable for video and other applications
US7804903B2 (en) Hardware-based CABAC decoder
US5825680A (en) Method and apparatus for performing fast division
US5576765A (en) Video decoder
KR100887524B1 (ko) 모션 정보 코딩 및 디코딩 방법
KR100257191B1 (ko) 움직임 벡터 디코더
CA1137216A (en) Method and apparatus for video signal encoding with motion compensation
US5563813A (en) Area/time-efficient motion estimation micro core
JPH08275160A (ja) 離散余弦変換方法
JPH08280007A (ja) プロセッサ及び転送方法
KR100470251B1 (ko) 가변길이디코더
US6108378A (en) Video encoder and decoder image motion estimation system with reduced computation
JPH09102954A (ja) 1つまたは2つの予測ブロックからブロックの画素値を計算する方法
JPH08275149A (ja) データ符号化方法
KR100203266B1 (ko) 윤곽선복호화장치
KR100191318B1 (ko) 고속의 동벡터 복호회로
JPH11103257A (ja) 算術符号化復号化装置
KR0178746B1 (ko) 매크로블럭의 반픽셀처리장치
KR100282448B1 (ko) 움직임 벡터 디코딩 장치
KR0136461B1 (ko) 엘펙2의 비프레임 처리장치
KR100195721B1 (ko) 모션 벡터 디코딩 회로
KR0155815B1 (ko) 화소 보간을 위한 반올림 연산장치
KR100202306B1 (ko) Mpeg-2 영상압축장치용 움직임정보 가변장 부호화 장치
KR100249087B1 (ko) 동영상 엔코더를 위한 반화소 단위의 움직임 추정 장치 및 방법
Zandonai et al. An architecture for MPEG motion estimation

Legal Events

Date Code Title Description
A201 Request for examination
E902 Notification of reason for refusal
E701 Decision to grant or registration of patent right
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20101223

Year of fee payment: 12

LAPS Lapse due to unpaid annual fee