KR100196019B1 - 스케일러블 mpeg2 컴플라이언트 비디오 인코더 - Google Patents
스케일러블 mpeg2 컴플라이언트 비디오 인코더 Download PDFInfo
- Publication number
- KR100196019B1 KR100196019B1 KR1019960052779A KR19960052779A KR100196019B1 KR 100196019 B1 KR100196019 B1 KR 100196019B1 KR 1019960052779 A KR1019960052779 A KR 1019960052779A KR 19960052779 A KR19960052779 A KR 19960052779A KR 100196019 B1 KR100196019 B1 KR 100196019B1
- Authority
- KR
- South Korea
- Prior art keywords
- data
- chip
- picture
- processor
- video encoder
- Prior art date
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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/423—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation characterised by memory arrangements
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/42—Methods 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/46—Embedding additional information in the video signal during the compression process
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/60—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
- H04N19/61—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/04—Colour television systems using pulse code modulation
- H04N11/042—Codec means
- H04N11/044—Codec means involving transform coding
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N11/00—Colour television systems
- H04N11/06—Transmission systems characterised by the manner in which the individual colour picture signal components are combined
- H04N11/20—Conversion of the manner in which the individual colour picture signal components are combined, e.g. conversion of colour television standards
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N5/00—Details of television systems
- H04N5/14—Picture signal circuitry for video frequency region
- H04N5/147—Scene change detection
Landscapes
- Engineering & Computer Science (AREA)
- Multimedia (AREA)
- Signal Processing (AREA)
- Compression Or Coding Systems Of Tv Signals (AREA)
Abstract
비트스트림을 포함하는 I-프레임을 생성하기 위해, I-프레임 전용 비디오 인코더 모듈이 이산 코사인 변환 프로세서, 양자화 유닛, 가변 길이 인코더, FIFO 버퍼 및 압축 저장 인터페이스를 구비한 스케일러블 아키텍춰 MPEG 컴플라이언트 디지털 비디오 인코더 시스템이 제공된다. IPB 비트스트림의 경우 상기 시스템은 기준 메모리 인터페이스, 모션 추정 및 보상 기능, 역양자화 및 역이산 코사인 변환, 및 모션 보상 수단을 구비한 제2 프로세서 소자, 및 적어도 하나의 제3 프로세서 소자를 포함한다. 상기 시스템은 단일 집적회로 칩, 또는 다수의 집적회로 칩일 수 있다. 이는 각각의 프로세서, I-프레임 비디오 인코더 모듈, 제2 프로세서 소자 및 제3 프로세서 소자를 위한 것이다. 하나 이상의 제3 프로세서 유닛이 존재할 수 있다.
Description
제1도는 데이터 경로가 i번째 입력(111), 차이 데이터(112), 모션 벡터(113), 화상 출력(121), 모션 추정 및 보상을 위한 피드백 화상(131), 및 모션이 보상된 화상(10)을 구비하고, 상기 i번째 화상이 프레임 메모리 또는 프레임 기억장치(42)에 존재하며, i+1번째 화상이 모션 추정에 따라 인코드되는 도면으로, 이산 코사인 변환기(21), 양자화기(23), 가변 길이 코더(25), 역양자화기(29), 역이산 코사인 변환기(31), 모션 보상기(41), 프레임 메모리(42), 및 모션 추정기(43)를 포함하는 범용 MPEG2 컴플라이언트 인코더(11)의 순서도.
제2도는 I, P 및 B 화상, 그 디스플레이와 송신 순서 및 포워드의 예, 및 백드모션 예측을 도시한 도면.
제3도는 현재의 프레임 또는 화상의 모션 추정 블럭에서 다음 또는 이전 프레임 또는 화상이 최적이 매칭 블럭까지의 탐색을 도시한 도면[소자(211 및 211')는 양 화상의 동일한 위치를 나타낸다.]
제4도는 이전 화상의 위치에서 새로운 화상으로의 모션 벡터에 따른 블럭의 이동 및 모션 벡터를 사용한 후에 조정된 이전 화상의 블럭을 도시한 도면.
제5도는 인트라-칩 또는 인트라-프로세서(601), 본 발명에서 재구성-칩 또는 재구성-프로세서(a Reconstruction chip or Reconstruction processor)(801)라고도 하는 리파인먼트-칩 또는 리파인먼트-프로세서(the Refinement-chip or Refinement processor)(801), 탐색-칩 또는 탐색-프로세서(901), 및 DRAM 칩과 SRAM 칩을 포함하는 연관된 RAM 칩(531, 533 및 535)이 존재하며, 상기 인트라-칩 또는 인트라 프로세서는 호스트 프로세서 인터페이스, 디지털 필터 비디오 입력(541), 및 압축 비디오 출력(543)을 포함하는 본 발명의 3개의 인코더 칩의 조합을 도시한 도면.
제6도는 호스트 인터페이스(611), 내부 RISC 프로세서(621), 모션 추정 수단에 대한 인터페이스(631), 픽셀 버스(643)로부터 픽셀 데이터를 수신하기 위한 픽셀 인터페이스(641), 외부 RAM(653)으로부터 프레임 데이터를 수신하고 상기 외부 RAM에 프레임 데이터를 송신하는 프레임 메모리 인터페이스(651), 이산 코사인 변환(DCT:Discrete Cosine Transform) 프로세서(671), 양자화 유닛(673), 가변 길이 인코더(675), FIFO 버퍼(677), 및 압축 저장 인터페이스(679)를 갖는 I-프레임 비디오 인코더 모듈(601)을 도시한 도면.
제7도는 프로세서 전용 기억 장소(711) 및 5개의 메모리 세그먼트(721, 723, 725, 727, 729)를 갖는 프레임 메모리 맵(701)을 도시한 도면.
제8도는 탐색 메모리 인터페이스(811), 탐색-입력 버퍼(821), 탐색-모션 추정기(803), 및 X-칩 인터페이스(831)를 갖는 S칩 또는 프로세서(801)를 도시한 도면.
제9도는 기준 메모리 인터페이스(911), 리파인먼트-입력 버퍼(921), 리파인먼트-모션 추정기(903), IR 칩 또는 프로세서 인터페이스(931), 리파인먼트-칩 또는 프로세서 소자(905'), 역양자화기(IQ:941), 역이산 코사인 변환 유닛(IDCT:943) 및 에러 예측 및 모션 보상기(945)를 갖는 리파인먼트-칩 또는 프로세서(901)를 도시한 도면.
* 도면의 주요부분에 대한 부호의 설명
531, 533 및 535 : RAM 칩 541 : 디지털 필터 비디오 입력
543 : 압축 비디오 출력
601 : I-프레임 비디오 인코더 모듈(인트라-칩 또는 인트라-프로세서)
611 : 호스트 인터페이스 621 : 내부 RISC 프로세서
631 : 모션 추정 수단에 대한 인터페이스
641 : 픽셀 인터페이스 643 : 픽셀 버스
651 : 프레임 메모리 인터페이스 653 : 외부 RAM
675 : 가변 길이 인코더 677 : FIFO 버퍼
679 : 압축 저장 인터페이스
801 : 리파인먼트-칩 또는 리파인먼트-프로세서(재구성-칩 또는 재구성-프로세서)
803 : 탐색-모션 추정기 811 : 탐색 메모리 인터페이스
821 : 탐색-입력 버퍼 831 : X-칩 인터페이스
901 : 탐색-칩 또는 탐색-프로세서(리파인먼트-칩 또는 프로세서)
903 : 리파인먼트-모션 추정기 911 : 기준 메모리 인터페이스
921 : 리파인먼트-입력 버퍼 931 : IR 칩 또는 프로세서 인터페이스
941 : 역양자화기(IQ) 943 : 역이산 코사인 변환 유닛(IDCT)
945 : 에러 예측 및 모션 보상기
[발명의 목적]
[발명이 속하는 기술분야 및 그 분야의 종래기술]
본 발명은 화상내의 용장 및 화상간의 용장인 공간(spatial)(화상내의) 및 시간(temporal)(화상간의) 압축을 포함하는 디지털 비쥬얼 이미지(digital visual image)를 인코딩하기 위한 장치에 관한 것이다. 화상내의 용장은 이산 코사인 변환, 양자화 및 가변 길이 인코딩을 이용하여 감소되거나 심지어 제거된다. 화상간의 용장은 모션 벡터를 이용하여 감소되거나 심지어 제거된다. 특히, 본 발명은 스케일러블인코더 시스템(scalable encoder system)에 관한 것이다. 즉, 비트스트림을 포함하는 I-프레임을 생성하기 위해, I-프레임 전용 비디오 인코더 모듈이 이산 코사인 변환 프로세서, 양자화 유닛, 가변 길이 인코더, FIFO 버퍼 및 압축 저장 인터페이스를 구비한 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템(a scalable architecture MPEG2 compliant digital video encoder system)에 관한 것이다. IPB 비트스트림의 경우, 상기 시스템은 기준 메모리 인터페이스, 모션 보상 기능, 역양자화 및 역이산 코사인 변환, 및 모션 보상 수단을 구비한 제2 프로세서 소자, 및 모션 추정을 위한 적어도 하나의 제3 프로세서 소자를 포함한다. 상기 시스템은 단일 집적회로 칩 또는 각각의 프로세서, I-프레임 비디오 인코더 모듈, 제2 프로세서 소자 및 제3 프로세서 소자를 위한 다수의 집적회로 칩 형태일 수 있다. 하나 이상의 제3 프로세서 유닛이 존재할 수 있다.
과거 10년 동안, 세계적인 전자 통신 시스템의 출현으로 인간이 정보를 송신 및 수신할 수 있는 방법이 향상되었다. 특히, 실시간 비디오 및 오디오 시스템의 기능이 최근에 크게 향상되었다. 비디오-온-디멘드(video-on-demand)와 가입자에의 비디오컨프런싱(videoconferencing to subscribers)과 같은 서비스를 제공하기 위해, 방대한 양의 네트웍 대역이 요구된다. 사실, 네트웍 대역은 종종 이러한 시스템의 효율성을 크게 억제한다.
네트웍에 의해 가해자는 제한을 극복하기 위해, 압축 시스템이 나타났다. 이 시스템은 화상 시퀀스의 용장을 제거함으로써 송신되어야만 하는 비디오 및 오디오 데이터의 양을 감소시킨다. 수신단에서, 화상 시퀀스는 해제되어 실시간으로 디스플레이될 수 있다.
최근에 부상하고 있는 비디오 압축 표준의 한 일례는 동화상 전문가 그룹(Moving Picture Experts Group(MPEG)) 표준이다. MPEG 표준 내에서, 비디오 압축은 소정의 화상내 및 화상간에 정의된다. 화상 내의 비디오 압축은 이산 코사인 변환, 양자화, 가변 길이 코딩 및 허프만 코딩에 의해 타임 도메인에서 주파수 도메인으로 디지털 이미지의 변환에 의해 달성된다. 화상 간의 비디오 압축은 모션 추정이라고 하는 프로세서를 통해 달성되는데, 여기서 모션 벡터 플러스 차이 데이터(a motion vector plus difference data)는 하나의 화상에서 다른 화상으로 한 세트의 펠의 번역을 나타내는데 사용된다.
ISO MPEG2 표준은 비트스트림의 구문 및 디코딩 프로세스의 시맨틱스만을 정의한다. 코딩 인수 및 성능 대 복잡성을 절충하여 선택하는 것은 인코더 개발자에게 달려있다. MPGE2 인코더 개발이 복잡하고 비용이 많이 들기 때문에, 다른 어플리케이션과 호환성이 있고 고객 요구에 따라 확장될 수 있는 인코더 해결방법, 즉, 스케일러블 인코더(a scalable encoder)가 바람직하다.
MPEG2는 비디오 화상을 처리하기 위해 MPEG1 성능의 10배의 성능과 MPEG1 해상도의 4배의 해상도를 필요로 한다. 개발자가 당면한 일은 쉽게 사용할 수 있는 인코더 제품을 개발하는 것이다. MPEG2는 몇몇 어플리케이션에 유익한 동작 특성을 제공하지만, 다른 어플리케이션에는 제한적으로만 만족시킨다. 발전적이고 경제적인 스케일러블 제품 아키텍취가 매우 바람직하다.
[발명이 이루고자 하는 기술적 과제]
본 발명의 주요 목적은 스케일러블 인코더 아키텍춰 및 구현을 제공하는데 있다.
본 발명의 다른 목적은, I-전용, I-P 및 I-P-B 시스템이 동일한 소자로부터 구축될 수 있게 하는 스케일러빌러티(scalability)를 제공하는데 있다.
본 발명의 상기 및 다른 목적은 본 발명의 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더에 의해 달성된다. 이 스케일러블 프로세서 시스템은 비트스트림을 포함하는 I-프레임을 생성하기 위해, 이산 코사인 변환 프로세서, 양자화 유닛, 가변 길이 인코더, FIFO 버퍼 및 압축 저장 인터페이스를 구비한 I-프레임 전용 비디오 인코더 모듈을 갖는다. IPB 비트스트림의 경우 상기 시스템은 기준 메모리 인터페이스, 모션 추정 기능, 역양자화 및 역이산 코사인 변환, 및 모션 보상 수단을 구비한 제2 프로세서 소자; 및 모션 추정을 위한 적어도 하나의 제3 프로세서 소자를 포함한다. 상기 시스템은 단일 집적회로 칩 또는 각각의 프로세서, I-프레임 비디오 인코더 모듈, 제2 프로세서 소자 및 제3 프로세서 소자 각각을 위한 다수의 집적회로 칩의 형태일 수 있다. 하나 이상의 제3 프로세서 유닛이 존재할 수 있다.
[발명의 구성 및 작용]
본 발명은 첨부된 도면을 참조로 보다 명확히 이해될 수 있다.
본 발명은 스케일러블 MPEG 및 HDTV 컴플라인언트 인코더 및 인코딩 프로세서에 관한 것이다. 인코더에 의해 수행된 인코딩 기능은 데이터 입력, 공간 압축, 모션 추정, 매크로블럭 종류 생성, 데이터 재구성, 엔트로피 코딩 및 데이터 출력을 포함한다. 공간 압축은 이산 코사인 변환(DCT), 양자화, 및 엔트로피 인코딩을 포함한다. 시간 압축은 역이산 코사인 변환, 역양자화 및 모션 보상과 같은 인텐시브(intensive)한 재구성 프로세싱을 포함한다. 모션 추정 및 보상은 시간 보상기능이다. 공간 및 시간 보상은 고도의 연산 조건을 갖는 반복적인 기능이다.
특히, 본 발명은 이산 코사인 변환, 양자화, 엔트로피 인코딩, 모션 추정, 모션 보상 및 예측을 포함하는 공간 및 시간 압축을 수행하기 위한 스케일러블 프로세서에 관한 것으로, 더 상세하게는, 공간 및 시간 압축을 달성하기 위한 스케일러블 시스템에 관한 것이다.
본 발명의 스케일러블 프로세서 시스템은 비트스트림을 포함하는 I-프레임을 생성하기 위해 이산 코사인 변환 프로세서, 양자화 유닛, 가변 길이 인코더, FIFO 버퍼 및 압축 저장 인터페이스를 갖는 I-프레임 전용 비디오 인코더 모듈을 구비한다. IPB 비트스트림의 경우 시스템은 기준 메모리 인터페이스, 모션 추정 기능, 역양자화 및 역이산 코사인 변환, 및 모션 보상 수단을 갖는 제2 프로세서 소자, 및 모션 추정을 위한 적어도 하나의 제3 프로세서 소자를 포함한다. 상기 시스템은 단일 집적회로 칩 또는 각각의 프로세서, I-프레임 비디오 인코더 모듈, 제2 프로세서 소자, 및 제3 프로세서 소자를 위한 다수의 집적회로 칩의 형태일 수 있다. 하나 이상의 제3 프로세서 유닛이 존재할 수 있다.
제1 압축 단계는 공간 용장(spatial redundancy)의 제거, 예를 들면, Ⅰ 프레임 화상의 정지 화상(still picture)에서 공간 용장의 제거이다. 공간 용장은 화상내의 용장이다. 이하에 기술된 모션 보상 프로세스의 블럭에 근거한 특성 때문에, 이는 공간 용장을 감소시키는 블럭에 근거한 방법(a block based method)을 사용하는 MPEG-2 표준 초안에 바람직하였다. 선택 방법은 이산 코사인 변환, 및 화상의 이산 코사인 변환 코딩이다. 이산 코사인 변환 코딩은 또 다른 레벨의 압축을 달성하기 위해 가중 스칼라 양자화 및 런 길이 코딩과 결합된다.
이산 코사인 변환은 직교 변환이다. 직교 변환은 주파수 도메인 해석을 갖기 때문에 필터 뱅크 지향(filter bank oriented)이다. 또한 이산 코사인 변환은 국부적이다. 즉, 인코딩 프로세스는 64개의 변환 계수 또는 서브밴드를 계산하기에 충분한 8×8 공간 윈도우에서 샘플한다.
이산 코사인 변환의 다른 장점은 고속 인코딩 및 디코딩 알고리즘을 이용할 수 있다는 것이다. 또한, 이산 코사인 변환의 서브밴드 분해(decomposition)는 사이코비쥬얼 기준(pyschovisual criteria)을 효과적으로 사용할 수 있도록 충분히 잘 동작한다.
변환 후에, 많은 주파수 계수들, 특히 높은 공간 주파수의 계수는 제로이다. 이 계수는 지그재그 패턴으로 구성되고, 한쌍의 런-진폭(런-레벨)으로 변환된다. 각각의 쌍은 제로 계수의 수와 제로가 아닌 계수의 진폭을 나타낸다. 이는 가변 길이 코드로 코드화된다.
모션 보상은 화상간의 용장을 감소시키거나 심지어 제거하는데 사용된다. 모션 보상은 현재의 화상을 블럭, 예를 들면, 매크로블럭으로 분할한 후, 유사한 내용을 갖는 인근 블럭을 이전에 송신된 화상에서 탐색함으로써 시간 용장을 이용한다. 기준 화상으로부터 추출된 예측된 블럭 펠과 현재의 블럭 펠 간의 차이만이 실제로 압축된 후 송신된다.
모션 보상 및 예측의 가장 간단한 방법은 휘도 및 색차, 즉, I 화상에 있는 모든 픽셀의 강도 및 칼라를 기록한 후, 휘도 및 색차의 변경, 즉, 다음 화상에 있는 모든 특정 픽셀의 강도 및 칼라의 변경을 기록하는 것이다. 그러나, 이것은 대상체가 화상간에 이동하기 때문에, 즉, 픽셀 내용이 한 화상의 한 위치에서 다음 화상의 다른 위치로 이동하기 때문에, 전송 매체 대역, 메모리, 프로세서 용량 및 처리 시간에 있어서 비경제적이다. 보다 진보된 개념은 이전 또는 다음 화상을 이용하여 픽셀의 블럭이, 예를 들면 모션 벡터에 따라 다음 또는 이전 화상 또는 화상들의 어디에 있는지를 예측하고, 그 결과를 예측 화상 또는 P 화상으로서 기록하는 것이다. 특히, 이것은 i번째 화상의 픽셀 또는 픽셀의 매크로블럭이 i-1번째 또는 i+1번째 화상의 어디에 있는지를 최적으로 추정하거나 또는 예측하는 것을 포함한다. 다른 한 단계는 픽셀의 블럭이 중간 또는 B 화상의 어디에 있는지를 예측하기 위해 다음 및 이전 화상 모두를 사용하는 것이다.
화상 인코딩 순서 및 화상 송신 순서는 화상 디스플레이 순서와 반드시 일치하지 않는다는 것에 주의한다. 제2도를 참조한다. I-P-B 시스템의 경우 입력 화상 송신 순서는 인코딩 순서와 다르고, 입력 화상은 인코딩에 사용될 때까지 일시적으로 저장되어야만 한다. 버퍼는 사용될 때까지 이 입력을 저장한다.
예시 목적으로, MPEG 컴플라이언트 인코딩의 일반적인 플로우챠트가 제1도에 도시되어 있다. 이 플로우챠트에서 i번째 화상 및 i+1번째 화상의 이미지가 처리되어 모션 벡터를 생성한다. 모션 벡터는 픽셀의 매크로블럭이 이전 및/또는 다음 화상의 어디에 있는지를 예측한다. 전체 이미지 대신의 모션 벡터의 사용은 MPEG 및 HDTV 표준에서 시간 압축의 중요한 특징이다. 제1도에 도시된 바와 같이 일단 생성된 모션 벡터는 i번째 화상에서 i+1번째 화상까지 픽셀의 매크로블럭을 번역하는데 사용된다.
제1도에 도시된 바와 같이, 인코딩 프로세스에서, i번째 화상 및 i+1번째 화상의 이미지는 인코더(11)에서 처리되어 예를 들면 i+1번째 및 다음 화상이 인코드되어 송신되는 형태인 모션 벡터를 생성한다. 다음 화상의 입력 이미지(111X)는 인코더의 모션 추정 유닛(43)으로 진행한다. 모션 벡터(113)는 모션 추정 유닛(43)의 출력으로서 형성된다. 이 벡터 이전 및/또는 다음 화상으로부터 매크로블럭 데이터(기준 데이터라고 함)를 검색하여 출력하기 위해 모션 보상 유닛(41)에 의해 사용된다. 모션 보상 유닛(41)의 한 출력은 모션 추정 유닛(43)으로부터의 출력과 네가티브(negatively)하게 더해지고, 이산 코사인 변환기(21)의 입력으로 진행한다. 이산코사인 변환기(21)의 출력은 양자화기(23)에서 양자화된다. 양자화기(23)의 출력은 2개의 출력(121 및 131)으로 분할되는데, 한 출력(121)은 런 길이 인코더와 같이 송신 이전의 다른 압축 및 처리를 위해 다운스트림 소자(25)로 진행하고, 다른 출력(131)은 기준 메모리(42)에 저장되기 위해 픽셀의 인코드된 매크로블럭으로 재구성된다. 예시 목적으로 도시된 인코더에서, 상기 두 번째 출력(131)은 역양자화(29)되고 역이산 코사인 변환(31)되어 느슨한 버전(a loosy version)의 차이 매크로블럭을 반환한다. 이 데이터는 모션 보상 유닛(41)의 출력과 더해져 본래 화상의 느슨한 버전을 기준 메모리(42)로 반환한다.
제2도에 도시된 바와 같이, 3가지 종류의 화상이 존재한다. 전체적으로 인코드되어 송신되고, 모션 벡터가 정의될 필요가 없는 인트라 화상 또는 I 화상이 존재한다. 상기 I 화상은 모션 벡터의 소스로서의 역할을 한다. 이전 화상으로부터 모션 벡터에 의해 형성되고 다른 화상을 위해 모션 벡터의 소스로서의 역할을 할 수 있는 예측 화상 또는 P 화상이 존재한다. 마지막으로, 2개의 다른 화상, 하나는 과거 화상, 다른 하나는 미래 화상으로부터의 모션 벡터에 의해 형성되고 모션 벡터의 소스로서의 역할을 할 수 없는 양방향 화상 또는 B 화상이 존재한다. 모션 벡터는 I 및 P 화상으로부터 생성되고, P 및 B 화상을 형성하는데 사용된다.
제3도에 도시된 모션 추정이 수행되는 한가지 방법은 최적의 매치 매크로블럭(213)을 찾기 위해 다음 화상의 영역에 걸쳐 i번째 화상의 매크로블럭(211)에서 탐색하는 것이다. 이러한 방법으로 매크로블럭을 번역함으로서 제4도에 도시된 바와 같이 i+1번째 화상에 대한 매크로블럭의 패턴이 만들어진다. 이러한 방법으로, i번째 화상은, 예를 들면 모션 벡터와 차이 데이터에 의해 미세하게 변하여 i+1번째 화상을 생성한다. 인코드되는 것은 모션 벡터와 차이 데이터이고, i+1번째 화상 그 자체는 아니다. 모션 벡터는 화상에서 화상으로 이미지의 위치를 번역하는 반면에 차이 데이터는 색차, 휘도, 및 포화를 변경시킨다. 즉, 음영 및 조도를 변경시킨다.
제3도를 참조하면, i+1번째 화상에서와 같이 i번째 화상의 동일한 위치에서 시작하여 양호한 매치(a good match)를 찾을 수 있다. 탐색 윈도우는 i번째 화상에서 생성된다. 이 탐색 윈도우내에서 최적의 매치(a best match)를 탐색한다. 일단 발견되면, 매크로블럭을 위한 최적의 매치 모션 벡터가 코드화된다. 최적의 매치 매크로블럭의 코딩은 모션 벡터를 포함, 즉 y방향에 있는 얼마나 많은 픽셀과 x방향에 있는 얼마나 많은 픽셀이 다음 화상에 배치된 최적의 매치인지를 포함한다. 또한 현재의 매크로블럭과 최적의 매치 기준 매크로블럭간의 색차 및 휘도 차이인 예측 에러라고도 하는 차이 데이터(difference data)가 인코드된다.
MPEG2 인코더의 동작 기능은 3개의 기본 디바이스: I 또는 인트라 디바이스, R 또는 리파인먼트 또는 재구성 디바이스(Refinement or Reconstruction device), 및 S 또는 탐색 디바이스로 구현된다. 이 기능은 어플리케이션 요구, 실리콘 크기, 툴과 설계 복잡성, 및 성능에 따라 파티션된다.
제6도에 도시된 바와 같이, 픽셀 인터페이스(641), 호스트 인터페이스(611), 및 출력 데이터 인터페이스(679)를 포함하는 모든 외부 통신이 단일 I 디바이스(601)로 이루어진다. I 디바이스(601)는 제5도에 도시된 바와 같이 인코더의 마스터 인터페이스이고, 본 발명의 칩 세트를 사용하는 임의의 비디오 압축 어플리케이션에서는 기본 조건이다. 엔트로핑 코딩 기능, 이산 코사인 변환 프로세서 유닛(671) 즉, 양자화 유닛(673), 및 가변 길이 인코더 유닛(675)과 함께 프로그래머블 프로세서(621)가 칩에 내장된다, 그 결과, 상기 디바이스는 I-전용 화상을 인코딩할 필요가 있는 어플리케이션에 사용된다. 또한 재구성된 인터페이스는 기능 확장이 가능하도록 추가된다. 인코딩하기 전에 사용되는 프로세싱 기능도 역시 이 디바이스에 포함된다.
매크로블럭의 재구성 프로세싱은 모든 I-화상 및 P-화상을 인코딩하는데 필요하다. 역이산 코사인 변환(IDCT)(943), 역양자화(IQ)(941), 및 모션 보상(MC)(903)과 같은 기능이 제9도에 도시된 바와 같이 단일 칩, R 칩 또는 R 프로세서(901)에 통합된다. 프로그래머블 프로세서에 의한 소형 모션 추정 기능 기능도 또한 추가되어 저속 모션 어플리케이션(low motion applications)을 처리한다. 탐색 결과 인터페이스는 보다 고속 모션 어플리케이션을 위해 설치된다. 그 결과, I 및 R-칩은 거리학습, 비디오컨프런싱, 감시 등과 같이 모션이 보다 적은 어플리케이션에 함께 사용될 수 있다.
모션 추정은 반복 기능이고 고도의 연산 조건을 갖는다. 하드웨어 디바이스, 제8도에 도시된 외부 프로그래머블 레지스터를 갖는 탐색-칩 또는 프로세서(801)가 전적으로 기능을 위해 사용된다. 확장 인터페이스가 설치되어 보다 넓은 범위의 탐색이 가능해진다. 방송 송신 등과 같은 어플리케이션에 3가지 컨피그레이션이 사용될 수 있다. 고속 촬영이 과학 어플리케이션과 같은 고속 모션의 경우, 부수적인 S 칩(801)이 탐색 범위가 보다 넓은 보다 우수한 화상 품질을 제공한다. 이것은 이 아키텍춰의 스케일러블 특성이다.
[칩 파티션(Chip Partition)]
3개의 인코더 칩의 접속이 제5도에 도시되어 있다. 제5도는 본 발명의 3개의 인코더 칩의 조합을 도시한 것이다. 인트라-칩 또는 인트라-프로세서(601), 리파인먼트-칩 또는 리파인먼트-프로세서(801), 탐색-칩 또는 탐색-프로세서(901), 및 DRAM 칩과 SRAM 칩을 포함하는 연관된 RAM 칩(531, 533 및 535)이 존재한다. 인트라-칩 또는 인트라-프로세서는 호스트 프로세서 인터페이스, 디지털 필터 비디오 입력(541), 및 압축 비디오 출력(543)을 포함한다.
[I-칩]
제6도에 도시된 I-칩(601)은 인코더 시스템의 입력 데이터(541) 및 출력 비트스트럼(543)을 처리한다. 들어오는 픽셀 데이터는 프레임 기억장소라고 하는 외부 DRAM에 프레임 포맷으로 저장된다. 이 칩은 I 프레임 인코딩에 필요한 코어 기능(the core functions)을 수행한다. 픽셀 데이터는 필요하면 RGB 포맷에서 YCbCr 포맷으로 변환된다. 픽셀 데이터는 장면을 바꾸기 위해 그리고 3:2 풀다운(pulldown)에 의해 생성된 반복 필드(repeat fields)를 위해 모니터된다. 또한 들어오는 픽셀 데이터는 HHR 출력 포맷을 생성하도록 조정된다. 인코더는 그것이 어떻게 입력되었는 지에 관계없이 필드 또는 프레임 입력 포맷을 수신하고 필드 또는 프레임으로 인코드된 데이터를 출력할 수 있다. 입력 4:2:2 데이터는 4:2:2 또는 4:2:0 출력으로서 인코드될 수 있다. 온-칩 RISC 프로세서(621)는 적응적 DCT, 적응적 양자화 및 속도 제어를 담당하고 있다. 이 프로세서는 4 바이트 엔진 또는 4개의 1 바이트 엔진으로서 동작할 수 있게 하는 다이나믹하게 파티션가능한 구조(a dynamically partionable structure)를 갖는다. 이것은 본 명세서에 참조용으로 인용된, 통상적으로 양도되고 계류중이며 차스 보이세, 존 엠, 카즈마르크작, 아그네스 니가이, 및 로버트 씨. 우더드에 의해 1995년 3월 27일 출원된 미국출원번호 제 08/411,234호 다이나믹하게 파티션가능한 디지털 비디오 프로세서에 기술되어 있다.
인코드된 화상 데이터는 본 명세서에 참조용으로 인용된, 통상적으로 양도되고 계류중이며 제임스 디. 그린필드, 다이안 엠. 마우어스버그 및 아그네스 니가이에 의해 1995년 3월 27일 출원된 미국출원번호 제08/410,951호 헤더 생성용 장치에 기술된 헤더 정보와 병합된다. 이것은 예를 들면 인코더가 압축 저장 인터페이스(679)를 통해 외부 DRAM 또는 FIFO에 저장시킬 수 있는 최종 MPEG-2 또는 MPEG-1 출력 비트스트림을 생성한다. 화상이 DRAM에 저장될 때, 화상은 비실시간으로 호스트 인터페이스를 통해 사용자에 의해 판독될 수 있다.
[R-칩]
제9도에 도시된 리파인먼트 칩 또는 재구성 칩이라고도 하는 R-칩(901)은 모션 보상을 위해 화상의 탐색 추정 리파인먼트 및 재구성을 담당하고 있다. 외부 DRAM은 모션 추정 기능을 지원하는데 사용된다. R칩 기능 유닛은 화상의 재구성 및 모션 추정에 필요한 모든 기본 기능을 수행한다.
프로세서의 주요 기능은 매크로블럭 종류 결정, 화상마다의 탐색 범위 조정, 및 모션 추정 보조이다. 양자화기 데이터는 I-칩 모션 추정기 인터페이스(631)로부터 수신되는 반면에 S-칩 탐색 결과는 S-칩 X-칩 인터페이스(831)로부터 수신된다. 다음에 양자화된 데이터가 4개까지의 매트릭스 표를 사용하여 디콴티즈(dequantized)된다. IDCT는 2차원 역변환을 통해 계수를 픽셀 데이터로 변환한다. 이와 같이 재구성된 화상 데이터는 다음 화상 코딩을 위해 메모리 인터페이스에 의해 기준 데이터로서 저장된다. 모션 추정은 I, P 및 B 화상을 위해 필드, 프레임 듀얼 프라임(frame dual prime) 및 1/2 펠 해상도에 대한 양방향 모션 종류를 지원할 수 있다.
2개의 칩 컨피그레이션(인트라-칩 및 리파인먼트/재구성-칩)은 +/-8H 및 +/-7V 탐색 범위까지 지원할 수 있고 3칩 컨피그레이션(인트라-칩, 리파인먼트/재구성-칩 및 탐색 칩)은 +/-64H 및 +/-56V 탐색 범위까지 지원할 수 있다. 모션 추정 결과가 필요할 때, 탐색 윈도우 크기 및 최적의 매치 결과가 결정되고, 매크로블럭 차이 데이터가 생성된다.
[탐색-칩]
제8도에 도시된 탐색-칩(801)은 대부분의 모션 추정을 담당하고 있다. 모션 추정의 목적은 기준 화상에서 현재의 화상으로부터 매크로블럭(현재의 화상 매크로블럭 또는 CMB)의 위치를 찾는데 있다. 이 위치는 CMB 데이터를 기준 화상 데이터에 비교하고 이전 화상의 모션에 근거한 바이어스로서 인수 분해(factoring in a bias)하여 결정되는 최적의 매치를 찾음으로써 결정된다.
풀 기준 화상은 실시간으로 탐색될 수 없다. 따라서, 기준 화상의 서브셋이 탐색된다. 이 서브셋은 탐색 윈도우(the Search Window)라고 불리운다. 제3도를 참조한다. 탐색 윈도우가 클수록, CMB에 대한 정확한 매치를 찾을 기회가 커진다. 탐색 윈도우는 부수적인 탐색-칩(801)을 사용함으로써 크게 증가될 수 있다. 효과적인 모션 추정은 보다 높은 품질의 비디오 및 고압축 비트 스트림을 가능하게 한다. 탐색-칩은 리파인먼트/재구성-칩의 프로세서로부터 탐색 윈도우 인수를 수신하고 화상 구조에 근거하여 인트라-칩으로부터 프레임 또는 필드 포맷으로 휘도 화상 데이터를 수신한다.
기준 화상은 프레임 포맷으로 오프-칩 SRAM에 저장된다. 모션 추정 유닛은 CMB 및 기준 화상에 대해 필드 탐색을 수행한다. 4개의 필드 결과는 프레임 구조 화상에 대한 프레임 결과와 함께 계산된다. 결과는 절대 차이 값 형태이고 이전 화상 모션 특성을 기초로 바이어스된다. 바이어스된 절대 차이 값은 모션 벡터와 함께 R-칩(901)으로 송신된다.
[처리 순서]
I-칩(601)은 프리프로세싱 및 엔트로피 코딩 기능 모두를 포함한다. 프리프로세싱 기능(the pre-processing functions)은 임의의 코딩 기능에 앞서 수행된다. 엔트로피 코딩(Entropy coding)은 화상 프로세싱의 마지막 부분이다. 그 블럭도가 제6도에 도시되어 있다.
[호스트 인터페이스]
호스트 인터페이스(611)는 인트라-칩(601)에 설치되고, 인코더 칩 세트와 외부 세계 사이의 주 제어 채널로서의 역할을 한다. 이 인터페이스는 포괄적인 16비트 데이터 및 8비트 어드레스 RAM-형 프로토콜이다. 이 인터페이스에서 정의된 레지스터는 명령, 컨피그레이션 인수, 인코딩 인수, 초기화 데이터, 메일박스 등을 포함한다. 호스트 명령은 시작 인코드, 정지 인코드, 출력 DRAM으로부터의 검색 압축 화상 등을 포함한다. 컨피그레이션 인수는 메모리 크기, 메모리 종류, 인코더 시스템에 설치된 칩의 수 등을 포함한다.
인코딩 인수는 전원 공급시 세트될 수 있거나 인코딩 프로세스를 안내하기 위해 화상 경계에서 수정될 수 있다. 이 인수는 비디오 입력 포맷 대 비디오 출력 포맷, 사용자 매트릭스 표, 인트라 VLC 표, ZZ 스캔 패턴, 필드/프레임 화상 코딩, 시퀀스에 있는 화상의 수, GOP에 있는 화상의 수, B 화상의 수, 기준 필드의 수, 및 사용자 특정 데이터 등을 포함한다. 이 인터페이스는 또한 칩 세트를 초기화하는데 사용된다. 인코더 칩 세트에는 2개의 내부 프로세서가 존재한다. 이들 두 프로세서의 인스트럭션은 이 인터페이스를 통해 다운로드된다. 특정 내용이 적절히 기능하는데 필요한 버퍼도 역시 이 인터페이스를 통해 초기화된다.
메일박스는 온-칩 프로세서와 외부 프로세서 간의 통신 메카니즘이다. 명령 또는 새로운 정보가 정확한 레벨의 프로세서 코드로서 메일박스 레지스터를 통해 온-칩 프로세서에 보내질 때, 새로운 명령이 구현된다. 이 레지스터는 호환성을 제공한다. 정의된 기능은 호스트 기록(host writes)에 의한 코딩 프로세스 동안 선택되거나 해제될 수 있다.
또한 스택이 이 인터페이스에 설치되어 코딩 프로세스 동안 레지스터가 변경되는 것을 가능하게 한다. 스택은 12 딥(deep)이다. 호스트 기록은 인코더가 화상을 인코드하는데 비지(busy)이면 스택에 기록될 수 있다. 스택에 기록된 정보는 현재 화상의 프로세싱 종료시에 처리될 것이다. 인코더는 스택이 비워질 때까지 외부 프로세서에 비지로 나타난다. 이와 같이 설계함으로서 화상 프로세싱 간의 통신 시간이 감소되어 코딩 시간을 극대화시키는 것을 가능하게 한다.
[픽셀 인터페이스]
픽셀 인터페이스는 RGB 디지털 입력을 수신하는데 사용되는 24 비트 픽셀 인터페이스이다. 이 인터페이스도 역시 16 또는 24 비트 YCbCr 입력 데이터를 처리할 수 있다. 칼라 변환 회로, 장면 변경 검출 논리, 및 3/2 풀다운 반전 기능이 또한 이 인터페이스에 설치된다.
칼라 변환 프로세스, 데이터 축소 형태는 4:2:2 또는 4:2:0 색차 인코딩 포맷으로부터 입력 데이터를 변환시킬 수 있다.
화상의 모든 위치는 휘도 및 색차 픽셀 데이터로 표시된다. MPEG2 표준에 명시된 바와 같이, YCbCr 데이터는 압축을 위한 입력 데이터 포맷 및 해제를 위한 출력이다. RGB 입력 데이터의 경우, 먼저 입력은 임의의 인코딩 프로세서 이전에 4:2:2 포맷으로 변환되어야 한다. 만일 입력 데이터가 4:2:2 YCbCr 포맷이면, 이것은 화상의 모든 위치가 8비트 휘도 데이터 및 8비트 선택적 칼라 Cb 및 Cr 데이터로 표시된다는 것을 의미한다. 만일 입력이 4:2:0 YCbCr 포맷이면, 이것은 화상의 모든 위치가 8비트 휘도 데이터 및 수평과 수직으로 서브샘플된 칼라 Cb 및 Cr 데이터로 표시된다는 것을 의미한다. 불필요한 용장 정보는 한 단계의 압축을 달성하고 나머지 인코더를 통해 흐르는 데이터의 양을 최소화하기 위해 입력단에서 칼라 변환 프로세스 및/또는 4:2:2 내지 4:2:0 데시메이션에 의해 제거된다. 이것은 나머지 디바이스의 성능 조건을 감소시킨다.
보다 넓은 어플리케이션을 커버하기 위해, MPEG2 표준은 압축 프로세스를 위한 코딩 툴 및 옵션에 대해 기술하고 있다. 그러나, 소정의 어플리케이션을 위해 품질/성능 대 복잡성간에 절충하는 것은 인코더 개발자에 달려있다. 다수의 코딩 옵션은 화상 레벨 또는 매크로블럭 레벨 중 어느 한 레벨로 화상내에서 적용된다. 이와 같은 유연성은 비트율 제어를 향상시킬 수 있게 한다. 코딩 옵션의 다이나믹하고도 적응적인 변화는 현재의 정보에 근거하여 차후의 코딩에 적용될 수 있거나 또는 차후의 정보에 근거하여 현재의 데이터에 적용될 수도 있다. 인코딩 프로세스에 미리 화상 정보를 수집하는 장면 변경 검출, 룩-어헤드 메카니즘(a look-ahead mechanism)은 훨씬 더 효율적인 제어를 제공한다. 장면 변경 검출은 화상 간의 보다 큰 편차 및 복잡성 차이를 나타낸다. 장면 변경 검출 계산은 입력 데이터에 대해 수행되는데, 나머지 기능에 대한 잉여의 데이터 순서 또는 대역폭 조건은 없다. 입력 화상 순서가 인코딩 순서와 다르기 때문에, 3개까지의 화상의 정보가 장면 변경 검출 논리를 통해 프리프로세스된다. 장면 변경 검출 논리는 처리되고 있는 화상의 품질을 조절하는데 사용될 수 있다. 이 룩-어헤드 레벨은 인코더가 화상 프로세싱의 시작 및 중간 모두에서 코딩 옵션을 다이나믹하게 바꿀 수 있게 한다.
만일 3/2 풀다운 반전이 (3/2 PDI) 인에이블되면, 입력 데이터는 용장 또는 반복 필드를 포함한다. 보다 효율적으로 하기 위해, 용장 데이터는 인코딩 이전에 제거되어야만 한다. 반복 필드 검출은 적어도 하나의 필드 데이터가 저장될 것을 필요로 한다. 반복 필드 검출을 위한 온-칩 저장 공간 조건은 외부 메모리에 필드 데이터를 저장하는 것을 보다 경제적이게 한다. 입력 데이터는 먼저 프레임 저장 DRAM에 저장되고 반복 필드 검출 및 화상 인코딩을 위해 검색되어야만 한다. 검출 스킴(The detection scheme)은 3/2 패턴에 근거한다. 효과적인 3/2 풀다운 반전 논리로서, 30개의 모든 입력 화상 중 24개의 화상만이 3/2 풀다운 반전이 적용된 후에 인코드될 것이다. 다음에 나머지 메모리 대역이 반복 필드 데이토 훼치(repeat field data fetch)에 사용될 수 있다. 메모리 트래픽을 최소로 하기 위해, 다음과 같은 스킴이 사용되는데, 만일 최초에 입력 데이터가 기수 필드이면, 이때 기수 필드 데이터에 대해 먼저 검출이 수행되고, 반복 기수 필드가 검출된 후 우수 필드 데이터 검출이 수행될 것이다. 만일 최초에 입력 데이터가 우수 필드이면, 이때 그 역이 발생한다. 한 바이트의 데이터가 픽셀 인터페이스에 수신되면, 동일한 패리티의 이전 필드에 있는 동일한 바이트 위치가 프레임 저장 메모리로부터 검색된다. 반복 필드는 필드 화상 입력의 종료시에 결정된다. 만일 필드가 반복 필드이면, 이때 동일한 패리티의 다음 필드를 입력하기 위해 그 메모리 위치가 사용될 것이다. 이것은 화상 인코딩 동안 메모리 훼치의 복잡성을 제거한다.
[프레임 메모리 인터페이스]
프레임 메모리 인터페이스가 제7도에 도시되어 있다. 픽셀 인터페이스의 출력에서, 입력 데이터는 인트라-칩에 부착된 외부 프레임 메모리 DRAM에 저장될 준비가 된다. 이 프레임 메모리는 인코딩할 준비가 될 때까지 입력 화상(현재의 데이터)를 저장하는 데에만 사용된다. 이 인터페이스에서의 트래픽은 입력 데이터 송신 속도의 약 2배이다. 32비트 데이터 버스는 DRAM, 예를 들면 70ns DRAM을 지원하는데 사용된다. I 및 IP 코딩 포맷의 경우, 입력 화상 순서는 화상 인코딩 순서와 동일하다. 이 때문에, 인코딩은 데이터의 한 매크로블럭을 이용할 수 있을 때 시작된다. 이 컨피그레이션에서, 프레임 메모리는 입력 화상 데이터를 위해 5개의 세그먼트 그리고 온-칩 프로세서 사용을 위해 하나의 세그먼드인 6개의 세그먼트로 분할된다. 프레임 메모리의 세그먼트는 각각의 입력 화상을 위해 선택된다. 이 화상에 있는 데이터는 선택된 세그먼트의 시작 어드레스에 대한 오프셋으로 순차적으로 저장된다. 각각의 세그먼트는 프로세서 사용을 위한 세그먼트가 보다 작다는 것을 제외하고 화상 크기의 1/4이다. 연속하는 4개의 세그먼트가 각각의 입력 화상을 위해 사용된다. 5개의 세그먼트가 차례로 사용된다. 메모리 맵이 제7도에 도시되어 있다.
첫 번째 입력 화상이 수신되면, 이 세그먼트 4에 저장된다. 각각의 세그먼트 크기가 단지 화상의 1/4뿐이기 때문에, 첫 번째 화상은 세그먼트 4, 3, 2 및 1을 사용한다. 두 번째 입력 화상은 세그먼트 0, 4, 3 및 2에 저장된다. 세 번째 화상은 세그먼트 1, 0, 4 및 3에 저장된다. 네 번째 화상은 세그먼트 2, 1, 0 및 4에 저장된다. 다섯 번째 화상은 세그먼트 3, 2, 1 및 0에 저장된다. 그 후 세그먼트 사용 패턴은 반복된다. 이 스킴은 I 및 IP 컨피그레이션에 대한 외부 메모리 조건, 1MB DRAM을 최소로 한다. IPB 코딩 포맷의 경우 입력 화상 순서는 제2도에 도시된 바와 같이 인코딩 순서와 다르다. 따라서, 입력 화상은 사용 준비가 될 때까지 모두 저장되어야만 한다. 이 경우, 메모리 크기는 NTSC에 대해 2MB이고, PAL에 대해 4MB이다. 프레임 메모리는 입력 화상을 위한 4개의 세그먼트 그리고 온-칩 프로세서 사용을 위한 한 개의 세그먼트인 5개의 세그먼트로 분할되어 있다. 각각의 세그먼트는 화상 크기와 동일하다. 이 세그먼트는 비-IPB 포맷과 유사한 방식으로 사용된다. 이 스킴은 코딩 포맷을 기초로 스케일러블 메모리 조건을 가능하게 한다.
프레임 메모리의 주 트래픽은 입력 데이터 저장, 3/2 풀다운 반전 데이터 훼칭 및 인코드 데이터 훼칭으로 구성된다. 입력 데이터 저장이 최고 우선권을 그리고 풀다운 반전 데이터 훼칭이 최하위 우선권을 갖는 우선권 스킴이 프레임 메모리 인터페이스에 이용된다. 입력 데이터 저장은 32B 이상의 데이터가 픽셀 인터페이스에서 누적될 때 이루어진다. 픽셀 인터페이스에서 데이터가 32B 미만일 때까지 데이터가 한번에 4바이트씩 DRAM에 연속적으로 저장되는데, 이때 계류중인 메모리 데이터 훼치가 서비스될 것이다. 인코드 데이터 훼치는 16×16 바이트 메크로블럭이다. 이 훼치는 입력 데이터 저장 요청에 의해 임의의 DRAM행 어드레스에서 다이나믹하게 인터럽트한다. 인터럽트한 훼치는 픽셀 인터페이스의 데이터가 오버런 되는 것을 방지한다.
매크로블럭 데이터는 코딩 파이프라인이 스톨하는 것을 방지하기 위해 프리훼치(pre-fetched)된다. 매크로블럭 데이터를 이용할 수 있을 때, 코딩 프로세스가 시작된다. 매크로블럭 데이터 순서는 처리되고 있는 화상의 종류에 따른다. 설명의 편의상, 예측 화상 프로세싱을 가정한다. P화상의 경우, 현재의 매크로블럭 데이터가 3개의 모든 디바이스에 동시에 전달된다. 각 칩에서의 데이터 사용은 서로 다르고, 데이터가 사용되는 시간도 역시 다르다. 매크로블럭 데이터가 수신하는 모든 디바이스에 의해 수신될 때 이 매크로블럭 데이터의 논리 순서는 S-칩(801)에서부터 R-칩(901)으로 그리고 다시 I-칩(501)으로 진행한다.
[탐색-칩에서의 프로세싱]
[탐색-입력 버퍼]
제8도에 도시된 탐색-칩(801)에서, 현재의 매크로블럭 데이터는 주로 모션 추정에 사용된다. 사용자가 선택한 탐색 포맷에 따라, 매크로블럭 데이터는 입력 버퍼에서 4:1, 2:1로 다운샘플되거나 1:1로 유지된다. 단일 탐색-칩(801)은 4:1 포맷에서 최대의 탐색 범위를 제공하고 1:1 포맷에서 최소의 탐색 범위를 제공한다. 4:1 포맷 및 2:1 포맷 모두에서의 다운 샘플링이 수평으로 수행된다. 이 스킴은 다운샘플된 동일한 데이터를 갖는 프레임 및 필드 모션 추정된 탐색의 복잡성을 제거한다. 다운샘플된 데이터는 탐색 메모리, 탐색-칩에 부착된 외부 메모리에 저장되는데, 여기서는 다음 화상 코딩 프로세스에 대한 기준 데이터로서 사용된다. 입력 데이터는 모션 추정에 사용되고, 2개 화상 데이터 간에 보다 정확한 차이를 제공한다. 이와 동시에, 탐색 메모리에서 이전에 인코드된 기준 화상의 데이터가 모션 추정을 위해 훼치된다. 처리된 각각의 매크로블럭을 위해 훼치될 기준 데이터의 양은 매크로블럭 위치와 탐색 범위에 좌우된다.
칩 실제 영역(실리콘 영역(silicon area))를 보존하기 위해, 모션 추정 유닛의 온-칩 기준 데이터 버퍼는 탐색 윈도우의 128개 라인 중 20개의 라인을 한꺼번에 수용할 수 있다. 기준 데이터는 탐색 프로세스가 계속됨에 따라 훼치된다. 기준 데이터 버퍼는 2개의 동일한 크기의 유닛으로 구성된다. 이 유닛 중 한 유닛은 기수 라인 데이터를 위해 그리고 다른 하나는 우수 라인 데이터를 위해 사용된다. 2개의 버퍼는 개별적인 엔터티이다. 따라서, 기수 데이터 및 우수 데이터 탐색 프로세스가 동시에 발생할 수 있다.
모션 추정에서 가장 큰 문제는 연산 상의 전력 조건이다. 탐색 회로를 최소로 하기 위해, 필드 탐색이 함께 수행되고, 필드 탐색 결과가 프레임 탐색 결과를 형성하도록 조합된다. 예를 들면, Cf1을 현재의 매크로블럭 데이터의 기수 라인이라 하고, Cf2을 현재의 매크로블럭 데이터의 우수 라인이라 하며, Rf1을 기준 데이터의 기수 라인이라 하고, Rf2를 기준 데이터의 우수 라인이라고 하자.
4개의 필드 탐색, Cf1 대 Rf1, Cf1 대 Rf2, Cf2 대 Rf1 및 Cf2 대 Rf2가 동시에 수행된다. Cf1 대 Rf1, Cf2 대 Rf2, Cf2 대 Rf1 및 Cf1 대 Rf2의 결과가 조합되어 프레임 탐색 결과를 형성한다. 이 스킴은 프레임 탐색 회로를 제거한다.
[탐색-칩 결과]
5개의 풀 픽셀 결과가 각 프레임으로 구조화된 매크로블럭을 위해 생성된다. 2개까지의 풀 픽셀 결과가 각 필드로 구조화된 매크로블럭을 위해 생성되는데, 하나의 최적의 매치는 현재의 기수 필드를 위한 것이고 또 다른 하나의 최적의 매치는 현재의 우수 필드를 위한 것이다.
[X칩 인터페이스]
X칩 인터페이스(831)는 이 컨피그레이션에서 다른 탐색-칩(901) 사이에서 뿐만 아니라 탐색-칩(901) 및 리파인먼트-칩 또는 재구성-칩(801) 간의 통신을 지원한다. 매크로블럭마다, 5개까지의 탐색 결과, 즉 한 프레임과 4개의 필드가 이 인터페이스를 통해 R-칩(801)으로 전달된다. 이 인터페이스는 또한 탐색-칩(901)간의 통신을 위해서도 사용된다. 다중 탐색 칩 컨피그레이션의 경우, 각각의 탐색-칩(901)은 칩 ID를 갖는다. 각각의 탐색-칩(901) 핀 세트에 선정된 기록 패턴은 칩 ID 또는 어드레스로서 사용된다. 어드레스 0은 R-칩(801)과 주로 통신하는 탐색-칩(901)을 식별한다. 인코더 구조는 1, 2 또는 4개의 탐색-칩(901)을 지원할 수 있다. 어드레스 3은 체인에서 마지막 탐색-칩(901)을 식별한다. 4개의 탐색-칩(901) 컨피그레이션에서, 탐색 윈도우는 4개의 쿼터(four quarters)로 분할된다. 어드레스 0은 상부의 좌측 쿼터를 처리하고, 어드레스 1은 상부의 우측 쿼터를 처리하고, 어드레스 2는 하부의 좌측 쿼터를 처리하고, 어드레스 3은 하부의 우측 쿼터를 처리한다. 탐색-칩(3)은 이용가능할 때 탐색 결과를 탐색-칩(2)으로 전송한다. 마찬가지로, 탐색-칩(2)은 탐색-칩(1)으로, 탐색-칩(1)은 탐색-칩(0)으로 전송한다. 보다 상위의 어드레스 탐색-칩으로부터 얻어진 최적의 매치 결과는 수신하는 칩에서 얻어진 결과와 비교된다. 다음에 2개중 최적의 매치가 다음 탐색-칩으로 전송된다. 모든 탐색-칩으로부터의 최적의 매치는 결국 탐색-칩(0)에 의해 선택되어 R-칩에 반환된다.
[R-칩의 프로세싱]
[R-입력 버퍼]
인트라-칩(601)으로부터 이전에 수신된 현재의 매크로블럭 데이터는 이 칩에 버퍼되어 리파인먼트 프로세스에서 사용된다.
IPB 모드에서, R-칩(801) 프로세싱은 탐색-칩(901)을 래그(lags)시킨다. 파이프라인이 항상 차 있는 것을 보장하기 위해, 버퍼는 데이터의 2개 매크로블럭에 대해 충분히 크다. 탐색-입력 버퍼 및 R-입력 버퍼 모두에 공간이 있을 때 다음의 현재 매크로블럭 데이터가 훼치된다.
[R-모션 추정]
기준 데이터는 외부 메모리, 즉 R-칩(801), 즉, 리파인먼트-칩 또는 재구성 칩에 접속된 재구성된 메모리에 미리 저장되어 있다. 명칭이 의미하는 바와 같이, 기준 데이터는 재구성된 데이터로 이루어져 있다. 이 데이터가 모션 리파인먼트(motion refinement)에 사용될 때, 이 데이터는 디코더로서 재구성된 것을 매치하는 예측 차이를 만든다. 이 스킴은 압축과 해제 프로세스 간의 차이를 최소로 한다.
R-칩(801)은 또한 사용자에 의해 선택된 탐색 포맷을 수신한다. 탐색 포맷에 따라, 탐색-칩(901)으로부터 수신된 탐색 결과는 풀 화상 해상도로 다시 업스케일된다. 탐색 리파인먼트는 1:1(다운샘플되지 않은) 포맷으로부터의 결과를 포함하는 탐색 결과에 근거하여 수행된다. +/-4H 및 +/-1V인 최대 리파인먼트 탐색 범위가 3개(이상)의 칩 컨피그레이션에 사용된다.
모션 추정의 다른 문제는 메모리 대역이다. 재구성된 메모리로부터 검색된 기준 데이터는 프레임 차이 데이터가 생성될 때까지 온-칩에 버퍼된다. 이 스킴은 외부 메모리 트래픽을 최소로 한다. 먼저 각각의 탐색 결과가 풀 픽셀 경계에서 정의된다. 기껏해야 3개의 풀 픽셀 결과가 다음 리파인먼트 프로세스, 하프 픽셀 리파인먼트로 계속된다. 각각의 풀 픽셀 리파인먼트 결과 둘에의 8개까지의 하프 픽셀 매크로블럭이 다른 하프 픽셀 리파인먼트 탐색을 위해 식별될 수 있다. 모든 풀 및 하프 픽셀 리파인먼트 결과는 온-칩 프로세서, 즉, R-프로세서에 전송된다.
[IR-칩 인터페이스]
탐색 종류에 따라, R-프로세서(801)는 처리된 모든 매크로블럭에 대해 매크로블럭 종류 및 모션 벡터를 결정한다. 선택가능한 탐색 종류는 프레임 전용, 필드 전용, 풀 픽셀 전용, 하프 픽셀 전용, 및 적응적 필드/프레임 모션을 포함한다. 만일 적응적 프레임/필드 모션 추정이 선택되면, 최적으로 매치된 매크로블럭이 코딩 프로세스를 계속하는데 사용된다. 최적으로 매치된 결정에 근거하여, 매칭 색차 데이터가 재구성된 메모리로부터 검색된다. 휘도 및 색차 프레임 차이 데이터 모두가 생성되어 인트라-칩(601) 및 R-칩(801) 인터페이스에 버퍼된다. 먼저 휘도 차이 데이터가 인트라-칩(601)으로 전송된다. 양자화된 휘도 데이터가 R-칩(801)으로 반환될 때, 이때 색차 차이 데이터가 인트라-칩(601)으로 전송된다. 차이 데이터와 양자화된 데이터 모두는 인트라-칩(601)과 R-칩(801)간에 동일한 양방향 데이터 버스를 공유한다. 데이터 전송은 버스 충돌을 피하도록 계층화되어 있다.
휘도 및 색차 차이 데이터 이외에, R-칩은 각각의 비-인트라(non-intra) 매크로블럭에 대해 대응하는 모션 벡터 데이터를 계산하여 I-칩으로 전송한다. 이 데이터는 I-칩에 의해 요청될 때 R-칩 프로세서에 의해 송신된다.
먼저 양자화된 데이터가 역양자화기(941)를 통해 전달된 후, 다음에 역DCT 유닛(943)으로 전달되고, 마지막으로 모션 보상 유닛(945)으로 전달된다. IDCT 데이터는 모션 보상(MC) 유닛(945)에서 모션 조정을 위해 매크로블럭 탐색에 사용되는 현재의 매크로블럭 데이터에 더해진다. MC 유닛(945)은 재구성된 데이터를 만든다. 이 데이터는 버퍼되어 재구성된 메모리에 저장되어 후속하는 화상 코딩을 위해 리파인먼트 기준 데이터로서 사용될 준비가 된다.
IP 코딩 포맷에서, R-칩(801)의 탐색 리파인먼트 회로는 소형 모션 추정기로서 사용된다. 탐색 윈도우의 중심은 현재의 매크로블럭의 위치이다. R-칩(801)은 IP 모드에서 +/-8H 및 +/-7V 탐색 범위까지 지원할 수 있다. IPB 코딩 포맷과 유사하게, 기준 데이터는 매크로블럭마다 한번 훼치된다. 이 데이터는 프레임 차이 데이터가 생성될 때까지 온-칩에 버퍼된다. 풀 펠에 대한 모션 추정이 수행된다. 다음에 리파인먼트 탐색이 최적으로 매치된 풀 펠 매크로블럭 데이터에 대해 수행된다. 2개의 리파인먼트, 즉 듀얼 프라임 및 하프 펠 탐색(dual prime and half pel search)이 수행된다.
프레임 구조 화상에 대한 듀얼 프라임 모션 추정 탐색을 수행할 때, 최적으로 매치된 풀 펠 매크로블럭 데이터가 기수 및 우수 필드 데이터로 분할된다. 각각의 필드에 대해, MPEG2 표준에 명시된 바와 같이, 모션 벡터 스케일링 오퍼레이션을 통해 듀얼 프라임 기준 데이터 훼치 어드레스를 계산한 후 +/-1 델타를 갖는 대향하는 패리티 데이터가 외부 메모리로부터 검색된다. 이 필드 데이터는 연관된 대향 패리티 데이터와 함께 보간되어 듀얼 프라임 모션 추정에 사용될 기준 데이터를 형성한다.
하프 펠 리파인먼트는 IPB 코딩에 사용된 프로세스와 유사한 프로세스로서 수행된다. 풀 펠, 듀얼 프라임, 및 하프 펠 탐색을 포함하는 모든 결과가 R-프로세서에 의해 수집된다. 나머지 프로세스는 IPB 모드와 유사하다.
[기준 메모리 인터페이스]
모든 매크로블럭 프로세스의 경우, 기준 데이터 훼치, 듀얼 프라임 데이터 훼치, 최적으로 매치된 색차 데이터 훼치, 재구성된 휘도 데이터 저장 및 재구성된 색차 데이터 저장이 존재한다. 메모리 대역 조건을 줄이기 위해, 기준 데이터가 매크로 블럭마다 한번만 훼치된다. 파이프라인이 지속으로 차 있도록 하기 위해, 화상의 매크로블럭 위치에 근거하여 특정 순서로 메모리 오퍼레이션이 처리된다. 모션 추정이 휘도 데이터에 대해서만 수행되기 때문에, 특정 오퍼레이션을 위한 메모리 판독 속도를 향상시키기 위해, 휘도 및 색차 데이터는 재구성된 메모리의 다른 영역에 저장된다.
[인트라-칩의 엔트로피 프로세싱]
[인트라-프로세서]
인트라-프로세서(601)는 제6도에 상세히 도시되어 있다. 현재의 매크로블럭 데이터가 프레임 메모리로부터 이용할 수 있을 때, 최적으로 속도를 제어하기 위한 양자화 레벨을 결정하는데 사용되는 매크로블럭의 에너지 내용이 I-프로세서(601)에 의해 계산된다. 프레임 또는 필드 DCT 결정은 R-칩(801)으로부터 반환될 때 프레임 차이 데이터에 대해 I-프로세서(601)에 의해 이루어진다. 인트라-프로세서(601)는 4개의 1바이트 단위로 또는 1개의 4바이트 단위로 동작가능하게 하는 다이나믹하게 파티션가능한 특성을 갖는다. 양자화 및 필드/프레임 DCT 계산은 4폴드 성능 이득(a four fold performance gain)을 제공하는 파티션된 모드로 수행 된다.
입력 화상 및 지정된 출력 비트율에 따라, 오버플로우 또는 언더플로우 상태가 발생할 수 있다. 이들 중 어느 한 상태를 피하기 위해 속도 제어의 필요성이 존재한다. 오버플로우 경우를 피하기 위해 DC 전용 및 외부 FIFO 피드백의 사용이 설치된다. 언더플로우 경우를 제어하거나 심지어 제거하기 위해 패딩(padding)이 정위치에 놓인다.
화상 코딩 시간은 입력 포맷 및 코딩 포맷에 좌우된다. 화상 속도는 어플리케이션에 의해 지정된다. 화상 갭(picture gap)은 인코더가 화상 코딩시 비지 상태가 아닌 시간이다. 화상 갭은 화상 속도와 화상 코딩 시간에 의해 결정된다. 필요하면, 패딩이 화상 갭 동안 수행된다. 이것은 인코더가 갭마다 패드할 수 있는 최대 비트를 제한한다. 인코더는 화상마다 생성된 비트 및 화상마다 할당된 비트의 수를 추적한다. 만일 생성된 비트가 할당된 비트보다 적으면, 사용되지 않은 비트를 채우기 위해 패딩이 사용된다. 화상으로부터의 사용되지 않은 비트가 일부 화상 갭 중에 패드될 수 있다. 이 메카니즘은 성능 위반없이 비트스트림이 어플리케이션과 호환될 수 있게 된다.
[양자화기]
양자화기 유닛에는 계수 클립핑 특성(A coefficient clipping feature)이 존재한다. 마이크로코드로 기록된 계수 클립핑 레지스터는 블럭에 마지막 비-제로 진폭 계수의 위치를 수용하는데 사용된다. 속도 제어가 인근 오버플로우 상태를 검출할 때, 로드는 값을 계수 클립핑 레지스터에 기록할 수 있다. 이 값은 오버플로우 근접성에 근거하여 계산된다. 계수 클립핑 레지스터에 지정된 위치 다음의 모든 계수가 제로로 된다. 이 스킴은 또한 제한된 비트스트림을 생성하는데 사용된다. 제한된 비트스트림은 2개의 매크로블럭을 제외하고 각 슬라이스의 모든 매크로블럭이 각각 4608 미만의 비트를 수용해야 함에 따라 주 레벨 표준의 MPEG2 메인 프로필에 정의되어 있다. 인코더는 매크로블럭마다 생성된 비트와 4608 비트를 초과하는 슬라이스의 매크로블럭의 수를 추적한다. 4608 비트를 초과하는 2개의 매크로블럭이 만났을 때, 계수 클립핑 레지스터는 슬라이스의 나머지를 위해 31로 세트된다. 이 경우에, 칩은 각각의 8×8 블럭의 최초의 31개 계수를 사용하여 비트스트림을 형성한다. 계수마다 사용된 비트의 수는 계수값에 따른다. 24개의 비트는 최대 값을 코드화하는데 사용된다. 모든 31개의 계수가 최대 수를 수용한다고 가정하면, 4:2:0 포맷으로 매크로블럭마다 4464개의 비트가 만들어질 것이다. 이 메카니즘은, 출력 비트스트림이 제한되도록 하고, 또한 오버플로우를 피하도록 생성된 비트를 구속(curbs)한다.
[가변 길이 인코더]
ZZ스캔 프로세싱 이전에, 양자화 출력은 화상을 재구성하기 위해 R-칩(801)으로 반환된다. 이것은 설계 상의 복잡성을 약간 제거하고 역 ZZ 기능은 R-칩(801)에 필요하지 않다. 스캔 포맷(The scan format )은 포스트 인터페이스에서 선택 가능하다. 또한 마이크로코드는 화상 포맷을 기초로 스캔 포맷을 선택할 수 있다. 대체 스캔이 점진적인 화상을 위해 인터레이스된 코딩 및 전통적인 스캔에 사용된다.
ZZ 스캔은 허프만 표에 따라 코드화된 가변 길이의 양자화된 데이터에 적용된다. 가변 길이 데이터는 버퍼에 저장된다. MPEG2 표준에 정의된 바와 같이 코드화된 블럭 패턴은 어떤 블럭이 매크로블럭에 비제로 데이터를 포함하고 있는지를 가리키는데 사용된다. 모든 블럭이 코드화될 때, 헤더가 VLC 데이터에 부착된다.
[압축 저장 인터페이스]
헤더는 유연성있게 생성된다. 헤더 정의부는 프로그래머블 표에 저장된다. 마이크로코드는 또한 MPEG2 표준에 변경이 발생할 때 헤더 표의 내용을 수정할 자격이 있다. 어플리케이션 필요에 따라, 마이크로코드는 생성할 헤더를 선택한다. 기본 스트림은 헤더들과 함께 계수 데이터로부터 구해진다.
[통합 시스템]
한 실시예에서 본 발명에 따라 비트스트림을 포함하는 I-프레임을 생성하기 위해, I-프레임 비디오 인코더 모듈(601)이 (1) 호스트 인터페이스(611), (2) 픽셀 버스(643)로부터 픽셀 데이터를 수신하기 위한 픽셀 인터페이스(641), (3) 프레임 데이터를 수신 및 송신하기 위한 프레임 메모리 인터페이스(651), (4) 이산 코사인 변환 프로세서(671), (5) 양자화 유닛(673), (6) 가변 길이 인코더(675), (7) FIFO 버퍼(677) 및 (8) 압축 저장 인터페이스(679)를 구비한 MPEG 컴플라이언트 디지털 비디오 인코더 시스템이 제공된다.
스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템의 다른 실시예에서, I-프레임 비디오 인코더 모듈은 (9) 모선 추정 수단에 대한 인터페이스를 포함하고, 상기 시스템은 (10) 기준 메모리 인터페이스(911), (11) 모션 추정 수단(903), (12) 역양자화 수단(941), (13) 역이산 코사인 변환 수단(943), 및 모션 보상 수단(945)을 구비한 제2 프로세서, 즉, R-프로세서 소자(901)를 더 포함한다. 상기 시스템은 또한 (14) 탐색 메모리 인터페이스 및 (15) 모션 추정 수단(801)을 구비한 적어도 하나의 제3 프로세서 소자 또는 탐색 프로세서 소자(801)를 포함한다. 본 실시예는 I-P-B 데이터스트림을 제공한다.
상기 인코더는 단일 칩 또는 다수의 칩의 형태일 수 있다. 예를 들면, I-프레임 비디오 인코더 모듈, 제2 프로세서 소자(901) 및 제3 프로세서 소자(801)를 위한 개별 집적회로 칩일 수 있다. 또한 1개 이상의 제3 프로세서 소자(801)가 있을 수 있다.
본 발명의 다른 실시예에 따르면, I-프레임 비디오 인코더 모듈(601)이 (9) 모션 추정 수단에 대한 인터페이스를 포함하고, 상기 시스템이 (10) 기준 메모리 인터페이스(911), (11) 모션 추정 수단(903), (12) 역양자화 수단(941), (13) 역이산 코사인 변환 수단(943), 및 모션 보상 수단(945)을 구비한 제2 프로세서, 또는 R-프로세서 소자(901)만을 더 포함하는 디지털 비디오 인코더 시스템이 제공된다. 본 실시예는 I-P 데이터스트림을 생성하는데 유용하다.
본 발명은 특정한 양호한 실시예에 대해 기술되었는데, 이것은 본 발명의 범위를 제한하려고 한 것은 아니다.
Claims (8)
- 스케일러블 아키텍춰 MPEG2 컴플라인언트 디지털 비디오 인코더 시스템(A scalable architecture MPEG2 compliant digital video encoder system)에 있어서, 비트스트림을 포함하는 I-프레임을 생성하기 위해, I-프레임 비디오 인코더 모듈이 (1) 호스트 인터페이스, (2) 픽셀 버스로부터 픽셀 데이터를 수신하기 위한 픽셀 인터페이스, (3) 프레임 데이타를 수신 및 송신하기 위한 프레임 메모리 인터페이스, (4) 이산 코사인 변환 프로세서, (5) 양자화 유닛, (6) 가변 길이 인코더, (7) FIFO 버퍼 및 (8) 압축 저장 인터페이스를 구비하는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
- 제1항에 있어서, 상기 I-프레임 비디오 인코더 모듈은 (9) 모션 추정 수단(motion estimation means)에 대한 인터페이스를 포함하고, 상기 시스템은, I-P-B 데이터스트림을 생성하기 위해, (a) (10) 기준 메모리 인터페이스, (11) 모션 추정 수단, (12) 역양자화 수단, (13) 역이산 코사인 변환 수단, 및 모션 보상 수단을 구비한 제2 프로세서 소자; 및 (b) (14) 탐색 메모리 인터페이스 및 (15) 모션 추정 수단을 구비한 적어도 하나의 제3 프로세서 소자를 더 포함하는 스케일러블 아키텍춰 MPEG2 컴플라인언트 디지털 비디오 인코더 시스템.
- 제2항에 있어서, 상기 인코더 시스템은 단일 집적회로 칩을 포함하는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
- 제2항에 있어서, 상기 인코더 시스템은 다수의 집적회로 칩을 포함하는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
- 제4항에 있어서, 상기 인코더 시스템은 상기 I-프레임 비디오 인코더 모듈, 상기 제2 프로세서 소자, 및 상기 제3 프로세서 소자를 위한 개별 집적회로 칩을 포함하는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
- 제2항에 있어서, 하나의 제3 프로세서 소자를 갖는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
- 제2항에 있어서, 하나 이상의 제3 프로세서 소자를 갖는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
- 제1항에 있어서, 상기 I-프레임 비디오 인코더 모듈은 (9) 모선 추정 수단에 대한 인터페이스를 포함하고, 상기 시스템은, I-P 데이터스트림을 생성하기 위해, (10) 기준 메모리 인터페이스, (11) 모션 추정 수단, (12) 역양자화 수단, (13) 역이산 코사인 변환 수단, 및 모션 보상 수단을 구비한 제2 프로세서 소자를 더 포함하는 스케일러블 아키텍춰 MPEG2 컴플라이언트 디지털 비디오 인코더 시스템.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US8/605,559 | 1996-02-22 | ||
US08/605,559 | 1996-02-22 | ||
US08/605,559 US5768537A (en) | 1996-02-22 | 1996-02-22 | Scalable MPEG2 compliant video encoder |
Publications (2)
Publication Number | Publication Date |
---|---|
KR970063947A KR970063947A (ko) | 1997-09-12 |
KR100196019B1 true KR100196019B1 (ko) | 1999-06-15 |
Family
ID=24424175
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
KR1019960052779A KR100196019B1 (ko) | 1996-02-22 | 1996-11-08 | 스케일러블 mpeg2 컴플라이언트 비디오 인코더 |
Country Status (4)
Country | Link |
---|---|
US (3) | US5768537A (ko) |
JP (1) | JPH09247679A (ko) |
KR (1) | KR100196019B1 (ko) |
DE (1) | DE19702048C2 (ko) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100576034B1 (ko) * | 2001-01-18 | 2006-05-02 | 프라운호퍼-게젤샤프트 츄어 푀르더룽 데어 안게반텐 포르슝에.파우. | 비트 세이빙 뱅크, 인코더 및 스케일러블 인코더를 제공하여 스케일러블 데이터 스트림을 생성 및/또는 디코딩하는 방법 및 장치 |
Families Citing this family (71)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7558324B2 (en) * | 1993-01-18 | 2009-07-07 | Sony Corporation | Apparatus for encoding and decoding header data in picture signal transmission |
US5768537A (en) * | 1996-02-22 | 1998-06-16 | International Business Machines Corporation | Scalable MPEG2 compliant video encoder |
GB2311182A (en) * | 1996-03-13 | 1997-09-17 | Innovision Plc | Improved gradient based motion estimation |
US6031575A (en) * | 1996-03-22 | 2000-02-29 | Sony Corporation | Method and apparatus for encoding an image signal, method and apparatus for decoding an image signal, and recording medium |
JP3622365B2 (ja) * | 1996-09-26 | 2005-02-23 | ヤマハ株式会社 | 音声符号化伝送方式 |
US5905542A (en) * | 1996-12-04 | 1999-05-18 | C-Cube Microsystems, Inc. | Simplified dual prime video motion estimation |
US5964842A (en) * | 1997-01-31 | 1999-10-12 | Network Computing Devices, Inc. | Method and apparatus for scaling data compression based on system capacity |
US6111913A (en) * | 1997-05-20 | 2000-08-29 | International Business Machines Corporation | Macroblock bit regulation schemes for video encoder |
US6067322A (en) * | 1997-06-04 | 2000-05-23 | Microsoft Corporation | Half pixel motion estimation in motion video signal encoding |
US6018368A (en) * | 1997-07-11 | 2000-01-25 | Samsung Electro-Mechanics Co., Ltd. | Scalable encoding apparatus and method with improved function of scaling motion vector |
DE19737835C2 (de) * | 1997-08-29 | 1999-07-15 | Siemens Ag | Verfahren zum Komprimieren von Bildinformationen |
US6507672B1 (en) * | 1997-09-10 | 2003-01-14 | Lsi Logic Corporation | Video encoder for digital video displays |
US6233428B1 (en) * | 1997-09-17 | 2001-05-15 | Bruce Fryer | System and method for distribution of child care training materials and remote monitoring of child care centers |
JP4264571B2 (ja) * | 1998-04-09 | 2009-05-20 | ソニー株式会社 | ディジタル画像復号装置及び方法、並びに記録媒体 |
JP4123567B2 (ja) * | 1998-04-30 | 2008-07-23 | ソニー株式会社 | 画像信号処理装置及び方法 |
DE19835845A1 (de) | 1998-08-07 | 2000-02-10 | Siemens Ag | Verfahren und Anordnung zur Bewegungsschätzung in einem digitalisierten Bild mit Bildpunkten |
US6670996B2 (en) * | 1998-08-20 | 2003-12-30 | Intel Corporation | Apparatus and method for display of progressive and interland video content |
US6961378B1 (en) * | 1998-11-05 | 2005-11-01 | International Business Machines Corporation | On-chip dynamic buffer level indicators for digital video encoder |
US6418166B1 (en) * | 1998-11-30 | 2002-07-09 | Microsoft Corporation | Motion estimation and block matching pattern |
KR20010108159A (ko) * | 1999-01-29 | 2001-12-07 | 다니구찌 이찌로오, 기타오카 다카시 | 화상 특징 부호화 방법 및 화상 검색 방법 |
US6519005B2 (en) * | 1999-04-30 | 2003-02-11 | Koninklijke Philips Electronics N.V. | Method of concurrent multiple-mode motion estimation for digital video |
US6425071B1 (en) * | 1999-05-03 | 2002-07-23 | 3Com Corporation | Subsystem bridge of AMBA's ASB bus to peripheral component interconnect (PCI) bus |
WO2001058166A1 (en) * | 2000-02-01 | 2001-08-09 | Koninklijke Philips Electronics N.V. | Video encoding with a two step motion estimation for p-frames |
KR20020001062A (ko) * | 2000-06-24 | 2002-01-09 | 박종섭 | 응용분야에 적응적인 엠펙 영상압축 부호화기 |
KR100397055B1 (ko) * | 2000-07-21 | 2003-09-06 | (주)씨앤에스 테크놀로지 | 저전송율 영상통신을 위한 움직임 예측기 구조 |
US7194128B1 (en) * | 2000-07-26 | 2007-03-20 | Lockheed Martin Corporation | Data compression using principal components transformation |
DE10121259C2 (de) * | 2001-01-08 | 2003-07-24 | Siemens Ag | Optimale SNR-skalierbare Videocodierung |
JP2002232911A (ja) * | 2001-02-01 | 2002-08-16 | Mitsubishi Electric Corp | 動きベクトル検出装置及び動きベクトル検出方法 |
GB0104785D0 (en) * | 2001-02-27 | 2001-04-18 | Pace Micro Tech Plc | MPEG decoder video in the form of cue and/or review streams of data |
US20020191851A1 (en) * | 2001-05-01 | 2002-12-19 | Giora Keinan | Efficient encoding of video frames using pre-encoded primitives |
US7072393B2 (en) | 2001-06-25 | 2006-07-04 | International Business Machines Corporation | Multiple parallel encoders and statistical analysis thereof for encoding a video sequence |
US6996183B2 (en) * | 2001-09-26 | 2006-02-07 | Thomson Licensing | Scene cut detection in a video bitstream |
US20030105799A1 (en) * | 2001-12-03 | 2003-06-05 | Avaz Networks, Inc. | Distributed processing architecture with scalable processing layers |
US6842177B2 (en) * | 2001-12-14 | 2005-01-11 | University Of Washington | Macroblock padding |
US8284844B2 (en) | 2002-04-01 | 2012-10-09 | Broadcom Corporation | Video decoding system supporting multiple standards |
JP4078906B2 (ja) * | 2002-07-19 | 2008-04-23 | ソニー株式会社 | 画像信号の処理装置および処理方法、画像表示装置、それに使用される係数データの生成装置および生成方法、並びに各方法を実行するためのプログラムおよびそのプログラムを記録したコンピュータ読み取り可能な媒体 |
DE10243568A1 (de) * | 2002-09-19 | 2004-01-29 | Siemens Ag | Verfahren zur skalierbaren Videocodierung eines Videobildsignals sowie ein zugehöriger Codec |
CN100423581C (zh) * | 2002-12-30 | 2008-10-01 | Nxp股份有限公司 | 动态图形的编码/解码方法及其设备 |
US20040179599A1 (en) * | 2003-03-13 | 2004-09-16 | Motorola, Inc. | Programmable video motion accelerator method and apparatus |
US20040233294A1 (en) * | 2003-05-20 | 2004-11-25 | Mingjian Zheng | System and method for USB compatible I-frame only MPEG image compression |
US7593580B2 (en) * | 2003-07-14 | 2009-09-22 | Texas Instruments Incorporated | Video encoding using parallel processors |
US7289680B1 (en) | 2003-07-23 | 2007-10-30 | Cisco Technology, Inc. | Methods and apparatus for minimizing requantization error |
US20050157783A1 (en) * | 2004-01-15 | 2005-07-21 | Sony Corporation | Adaptive bandwidth allocation method and system for AV signal distribution |
US20060008154A1 (en) * | 2004-07-01 | 2006-01-12 | Belle Ronny V | Video compression and decompression to virtually quadruple image resolution |
US7970219B2 (en) * | 2004-12-30 | 2011-06-28 | Samsung Electronics Co., Ltd. | Color image encoding and decoding method and apparatus using a correlation between chrominance components |
US20060146933A1 (en) * | 2004-12-30 | 2006-07-06 | Paul Lu | Method and system for video motion processing in a microprocessor |
CA2593247A1 (en) * | 2005-01-10 | 2006-11-16 | Quartics, Inc. | Integrated architecture for the unified processing of visual media |
US20060222251A1 (en) * | 2005-04-01 | 2006-10-05 | Bo Zhang | Method and system for frame/field coding |
US7949044B2 (en) * | 2005-04-12 | 2011-05-24 | Lsi Corporation | Method for coefficient bitdepth limitation, encoder and bitstream generation apparatus |
US20060233258A1 (en) * | 2005-04-15 | 2006-10-19 | Microsoft Corporation | Scalable motion estimation |
US20080247460A1 (en) * | 2005-10-07 | 2008-10-09 | Jung Won Kang | Method and Apparatus For Scalable Video Adaption Using Adaption Operators For Scalable Video |
WO2007043770A1 (en) * | 2005-10-07 | 2007-04-19 | Electronics And Telecommunications Research Institute | Method and apparatus for scalable video adaptation using adaptation operators for scalable video |
US7760951B2 (en) * | 2006-02-14 | 2010-07-20 | Broadcom Corporation | Method and system for pipelined processing in an integrated embedded image and video accelerator |
US8139877B2 (en) * | 2006-03-09 | 2012-03-20 | Pioneer Corporation | Image processing apparatus, image processing method, and computer-readable recording medium including shot generation |
US8494052B2 (en) * | 2006-04-07 | 2013-07-23 | Microsoft Corporation | Dynamic selection of motion estimation search ranges and extended motion vector ranges |
US8155195B2 (en) | 2006-04-07 | 2012-04-10 | Microsoft Corporation | Switching distortion metrics during motion estimation |
US20070268964A1 (en) * | 2006-05-22 | 2007-11-22 | Microsoft Corporation | Unit co-location-based motion estimation |
US8000388B2 (en) * | 2006-07-17 | 2011-08-16 | Sony Corporation | Parallel processing apparatus for video compression |
BRPI0719239A2 (pt) * | 2006-10-10 | 2014-10-07 | Nippon Telegraph & Telephone | Método de codificação e método de decodificação de vídeo, aparelhos para os mesmos, programas para os mesmos, e meios de armazenamento para gravação dos programas |
EP2191652B1 (en) * | 2007-09-02 | 2017-02-08 | Lg Electronics Inc. | A method and an apparatus for processing a video signal |
WO2009032255A2 (en) * | 2007-09-04 | 2009-03-12 | The Regents Of The University Of California | Hierarchical motion vector processing method, software and devices |
US8724705B2 (en) * | 2008-06-26 | 2014-05-13 | Telefonaktiebolaget Lm Ericsson (Publ) | Detecting repetition in digital video |
US8509302B2 (en) * | 2008-10-22 | 2013-08-13 | Nippon Telegraph And Telephone Corporation | Scalable video encoding method, scalable video encoding apparatus, scalable video encoding program, and computer readable recording medium storing the program |
SG173007A1 (en) * | 2009-01-15 | 2011-08-29 | Agency Science Tech & Res | Image encoding methods, image decoding methods, image encoding apparatuses, and image decoding apparatuses |
US8660177B2 (en) * | 2010-03-24 | 2014-02-25 | Sony Computer Entertainment Inc. | Parallel entropy coding |
US8755438B2 (en) * | 2010-11-29 | 2014-06-17 | Ecole De Technologie Superieure | Method and system for selectively performing multiple video transcoding operations |
TWI536824B (zh) * | 2012-05-04 | 2016-06-01 | 奇揚網科股份有限公司 | 視訊編碼系統、方法以及電腦可讀取之媒體 |
US9774881B2 (en) * | 2014-01-08 | 2017-09-26 | Microsoft Technology Licensing, Llc | Representing motion vectors in an encoded bitstream |
US9749642B2 (en) | 2014-01-08 | 2017-08-29 | Microsoft Technology Licensing, Llc | Selection of motion vector precision |
US9942560B2 (en) | 2014-01-08 | 2018-04-10 | Microsoft Technology Licensing, Llc | Encoding screen capture data |
US9436982B1 (en) * | 2015-06-25 | 2016-09-06 | Intel Corporation | Scalable rank filter |
Family Cites Families (37)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US4727412A (en) * | 1984-04-27 | 1988-02-23 | Utah Scientific Advanced Development Center, Inc. | Video signal correction system with low chrominance circuit for modifying currections |
DE3853554T2 (de) * | 1987-06-09 | 1995-08-24 | Sony Corp | Bewegungsvektorabschätzung in Fernsehbildern. |
EP0313026B1 (en) * | 1987-10-20 | 1994-06-08 | Sanyo Electric Co., Ltd. | Method of and apparatus for motion vector compensation in receiving television signal based on MUSE system |
US5012329A (en) * | 1989-02-21 | 1991-04-30 | Dubner Computer Systems, Inc. | Method of encoded video decoding |
JPH07109990B2 (ja) * | 1989-04-27 | 1995-11-22 | 日本ビクター株式会社 | 適応型フレーム間予測符号化方法及び復号方法 |
US5164819A (en) * | 1991-04-03 | 1992-11-17 | Music John D | Method and system for coding and compressing color video signals |
US5457780A (en) * | 1991-04-17 | 1995-10-10 | Shaw; Venson M. | System for producing a video-instruction set utilizing a real-time frame differential bit map and microblock subimages |
US5200820A (en) * | 1991-04-26 | 1993-04-06 | Bell Communications Research, Inc. | Block-matching motion estimator for video coder |
EP0535746B1 (en) * | 1991-09-30 | 1997-01-29 | Philips Electronics Uk Limited | Motion vector estimation, motion picture encoding and storage |
US5185655A (en) * | 1991-10-02 | 1993-02-09 | Tandy Corporation | Method and apparatus for encoding full color video data signals and protocol for encoding same |
US5436665A (en) * | 1992-03-03 | 1995-07-25 | Kabushiki Kaisha Toshiba | Motion picture coding apparatus |
DE69322769T2 (de) * | 1992-03-03 | 1999-07-22 | Kabushiki Kaisha Toshiba, Kawasaki, Kanagawa | Koder für zeitveränderliche bilder |
US5253041A (en) * | 1992-05-26 | 1993-10-12 | General Electric Company | Digital television signal compression apparatus |
US5253056A (en) * | 1992-07-02 | 1993-10-12 | At&T Bell Laboratories | Spatial/frequency hybrid video coding facilitating the derivatives of variable-resolution images |
US5253055A (en) * | 1992-07-02 | 1993-10-12 | At&T Bell Laboratories | Efficient frequency scalable video encoding with coefficient selection |
US5270813A (en) * | 1992-07-02 | 1993-12-14 | At&T Bell Laboratories | Spatially scalable video coding facilitating the derivation of variable-resolution images |
DE4322343C2 (de) * | 1992-07-06 | 1996-10-02 | Mitsubishi Electric Corp | Mittel zum Erfassen eines Bewegungsvektors und Verfahren zum Bestimmen eines Bewegungsvektors |
FR2696069B1 (fr) * | 1992-09-23 | 1994-12-09 | Philips Electronique Lab | Procédé et dispositif pour l'estimation du mouvement dans une image. |
JP3348310B2 (ja) * | 1992-09-28 | 2002-11-20 | ソニー株式会社 | 動画像符号化方法および動画像符号化装置 |
KR950006769B1 (ko) * | 1992-12-31 | 1995-06-22 | 현대전자산업주식회사 | 고선명 텔레비젼의 색차신호 동벡터 추출방법 및 움직임 보상장치 |
JP2962083B2 (ja) * | 1993-01-22 | 1999-10-12 | 松下電器産業株式会社 | 解像度変換方法、解像度変換装置、画像符号化装置、画像復号化装置 |
WO1994018799A1 (en) * | 1993-02-03 | 1994-08-18 | Qualcomm Incorporated | Interframe video encoding and decoding system |
US5376968A (en) * | 1993-03-11 | 1994-12-27 | General Instrument Corporation | Adaptive compression of digital video data using different modes such as PCM and DPCM |
JP2778412B2 (ja) * | 1993-05-20 | 1998-07-23 | 国際電信電話株式会社 | 動き補償フレーム間コンポジットtv信号直接符号化装置 |
BE1007252A3 (nl) * | 1993-06-29 | 1995-05-02 | Philips Electronics Nv | Bewegingscompensator. |
KR960012932B1 (ko) * | 1993-09-17 | 1996-09-25 | 대우전자 주식회사 | 이차원 공간 필터링을 이용한 시간축 대역 제한 방법 |
US5453799A (en) * | 1993-11-05 | 1995-09-26 | Comsat Corporation | Unified motion estimation architecture |
US5493513A (en) * | 1993-11-24 | 1996-02-20 | Intel Corporation | Process, apparatus and system for encoding video signals using motion estimation |
US5453787A (en) * | 1993-12-10 | 1995-09-26 | International Business Machines Corporation | Variable spatial frequency chrominance encoding in software motion video compression |
US5566089A (en) * | 1994-10-26 | 1996-10-15 | General Instrument Corporation Of Delaware | Syntax parser for a video decompression processor |
US5638128A (en) * | 1994-11-08 | 1997-06-10 | General Instrument Corporation Of Delaware | Pixel interpolation filters for video decompression processor |
US5510856A (en) * | 1994-12-30 | 1996-04-23 | Daewoo Electronics Co., Ltd. | Apparatus for determining motion vectors |
US5517250A (en) * | 1995-02-28 | 1996-05-14 | General Instrument Corporation Of Delaware | Acquisition of desired data from a packetized data stream and synchronization thereto |
US5526054A (en) * | 1995-03-27 | 1996-06-11 | International Business Machines Corporation | Apparatus for header generation |
US5623308A (en) * | 1995-07-07 | 1997-04-22 | Lucent Technologies Inc. | Multiple resolution, multi-stream video system using a single standard coder |
US5768537A (en) * | 1996-02-22 | 1998-06-16 | International Business Machines Corporation | Scalable MPEG2 compliant video encoder |
US5748240A (en) * | 1996-03-15 | 1998-05-05 | International Business Machines Corporation | Optimal array addressing control structure comprising an I-frame only video encoder and a frame difference unit which includes an address counter for addressing memory addresses |
-
1996
- 1996-02-22 US US08/605,559 patent/US5768537A/en not_active Expired - Lifetime
- 1996-11-08 KR KR1019960052779A patent/KR100196019B1/ko not_active IP Right Cessation
-
1997
- 1997-01-22 DE DE19702048A patent/DE19702048C2/de not_active Expired - Lifetime
- 1997-02-14 JP JP9030169A patent/JPH09247679A/ja active Pending
- 1997-12-22 US US08/995,350 patent/US6081622A/en not_active Expired - Lifetime
- 1997-12-23 US US08/996,856 patent/US6198772B1/en not_active Expired - Lifetime
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
KR100576034B1 (ko) * | 2001-01-18 | 2006-05-02 | 프라운호퍼-게젤샤프트 츄어 푀르더룽 데어 안게반텐 포르슝에.파우. | 비트 세이빙 뱅크, 인코더 및 스케일러블 인코더를 제공하여 스케일러블 데이터 스트림을 생성 및/또는 디코딩하는 방법 및 장치 |
Also Published As
Publication number | Publication date |
---|---|
DE19702048C2 (de) | 2003-12-18 |
US6081622A (en) | 2000-06-27 |
KR970063947A (ko) | 1997-09-12 |
DE19702048A1 (de) | 1997-08-28 |
US5768537A (en) | 1998-06-16 |
US6198772B1 (en) | 2001-03-06 |
JPH09247679A (ja) | 1997-09-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR100196019B1 (ko) | 스케일러블 mpeg2 컴플라이언트 비디오 인코더 | |
US6111913A (en) | Macroblock bit regulation schemes for video encoder | |
JP3142772B2 (ja) | プロセッサ及び転送方法 | |
US6549575B1 (en) | Efficient, flexible motion estimation architecture for real time MPEG2 compliant encoding | |
US9357222B2 (en) | Video device finishing encoding within the desired length of time | |
US5748240A (en) | Optimal array addressing control structure comprising an I-frame only video encoder and a frame difference unit which includes an address counter for addressing memory addresses | |
JP5619688B2 (ja) | 二層符号化及び単層復号化による階層的ビデオ符号化 | |
US6130911A (en) | Method and apparatus for compressing reference frames in an interframe video codec | |
EP0849953B1 (en) | System and method for performing motion compensation using a skewed tile storage format for improved efficiency | |
EP0720374A1 (en) | Apparatus for parallel decoding of digital video signals | |
JPH08275160A (ja) | 離散余弦変換方法 | |
KR20080078700A (ko) | 이미지 및 비디오 프로세싱을 위한 스케일러 구조 | |
JP3703299B2 (ja) | ピクチャ中央の画質を最適化するためのビデオ符号化方法、システムおよびコンピュータ・プログラム製品 | |
US20080123748A1 (en) | Compression circuitry for generating an encoded bitstream from a plurality of video frames | |
EP1838108A1 (en) | Processing video data at a target rate | |
JPH08275149A (ja) | データ符号化方法 | |
US6999511B1 (en) | Dynamically switching quant matrix tables within an MPEG-2 encoder | |
US6118823A (en) | Control scheme for shared-use dual-port predicted error array | |
KR100683380B1 (ko) | 영상 압축 부호화를 위한 변환 및 역변환 방법 및 장치 | |
KR100323235B1 (ko) | 저 복잡도의 동영상 인코더 장치 및 방법 | |
KR100240620B1 (ko) | 양방향의 반화소 움직임 추정을 위한 대칭 탐색 윈도우를 형성하는 방법 및 장치 | |
JPH10126794A (ja) | 動き予測フレーム間画像信号圧縮装置 | |
EP0762773B1 (en) | Hierarchial video encoder and decoder | |
Ngai et al. | A scalable chip set for MPEG2 real-time encoding | |
KR100189268B1 (ko) | 프레임 화상에서 필드 모션 추정의 산출 방법 및 장치 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
A201 | Request for examination | ||
E701 | Decision to grant or registration of patent right | ||
GRNT | Written decision to grant | ||
FPAY | Annual fee payment |
Payment date: 20090129 Year of fee payment: 11 |
|
LAPS | Lapse due to unpaid annual fee |