KR20010043480A - 디지털 방식으로 인코딩된 비디오 신호를 디코딩하기 위한가변길이 디코더 - Google Patents

디지털 방식으로 인코딩된 비디오 신호를 디코딩하기 위한가변길이 디코더 Download PDF

Info

Publication number
KR20010043480A
KR20010043480A KR1020007012555A KR20007012555A KR20010043480A KR 20010043480 A KR20010043480 A KR 20010043480A KR 1020007012555 A KR1020007012555 A KR 1020007012555A KR 20007012555 A KR20007012555 A KR 20007012555A KR 20010043480 A KR20010043480 A KR 20010043480A
Authority
KR
South Korea
Prior art keywords
variable length
data
decoder
encoded data
decoding
Prior art date
Application number
KR1020007012555A
Other languages
English (en)
Inventor
모쉬 버블릴
서브로토 보세
시리쉬 씨. 가드리
Original Assignee
밀러 제리 에이
소니 일렉트로닉스 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 밀러 제리 에이, 소니 일렉트로닉스 인코포레이티드 filed Critical 밀러 제리 에이
Publication of KR20010043480A publication Critical patent/KR20010043480A/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
    • 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/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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/13Adaptive entropy coding, e.g. adaptive variable length coding [AVLC] or context adaptive binary arithmetic coding [CABAC]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/70Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by syntax aspects related to video coding, e.g. related to compression standards
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • H04N19/91Entropy coding, e.g. variable length coding [VLC] or arithmetic coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

본 발명은 MPEG-1 및 MPEG-2 신택스 순응(syntax compliant) 비디오 비트 스트림을 디코딩하기 위한 가변길이 디코더(VLD : Variable Length Decoder)(104)에 관한 것이다. 이러한 VLD(104)는, 새로운 지시 세트(214a, 214g)를 사용하여 MPEG 디코딩 처리를 제어하기 위해서 마이크로-시퀀서(134)와 VLD 명령 디코딩/수행 유닛(136)을 포함한다. 지시 세트(214a 내지 124g)는 비디오 데이터를 디코딩하기 위한 명령 세트와 흐름 제어 지시 세트를 포함한다. MPEG 표준 가변길이 코드(VLC : Variable Length Code)표를 사용하여 가변길이로 디코딩하기 위한 가변길이 표 디코더(186)와 이러한 VLD(104)에 이용 가능한 비디오 비트 스트림으로부터 사전에 결정된 수의 인코딩된 비트를 생성하기 위한 회전자/원통 시프터(rotator/barrel shifter)(158)가 제공된다. 이러한 가변길이 표 디코더(186)는 모든 VLC표에 걸쳐서 접두부 패턴 매칭 구조(prefix pattern matching scheme)를 공유하며, 그 가변길이 코드를 일련의 하위표로 조직한다. 각 하위표는 이러한 고유한 접두부 패턴 중 하나에 대응한다. 가변길이 코드는, 비디오 데이터 비트 스트림에서의 선행 패턴을 식별함과 함께 이러한 선행 패턴에 대응하는 하위표에 액세스함으로써 디코딩된다. 런-렝쓰(run-length) 및 진폭 레벨 DCT 계수 기호는 압축된 형태로 저장되며, 역변환 유닛(208)에 의해 필요시마다 디코딩된다. 모션 벡터는 또한, 모션 보상 회로(212)에 의해 필요할 때까지 저장된다.

Description

