KR100574415B1 - 다중 표준 압축 해제 및/또는 압축 장치 - Google Patents

다중 표준 압축 해제 및/또는 압축 장치 Download PDF

Info

Publication number
KR100574415B1
KR100574415B1 KR1019970065553A KR19970065553A KR100574415B1 KR 100574415 B1 KR100574415 B1 KR 100574415B1 KR 1019970065553 A KR1019970065553 A KR 1019970065553A KR 19970065553 A KR19970065553 A KR 19970065553A KR 100574415 B1 KR100574415 B1 KR 100574415B1
Authority
KR
South Korea
Prior art keywords
decoder
processor
block
motion compensation
processing capacity
Prior art date
Application number
KR1019970065553A
Other languages
English (en)
Other versions
KR19980063746A (ko
Inventor
제퍼슨 유진 오웬
라울 지거스 디아즈
제옌드란 발라크리쉬난
Original Assignee
에스티 마이크로일렉트로닉스, 인코포레이티드
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by 에스티 마이크로일렉트로닉스, 인코포레이티드 filed Critical 에스티 마이크로일렉트로닉스, 인코포레이티드
Publication of KR19980063746A publication Critical patent/KR19980063746A/ko
Application granted granted Critical
Publication of KR100574415B1 publication Critical patent/KR100574415B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/103Selection of coding mode or of prediction mode
    • 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
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Abstract

분리하여 액세스될 수 있도록, 디코더를 기능 블록으로 세분화하는 회로 및 방법이 제공된다. 디코더는 파서, 블록 디코더 및 모션 보상 엔진을 갖는 디코더 모듈을 포함하고, 이는 모두 기능 블록으로 더욱 세분화될 수 있다. 기능 블록은 블록이 필요하지 않은 압축 해제 프레임내에서 바이패스될 수 있으며, 또는 압축 알고리즘이 기능 블록을 필요로 하지 않을 때, 디코더의 속도가 증가된다. 기능 블록은 다른 표준에 따른 압축 해제 또는 압축용으로 재사용되거나 디코더에서 압축 해제 및 압축과 같은 다른 동작을 위해 재사용 될 수 있다. 디코더는 일부는 디코더의 하드웨어로 수행되고 다른 일부는 프로세서내에에 수행되는 기능 블록의 일부 및 프로세서에 접속된다. 본 발명의 한 실시예에서, 프로세서는 어떤 블록이 완전히 바이패스될 것인지 여부, 압축 프레임이 인코딩되는 압축 해제 프로토콜에 따라 소프트웨어로 수행될 것이 어떤 블록인지 여부, 프로세서의 용량 및 속도 및 사용 가능한 메모리를 결정한다. 다른 실시예에서, 압축 프레임이 인코딩되는 압축 해제 프로토콜, 프로세서의 용량과 속도, 및 사용 가능한 메모리에 따른 멀티플렉서의 사전 프로그래밍에 따라 기능 블록을 바이패스하거나 재사용하기 위해, 멀티플렉서가 기능 블록을 접속하도록 디코더에 부가될 수 있다.

Description

다중 표준 압축 해제 및/또는 압축 장치
본 발명은 비디오 및/또는 오디오 압축 해제(decompression) 및/또는 압축 장치 분야에 관한 것으로, 보다 구체적으로 인코딩된 비트스트림을 수개의 압축 해제 프로토콜 중 하나에 따라 디코딩하는 것 및/또는 수개의 압축 해제 프로토콜 중 하나에 따라 인코딩하는 것이 가능한 압축 해제 및/또는 압축 장치에 관한 것이다.
압축되지 않은 비디오 이미지의 디지탈 표현(digital representation)의 크기는 상기 이미지의 해상도 및 색 깊이(color depth)에 따른다. 압축되지 않은 비디오 이미지의 시퀀스로 구성된 영화 및 동반된 오디오 신호는 너무 방대하여, 컴팩트 디스크(CD)와 같은 종래의 기록 매체상에 모두 기록할 수 없다. 게다가, 이러한 압축되지 않은 영화를 통신 링크를 통해 전송하는 것은 전송 데이터의 과도한 양으로 인해 지나치게 비싸다.
따라서, 비디오 및 오디오 시퀀스를 전송하거나 저장하기 전에 압축하는 것은 매우 큰 잇점이 있다. 이러한 시퀀스를 압축하는 시스템을 개발하기 위해 상당한 노력이 있어왔다. MPEG-1, MPEG-2, H.261 및 H.263를 포함하는 DCT 알고리즘에 따라 현재 사용되는 몇몇 코딩 표준이 있다(MPEG은 국제 표준화 기구(ISO)의 "Motion Picture Expert Group" 의 두문자어이다). MPEG-1, MPEG-2, H.261 및 H.263 표준은 인코딩된 비트스트림이 어떻게 디코딩되는지(즉, 압축 해제)를 나타내는 압축 해제 프로토콜을 포함한다. 이러한 인코딩은 결과적인 비트스트림이 표준과 일치하는 한, 어떤 방식으로든 수행될 수 있다.
비디오 및/또는 오디오 압축 장치(이하, "인코더" )는 비디오 및/또는 오디오 시퀀스가 전송되거나 저장되기 전에 상기 시퀀스를 인코딩하기 위해 사용된다. 그로 인해 인코딩된 비트스트림은 비디오 및/또는 오디오 시퀀스가 출력되기 전에 비디오 및/또는 오디오 압축 해제 장치(이하, "디코더" )에 의해 디코딩된다. 그러나, 비트스트림은 디코더에 의해 사용된 표준과 일치하는 경우, 디코더에 의해서만 디코딩될 수 있다. 많은 시스템에서 비트스트림을 디코딩하기 위해서는, 잘 수용되는(well-accepted) 인코딩/디코딩 표준에 따라 비디오 및/또는 오디오 시퀀스를 인코딩하는 것이 바람직하다. MPEG 표준은 현재 일방향 통신에서 잘 수용되는 표준이다. H.261 및 H.263은 비디오 전화와 같은, 양방향 통신에서 현재 잘 수용되는 표준이다.
일단 디코딩되면, 디코딩된 비디오 및 오디오 시퀀스는 텔리비젼 또는 비디오 카세트 리코더(VCR)와 같은 비디오 및 오디오를 출력하는 데에 전용되는 전자 시스템 또는 컴퓨터와 같이 이미지 표시 및 오디오가 시스템의 단지 하나의 특징인 전자 시스템으로 출력될 수 있다. 디코더는 비트 스트림이 출력되기 전에 이러한 전자 시스템이 압축된 비트스트림을 압축되지 않은 데이터로 디코딩하도록 하기 위해 부가될 필요가 있다. 인코더는 이러한 전자 시스템이 전송되거나 저장될 비디오 및/또는 오디오 시퀀스를 압축하도록 부가될 필요가 있다. 디코더 및 인코더 양자는 양방향 통신을 위해 부가될 필요가 있다.
도 1a는 MPEG-2 디코더(10)와 같은 전형적인 디코더 아키텍처의 블록도이다. 디코더(10)는 비디오 및 오디오 디코더 또는 단지 비디오 디코더일 수 있고, 상기 디코더(10)의 오디오 부분은 공지된 종래의 방식으로 수행될 수 있다. 버퍼는 어떤 형태의 메모리일 수 있지만, 통상 선입 선출(FIFO) 버퍼(30:이하, "FIFO")인 입력 버퍼에 의해 인코딩된 비트스트림을 수신한다. FIFO(30) 버퍼는 이전에 수신된 데이터가 디코딩됨에 따라 인코딩된 인입 비트스트림을 버퍼링한다.
비디오용으로 인코딩된 비트스트림은 압축된 프레임을 포함한다. 프레임은 비디오 시퀀스에서 하나의 표시 가능한 이미지에 대한 인코딩된 데이터를 나타내는 데이터 구조이다. 이러한 데이터 구조는 한 개의 2차원 배열의 휘도 화소(luminance pixel)와, 2개의 2차원 배열의 크로미넌스 샘플(chrominance sample), 즉 색차 샘플(color difference sample)로 구성된다.
색차 샘플은 수직 및 수평 방향으로 상기 휘도 샘플의 샘플링율의 절반 정도로 통상 샘플링되어, 4:2:0(휘도:크로미넌스:크로미넌스)의 샘플링 모드를 제공한다. 다만, 색차는 다른 주파수, 예를 들면, 수직 방향으로 휘도의 샘플링율의 1/2 및 수평 방향으로 휘도와 동일한 샘플링율에서 샘플링되어, 샘플링 모드 4:2:2를 제공할 수 있다.
프레임은 통상 매크로블록(macroblocks)과 같은 더욱 작은 서브유니트로 더 세분화될 수 있다. 매크로블록은 휘도 샘플의 하나의 16X16 배열 및 인접한 크로미넌스 샘플의 2개의 8X8 배열을 갖는 데이터 구조이다. 매크로블록은 모션 보상 정보(motion compensation information)를 갖는 헤더 부분과 6개의 블록 데이터 구조를 포함한다. 블록은 DCT계 변환 코딩용 기본 유니트이며, 화소의 8X8의 부배열 (sub-array)을 인코딩하는 데이터 구조이다. 매크로블록은 4개의 휘도 블록과 2개의 크로미넌스 블록을 나타낸다.
MPEG-1 및 MPEG-2는 인트라(I) 프레임, 순방향 예상(P) 프레임(Forward Predicted frame), 및 양방향성 예상(B) 프레임과 같은 많은 형태의 코딩 프레임을 지원한다. I 프레임은 오직 화상내 코딩(intrapicture coding) 만을 포함한다. P 및 B 프레임은 화상내 코딩과 화상간 코딩(interpicture coding)을 모두 포함할 수 있다. I 및 P 프레임은 화상간 코딩용 기준 프레임으로 사용된다.
화상간 코딩에서, 두 개의 프레임 사이의 중복되는 부분(redundancy)는 가능한 한 많이 제거되고, 디코딩되는 프레임과 예상 프레임 사이의, 두 개의 프레임간의 나머지 차이, 즉 화상간 예상 에러가 전송된다, 또한, 모션 벡터는 모션 보상을 사용하는 화상간 코딩에서 전송된다. 모션 벡터는 매크로블록이 예상 매크로블록과 비교하여 얼마나 멀리, 그리고 어떤 방향으로 이동하였는지를 나타낸다. 화상간 코딩은 현재 이미지를 디코딩하거나 인코딩하는데 필요한 정보를 포함하는 이전 및/또는 이후의 이미지, 즉 I 및/또는 P 프레임을 액세스하기 위한 디코더(10)를 필요로 한다. 이러한 이전 및/또는 이후의 이미지는 저장되고 나서, 현재 이미지를 디코딩하는데 사용된다.
다른 코딩 기법이 사용될 수 있을 지라도, I 프레임에 대한 화상내 코딩은 블록 베이스 DCT 기법을 사용하여 프레임내의 원래의 화소간의 중복되는 부분의 감축을 포함한다. P 및 B 프레임의 경우, 화상내 코딩은, 동일한 DCT계 기법을 사용하여 화상간 예상 에러 화소 사이의 중복되는 부분을 제거하는 것을 포함한다.
FIFO(30)의 출력은 매크로블록 헤더 파서(36:macroblock header parser)와 결합된다. 이러한 헤더 파서(36)는 정보를 매크로블록으로 분해하고, 그 후 매크로블록을 파싱하여 각 매크로블록의 헤더 부분을 어드레스 계산 회로(96)로 전송한다. 이러한 어드레스 계산 회로(96)는 수행될 예상의 종류(type of prediction)를 결정하여 모션 보상 엔진(90)이 어떤 예상 프레임을 액세스할 필요가 있는지를 결정하도록 한다. 또한, 어드레스 계산 회로(96)는 모션 벡터 정보를 사용하여, 디코딩될 소정의 매크로블록용 모션 보상 예상을 디코딩하는데 필요한, 예상 프레임 및 상기 프레임내의 예상 매크로블록이 위치하는 메모리(160)내의 어드레스를 결정한다.
예상 매크로블록은 메모리(160)로부터 얻어지고, 어드레스 계산 회로(96)에 접속된 하프-화소 필터(half-pel filter:78)로 입력된다. 통상, 메모리(160)와의 모든 인터페이스를 제어하는 DMA 엔진(162)이 디코더 내에 있다. 하프-화소 필터(78)는 모션 벡터에 의해 지시된 바와 같이 인출된 예상 매크로블록에 대해 수직 및 수평의 하프-화소 보간(vertical and horizontal half-pixel interpolation)을 수행한다. 이로 인해 예상 매크로블록이 얻어진다.
이전에 설명한 바와 같이, I 프레임내의 화소 블록과 P 또는 B 프레임내의 예상 에러 화소 블록은 DCT계 기법을 사용하여 인코딩된다. 이러한 접근에서, 화소는 DCT를 사용하여 DCT 계수로 변환된다. 이러한 계수는 양자화 테이블에 따라 양자화된다. 양자화된 DCT 계수는 그 후 효율을 극대화하도록 가변 길이의 호프만 코드로 인코딩되는데, 가장 빈번하게 반복되는 값은 가장 작은 코드로 주어지며 값들의 빈도수(frequency)가 감소함에 따라 코드의 길이가 증가된다. 다만, 호프만 코드 이외의 다른 코드가 압축 해제 프로토콜에 따라 사용될 수 있다. 계수는 배열의 상부 좌측에 최대값을 갖고, 상기 배열의 우측 및 저부로 값을 통상 감소시키는 사각 배열 포맷으로 배열된다(order). 일련의 데이터 비트스트림을 제공하기 위해, 상기 배열(array)은 재배열된다(re-order). 계수의 일련화(serialization)의 순서는 배열의 상부 우측 코너에서 시작하는 지그-재그 포맷, 즉, 배열이 매트릭스 포맷으로 생각되면, 지그-재그 포맷에서 그 구성 인자(element)의 순서는 도 1b에 도시된 바와 같이, 11, 12, 21, 31, 22, 13, 14 등이다. 양자화는 상기 지그-재그 스캔 전 또는 후에 수행될 수 있다.
도 1a를 다시 참조하면, 헤더 파서(36)는 인코딩된 블록 데이터 구조를 가변 길이 코드(VLC) 디코더(42)로 전송한다. VLC 디코더(42)는 인코딩된 블록을 나타내는 가변 길이 코드를 디코딩하고, 상기 코드를 고정 길이의 펄스 코드 변조(PCM) 코드로 변환한다. 이러한 코드는 인코딩된 블록의 DCT 계수로 나타낸다. PCM 코드는 지그-재그 포맷으로 얻어진 8X8 블록 배열의 일련의 표현이다. 역 지그-재그 스캐너(54)는 VLC 디코더(42)에 접속되고, 지그-재그 포맷으로 얻어진 8X8 블록 배열의 일련의 표현을 사각 8X8 블록 배열로 변환하고, 역 양자화기(inverse quantizer:48)로 전달된다. 이러한 역 양자화기(48)는 적절한 양자화 테이블에 따라 역 양자화를 수행하고, IDCT 회로(66)에 전달한다. IDCT 회로(66)는 그 입력 블록에 대해 역 DCT를 수행하고, 압축 해제된 8X8 블록을 만들어 낸다. 본 발명자는 이들 회로가 기능 블록으로 세분화될 수 있음을 발견하였다. 현 기술에서, 디코더는 기능 블록으로 그룹지어지는 것 없이, 통상 하나 또는 몇몇개의 칩상에서 집적된다.
예상 매크로블록과 화상간 예상 에러는 가산 회로(72)에서 가산되고 어셈블리 유니트(102)로 전달된다. 화상간 압축에서는, 일부 프레임이 디코딩될 이후의 프레임에 대한 액세스를 필요로 하기 때문에, 요구되는 프레임들은 이들을 필요로하는 프레임 앞으로 보내져야 한다. MPEG-2 표준에서, 프레임이 압축 해제를 위해 이전 및 이후의 프레임을 모두 필요로 할 수 있기 때문에, 압축된 프레임은 비디오 시퀀스로 표시되는 순서와 동일한 순서로 보내지지는 않는다. 어셈블리 유니트(102)는 압축 해제되고 있는 프레임에 대응하도록 메모리 내에 정확한 위치에 정보가 위치하도록 한다. 이로 인한 디코딩된 매크로블록은 어셈블리 유니트(102)에 의해 지정된 장소의 메모리(160)에 저장될 필요가 있다. 모든 프레임은 메모리(160)내에 저장될 필요가 있는데, 이는 디코딩된 매크로블록이 압축 해제 프로토콜의 기억 및 전송 포맷으로 인해, 표시부로 전송되는 다음번 매크로블록이 되지 않을 수도 있기 때문이다. MPEG-2 및 화상간 압축을 사용하는 다른 압축 해제 프로토콜에서, 프레임은 이전 및 이후의 프레임에 따라 인코딩되며, 프레임을 적절하게 디코딩하기 위해 프레임은 순서대로 전송되지 않고 그들이 표시될 때까지 저장될 필요가 있다. 통상의 MPEG-2 디코더(10)는 메인 레벨 모드에서 메인 프로필(ML에서 MP)로 동작하는데 16 Mbit의 메모리를 필요로 한다. 이것은 디코더가 2 Mbyte 메모리(160)를 필요로 함을 의미한다.
디코더(10)는 어느 한 표준 또는 표준의 결합에 따라 포맷을 갖는 비트스트림을 디코딩하도록 설계될 수 있다. 표준의 결합에 따라 포맷된 비트스트림을 디코딩하기 위해, 디코더(10)는 각각의 압축 해제 프로토콜에 따라 비트스트림을 디코딩하는 회로를 포함할 필요가 있다. 이러한 회로는 특정 압축 해제 프로토콜에 특정된다. 또한 디코더(10)는 특정 압축 해제 프로토콜에 따른 비트스트림을 인코딩하기 위해, 분리된 인코딩 회로를 필요로 한다. 디코더(10)는 단순히 각각의 원하는 압축 해제 프로토콜을 위한 디코더들과 인코더들의 조합일 수 있다. 예를 들면, MPEG-2 표준 또는 H.261 표준 중 어느 하나에 따라 인코딩된 비트스트림을 압축 해제할 수 있는 디코더(10)는 두 세트의 디코딩 회로를 포함하는데, 각 세트는 그 자체의 모션 보상 회로 및 그 자체의 블록 디코딩 회로를 포함하며 각각의 표준에 대한 것으로서 특정 표준에 특정적이다. 또한, 디코더(10)가 특정 압축 해제 프로토콜에 따른 이미지 시퀀스를 인코딩하는 것이 바람직하다면, 특정 압축 해제 프로토콜에 따른 시퀀스를 인코딩하기 위한 특정 회로를 포함하는 별도의 인코딩 회로를 부가할 필요가 있다.
분리된 회로 세트에 대한 이러한 필요성은 디코더의 다이 영역(die area)이 크게 증가하기 때문에 문제가 된다. 반도체 산업에서 오랫 기간 동안의 목적은 소정 기능을 위한 집적 회로 장치의 다이 영역을 감소시키는 것이다. 다이 영역을 감소시키는 몇몇 이점은 동일한 크기의 실리콘 웨이퍼상에 제조될 수 있는 다이의 수를 증가시키는 것이며, 그로 인해 다이당 가격을 감소시킬 수 있다. 이로 인해, 장치 가격의 감소와 용적의 증가가 가능해 진다. 다이 영역이 증가하면, 장치의 비용이 크게 증가한다는 문제가 발생한다.
다이 영역의 증가를 최소한도로 하도록 장치에 부가된 압축 해제 표준의 수를 유지하는 것은 장려 사항이다. 그러나, 디코더(10)가 몇몇 잘 수용되는 표준에 따라 포맷된 시퀀스를 디코딩하고 인코딩하는 것은 매우 유용하다. 이로 인해 디코더(10)는 많은 수의 비디오 및/또는 오디오 시퀀스를 디코딩할 수 있다. 또한, 비디오 전화용으로, 디코더(10)가 시퀀스를 디코딩 및 인코딩할 수 있어야 하므로, 디코더와 인코더 모두가 필요하게 된다.
현재, 사용 가능한 많은 이미지가 있고, 그 중 많은 것이 서로 다른 표준에 따른다. 또한, 전송되거나 저장되는 이미지를 수신할 수 있는 필요가 있으며, 상기 이미지는 통상 MPEG-1 또는 MPEG-2 표준에 따라 인코딩된다. 또한, 비디오 전화를 사용하여 통신할 수 있는 필요가 있으며, 참가자의 이미지는 통상 H.261 또는 H.263 표준에 따라 인코딩된다. 이로 인해, 컴퓨터 또는 다른 유사 장치내로 양자를 수행할 수 있는 디코더를 위치시키는 것이 매우 유용하다. 그러나, 수요자에 의해 더욱 더 요구되어 가는 이러한 유연성(flexibility)은 장치에서 더욱 높은 다이 영역의 가격 및 그러한 디코더를 만들기 위한 크게 증가된 비용에 따르는 것이다.
본 발명은 다중-표준 디코더 회로 및 동작 방법을 제공한다. 디코더는 압축된 프레임을 파싱하고, 상기 압축된 프레임내의 모션 보상 정보와 블록 데이터 구조를 분리하기 위한 파서(parser)를 포함한다. 또한, 디코더는 블록 데이터 구조내의 화소 및 화상간 예상 에러를 디코딩하기 위한 블록 디코더 모듈과, 모션 보상 정보를 사용하여 예상 매크로블록을 얻기 위한 모션 보상 엔진과, 디코딩된 화상내 예상 에러 및 디코딩된 모션 보상 예상 에러를 가산하기 위한 가산 회로를 포함한다. 이러한 블록 디코더 및 모션 보상 엔진은 별개로 액세스될 수 있다.
또 다른 실시예에서, 블록 디코더 및 모션 보상 엔진은, 별개로 액세스될 수 있는 모듈들로 보다 세분화될 수 있다.
본 발명의 이점은 기능 회로가 다른 압축 해제 동작 및 다른 표준용으로 재사용될 수 있기 때문에, 압축된 프레임의 압축 해제를 수행하기 위해 필요한 회로를 감소시켜, 회로의 다이 영역과 비용이 줄어들 수 있는 것이다.
본 발명의 또 다른 이점은 디코더가 프로세서에 접속될 때, 디코더의 기능 블록들 중 몇몇 블록들, 또는 그 몇몇 블록들의 일부가 프로세서에서 수행될 수 있어, 디코더가 하나 이상의 프레임을 동시에 압축 해제할 수 있도록 하는 것이다.
본 발명의 또 다른 이점은 디코더가 프로세서에 접속될 때, 디코더의 기능 블록들 중 몇몇 블록들, 또는 그 몇몇 블록들의 일부가 프로세서에서 수행될 수 있어, 디코더가 동시에 압축된 프레임을 압축 해제하고, 압축 해제된 프레임을 압축할 수 있도록 하는 것이다.
또한, 본 발명은 프레임의 압축 해제 중 어떤 부분이 프로세서에서 수행되고 디코더의 하드웨어에서는 무엇이 수행되는지에 관한 프로세서의 동적 재구성이, 프로세서를 더욱 강력한 것으로 교체하거나 메모리를 부가하는 것과 같이 전자 시스템에서의 변경을 가져오게 하는 부가적인 이점을 제공하는데, 이러한 이점은 원래 설계된 디코더의 표준에서 사용된 기능 블록들과 동일한 기능 블록들의 대부분을 사용하면서도 단지 소프트웨어에 대한 변경만을 갖는 미래의 디코딩 표준에 수용할 수 있게 한다.
본 발명의 다른 이점과 목적은 첨부된 도면을 참조하면서 이하에서 설명한다.
도 2는 본 발명의 실시예에 따른 디코더(200) 아키텍처의 블록도를 도시한다. 도 1 내지 도 5에서 공통 부분은 동일한 도면 부호를 사용하여 나타낸다. 디코더(200)는 다수의 서로 다른 포맷 중 어느 하나에서 인코딩된 입력을 디코딩할 수 있는 다중-표준 디코더이다. 이러한 표준은 MPEG-2, MPEG-1, H.261, H.263과 같은 화상내 및 화상간 압축을 사용하는 표준일 수 있다. 디코더가 따르는 표준이 모두 동일한 하부 알고리즘을 기반으로 하고 있는 경우, 다른 알고리즘에 따를 때와 달리 본 발명을 사용하면 디코더의 다이 영역을 통상 크게 감소시킬 수 있다. 서로 다른 디코딩 기법을 사용하는 디코더가 사용될 수 있지만, 도 2는 프레임을 압축 해제하는 이산 코사인 변환(discrete consine transform:DCT)을 사용하는 디코더(200)를 구체적으로 도시한다. 디코더(200)는 비디오 또는 오디오 디코더, 또는 비디오 및 오디오 결합 디코더일 수 있다.
디코더(200)는 표준의 결합에 따른 포맷된 비트스트림을 디코딩할 수 있다. 본 발명의 보다 바람직한 실시예에서, 디코더(200)는 몇몇 잘 수용되는 DCT 표준에 따라 포맷된 비트스트림을 디코딩할 수 있는 다중-표준 디코더이다. 도 2 및 도 3에 도시된 실시예에서, 디코더(200)는 MPEG-1, MPEG-2, H.261, H.263에 따른 비트스트림을 디코딩할 수 있다. 이로 인해, 디코더(200)는 많은 비디오 및/또는 오디오 시퀀스를 디코딩할 수 있다. 도 2 및 도 3에 도시된 발명의 실시예에서, 디코더(200)가 비디오 전화용으로 사용될 수 있도록, 디코더는 H.261 및 H.263에 따라 시퀀스를 인코딩할 수 있다. 디코더(200)가 포맷된 비트스트림을 디코딩할 수 있고 그에 따라 시퀀스를 인코딩할 수 있는 표준의 선택은 소망 코스트, 효율 및 디코더(200)의 응용에 따른다.
디코더(200)는 기능 블록 또는 모듈로 구성된다. 각각의 기능 블록이 하나 또는 수개의 다른 기능 블록에 의해 액세스되는 기능 블록간의 접속이 있다. 도 2에 도시된 실시예에서, 멀티플렉서(MUXs)는 하나 이상의 모듈에 의해 액세스되는 기능 블록 사이에 위치한다. 디코더(200)는 버퍼, 즉, FIFO(30)를 포함한다. FIFO(30)는 종래의 디코더에서 알려진 FIFO와 같고 미리 수신된 압축 데이터가 디코딩됨에 따라 인입되는 압축 데이터를 버퍼링하는 데에 사용된다. FIFO(30)는 헤더 파서(36)에 접속된다. 헤더 파서(36)는 종래의 디코더에서 사용되는 헤더 파서와 같고 인코딩된 데이터를 매크로블록으로 파싱하고 매크로블록의 헤더로부터 모션 보상 정보를 추출한다.
헤더 파서(36)의 제1 출력은 블록 디코더 모듈(50)의 VLC 디코더(42)에 접속된다. 블록 디코더 모듈(50)은 블록 배열 모듈(44)과 IDCT 모듈(46)을 포함한다. VLC 디코더(42)는 역 지그-재그 스캐너(IZZ:54)에 접속된다. IZZ(54)의 출력은 MUX(104)의 입력에 접속된다. 또한, FIFO(30)의 출력은 MUX(104)의 입력에 접속되어, FIFO(30)내에 저장된 압축 데이터가 파서(36)와 블록 배열 모듈(44)을 바이패스하여 MUX(104)로 직접 갈 수 있게 한다. 디코더에서 기능 블록간에 접속을 형성하는데 사용되는 MUX(104) 및 다른 MUX들의 선택 입력은 프로세서 또는 마이크로콘트롤러와 같은 사전 프로그램된 로직 회로에 의해 이루어진다. 사전 프로그램된 로직 회로는, 수행될 다음 동작이 무엇인지를 MUX의 출력이 접속되는 기능 블록들과 비교하도록 프로그래밍된다. MUX(104)의 출력은 IDCT 모듈(46)의 역 양자화기(48)의 입력에 접속된다. 역 양자화기(48)는 IDCT 회로(66)에 접속된다. IDCT 회로(66)의 출력은 MUX(106)에 접속된다. MUX(104)의 출력은 IDCT 모듈(46)을 바이패스하는 MUX(106)의 다른 입력이다. MUX는 하나의 기능 블록이 이후 수행될 디코딩 또는 인코딩 동작에 따라 서로 다른 몇몇 기능 블록으로 액세스할 수 있도록 기능 블록간을 접속한다. MUX(104)와 결합된 MUX(106)는 전체 블록 디코더 모듈(50)을 바이패스한다. 비-DCT계 디코더에서, 디코더 모듈은 블록 배열 디코더 모듈(44)과 IDCT 모듈(46) 대신에 사용되는 비 DCT 알고리즘에 따라, 정보를 디코딩하는 회로를 포함한다. 블록 디코더 모듈(50), 블록 배열 모듈(44) 및 IDCT 모듈(46)은 파이프라인으로 구성될 수 있다. 블록 디코더 모듈(50)은 화소 및 화상간 예상 에러를 디코딩한다.
비록 인코더가 존재하지 않을 때 MUX는 제거되거나 또는 MUX가 모션 보상 엔진에 액세스하지 않을 수도 있지만, 파서(36)의 제2 출력은 MUX(108)를 통해 모션 보상 엔진(90)의 어드레스 계산 회로(96)에 접속된다. 어드레스 계산 회로(96)는 하프-화소 필터(78)에 접속된다. 메모리(160)는 모션 보상 엔진(90)의 하프-화소 필터(78)에 접속된다. 모션 보상 엔진(90)의 출력 및 블록 디코더 모듈(50)의 출력은 가산 회로(72)에서 가산된다. 결과는 어셈블리 유니트(102)로 전달된다. 어셈블리 유니트(102)의 출력은 디코더(200)의 출력이다. 디코더(200)의 출력은 통상 메모리(160)을 통해 표시 발생기(130)에 접속된다. 디코더가 동작하도록 설계된 전자 시스템에 따라, 디코더는 다른 블록을 또한 포함할 수 있다.
디코더(200)는 인코더 모듈 없이 동작할 수 있지만, 인코더 모듈(88)은 메모리(160)에 접속된다. 상술한 바와 같이, 인코더 모듈(88)은 비디오 전화용 H.261 및 H.263 표준에 따르도록 데이터의 시퀀스를 인코딩한다. 인코더 모듈은 디코더(200)가 비디오 전화용 시퀀스를 처리할 수 있는 것이 결정될 때 부가되어야 한다.
비디오 전화 및 원격 회의용으로, 각각의 최종 사용자는 수신과 전송을 모두 할 수 있어야 한다. H.261 및 H.263은 현재 비디오 전화용으로 잘 수용되는 표준이다. H.261 및 H.263에 따라 시퀀스를 인코딩할 수 있는 인코더는 덜 복잡하고, MPEG-1 또는 MPEG-2 표준에 따르는 인코더 보다 더 낮은 해상도 및 더 낮은 프레임율을 가지며, 디코딩된 이미지의 화질은 MPEG-1 또는 MPEG-2 표준에 따르는 인코더로부터의 화질보다 다소 낮게 된다. 이러한 인코더는 실시간에서 동작하며 가격이 저렴하다. 이로 인해 MPEG-1 또는 MPEG-2 표준에 따르는 시퀀스를 인코딩하는 인코더보다 통상 덜 효율적으로 된다. 이는 이러한 인코더의 소스 데이터율과 인코딩된 비트스트림 데이터율 간의 비율인 압축율(compression factor)이 MPEG 인코더의 압축율 보다 소정의 화질에 대하여 더 낮다는 것을 의미한다. 그러나, 이러한 인코더는 덜 복잡하기 때문에, MPEG-1 및/또는 MPEG-2 표준에 따를 수 있는 인코더보다 저렴하고 빠르다. 이로 인해 비디오 전화가 가능하도록 하는데, 이는 신호를 인코딩하는 때의 긴 지연과 많은 사용자에게 지나치게 비싼 비용은 비디오 전화에서 받아들여질 수 없는 사항이기 때문이다.
도 2에서 도시된 실시예에서, 디코더(200)은 MPEG-1, MPEG-2, H.261 및 H.263에 따라 포맷된 비트스트림을 디코딩할 수 있고, H.261 및 H.263에 따라 비트스트림을 제공하는 시퀀스를 인코딩할 수 있다. 이로 인해, 디코더(200)는 비디오 전화용으로 사용될 수 있다. MPEG-1 및 MPEG-2가 아닌 H.261 및 H.263에 따른 인코딩은, 최고 압축율을 제공하도록 인코딩됨으로써 전송 및 저장 비용을 감소시키려는 소망과 장치를 대량 생산할 수 있는 충분히 저렴한 가격을 유지하려는 소망간의 균형을 이룰 수 있게 한다.
인코더 모듈(88)은 인입 프레임을 수신하기 위한 입력을 갖는다. 인입 프레임에서 각각의 매트로블록(이하, "인입 매크로블록")은 가산 회로(110) 및 모션 평가 엔진(86)으로 간다. 디코더(200)가 프로세서(75)에 접속될 때, 모션 평가는 하드웨어인 디코더 또는 소프트웨어로 된 프로세서(75), 또는 상기 두 개의 결합에 의해 수행될 수 있다. 모션 평가 모듈(86)은 인입 매크로블록을 이후 및 이전 프레임내의 매크로블록과 비교하여, 인입 매크로블록과 가장 공통되는 것이 어느 프레임, 즉 I 또는 P 프레임내의 어떤 매크로블록인지를 결정한다. 가장 공통적인 매크로블록이 이러한 인입 매크로블록에 대한 예상 매크로블록(prediction macroblock)이 된다. 모션 평가 엔진(86)은 인입 매크로블록과 예상 매크로블록 사이의 모션 벡터를 결정한다. 모션 평가 엔진(86)내에서 결정된 모션 벡터는 데이터 MUX(120)의 입력이며 모션 보상 엔진(90)의 입력이다. 모션 보상 엔진(90)은 예상 매크로블록을 얻는다. 모션 보상 엔진(90)의 출력은 가산 회로(122)와 가산 회로(110)의 입력이다. 디코더(200)가 프로세서에 접속될 때, 프로세서 및 메모리는 MUX(108) 대신에 사용될 수 있을 지라도, 디코더(200)의 모션 보상 엔진(90)은 MUX(108)를 통해 인코더 모듈에서 사용될 수 있다. 필요한 모션 보상 엔진용으로 디코더(200)에 이미 존재하는 모션 보상 엔진(90)을 사용하면, 인코더 모듈(88)은 모션 보상 엔진(90)을 재사용함으로써 부가적인 모션 보상 엔진에 필요한 다이 공간을 절감할 수 있게 된다.
예상 매크로블록은 가산 회로(110)에서 인입 매크로블록으로부터 감산된다. 프레임이 I 프레임일 때와 같이, 예상 매크로블록이 없을 때, 아무것도 인입 매크로블록의 화소에 부가되지 않는다. 예상 매크로블록이 있을 때, 예상 매크로블록의 화소는 인입 매크로블록의 화소로부터 감산되어 인입 매크로블록에 대한 예상 에러 화소를 얻을 수 있게 된다.
가산 회로의 출력은 양자화기(114)에 접속된 DCT 회로(112)에 접속된다. DCT 회로(112)는 입력 프레임에서 화소의 8X8 블록 각각에 대해 DCT를 수행한다. 양자화기(114)는 적절한 양자화 테이블에 따라 값을 양자화한다. 양자화기(114)의 출력은 지그 재그 스캐너(ZZ:116)에 접속되고 MUX(104)를 통해 IDCT 모듈(46)에 접속된다. 인입 매크로블록이 I 및 P 프레임에서의 매크로블록과 같은 예상 매크로블록으로 기능할 수 있다면, 그것은 IDCT 모듈(46)로 전송되고 일부 다른 인입 매크로블록에 대한 예상 매크로블록일 때 검색되기 위해 버퍼로 전송된다.
인입 매크로블록은 인코딩될 때, 양자화된다. 데이터가 양자화될 때는 언제나 약간의 손실이 있다. 디코더는 양자화된 예상 매크로블록에 예상 에러를 부가하여 매크로블록을 디코딩할 것이다. 인코더에서 얻어진 예상 에러가 양자화된 예상 매크로블록에 따른다면, 에러가 적게 나타날 것이다. 따라서, 예상 매크로블록으로서 사용될 수 있는 어떠한 인입 매크로블록일 지라도 저장되기 전에 양자화기(114) 및 역 양자화기(48)을 거친다. 따라서, 인코더 모듈(88)은 이러한 매크로블록을 압축 해제할 수 있는 역 양자화기 및 IDCT 회로를 필요로 한다. 모션 평가 모듈(86)을 MUX(104)로 접속시키는 것은 인코더 모듈(88)이 블록 디코더 모듈(50)에 의해 사용되는 것과 동일한 IDCT 모듈(46)을 사용하도록 한다. 인코더 모듈(88)이 동일한 IDCT 모듈(46)을 사용하도록 하는 것은 어떤 회로의 부가 및 그에 따른 다이 공간 없이도, 인코더 모듈(88)이 하드웨어내에서 비교될 수 있는 매크로블록의 디코딩, 압축 해제 스피드의 향상을 수행할 수 있도록 한다.
IDCT 모듈(46)의 출력은 가산 회로(122)의 입력이다. 상술한 바와 같이, 모션 보상 엔진(90)의 출력도 또한 가산 회로(122)의 입력이다. 예상 매크로블록이 있을 때, 예상 매크로블록은 가산 회로(122)에서 IDCT 회로(66)에 의해 디코딩된 예상 에러에 더해져서 압축 해제된 인입 매크로블록을 얻게 된다. 버퍼는 주 메모리의 일부일 수 있지만, 통상 FIFO 이다. I 및 P 프레임내의 매크로블록은 버퍼(126)에 저장되고, 상기 매크로블록이 비교에 필요한 예상 매크로블록일 때 검색된다. 버퍼(126)는 모션 평가 엔진(86)에 접속된다.
상술한 바와 같이, 양자화기(114)의 출력은 ZZ(116)에 또한 접속된다. ZZ(116)는 인입 프레임의 8X8 사각 블록 배열을 지그-재그 포맷인 그 일련의 표현(serial representation)으로 변환한다. ZZ(116)는 데이터 MUX(120)에 접속되는 VLC 인코더(118)에 접속된다. VLC 인코더(118)는 통상 호프만 코드를 사용하여, 인코딩된 블록의 DCT 계수를 나타내는 고정 길이의 PCM 코드를 VLC로 인코딩한다. 이는 통상 프로세서로부터 얻어지는 헤더 정보와 결합되어 인코딩된 비트스트림을 형성한다. 데이터 MUX(120)의 동작은 다른 대부분의 기능 블록과 같이, 프로세서(75)에 의해 수행될 수 있다. 인코딩된 비트스트림은 데이터 MUX(120)의 출력이고, 또한 인코더 모듈(88)의 출력이다.
인코더 모듈(88)은 로직 회로에 의해 제어된다. 디코더(200)가 프로세서(75)에 접속될 때, 인코더(88)가 그 자체의 소형 프로세서, 예를 들면, 마이크로콘트롤러를 구비할 지라도, 프로세서는 인코더 모듈(88)을 제어한다.
본 발명의 한 실시예에서, 디코더(200)는 프로세서(75)에 또한 접속된다. 프로세서(75)는 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부가 프로세서(75)에서의 소프트웨어로 수행되도록 함으로써, 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부를 완전히 교체하거나 하드웨어 또는 소프트웨어 중 어느 하나에 의해 그 기능을 수행하게 한다. 지나치게 소모적이지 않아 소프트웨어로 수행되는 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부, 예를 들면 H.261 또는 H.263을 위한 대다수의 모션 평가 블록을 완전히 교체하면, 다이 공간을 절약할 수 있고 시스템의 코스트를 절감시킬 수 있다. 반면에, 가장 소모적인 기능 블록들은 하드웨어로 유지함으로써, 이들은 시스템이 실시간으로 동작하기에 충분한 빠르기로 수행될 수 있게 된다. 실시간으로 동작한다는 것은 시청자가 디코딩에서 어떠한 지연도 검출할 수 없도록 디코더(200)가 통상 초당 1/30인 스크린 리프레시(screen refreshes) 사이의 시간 내에 전체 이미지를 디코딩하기에 충분한 정도의 빠르기로 동작해야 한다는 것을 의미한다. 목표는 시청자가 주목할 수 있을 정도의 많은 프레임을 빠뜨리지 않고 디코더(200)가 실시간으로 동작하게 하는 것이다. 디코더(200)가 영화를 디코딩하는 데에 실시간으로 동작하지 않으면, 디코딩된 영화는 디코더(200)가 다음 이미지를 처리하기 위해 메모리로 액세스할 때까지 이미지 사이에서 주기적으로 중지되고 지연될 것이다. 디코더가 비디오 전화를 지원하기 위해 인코더를 포함하는 경우, 실시간으로 동작하지 않는다는 것은, 대화의 한편에서의 이벤트 발생, 예를 들어 말하는 것의 발생으로부터 대화의 다른 편에서 이러한 이벤트가 표시될 때까지의 시간의 길이가, 인코더와 디코더가 버스 및 주 메모리에 액세스하기 위해 기다려야 하는 시간만큼 증가한다는 것을 의미한다. 장치가 따라잡을 때까지, 대화에는 갭(gap)이 있을 수 있다. 이것은 비디오 회의를 하는 데에 필요한 시간을 증가시키고, 회의 참가자를 불편하게 한다.
프로세서(75)에서 얼마나 많은 동작이 수행되는지는, 인코딩된 비트스트림이 따르는 표준에 의해 특정된 바와 같이 실시간으로 기능을 수행하기 위해 요구되는 처리(processing)의 복잡성 및 처리량에 의해, 프로세서(75)의 처리 용량(processing capacity)과 속도의 균형을 맞추는 것에 기초한다. 프로세서의 처리 용량 및 속도는, 디코더(200)가 통상 초당 1/30인 스크린 리프레시 사이의 시간에서 프레임을 디코딩할 수 있을 정도로 충분히 빠르게 기능을 수행하기 위해 프로세서에 대해 요구되는 처리 용량 및 속도 이상이어야 한다. 프로세서의 용량 및 속도가 특정 표준에 필요한 용량 및 속도이상인지 여부의 결정은 표준의 요구 사항, 표준에 따라 프레임을 압축 해제하기 위해 요구되는 시간, 압축 해제를 수행하는 메모리 사양, 프로세서에 사용가능한 메모리, 및 프로세서의 수행 능력에 따른다. MUX는 이러한 정보에 따라 프로그램되고, 프레임이 MPEG-2, H.263 등과 같은 표준 중에 어떤 표준에 따를지를 수신해야 한다. 이러한 방식으로, 압축된 프레임이 따르는 표준 및 디코더가 존재하는 시스템의 수행 능력에 따라, 디코더가 기능을 소프트웨어로 수행할 지 또는 하드웨어로 수행할 지 여부를 동적으로 결정할 수 있다.
디코더를 기능 블록들로 분리하고 이 디코더를 프로세서에 접속하는 것은, 상기 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부가 프로세서에 의해 수행되도록 하고 다른 작업을 위해 하드웨어를 사용할 수 있도록 함으로써 디코더(200)가 동시에 더 많은 기능을 수행할 수 있도록 한다.
동작시, I 또는 P 프레임은 압축된 프레임, 즉, 요구되는 프레임을 압축 해제하는 것이 필요하다. 압축된 프레임은 헤더 파서(36)에 의해 매크로블록으로 파싱된다. 또한, 헤더 파서(36)는 매크로블록을 두 개의 부분으로 분리한다. 즉, 헤더 파서(36)는 매크로블록을 모션 보상 정보를 포함하는 매크로블록의 헤더 부분과 압축된 블록 데이터 구조로 분리한다. 압축된 블록 데이터 구조는 블록 디코더 모듈(50)에서 압축 해제된다. 모션 보상 정보는 예상 매크로블록을 얻기 위해 모션 보상 엔진(90)에 의해 사용된다. 이러한 두 단계가 임의의 순서로 의해 수행될 수 있지만, 보다 바람직하게는 동시에 수행되는 것이다. 이러한 두 단계의 결과는 가산된다. 보다 바람직하게, 각각의 매크로블록을 두 부분으로 파싱하는 것, 모션 보상 엔진(90)에 의해 예상 매크로블록을 얻는 것 및 가산하는 것은 P 및 B 프레임에 대해서만 수행된다. I 프레임에 대해서, 모션 보상 엔진(90), 및 블록 디코더 모듈(50)의 일부는 바이패스될 수 있다. 압축 프레임은 메모리(160)에 저장되고, 표시 발생기(130)로 전송된다. 현재 출원중이고, 그 발명의 명칭이 "DCT 계 기법을 사용하여 압축 정보를 저장함으로써, 압축 해제에 필요한 메모리를 감소시키는 방법" 이며, 제퍼슨 이. 오웬과 제이엔드랜 밸래크리쉬넌(변호사 정리 번호 95-C-014)에 의해 발명되고, 에스지에스 톰슨 마이크로일렉트로닉스, 인크에 양도되고, 참조로 본 발명에 병합되는 미국 특허 출원 제08/759,166호(이하, "95-C-014"라 함)에 개시된 기법을 사용하여, 압축 해제된 프레임이 메모리 사양을 감소시키기 위해 메모리(160)에 저장되기 전에 재압축될 수 있다.
하드웨어 또는 소프트웨어로 수행될 수 있는 별개의 모듈 및 기능 블록으로 디코더를 분리하는 것은, 한 개 이상의 모듈 또는 기능 블록에 의한 접속이 모듈과 기능 블록에 대해 이루어질 수 있게 한다. 이로 인해 다른 모듈에서 모듈과 기능 블록이 재사용될 수 있도록 하여, 압축 프레임의 압축 해제를 수행하기 위하여 요구되는 회로를 감소시킬 수 있는 이점이 있다.
디코더(200)의 구체적인 동작은 이하에서 설명될 것이다. 어떤 형태의 메모리라도 버퍼로서 사용될 수 있지만, 본 실시예에서 압축 프레임은 FIFO(30)로 독출된다. 압축 프레임은 본 실시예의 매크로블록에서, 헤더 파서(36)에 의해 더욱 작은 서브유니트 단위로 파싱된다. 다른 실시예에서, 압축 이미지는 프레임보다 큰 단위로 FIFO로 독출될 수 있고 헤더 파서(36)는 이미지가 매크로블록 단위로 분리될 때까지 파싱한다.
P 및 B 프레임에 대해, 헤더 파서(36)는 두 개의 부분으로 매크로블록을 분리한다: 모션 보상 정보를 포함하는 매크로블록의 헤더 부분 및 압축 블록 데이터 구조. 매크로블록 헤더 부분은 모션 보상 엔진(90)으로 전송된다. 압축 블록 데이터 구조는 블록 디코더 모듈(50)의 VLC 디코더(42)로 전송된다.
블록 디코더 모듈(50)은 데이터 화소 및 화상간 예상 에러를 디코딩한다. VLC 디코더(42)는 인코딩된 블록을 나타내는 가변 길이 코드를 디코딩하고, 상기 가변 길이 코드를 고정 길이 PCM 코드로 변환하는데, 이 고정 길이 PCM 코드는 지그-재그 포맷으로 얻어진 8X8 블록 배열의 일련의 표현으로 인코딩된 블록을 포함하는 DCT 계수를 나타낸다. IZZ(54)은 이러한 일련의 표현을 사각 8X8 블록 배열로 변환하고, 그 결과는 역 양자화기(48)로 전송된다. 역 양자화기(48)는 적절한 양자화 테이블에 따른 역 양자화를 수행한다. 역 지그-재그 스캐닝은 역 양자화의 전에 또는 후에 수행될 수 있으며, IZZ(54) 및 역 양자화기(48)의 순서는 역으로 될 수 있다. 이때, 역 양자화기(48)는 VLC 디코더(42)와 결합되고, IZZ(54)는 IDCT 회로(66)와 결합된다. 처리 결과는 IDCT 회로(66)로 전달된다. IDCT 회로(66)는 역 DCT를 수행하고, 사각 배열 포맷으로 압축 해제된 8X8 블록 데이터 구조를 제공한다.
모션 보상 엔진(90)은 예상 매크로블록을 얻을 수 있다. 상술한 바와 같이, 모션 보상 정보는 어드레스 계산 회로(96)의 입력이다. 어드레스 계산회로(96)는, 수행될 예상의 종류를 결정하여 모션 보상엔진(90)이 어떤 예상 프레임을 액세스할 필요가 있는지를 결정하도록 한다. 어드레스 계산회로(96)는, 모션 벡터 정보와 디코딩되는 프레임의 종류를 사용하여, 예상 프레임 및 예상 매크로블록이 위치해 있는 메모리(160) 내의 어드레스를 결정한다. 예상 매크로블록은 메모리(160)로부터 얻어지고 하프-화소 필터(72)로 입력된다. 통상, 메모리(160)와의 모든 인터페이스를 제어하는 DMA 엔진(162)이 디코더 내에 있다. 하프-화소 필터(72)는 예상 매크로블록에 대해 수평 및 수직 하프 화소 보간을 수행한다.
모션 보상 엔진(90)에 의해 얻어진 하프 화소 필터링된 예상 매크로블록과 블록 디코더 모듈(50)에 의해 디코딩된 화상간 예상 에러는 가산 회로(72)에서 가산되고 어셈블리 유니트(102)로 전달된다. 화상간 코딩에서는 일부 프레임이, 디코딩될 이후의 프레임(future frame)에 대한 억세스를 필요로 하므로, 요구되는 프레임들이 이들을 필요로 하는 프레임 앞으로 인코더에 의해 보내진다. MPEG-2 표준은 화상간 예상을 이용하며 이 때문에 압축된 프레임은 비디오 시퀀스로 디스플레이되는 것과 동일한 순서로 보내지지 않는다. 어셈블리 유니트(102)는 압축해제되고 있는 프레임에 대응하도록 메모리의 정확한 위치에 정보가 위치하도록 보장한다. 어셈블리 유니트는 멀티플렉서에서 수행될 수 있을 지라도 적당한 어드레스 계산, 바람직하게는 소프트웨어적으로 수행된다.
결과적인 디코딩된 매크로블록은 이제 어셈블리 유니트(102)에 의해 지정된 위치의 메모리(160)에 기억되는 것이 필요하다. 모든 프레임들이 메모리(160)에 기억될 필요가 있는데, 이는 디코딩된 매크로블록은 압축해제 프로토콜의 기억 및 전송 포맷으로 인하여 디스플레이로 송부되는 다음번 매크로블록이 되지 않을 수도 있기 때문이다. MPEG-2와 화상간 압축을 사용하는 다른 압축해제 프로토콜에서 프레임은 이전 프레임(past frame)과 이후의 프레임(future frame)에 기초하여 인코딩되며, 따라서 적절하게 프레임을 디코딩하기 위하여 프레임은 인코더에 의해 순서적으로 보내지지 않으며 그들이 디스플레이될 때까지 기억될 필요가 있다. 더욱이 I 및 P 프레임은 그들이 다른 프레임을 디코딩하는데 사용될 수 있도록 기억될 필요가 있다.
I 프레임은 화상내 압축만을 포함한다. 따라서, I 프레임 매크로블록의 헤더내에 모션 보상 정보는 없으며, 모션 보상 엔진(90)은 생략될 수 있다. I 프레임의 블록 데이터 구조내의 화소는 블록 디코더 모듈(50)에서 디코딩되고 출력(120)은 어셈블리 유니트(102)로의 루트를 갖는다(routed). I 프레임은 모션 보상 엔진 및 가산 회로를 바이패스할 수 있다. 모션 보상 엔진(90) 및 가산 회로를 바이패스하는 것은 I 프레임을 압축 해제하는데 요구되는 시간이 감소된다는 부가적인 이점을 제공한다.
기능 블록이 하나 이상의 기능 블록에 의해 액세스되고 바이패스되며 디코더에서 그 물리적 위치와 다른 순서로 액세스되도록 하는 기능 블록간의 접속은, 도 2에 도시된 바와 같이 적절한 위치에 놓인 멀티플렉서에 의해 이루어지거나 도 3에 도시된 바와 같이 프로세서에 의해 제어될 수 있다.
상술한 디코더와 같은 디코더(200')는 MPEG-1, MPEG-2, H.261 및 H.263에 따라 포맷된 비트스트림을 디코딩할 수 있는 다중 표준 디코더이다. 이 디코더(200 ')는 또한 기능 모듈로 구성된다. 기능 모듈의 각각은 하나 또는 여러개의 기능 모듈에 의해 액세스될 수 있다. 모듈들은 메모리(160) 및 프로세서(75)에 접속되어 프로세서(75)로 하여금 기능 블록들의 액세스를 제어할 수 있도록 하게 한다. 통상, 메모리(160)와의 모든 인터페이스를 제어하는 DMA 엔진(162)이 디코더(200' )내에 있다.
디코더(200 ')는 종래의 디코더에서 알려진 FIFO와 같은, 이전에 수신된 압축 데이터가 디코딩됨에 따라 인입 압축 데이터를 버퍼링하는데 사용되는 버퍼, FIFO(30)을 포함한다. FIFO(30)는 헤더 파서(36)에 접속된다. 헤더 파서(36)는 인코딩된 데이터를 매크로블록 단위로 파싱하고 모션 보상 정보를 매크로블록의 헤더로부터 추출한다. FIFO(30)는 프로세서(75)에 또한 접속되어, 압축 데이터가 프로세서에서 파싱되도록 하고, 헤더 파서(36)가 바이패스되도록 한다.
헤더 파서(36)는 프로세서(75)와 메모리(160)에 접속된다. 프로세서(75)는 블록 디코더 모듈(50)과 같은, 블록 배열 디코더 모듈(44) 및 IDCT 모듈(46)을 포함하는 블록 디코더 모듈(50 ')에 접속된다. 블록 배열 디코더 모듈(44)은 IZZ 회로(54)에 접속된 VLC 디코더(42)를 포함한다. IDCT 모듈(46)은 IDCT 회로(66)에 접속된 역 양자화기(48)를 포함한다. 프로세서(75)는 VLC 디코더(42), 역 양자화기(48) 및 IDCT 회로(66)에 접속된다. 블록 디코더 모듈(50' )은 블록 배열 디코더 모듈(44) 및 IDCT 모듈(46)과 함께 파이프라인으로 도시되지만, 다른 형태로 또한 구성될 수 있다. 블록 디코더 모듈(50 ')은 화소 및 화상간 예상 에러를 디코딩한다.
헤더 파서(36)의 제2 출력은 모션 보상 엔진(90)의 어드레스 계산 회로(96)에 접속된다. 프로세서(75)는 또한 어드레스 계산 회로(96)에 접속된다. 모션 보상 엔진(90)은 하프-화소 필터(78)에 접속된 어드레스 계산 회로(96)를 포함한다. 모션 보상 엔진(90)은 예상 매크로블록을 얻는다.
블록 디코더 모듈(50 ')의 출력과 모션 보상 엔진(90)의 출력은 가산 회로(72)에서 가산된다. 가산 회로(72)의 출력은 어셈블리 유니트(102)에 접속되고, 어셈블리 유니트(102)의 출력은 메모리(160)에 접속된다. 메모리(160)는 모션 보상 엔진(90)의 하프-화소 필터(78)와 어드레스 계산 회로(96)에 접속된다. 메모리(160)는 헤더 파서(36) 및 가산 회로(72) 뿐만 아니라, 블록 디코더 회로의 VLC 디코더(42), IZZ(54), 역 양자화기(48) 및 IDCT 회로(66)에도 접속된다.
어셈블리 유니트(102)의 출력은 디코더(200')의 출력이다. 디코더(200 ')의 출력은 통상 메모리(160)를 통해 표시 발생기(130)에 접속된다. 디코더가 동작하도록 설계된 전자 시스템에 따라, 디코더는 또한 다른 블록을 포함할 수 있다.
디코더(200' )는 인코더 모듈(88 ')없이 동작할 수 있지만, 인코더 모듈(88 ')은 메모리(160) 및 프로세서(75)에 접속된다. 인코더 모듈(88' )은 디코더(200 ')가 비디오 전화용으로 시퀀스를 처리할 수 있다고 결정될 때, 부가되어야 한다.
인코더 모듈(88 ')은 MUX에 의해 수행되는 동작이 프로세서(75)에 의해 수행되는 점을 제외하고, 도 2에 도시된 인코더 모듈(88)과 동일한 회로로서 동작한다.
프로세서(75)는 디코더(200 ')의 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부가 프로세서(75)에서의 소프트웨어로 수행되도록 함으로써, 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부를 완전히 교체하거나 하드웨어 또는 소프트웨어 중 어느 하나에 의해 그 기능을 수행하게 한다. 지나치게 소모적이지 않아 소프트웨어로 수행되는 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부, 예를 들면 H.261 또는 H.263을 위한 대다수의 모션 평가 블록(86)을 완전히 교체하면, 다이 공간을 절약할 수 있고 시스템의 코스트를 절감시킬 수 있다. 반면에, 가장 소모적인 기능 블록들은 하드웨어로 유지함으로써, 이들은 시스템이 실시간으로 동작하기에 충분한 빠르기로 수행될 수 있게 한다.
동작시에, 압축된 프레임을 압축해제하는데 요구되는 I 또는 P 프레임(즉, 요구 프레임)은 압축 해제된다. 압축된 프레임은 매크로블록 단위로 파싱되어, 헤더 파서(36), 프로세서 또는 프로세서와 헤더 파서(36)의 결합에 의해 헤더 부분과 압축된 블록 데이터 구조로, 이하에서 더욱 상세히 설명되는 바와 같이, 분리된다. 압축된 블록 데이터 구조는 블록 디코더 모듈(50 ')에서 압축 해제된다. 예상 매크로블록은 모션 보상 엔진(90)에 의해 얻어진다. 이러한 두 단계는 임의의 순서로 수행될 수 있지만, 동시에 수행되는 것이 보다 바람직하다. 이러한 두 단계의 결과는 가산된다. 보다 바람직하게, 각각의 매크로블록을 두 개의 부분으로 파싱하고, 예상 매크로블록을 모션 보상 엔진(90)에 의해 얻고, P 및 B 프레임의 경우에만 가산이 수행되며, I 프레임의 경우에는 모션 보상 엔진(90)과 블록 디코더 모듈(50 ')의 부분이 바이패스될 수 있다. 재압축된 프레임은 메모리(160)내에 저장되고, 표시 발생기(130)로 전송된다.
하드웨어 또는 소프트웨어인 별개의 모듈 및 기능 블록으로 디코더를 분리하는 것은, 한 개 이상의 모듈 또는 기능 블록에 의한 접속이 모듈과 기능 블록에 대해 이루어질 수 있게 한다. 이로 인해 모듈과 기능 블록은 다른 모듈에서 재사용될 수 있으며, 압축 프레임의 압축 해제를 수행하기 위한 회로 요구를 감소시킨다. 디코더를 기능 블록들로 분리하고 이 디코더를 프로세서에 접속시키는 것은, 상기 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부가 프로세서에 의해 수행되도록 하고 다른 작업을 위해 하드웨어를 사용할 수 있도록 함으로써 디코더(200 ')가 동시에 더 많은 기능을 수행할 수 있도록 한다.
디코더(200 ')의 더욱 구체적인 동작의 한 실시예가 이하에서 도 3 및 도 4a를 동시에 참조하면서 설명될 것이다. 본 실시예에서, 어떤 형태의 메모리도 버퍼로서 사용될 수 있지만, 압축 이미지 프레임은 FIFO(30)로 독출된다. 본 실시예의 매크로블록에서 압축 프레임은 더욱 작은 서브유니트로 파싱된다. P 및 B 프레임의 경우, 매크로블록은 두 개의 부분으로 분리되는데, 즉 모션 보상 정보를 포함하는 매크로블록의 헤더 부분과, 압축 블록 데이터 구조로 분리된다. 매크로블록의 헤더 부분은 모션 보상 엔진(90)으로 전송된다. 압축 블록 데이터 구조는 블록 디코더 모듈(50' )의 VLC 디코더(42)로 전송된다. 헤더 파서(36)는 프레임 헤더 파서(37), 슬라이스 헤더 파서(38), 및 MBLK 헤더 파서(39)로 구성되며, 상기 프레임 헤더 파서(37)는 프레임을 슬라이스로 파싱하고 프레임 헤더 내에 포함된 양자화 정보와, 프레임 및 모션 보상 형태 정보를 분리하며, 상기 슬라이스 헤더 파서(38)는 상기 슬라이스를 매크로블록 단위로 파싱하며, 상기 MBLK 헤더 파서(39)는 매크로블록 헤더를 블록 데이터 구조로부터 분리시킨다. 헤더 파서(36)는 프로세서(75)로 접속되고 헤더 파서의 동작의 일부는 프로세서(75)에서 수행될 수 있다.
프로세서(75)에서 얼마나 많은 동작이 수행되는지는, 인코딩된 비트스트림이 따르는 표준에 의해 특정된 바와 같이 실시간으로 기능을 수행하기 위해 요구되는 처리(processing)의 복잡성 및 처리량에 의해, 프로세서(75)의 처리 용량(processing capacity)과 속도의 균형을 맞추는 것에 기초한다. 프로세서(75)에서 기능 블록 중 하나 또는 하나의 일부를 수행하는 것이 바람직한 경우, 이는 파싱 동작 및 다른 동작에 적용된다. 예를 들면, 프로세서의 처리 용량 및 속도가 적어도 처리 용량 문턱치(threshold) 및 속도 문턱치 이상이고, 상기 처리 용량 문턱치 및 속도 문턱치에서 디코더(200')가 통상 초당 1/30인 스크린 리프레시 사이의 시간에서 프레임을 디코딩할 수 있을 정도로 충분히 빠르게 프로세서가 헤더 파서(36)의 전체 동작을 수행하도록 하는 경우, 전체 헤더 파서(36)는 프로세서에 의해 대체될 수 있다. FIFO(30)는 또한 프로세서(75)에 접속되어 있고 헤더 파서(36)가 전체적으로 프로세서(75)에 의해 대체되면, 비트스트림은 헤더 파서(36)가 아닌 프로세서(75)로 전송된다. 프로세서의 처리용량 및 속도가 특정 표준에 대한 처리 용량 문턱치 및 속도 문턱치 이상인지 여부의 결정은 프로세서(75)에서의 소프트웨어에 의해 결정된다. 소프트웨어는 비트스트림이 따르는 어떠한 표준, 즉 MPEG-2 및 H.263 등과 같은 표준에 대해 엑세스해야 하고 그 표준의 요구 사항을 만족하여야 하는데, 요구사항으로는 그 표준을 따르는 프레임을 압축 해제하기 위해 디코더에 의해 요구되는 시간, 압축 해제를 수행하기 위한 메모리 사양, 프로세서에 사용 가능한 메모리 및 프로세서의 용량이 있다.
이로 인해 프로세서(75)는 하드웨어가 다른 기능들을 수행하게 하는 이점이 있는데, 그 다른 기능으로는 압축되지 않은 프레임을 인코딩하거나, 디코딩되는 압축 프레임과 동시에 다른 압축 프레임을 디코딩하는 것을 들 수 있다. 프레임의 압축 해제 중 어떤 부분은 프로세서(75)에서 수행되고 디코더의 하드웨어에서는 무엇이 수행되는지에 관한 프로세서(75)에서의 이러한 동적 재구성은, 프로세서를 더욱 강력한 것으로 교체하거나 메모리를 부가하는 것과 같이 전자 시스템에서의 변경을 가져오게 하는 부가적인 이점을 제공한다. 또한, 디코더(200 ')는 원래 설계된 디코더의 표준에서 사용된 기능 블록들과 동일한 기능 블록들의 대부분을 사용하는 미래의 디코딩 표준을 수용할 수 있게 하는 이점을 제공한다. 전자 및 후자 모두 소프트웨어에 대한 변경만으로 행해질 수 있다. H.261 또는 H.263과 같이 계산을 적게 요구하는 표준에 따르는 비트스트림에 대해, MPEG-1에 따른 비트스트림보다 더 많은 압축 해제가 프로세서(75)에서 발생할 수 있으며, MPEG-2에 따른 비트스트림보다 더 많은 비트스트림의 압축 해제가 MPEG-1에 따른 비트스트림에 대해 프로세서(75)에서 발생할 수 있다.
압축 프레임이 파싱된 후에, 이로부터 얻어진 데이터가 메모리(160)내에 저장된다. 블록 디코더 모듈(50 ')은 데이터 화소 및 화상간 예상 에러를 디코딩한다. VLC 디코더(42)는 인코딩된 블록을 나타내는 가변 길이 코드를 디코딩하고, 상기 가변 길이 코드를 고정 길이 PCM 코드로 변환하는데, 이 고정 길이 PCM 코드는 지그 재그 포맷으로 얻어진 8X8 블록 배열의 일련의 표현으로 인코딩된 블록을 포함하는 DCT 계수를 나타낸다. IZZ(54)은 이러한 일련의 표현을 사각 8X8 블록 배열로 변경하며, 그 결과는 역 양자화기(48)로 전달된다. 역 양자화기(48)는 적절한 양자화 테이블에 따른 역 양자화를 수행한다. 그 결과는 IDCT 회로(66)로 전달된다. IDCT 회로(66)는 역 DCT를 수행하고 사각 배열 포맷의 압축 해제된 8X8 블록 데이터 구조를 생성한다.
모션 보상 엔진(90)은 예상 매크로블록을 얻는다. 상술한 바와 같이, 모션 보상 정보는 어드레스 계산 회로(96)의 입력이다. 어드레스 계산회로(96)는 수행 될 예상의 종류를 결정하여 모션 보상엔진(90)이 어떤 예상 프레임을 억세스할 필요가 있는지를 결정하도록 한다. 어드레스 계산회로(96)는, 모션 벡터 정보와 디코딩되는 프레임의 종류를 사용하며, 예상 프레임 및 예상 매크로블록이 위치해 있는 메모리(160) 내의 어드레스를 결정한다. 예상 매크로블록은 메모리(160)로부터 얻어지고 하프-화소 필터(78)로 입력된다. 통상, 메모리(160)와의 모든 인터페이스를 제어하는 DMA 엔진(162)이 디코더 내에 있다. 하프-화소 필터(78)는 예상 매크로블록에 대해 수평 및 수직 하프 화소 보간을 수행한다.
모션 보상 엔진(90)에 의해 얻어진 하프 화소 필터링된 예상 매크로블록과 블록 디코더 모듈(50 ')에 의해 디코딩된 화상간 예상 에러는 가산 회로(72)에서 가산되고 어셈블리 유니트(102)로 전달된다. 화상간 코딩에서는 일부 프레임이, 디코딩될 이후의 프레임(future frame)에 대한 억세스를 필요로 하므로, 요구되는 프레임들이 이들을 필요로 하는 프레임 앞으로 인코더에 의해 보내진다. MPEG-2 표준은 화상간 예상을 이용하며 이 때문에 압축된 프레임은 비디오 시퀀스로 디스플레이되는 것과 동일한 순서로 보내지지 않는다. 어셈블리 유니트(102)는 압축해제되고 있는 프레임에 대응하도록 메모리의 정확한 위치에 정보가 위치되도록 보장한다. 어셈블리 유니트는 멀티플렉서에서 수행될 수 있을 지라도 적당한 어드레스 계산, 바람직하게는 소프트웨어적으로 수행된다.
결과적인 디코딩된 매크로블록은 이제 어셈블리 유니트(102)에 의해 지정된 위치의 메모리(160)에 기억되는 것이 필요하다. 모든 프레임들이 메모리(160)에 기억될 필요가 있는데, 이는 디코딩된 매크로블록은 압축해제 프로토콜의 기억 및 전송 포맷으로 인하여 디스플레이로 송부되는 다음번 매크로블록이 되지 않을 수도 있기 때문이다. MPEG-2와 화상간 압축을 사용하는 다른 압축해제 프로토콜에서 프레임은 이전 프레임(past frame)과 이후의 프레임(future frame)에 기초하여 인코딩되며, 따라서 적절하게 프레임을 디코딩하기 위하여 프레임은 인코더에 의해 순서적으로 보내지지 않으며 그들이 디스플레이될 때까지 기억될 필요가 있다. 더욱이 I 및 P 프레임은 그들이 다른 프레임을 디코딩하는데 사용될 수 있도록 기억될 필요가 있다.
I 프레임은 화상내 압축만을 포함한다. 따라서, I 프레임 매크로블록의 헤더내에 모션 보상 정보는 없으며, 모션 보상 엔진(90)은 생략될 수 있다. 화상내 압축은 블록 디코더 모듈(50 ')에서 디코딩되고 출력(120)은 어셈블리 유니트(102)로의 루트를 갖는다. 모션 보상 엔진(90) 및 가산 회로(72)를 바이패스하는 것은, I 프레임을 압축 해제하는데 요구되는 시간이 감소된다는 부가적인 이점을 제공한다.
인코더 모듈(88)의 동작의 한 실시예는 도 3 및 도 4b를 동시에 참조하면서 설명될 것이다. P 또는 B 프레임에서의 매크로블록과 같이 모션 보상을 가질 수 있는 프레임 내의 각각의 인입 매크로블록은, 모션 평가 엔진(86)에서 버퍼(126)에 저장된 매크로블록과 비교된다. 모션 평가는 디코더 하드웨어 또는 프로세서(75)에 의해 소프트웨어로 수행될 수 있거나, 보다 바람직하게는 상기 두 개의 결합에 의해 수행될 수 있다. 모션 평가 모듈(86)은 인입 매크로블록을 이후 및 이전 프레임내의 매크로블록과 비교하여, 인입 매크로블록과 가장 공통되는 것이 어느 프레임, 즉 I 또는 P 프레임내의 어떤 매크로블록인지를 결정한다. 가장 공통적인 매크로블록이 이러한 인입 매크로블록에 대한 예상 매크로블록(prediction macroblock)이 된다. 모션 평가 엔진(86)은 인입 매크로블록과 예상 매크로블록 사이의 모션 벡터를 결정한다. 모션 평가 엔진(86)내에서 결정된 모션 벡터는 메모리(160)에 저장된다. 모션 보상 엔진(90)은 모션 벡터를 취하고, 메모리(160)내에 저장되는 예상 매크로블록을 얻는다.
예상 매크로블록은 가산 회로(110)에서 입력 매크로블록으로부터 감산된다. 프레임이 I 프레임일 때와 같이, 예상 매크로블록이 없는 프레임에 대해서는 모션 평가 엔진(86) 및 모션 보상 엔진(90)은 바이패스되고 인입 매크로블록의 화소로는 아무것도 부가되지 않는다. 예상 매크로블록이 있을 때, 예상 매크로블록의 화소는 인입 매크로블록의 화소로부터 감산되어 인입 매크로블록에 대한 예상 에러 화소를 얻을 수 있게 된다. DCT 회로는 입력 프레임에서 화소의 각 8X8 블록에 대해 DCT를 수행한다. 양자화기(114)는 적절한 양자화 테이블에 따른 값을 양자화하고, 그 결과는 메모리(160)내에 위치한다.
인입 매크로블록이 I 및 P 프레임에서의 매크로블록과 같은 예상 매크로블록으로 기능할 수 있다면, 양자화된 예상 에러는 IDCT 모듈(46)로 전송되고, 인입 매크로블록은 일부 다른 인입 매크로블록에 대한 예상 매크로블록일 때 검색되기 위해 프레임 버퍼(126)에 저장될 수 있다.
IDCT 모듈(46)의 출력 및 모션 보상 엔진(90)의 출력은 가산 회로(122)에서 가산된다. 예상 매크로블록이 있을 때, 예상 매크로블록은 가산 회로(122)에서 IDCT 회로(66)에 의해 디코딩된 예상 에러에 더해져서 압축 해제된 인입 매크로블록을 얻게 된다. 가산회로(122)의 출력은 프레임 버퍼(126)에 저장된다. I 및 P 프레임내의 매크로블록은 버퍼(126)에 저장되고, 상기 매크로블록이 비교에 필요한 예상 매크로블록일 때 검색된다. 버퍼(126)는 모션 평가 엔진(86)에 접속된다.
또한, 양자화기(114)의 출력은 ZZ(116)에 의해 8X8 사각 블록 배열에서 지그 재그 포맷의 일련의 표현으로 변경된다. VLC 인코더(118)는 통상 호프만 코드를 사용하여, 인코딩된 블록의 DCT 계수를 나타내는 고정 길이 PCM 코드를 VLC로 인코딩한다. 데이터 MUX(120)에서 모션 벡터를 포함하는 헤더 정보와 결합된 이러한 코드는 인코딩된 비트스트림을 형성한다. 이렇게 인코딩된 비트스트림은 데이터 MUX(120)의 출력이고, 또한 인코더 모듈(88)의 출력이다. 보다 바람직하게, ZZ(116) 및 역 양자화기는 동시에 동작한다.
도 5는 컴퓨터(80)내에서의 디코더(200 ')의 응용 중 하나를 도시한다. 컴퓨터(80)는 버스(77)를 통해 프로세서(75)로 접속된, 입력 장치(73), 출력 장치(74), 메모리(160) 및 디코더를 갖는다. 디코더(200' )는 또한 DVD 플레이어 또는 텔리비젼 시스템과 같은 이미지를 사용하는 다른 시스템 내에서도 사용될 수 있다.
하드웨어 또는 소프트웨어로 수행될 수 있는 별개의 모듈 및 기능 블록으로 디코더를 분리하는 것은, 한 개 이상의 모듈 또는 기능 블록에 의해 접속이 모듈과 기능 블록에 대해 이루어질 수 있게 한다. 이로 인해 다른 모듈에서 모듈과 기능 블록이 재사용될 수 있도록 하여, 압축 프레임의 압축 해제를 수행하기 위하여 요구되는 회로를 감소시킬 수 있는 이점이 있다. 또한, 보다 바람직한 실시예에서, I 프레임은 모션 보상 회로(90) 및 가산 회로(72)를 바이패스하고, 따라서 압축 프레임을 압축 해제하기 위한 시간을 감소시킨다.
나아가, 디코더는 프로세서(75)에 접속될 때, 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부가 프로세서(75)에서 수행되도록 한다. 이는 프레임들 중 하나에 대한 압축 해제 기능들 중 일부는 소프트웨어로 수행될 수 있는 반면에 다른 프레임은 그러한 기능들을 수행하기 위해 디코더의 하드웨어를 사용하기 때문에, 동일한 비트스트림 내의 하나 이상의 프레임 또는 두 개의 분리된 비트스트림으로부터의 하나 이상의 프레임을 디코더가 동시에 압축 해제할 수 있도록 하는 부가적인 이점을 제공한다. 또한, 디코더는 동시에, 압축 프레임을 압축 해제하고 압축 해제된 프레임을 압축하도록 한다. 이는 압축 해제 표준(디코더는 이에 따라 비트스트림을 디코딩함)이 복잡성에 있어서 동일하지 않을 때 특히 유용한데, 이는 덜 복잡한 표준을 따르는 비트스트림이 프로세서에서 더 많이 압축 해제될 수 있기 때문이다. 프레임의 압축 해제 중 어떤 부분은 프로세서에서 수행되고 디코더의 하드웨어에서는 무엇이 수행되는지에 관한 프로세서의 동적 재구성이,프로세서를 더욱 강력한 것으로 교체하거나 메모리를 부가하는 것과 같이 전자 시스템에서의 변경을 가져오게 하는 부가적인 이점을 제공하는데, 이러한 이점은 원래 설계된 디코더의 표준에서 사용된 기능 블록들과 동일한 기능 블록들의 대부분을 사용하면서도 단지 소프트웨어에 대한 변경만을 갖는 미래의 디코딩 표준을 수용할 수 있게 한다.
압축에 대한 더 자세한 배경은 국제 표준화 기구의 "정보 기술-동 화상 및 약 1.5MBIT/S까지의 디지탈 저장 미디어용 관련 오디오의 코딩" 1-6 부분, 국제 표준화 기구의 "정보 기술-동 화상 및 관련 오디오 정보의 일반 코딩(generic coding)" 1-4 부분, 에스지에스 톰슨 마이크로일렉트로닉스의 데이터 시트중 데이터시트 "STi3500A", "STi3500a-MPEG 오디오/MPEG-2 비디오 집적 디코더용 향상된 정보(1995, 6)", 1995년 포컬 프레스(focal press)에 의해 출판된 존 왓킨슨저 " 비디오 및 오디오에서 압축", 1995년 맥그로-힐, 인크에 의해 출판된 다니엘 미놀리저 "비디오 다이얼톤 기술(video dialtone technology)" 에서 알 수 있다. 컴퓨터 아키텍처에 관한 더 상세한 배경은 저자가 돈 앤더슨 및 톰 샌리이고, 존 스윈들에 의해 편집되었으며, 마인스쉐어, 인크가 판권자이며, 1995년 애디슨-웨슬리 출판사에서 출판된 "ISA 시스템 아키텍처 3판"에서 알 수 있다. 상술한 참조 문헌은 본 명세서내에 참조로 병합된다.
본 발명은 몇 개의 실시예 및 다른 실시예를 참조하여 구체적으로 설명되었지만, 본 발명이 속한 분야에서 통상의 지식을 가진 자에게 본 발명의 명세서와 첨부 도면을 참조하여 본 발명의 이하에 첨부된 특허 청구의 범위를 벗어나지 않는 한도에서 다양한 변형이 가능할 것이다.
상술한 구성으로 인해, 본 발명은 기능 회로가 압축 해제의 다른 동작 및 다른 표준용으로 재사용될 수 있기 때문에, 압축된 프레임의 압축 해제를 수행하기 위해 필요한 회로를 감소시켜, 회로의 다이 영역과 비용이 줄어들 수 있다.
본 발명의 또 다른 효과는 디코더가 프로세서에 접속될 때, 디코더의 기능 블록들 중 몇몇 기능블록들 또는 이 몇몇 기능 블록들의 일부가 프로세서에서 수행될 수 있어, 디코더가 하나 이상의 프레임을 동시에 압축 해제할 수 있도록 하는 것이다.
도 1a는 종래의 디코더 아키텍처의 전기 다이아그램을 블록도로 도시한 도면.
도 1b는 지그-재그 스캔의 예를 도시한 도면.
도 2는 본 발명의 실시예에 따라, 디코더 아키텍처의 전기 다이아그램을 블록도로 도시한 도면.
도 3은 본 발명의 또 다른 실시예에 따른 디코더 아키텍처의 전기 다이아그램을 블록도로 도시한 도면.
도 4a 및 도 4b는 도 3의 디코더의 동작의 플로우차트.
도 5는 도 3에 도시된 본 발명의 실시예에 따른 디코더를 포함하는 컴퓨터의 전기 다이아그램을 블록도로 도시된 도면.

Claims (46)

  1. 압축 프레임을 압축 해제하고, 메모리에 접속된 디코더에 있어서,
    제1 및 제2 출력을 갖는 파서로서, 압축 프레임을 파싱(parsing)하고 상기 압축 프레임에 있어서의 모션 보상 정보(motion compensation information)와 블록 데이터 구조를 분리하기 위한 파서(parser)와,
    상기 블록 데이터 구조 내의 데이터 화소 및 화상간 예상 에러(interpicture prediction error)를 디코딩하고, 상기 파서의 상기 제1 출력에 접속된 입력을 갖는 블록 디코더와,
    상기 모션 보상 정보를 사용하여 예상 매크로블록(prediction macroblock)을 얻고, 상기 파서의 상기 제2 출력에 접속된 입력을 갖는 모션 보상 엔진과,
    상기 디코딩된 화상간 예상 에러 및 상기 예상 매크로블록을 가산하고, 상기 블록 디코더의 출력에 접속된 제1 입력 및 상기 모션 보상 엔진의 출력에 접속된 제2 입력을 갖는 가산 회로를 포함하는 디코더.
  2. 제1항에 있어서, 상기 모션 보상 엔진과 접속되어 있는 인코더를 더 포함하는 디코더.
  3. 제1항에 있어서, 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하는 프로세서로서, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 프로세서와,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 블록 디코더의 일부 및 상기 모션 보상 엔진의 일부를 바이패스하기 위한 제1 접속기를 더 포함하는 디코더.
  4. 제3항에 있어서, 상기 제1 접속기는 상기 프로세서를 포함하는 디코더.
  5. 제1항에 있어서, 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하는 프로세서로서, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 프로세서와,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 파서를 바이패스하기 위한 제2 접속기를 더 포함하는 디코더.
  6. 제5항에 있어서, 상기 제2 접속기는 상기 프로세서를 포함하는 디코더.
  7. 제1항에 있어서, 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하는 프로세서로서, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 프로세서와,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 모션 보상 엔진 및 상기 가산 회로를 바이패스하는 제3 접속기를 더 포함하는 디코더.
  8. 제1항에 있어서, 상기 블록 디코더는,
    상기 블록 디코더의 상기 입력에 접속된 입력을 갖는 블록 배열 모듈과,
    상기 블록 배열 모듈에 접속된 입력 및 상기 블록 디코더의 출력에 접속된 출력을 갖는 IDCT 모듈을 포함하는 디코더.
  9. 제8항에 있어서, 상기 IDCT 모듈과 접속되어 있는 인코더를 더 포함하는 디코더.
  10. 제8항에 있어서, 상기 블록 배열 모듈은,
    상기 블록 데이터 구조의 DCT 계수를 디코딩하고, 상기 블록 디코더의 상기 입력에 접속된 입력을 갖는 VLC 디코더와,
    상기 VLC 디코더와 연결되고, 상기 블록 데이터 구조의 일련의 표현을 배열 표현(array representation)으로 변환하기 위한 역 지그 재그 스캐너(inverse zig-zag scanner)를 포함하는 디코더.
  11. 제8항에 있어서, 상기 IDCT 모듈은,
    상기 블록 데이터 구조의 DCT 계수의 역 양자화(inverse quantization)를 수행하기 위한 역 양자화기와,
    상기 역 양자화기와 연결되고, 상기 블록 데이터 구조의 DCT 계수에 관한 역 이산 코사인 변형(inverse discrete cosine transform)을 수행하기 위한 역 이산 코사인 변형 회로를 포함하는 디코더.
  12. 제1항에 있어서, 상기 디코더는 MPEG-2 표준에 따라 포맷된 비트스트림을 디코딩할 수 있는 디코더.
  13. 제1항에 있어서, 상기 모션 보상 엔진은,
    수행될 예상의 종류(type of prediction), 및 상기 압축 프레임을 압축 해제하기 위해 요구되는 프레임의 메모리 내의 어드레스를 결정하기 위한 어드레스 계산 회로와,
    상기 어드레스 계산 회로와 연결되고, 상기 요구되는 프레임에서의 서브유니트가 상기 압축 프레임의 서브유니트와 상관되는지 여부를 결정하기 위한 하프-화소 필터(half-pel filter)를 포함하는 디코더.
  14. 압축 프레임을 압축 해제하고, 메모리 및 프로세서에 접속된 디코더에 있어서,
    제1 및 제2 출력을 갖는 파서로서, 압축 프레임을 파싱하고 상기 압축 프레임에 있어서의 모션 보상 정보와 블록 데이터 구조를 분리하기 위한 파서와,
    상기 블록 데이터 구조 내의 데이터 화소 및 화상간 예상 에러를 디코딩하고 상기 파서의 상기 제1 출력에 접속된 입력을 갖는 블록 디코더로서, 상기 블록 디코더의 블록 배열 모듈에 접속된 입력 및 상기 블록 디코더의 출력에 접속된 출력을 갖는 IDCT 모듈을 구비하는 블록 디코더와,
    상기 모션 보상 정보를 사용하여 예상 매크로블록(prediction macroblock)을 얻고, 상기 파서의 상기 제2 출력에 접속된 입력을 갖는 모션 보상 엔진과,
    상기 디코딩된 화상간 예상 에러 및 상기 예상 매크로블록을 가산하고, 상기 블록 디코더의 출력에 접속된 제1 입력 및 상기 모션 보상 엔진의 출력에 접속된 제2 입력을 갖는 가산 회로와,
    상기 메모리에 접속되고, 상기 IDCT 모듈과 접속되는 인코더를 포함하는 디코더.
  15. 제14항에 있어서, 상기 모션 보상 엔진과 접속되어 있는 인코더를 더 포함하는 디코더.
  16. 제14항에 있어서, 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하는 프로세서로서, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 프로세서와,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 블록 디코더의 일부 및 상기 모션 보상 엔진의 부분을 바이패스하기 위한 제1 접속기를 더 포함하는 디코더.
  17. 제16항에 있어서, 상기 제1 접속기는 상기 프로세서를 포함하는 디코더.
  18. 제14항에 있어서, 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하는 프로세서로서, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 프로세서와,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 파서를 바이패스하기 위한 제2 접속기를 더 포함하는 디코더.
  19. 제18항에 있어서, 상기 제2 접속기는 상기 프로세서를 포함하는 디코더.
  20. 제14항에 있어서, 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하는 프로세서로서, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 프로세서와,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 모션 보상 엔진 및 상기 가산 회로를 바이패스하기 위한 제3 접속기를 더 포함하는 디코더.
  21. 제20항에 있어서, 상기 제3 접속기는 상기 프로세서를 포함하는 디코더.
  22. 제14항에 있어서, 상기 디코더는 MPEG-2 표준에 따라 포맷된 비트스트림을 디코딩할 수 있는 디코더.
  23. 제14항에 있어서, 상기 블록 디코더는 블록 배열 모듈을 더 포함하고,
    상기 블록 배열 모듈은,
    상기 블록 데이터 구조의 DCT 계수를 디코딩하고, 상기 블록 디코더의 상기 입력에 접속된 입력을 갖는 VLC 디코더와,
    상기 VLC 디코더와 연결되고, 상기 블록 데이터 구조의 일련의 표현을 배열 표현으로 변환하기 위한 역 지그 재그 스캐너를 포함하는 디코더.
  24. 제14항에 있어서, 상기 IDCT 모듈은,
    상기 블록 데이터 구조의 DCT 계수의 역 양자화를 수행하기 위한 역 양자화기와,
    상기 역 양자화기와 연결되고, 상기 블록 데이터 구조의 DCT 계수에 관한 역 이산 코사인 변환을 수행하기 위한 역 이산 코사인 변환 회로를 포함하는 디코더.
  25. 제14항에 있어서, 상기 모션 보상 엔진은,
    수행될 예상의 종류, 및 상기 압축 프레임을 압축 해제하기 위해 요구되는 프레임의 메모리 내의 어드레스를 결정하기 위한 어드레스 계산 회로와,
    상기 어드레스 계산 회로와 연결되고, 상기 요구되는 프레임에서의 서브유니트가 상기 압축 프레임의 서브유니트와 상관되는지 여부를 결정하기 위한 하프-화소 필터를 포함하는 디코더.
  26. 입력 장치와, 출력 장치와, 상기 입력장치 및 출력장치와 접속되는 프로세서와, 상기 프로세서와 접속되는 디코더와, 상기 디코더 및 프로세서와 접속되는 메모리를 포함하는 컴퓨터로서,
    상기 디코더는,
    제1 및 제2 출력을 갖는 파서로서, 압축 프레임을 파싱하고 상기 압축 프레임에 있어서의 모션 보상 정보와 블록 데이터 구조를 분리하기 위한 파서와,
    상기 블록 데이터 구조 내의 데이터 화소 및 화상간 예상 에러를 디코딩하고 상기 파서의 상기 제1 출력에 접속된 입력을 갖는 블록 디코더로서, 상기 블록 디코더는 블록 배열 모듈에 접속된 입력 및 상기 블록 디코더의 출력에 접속된 출력을 갖는 IDCT 모듈을 구비하는 블록 디코더와,
    상기 모션 보상 정보를 사용하여 예상 매크로블록(prediction macroblock)을 얻고, 상기 파서의 상기 제2 출력에 접속된 입력을 갖는 모션 보상 엔진과,
    상기 디코딩된 화상간 예상 에러 및 상기 예상 매크로블록을 가산하고, 상기 블록 디코더의 출력에 접속된 제1 입력 및 상기 모션 보상 엔진의 출력에 접속된 제2 입력을 갖는 가산 회로를 구비한 컴퓨터.
  27. 제26항에 있어서, 상기 프로세서는 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하고, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 것이고,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 모션 보상 엔진의 일부 및 상기 블록 디코더의 일부를 바이패스하기 위한 제1 접속기를 더 포함하는 컴퓨터.
  28. 제27항에 있어서, 상기 제1 접속기는 상기 프로세서를 포함하는 컴퓨터.
  29. 제26항에 있어서, 상기 프로세서는 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하고, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 것이고,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 파서를 바이패스하기 위한 제2 접속기를 더 포함하는 컴퓨터.
  30. 제29항에 있어서, 상기 제2 접속기는 상기 프로세서를 포함하는 컴퓨터.
  31. 제26항에 있어서, 상기 프로세서는 처리 속도 및 처리 용량에 관한 정보와 사용가능한 메모리에 관한 정보를 포함하고, 그 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인지 여부를 결정하도록 프로그램가능한 것이고,
    상기 프로세서의 처리 속도 및 처리 용량이 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 속도 및 처리 용량 이상인 경우에는, 상기 모션 보상 엔진 및 상기 가산 회로를 바이패스하기 위한 제3 접속기를 더 포함하는 컴퓨터.
  32. 제26항에 있어서, 인코더를 더 포함하는 컴퓨터.
  33. 제32항에 있어서, 상기 인코더는 상기 IDCT 모듈에 접속되어 있는 컴퓨터.
  34. 제32항에 있어서, 상기 모션 보상 엔진에 접속된 인코더를 더 포함하는 컴퓨터.
  35. 제26항에 있어서, 상기 디코더는 MPEG-2 표준에 따라 포맷된 비트스트림을 디코딩할 수 있는 컴퓨터.
  36. 제26항에 있어서, 상기 블록 디코더는 블록 배열 모듈을 더 포함하고,
    상기 블록 배열 모듈은,
    상기 블록 데이터 구조의 DCT 계수를 디코딩하고, 상기 블록 디코더의 상기 입력에 접속된 입력을 갖는 VLC 디코더와,
    상기 VLC 디코더와 연결되고, 상기 블록 데이터 구조의 일련의 표현을 배열 표현으로 변환하기 위한 역 지그 재그 스캐너를 포함하는 컴퓨터.
  37. 제26항에 있어서, 상기 IDCT 모듈은,
    상기 블록 데이터 구조의 DCT 계수의 역 양자화를 수행하기 위한 역 양자화기와,
    상기 역 양자화기와 연결되고, 상기 블록 데이터 구조의 DCT 계수에 관한 역 이산 코사인 변환을 수행하기 위한 역 이산 코사인 변환 회로를 포함하는 컴퓨터.
  38. 제26항에 있어서, 상기 모션 보상 엔진은,
    수행될 예상의 종류, 및 상기 압축 프레임을 압축 해제하기 위해 요구되는 프레임의 메모리 내의 어드레스를 결정하기 위한 어드레스 계산 회로와,
    상기 어드레스 계산 회로와 연결되고, 상기 요구되는 프레임에서의 서브유니트가 상기 압축 프레임의 서브유니트와 상관되는지 여부를 결정하기 위한 하프-화소 필터를 포함하는 컴퓨터.
  39. 메모리와 프로세서로 액세스하고, 블록 디코더, 모션 보상 엔진, 상기 블록 디코더의 출력에 접속된 제1 입력과 상기 모션 보상 엔진의 출력에 접속된 제2 입력을 갖는 가산 회로를 구비한 디코더를 동작시키는 방법으로,
    상기 블록 디코더에서 압축 프레임을 압축 해제하는 단계와, 모션 보상 예상 에러를 포함한 프레임을 포함하는 상기 압축 프레임에 응답하는 단계를 포함하고,
    요구되는 압축 해제 프레임을 생성하기 위해, 상기 압축 프레임을 압축 해제하는데 필요한 소정 프레임을 압축 해제하는 단계;
    상기 모션 보상 엔진에 상기 요구되는 압축 해제 프레임을 공급하는 단계;
    상기 모션 보상 엔진에서 예상 프레임을 결정하는 단계; 및
    상기 압축 해제 프레임을 얻기 위해, 상기 모션 보상 엔진의 출력을 상기 블록 디코더의 출력에 가산하는 단계를 포함하는 방법.
  40. 제39항에 있어서, 상기 블록 디코더에서 압축 프레임을 압축 해제하는 단계와, 요구되는 압축 해제 프레임을 생성하기 위해 상기 압축 프레임을 압축 해제하는데 필요한 소정 프레임을 압축 해제하는 단계가 동시에 수행되는 방법.
  41. 제39항에 있어서, 상기 디코더는 인코더를 더 포함하고,
    상기 방법은 상기 인코더에서 압축되지 않은 프레임을 압축하는 단계를 더 포함하는 방법.
  42. 제39항에 있어서,
    상기 압축 프레임을 파싱하는 단계;
    상기 모션 보상 엔진에서 상기 압축 프레임을 압축 해제하는 단계 이전에 수행되는, 상기 모션 보상 엔진에 모션 보상 정보를 제공하는 단계; 및
    상기 블록 디코더에서 상기 압축 프레임을 압축 해제하는 단계 이전에 수행되는, 상기 블록 디코더에 블록 데이터 구조를 제공하는 단계를 더 포함하는 방법.
  43. 제42항에 있어서, 상기 압축 프레임을 파싱하는 단계는 상기 블록 디코더에 접속된 제1 출력 및 상기 모션 보상 엔진에 접속된 제2 출력을 갖는 파서에 의해 수행되는 방법.
  44. 제43항에 있어서,
    상기 프로세서의 처리 용량 및 속도를 결정하는 단계;
    상기 프로세서의 처리 용량 및 속도가 적어도 처리 용량 문턱치(threshold) 및 속도 문턱치인 경우에, 상기 파서를 바이패스하는 단계; 및,
    상기 파서를 바이패스하는 것에 응답하여 상기 프로세서에 의해 상기 압축 프레임을 파싱하는 단계를 수행하는 단계를 더 포함하는 방법.
  45. 제39항에 있어서,
    상기 프로세서의 처리 용량 및 속도를 결정하는 단계; 및,
    상기 프로세서의 처리 용량 및 속도가 상기 디코더를 실시간으로 동작시키고 상기 압축 프레임에 대해 바이패스된 모듈을 실행시키는데 필요한 처리 용량 및 속도 이상인 경우에는, 상기 모션 보상 엔진의 일부 및 상기 블록 디코더의 일부를 바이패스하는 단계를 더 포함하는 방법.
  46. 제39항에 있어서, 상기 디코더는 MPEG-2 표준에 따라 포맷된 비트스트림을 디코딩할 수 있는 방법.
KR1019970065553A 1996-12-03 1997-12-03 다중 표준 압축 해제 및/또는 압축 장치 KR100574415B1 (ko)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US8/758,779 1996-12-03
US08/758,779 1996-12-03
US08/758,779 US5920353A (en) 1996-12-03 1996-12-03 Multi-standard decompression and/or compression device

Publications (2)

Publication Number Publication Date
KR19980063746A KR19980063746A (ko) 1998-10-07
KR100574415B1 true KR100574415B1 (ko) 2006-12-07

Family

ID=25053087

Family Applications (1)

Application Number Title Priority Date Filing Date
KR1019970065553A KR100574415B1 (ko) 1996-12-03 1997-12-03 다중 표준 압축 해제 및/또는 압축 장치

Country Status (5)

Country Link
US (1) US5920353A (ko)
EP (1) EP0847204A3 (ko)
JP (1) JP4138056B2 (ko)
KR (1) KR100574415B1 (ko)
TW (1) TW366666B (ko)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013149057A1 (en) * 2012-03-30 2013-10-03 Samplify Systems, Inc. Data compression for direct memory access transfers

Families Citing this family (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6957350B1 (en) 1996-01-30 2005-10-18 Dolby Laboratories Licensing Corporation Encrypted and watermarked temporal and resolution layering in advanced television
US6108584A (en) * 1997-07-09 2000-08-22 Sony Corporation Multichannel digital audio decoding method and apparatus
US6426975B1 (en) 1997-07-25 2002-07-30 Matsushita Electric Industrial Co., Ltd. Image processing method, image processing apparatus and data recording medium
US6594311B1 (en) * 1997-10-20 2003-07-15 Hitachi America, Ltd. Methods for reduced cost insertion of video subwindows into compressed video
JP3990011B2 (ja) * 1997-10-31 2007-10-10 沖電気工業株式会社 復号画像変換回路および復号画像変換装置
US6229852B1 (en) * 1998-10-26 2001-05-08 Sony Corporation Reduced-memory video decoder for compressed high-definition video data
US7844167B1 (en) * 1998-12-08 2010-11-30 Stmicroelectronics, Inc. System and apparatus for digital audio/video decoder splitting signal into component data streams for rendering at least two video signals
US6490324B1 (en) * 1998-12-08 2002-12-03 Stmicroelectronics, Inc. System, method and apparatus for a variable output video decoder
US6414996B1 (en) * 1998-12-08 2002-07-02 Stmicroelectronics, Inc. System, method and apparatus for an instruction driven digital video processor
US20020114395A1 (en) * 1998-12-08 2002-08-22 Jefferson Eugene Owen System method and apparatus for a motion compensation instruction generator
US6366544B1 (en) * 1999-02-09 2002-04-02 Advanced Communication Design, Inc. Universal CD player
US6850568B1 (en) * 2000-01-12 2005-02-01 Sony Corporation Method and apparatus for decoding mpeg video signals
US7194555B2 (en) * 2000-01-12 2007-03-20 Marco Scibora Compression and remote storage apparatus for data, music and video
US6459452B1 (en) * 2000-03-31 2002-10-01 Intel Corporation System, method, and apparatus for decoding digital video sequences
JP2001318745A (ja) * 2000-05-11 2001-11-16 Sony Corp データ処理装置およびデータ処理方法、並びに記録媒体
US6930689B1 (en) * 2000-12-26 2005-08-16 Texas Instruments Incorporated Hardware extensions for image and video processing
EP1231794A1 (en) * 2001-02-09 2002-08-14 STMicroelectronics S.r.l. A process for changing the resolution of MPEG bitstreams, a system and a computer program product therefor
EP1231793A1 (en) * 2001-02-09 2002-08-14 STMicroelectronics S.r.l. A process for changing the syntax, resolution and bitrate of MPEG bitstreams, a system and a computer program product therefor
US8374237B2 (en) 2001-03-02 2013-02-12 Dolby Laboratories Licensing Corporation High precision encoding and decoding of video images
US7266150B2 (en) 2001-07-11 2007-09-04 Dolby Laboratories, Inc. Interpolation of video compression frames
US8111754B1 (en) 2001-07-11 2012-02-07 Dolby Laboratories Licensing Corporation Interpolation of video compression frames
US20030112863A1 (en) 2001-07-12 2003-06-19 Demos Gary A. Method and system for improving compressed image chroma information
US20030167211A1 (en) * 2002-03-04 2003-09-04 Marco Scibora Method and apparatus for digitally marking media content
US8284844B2 (en) 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
KR100556357B1 (ko) * 2002-12-04 2006-03-03 엘지전자 주식회사 디지털 비디오 포맷을 지원하는 엠펙 비디오 디코딩 시스템
US7660352B2 (en) * 2003-04-04 2010-02-09 Sony Corporation Apparatus and method of parallel processing an MPEG-4 data stream
US20050094730A1 (en) * 2003-10-20 2005-05-05 Chang Li F. Wireless device having a distinct hardware video accelerator to support video compression and decompression
US20050232355A1 (en) * 2004-04-15 2005-10-20 Srinivas Cheedela Video decoder for supporting both single and four motion vector macroblocks
EP1599049A3 (en) * 2004-05-21 2008-04-02 Broadcom Advanced Compression Group, LLC Multistandard video decoder
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
CN1870757B (zh) * 2004-05-21 2010-11-10 美国博通公司 多标准视频解码器
US8861602B2 (en) * 2004-06-22 2014-10-14 Broadcom Corporation Motion vector reconstruction in an entropy decoder
TWI271106B (en) * 2005-10-25 2007-01-11 Novatek Microelectronics Corp Apparatus and method for motion estimation supporting multiple video compression standards
US8249140B2 (en) * 2005-12-30 2012-08-21 Intel Corporation Direct macroblock mode techniques for high performance hardware motion compensation
US20070189621A1 (en) * 2006-02-15 2007-08-16 Aten International Co., Ltd Image transmission system
JP4825644B2 (ja) * 2006-11-14 2011-11-30 ルネサスエレクトロニクス株式会社 画像復号装置、画像符号化装置、およびシステムlsi
KR100840195B1 (ko) * 2006-11-28 2008-06-23 쎄텍 주식회사 표준 dvd 디스크 제작시 읽기 에러 생성 방법
US8711901B2 (en) * 2007-03-12 2014-04-29 Vixs Systems, Inc. Video processing system and device with encoding and decoding modes and method for use therewith
KR101305514B1 (ko) * 2007-04-17 2013-09-06 (주)휴맥스 비트스트림 디코딩 장치 및 방법
KR101305491B1 (ko) 2007-04-17 2013-09-17 (주)휴맥스 비트스트림 디코딩 장치 및 방법
CN102113326A (zh) 2008-08-04 2011-06-29 杜比实验室特许公司 重叠块差异估计和补偿体系结构
KR101590633B1 (ko) 2008-11-11 2016-02-02 삼성전자주식회사 슬라이스 단위로 분할된 동영상을 처리하는 동영상 부호화/복호화장치 및 동영상 부호화/복호화방법
US8542737B2 (en) * 2010-03-21 2013-09-24 Human Monitoring Ltd. Intra video image compression and decompression
JP5911517B2 (ja) * 2011-03-15 2016-04-27 インテル・コーポレーション 低メモリアクセス動きベクトル導出
US20140205012A1 (en) * 2013-01-21 2014-07-24 Mediatek Inc. Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding
US10057590B2 (en) 2014-01-13 2018-08-21 Mediatek Inc. Method and apparatus using software engine and hardware engine collaborated with each other to achieve hybrid video encoding
US10020819B1 (en) * 2017-09-28 2018-07-10 Amazon Technologies, Inc. Speculative data decompression

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5461679A (en) * 1991-05-24 1995-10-24 Apple Computer, Inc. Method and apparatus for encoding/decoding image data
WO1996020567A1 (en) * 1994-12-23 1996-07-04 Cirrus Logic, Inc. Memory controller for decoding and displaying compressed video data
JPH08214312A (ja) * 1994-10-26 1996-08-20 General Instr Corp Of Delaware ビデオ・デコンプレッション・プロセッサのためのシンタックスパーサ

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR2382049A1 (fr) * 1977-02-23 1978-09-22 Thomson Csf Processeur pour terminal informatique utilisant un recepteur de television
KR920006283B1 (ko) * 1988-02-19 1992-08-03 미쯔비시덴끼 가부시끼가이샤 디지탈신호 처리방식
FR2666189B1 (fr) * 1990-08-22 1992-12-04 Sgs Thomson Microelectronics Systeme de reglage des filtres de traitement du signal video composite dans un appareil secam multistandard.
US5706290A (en) * 1994-12-15 1998-01-06 Shaw; Venson Method and apparatus including system architecture for multimedia communication
FR2696068B1 (fr) * 1992-09-18 1994-12-30 Sgs Thomson Microelectronics Circuit d'identification de standard télévisé.
DE69329332T2 (de) * 1993-05-26 2001-02-22 St Microelectronics Srl Fernsehbilderdekodierarchitektur zur Ausführung eines 40 ms-Prozessalgorithmus in HDTV
US5608459A (en) * 1993-08-13 1997-03-04 Texas Instruments Incorporated Video data decoder having motion compensation and image memory circuitry on single substrate
TW377935U (en) * 1994-08-10 1999-12-21 Gen Instrument Corp Dram mapping for a digital video decompression processor
US5774206A (en) * 1995-05-10 1998-06-30 Cagent Technologies, Inc. Process for controlling an MPEG decoder
WO1996036178A1 (en) * 1995-05-10 1996-11-14 Cagent Technologies, Inc. Multiple sequence mpeg decoder and process for controlling same
US5818967A (en) * 1995-06-12 1998-10-06 S3, Incorporated Video decoder engine

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5461679A (en) * 1991-05-24 1995-10-24 Apple Computer, Inc. Method and apparatus for encoding/decoding image data
JPH08214312A (ja) * 1994-10-26 1996-08-20 General Instr Corp Of Delaware ビデオ・デコンプレッション・プロセッサのためのシンタックスパーサ
WO1996020567A1 (en) * 1994-12-23 1996-07-04 Cirrus Logic, Inc. Memory controller for decoding and displaying compressed video data

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2013149057A1 (en) * 2012-03-30 2013-10-03 Samplify Systems, Inc. Data compression for direct memory access transfers
US9026568B2 (en) 2012-03-30 2015-05-05 Altera Corporation Data compression for direct memory access transfers

Also Published As

Publication number Publication date
JPH10248067A (ja) 1998-09-14
EP0847204A3 (en) 2000-03-01
KR19980063746A (ko) 1998-10-07
JP4138056B2 (ja) 2008-08-20
TW366666B (en) 1999-08-11
EP0847204A2 (en) 1998-06-10
US5920353A (en) 1999-07-06

Similar Documents

Publication Publication Date Title
KR100574415B1 (ko) 다중 표준 압축 해제 및/또는 압축 장치
US6668019B1 (en) Reducing the memory required for decompression by storing compressed information using DCT based techniques
US5870087A (en) MPEG decoder system and method having a unified memory for transport decode and system controller functions
US6005624A (en) System and method for performing motion compensation using a skewed tile storage format for improved efficiency
US6823014B2 (en) Video decoder with down conversion function and method for decoding video signal
US5768537A (en) Scalable MPEG2 compliant video encoder
US6111913A (en) Macroblock bit regulation schemes for video encoder
US5986711A (en) MPEG decoding with a reduced RAM requisite by ADPCM recompression before storing MPEG decompressed data, optionally after a subsampling algorithm
CA2151023A1 (en) Method of coding/decoding of a data stream
JPH104550A (ja) Mpeg−2復号方法及びmpeg−2ビデオ復号器
EP0827344A2 (en) Video decoder
US20080123748A1 (en) Compression circuitry for generating an encoded bitstream from a plurality of video frames
JP2000050263A (ja) 画像符号化並びに復号化装置及びこれを用いた撮像装置
JPH114440A (ja) ディジタル・ビデオ符号化システム
US7092446B2 (en) Compression-encoded data decoding apparatus
JP2898413B2 (ja) 所要メモリ容量の低減化を伴う圧縮ビデオデータ流の復号化及び符号化のための方法
US7460600B2 (en) MPEG video decoding system
US20030147468A1 (en) Image data coding apparatus capable of promptly transmitting image data to external memory
US6108381A (en) Tree search vector quantization for compressing digital video data to be stored in buffers and MPEG decoder and SQTV processor with reduced memory requisites
JP3078990B2 (ja) 低遅延モード画像復号方法
JP3141149B2 (ja) 画像符号化装置
JPH07107464A (ja) 画像符号化装置および復号化装置
JPH07336681A (ja) 画像変換装置
AU2003200519B2 (en) Method for Converting Digital Signal and Apparatus for Converting Digital Signal

Legal Events

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

Payment date: 20160411

Year of fee payment: 11

EXPY Expiration of term