디지털 방식으로 인코딩된 비디오 신호를 디코딩하기 위한 가변길이 디코더{VARIABLE LENGTH DECODER FOR DECODING DIGITALLY ENCODED VIDEO SIGNALS}
비디오 신호의 디지털 송신은 근래에, 특히 가전 산업에서 좀더 광범위하게 사용되게 되었다. 디지털 다기능 디스크(DVD) 플레이어 및 디지털 비디오 방송 (DVB) 셋-톱-박스 응용에서의 디지털 비디오 신호 송신 및 수신의 사용 증가는, 예컨대 송신된 이미지 시퀀스에서의 개선된 화상 품질과 기존의 NTSC 및 PAL 아날로그 송신 시스템을 통한 비디오 신호의 저장, 조작 및 디스플레이를 좀더 효과적으로 제어할 수 있는 능력을 유도하여 왔다. 이러한 진보에 더하여, 국제 표준화 기구(ISO : International Organization for Standardization)에 의해 설립되고, 해당 업계로부터 후원을 받아온 동화상 전문가 그룹(MPEG : Moving Pictures Expert Group)은 디지털 비디오 압축을 위한 포맷, 즉 비디오 비트 스트림을 인코딩하기 위한 신택스(syntax)를 명시하였으며, 이것은 두 표준{ISO-11172-2(MPEG-1) 및 ISO-13818-2(MPEG-2)}으로 정의된다. 이하의 논의에서, 독자는, 이러한 표준에 따라서 비디오 신호를 디지털 방식으로 인코딩하는데 사용되는 비트 스트림 신택스의 좀더 상세한 설명을 위해서 ISO-11172-2(MPEG-1) 및 ISO-13818-2(MPEG-2)를 참조하길 바란다. 이러한 표준은 각각 본 명세서에서 전체적으로 참조로써 명확히 병합된다.
MPEG-1 및 MPEG-2 표준에 의해 정의된 비트 스트림 신택스는, 비트 스트림에서의 정보 또는 데이터의 세 가지 일반 유형, 즉 비트 스트림을 정의하는데 필요한 제어 정보, 송신된 이미지 시퀀스를 적절하게 압축해제하고 재생하는데 필요한 제어 정보 및 인코딩된 비디오 데이터에 관한 것이다. 비트 스트림 제어 정보는, 비트 스트림이 패킷화된 비디오 데이터 또는 오디오 데이터인지를 식별하거나, 비트 스트림이 예컨대 MPEG-1 또는 MPEG-2 표준 중 하나를 사용하여 인코딩된 비디오 신호인지를 식별할 수 있다. 이미지 제어 정보는, 일 예로 프레임의 수평 및 수직 크기, 즉 라인당 화소의 수 및 프레임당 라인의 수, 프레임 또는 필드 율 및 종횡비를 포함할 수 있다. 이하에서 좀더 상세하게 설명되는 바와 같이, 인코딩된 비디오 데이터는, 각 프레임 또는 필드의 재생에 필요한 DCT(Discrete Cosine Transform) 변형되고, 양자화된 색차 및 휘도 화소값을 나타낸다.
MPEG-1 및 MPEG-2 표준은 각각, 공간 및 시간 중복(spatial and temporal redundancies)을 제거하는 방법에 의해서 정보 밀도 및 코딩 효율을 개선하도록 설계된 비트 스트림 신택스를 명시한다. 각 MPEG 화상은, 16 × 16 휘도 화소(Y) 또는 네 개의 8 × 8 변형된 화소 블록의 2 × 2 어레이로 이루어진 일련의 매크로블록으로 나누어진다. 각 매크로블록은 추가로 8 × 16 색차 화소(U, V) 또는 두 개의 8 × 8 화소 블록의 1 × 2 어레이로 이루어`진다. 인코딩 처리 도중에, 양자화, Z자형(zigzag) 주사, 및 런 어브 제로(runs of zero){런-렝쓰(run-length)} 및 진폭 레벨에 대한 가변길이 코딩이 뒤따라오는 8 × 8 화소 블록의 이산 코사인 변환(DCT) 코딩을 사용하여 공간중복이 제거된다. 모션 보상 예측(motion compensated prediction)이 시간 중복을 제거하는데 사용된다.
비디오에 대해서, MPEG는 내부(I-) 프레임, 예측(P-) 프레임 및 양방향 예측(B-) 프레임을 고려한다. I-프레임은 독립적으로 코딩되며, 세 가지 프레임 유형 중 가장 비효과적으로 코딩된다. P-프레임은 I-프레임 보다 더 효과적으로 코딩되며, 이전에 코딩된 I-프레임 또는 P-프레임에 관련해서 코딩된다. B-프레임은 세 가지 프레임 유형 중 가장 효과적으로 코딩되며, 그 이전 및 그 다음에 코딩되는 I-프레임 또는 P-프레임 모두에 관련해서 코딩된다. MPEG 시스템에서의 프레임의 코딩 순서는 프레임의 표시 순서와 반드시 동일할 필요는 없다. 비트 스트림에서의 헤더는, 동화상의 표시를 위해서 프레임의 시간 및 시퀀스를 적절하게 디코딩하도록 디코더에 의해 사용되는 정보를 제공한다.
디지털 방식으로 송신된 비디오 비트 스트림을 디코딩하는데 사용되는 전형적인 비디오 디코더는 가변길이 디코더(VLD : Variable Length Decoder)를 제어하는 마이크로-컨트롤러 또는 시퀀서를 가지며, 이러한 가변길이 디코더는 MPEG 가변길이 코드표(VLC's)를 사용하여 양자화된 DCT 계수 및 모션 벡터를 디코딩하기 위해 비트 스트림을 파싱(parsing)하도록 설계된다. 역변환 프로세서가 양자화된 계수값의 각 블록을 역 Z자형 블록을 나타내는 값의 스트림으로 변환하고, 이 값을 양자화해제 하는데 사용된다. 양자화해제된 DCT 계수는, 색차 및 휘도 화소값을 복구하기 위해서 역 DCT 변환 동작을 수행하는 역 이산 코사인 변환(IDCT : Inverse Discrete Cosine Transform) 프로세서에 전달된다. 그런 다음, 이러한 값은, 디코딩된 모션 벡터와 결합하여, 모션 보상(MC) 프로세서에 인가되며, 이때 이 모션 보상 프로세서는 I-프레임, P-프레임 및 B-프레임을 완전 비디오 프레임으로 변환하기 위해서 MPEG 압축해제를 수행한다.
MPEG 신택스 순응(compliant) 비트 스트림 파싱 및 디코딩을 수행하기 위한 전형적인 VLD 구조에서, 비디오 비트 스트림의 사전에 결정된 수의 디코딩되지 않은 비트는 하나 이상의 레지스터에 저장된다. VLD는, 최좌측 비트가 VLD에 의해 추출되는 제 1 비트로서 항상 할당되는 레지스터(들)로부터 더 작은 수의 이러한 비트를 추출한다. 그런 다음, VLD는 가변길이로 인코딩된 비디오 데이터를 디코딩하고 코드 길이를 획득하기 위해서 MPEG VLC표 중 하나에서 표 탐색(look-up)을 수행한다. 추출된 비트에서 가변길이 코드가 디코딩되어진 후, VLD는, 레지스터(들)의 최좌측에 제 1 비사용 비트를 재할당하기 위해서 레지스터(들) 내의 비트에 대한 마스크(MASK)/시프트(SHIFT)/논리곱(OR) 연산을 수행한다. VLC표는 전형적으로 대략 2n× m의 메모리 장소를 갖는 하나 이상의 PALS 또는 ROMs에 포함되며, 여기서 "n"은 각각의 VLC표에서의 최대로 가능한 가변 코드길이를 나타내며, "m"은 고유한 VLC표의 총수를 나타낸다.
당업자는, 특정한 VLD 구조에서 디코딩 처리 후에 비사용 비트의 할당에 필요한 시프트/마스크/논리곱 연산이 VLD의 전체 디코딩 속도에 상당히 영향을 미침을 이해할 것이다. 이러한 연산 각각이 하나 이상의 주기를 필요로 할 수 있으므로, VLD의 디코딩 효율은, VLD가 각 DCT 계수 기호(즉, 각 런-렝쓰 및 진폭 레벨 쌍)를 디코딩하고 이후 비사용 비트를 재할당하기 위해서 다수의 주기를 필요로 함에 따라 상당히 감소된다. 게다가, 특정 VLD 구조에서의 VLC표 구성은, 각 고유한 VLC표의 각 가변길이 코드가 독립된 메모리 장소에 저장됨에 따라 VLD의 가격과 복잡성을 증가시킨다.
따라서, MPEG-1 또는 MPEG-2 표준에 따라 인코딩되어진 가변길이 DCT 계수 및 모션 벡터를 효과적으로 디코딩하는 VLD에 대한 요구가 있다. 다양한 MPEG 가변길이 코드를 디코딩하는데 필요한 메모리 량을 최소화하는 VLD에 대한 요구가 또한 있다. 사전 정의된 지시 세트에 따라 마이크로-시퀀서로부터 지시를 수신할 수 있고, 추가로 마스터 제어기로부터 지시를 수신할 수 있는 VLD에 대한 요구도 또한 있다.
본 출원은, 1998년 5월 18일에 출원된 공동 계류중인 가출원(일련번호 : 60/085,797)의 출원 이익을 청구하며, 이러한 가출원의 개시는 본 명세서에서 전체적으로 참조로써 명확히 병합된다.
본 발명은 디지털 방식으로 인코딩된 비디오 신호의 디코딩에 관한 것으로, 좀더 특별히는 고정 길이 값과 가변 길이(variable length) 코드를 사용하여 인코딩되어진 비디오 데이터 및 제어 정보를 디코딩하기 위한 디코더에 관한 것이다.
도 1은 본 발명의 원리에 따라 디지털 오디오/비디오 신호 데이터 압축해제 및 출력을 수행하기 위한 비디오/오디오 디코더의 블록도.
도 2는 디지털 방식으로 인코딩된 비디오 데이터 및 제어 정보를 디코딩하기 위해서 가변길이 디코더 즉 VLD를 포함하는, 도 1에 도시된 디코딩 시스템에서의 비디오 디코더의 블록도.
도 2a는, 도 2에 도시된 비디오 디코더 내의 마이크로-시퀀서 및 VLD 명령/디코딩 수행 유닛의 블록도.
도 3은, 도 2의 가변길이 디코더(VLD) 명령 디코딩/수행 유닛 및 가변길이 표 디코더에 인코딩된 비디오 데이터의 32-비트 증가를 제공하는 회전자/원통 시프터 회로의 개략도.
도 4는, 도 2의 가변길이 디코더(VLD) 명령 디코딩/수행 유닛에 의해 액세스되는 "매크로블록_주소_증가" 가변 길이 코드(VLC)표의 패턴 매치 구성도.
도 5는, 비디오 데이터의 압축해제 처리 과정에서 가변길이 코드(VLC)표에 액세스할 때 도 2의 가변길이 디코더(VLD)에 의해 사용되는 디코딩 로직 회로의 기능적인 블록도.
도 6a는 TBIT 지시에 대한 마이크로-시퀀서 지시 포맷.
도 6b는 ICMD, CMDI 지시에 대한 마이크로-시퀀서 지시 포맷.
도 6c는 COMP 지시에 대한 마이크로-시퀀서 지시 포맷.
도 6d는 BRANCH 지시에 대한 마이크로-시퀀서 지시 포맷.
도 6e는 SETF 지시에 대한 마이크로-시퀀서 지시 포맷.
도 6f는 INCM 지시에 대한 마이크로-시퀀서 지시 포맷.
도 6g는 HALT 지시에 대한 마이크로-시퀀서 지시 포맷.
본 발명은, 특히 MPEG-1 및 MPEG-2 신택스 순응 비디오 비트 스트림에 적합한 가변길이 비디오 디코더에서 구현된다. 이러한 비디오 디코더는, DCT 계수값 및 모션 벡터를 생성하기 위해서 개별 슬라이스의 매크로블록 및 블록 층을 디코딩하기 위하여 주기당 단일 사건 슬라이스 파싱 엔진으로서 설계된다.
비디오 디코더는, MPEG 표준에 따라 가변길이 디코딩 처리를 제어하기 위해서 VLD 명령 디코딩/수행 유닛과 인터페이스하는 마이크로-시퀀서를 병합한다. 디코딩 처리 도중에, 마이크로-시퀀서는, 가변길이 디코딩을 수행하기 위해서 명령을 VLD 명령 디코딩/수행 유닛에 발급하거나, 지시 ROM에 저장된 자신의 지시 세트를 통해서 제공됨에 따라 프로그램 흐름을 제어한다. 비디오 디코더는 추가로 RISC CPU로부터 디코딩 지시를 수신할 수 있으며, 이 RISC CPU는 디코딩된 이미지 시퀀스의 재구성을 위한 전체 디코딩 처리의 상위층 파싱 및 제어를 책임진다.
인코딩된 비디오 데이터는 DRAM 메모리에 저장되며, 채널 버퍼 FIFO를 통해서 비디오 디코더에 이용 가능하게 된다. 본 발명의 하나의 취지에 따라, 사전에 결정된 수의 이러한 인코딩된 비디오 데이터 비트는, 회전자/원통 시프터(rotator/barrel shifter) 및 포인터 레지스터를 이용하여 비디오 디코더 및 가변길이 표 디코더에 사용 가능하게 된다. 원통 시프터 및 포인터 레지스터는, 비디오 디코더 및 가변길이 표 디코더 모두에 대해 회전자/원통 시프터 데이터로서, 포인터 주소에서 포인터 주소 + 31에 이르는 비트를 사용 가능하게 만든다. 비디오 디코더는, 각 슬라이스에게 필요한 DCT 계수 및 모션 벡터를 획득하기 위해서 회전자/원통 시프터 데이터에서 가변길이 코드를 디코딩해야 한다. 가변길이 코드가 디코딩되어진 후, 회전자/원통 시프터의 포인터 레지스터는 그 다음 디코딩 주기를 대비하기 위해서 증가된다.
본 발명의 또 다른 취지에 따라, 필요한 디코딩된 값을 획득하기 위해서 비디오 디코더가 각 MPEG VLC표에 액세스하게 하는 새로운 구조가 제공된다. 각 MPEG VLC표는, 각 표에서 식별되는 고유한 접두부 패턴(prefix pattern)에 의해 정의되는 바와 같은 일련의 하위표(subtable)로 나누어진다. 가변길이 디코딩 처리 도중에, 32 비트의 추출된 회전자/원통 시프터 데이터가, 회전자/원통 시프터 데이터의 고유한 접두부 패턴을 식별하기 위해서 가변길이 표 디코더의 패턴 매치 로직(pattern match logic) 및 MUX 제어에 인가된다. 동시에, 그 접두부 패턴 이후의 비트는 MPEG VLC표 각각에서 모든 하위표에 인가된다. 가변길이로 인코딩된 데이터가 디코딩되어진 후, 가변길이 표 디코더는 디코딩된 값과 유효한 코드 상태 비트를 제공한다. 가변길이 표 디코더는 또한 코드 길이만큼 포인터 레지스터를 증가시키기 위해서 코드 길이 신호를 회전자/원통 시프터의 포인터 레지스터에 인가한다.
본 발명의 또 다른 취지에 따라, 디코딩된 DCT 계수는 런-레벨(run-level) 디코더/FIFO에서 압축된 런-렝쓰 및 진폭 레벨 쌍으로 저장된다. 런-레벨 디코더/FIFO는 런-렝쓰 및 진폭 레벨 쌍을, 역 변환 유닛이 필요로 함에 따라 DCT 계수로 압축해제한다. 이것은, 사전에 디코딩된 런-레벨 쌍의 런-레벨 디코딩과 동시에 호프만 방식으로 인코딩된 가변길이 쌍의 디코딩을 가능케 한다. 모션 벡터는, 모션 보상 유닛이 이러한 모션 벡터를 필요로 할 때까지 mv/dmv FIFO에 저장된다.
본 발명의 앞선 취지 및 다른 취지, 목적 및 이점은 수반한 도면과 이에 따른 설명을 통해서 명백해질 것이다.
본 명세서에 병합되어 본 명세서의 일 부분을 구성하는, 첨부된 도면은, 본 발명의 실시예를 예시하며, 앞에서 주어진 발명의 일반적인 설명과 이하에서 주어진 실시예의 상세한 설명과 함께 본 발명의 원리를 설명하는 역할을 한다.
도면, 특히 도 1을 참조하여, 디지털 방식으로 인코딩된 비디오 신호의 오디오/비디오 디코딩 및 압축해제된 비디오 이미지의 표시를 수행하는 다양한 기능 모듈(102 내지 112)을 병합하는 디코딩 시스템(100)이 도시된다. 바람직하게, 디코딩 시스템(100)은, 예컨대 디지털 다기능 디스크(DVD) 및 디지털 비디오 방송(DVB) 셋-톱-박스(STB) 응용에서의 디지털 오디오/비디오 수신을 위한 응용 주문형 집적회로(ASIC)로서 구성된다. 도 1에 예시한 기능 유닛은 예시적이며, 실제로 구현할 때에는 추가적인 기능 유닛이 포함될 수 있음을 알 수 있을 것이다. 기능 유닛(102 내지 112) 각각은 다양한 방식으로 큰 오프-칩 메모리(114)와 상호 동작하며, 이러한 오프-칩 메모리는 다이내믹 랜덤 액세스 메모리, 즉 DRAM이다. DRAM(114)에 대한 액세스는 ASIC(100) 상의 메모리 제어기(116)에 의해 제어된다.
예시적으로, ASIC(100)의 몇 가지 기능 유닛이 설명될 것이다. 이러한 기능 유닛은, 바람직하게 72Mbps까지의 데이터 율로 라인(118)을 통해서 디지털 방식으로 인코딩된 비디오/오디오 입력 신호를 수신하는 프로그램 가능한 입력 디멀티플렉서(102)를 포함한다. 디지털 방식으로 인코딩된 비디오/오디오 신호는 패킷화된 데이터의 직렬 비트 스트림이며, 이것은 패킷 데이터의 구성을 식별하기 위해 사전에 정의된 비트 스트림 신택스를 갖는 "패킷화된 기본 스트림", 즉 PES(Packetized Elementary Stream)로 일반적으로 지칭된다. 디멀티플렉서(102)는, 유입되는 디지털 방식으로 인코딩된 신호를 비디오, 오디오 또는 다른 데이터의 개별 패킷으로 파싱하며, 이 입력 신호를 메모리 제어기(116)를 사용하여 DRAM(114) 내의 버퍼에 저장한다. 이하에서 좀더 상세하게 설명되는 바와 같이, 본 발명의 원리에 따른 비디오 디코더(104)는 DRAM(114) 내의 버퍼에 저장된 비디오 데이터 및 이미지 제어 정보를 검색하고, 이 비디오 데이터 및 제어 정보를 디코딩하며{DRAM 메모리(114)에 대한 빈번하고 반복적인 액세스를 이용하여}, 이후에 이러한 디코딩된 비디오 정보를 버스(120)를 통한 모니터로의 출력을 위하여 출력 인코더(108)에 전달하는 기능을 한다. 출력 인코더(108)는 바람직하게, NTSC의 경우 30fps의 720 × 480 픽셀의 이미지 크기를 제공하고, PAL의 경우 25fps의 720 × 576 픽셀의 이미지 크기를 제공하는 NTSC/PAL 인코더이다. 오디오 디코더(106)는 DRAM(114)으로부터 오디오 정보를 검색하여, 출력하기 위해서 이 오디오 정보를 디코딩하며, 출력하기 위해서 이 오디오 정보를 버스(122)를 통해서 스피커에 전달한다. ASIC(100)는 또한 라인(124)을 통해서 호스트 마이크로-제어기와 상호 동작하기 위해 호스트 인터페이스(110)를 포함하며, 이는 호스트 컴퓨터가 ASIC(100)의 동작을 모니터하고 제어할 수 있도록 한다.
예시된 기능 유닛이외에, 서브화상(subpictures) 비디오 정보를 디코딩하는 하나 이상의 추가적인 비디오 디코딩 유닛이 있을 수 있으며, 이러한 서브화상 비디오 정보는 비디오 디코더(104)에 의해 디코딩되는 주(main) 비디오를 수반하는 자막 또는 다른 정보를 병합할 수 있다. 더 나아가, 온-스크린 디스플레이(on-screen display)가 RBUS(126) 및 GBUS(128)에 연결된 OSD 섹션에 의해 ASIC(100) 내에서 생성될 수 있다. 온-스크린 디스플레이는, 호스트 CPU의 동작 및/또는 ASIC(100)가 사용되는 장치의 재생 상태 또는 수신 상태에 피드백을 제공하기 위해서 호스트 CPU로부터 수신된 명령에 반응하여 생성될 수 있다.
응용 주문형 집적회로(100)의 제어는 감소된 지시 세트 중앙 처리 유닛(RISC CPU : Reduced Instruction Set Central Processing Unit)(112)에 의해 제공되며, 이 RISC CPU는 ASIC(100)의 다른 기능 유닛 각각의 동작을 제어하고 모니터한다. RISC CPU(112)는 지시 메모리(130)에 저장된 16비트 지시에 응답한다. 지시 메모리(130)는, ASIC(100)의 상대적으로 간단한 프로그램에 적합한 4096 16비트 지시를 보유한다. ASIC(100)에 의해 수행될 수 있는 좀더 복잡한 프로그램에 있어서는, 4096 지시 "페이지"가 DRAM(114) 내의 훨씬 더 큰 지시 버퍼로부터 프로그램 메모리(130)에 교체 진입 및 방출될 수 있다.
도 1에 예시한 바와 같이, RISC CPU(112)는, RBUS(126) 및 GBUS(128)로 공지되는 두 개의 주 버스를 통해서 ASIC(100)의 기능 유닛 각각과 상호 동작한다. 특히, 각 기능 유닛은, 데이터가 검색되고 메모리 제어기(116)에 전달될 수 있게 하며, 따라서 DRAM(116)에 또는 DRAM(116)으로부터 검색되고 전달될 수 있게 하는 64 비트 GBUS(128)에 연결된다. 더 나아가, 데이터 블록은 이 GBUS(128)를 통해서 하나의 기능 유닛으로부터 다른 기능 유닛으로 전송될 수 있다.
메모리 액세스 또는 전송뿐만 아니라 다양한 다른 명령에 대한 요구는 RBUS(126)를 통해서 하나의 기능 유닛으로부터 다른 기능 유닛으로 전달된다. RBUS(126)는, 빈번한 메모리 액세스를 시도하는 기능 유닛에 의해서 사용되는 하나 이상의 32 비트 버스 또는 몇몇 기능 유닛에 의해 공유되는, 단일 8비트 시간 다중화된 버스를 포함할 수 있다. RBUS 제어기(132)는 RBUS(126) 사용에 대한 요구를 수신하며, 필요시 이러한 요구 사이를 중재하며, RBUS에 대한 액세스를 가장 높은 우선순위로 요구한 기능 유닛에 전달한다.
메모리 액세스가 요구될 때, 요구한 기능 유닛(102 내지 112)은 가상 주소를 RBUS(126)를 통해서 메모리 제어기(116)에 전달한다. 메모리 액세스 요구는 하나의 메모리 장소의 전달을 요구할 수 있거나, 이러한 요구에 반응하여 액세스될 많은 메모리 장소에 대한 식별을 포함할 수 있다. 메모리 제어기(116)는, 이러한 요구에 응답하여 DRAM(114)에서의 식별된 장소에 대한 액세스를 관리함으로써 이러한 요구에 반응한다. 임의의 시간에 메모리 액세스에 대한 다수의 요구가 대기중이라면, 언제라도 메모리 제어기(116)는, 가장 높은 우선순위로 요구한 기능 유닛에 대한 액세스를 허용하기 위해서 이러한 대기중인 요구 사이를 중재할 것이다. 요구에 반응하는 메모리 제어기(116)의 동작에 대한 좀더 상세한 사항은, 1997년 4월 30일에 출원된 "디지털 비디오를 위한 메모리 주소 생성"이라는 제목의 공동 계류중인 US 특허 출원(일련번호 : 08/846,590)에서 알 수 있으며, 이것은 참조로써 본 명세서에 전체적으로 병합된다. 또한, RISC CPU(112)의 동작과 감소된 지시 세트에 대한 상세한 사항은, 1997년 5월 30일에 출원된 디지털 오디오 비디오 디코딩을 위한 특수한 목적의 프로세서라는 제목의 공동 계류중인 US 특허 출원(일련번호 : 08/865,749)에서 알 수 있으며, 이것은 참조로써 본 명세서에 전체적으로 병합된다.
다양한 기능 유닛의 상태에 대한 추가적인 데이터는 RBUS(126)를 통해서 이용 가능하다. 기능 유닛은, RBUS(126)를 통해서 식별된 특정 주소로 액세스될 수 있는 상태 정보를 제공한다. 따라서, 예컨대 비디오 디코더(104)로부터 상태 워드를 액세스하기 위해서, DEC_VALUE 주소 식별 액세스 요구가 RBUS 제어기(132)에 전달된다. 이에 응답하여, RBUS 제어기(132)는 비디오 디코더(104)의 상태 워드가 요구하는 기능 유닛에 전달되게 한다.
명령은 또한 RBUS(126)를 통해서 기능 유닛에 전달된다. 명령을 기능 유닛에 전달하기 위해서, 명령은 RBUS를 통해서 기능 유닛을 위한 특정 주소로 향한다. 따라서, 예를 들면, 명령을 비디오 디코더(104)에 전달하기 위해서, VLD_CMD 주소를 식별하는 액세스 요구가 RBUS 제어기(132)에 전달된다. 이에 응답하여, RBUS 제어기(132)는 요구하는 기능 유닛이 명령을 RBUS(126)에 전달하게 하며, 비디오 디코더(104)가 이 명령을 자신의 명령 버퍼로 수신하게 한다.
비디오 디코더(104)가 본 발명의 중심이며, 이 디코더의 동작 및 특징은 도 2 내지 도 6g에서 대부분 명확하게 도시된다. 본 발명의 원리에 따라, 비디오 디코더(104)는 특히 MPEG-1 및 메인 프로파일@메인 레벨 MPEG-2 신택스 순응 디지털 방식으로 인코딩된 비디오 신호의 비디오 디코딩을 수행하도록 개조된다. 전체적으로 참조로써 본 명세서에 병합되는 ISO/IEC 13182-2:1995(E)에서 설명된 바와 같이, MPEG-2 신택스는 6개의 계층(시퀀스 계층, 화상 그룹 계층, 화상 계층, 슬라이스 계층, 매크로블록 계층 및 블록 계층)에서 이미지 시퀀스를 나타내는 비디오 데이터 및 제어 정보의 압축된 비트 스트림을 정의한다. 인코딩된 비트 스트림에서의 이러한 계층 각각은, 계층을 식별하고, 고정된 길이의 데이터 값이나 가변길이의 호프만 방식으로 인코딩된 데이터중 하나를 제공하거나 모두 제공하는 고유한 시작 코드를 포함하며, 이것은 비디오 디코더(104)에 의해 파싱되고 디코딩 되어야 한다. 슬라이스 계층 위에 있는 이미지 제어 정보의 상위 계층 파싱은 RISC CPU(112)에 의해 처리된다. 이러한 방식으로, RISC CPU(112)는, 비디오 비트 스트림에서 송신된 이미지 시퀀스의 압축해제, 복원 및 표시를 제어하기 위해서 압축된 비디오 비트 스트림으로부터 충분한 정보를 획득한다.
이제 도 2와 도 2a를 참조하면, 비디오 디코더(104)의 블록도가 상세하게 도시되어 있다. 이하에서 좀더 상세하게 설명되는 바와 같이, 비디오 디코더(104)의 주된 기능은, 개별 슬라이스의 매크로블록 계층 및 블록 계층의 디코딩을 위한 주기당 단일 차승 기호 슬라이스 파싱 엔진(single ordered symbol per cycle slice parsing engine)이라는 것이다. 슬라이스의 끝에 도달하면, 인터럽트가 RISC CPU(112)에 전달되며, 이 CPU는 다양한 메모리 검사를 수행한 다음 슬라이스의 처리를 지시한다. 비디오 디코더(104)의 동작은 주로 마이크로-시퀀서(134)를 통해서 제어되며, 이 마이크로-시퀀서는 라인(138)을 통해서 VLD 명령/디코딩 수행 유닛(136)과 인터페이스 한다. 마이크로-시퀀서(134)는 256 × 16 지시 ROM(140)과 지시 디코딩/제어 유닛(142)(도 2a 참조)을 포함한다. 각 슬라이스에 대한 매크로블록 계층 및 블록 계층의 디코딩 처리 도중에, 마이크로-시퀀서(134)는, 가변길이 디코딩을 수행하기 위하여 VLD 명령/디코딩 수행 유닛(136)에 명령을 발급하거나 또는 자신의 지시 세트를 통해서 제공됨에 따라 프로그램 흐름을 제어하도록 프로그램된다. 게다가, VLD 명령/디코딩 수행 유닛(136)은, RBUS 인터페이스(144), 라인(146) 및 멀티플렉서(148)를 통해서 RISC CPU(112)로부터 직접 지시를 수신할 수 있다. 이하에서 좀더 상세하게 설명된 바와 같이, RISC CPU(112), 마이크로-시퀀서(134) 및 VLD 명령 디코딩/수행 유닛(136)은, VLD 구조 데이터 경로의 일부분을 형성하는 일련의 VLD 명령 지시 레지스터(VCI 레지스터)(150)의 내용을 판독하고 기록할 수 있다.
앞에서 언급한 바와 같이, 인코딩된 비디오 데이터는 처음에 DRAM(114)에 저장된다. 인코딩된 비디오 데이터는, 메모리 제어기(116)를 지나 GBUS(128)를 통해서 비디오 디코더(104)에 이용 가능하다. 비디오 디코더(104)는 16 × 64 채널 버퍼 FIFO(152)의 형태인 GBUS 인터페이스를 포함하며, 이 GBUS 인터페이스는, 버퍼 FIFO(152)가 디코딩 처리 도중에 비어있지 않거나 가득차 있지 않음을 확인하기 위해서 충분한 양의 코딩된 비디오 비트 스트림을 저장한다.
비디오 디코더(104)의 주된 기능 중 하나는 비디오 비트 스트림에서 가변길이로 인코딩된 데이터를 디코딩하는 것이다. 가변길이의 데이터는, MPEG-1 및 MPEG-2 표준에서 정의된 VLC표에 따라 호프만 방식으로 인코딩된다. 본 발명의 VLD는 적어도 11가지의 MPEG VLC표{매크로블록_유형_I; 매크로블록_유형_P; 매크로블록_유형_B; 매크로블록_유형_D; 매크로블록_주소_증가; dct_dc_크기_휘도; dct_dc_크기_색차; ac_표(표 0 및 표 1); 코딩된_블록_패턴; 모션_코드 및 dm벡터}를 지원한다.
도 2에서 가장 명확하게 도시되는 바와 같이, 채널 버퍼 FIFO(152)는 64비트의 비디오 데이터를 한 쌍의 A 레지스터(156A) 및 B 레지스터(156B) 각각에 그 채널 버퍼 FIFO(152)로부터 개별적인 64비트 버스를 통해서 제공한다. 본 발명의 한 취지에 따라, VLD 명령 디코딩/수행 유닛(136)에 포인터 주소에서 포인터 주소 + 31에 포함된 비트를 사용 가능하게 만들기 위해서 회전자/원통 시프터(158) 및 포인터 레지스터(160)가 제공된다. 이러한 32 비트는, 회전자/원통 시프터 데이터(162)로서 VLD 명령 디코딩/수행 유닛(136)에 제공된다.
도 2와 도 3을 참조하면, A 레지스터(156A) 및 B 레지스터(156B)는, 포인터가 A 레지스터의 비트(63)에서 B 레지스터의 비트(64)로 경계 횡단이 가능하고, B 레지스터의 비트(127)에서 A 레지스터의 비트(0)로 경계 횡단이 가능하도록 128 비트의 링으로 연결된다. 포인터가 A 레지스터에서 B 레지스터로 횡단할 때, A 레지스터의 내용은 새로운 데이터로 재생(refresh)된다. 유사하게, 포인터가 B 레지스터로부터 A 레지스터로 횡단할 때, B 레지스터의 내용은 새로운 데이터로 재생된다. 포인터가 링 주위를 움직이게 하고, 128비트 각각이 이 포인터에 액세스 가능하게 하기 위해서, 도 3에 도시된 원통 시프터(164)는, 2의 거듭제곱씩 왼쪽으로 다양한 증분 시프트를 데이터에 제공하거나 어떠한 시프트도 제공하지 않는 7가지의 선택 단계를 갖는다. "단계 64/0"이라 지칭된 제 1 단계(166)는, 128비트 각각이 왼쪽 64비트로 시프트되게 하거나 시프트되지 않게 하는 128개의 선택(D0내지 D127)을 갖는다. "단계 32/0"이라 지칭된 제 2 단계(168)는, 32비트 왼쪽으로 시프트되게 하거나 시프트되지 않게 하는 95개의 선택을 갖는다. "단계 16/0"이라 지칭된 제 3 단계(170)는, 16비트 왼쪽으로 시프트되게 하거나 시프트되지 않게 하는 63개의 선택을 갖는다. "단계 8/0"이라 지칭된 제 4 단계(172)는, 8비트 왼쪽으로 시프트되게 하거나 시프트되지 않게 하는 47개의 선택을 갖는다. "단계 4/0"이라 지칭된 제 5 단계(174)는, 4비트 왼쪽으로 시프트되게 하거나 시프트되지 않게 하는 39개의 선택을 갖는다. "단계 2/0"이라 지칭된 제 6 단계(176)는, 2비트 왼쪽으로 시프트되게 하거나 시프트되지 않게 하는 35개의 선택을 갖는다. "단계 1/0"이라 지칭된 제 7 즉 마지막 단계(178)는, 1비트 왼쪽으로 시프트되게 하거나 시프트되지 않게 하는 33개의 선택을 갖는다.
원통 시프터(164) 구조에서, A 레지스터(156A) 및 B 레지스터(156B)의 128비트중 임의의 32비트는, 회전자/원통 시프터 데이터(162)로서 VLD 명령 디코딩/수행 유닛(136)에 이용 가능하도록 만들어질 수 있다. 단계(166 내지 178) 각각에서, 왼쪽 시프트는 화살표(180)로 나타내지는 반면, 시프트되지 않음은 화살표(182)로 나타내진다. 당업자는, 원통 시프터(164)에 관해서 본 명세서에서 사용된 바와 같이 용어 "선택"이 앞에서 상세하게 설명되었던 왼쪽-시프트 또는 비(no)-시프트 동작을 제공하는 임의의 회로를 의미한다는 것을 쉽게 이해할 것이다. 본 발명에 따른 원통 시프터(164)의 동작으로, 다양한 선택은, 도 3에서 삼각형 형태의 1점 쇄선(182)으로 개략적으로 나타낸 바와 같이 몇 가지 단계(168 내지 178)에서 제거될 수 있다. 원통 시프터(164)를 대칭적인 직사각형 형태보다는 사다리꼴 형태로 자름으로써, 비용과 하드웨어적인 부피를 절약하기 위해서 불필요한 선택이 제거될 수 있음이 쉽게 이해될 것이다.
도 2 및 도 5에서 가장 명백하게 도시된 바와 같이, 32비트의 회전자/원통 시프터 데이터(162)는, 또한 MPEG 표준 가변길이 코드(VLC)표를 병합하는 가변길이 표 디코더(184)에 이용 가능하도록 만들어진다. 본 발명의 다른 취지에 따라, VLD 명령 디코딩/수행 유닛(136)이 11가지 MPEG VLC표 각각에 액세스가능 하게 하는 새로운 구조가 제공된다. 도 4의 "매크로블록_주소_증가"를 위한 VLC표에서 일 예로 도시된 바와 같이, 접두부 패턴은, 가변 코드에서 "1"의 제 1 발생을 유도하는 "0"의 개수와 모든 고유한 접두부 패턴의 세트를 생성하는데 필요한 임의의 여분의 로직을 정의하는 MPEG VLC표 각각에서 식별된다.
예컨대, 도 4의 "매크로블록_주소_증가" 표에서, 각 가변 길이 코드는, K0, K1, K2, K3, K4_0, K4_1, K5_1, K5_01, K5_001, K5_000및 K6으로 정의되는 특정 접두부 패턴을 갖는다. K0은 "1"의 제 1 발생 전에 "O"이 없음을 나타낸다. K1은 "1"의 제 1 발생 전에 1개의 "0"이 있음을 나타내며, K2, K3및 K6에 대해서도 같은 방식으로 적용된다. 몇 가지 가변길이 코드로, 모든 고유한 접두부 패턴의 세트를 생성하기 위해서 "1" 패턴 이전에 선행하는 "0" 이후에, K4_0, K4_1, K5_1, K5_01, K5_001, K5_000와 같은 여분의 로직이 필요하다. 이러한 방식으로, 하위표의 세트는 MPEG VLC표 각각에서 접두부 패턴에 의해 정의될 수 있으며, 각 하위표는 고유한 접두부 패턴 중 하나에 대응한다. 게다가, 각 가변길이 코드는 가변길이 코드내의 비트수를 정의하는 코드 길이를 갖는다. 증가값은, 화상의 왼쪽 가장자리에 관한 한 슬라이스에서의 제 1 매크로블록의 수평 위치를 정의하거나 가장 최근에 송신된 매크로블록으로부터의 차동 증가값을 정의하기 위해서 "매크로블록_주소_증가"의 각 가변길이 코드와 관련된다. 당업자는, 이러한 접두부 패턴과 여분의 로직이 다른 MPEG VLC표에 대해서 어떻게 정의될 수 있는지를 이러한 예를 통해서 쉽게 이해할 것이다.
이제, 도 5에 도시된 가변길이 표 디코더(186)를 참조하면, 가변길이 디코딩 처리 도중에, 32비트의 회전자/원통 시프터 데이터(162)가 회전자/원통 시프터 데이터(162)의 고유한 접두부 패턴을 식별하기 위해서 패턴 매치 로직 및 MUX 제어(188)에 인가된다. 예컨대, K0, K1과 같은 식별된 접두부 패턴 매치는 11가지 MPEG VLC표 각각에서 각 MUX(192)의 출력을 제어하기 위한 신호(MUX CNTL)(190)로 사용된다. 따라서, 패턴 매치 로직 및 MUX 제어(188)에 의해 결정되는 접두부 패턴 매치는, 표 각자의 MUX(192) 출력을 제어하기 위해서 도 5에 도시된 바와 같이 "매크로블록_주소_증가" VLC표 및 "모션_코드" VLC표를 포함하는 11가지 MPEG VLC표 모두에서 공유된다.
임의의 주어진 시간에서 디코딩되는 VLC표는, 이하에서 좀더 상세하게 설명되는 바와 같이 VLD 명령 디코딩/수행 유닛(136)에 의해 제공되는 "VLC표 선택" 신호(194)에 의해 결정된다. 접두부 패턴 매치가 각 MUX(192)에 인가되는 MUX CNTL 신호(190)를 정의하기 위해서 패턴 매치 로직 및 MUX 제어(188)에 의해 식별됨과 동시에, 32비트의 회전자/원통 시프터 데이터(162)에서의 선행 패턴 매치 이후의 비트는 버스(196)로 나타낸 바와 같이 11가지 MPEG VLC표 각각의 하위표 모두에 동시에 인가된다. 따라서, 만약 VLC표 "매크로블록_주소_증가"가 "VLC표 선택" 신호(194)에 의해서 선택되고, 접두부 패턴 매치가 K5_1이며, "1"이 버스(196)를 통해서 하위표(K5_1)에 인가된다면, MUX(192)는 디코딩값(14)(증가값을 나타냄), 코드길이(8)(가변길이 코드의 비트수를 나타냄) 및 유효 상태 비트(코드의 유효성을 나타냄)를 VLD 명령 디코딩/수행 유닛(136)에 출력할 것이다. 따라서, 이러한 디코딩 처리가 완료된 후, 가변길이 표 디코더(186)는, 디코딩된 값(198)과 유효 코드 상태 비트(200)를 포함하는 2개의 신호를 VLD 명령 디코딩/수행 유닛(136)에 제공한다. 가변길이 표 디코더(186)는 또한, 코드 길이만큼 포인터 레지스터를 증가시키기 위해서 라인(204)을 통해서 코드 길이 신호(202)를 포인터 레지스터(160)에 제공한다. 비록 가변길이 표 디코더는 RAM 또는 ROM일 수도 있지만, 바람직하게, 가변길이 표 디코더(186)는 배선에 의해 최적화된 랜덤 로직이다.
이제 도 2와 도 3을 참조하면, 가변길이 표 디코더(186)로부터의 코드 길이 신호(202)는 포인터 레지스터(160)를 증가시키는데 사용된다. 코드 길이 신호(202)는 또한 원통 시프터에서 필요한 시프팅 패턴을 제어하기 위해서 원통 시프터(164)에 의해 사용된다. 예를 들면, 코드 길이 신호(202)가 값(13)을 갖는다면, 원통 시프터(164)의 단계{172(8/0), 174(4/0) 및 178(1/0)}는 왼쪽으로 13비트 시프트시키기 위해서 인에이블되는 반면, 모든 다른 단계는 시프트되지 않을 것이다. 시프트 동작이 원통 시프터(164)에 의해 수행된 후, 회전자/원통 시프터 데이터(162)의 새로운 세트가 VLD 명령 디코딩/수행 유닛(136) 및 가변길이 표 디코더(186)에 사용 가능하게 된다. 본 발명의 가변길이 표 디코더(186) 및 원통 시프터(164)는 MPEG 가변길이 코드의 효과적인 디코딩을 제공하는 동시에 VLC표에 대한 메모리 요구를 감소시킨다.
MPEG 표준에 따라, 가변길이로 코딩된 DCT 계수는, 기호 "<r,l>"로 도 2에서 나타낸 런-렝쓰 및 진폭 레벨 쌍으로서 디코딩된다. 값 "r"은 "l"로 나타낸 진폭 레벨을 갖는 계수 이전에 0의 값을 갖는 계수의 개수를 나타낸다. 예를 들면, 기호 <5,2>은 계수값(2) 이전에 5개의 0이 있음을 나타낸다. 본 발명의 다른 취지에 따라서, 런-렝쓰 및 진폭 레벨 쌍이 가변길이 표 디코더(186)에 의해 디코딩됨에 따라, 이러한 런-렝쓰 및 진폭 레벨 쌍 기호는 VLD 명령 디코딩/수행 유닛(136)으로부터 64 × 18 런-레벨 디코더/FIFO(206)에 인가되며, 이러한 64 × 18 런-레벨 디코더/FIFO(206)는 이러한 기호를 역 Z자형, 역 양자화 및 역 DCT 변환 유닛(208)에 의해 필요할 때까지 압축된 쌍으로 저장한다. 압축된 기호의 개수가 DCT 계수의 개수보다 더 적기 때문에, 런-레벨 디코더/FIFO(206)가 이전에 디코딩된 런-레벨 쌍의 런-레벨 디코딩과 함께 호프만 방식으로 인코딩된 가변길이 쌍의 디코딩을 허용함을 쉽게 이해할 것이다.
도 2에서 또한 도시된 바와 같이, 디코딩된 모션 벡터 "mv" 및 차동 모션 벡터 "dmv"가 VLD 명령 디코딩/수행 유닛(136)으로부터 16 × 13mv/dmv FIFO(210)에 인가되며, 이러한 16 × 13mv/dmv FIFO(210)는 모션 보상 유닛(212)에 의해 필요할 때까지 이러한 벡터들을 저장한다. 전체적으로 참조로써 본 명세서에 병합되고, 1997년 12월 30일에 출원된, "모션 보상된 디지털 비디오 디코딩과 이를 위한 버퍼 메모리 주소지정"이라는 제목의 계류중인 US 특허 출원(일련번호 : 09/001,122)에서 상세하게 설명된 바와 같이, 디코딩된 비디오 데이터값 및 모션 벡터는, 디스플레이를 위한 전체 I-프레임, P-프레임 및 B-프레임을 형성하기 위해서 모션 보상 유닛(212)에 의해 결합된다. VLD 명령 디코딩/수행 유닛(136)은 바람직하게 모션 벡터, 차동 모션 벡터, 매크로블록 증가 주소, dc 계수 및 ac 계수 측정을 위한 상태기(state machine)를 갖는다.
도 6a 내지 도 6g가, 비디오 디코더(104)의 마이크로-시퀀서(134)에 의해서 지원되는 지시 세트를 예시하는 반면, 도 2a는 마이크로-시퀀서(134)와 VLD 명령 디코딩/수행 유닛(136) 사이의 전체적인 프로그램 흐름 제어를 예시한다. 특히, 마이크로-시퀀서 지시 세트는 8개의 지시(214a 내지 214g)를 포함하며, 이들 지시 각각은 3비트 op코드(216)를 사용하며, 지시(214b)는 2개의 서로 다른 지시를 나타낸다. 도 6a 내지 도 6g에서 도시된 지시 중에서, 지시(214b)의 두 지시(ICMD 및 CMDI)만이 수행 명령이다. 다른 모든 6개의 지시(214a 및 214c 내지 214g)는 이하에서 좀더 자세하게 설명되는 바와 같이 흐름 제어 지시이다. 대부분의 지시(214a 내지 214g)는 VCI 레지스터(150)에서 발견되는 데이터에 의존하여 작동한다 (operate off of data).
다음의 표는 다양한 VCI 레지스터(150)의 설명을 제공한다. 표 1은 VCI 제어 레지스터 설명을 정의한다. 표 2는 매크로블록 및 블록 계층 레지스터 설명을 정의한다. 표 3은 상위 계층 디코딩을 위한 화상 계층 레지스터 설명을 정의한다. 표 3의 레지스터는 RISC CPU(112)에 의해 기록된다. 표 4는 제어 및 상태 레지스터 설명을 정의하며, 표 5는 예측기 및 상태기 레지스터 설명을 정의한다.
[표 1] VCI 제어 레지스터 정의
명칭 필드 유형 설명
vci_주소 [5:0] r/w VCI 간접 레지스터 주소
vci_데이터 [15:0] r/w VCI 간접 데이터
VCI 제어 레지스터는 이하의 표 2 내지 표 5에서 정의되는 VCI 간접 레지스터에 액세스하는데 사용된다. RISC CPU(112)는 특정 주소의 VCI 간접 레지스터의 내용을 판독하거나 기록하기 위해서 VCI_주소 레지스터를 설정한다. 이러한 판독 및 기록 동작은 VCI_데이터 레지스터에 의해 수행된다.
[표2] 매크로블록 레벨의 VCI 간접 레지스터 정의
명칭 주소 Dir 설명
vci_mba_x 0 × 00 7 r/w 매크로블록 주소 x 차원
vci_mba_y 0 × 01 7 r/w 매크로블록 주소 y 차원
vci_vld_out 0 × 02 16 r/w VLD의 임시 출력
vci_q_스케일 0 × 03 5 r/w 양자화 스케일 정보
vci_cbp 0 × 04 8 r/w 코딩된 블록 패턴
vci_m유형 0 × 05 5 r/w 매크로블록 유형
vci_mo유형 0 × 06 3 r/w 디코딩된 모션 유형[0] mv_카운트0:1 벡터, 1:2 벡터[1] mv_포맷 0:필드, 1:프레임[2] dmv
명칭 주소 Dir 설명
vci_dct_유형 0 × 07 1 r/w dct 유형 0:프레임, 1:필드
vci_mvfsl 0 × 08 1 r/w 모션 수직 필드가 1을 선택
예비됨 0 × 09 1 예비됨
vci_temp_0 0 × 0a내지0 × 0f r/w 예비됨
[표 3] 화상 레벨 계층의 VCI 간접 레지스터 정의
명칭 주소 Dir 설명
vci_pic_init 0 × 10 26 r/w [25:24] DC 정확도-->00:8비트, 01:9비트, 10:10비트-->11:11비트[23:20]: 뒤쪽 수직 f코드[19:16]: 뒤쪽 수평 f코드[15:12]: 앞쪽 수직 f코드[11:8]: 앞쪽 수평 f코드[7]: 숨김 모션 벡터[6]: 내부 vlc 포맷[5]: 프레임_pred_프레임_dct[4:2]: 화상 코딩 유형(I, P, B, D)[1:0]: 화상 구조(필드, 프레임)-->[00]: 예비됨-->[01]: 정상 필드-->[10]: 바닥 필드-->[11]: 프레임
vci_seq_init 0 × 11 10 r/w [10:4]: mb 개수 × 차원[3]: 0: 표준, 1:스페셜--blk 유형[2]: 0: mpeg2, 1:mpeg1[1:0]: 색차 포맷-->00: 예비됨, 01:420, 10:422-->11:444
vci_숨김 0 × 12 3 r/w 숨김 카운트 레지스터
vci_temp_1 0 × 13내지0 × 1f r/w 예비됨
[표4] 제어 및 상태의 VCI 간접 레지스터 정의
명칭 주소 Dir 설명
vci_cntl 0 × 20 2 r/w vci 상태 제어 레지스터[31:30]=00:실행[31:30]=10:중지[31:30]=11:리셋
vci_pc 0 × 21 8 r/w vci 프로그램 카운터
vci_rom 0 × 22 16 r/w vci_rom 출력 포트
vci_dmvfifo_주소 0 × 23 3 r/w dmb_fifo 판독/기록 주소
vci_dmvfifo 0 × 24 2 r/w dmv_fifo 데이터 포트
vci_포인터 0 × 25 7 r/w 회전자 포인터
vci_dec_lpred 0 × 26 12 r/w 휘도 DC 예측값. DC_lpred 리셋값을 DEC_모드 레지스터의 DC 정확도 비트에 의해 지시된 바와 같은 상수 값으로 기록.
vci_dec_cpred 0 × 27 [23:12][11:10] r/w 색차 DC 예측값. DEC_cpred 리셋값을 DEC_모드 레지스터의 DC 정확도 비트에 의해 지시된 바와 같은 상수 값으로 기록.VU
vci_temp_2 0 × 28 내지0 × 2f 예비됨
[표 5] 예측기 & 상태기의 VCI 간접 레지스터 정의
명칭 주소 Dir 설명
vci_mv_predfh0 0 × 30 13 r/w mvfs, 모션 벡터 예측기 앞쪽 수평-제 1
vci_mv_predfv0 0 × 31 13 r/w mvfs, 모션 벡터 예측기 앞쪽 수직-제 1
vci_mv_predbh0 0 × 32 13 r/w mvfs, 모션 벡터 예측기 뒤쪽 수직-제 1
vci_mv_predfh1 0 × 34 13 r/w mvfs, 모션 벡터 예측기 앞쪽 수평-제 2
vci_mv_predfv1 0 × 35 13 r/w mvfs, 모션 벡터 예측기 앞쪽 수직-제 2
vci_mv_predbh1 0 × 36 13 r/w mvfs, 모션 벡터 예측기 뒤쪽 수평-제 2
vci_mv_predbv1 0 × 37 13 r/w mvfs, 모션 벡터 예측기 뒤쪽 수직-제 2
vci_err_비트 0 × 38 10 r 에러 상태[9] mo유형_err[8] coef_err[7] rl_에러[6] cbp_err[5] mv_err[4] mbi_err[3] m유형_err[2] get_ac_err[1] dctdcsz_색차_err[0] dctdcsz_휘도_err
vci_stm 0 × 39 4 r 상태기:[14:12] v상태 : 모션 vec STM[11:9] dc_c상태 : dc STM[8:7] sc_상태 : 시작-코드 STM[6:3] ms_c상태 : MB STM[2:0] lc_c상태 : 블록 STM
vci_tmp_3 0 × 3a내지0 × 3f
[표 6] r 버스 인터페이스를 갖는 VLD 레지스터
명칭 Dir 비트 필드 설명
dec_값1 r/w [15:0] 디코딩 블록 명령이외의 모든 명령에 대한디코딩값을 보유함. 디코딩 블록 명령은 이 필드의 디코딩된 DC 계수로 귀환됨.
dec_값2 r/w [17:12][11:0] 이 값은 현재 실행 및 레벨을 보유함.디코딩된 런 렝쓰디코딩된 레벨
mvfifo_주소 r/w [4:0] mv_fifo 판독/기록 주소비트4-0: 판독, 1:기록
mvfifo_데이터 r/w [12:0] mv_fifo 데이터 포트
vld_cntl r/w [31:30] 00: 실행, 10:중지, 11: 리셋
vld_pic_hdr r/w [31:0] 픽셀 레벨 파라미터:[31:28] f_코드[0][0](F,H)[27:24] f_코드[0][1](F,V)[23:20] f_코드[1][0](B,H)[19:16] f_코드[1][1](B,V)[15:14] 내부_dc_prec[13:12] pic_구조[11] topfld_제 1[10] 프레임_예측_프레임_dct[9] 숨김_모션_벡터[8] q_스케일_유형[7] 내부_vlc_포맷[6] 대안_주사[5] 반복_제 1_필드[4] 색차_420[3] 진행_프레임[2:0] pic_유형
rlfifo_주소 r/w [6:0] rl_fifo 판독/기록 주소비트 6-0: 판독, 1:기록
rlfifo_데이터 r/w [17:0] rl_fifo 데이터 포트
vld_상태 r/w [10:0] 상태 비트[10] vld_busy[9] vld_mv_fifo_empty[8] vld_cfifo_empty[7:4] chfifo_wr_주소[3:0] chfifo_rd_주소
vld_cmd w [7:0] cpu로부터 수행되는 vld 명령
dec_상태 r/w [15][14][13:10][9:6][5:0] 에러. 비트 스트림 에러가 검출되면 설정.스티키(sticky) 비트chan_fifo_empty. 채널 FIFO가 비어있음.chan_fifo_wrprt. 채널 FIFO가 포인터를 기록.chan_fifo_rdptr. 채널 FIFO가 포인터를 판독.bitcnt. 디코더 비트 스트림은 포인터를 판독.디코더에 의해 다음에 판독되는 비트수를 포함.
vld_cmd r/w [7:0] cpu로부터의 vld 명령-vld 명령은 이 주소가 rbus 인터페이스로부터 판독된다면 수행될 것이다.
[표 7] g 버스 인터페이스를 갖는 VLD 레지스터
명칭 Dir 비트 필드 설명
워드_fifo r/w [63:0] 디코더 FIFO 데이터 포트
이제 도 6a 내지 도 6g의 마이크로-시퀀서 지시(214a 내지 214g)를 참조하면, TBIT(테스트 비트) 지시(214a)는 VCI 레지스터(220)의 한 비트{"bitsnum(218)"으로 주어짐}를 테스트하여, 4-비트 앞쪽 상대 주소(222)의 값과 같다면 분기한다. COMP(비교) 지시(214c)는 vci_vld_out 레지스터의 8msb 또는 8lsb 데이터 내용{"msb(224)"의 상태에 의해 결정됨}을 직접 데이터(226)와 비교하여, 그 결과를 플래그 레지스터(228)에 저장한다. "st_코드(230)"가 1이면, vci_vld_out 레지스터의 내용은 시작 코드 패턴과 비교되며, 이들이 일치하여 시작코드가 발견되었음을 지시한다면 플래그 레지스터(228)가 설정된다. BRANCH 지시(214d)는 8비트 분기 목표 주소(232)로의 절대적 분기를 수행한다. "err" 비트(234)는 vci 에러를 지시하며, "중지" 비트(236)는 vci 제어 레지스터를 중지 상태로 변경함을 나타낸다. SETF(플래그 설정) 지시(214e)는 직접 데이터(238)에 따른 값으로 플래그 레지스터의 8lsb를 설정한다. INCM(매크로블록 증가) 지시(214f)는 VCI 레지스터(240)의 하위 바이트를 직접 데이터(242)와 비교하여, 같지 않다면 정지(stall)한다. 흐름 제어 지시의 마지막인, HALT 지시(214g)는 비디오 디코더(104)를 중지하며, vld_busy 신호를 해제(deassert)한다.
ICMD 및 CMDI(명령 발급) 지시(214b)는 22개의 명령 중 하나를 비디오 디코더(104)에 발급하여, 그 출력을 VCI 레지스터(244)에 저장한다. ICMD 지시를 통해서, 마이크로-시퀀서(134)는 명령을 비디오 디코더(104)에 발급하고 대기한다. CMDI 지시는 마이크로-시퀀서(134)가 비디오 디코더(104)에 명령을 발급하게 하며, 마이크로코드를 계속 실행하게 한다.
비디오 디코더(104)로 발급된 다양한 명령은 표 8에서 제공된다:
[표 8] VLD 명령
OP 코드 기호 설명
0000 0001 <vld_종료> 매크로블록 종료(escape).
0000 0010 <vld_피크> 피크(peek)-수행은 않고 CC를 갱신하기만 한다.
0000 0011 <vld_시작코드> 시작 코드를 발견한다.
0000 0100 <vld_mbi> 매크로블록 주소 증가.
0000 0101 <vld_cbp> 코딩된 블록 패턴.
0000 0110 <vld_내부_휘도> 내부 휘도 블록 실행.
0000 0111 <vld_내부_색차u> 내부 색차 U 블록 실행.
0000 1000 <vld_내부_색차v> 내부 색차 V 블록 실행.
0000 1001 <vld_non_내부> 내부 이외의 블록 실행.
0000 1010* <vld_mbs> 매크로블록 시작 신호 생성.
0000 1100* <vld_dpcm> 휘도 및 색차 예측기 리셋.
0000 1101* <vld_mv_pred> 모션 벡터 예측기 리셋.
0001 0000 <vld_dmv> 이중 프라임(prime) 모션 벡터 획득.
0001 0100 <vld_non_coded> 코딩되지 않은 블록 실행.
0001 0101 <vld_필드_mo유형> 필드 모션 유형 디코딩.
0001 0110 <vld_프레임_mo유형> 프레임 모션 유형 디코딩.
0001 1000 <vld_m유형i> I 화상을 위한 매크로블록 유형 획득.
0001 1001 <vld_m유형p> P 화상을 위한 매크로블록 유형 획득.
0001 1010 <vld_m유형b> B 화상을 위한 매크로블록 유형 획득.
0001 1011 <vld_m유형d> D 화상을 위한 매크로블록 유형 획득.
0010 xxxx <vld_get<비트xx> 다음 1 내지 16비트를 획득(0⇒16)
0011 0xyz <vld_mvxyz> 모션 벡터 획득: x-앞쪽, y-수평, z-제 1
*: cmdi 지시로부터 디스패치(dispatch)될 필요가 있는 명령.
표 8의 VLD 명령은 많은 다양한 유형의 인코딩에서 공통적인 자율 동작이다. VLD 지시는 일반적으로, MPEG VLC표로부터 값을 획득하기 위한 가변길이 표 디코딩 명령, 인코딩된 비디오 데이터로부터 파라미터화된 다수의 비트를 수신하기 위한 지시 또는 블록 동작으로 분류될 수 있다.
<vld_get_비트xx> 명령은, 예를 들면, 회전자/원통 시프터(158)로부터 특정한 개수의 비트를 추출하며, 검색된 비트의 개수만큼 포인터 레지스터(160)를 증가시킨다. <vld_dmv> 명령은, 비디오 데이터 비트 스트림으로부터 세 개의 파라미터를 이용하여, MPEG VLC표 중 하나로부터 모션 벡터값을 검색한다. 특히, 각 모션 벡터는, 이전의 모션 벡터와 예측의 조합으로서 저장된다. 이러한 예측은 몫(가변길이로 인코딩됨)과 나머지(고정길이로 코딩됨)의 형태로 자체 코딩된다. <vld_dmv>명령은, 이러한 몫의 값과 나머지의 위치를 결정하기 위해서, MPEG VLC표를 통해서 이러한 몫을 디코딩하는데 사용된다. 이러한 나머지는 <vld_get_비트xx> 명령을 사용하여 획득된다. 결국, 이러한 몫과 나머지는 모션 벡터 성분을 생성하기 위해서 결합된다. <vld_피크> 명령은, 검색된 비트수만큼 포인터 레지스터(160)를 증가시키지 않으면서 회전자/원통 시프터(158)로부터 특정한 개수의 비트를 사용하게 한다.
본 발명이 다양한 실시예의 설명에 의해 예시되었고, 이러한 실시예는 상당히 상세하게 설명되었지만, 추가적인 이점 및 변형이 당업자에게 쉽게 나타날 것이다. 따라서, 더 넓은 취지에서 본 발명은, 장치 및 방법을 나타내는 특정한 상세사항 및 도시되고 설명되는 예시적인 예로 정의되지 않는다. 따라서, 출원인의 개괄적인 발명의 개념에 있어서의 정신과 범위에서 벗어나지 않으면서, 이러한 상세사항으로부터의 변경이 이뤄질 수 있다.

Claims (23)

  1. 송신된 프레임의 이미지 영역을 나타내는 다수의 가변길이로 인코딩된 데이터를 포함하는 압축된 비디오 데이터 스트림을 디코딩하기 위한 가변길이 디코더(variable length decoder)(104)에 있어서,
    가변길이로 인코딩된 데이터를 저장하기 위한 메모리(114)와,
    상기 메모리(114)로부터 선택된 가변길이로 인코딩된 데이터를 수신하기 위해서, 상기 메모리에 연결되는 명령 디코딩 및 수행 회로(136)와,
    상기 가변길이로 인코딩된 데이터를 대응하는 디코딩된 값으로 변환하도록 상기 명령 디코딩 및 수행 회로(136)에 명령을 제공하기 위해서 상기 명령 디코딩 및 수행 회로(136)에 연결되는 시퀀서(sequencer)(134)와,
    상기 명령 디코딩 및 수행 회로(136)의 디코딩 동작을 제어하도록 상기 시퀀서(134)와는 독립적으로 상기 명령 디코딩 및 수행 회로(136)에 명령을 제공하기 위해서 상기 명령 디코딩 및 수행 회로(136)에 연결되는 매스터 제어기(112)를 포함하는, 가변길이 디코더.
  2. 제 1항에 있어서, 상기 시퀀서(134)는 다수의 지시를 저장하기 위한 메모리(140)와, 상기 메모리(140)로부터 지시를 디코딩하고 상기 가변길이로 인코딩된 데이터를 대응하는 디코딩된 값으로 변환하도록 상기 명령 디코딩 및 수행 회로(136)에 명령을 제공하기 위하여, 상기 지시 메모리(140)에 연결되는 지시 디코딩 및 제어 회로(142)를 포함하는, 가변길이 디코더.
  3. 제 1항에 있어서, 상기 시퀀서(134)와 상기 매스터 제어기(112)에 연결되는 다수의 명령 지시 레지스터(150)를 더 포함하되, 상기 시퀀서(134)와 상기 매스터 제어기(112)는 상기 명령 지시 레지스터(150)의 내용을 판독하고 기록하도록 동작할 수 있는, 가변길이 디코더.
  4. 제 3항에 있어서, 상기 명령 지시 레지스터(150)는 상기 명령 디코딩 및 수행 회로(142)에 제공되는 상기 지시와 관련되는, 가변길이 디코더.
  5. 제 1항에 있어서, 가변길이로 인코딩된 데이터를 수신하고, 대응하는 디코딩된 값을 상기 명령 디코딩 및 수행 회로(142)에 제공하기 위해서 상기 명령 디코딩 및 수행 회로(136)에 연결되는 가변길이 표 디코더(186)를 더 포함하는, 가변길이 디코더.
  6. 제 1항에 있어서, 상기 명령 디코딩 및 수행 회로(136)는 가변길이로 인코딩된 데이터를 MPEG 신택스(syntax)에 따라서 디코딩하도록 동작할 수 있는, 가변길이 디코더.
  7. 제 6항에 있어서, 상기 명령 디코딩 및 수행 회로(136)는, 상기 가변길이로 인코딩된 데이터를 각각 런-렝쓰(run-length)값과 진폭 레벨 값을 포함하는 DCT 계수 기호로 디코딩하도록 동작할 수 있는, 가변길이 디코더.
  8. 제 7항에 있어서, 상기 DCT 계수 기호를 압축된 런-렝쓰 및 진폭 레벨 쌍으로서 저장하기 위해서 상기 명령 디코딩 및 수행 회로(136)에 연결되는 선입선출 (first-in first-out) 메모리 및 디코더(206)를 더 포함하는, 가변길이 디코더.
  9. 제 8항에 있어서, 상기 선입선출 메모리 및 디코더(206)에 연결된 역 DCT 변환 회로(208)를 더 포함하되, 상기 선입선출 메모리 및 디코더(206)는, 상기 송신된 프레임의 이미지 데이터를 재생할 때 상기 DCT 변환 회로(208)에 의해 사용하기 위해서 상기 런-렝쓰 및 진폭 레벨 쌍을 DCT 계수로 압축해제하도록 동작할 수 있는, 가변길이 디코더.
  10. 제 6항에 있어서, 상기 명령 디코딩 및 수행 회로(136)는 상기 가변 길이로 인코딩된 데이터를 모션 벡터값으로 디코딩하도록 동작할 수 있는, 가변길이 디코더.
  11. 제 10항에 있어서, 상기 모션 벡터값을 저장하기 위해서 상기 명령 디코딩 및 수행 회로(136)에 연결되는 선입선출 메모리(210)를 더 포함하는, 가변길이 디코더.
  12. 제 11항에 있어서, 상기 선입선출 메모리(210)에 연결되는 모션 보상 회로(212)를 더 포함하되, 상기 선입선출 메모리(210)는 상기 송신된 프레임의 이미지 데이터를 재생할 때 상기 모션 보상 회로(212)에 상기 모션 벡터값을 제공하도록 동작할 수 있는, 가변길이 디코더.
  13. 가변길이 코드표를 사용하여, 송신된 프레임의 이미지 영역을 나타내는 가변길이로 인코딩된 데이터를 포함하는 압축된 비디오 데이터를 디코딩하기 위한 가변길이 표 디코더(186)에 있어서,
    가변길이로 인코딩된 데이터를 저장하기 위한 메모리(156A, 156B, 162)와,
    상기 가변길이로 인코딩된 데이터에서 고유한 접두부 패턴을 식별하기 위해서 상기 메모리(162)에 연결되는 패턴 매치 회로(188)와,
    다수의 가변길이 코드 각각과 관련된 디코딩된 값을 포함하는 가변길이 코드표 데이터로서, 이 가변길이 코드표 데이터는 상기 가변길이 코드에서의 고유한 접두부 패턴과 각각 관련되는 다수의 하위표(subtable) 데이터 회로를 포함하는, 가변길이 코드표 데이터와,
    상기 가변길이로 인코딩된 데이터를 상기 하위표 데이터 회로 각각에 인가하기 위해서, 상기 하위표 데이터 회로 각각에 상기 메모리(162)를 연결시키는 데이터경로(162)와,
    상기 가변길이로 인코딩된 데이터에서의 상기 식별된 접두부 패턴과 매치하는, 상기 가변길이 코드에서의 상기 고유한 접두부 패턴과, 상기 식별된 접두부 패턴 이후의 상기 가변길이로 인코딩된 데이터에서의 추가적인 데이터에 매치하는, 상기 고유한 접두부 패턴 이후의 상기 가변 길이 코드에서의 추가적인 데이터와 관련되는 상기 하위표 데이터 회로로부터 디코딩된 값(198)을 획득하기 위해서, 상기 패턴 매치 회로(188)에 따라 반응하는 제어 회로(190, 192)를 포함하는, 가변길이 표 디코더.
  14. 제 13항에 있어서, 상기 가변길이 코드 각각은 관련된 코드 길이를 포함하되, 상기 제어 회로(190, 192)는, 상기 가변길이로 인코딩된 데이터 내의 상기 식별된 접두부 패턴과 매치하는, 상기 가변길이 코드 내의 상기 고유한 접두부 패턴과, 상기 식별된 접두부 패턴 이후의 상기 가변길이로 인코딩된 데이터 내의 추가적인 데이터에 매치하는, 상기 고유한 접두부 패턴 이후의 상기 가변 길이 코드 내의 추가적인 데이터와 관련되는 상기 하위표 데이터 회로로부터 코드 길이(202)를 획득하기 위해서 상기 패턴 매치 회로(188)에 따라 반응하는, 가변길이 표 디코더.
  15. 제 14항에 있어서, 상기 메모리(156A, 156B)로부터의 상기 가변길이로 인코딩된 데이터의 사전에 결정된 수의 비트를 상기 패턴 매치 회로에 인가하기 위해서 상기 메모리(156A, 156B)와 관련되는 시프터 회로를 더 포함하는, 가변길이 표 디코더.
  16. 제 15항에 있어서, 상기 시프터 회로(164)는, 상기 메모리(156A, 156B)에서의 상기 가변길이로 인코딩된 데이터를 선택적으로 시프트하기 위한 다수의 선택 회로를 포함하는, 가변길이 표 디코더.
  17. 제 16항에 있어서, 상기 다수의 선택 회로는 다수의 선택 단계로 배열되되, 각 선택 단계는 메모리(156A, 156B)에서의 상기 가변길이로 인코딩된 데이터를 2의 거듭제곱만큼 시프트하거나, 상기 가변길이로 인코딩된 데이터에 어떠한 시프트도 제공하지 않도록 동작할 수 있는, 가변길이 표 디코더.
  18. 제 17항에 있어서, 하나 이상의 선택 단계는 이전 선택 단계보다 더 적은 선택 회로를 포함하는, 가변길이 표 디코더.
  19. 제 17항에 있어서, 각 선택 단계는 자신의 이전 선택 단계보다 더 적은 선택 회로를 포함하는, 가변길이 표 디코더.
  20. 제 16항에 있어서, 상기 시프터 회로(164)는, 획득된 코드값과 같은 다수의 비트만큼 상기 메모리(156A, 156B)에서의 상기 가변길이로 인코딩된 데이터를 시프트하기 위해서 상기 최후에 획득된 코드값에 반응하는, 가변길이 표 디코더.
  21. 가변길이 코드표를 사용하여 압축된 비디오 데이터 스트림을 디코딩하기 위한 방법으로서, 상기 스트림은 송신된 프레임의 이미지 영역을 나타내는 다수의 가변길이로 인코딩된 데이터를 포함하는, 압축된 비디오 데이터 스트림 디코딩 방법에 있어서,
    다수의 가변길이 코드 각각과 관련되는 디코딩된 값을 포함하는 가변길이 코드표를 정의하는 단계와,
    상기 가변길이 코드와 관련되는 다수의 고유한 접두부 패턴을 정의하는 단계와,
    다수의 하위표를 정의하되, 이러한 각 하위표는 상기 가변길이 코드에서의 상기 고유한 접두부 패턴중 하나와 관련되며, 상기 고유한 접두부 패턴 이후의 상기 가변길이 코드에서의 추가적인 데이터와 상기 고유한 접두부 패턴과 관련되는 하나 이상의 디코딩된 값을 포함하는, 다수의 하위표를 정의하는 단계와,
    상기 가변길이 코드와 관련되는 상기 고유한 접두부 패턴 중 하나를 상기 가변길이로 인코딩된 데이터에서 식별하는 단계와,
    상기 가변길이로 인코딩된 데이터에서의 상기 식별된 접두부 패턴과 매치하는 상기 가변길이 코드에서의 상기 고유한 접두부 패턴과, 상기 식별된 접두부 패턴 이후의 상기 가변길이로 인코딩된 데이터에서의 추가적인 데이터에 매치하는 상기 고유한 접두부 패턴 이후의 상기 가변 길이 코드에서의 추가적인 데이터와 관련되는 상기 하위표로부터 디코딩된 값(198)을 획득하는 단계를 포함하는, 압축된 비디오 데이터 스트림 디코딩 방법.
  22. 제 21항에 있어서, 상기 다수의 가변길이 코드 각각과 코드 길이를 관련시키는 단계와,
    상기 가변길이로 인코딩된 데이터에서의 상기 식별된 접두부 패턴과 매치하는 접두부 패턴과, 상기 식별된 접두부 패턴 이후의 상기 가변길이로 인코딩된 데이터에서의 추가적인 데이터에 매치하는, 상기 접두부 패턴 이후의 추가적인 데이터를 갖는 상기 가변길이 코드와 관련되는 코드 길이(202)를 획득하는 단계를 더 포함하는, 압축된 비디오 데이터 스트림 디코딩 방법.
  23. 제 21항에 있어서, 상기 가변길이 코드와 관련된 상기 고유한 접두부 패턴중 하나를 상기 가변길이로 인코딩되는 데이터에서 식별하는 단계와,
    상기 가변길이로 인코딩되는 데이터에서의 상기 추가적인 데이터를 상기 다수의 하위표 각각에 동시에 인가하는 단계를 더 포함하되,
    디코딩된 값(198)은, 상기 가변길이로 인코딩된 데이터에서의 상기 식별된 접두부 패턴에 매치하는 상기 가변길이 코드에서의 상기 고유한 접두부 패턴과, 상기 식별된 접두부 패턴 이후의 상기 가변길이로 인코딩된 데이터에서의 추가적인 데이터에 매치하는, 상기 고유한 접두부 패턴 이후의 상기 가변길이 코드에서의 추가적인 데이터와 관련된 하위표로부터 획득되는, 압축된 비디오 데이터 스트림 디코딩 방법.
KR1020007012555A 1998-05-18 1999-05-14 디지털 방식으로 인코딩된 비디오 신호를 디코딩하기 위한가변길이 디코더 KR20010043480A (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US8579798P 1998-05-18 1998-05-18
US60/085,797 1998-05-18
US09/280,437 1999-03-29
US09/280,437 US6704361B2 (en) 1998-05-18 1999-03-29 Variable length decoder for decoding digitally encoded video signals
PCT/US1999/010659 WO1999060521A2 (en) 1998-05-18 1999-05-14 Variable length decoder for decoding digitally encoded video signals

Publications (1)

Publication Number Publication Date
KR20010043480A true KR20010043480A (ko) 2001-05-25

Family

ID=26773091

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1020007012555A KR20010043480A (ko) 1998-05-18 1999-05-14 디지털 방식으로 인코딩된 비디오 신호를 디코딩하기 위한가변길이 디코더

Country Status (9)

Country Link
US (1) US6704361B2 (ko)
EP (1) EP1078533B1 (ko)
JP (1) JP2002516501A (ko)
KR (1) KR20010043480A (ko)
CN (1) CN1199472C (ko)
AU (1) AU3990899A (ko)
CA (1) CA2330566A1 (ko)
DE (1) DE69905565T2 (ko)
WO (1) WO1999060521A2 (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100731640B1 (ko) * 2005-12-23 2007-06-22 주식회사 텔레칩스 비트스트림 처리기

Families Citing this family (31)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6934338B1 (en) * 1998-05-18 2005-08-23 Sony Corporation Variable length decoder for decoding digitally encoded video signals
CN1167262C (zh) * 2000-08-25 2004-09-15 松下电器产业株式会社 解码装置、电子装置及解码方法
EP1193978A1 (fr) * 2000-09-29 2002-04-03 Koninklijke Philips Electronics N.V. Procédé de rafraíchissement d'écran
US6975809B1 (en) * 2000-11-14 2005-12-13 Ati International, S.R.L. Method and apparatus for passing clear DVD data in a computer
US7970645B2 (en) 2001-02-23 2011-06-28 Cox Communications, Inc. Method and apparatus for providing targeted advertisements
DE10140289A1 (de) * 2001-08-16 2003-02-27 Technotrend Ag Verfahren und Vorrichtung zur Bandbreitenreduzierung
US7046852B2 (en) * 2001-09-13 2006-05-16 Sharp Laboratories Of America, Inc. Fast image decompression via look up table
JP2003169327A (ja) * 2001-11-30 2003-06-13 Matsushita Electric Ind Co Ltd ソフトウェアでのmpeg−2ビデオ可変長復号化方法
KR100450753B1 (ko) * 2002-05-17 2004-10-01 한국전자통신연구원 프로세서와 연결된 프로그램 가능한 가변 길이 디코더
US7398276B2 (en) * 2002-05-30 2008-07-08 Microsoft Corporation Parallel predictive compression and access of a sequential list of executable instructions
US20040086117A1 (en) * 2002-06-06 2004-05-06 Petersen Mette Vesterager Methods for improving unpredictability of output of pseudo-random number generators
KR100522595B1 (ko) * 2002-11-29 2005-10-19 삼성전자주식회사 엠펙 비디오 복호화방법 및 엠펙 비디오 복호화기
US8111753B2 (en) 2003-02-06 2012-02-07 Samsung Electronics Co., Ltd. Video encoding method and video encoder for improving performance
US7627039B2 (en) * 2003-09-05 2009-12-01 Realnetworks, Inc. Parallel video decoding
US7683807B2 (en) * 2004-03-12 2010-03-23 Panasonic Corporation Variable-length-code decoding device
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
CN100356793C (zh) * 2005-06-09 2007-12-19 清华大学 多变长码并行解码器
DE602006010747D1 (de) * 2006-03-23 2010-01-07 Nds Ltd System zur analyse von bewegung
JPWO2007108395A1 (ja) 2006-03-23 2009-08-06 日本電気株式会社 可変長符号の復号装置および復号方法
KR101075606B1 (ko) * 2007-03-14 2011-10-20 니폰덴신뎅와 가부시키가이샤 양자화 제어 방법 및 장치, 그 프로그램 및 프로그램을 기록한 기록 매체
RU2420913C1 (ru) * 2007-03-14 2011-06-10 Ниппон Телеграф Энд Телефон Корпорейшн Способ и устройство нахождения вектора движения, программа и носитель записи для хранения программы
EP2120461B1 (en) * 2007-03-14 2011-07-06 Nippon Telegraph and Telephone Corporation Code quantity estimating method and device, their program, and recording medium
ES2532375T3 (es) * 2007-03-14 2015-03-26 Nippon Telegraph And Telephone Corporation Método de control de velocidad binaria de codificación, dispositivo, programa, y medio de grabación que contiene el programa
KR20080114388A (ko) * 2007-06-27 2008-12-31 삼성전자주식회사 스케일러블 영상 부호화장치 및 방법과 그 영상 복호화장치및 방법
JP2010045598A (ja) * 2008-08-12 2010-02-25 Fujitsu Ltd 可変長復号装置、及び、符号化装置
JP5067361B2 (ja) * 2008-12-25 2012-11-07 ソニー株式会社 エンコーダ及びデコーダ、符号方法及び復号方法、並びに記録媒体
CN101505155B (zh) * 2009-02-19 2012-07-04 中兴通讯股份有限公司 实现前缀码构造的装置和方法
US9490971B2 (en) * 2012-12-28 2016-11-08 Intel Corporation Instruction for fast ZUC algorithm processing
US9419792B2 (en) * 2012-12-28 2016-08-16 Intel Corporation Instruction for accelerating SNOW 3G wireless security algorithm
US9819359B1 (en) * 2016-12-11 2017-11-14 Microsoft Technology Licensing, Llc Multi-symbol, multi-format, parallel symbol decoder for hardware decompression engines
US11204768B2 (en) 2019-11-06 2021-12-21 Onnivation Llc Instruction length based parallel instruction demarcator

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5614952A (en) 1994-10-11 1997-03-25 Hitachi America, Ltd. Digital video decoder for decoding digital high definition and/or digital standard definition television signals
US5815646A (en) 1993-04-13 1998-09-29 C-Cube Microsystems Decompression processor for video applications
FR2705805B1 (fr) 1993-05-27 1996-06-28 Sgs Thomson Microelectronics Système de traitement d'images.
US5608459A (en) 1993-08-13 1997-03-04 Texas Instruments Incorporated Video data decoder having motion compensation and image memory circuitry on single substrate
US5604499A (en) 1993-12-28 1997-02-18 Matsushita Electric Industrial Co., Ltd. Variable-length decoding apparatus
KR970003024B1 (ko) 1994-02-28 1997-03-13 한국전기통신공사 병렬처리 패턴매칭을 이용한 가변부호길이에서 고속 재동기방법
US5557538A (en) 1994-05-18 1996-09-17 Zoran Microelectronics Ltd. MPEG decoder
US5502493A (en) 1994-05-19 1996-03-26 Matsushita Electric Corporation Of America Variable length data decoder for use with MPEG encoded video data
US5623311A (en) 1994-10-28 1997-04-22 Matsushita Electric Corporation Of America MPEG video decoder having a high bandwidth memory
US5623423A (en) 1994-12-12 1997-04-22 Univ. Of Texas Apparatus and method for video decoding
US5623308A (en) 1995-07-07 1997-04-22 Lucent Technologies Inc. Multiple resolution, multi-stream video system using a single standard coder
KR100207385B1 (ko) 1995-08-31 1999-07-15 전주범 가변 길이 복호화 장치

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR100731640B1 (ko) * 2005-12-23 2007-06-22 주식회사 텔레칩스 비트스트림 처리기

Also Published As

Publication number Publication date
CA2330566A1 (en) 1999-11-25
JP2002516501A (ja) 2002-06-04
DE69905565D1 (de) 2003-04-03
EP1078533B1 (en) 2003-02-26
US20030043917A1 (en) 2003-03-06
EP1078533A2 (en) 2001-02-28
US6704361B2 (en) 2004-03-09
CN1199472C (zh) 2005-04-27
CN1302512A (zh) 2001-07-04
WO1999060521A3 (en) 2000-03-16
DE69905565T2 (de) 2003-12-11
WO1999060521A2 (en) 1999-11-25
AU3990899A (en) 1999-12-06

Similar Documents

Publication Publication Date Title
KR20010043480A (ko) 디지털 방식으로 인코딩된 비디오 신호를 디코딩하기 위한가변길이 디코더
US6917652B2 (en) Device and method for decoding video signal
US6542541B1 (en) Method and apparatus for decoding MPEG video signals using multiple data transfer units
US6574273B1 (en) Method and apparatus for decoding MPEG video signals with continuous data transfer
US8774281B2 (en) Implementation of a DV video decoder with a VLIW processor and a variable length decoding unit
US7292772B2 (en) Method and apparatus for decoding and recording medium for a coded video stream
US5850258A (en) High level video decoding apparatus capable of decoding video data of a plurality of channels coded at a lower level
WO2001080567A1 (en) Decoder and decoding method, recorded medium, and program
US7227589B1 (en) Method and apparatus for video decoding on a multiprocessor system
JP3649729B2 (ja) ディジタル・ビデオ処理システムにおけるエラーを隠す装置
KR0157570B1 (ko) 복수경로를 통해 mpeg2 비트열을 복호하는 복호화장치
US6850568B1 (en) Method and apparatus for decoding mpeg video signals
US6934338B1 (en) Variable length decoder for decoding digitally encoded video signals
JP4906197B2 (ja) 復号装置および方法、並びに記録媒体
US8948263B2 (en) Read/write separation in video request manager
WO1998042139A1 (en) Video decoder with reduced size display buffer
US6614437B1 (en) Apparatus and method for efficient memory utilization in an electronic system
US8023564B2 (en) System and method for providing data starting from start codes aligned with byte boundaries in multiple byte words
JP2004274212A (ja) 画像符号化装置
WO2002037829A9 (en) Processing of digital video data
JP2001157211A (ja) 画像復号化方法及び装置並びに記憶媒体
JPH09307900A (ja) 可変長復号装置

Legal Events

Date Code Title Description
WITN Application deemed withdrawn, e.g. because no request for examination was filed or no examination fee was paid