KR101065546B1 - 하드웨어 다중 표준 비디오 디코더 장치 - Google Patents

하드웨어 다중 표준 비디오 디코더 장치 Download PDF

Info

Publication number
KR101065546B1
KR101065546B1 KR1020087016391A KR20087016391A KR101065546B1 KR 101065546 B1 KR101065546 B1 KR 101065546B1 KR 1020087016391 A KR1020087016391 A KR 1020087016391A KR 20087016391 A KR20087016391 A KR 20087016391A KR 101065546 B1 KR101065546 B1 KR 101065546B1
Authority
KR
South Korea
Prior art keywords
video
hardware
video stream
decoding
blocks
Prior art date
Application number
KR1020087016391A
Other languages
English (en)
Other versions
KR20080082676A (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
Priority claimed from US11/299,057 external-priority patent/US9204158B2/en
Priority claimed from US11/299,055 external-priority patent/US9210437B2/en
Application filed by 엔비디아 코포레이션 filed Critical 엔비디아 코포레이션
Publication of KR20080082676A publication Critical patent/KR20080082676A/ko
Application granted granted Critical
Publication of KR101065546B1 publication Critical patent/KR101065546B1/ko

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/44Decoders specially adapted therefor, e.g. video decoders which are asymmetric with respect to the encoder
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)

Abstract

하드웨어 다중 표준 비디오 디코더 장치가 개시된다. 커맨드 파서가 비디오 스트림에 액세스하여 비디오 스트림을 인코딩하는 데 사용되는 비디오 인코딩 표준을 식별한다. 복수의 하드웨어 디코딩 블록이 비디오 스트림의 디코딩과 연관된 동작들을 수행하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩한다.
Figure R1020087016391
하드웨어 다중 표준 비디오 디코더 장치, 비디오 스트림, 인코딩, 하드웨어 디코딩 블록, 커맨드 파서

Description

하드웨어 다중 표준 비디오 디코더 장치{A HARDWARE MULTI-STANDARD VIDEO DECODER DEVICE}
본 발명은 비디오 디코딩에 관한 것이다. 구체적으로, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치에 관한 것이다.
디지털 비디오 스트림들은 통상적으로 많은 상이한 인코딩 표준 중 하나를 이용하여 인코딩된다. 예를 들어, 디지털 비디오 스트림은 보다 적은 비트를 필요로 하는 데이터 포맷으로의 변환을 위해 압축될 수 있다. 이러한 압축은 손실이 없어서, 디코딩시 원래의 비디오 스트림이 재생될 수 있거나, 손실이 많아서, 원래의 비디오 스트림의 정확한 사본이 재생될 수 없지만, 압축된 데이터의 디코딩은 보다 효율적이다.
현재 다수의 비디오 인코딩 표준이 존재하며, 새로운 표준들이 종종 출현하고 있다. 현재의 비디오 인코딩 표준들의 예는 JPEG(Joint Photographic Experts Group), MPEG(Moving Picture Experts Group), MPEG-2, MPEG-3, MPEG-4, H.263, H.263+, H.264 및 리얼 비디오 및 윈도우 미디어와 같은 독점 표준들을 포함한다. 디지털 비디오의 이익들을 충분히 실현하기 위하여, 사용자는 모든 일반 인코딩 표준들을 디코딩할 수 있는 디코더들에 대한 액세스를 필요로 한다.
비디오 스트리밍의 많은 중요한 이용은 실시간 통신과 관련된다. 예를 들어, 비디오 전화는 대응하는 오디오 신호와 동기화할 수 있도록 하기 위해 실시간 비디오 디코딩을 필요로 한다. 따라서, 사용자들에게 실시간 비디오 디코딩을 제공하여 실시간 통신과 관련된 응용들을 제공하는 것도 바람직하다. 더욱이, 사용자가 다수의 비디오 스트림의 디코딩을 필요로 하는 상황이 발생한다. 예를 들어, 현재 비디오 전화 호 상에 있는 사용자는 그가 대화하고 있는 사람으로부터 첨부 이미지를 수신한다. 이 예에서는, 대화에 필요한 이미지가 디코딩되는 동안, 비디오 전화 스트림의 실시간 디코딩이 유지되어야 한다.
현재, 비디오 디코딩은 2개의 이용 가능 방법, 즉 단일 표준 하드웨어 비디오 디코더들 및 하나 이상의 비디오 표준에 따라 비디오 스트림을 디코딩할 수 있는 소프트웨어 기반 프로그래머블 코어들 중 하나를 이용하여 수행된다. 단일 표준 하드웨어 비디오 디코더들은 실시간 디코딩 기능을 제공할 수 있다. 그러나, 특정 인코딩 표준을 이용하여 인코딩된 비디오 스트림을 디코딩하기 위하여, 사용자는 그 특정 표준을 위한 하드웨어 비디오 디코더를 구비해야 한다. 널리 이용되는 다수의 비디오 인코딩 표준이 존재하므로, 사용자는 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 디지털 비디오에 액세스하기 위해 많은 상이한 단일 표준 하드웨어 비디오 디코더를 필요로 할 것이며, 이는 사용자에게 상당한 재정 지출을 요구한다. 더욱이, 통상의 컴퓨터 시스템들은 다수의 단일 표준 하드웨어 비디오 디코더를 추가할 수 있는 능력을 갖지 못하여, 사용자가 액세스할 수 있는 비디오 스트림들의 수를 더 제한한다.
현재의 소프트웨어 기반 프로그래머블 코어 비디오 디코더들은 하나 이상의 비디오 인코딩 표준을 이용한 디코딩을 제공하는 데 이용될 수 있다. 프로그래머블 코어 비디오 디코더는 디코딩 기능을 가속화하기 위한 하드웨어 가속을 포함할 수 있다. 그러나, 프로그래머블 코어는 모든 디코딩을 수행한다. 프로그래머블 코어 비디오 디코더들은 통상적으로 높은 처리 오버헤드를 갖고, 덜 효율적이고, 단일 표준 하드웨어 비디오 디코더보다 훨씬 많은 전력을 소비한다. 더욱이, 프로그래머블 코어 비디오 디코더들은, 디코딩이 전체 컴퓨터 시스템의 처리 요건에 종속하므로, 실시간 비디오 디코딩을 일관되게 제공할 수 없다.
따라서, 현재 이용 가능한 디지털 비디오 디코더들은 널리 이용되는 다수의 비디오 인코딩 표준을 위한 실시간 비디오 디코딩을 제공할 수 없다. 또한, 현재 이용 가능한 디지털 비디오 디코더들은 널리 이용되는 다수의 비디오 인코딩 표준을 이용하여 인코딩된 다수의 스트림에 대한 동시 비디오 디코딩을 제공할 수 없다. 더욱이, 현재 이용 가능한 디지털 비디오 디코더들은 적어도 하나의 비디오 스트림이 실시간 디코딩을 필요로 하는 다수의 비디오 스트림을 동시에 디코딩할 수 없다. 따라서, 종래 기술의 한계를 극복하는 새로운 디지털 비디오 디코더가 필요하다. 새로운 디지털 비디오 디코더는 다수의 상이한 비디오 표준을 위한 실시간 비디오 디코딩 기능을 제공해야 한다. 새로운 디지털 비디오 디코더는 또한, 복수의 상이한 비디오 표준을 이용하여 인코딩된 복수의 비디오 스트림에 대한 동시 비디오 디코딩 기능을 제공해야 한다.
<발명의 요약>
본 발명의 실시예들은 복수의 상이한 비디오 인코딩 표준을 위한 비디오 디코딩 기능을 제공하기 위한 하드웨어 다중 표준 비디오 디코더 장치를 제공한다. 본 발명의 실시예들은 복수의 비디오 인코딩 표준의 각각을 위한 실시간 디코딩을 제공할 수 있다.
일 실시예에서, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치를 제공한다. 하드웨어 다중 표준 비디오 디코더 장치의 커맨드 파서가 비디오 스트림에 액세스하고 비디오 스트림을 인코딩하는 데 이용된 비디오 인코딩 표준을 식별하도록 동작할 수 있다. 하드웨어 다중 표준 비디오 디코더 장치는 또한 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록을 포함하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이다. 일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 인쇄 회로 기판에 결합된 집적 회로 내에 구현되며, 인쇄 회로 기판은 인쇄 회로 기판을 컴퓨터 시스템에 착탈 가능하게 결합하기 위한 접속기에 결합된다.
일 실시예에서, 커맨드 파서는 비디오 스트림을 인코딩하는 데 사용된 제1의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 복수의 하드웨어 디코딩 블록의 제1 서브세트를 활성화하도록 동작할 수 있으며, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다. 일 실시예에서, 커맨드 파서는 비디오 스트림의 인코딩에 사용된 제2의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 복수의 하드웨어 디코딩 블록의 제2 서브세트를 활 성화하도록 동작할 수 있으며, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.
일 실시예에서, 복수의 하드웨어 디코딩 블록은 다중 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 일 실시예에서, 커맨드 파서는 비디오 스트림의 어떠한 데이터도 다중 스테이지 매크로블록 레벨 파이프라인의 하나의 스테이지에서 수신되지 않는 경우에 이 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작할 수 있다. 일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 비디오 스트림을 완전히 디코딩한 후에 메모리 유닛에 액세스한다.
일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 디코딩된 비디오 스트림에 대한 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함한다. 일 실시예에서, 커맨드 파서는 커맨드 파서에서 수신된 비디오 스트림이 디코딩된 비디오 스트림인 경우에 복수의 하드웨어 디코딩 블록을 비활성화하도록 동작하여, 하드웨어 후처리 블록이 디코딩된 비디오 스트림에 대해 후처리 동작을 수행하게 할 수 있다. 일 실시예에서, 하드웨어 후처리 블록은 필터를 포함한다.
다른 실시예에서, 본 발명은 비디오 스트림을 디코딩하기 위한 방법을 제공하는데, 이 방법은 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현된다. 비디오 스트림이 액세스된다. 비디오 스트림을 인코딩하는 데 사용된 비디오 표준이 식별된다. 비디오 스트림을 디코딩하는 데 사용된 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트가 결정되며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디 오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다.
일 실시예에서, 복수의 레지스터는 메모리 표면 포인터 레지스터 및 프레임 레벨 파라미터 레지스터를 포함한다. 일 실시예에서, 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치는 적어도 하나의 디코딩된 비디오 스트림 상에 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함한다.
일 실시예에서, 복수의 비디오 스트림은 적어도 하나의 디지털 정지 이미지 스트림 및 디지털 영화 스트림을 포함한다. 본 실시예에서, 복수의 비디오 스트림의 부분들은 디지털 정지 이미지 스트림 및 디지털 영화 스트림의 매크로블록들이다. 다른 실시예에서, 복수의 비디오 스트림은 복수의 디지털 영화 스트림을 포함한다. 본 실시예에서, 복수의 비디오 스트림의 부분들은 복수의 디지털 영화 스트림의 매크로블록들이다.
다른 실시예에서, 본 발명은 복수의 비디오 스트림을 디코딩하기 위한 방법을 제공하는데, 이 방법은 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현된다. 복수의 비디오 스트림이 액세스된다. 비디오 스트림들을 인코딩하는 데 사용된 비디오 표준들이 식별된다. 비디오 스트림들을 디코딩하는 데 사용된 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트들이 결정되며, 복수의 하드웨어 디코딩 블록의 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비 디오 스트림들을 디코딩하도록 동작할 수 있다. 복수의 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다. 일 실시예에서, 하드웨어 디코딩 블록들의 복수의 서브세트는 활성화되며, 따라서 복수의 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.
대체로, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치를 개시한다. 커맨드 파서가 비디오 스트림에 액세스하여 비디오 스트림을 인코딩하는 데 사용되는 비디오 인코딩 표준을 식별한다. 복수의 하드웨어 디코딩 블록이 비디오 스트림의 디코딩과 연관된 동작들을 수행하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩한다.
본 발명은 동일 참조 번호가 동일한 요소를 나타내는 첨부 도면들에서 제한적이 아니라 예시적으로 도시된다.
도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 기본 컴포넌트들의 개략도이다.
도 2A는 본 발명의 일 실시예에 따라 인쇄 회로 기판 상에 구현된 예시적인 하드웨어 비디오 디코더 카드의 도면이다.
도 2B는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치를 포함하는 예시적인 아키텍처의 도면이다.
도 3은 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치 의 내부 컴포넌트들을 나타내는 블록도이다.
도 4는 본 발명의 일 실시예에 따른 예시적인 하드웨어 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 블록도이다.
도 5는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 비디오 스트림 디코딩 방법의 흐름도이다.
도 6은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 도면이다.
도 7A 및 7B는 본 발명의 일 실시예에 따른 다수의 비디오 스트림의 예시적인 인터리빙된 부분들을 나타내는 도면들이다.
도 8은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 다수의 비디오 스트림을 디코딩하기 위한 방법의 흐름도이다.
도 9는 본 발명의 일 실시예에 따른, 비디오 스트림의 무질서(out-of-order) 매크로블록들을 처리하기 위한 방법의 흐름도이다.
도 10A 및 10B는 본 발명의 일 실시예에 따른 프레임들의 매크로블록들의 예시적인 회전의 도면들이다.
도 11은 본 발명의 일 실시예에 따른 프레임의 매크로블록들을 회전시키기 위한 방법의 흐름도이다.
이제, 첨부된 도면들에 예들이 도시된 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명은 바람직한 실시예들과 관련하여 설명되지만, 이들은 본 발명을 이들 실시예로 한정하는 것을 의도하지 않는다는 것을 이해할 것이다. 이와 달리, 본 발명은 첨부된 청구범위에 의해 정의되는 바와 같은 발명의 사상 및 범위 내에 포함될 수 있는 대안들, 변형들 및 균등물들을 커버하는 것을 의도한다. 또한, 아래의 본 발명의 실시예들의 상세한 설명에서, 다수의 특정 상세는 본 발명의 충분한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이러한 특정 상세들 없이도 실시될 수 있음을 이 분야의 전문가는 인식할 것이다. 다른 예에서, 공지된 방법들, 프로시저들, 컴포넌트들 및 회로들은 본 발명의 실시예들의 양태들을 필요 없이 모호하게 하지 않도록 상세히 설명되지 않는다.
기호 및 명명법
이어지는 상세한 설명의 소정 부분들은 프로시저, 단계, 논리 블록, 처리, 및 컴퓨터 메모리 내의 데이터 비트들 상의 동작들의 다른 심벌 표현과 관련하여 제공된다. 이러한 설명 및 표현들은 데이터 처리 분야의 전문가들이 그 분야의 다른 전문가들에게 그들의 연구 내용을 전달하기 위해 사용하는 수단이다. 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기서 그리고 일반적으로 원하는 결과를 유도하는 단계들 또는 명령들의 일관된 시퀀스인 것으로 간주된다. 단계들은 물리량들의 물리적 조작을 필요로 하는 것들이다. 일반적으로, 꼭 필요한 것은 아니지만, 이러한 양들은 컴퓨터 시스템에서 저장, 전송, 조합, 비교 및 조작될 수 있는 전기 또는 자기 신호들의 형태를 갖는다. 때때로, 일반적인 이용의 이유로, 이러한 신호들을 비트, 값, 요소, 심벌, 문자, 용어, 숫자 등으로 지칭하는 것이 편리한 것으로 입증되었다.
그러나, 이들 및 유사한 용어들 모두는 적절한 물리량들과 연관되어야 하며, 단지 이러한 양들에 적용되는 편리한 라벨들이라는 점을 기억해야 한다. 아래의 설명으로부터 명백하듯이, 특별히 달리 언급되지 않는 한, 본 발명 전반에서 "식별" 또는 "액세스" 또는 "수행" 또는 "디코딩" 또는 "활성화" 또는 "비활성화" 또는 "결정" 또는 "처리" 또는 "수신" 또는 "버퍼링" 또는 "배열" 또는 "전송" 또는 "파싱" 또는 "인터리빙" 또는 "회전" 또는 "재배치" 또는 "저장" 등과 같은 용어들을 이용한 설명들은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 하드웨어 다중 표준 비디오 디코더 장치(150)), 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(예를 들어, 도 6의 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(600)), 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260)), 회전 엔진(예를 들어, 도 4의 회전 엔진(450)), 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내에 물리(전자) 양들로서 표현된 데이터를 조작하여, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 저장, 전송 또는 표시 장치들 내에 물리량들로 유사하게 표현되는 다른 데이터로 변환하는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 지칭한다는 것을 이해한다.
컴퓨터 시스템 플랫폼
도 1은 본 발명의 실시예들이 실시될 수 있는 예시적인 컴퓨터 시스템을 나타낸다. 일반적으로, 컴퓨터 시스템(100)은 정보를 통신하기 위한 버스(110), 버스(110)에 결합되어 정보 및 명령들을 처리하기 위한 프로세서(101), 버스(110)에 결합되어 프로세서(101)에 대한 정보 및 명령들을 저장하기 위한, 랜덤 액세스 메모리(RAM)로도 지칭되는 휘발성 메모리(102), 및 버스(110)에 결합되어 프로세스(101)에 대한 정적 정보 및 명령들을 저장하기 위한, 여기서 판독 전용 메모리(ROM)로도 지칭되는 비휘발성 메모리(103)를 포함한다.
일 실시예에서, 컴퓨터 시스템(100)은 버스(110)에 결합되어 정보 및 명령들을 저장하기 위한 자기 또는 광 디스크 및 디스크 드라이브와 같은 광학 데이터 저장 장치(104)를 옵션으로 포함한다. 일 실시예에서, 컴퓨터 시스템(100)은 버스(110)에 결합되어 컴퓨터 사용자에게 정보를 표시하기 위한 표시 장치(105)와 같은 사용자 출력 장치, 버스(110)에 결합되어 정보 및 커맨드 선택들을 프로세서(101)에 통신하기 위한 영숫자 및 기능 키들을 포함하는 영숫자 입력 장치(106)와 같은 사용자 입력 장치, 및/또는 버스(110)에 결합되어 사용자 입력 정보 및 커맨드 선택들을 프로세서(101)에 통신하기 위한 커서 제어 장치(107)와 같은 사용자 입력 장치를 옵션으로 포함한다. 또한, 옵션인 입출력(I/O) 장치(108)가 예를 들어 네트워크 상에 컴퓨터 시스템(100)을 결합하는 데 사용된다.
일 실시예에서, 컴퓨터 시스템(100)은 또한, 다수의 비디오 인코딩 표준 중 하나를 이용하여 인코딩된 비디오 스트림을 디코딩하기 위한, 여기서 디코더 장치(150)로도 지칭되는 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함한다. 디코더 장치(150)는 다수의 비디오 인코딩 표준에 의해 요구되는 디코딩 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록을 포함한다. 디코더 장치(150)는 디지털 정지 이미지들 및 디지털 영화들을 포함하는 비디오 인코딩 표준들의 임의 조합에 따라 비디오를 디코딩하도록 구성될 수 있다는 것을 이해해야 한다. 예를 들어, 디코더 장치(150)는 JPEG, MPEG-4, H.263, H.263+, H.264, 및 윈도우 미디어(WMV9/VC-1) 포맷들 중 임의 포맷을 이용하여 인코딩된 비디오를 디코딩하도록 구성될 수 있다.
디코더 장치(150)는 개별 컴포넌트, 접속기(예를 들어, AGP 슬롯, PCI-Express 슬롯 등)를 통해 컴퓨터 시스템(100)에 결합되도록 설계된 개별 그래픽 카드, 개별 집적 회로 다이(예를 들어, 마더 보드 상에 직접 실장됨)로서, 또는 컴퓨터 시스템 칩셋 컴포넌트의 집적 회로 다이 내에 포함된 통합 디코더 장치로서 구현될 수 있다는 것을 이해해야 한다. 또한, 디코더 장치(150)의 데이터 저장을 위해 로컬 그래픽 메모리가 포함될 수 있다.
도 2A는 본 발명의 일 실시예에 따라 인쇄 회로 기판 상에 구현된 예시적인 하드웨어 비디오 디코더 카드(200)의 도면을 나타낸다. 하드웨어 비디오 디코더 카드(200)는 인쇄 회로 기판(PCB; 210), 집적 회로(IC) 칩(220), 데이터 라인(225) 및 접속기(230)를 포함한다. IC 칩(220)은 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함한다. 접속기(230)는 컴퓨터 시스템의 접속기(예를 들어, AGP 슬롯, PCI-Express 슬롯 등)를 통해 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100))에 결합하도록 구성된다. 데이터 라인(225)은 컴퓨터 시스템과 IC 칩(220) 간에 데이터(예를 들어, 비트 스트림)를 통신하기 위한 것이다.
도 2B는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함하는 예시적인 아키텍처(250)의 도면을 나타낸다. 아키텍처(250)는 마이크로코드 엔진(260), 하드웨어 다중 표준 비디오 디코더 장치(150) 및 메모리(270)를 포함한다. 일 실시예에서, 마이크로코드 엔진(260)은 하드웨어 다중 표준 비디오 디코더 장치(150)의 동작을 제어한다. 마이크로코드 엔진(260)은 기계 명령과 하드웨어 장치 디코더(150) 사이의 번역 계층으로 동작하는, 하드웨어 다중 표준 비디오 디코더 장치(150)가 수행하여야 하는 동작들을 포함한다. 일 실시예에서, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 마이크로코드 엔진(260)에서 행해진다. 메모리(270)는 디코더 장치(150)에 의해 수신된 비디오 스트림들에 대해 디코딩 및 후처리 동작들을 수행하는 데 사용된다. 동작 메모리(270)의 일 실시예가 도 3의 메모리(330)에서 설명된다.
도 2B를 참조하면, 일 실시예에서, 본 발명은 마이크로코드 엔진(260)에서 매크로블록들을 재배열하는 것을 제공한다. 후술하는 바와 같이, 디코더 장치(150)는 루프내 디블록킹(예를 들어, 루프내 디블록킹 필터(440)에서) 및 루프외 디블록킹 및/또는 디링잉(예를 들어, 루프외 필터(442)에서)과 같은 상이한 후처리 동작들을 지원한다. 다양한 실시예에서, 루프내 디블록킹은 매크로블록들이 래스터 스캔 순서로 루프내 디블록킹 필터에서 수신되는 것을 요구한다. 그러나, H.264와 같은 소정의 비디오 표준들은 비 래스터 스캔 순서로의 매크로블록들의 송수신을 지원한다. 따라서, 본 발명은 비 래스터 스캔 순서로의 매크로블록들의 송수신을 지원하는 비디오 표준들을 위한 루프내 디블록킹을 지원하기 위하여 래스터 스캔 순서로 매크로블록들을 재배열하는 것을 제공한다.
일 실시예에서, 마이크로코드 엔진(260)에서 전처리 동작들이 수행된다. 일 실시예에서, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 마이크로코드 엔진(260)에서 수행된다. 마이크로코드 엔진(260)은 매크로블록들을 하드웨어 디코더 장치(150)로 전송하기 전에 이들을 배열하도록 구성된다. 마이크로코드 엔진(260)은 압축 데이터의 일 프레임을 버퍼링한다. 일 실시예에서, 마이크로코드 엔진(260)은 실행 길이 인코딩된 압축 데이터의 일 프레임을 버퍼링한다. 일 실시예에서, 마이크로코드 엔진(260)은 착신 비트 스트림을 파싱한 후, VLD를 수행한다. 마이크로코드 엔진(260)이 무질서 매크로블록들을 검출하는 경우, 데이터를 버퍼링하고, 모든 매크로블록이 수신되기를 기다린다. 이어서, 마이크로코드 엔진(260)은 매크로블록들을 래스터 스캔 순서로 배열하여, 이들을 하드웨어 디코더 장치(150)로 전송한다.
매크로블록들이 여전히 압축 데이터로 있는 동안 매크로블록들을 버퍼링함으로써, 마이크로코드 엔진(260)은 디코딩된 비디오 데이터보다 훨씬 적은 실행 길이 인코딩된 압축 데이터의 최대 일 프레임만 버퍼링하면 된다. 또한, 압축 매크로블록들의 버퍼링은 또한 전력을 절약한다. 무선을 통해 수신된 비디오 스트림들은 또한 많은 에러가 발생한다. 마이크로코드 엔진(260)에 대한 비트 스트림 파싱의 파티셔닝은 또한 에러 복구를 향상시키는 이점을 갖는다.
하드웨어 다중 표준 비디오 디코더 장치 구조
도 3은 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치(150)의 내부 컴포넌트들을 나타내는 도면을 도시한다. 도 3에 도시된 바와 같이, 디코더 장치(150)는 커맨드 파서(305), 복수의 하드웨어 디코딩 블록(310 내지 318), 하드웨어 후처리 블록(320) 및 메모리(330)를 포함한다. 디코더 장치(150)는 다수의 비디오 인코딩 표준을 디코딩할 수 있다.
커맨드 파서(305)는 비디오 스트림(302)(예를 들어, 비트 스트림)에 액세스하기 위한 것이다. 비디오 스트림(302)은 다수의 비디오 인코딩 표준 중 하나에 따라 인코딩된 압축 비디오 스트림이다. 비디오 스트림(302)은 디지털 정지 이미지 데이터(예를 들어, JPEG 인코딩됨) 또는 디지털 영화 데이터(예를 들어, MPEG-4)를 포함할 수 있다는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림(302)은 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))으로부터 수신된다. 커맨드 파서(305)는 비디오 스트림(302)을 인코딩하는 데 사용된 비디오 인코딩 표준을 식별한다. 일 실시예에서, 커맨드 파서(305)가 비디오 스트림(302)에 액세스하기 전에, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 수행된다. 비트 스트림 파싱 및 VLD는 호스트 CPU(예를 들어, 도 1의 프로세서(101)) 또는 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))에 의해 수행될 수 있다. 커맨드 파서(305)는 또한 클럭 사이클들을 제어함으로써 디코더 장치(150)를 통한 데이터의 이동을 제어한다.
복수의 하드웨어 디코딩 블록(310 내지 318)은 상기 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 것이다. 하드웨어 디코딩 블록들(310 내지 318)은 비디오 디코더(150) 내에서 구현되는 비디오 표준들에 따라 비디오 스트림들을 디코딩하는 데 필요한 상이한 디코딩 기능들을 나타낸다는 것을 이해해야 한다. MPEG-4와 같은 비디오 인코딩 표준들은 비디오 스트림을 디코딩하기 위해 특정 동작들이 수행될 것을 요구하며, 따라서 모든 MPEG-4 디코더는 MPEG-4 비디오 스트림들을 디코딩할 수 있게 된다. 다양한 표준에 따라 디코딩을 수행하는 데 필요한 동작들은 이 분야의 전문가에게 공지되어 있다는 것을 이해해야 한다.
일 실시예에서, 디코더 장치(150)의 하드웨어 디코딩 블록들은 매크로블록 레벨로(예를 들어, 8x8 픽셀 매크로블록) 동작들을 수행하도록 구성된다. 그러나, 디코더 장치(150)는 프레임 레벨과 같은 다른 차원의 레벨들로 동작들을 수행하는 하드웨어 디코딩 블록들을 포함할 수 있다는 것을 이해해야 한다.
하드웨어 디코딩 블록들(310-318)의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이다. 예를 들어, 제1 예시적인 비디오 표준은 비디오 스트림의 디코딩시 하드웨어 디코딩 블록들(312, 316)의 사용을 요구한다. 제2 예시적인 비디오 표준은 비디오 스트림의 디코딩시 하드웨어 디코딩 블록들(310, 312, 314, 318)의 사용을 요구한다. 따라서, 본 발명의 다양한 실시예에서, 비디오 스트림을 디코딩하는 데 필요한 하드웨어 디코딩 블록들만이 식별된 비디오 표준을 이용하여 인코딩된 비디오 스트림의 디코딩시에 사용된다.
일 실시예에서, 커맨드 파서(305)는 수신된 비디오 스트림의 디코딩에 필요한 하드웨어 디코딩 블록들만을 활성화하도록 동작할 수 있으며, 따라서 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다. 예를 들어, 제1의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 하드웨어 디코딩 블록들의 제1 서브세트(예를 들어, 하드웨어 디코딩 블록들 312, 316)가 활성화되며, 따라서 비디오 스트림의 디코딩에 관련되지 않은 하드웨어 디코딩 블록들(예를 들어, 하드웨어 디코딩 블록들 310, 314, 318)은 활성화되지 않는다. 다른 예에서, 제2의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 하드웨어 디코딩 블록들의 제2 서브세트(예를 들어, 하드웨어 디코딩 블록들 310, 312, 314, 318)가 활성화되고, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록(예를 들어, 하드웨어 디코딩 블록 316)은 활성화되지 않는다. 일 실시예에서, 커맨드 파서(305)는 활성화된 유일한 디코더 장치(150)의 컴포넌트이다. 하드웨어 디코딩 블록들은 식별된 비디오 표준 및 데이터 흐름에 따라 필요에 따라 활성화된다.
일 실시예에서, 디코더 장치(150)의 하드웨어 디코딩 블록들은 다중 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 도 3에 도시된 바와 같이, 디코더 장치(150)는 하드웨어 디코딩 블록들(310, 312)을 포함하는 파이프라인 스테이지 1, 및 하드웨어 디코딩 블록들(314, 316, 318)을 포함하는 파이프라인 스테이지 2를 포함하는 3 스테이지 매크로블록 레벨 파이프라인으로 구현된다. 일 실시예에서, 커맨드 파서(305)는 비디오 스트림(302)의 매크로블록을 파이프라인 스테이지 1의 하드웨어 디코딩 블록들로 지향시킨다. 일 실시예에서, 둘 이상의 매크로블록이 파이프라인 스테이지 1에 위치할 수 있는 반면, 파이프라인 스테이지 2 및 3은 하나의 매크로블록만이 위치하는 것으로 제한된다. 일 실시예에서, 하드웨어 디코딩 블록들(312, 316, 318)은 잔여 데이터 경로 내에 있고, 하드웨어 디코딩 블록들(310, 314)은 예측 데이터 경로 내에 있다. 일 실시예에서, 잔여 데이터 경로는 에러 또는 차분 데이터를 처리하며, 예측 경로는 이전 프레임 또는 매크로블록과 연관된 데이터에 액세스한다.
일 실시예에서, 커맨드 파서(305)는 상기 비디오 스트림의 어떠한 데이터도 다중 스테이지 매크로블록 레벨 파이프라인의 일 스테이지에서 수신되지 않는 경우에 상기 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작할 수 있다. 예를 들어, 비디오 스트림(302)의 디코딩시, 비디오 스트림(302)의 최종 데이터가 파이프라인 스테이지 1을 떠나고, 파이프라인 스테이지 1에 어떠한 데이터도 수신되지 않을 때, 파이프라인 스테이지 1의 모든 하드웨어 디코딩 블록은 비활성화된다. 따라서, 비디오 스트림(302)과 연관된 비디오 표준을 위해 하드웨어 디코딩 블록들이 필요한 경우에도 파이프라인 스테이지의 모든 하드웨어 디코딩 블록을 비활성화함으로써 추가적인 전력 절감이 달성된다.
일 실시예에서, 비디오 스트림(302)은 완전히 디코딩될 때까지 메모리(330)로 들어가거나 그 밖으로 나오지 않는다. 메모리(330)는 외부 메모리 유닛(예를 들어, 도 1의 휘발성 메모리(102) 또는 비휘발성 메모리(103)) 또는 디코더 장치(150)의 내장 메모리 유닛일 수 있다. 비디오 스트림(302)을 완전히 디코딩한 후까지 메모리(330)에 액세스하지 않음으로써, 디코더 장치(150)는 더 적은 전력을 사용한다.
일 실시예에서, 디코더 장치(150)는 디코딩된 비디오 스트림에 대해 후처리 동작을 수행하기 위한 하드웨어 후처리 블록(320)을 더 포함한다. 일 실시예에서, 하드웨어 후처리 블록(320)은 디블록킹 필터를 포함한다. 디블록킹 필터는 루프내 디블록킹 필터 또는 루프외 디블록킹 및/또는 디링잉 필터일 수 있다는 것을 이해해야 한다. 루프내 디블록킹 필터는 메모리(330)에 액세스하기 전에 디블록킹 동작들을 수행한다. 루프외 디블록킹 및 디링잉 필터는 메모리(330)로부터 액세스된 데이터에 대해 디블록킹 및 디링잉 동작을 수행한다. 그러나, 하드웨어 후처리 블록(320)은 임의 타입의 후처리 동작을 수행할 수 있다는 것을 이해해야 한다. 더욱이, 다수의 후처리 동작을 수행하기 위한 임의 수의 하드웨어 후처리 블록들(320)이 존재할 수 있다.
일 실시예에서, 커맨드 파서(305)는 비디오 스트림(302)이 디코딩된 비디오 스트림인 경우에 모든 하드웨어 디코딩 블록을 비활성화하도록 동작할 수 있으며, 따라서 하드웨어 후처리 블록(320)은 디코딩된 비디오 스트림에 대해 후처리 동작을 수행할 수 있게 된다. 즉, 디코더 장치(150)는 하드웨어 후처리 장치로서만 사용될 수도 있다. 디코딩된 비디오 스트림이 디코더 장치(150)에서 수신되는 경우, 모든 하드웨어 디코딩 블록이 비활성화되고, 디코딩된 비디오 스트림에 대한 후처리 동작이 수행된다.
도 4는 본 발명의 일 실시예에 따른, 디코더 장치(400)로도 지칭되는 예시적인 하드웨어 다중 표준 비디오 디코더 장치(400)의 내부 컴포넌트들을 나타내는 블록도이다. 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 디코더들 중 어느 하나로서 동작하도록 구성된다. 따라서, 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 표준들 중 어느 하나를 이용하여 인코딩된 비디오 스트림들을 디코딩하는 데 필요한 모든 디코딩 동작을 수행하기 위한 하드웨어 디코딩 블록들을 포함한다. 그러나, 본 발명은 다른 비디오 표준들의 지원에 유연하며, 본 발명은 도 4에 기술된 실시예로 한정되는 것을 의도하지 않는다는 것을 이해해야 한다.
도 4에 도시된 바와 같이, 디코더 장치(400)는 커맨드 파서(402), 복수의 하드웨어 디코딩 블록, 복수의 하드웨어 후처리 블록, 및 메모리(460)를 포함한다. 커맨드 파서(402)는 비디오 스트림(401)(예를 들어, 비트 스트림)에 액세스하기 위한 것이다. 비디오 스트림(401)은 디지털 정지 이미지 데이터(예를 들어, JPEG 인코딩됨) 또는 디지털 영화 데이터(예를 들어, MPEG-4)를 포함할 수 있다는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림(401)은 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))으로부터 수신된다. 비디오 스트림(401)은 다수의 비디오 인코딩 표준 중 하나에 따라 인코딩된 압축 비디오 스트림이다. 커맨드 파서(402)는 비디오 스트립(401)을 인코딩하는 데 사용된 비디오 인코딩 표준을 식별한다. 일 실시예에서, 커맨드 파서(402)가 비디오 스트림(401)에 액세스하기 전에, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 수행된다. 비트 스트림 파싱 및 VLD는 호스트 CPU(예를 들어, 도 1의 프로세서(101)) 또는 마이크로코드 엔진에 의해 수행될 수 있다. 비디오 스트림(401)이 디코더 장치(400)가 디코딩하도록 구성되는 것들과 다른 비디오 표준을 이용하여 인코딩된 경우, 어떠한 디코딩 동작도 수행되지 않는다는 것을 이해해야 한다. 일 실시예에서, 커맨드 파서(402)는 지원되지 않는 표준을 이용하여 인코딩된 비디오 스트림에 대해 디코딩이 수행될 수 없음을 지시하는 지시를 컴퓨터 시스템에 전송한다.
비디오 스트림(401)을 인코딩하는 데 사용된 비디오 표준의 식별시, 커맨드 파서(402)는 비디오 스트림(401)의 매크로블록들을 식별된 비디오 표준에 적합한 하드웨어 디코딩 블록들로 지향시킨다. 일 실시예에서, 커맨드 파서는 식별된 비디오 표준에 적합한 하드웨어 디코딩 블록들을 활성화하며, 따라서 식별된 비디오 표준에 대해 필요하지 않은 하드웨어 디코딩 블록들은 비활성화된다. 커맨드 파서(402)는 또한 클럭 사이클들을 제어함으로써 디코더 장치(400)를 통한 데이터의 이동을 제어한다. 일 실시예에서, 커맨드 파서(402)는 활성화된 유일한 디코더 장치(400)의 컴포넌트이다. 하드웨어 디코딩 블록들은 식별된 비디오 표준 및 데이터 흐름에 따라 필요에 따라 활성화된다.
디코더 장치(400)의 하드웨어 디코딩 블록들은 인트라 예측 모드 엔진(404), 모션 벡터(MV) 예측 엔진(406), 계수(예를 들어, 실행 길이(RD) 또는 역양자화) 엔진(408), AC/DC(예를 들어, AC/DC 예측 또는 역양자화) 예측 엔진(410), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 4x4 역변환 엔진(418), 8x8 역 이산 코사인 변환(IDCT) 엔진(420), IDCT 포맷 변환기 엔진(422), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(436)을 포함한다. 디코더 장치(400)는 멀티플렉서(405, 409, 417, 419, 439) 및 가산기(435)를 더 포함한다. 디코더 장치(400)는 또한 하드웨어 후처리 블록들, 즉 루프내 디블록킹 필터(440), 루프외 필터(442) 및 회전 엔진(450)을 옵션으로 포함한다.
디코더 장치(400)는 잔여 경로 및 예측 경로를 가진 3 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 일 실시예에서, 둘 이상의 매크로블록이 파이프라인 스테이지 1에 위치할 수 있는 반면, 파이프라인 스테이지 2 및 3은 하나의 매크로블록만이 위치하는 것으로 제한된다. 잔여 경로는 계수 엔진(408), AC/DC 예측 엔진(410), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420), IDCT 포맷 변환기 엔진(422) 및 잔여 블록(436)을 포함한다. 예측 경로는 인트라 예측 모드 엔진(404), MV 예측 엔진(406), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 인트라 예측 버퍼(432) 및 예측 샘플(434)을 포함한다.
전술한 바와 같이, 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 표준들 중 어느 하나에 따라 비디오 스트림들을 디코딩하도록 동작할 수 있다. 설명된 하드웨어 디코딩 블록들은 지원되는 표준들에 따라 요구되는 모든 디코딩 동작을 수행한다. 하드웨어 디코딩 블록들의 특정 동작들은 표준들 각각에 기술되므로 이 분야의 전문가에게 공지되고 이해된다. 따라서, 하드웨어 디코딩 블록들의 특정 동작들은 여기에 상세히 설명되지 않는다.
일 실시예에서, MV 파라미터들 및 인트라 예측 파라미터들은 각각 예측 경로에서 MV 예측 엔진(406) 및 인트라 예측 모드 엔진(404)으로 전달된다. 이들 엔진은 프로그래밍된 비디오 표준에 기초하여 실제 모션 벡터들 또는 인트라 예측 모드를 계산하여 이들을 각각 모션 보상 엔진(416) 또는 인트라 예측 엔진(414)으로 전달한다. 모션 보상 엔진(416) 또는 인트라 예측 엔진(414)은 예측 데이터를 계산한다. 일 실시예에서, 모션 보상 엔진(416)은 회전 엔진(415)을 포함한다. 회전 엔진(415)은 참조 프레임을 착신 비디오 프레임과 정렬하도록 회전시키기 위한 것이다. 회전 엔진(415)은 모션 보상 엔진이 비디오 스트림의 인코딩에 사용될 때마다 활성화된다. 한편, 에러 데이터는 계수 엔진(408), AC/DC 예측 엔진(410), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420) 및 IDCT 포맷 변환기 엔진(422)의 필요한 서브세트에서 처리된다.
복구된 에러 데이터는 예측 데이터에 추가된 후, 파이프라인 스테이지 3으로 전달된다. 결과 데이터는 필요한 경우에 더 처리되고, 메모리(460)에 기입되어 표시된다. 루프내 디블록킹 필터는 H264 및 WMV9/VC-1 모드들에서 사용된다. WMV9/VC-1 모드에서, 루프내 디블록킹 필터(440)는 오버랩 평활화 필터를 구현하는 데 사용된다. 루프외 필터(442)는 디코딩된 이미지의 품질을 향상시키기 위해 임의의 비디오 스트림 상에서 사용될 수 있다. 일 실시예에서, 루프외 필터(442)는 디코더 장치(400)의 나머지와 동시에 실행된다. 루프외 필터(442)는 프레임이 메모리(460) 내로 디코딩된 후에 트리거되어야 한다. 디코딩된 이미지는 또한 회전 엔진(450)에서 파이프라인 스테이지 3 내의 메모리(460)에 기입되기 전에 회전될 수 있다.
지원되는 비디오 표준들에 대한 하드웨어 다중 표준 비디오 디코더 장치의 예시적인 동작
아래의 실시예들은 지원되는 비디오 표준들 각각에 대한 디코더 장치(400)의 동작을 설명한다.
JPEG: JPEG 디코딩은 예측 경로의 하드웨어 디코딩 블록들을 필요로 하지 않는데, 이는 JPEG 비디오 스트림들이 디지털 정지 이미지를 재생하기 위한 것이기 때문이다. 따라서, 인트라 예측 모드 엔진(404), MV 예측 엔진(406), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 인트라 예측 버퍼(432) 및 예측 샘플(434)은 JPEG 디코딩에 대해 모두 비활성화된다. 또한, JPEG 디코딩은 4x4 역변환 엔진(418)을 필요로 하지 않으며, 따라서 이는 비활성화된다. 커맨드 파서(402)는 계수 엔진(408), AC/DC 예측 엔진(410), 8x8 IDCT 엔진(420), 십진화 IDCT 엔진(438), IDCT 포맷 변환기 엔진(422) 및 잔여 블록(436)을 활성화한다. 커맨드 파서(402)는 JPEG 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 JPEG 표준에 의해 요구된다는 것을 이해해야 한다.
JPEG 디코딩은 8x8 IDCT 엔진(420) 및 십진화 IDCT 엔진(438)의 사용만을 필요로 한다. 일 실시예에서, 커맨드 파서(402)는 8x8 IDCT 엔진(420) 및 십진화 IDCT 엔진(438) 중 어느 것이 비디오 스트림에 대해 활성화되는지를 식별하도록 동작할 수 있다. 8x8 IDCT 엔진(420)은 비디오 스트림을 완전히 디코딩하도록 활성화되는 반면, 십진화 IDCT 엔진(438)은 비디오 스트림이 십진화를 지시하는 경우에 활성화된다. IDCT 포맷 변환기 엔진(422)은 포맷 변환을 수행할 수 있다. 예를 들어, IDCT 포맷 변환기 엔진(422)은 YUV 4:4:4, YUV 4:2:2, YUV 4:2:2R 및 YUV 4:2:0 포맷들 중 임의의 포맷들 간의 포맷 변환을 수행할 수 있다. 다른 포맷 변환도 수행될 수 있으며, IDCT 포맷 변환기 엔진(422)은 리스트된 포맷들로 한정되지 않는다는 것을 이해해야 한다.
디코딩된 JPEG 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 JPEG 비디오 스트림은 메모리(330)에 저장된다. 다른 실시예에서, 디코딩된 JPEG 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 후처리 동작들이 수행된다.
MPEG -4/H.263: MPEG-4 및 H.263 디코딩은 디코더 장치(400)의 목적을 위해 서로 매우 유사하다. 구체적으로, MPEG-4 표준은 MPEG-4 디코더들이 H.263 인코딩된 비디오 스트림들을 디코딩할 수 있을 것을 요구한다. MPEG-4 및 H.263 디코딩은 인트라 예측 모드 엔진(404), 인트라 예측 엔진(414), IDCT 포맷 변환기 엔진(422), 및 4x4 역변환 엔진(418)을 필요로 하지 않으며, 이들은 비활성화된다. 또한, 루프내 디블록킹 필터(440) 또한 후처리 동작들을 위해 비활성화된다. 따라서, 커맨드 파서는 MV 예측 엔진(406), 계수 엔진(408), AC/DC 예측 엔진(410), 회전 엔진(415), 모션 보상 엔진(416), 8x8 IDCT 엔진(420), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(436)을 활성화시킨다. 커맨드 파서(402)는 MPEG-4 또는 H.263 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 MPEG-4 및 H.263 표준들에 의해 요구된다는 것을 이해해야 한다.
커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들로 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 예측 프레임들(P 프레임들)이 파이프라인 스테이지 1 내의 MV 예측 엔진(406)에서 처리되는 것과 동시에, 인트라 프레임들(I 프레임들)이 잔여 경로의 계수 엔진(408) 및 AC/DC 예측 엔진(410)에서 처리될 수 있다. I 프레임들 및 P 프레임들은 파이프라인 스테이지 2에서 동기화된다. 커맨드 파서(402)는 또한 8x8 IDCT 엔진(420)의 적절한 하드웨어 디코딩 블록들을 활성화할 수 있다.
디코딩된 MPEG-4/H.263 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 MPEG-4/H.263 비디오 스트림은 메모리(330)에 저장된다. 다른 실시예에서, 디코딩된 MPEG-4/H.263 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대한 후처리 동작들이 수행된다. 다른 실시예에서, 후처리 동작들은 루프외 필터(442)에서 인코딩된 MPEG-4/H.263 비디오 스트림에 대해 수행된다. 일 실시예에서, 루프외 필터(442)는 디블록킹 필터이다. 다른 실시예에서, 루프외 필터(442)는 디링잉 필터이다. 다른 실시예에서, 루프외 필터(442)는 디블록킹 필터 및 디링잉 필터 양자이다. 루프외 필터(442)는 임의의 디블록킹 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.
H.263+: H.263+ 디코딩은 전술한 바와 같은 MPEG-4/H.263 디코딩과 유사하다. H.263+는 디코딩 동작의 일부를 VLD 내로 시프팅하는데, 이는 커맨드 파서(402)가 비디오 스트림(401)에 액세스하기 전에 수행된다. 인트라 예측 모드 엔진(404), 인트라 예측 엔진(414), 4x4 역변환 엔진(418) 및 루프외 엔진(442)을 필요로 하지 않고, 따라서 비활성화하는 것에 더하여, 커맨드 파서(402)는 또한 계수 엔진(408) 및 AC/DC 예측 엔진(410)을 비활성화한다. 다른 점에서, H.263+ 디코딩은 전술한 바와 같은 MPEG-4/H.263 디코딩과 유사하다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 H.263+ 표준에 의해 요구된다는 것을 이해해야 한다.
H.264: H.264 디코딩은 AC/DC 예측 엔진(410), 8x8 IDCT 엔진(420) 및 IDCT 포맷 변환기 엔진(422)을 필요로 하지 않으며, 이들은 비활성화된다. 따라서, 커맨드 파서(402)는 인트라 예측 모드 엔진(404), MV 예측 엔진(406), 계수 엔진(408), 인트라 예측 엔진(414), 회전 엔진(415), 모션 보상 엔진(416), 4x4 역변환 엔진(418), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(436)을 활성화한다. 인트라 예측 버퍼(432)는 이전 매크로블록으로부터 픽셀들의 최상부 행을 저장할 수 있으며, 따라서 인트라 예측 엔진(414)은 매크로블록들의 다음 행을 처리할 때 이전 "레벨링" 픽셀들에 액세스할 수 있다. 커맨드 파서(402)는 H.264 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 H.264 표준에 의해 요구된다는 것을 이해해야 한다.
커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들로 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 프레임들은 파이프라인 스테이지 1 내의 잔여 경로 및 예측 경로에서 동시에 처리될 수 있다. 프레임들은 파이프라인 스테이지 2에서 동기화된다.
디코딩된 H.264 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 H.264 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 루프내 후처리 동작들이 수행된다. 다른 실시예에서, 루프외 후처리 동작들이 루프외 필터(442)에서 디코딩된 H.264 비디오 스트림에 대해 수행된다. 루프외 필터(442)는 임의의 디블록킹 필터 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.
WMV9 / VC -1: WMV9/VC-1 디코딩은 인트라 예측 모드 엔진(404) 및 인트라 예측 엔진(414)을 필요로 하지 않으며, 이들은 비활성화된다. 따라서, 커맨드 파서(402)는 MV 예측 엔진(406), 계수 엔진(408), AC/DC 예측 엔진(410), 회전 엔진(415), 모션 보상 엔진(416), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420), 인트라 예측 버퍼(432), 예측 샘플(434) 및 잔여 블록(438)을 활성화시킨다. 커맨드 파서(402)는 WMV9/VC-1 인코딩된 비디오 스트림을 디코딩하기 위한 활성 하드웨어 디코딩 블록들을 통해 비디오 스트림(401)으로부터의 데이터를 라우팅한다. 하드웨어 디코딩 블록들에 의해 수행되는 동작들 및 동작들의 시퀀스는 WMV9/VC-1 표준에 의해 요구된다는 것을 이해해야 한다.
커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들에 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 프레임들은 파이프라인 스테이지 1 내의 잔여 경로 및 예측 경로에서 동시에 처리될 수 있다. 프레임들은 파이프라인 스테이지 2에서 동기화된다.
디코딩된 WMV9/VC-1 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 WMV9/VC-1 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 루프내 후처리 동작들이 수행된다. 일 실시예에서, 루프내 디블록킹 필터(440)가 오버랩 평활화 필터를 구현하는 데 사용된다. 다른 실시예에서, 후처리 동작들이 루프외 필터(442)에서 디코딩된 WMV9/VC-1 비디오 스트림에 대해 수행된다. 루프외 필터(442)는 임의의 디블록킹 필터 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.
후처리 동작들
디코더 장치(400)의 파이프라인 스테이지 3은 3개의 하드웨어 후처리 블록, 즉 루프내 디블록킹 필터(440), 루프외 필터(442) 및 회전 엔진(450)을 포함한다. 루프내 디블록킹 필터(440)는 H.264 및 WMV9/VC-1 모드들에서 사용된다. 일 실시예에서, WMV9/VC-1 모드에서, 루프내 디블록킹 필터(440)는 오버랩 평활화 필터를 구현하는 데 사용된다.
루프외 필터(442)는 디코딩된 이미지의 품질을 향상시키기 위해 임의의 비디오 스트림에 대해 사용될 수 있다. 일 실시예에서, 루프외 필터(442)는 디코더 장치(400)의 나머지와 동시에 실행된다. 루프외 필터(442)는 프레임이 메모리(460) 내로 디코딩된 후에 트리거되어야 한다.
임의의 디블록킹 및/또는 디링잉 필터가 루프외 필터(442)로 사용될 수 있다는 것을 이해해야 한다. 예를 들어, 장치(150)에서 구현될 수 있는 많은 비디오 표준을 감독하기 위한 기구인 국제 표준화 기구(ISO)는 종종 표준화 공보에서 제안되는 디블록킹 필터들을 포함한다. 예를 들어, 루프외 필터(442)는 ISO 공보의 ISO/IEC 14496-2:2001, 섹션 F.3.1에 기술된 디블록킹 필터를 포함할 수 있다.
디코딩된 이미지는 또한, 회전 엔진(450)에서 파이프라인 스테이지 3 내의 메모리(460)에 기입되기 전에 회전될 수 있다. 회전 엔진(450)은 개별 매크로블록들이 지시된 회전도에 기초하여 회전되어 프레임의 새로운 위치에 배치되는 온-더-플라이(on-the-fly) 매크로블록 회전을 제공하도록 구성된다. 회전 엔진(450)의 동작의 상세한 설명에 대해서는 아래의 도 10A, 10B 및 11을 참조한다.
하드웨어 다중 표준 비디오 디코더 장치를 이용하여 비디오 스트림을 디코딩하는 방법
도 5는 본 발명의 일 실시예에 따라 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 비디오 스트림 디코딩 방법(500)의 흐름도를 나타낸다. 방법(500)에서 특정 단계들이 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계들 또는 도 5에 기재된 단계들의 변형을 수행하는 데 적합하다. 일 실시예에서, 방법(500)은 도 3의 디코더 장치(150)에 의해 수행된다.
프로세스(500)의 단계 510에서, 비디오 스트림이 액세스된다. 단계 520에서, 비디오 스트림을 인코딩하는 데 사용된 비디오 표준이 식별된다. 하드웨어 다중 표준 비디오 디코더 장치는 복수의 비디오 표준에 따라 비디오 스트림을 디코딩하도록 구성된다.
단계 530에서, 비디오 스트림을 디코딩하는 데 사용되는 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트가 결정된다. 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩할 수 있다. 일 실시예에서, 단계 540에서 도시된 바와 같이, 하드웨어 디코딩 블록들의 서브세트가 활성화되고, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 비활성화된다.
단계 550에서, 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다. 일 실시예에서, 단계 560에 도시된 바와 같이, 다중 스테이지 매크로블록 레벨 파이프라인의 일 스테이지 내의 하드웨어 디코딩 블록들은 비디오 스트림의 어떠한 데이터도 그 스테이지에서 수신되지 않는 경우에 비활성화된다. 단계 540 및 560은 추가적인 전력 절약을 제공하며 옵션이라는 것을 이해해야 한다.
단계 570에서, 비디오 스트림의 디코딩에 이어서, 메모리 유닛이 액세스된다. 일 실시예에서, 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다. 일 실시예에서, 단계 580에 도시된 바와 같이, 디코딩된 비디오 스트림 상에 후처리 동작이 수행된다. 후처리 동작은 단계 570이 수행되기 전 또는 후에 수행될 수 있다는 것을 이해해야 한다. 일 실시예에서, 디코딩된 비디오 스트림은 회전된다. 다른 실시예에서, 루프내 디블록킹 필터가 디코딩된 비디오 스트림에 적용된다. 회전 및 루프내 디블록킹은 메모리 유닛이 액세스되기 전에 수행된다. 일 실시예에서, 루프외 디블록킹 및 디링잉 필터들은 메모리 유닛이 액세스된 후에 디코딩된 비디오 스트림에 적용된다.
상이한 비디오 표준들을 이용하여 인코딩된 다수의 스트림의 하드웨어 다중 표준 비디오 디코더 장치를 이용한 디코딩
본 발명의 하드웨어 다중 표준 비디오 디코더 장치의 실시예들은 또한 다수의 비디오 스트림을 동시에 디코딩할 수 있다. 매크로블록들 또는 프레임들과 같은 비디오 스트림들의 부분들은 인터리빙된다. 디코더 장치는 인터리빙된 부분들에 순차적으로 액세스한다. 따라서, 디코더 장치는 인터리빙된 부분들에 대한 디코딩 동작들을 수행한다. 예를 들어, 2개의 비디오 스트림의 매크로블록들에 대해 디코딩 동작이 수행될 수 있다. 비디오 스트림들은 비디오 스트림들의 매크로블록들이 교대하도록 인터리빙된다. 클럭 사이클마다, 교대하는 비디오 스트림에 대해 디코딩 동작이 수행될 수 있다.
도 6은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(600)의 내부 컴포넌트들을 나타내는 도면이다. 도 6에 도시된 바와 같이, 디코더 장치(600)는 비디오 스트림 인터리버(605), 커맨드 파서(305), 복수의 하드웨어 디코딩 블록(310-318), 하드웨어 후처리 블록(320), 메모리(330), 레지스터 세트(610) 및 레지스터 세트(620)를 포함한다. 디코더 장치(600)는 다수의 비디오 인코딩 표준을 디코딩할 수 있으며, 도 3의 디코더 장치(150)와 매우 유사하게 동작한다. 디코더 장치(600)는 레지스터 세트들(610, 620)이 디코더 장치(600)가 다수의 비디오 스트림을 동시에 디코딩하는 것을 허가한다는 점에서 디코더 장치(150)와 다르다.
비디오 스트림 인터리버(605)는 다수의 비디오 스트림에 액세스하여, 비디오 스트림들의 부분들을 인터리빙할 수 있다. 도시된 바와 같이, 비디오 스트림 인터리버(605)는 비디오 스트림들(601, 602)에 액세스한다. 그러나, 비디오 스트림 인터리버(605)는 임의 수의 비디오 스트림을 수신할 수 있으며, 도 6에 도시된 실시예로 한정되는 것이 아니라는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림들(601, 602)은 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))으로부터 수신된다.
도 7A 및 7B는 본 발명의 실시예들에 따른 다수의 비디오 스트림의 예시적인 인터리빙된 부분들을 나타내는 도면들이다. 도 7A를 참조하면, 2개의 인터리빙된 비디오 스트림이 도시되어 있으며, 하나의 스트림은 정지 이미지 비디오 스트림(예를 들어, JPEG)이고, 다른 하나의 스트림은 디지털 영화 스트림(예를 들어, MPEG-4)이다. 도시된 바와 같이, 비디오 스트림들이 하나의 디지털 영화 스트림만을 포함하는 경우, 비디오 스트림들은 매크로블록 레벨로 인터리빙될 수 있다. 구체적으로, 정지 이미지 매크로블록들(704, 708)은 디지털 영화 매크로블록들(702, 706)과 인터리빙되며, 따라서 각각의 비디오 스트림으로부터의 매크로블록들은 인터리빙된 스트림(700) 내에서 교대한다. 비디오 스트림들이 매크로블록 레벨로 인터리빙되는 경우, 디코더 장치(600)의 소프트웨어 드라이버는 시스템 메모리 내에 매크로블록 데이터를 버퍼링하여, 인터리빙된 비디오 스트림들의 디코딩을 관리한다.
도 7B를 참조하면, 2개의 인터리빙된 비디오 스트림이 도시되어 있으며, 양 스트림들은 디지털 영화 스트림들이다. 도시된 바와 같이, 비디오 스트림들이 다수의 디지털 영화 스트림을 포함하는 경우, 비디오 스트림들은 프레임 레벨로 인터리빙된다. 구체적으로, 제1 디지털 영화 프레임들(752, 756)은 제2 디지털 영화 프레임들(754, 758)과 인터리빙되며, 따라서 각각의 비디오 스트림으로부터의 프레임들은 인터리빙된 스트림(750) 내에서 교대한다. 비디오 스트림들이 프레임 레벨로 인터리빙되는 경우, 디코더 장치(600)의 소프트웨어 드라이버는 시스템 메모리에 프레임 데이터를 버퍼링하여, 인터리빙된 비디오 스트림들의 디코딩을 관리한다.
도 6을 참조하면, 커맨드 파서(305), 하드웨어 디코딩 블록들(310-318), 하드웨어 후처리 블록(320) 및 메모리(330)는 도 3에 도시된 바와 같이 동작한다. 결과 데이터 및 다른 디코더 파라미터들은 커맨드 파서(305)를 통해 디코더 장치로 전달된다. 커맨드 파서(305)로부터의 데이터는 잔여 경로(하드웨어 디코딩 블록들 312, 316, 318) 또는 예측 경로(하드웨어 디코딩 블록들 310, 314)로 라우팅될 것이다. 잔여 경로는 에러 또는 차분 데이터를 처리하는 반면, 예측 경로는 이전 프레임 또는 이전 매크로블록의 데이터를 준비/페치할 것이다.
인터리빙된 비디오 스트림들의 디코딩을 관리하기 위하여, 파이프라인 스테이지 1 내에 2개의 레지스터 세트(610, 620)가 유지된다. 일 실시예에서, 레지스터 세트들(610, 620)은 각각 메모리 표면 포인터들(612, 622) 및 각각 프레임 레벨 파라미터들(614, 624)을 저장한다. 레지스터 세트들 각각은 비디오 스트림들 중 하나와 연관된 파라미터들을 저장하는 데 사용된다. 예를 들어, 레지스터 세트(610)는 비디오 스트림(601)과 연관된 파라미터들을 저장하는 데 사용되고, 레지스터 세트(620)는 비디오 스트림(602)과 연관된 파라미터들을 저장하는 데 사용된다. 하나의 비디오 스트림의 일부가 파이프라인 스테이지 1에서 처리되면, 적절한 파라미터들이 잔여 또는 예측 데이터와 함께 패킷의 형태로 다운스트림 파이프라인 스테이지 2 및 3으로 전달된다. 디코딩된 데이터는 매크로블록이 정지 이미지인지 디지털 영화 타입인지에 기초하여 메모리 내의 적절한 영역으로 라우팅될 것이다. 디코더 장치(600)는 디코딩될 각각의 스트림이 관련 레지스터 세트를 갖도록 적절한 수의 레지스터 세트를 추가함으로써 임의 수의 비디오 스트림을 디코딩하도록 구성될 수 있다는 것을 이해해야 한다.
도 8은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 다수의 비디오 스트림을 디코딩하기 위한 방법(800)의 흐름도를 나타낸다. 특정 단계들이 방법(800)에서 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계 또는 도 8에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(800)은 도 6의 디코더 장치(600)에 의해 수행된다.
프로세스(800)의 단계 810에서, 복수의 비디오 스트림이 액세스된다. 단계 820에서, 비디오 스트림들을 인코딩하는 데 사용된 비디오 표준들이 식별된다. 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치는 복수의 비디오 표준에 따라 비디오 스트림들을 디코딩하도록 구성된다. 단계 830에서, 비디오 스트림들의 부분들이 인터리빙된다. 일 실시예에서, 비디오 스트림들이 하나의 디지털 영화 스트림만을 포함하는 경우, 비디오 스트림들의 매크로블록들이 인터리빙된다. 다른 실시예에서, 비디오 스트림들이 다수의 디지털 영화 스트림을 포함하는 경우, 비디오 스트림들의 프레임들이 인터리빙된다. 단계들 820 및 830은 임의 순서로 수행될 수 있다는 것을 이해해야 한다.
단계 840에서, 복수의 비디오 스트림을 디코딩하는 데 사용되는 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트들이 결정된다. 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 일 실시예에서, 단계 850에 도시된 바와 같이, 하드웨어 디코딩 블록들의 서브세트들은 활성화되고, 따라서 비디오 스트림들의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.
단계 860에서, 비디오 스트림들은 하드웨어 디코딩 블록들의 서브세트들을 이용하여 디코딩된다. 단계 870에서, 비디오 스트림들의 디코딩에 이어서, 메모리 유닛이 액세스된다. 일 실시예에서, 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다. 일 실시예에서, 단계 880에서 도시된 바와 같이, 적어도 하나의 디코딩된 비디오 스트림에 대해 후처리 동작이 수행된다. 후처리 동작은 단계 870이 수행되기 전 또는 후에 수행될 수 있다는 것을 이해해야 한다. 일 실시예에서, 디코딩된 비디오 스트림은 회전된다. 다른 실시예에서, 루프내 디블록킹 필터가 디코딩된 비디오 스트림에 적용된다. 회전 및 루프내 디블록킹은 메모리 유닛이 액세스되기 전에 수행된다. 일 실시예에서, 루프외 디블록킹 및 디링잉 필터들이 메모리 유닛이 액세스된 후에 디코딩된 비디오 스트림에 적용된다.
비디오 스트림의 무질서 매크로블록들의 처리
도 2B를 참조하면, 일 실시예에서, 본 발명은 마이크로코드 엔진(260)에서 매크로블록들을 버퍼링하고 재배열하는 것을 제공한다. 본 발명은 비 래스터 스캔 순서로 매크로블록들을 송수신하는 것을 지원하는 비디오 표준들에 대한 루프내 디블록킹을 지원하기 위하여 래스터 스캔 순서로 매크로블록들을 배열하는 것을 제공한다. 마이크로코드 엔진(260)은 비디오 스트림의 프레임의 매크로블록들을 나타내는 압축 데이터를 수신하도록 구성된다. 일 실시예에서, 적어도 하나의 매크로블록이 무질서하게 수신된다. 마이크로코드 엔진(260)은 압축 데이터를 버퍼링하도록 구성되고, 프레임의 매크로블록들을 래스터 스캔 순서로 배열하도록 구성된다.
도 9는 본 발명의 일 실시예에 따라 비디오 스트림의 무질서 매크로블록들을 처리하기 위한 방법(900)의 흐름도를 나타낸다. 특정 단계들이 방법(900)에 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계들 또는 도 9에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(900)은 도 2B의 마이크로코드 엔진(260)에 의해 수행된다.
프로세스(900)의 단계 910에서, 비디오 스트림의 프레임의 매크로블록들을 나타내는 압축 데이터가 수신되는데, 적어도 하나의 매크로블록은 무질서하게 수신된다. 단계 920에서, 압축 데이터가 버퍼링된다. 일 실시예에서, 압축 데이터는 마이크로코드 엔진(260)의 버퍼에 버퍼링된다. 단계 930에서, 비디오 스트림이 파싱되고, VLD가 비디오 스트림 상에 수행된다. 단계 930은 옵션이고, 비디오 스트림 파싱 및 VLD는 하드웨어 디코더 장치에 의해 수행될 수 있다는 것을 이해해야 한다. 또한, 다른 또는 추가적인 전처리 동작들이 단계 930에서 비디오 스트림에 대해 수행될 수 있다는 것을 이해해야 한다.
단계 935에서, 비디오 스트림이 루프내 디블록킹을 필요로 하는지를 판정한다. 일 실시예에서, 압축 데이터는 루프내 블록킹이 비디오 스트림 상에 수행되어야 하는지의 여부에 대한 지시를 포함한다. 루프내 디블록킹이 필요한 경우, 프레임의 매크로블록들은 단계 940에 도시된 바와 같이 래스터 스캔 순서로 배열된다. 일 실시예에서, 프레임의 모든 매크로블록은 매크로블록들이 래스터 스캔 순서로 배열되기 전에 버퍼링된다. 이어서, 방법(900)은 단계 950으로 진행한다. 대안으로, 루프내 디블록킹이 필요하지 않은 경우, 방법(900)은 단계 950으로 직접 진행한다.
단계 950에서, 비디오 스트림이 디코딩된다. 일 실시예에서, 매크로블록들은 래스터 스캔 순서로 디코딩된다. 일 실시예에서, 비디오 스트림은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 디코더 장치(150) 또는 도 4의 디코더 장치(400))에 의해 디코딩된다. 일 실시예에서, 비디오 스트림은 도 5의 방법(500)에 따라 디코딩된다.
단계 960에서, 디코딩된 매크로블록 상에 매크로블록 레벨 루프내 디블록킹이 수행된다. 단계 970에서, 메모리 유닛이 액세스된다. 일 실시예에서, 디블록킹 및 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다.
단계 980에서, 디코딩된 프레임 상에 프레임 레벨 루프외 후처리가 수행된다. 일 실시예에서, 루프외 후처리는 디블록킹 및 디링잉 동작들을 포함한다. 단계 980은 옵션이라는 것을 이해해야 한다. 이어서, 방법(900)은 단계 970으로 복귀하며, 여기서 메모리 유닛이 액세스된다. 일 실시예에서, 디블록킹, 디링잉 및 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다.
매크로블록들이 여전히 압축 데이터로 있는 동안 매크로블록들을 버퍼링함으로써, 마이크로코드 엔진(260)은 디코딩된 비디오 데이터보다 훨씬 적은 실행 길이 인코딩된 압축 데이터의 최대 일 프레임만을 버퍼링하면 된다. 또한, 압축된 매크로블록들의 버퍼링은 전력을 절약한다. 무선으로 수신된 비디오 스트림들은 또한 많은 에러가 발생한다. 마이크로코드 엔진(260)에 대한 비트 스트림 파싱의 파티셔닝은 또한 에러 복구를 향상시키는 이점을 갖는다.
비디오 스트림의 매크로블록들의 온 더 플라이 회전
본 발명의 실시예들은 비디오 스트림이 메모리에 기입되기 전에 비트 스트림을 "온 더 플라이" 방식으로 회전시키기 위한 회전 엔진을 제공한다. 본 발명의 실시예들은 비디오 스트림의 매크로블록들이 수신될 때 이들을 회전시킴으로써 비디오 스트림을 회전시키고, 회전에 기초하여 프레임 내에 매크로블록들을 재배치할 수 있다. 본 발명의 실시예들은 디코딩된 매크로블록들을 메모리에 기입하기 전에 매크로블록들 상에 작용함으로써 디코딩된 프레임들을 2차 전달할 필요 없이 비디오 스트림들을 회전시킬 수 있다.
일 실시예에서, 본 발명은 회전도에 따라 비디오 스트림의 프레임의 매크로블록을 회전시키고 매크로블록을 회전도에 기초하는, 프레임 내의 새로운 위치에 재배치하도록 구성된 회전 엔진을 제공한다. 일 실시예에서, 비디오 디코더 장치는 표시를 위해 매크로브록을 저장하기 위한 메모리를 더 포함한다. 일 실시예에서, 회전 엔진은 매크로블록을 회전시키고, 메모리에 액세스하기 전에 프레임 내에 매크로블록을 재배치하도록 구성된다.
도 10A 및 10B는 본 발명의 일 실시예에 따른 프레임들의 매크로블록들의 예시적인 회전의 도면을 나타낸다. 도 10A 및 10B는 도 4의 회전 엔진(450)의 동작을 기술하지만, 설명되는 실시예들은 임의 타입의 비디오 디코더 장치에서 구현될 수 있으며, 도 4의 하드웨어 다중 표준 비디오 디코더 장치(400)의 사용으로 제한되지 않음을 이해해야 한다. 예를 들어, 회전 엔진은 단일 표준 하드웨어 디코더 또는 소프트웨어 디코더 내에 포함될 수 있다.
도 10A를 참조하면, 다이어그램 1000은 도 4의 회전 엔진(450)을 이용한 프레임(1010)의 회전을 나타낸다. 프레임(1010)은 다수의 매크로블록을 포함한다. 매크로블록(1012)은 회전 엔진(450)에서 수신되는 제1 매크로블록으로 도시되어 있다. 일 실시예에서, 매크로블록들은 래스터 스캔 순서로 수신되는데, 여기서 매크로블록(1012)은 좌상 매크로블록이므로 최초로 수신되는 매크로블록이다.
회전 엔진(450)은 매크로블록(1012)을 회전시키고, 프레임(1010) 내의 새로운 위치에 매크로블록(1012)을 재배치하도록 구성된다. 회전 및 재배치는 비디오 스트림과 연관된 회전도에 기초한다. 회전도는 비디오 스트림이 얼마나 회전되어야 하는지를 나타낸다. 예를 들어, 회전도는 시계 방향으로 90도, 반시계 방향으로 90도, 180도, 또는 임의의 다른 회전도일 수 있다.
다이어그램(diagram) 1000은 시계 방향으로 90도의 회전도를 이용하는 회전 엔진(450)의 동작을 나타낸다. 매크로블록(1012)은 시계 방향으로 90도 회전된다. 회전 엔진(450)은 또한 매크로블록(1012)을 재배치하여, 회전된 프레임(1020) 내의 매크로블록(1022)으로 도시된 회전된 매크로블록(1012)이 프레임(1020)의 모든 다른 매크로블록에 대해 동일한 위치에 있게 한다.
본 발명의 실시예들은 또한 매크로블록들이 무질서하게 수신되는 프레임들을 매크로블록 레벨로 회전시키는 것을 제공한다. 도 10B를 참조하면, 다이어그램 1050은 도 4의 회전 엔진(450)을 이용한 프레임(1060)의 회전을 나타낸다. 매크로블록(1062)은 회전 엔진(450)에서 수신된 제1 매크로블록으로서 도시된다. 본 실시예에서는, 매크로블록(1062)이 수신되는 제1 매크로블록이지만, 좌상 매크로블록이 아니므로, 매크로블록들은 래스터 스캔 순서로 수신되지 않는다.
회전 엔진(450)은 매크로블록(1062)을 회전시키고, 매크로블록(1062)을 프레임(1060) 내의 새로운 위치에 재배치하도록 구성된다. 다이어그램 1050은 시계 방향으로 90의 회전도를 이용하는 회전 엔진(450)의 동작을 나타낸다. 매크로블록(1062)은 시계 방향으로 90도 회전된다. 회전 엔진(450)은 또한 매크로블록(1062)을 재배치하여, 회전된 프레임(1070) 내에 매크로블록(1072)로서 도시된 회전된 매크로블록(1062)이 프레임(1070)의 모든 다른 매크로블록에 대해 동일한 위치에 있게 한다.
도 11은 본 발명의 일 실시예에 따라 프레임의 매크로블록들을 회전시키기 위한 방법(1100)의 흐름도를 나타낸다. 특정 단계들이 방법(1100)에서 개시되지만, 이 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계 또는 도 11에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(1100)은 도 4의 회전 엔진(450)에 의해 수행된다.
단계 1110에서, 비디오 스트림이 디코딩된다. 일 실시예에서, 비디오 스트림은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 디코더 장치(150) 또는 도 4의 디코더 장치(400))에 의해 디코딩된다. 일 실시예에서, 비디오 스트림은 도 5의 방법(500)에 따라 디코딩된다. 단계 1110은 옵션이고, 비디오 스트림은 처리 전에 이미 디코딩될 수 있다는 것을 이해해야 한다.
단계 1120에서, 비디오 스트림에 대한 회전도가 액세스된다. 일 실시예에서, 회전도는 시계 방향으로 90도, 반시계 방향으로 90도, 및 180도 중 하나이다. 그러나, 임의의 회전도가 사용될 수 있음을 이해해야 한다. 단계 1130에서, 비디오 스트림의 매크로블록이 액세스된다.
단계 1140에서, 매크로블록은 회전도에 따라 회전된다. 단계 1150에서, 매크로블록은 프레임 내의 새로운 위치에 재배치되는데, 이 새로운 위치는 회전도에 기초한다. 매크로블록은 한 번 회전된 프레임의 모든 다른 매크로블록에 대해 동일 위치에 있도록 재배치된다는 것을 이해해야 한다. 일 실시예에서, 매크로블록의 회전 및 매크로블록의 재배치는 메모리에 액세스하기 전에 수행된다.
단계 1160에서, 매크로블록은 표시를 위해 메모리에 저장된다. 일 실시예에서 단계 1170에 도시된 바와 같이, 디코딩된 매크로블록에 대해 디블록킹 동작이 수행된다. 단계 1170은 옵션이라는 것을 이해해야 한다. 더욱이, 단계 1170은 루프내 디블록킹 또는 루프외 비블록킹 및 디링잉(deringing)을 수행하는 단계를 포함할 수 있다는 것을 이해해야 한다.
이와 같이, 본 발명의 실시예들은 다수의 비디오 표준에 따른 비디오 스트림들의 하드웨어 기반 디코딩을 지원하는 새로운 하드웨어 다중 표준 비디오 디코더 장치 아키텍처를 제공한다. 본 발명의 실시예들은 복수의 비디오 인코딩 표준 각각에 대한 실시간 디코딩을 제공할 수 있다. 본 발명의 실시예들은 디코딩된 비디오 스트림들에 대한 후처리 동작들을 제공한다. 본 발명의 일 실시예는 JPEG, MPEG-4, H.263, H.263+, H.264, 및 WMV9/VC-1 비디오 표준들 중 임의 표준을 이용하는 비디오 스트림들에 대한 비디오 디코딩을 제공하는 하드웨어 디코더 장치를 제공한다.
본 발명의 실시예들은 복수의 상이한 비디오 인코딩 표준에 대한 동시 비디오 디코딩 기능을 제공하기 위한 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 제공한다. 본 발명의 실시예들은 다수의 인터리빙된 비디오 스트림들을 동시에 디코딩할 수 있다.
본 발명의 실시예들은 래스터 스캔 순서로 매크로블록들을 배열하기 위한 추가 메모리의 필요 없이 비디오 스트림의 루프내 디블록킹을 제공하기 위한 비디오 디코더 아키텍처를 제공한다. 본 발명의 실시예들은 마이크로코드 엔진에서 비디오 스트림의 매크로블록들을 배열할 수 있다. 본 발명의 실시예들은 복수의 지원되는 비디오 표준 중 하나를 이용하여 인코딩된 비디오 스트림에 대한 디코딩 및 루프외 디블록킹 및/또는 디링잉을 제공할 수 있다.
본 발명의 실시예들은 비디오 스트림이 메모리에 기입되기 전에 비디오 스트림을 "온 더 플라이" 방식으로 회전시키기 위한 회전 엔진을 제공한다. 본 발명의 실시예들은 비디오 스트림의 매크로블록들이 수신될 때 이들을 회전시킴으로써 비디오 스트림을 회전시키고, 회전에 기초하여 매크로블록들을 프레임 내에 재배치할 수 있다. 본 발명의 실시예들은 디코딩된 매크로블록들을 메모리에 기입하기 전에 매크로블록들 상에 작용함으로써 디코딩된 프레임들의 2차 전달의 필요 없이 비디오 스트림들을 회전시킬 수 있다.
본 발명의 특정 실시예들의 위의 설명들은 예시 및 설명의 목적으로 제공되었다. 이들은 포괄적이거나, 본 발명을 개시된 바로 그 형태로 제한하는 것을 의도하지 않으며, 위의 가르침에 비추어 많은 수정 및 변형이 가능하다. 실시예들은 본 발명의 원리들 및 그의 실제 응용을 최상으로 설명하여 이 분야의 전문가들이 본 발명 및 다양한 실시예를 고려되는 특정 이용에 적합한 바의 다양한 수정과 함께 최상으로 이용할 수 있도록 하기 위해 선택되고 설명되었다. 본 발명의 범위는 이에 첨부된 청구범위 및 그 균등물에 의해 정의되는 것을 의도한다.

Claims (24)

  1. 하드웨어 다중 표준 비디오 디코더 장치로서,
    비디오 스트림에 액세스하고, 상기 비디오 스트림을 인코딩하는데 사용되는 비디오 인코딩 표준을 식별하기 위한 커맨드 파서(command parser); 및
    상기 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록들
    을 포함하며,
    상기 복수의 하드웨어 디코딩 블록들의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이며, 상기 복수의 하드웨어 디코딩 블록들은 하드웨어 기반 디코딩을 수행하도록 동작가능한, 하드웨어 다중 표준 비디오 디코더 장치.
  2. 제1항에 있어서,
    상기 커맨드 파서는, 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록이 활성화되지 않도록, 상기 비디오 스트림을 인코딩하는데 사용된 제1 식별된 비디오 인코딩 표준을 디코딩하는데 사용되는 상기 복수의 하드웨어 디코딩 블록들의 제1 서브세트를 활성화하도록 동작가능한, 하드웨어 다중 표준 비디오 디코더 장치.
  3. 제2항에 있어서,
    상기 커맨드 파서는, 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록이 활성화되지 않도록, 상기 비디오 스트림을 인코딩하는데 사용된 제2 식별된 비디오 인코딩 표준을 디코딩하는데 사용되는 상기 복수의 하드웨어 디코딩 블록들의 제2 서브세트를 활성화하도록 동작가능한, 하드웨어 다중 표준 비디오 디코더 장치.
  4. 제1항에 있어서,
    상기 복수의 하드웨어 디코딩 블록들은 다중 스테이지의 매크로블록 레벨 파이프라인 내에서 구현되는, 하드웨어 다중 표준 비디오 디코더 장치.
  5. 제4항에 있어서,
    상기 비디오 스트림의 어떠한 데이터도 상기 스테이지에서 수신되지 않는 경우, 상기 커맨드 파서는 상기 다중 스테이지의 매크로블록 레벨 파이프라인 중 하나의 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작가능한, 하드웨어 다중 표준 비디오 디코더 장치.
  6. 제1항에 있어서,
    상기 하드웨어 다중 표준 비디오 디코더 장치는 상기 비디오 스트림을 모두 디코딩한 후에 메모리 유닛에 액세스하는, 하드웨어 다중 표준 비디오 디코더 장치.
  7. 제1항에 있어서,
    디코딩된 비디오 스트림에 대해 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함하는, 하드웨어 다중 표준 비디오 디코더 장치.
  8. 제7항에 있어서,
    상기 커맨드 파서에서 수신된 상기 비디오 스트림이 디코딩된 비디오 스트림인 경우, 상기 커맨드 파서는 상기 하드웨어 후처리 블록이 상기 디코딩된 비디오 스트림에 대해 상기 후처리 동작을 수행하기 위해 상기 복수의 하드웨어 디코딩 블록들을 비활성화하도록 동작가능한, 하드웨어 다중 표준 비디오 디코더 장치.
  9. 제7항에 있어서,
    상기 하드웨어 후처리 블록은 필터를 포함하는, 하드웨어 다중 표준 비디오 디코더 장치.
  10. 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 비디오 스트림을 디코딩하는 방법으로서,
    상기 비디오 스트림에 액세스하는 단계;
    상기 비디오 스트림을 인코딩하는데 사용되는 비디오 표준을 식별하는 단계;
    상기 비디오 스트림을 디코딩하는데 사용되는 상기 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록들 중 하드웨어 디코딩 블록들의 서브세트를 결정하는 단계 - 상기 복수의 하드웨어 디코딩 블록들의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위해 동작 가능하고, 상기 복수의 하드웨어 디코딩 블록들은 하드웨어 기반 디코딩을 수행하도록 동작가능함 - ; 및
    상기 하드웨어 디코딩 블록들의 서브세트를 이용하여 상기 비디오 스트림을 디코딩하는 단계
    를 포함하는, 디코딩 방법.
  11. 제10항에 있어서,
    상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록이 활성화되지 않도록, 상기 하드웨어 디코딩 블록들의 서브세트를 활성화하는 단계를 더 포함하는, 디코딩 방법.
  12. 제10항에 있어서,
    상기 복수의 하드웨어 디코딩 블록들은 다중 스테이지의 매크로블록 레벨 파이프라인 내에 구현되는, 디코딩 방법.
  13. 제12항에 있어서,
    상기 비디오 스트림의 어떠한 데이터도 상기 스테이지에서 수신되지 않는 경우, 상기 다중 스테이지의 매크로블록 레벨 파이프라인 중 하나의 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하는 단계를 더 포함하는, 디코딩 방법.
  14. 제10항에 있어서,
    상기 비디오 스트림의 상기 디코딩에 이어서 메모리 유닛에 액세스하는 단계를 더 포함하는, 디코딩 방법.
  15. 제10항에 있어서,
    디코딩된 비디오 스트림에 대해 후처리 동작을 수행하는 단계를 더 포함하는, 디코딩 방법.
  16. 비디오 스트림 디코더로서,
    인쇄 회로 기판(printed circuit board);
    상기 인쇄 회로 기판에 결합된 접속기(connector) - 상기 접속기는 상기 비디오 스트림 디코더를 컴퓨터 시스템에 착탈가능하게 결합함 -; 및
    상기 인쇄 회로 기판 및 상기 접속기에 결합된 집적 회로
    를 포함하고, 상기 집적회로는,
    비디오 스트림에 액세스하고, 상기 비디오 스트림을 인코딩하는데 사용되는 비디오 인코딩 표준을 식별하기 위한 커맨드 파서; 및
    상기 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록들
    을 포함하고,
    상기 복수의 하드웨어 디코딩 블록들의 상이한 서브세트들은 상이한 비디오 디코딩 표준들을 사용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이며, 상기 복수의 하드웨어 디코딩 블록들은 하드웨어 기반 디코딩을 수행하도록 동작가능한, 비디오 스트림 디코더.
  17. 제16항에 있어서,
    상기 커맨드 파서는, 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록이 활성화되지 않도록, 상기 비디오 스트림을 인코딩하는데 사용된 제1 식별된 비디오 인코딩 표준을 디코딩하는데 사용되는 상기 복수의 하드웨어 디코딩 블록들의 제1 서브세트를 활성화하도록 동작가능한, 비디오 스트림 디코더.
  18. 제17항에 있어서,
    상기 커맨드 파서는, 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록이 활성화되지 않도록, 상기 비디오 스트림을 인코딩하는데 사용된 제2 식별된 비디오 인코딩 표준을 디코딩하는데 사용되는 상기 복수의 하드웨어 디코딩 블록들의 제2 서브세트를 활성화하도록 동작가능한, 비디오 스트림 디코더.
  19. 제16항에 있어서,
    상기 복수의 하드웨어 디코딩 블록들은 다중 스테이지의 매크로블록 레벨 파이프라인 내에서 구현되는, 비디오 스트림 디코더.
  20. 제19항에 있어서,
    상기 비디오 스트림의 어떠한 데이터도 상기 스테이지에서 수신되지 않는 경우, 상기 커맨드 파서는 상기 다중 스테이지의 매크로블록 레벨 파이프라인 중 하나의 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작가능한, 비디오 스트림 디코더.
  21. 제16항에 있어서,
    상기 비디오 스트림 디코더는 상기 비디오 스트림을 모두 디코딩한 후에 메모리 유닛에 액세스하는, 비디오 스트림 디코더.
  22. 제16항에 있어서,
    디코딩된 비디오 스트림에 대해 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함하는, 비디오 스트림 디코더.
  23. 제22항에 있어서,
    상기 커맨드 파서에서 수신된 상기 비디오 스트림이 디코딩된 비디오 스트림인 경우, 상기 커맨드 파서는 상기 하드웨어 후처리 블록이 상기 디코딩된 비디오 스트림에 대해 상기 후처리 동작을 수행하기 위해 상기 복수의 하드웨어 디코딩 블록들을 비활성화하도록 동작가능한, 비디오 스트림 디코더.
  24. 제19항에 있어서,
    상기 다중 스테이지의 매크로블록 레벨 파이프라인은 잔여 경로 및 예측 경로를 포함하는, 비디오 스트림 디코더.
KR1020087016391A 2005-12-09 2006-12-06 하드웨어 다중 표준 비디오 디코더 장치 KR101065546B1 (ko)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/299,057 US9204158B2 (en) 2005-12-09 2005-12-09 Hardware multi-standard video decoder device
US11/299,055 US9210437B2 (en) 2005-12-09 2005-12-09 Hardware multi-stream multi-standard video decoder device
US11/299,055 2005-12-09
US11/299,057 2005-12-09
PCT/US2006/046741 WO2007070343A2 (en) 2005-12-09 2006-12-06 A hardware multi-standard video decoder device

Related Child Applications (1)

Application Number Title Priority Date Filing Date
KR1020107008555A Division KR20100046284A (ko) 2005-12-09 2006-12-06 하드웨어 다중 표준 비디오 디코더 장치

Publications (2)

Publication Number Publication Date
KR20080082676A KR20080082676A (ko) 2008-09-11
KR101065546B1 true KR101065546B1 (ko) 2011-09-19

Family

ID=38163412

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020087016391A KR101065546B1 (ko) 2005-12-09 2006-12-06 하드웨어 다중 표준 비디오 디코더 장치
KR1020107008555A KR20100046284A (ko) 2005-12-09 2006-12-06 하드웨어 다중 표준 비디오 디코더 장치

Family Applications After (1)

Application Number Title Priority Date Filing Date
KR1020107008555A KR20100046284A (ko) 2005-12-09 2006-12-06 하드웨어 다중 표준 비디오 디코더 장치

Country Status (6)

Country Link
JP (1) JP4891335B2 (ko)
KR (2) KR101065546B1 (ko)
CN (1) CN101322321A (ko)
DE (1) DE112006003307T8 (ko)
TW (1) TW200735667A (ko)
WO (1) WO2007070343A2 (ko)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8705630B2 (en) * 2006-02-10 2014-04-22 Nvidia Corporation Adapting one type of encoder to another type of encoder
DK2700234T3 (da) * 2011-04-22 2019-07-22 Dolby Int Ab Fremgangsmåde og indretning til komprimeret kodning med tab af data
CN109600619A (zh) * 2018-12-11 2019-04-09 晶晨半导体(上海)股份有限公司 一种解码硬件的分时复用方法
CN112672166B (zh) * 2020-12-24 2023-05-05 北京睿芯高通量科技有限公司 一种视频解码器的多码流解码加速系统及方法
CN114339257B (zh) * 2022-01-26 2023-11-28 稿定(厦门)科技有限公司 用于解码视频文件的方法及装置

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5576765A (en) 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
US5598222A (en) 1995-04-18 1997-01-28 Hatachi American, Ltd. Method and apparatus for decoding multiple video bitstreams using a common memory
US20050123057A1 (en) * 2002-04-01 2005-06-09 Macinnis Alexander G. Video decoding system supporting multiple standards

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6366326B1 (en) * 1996-08-01 2002-04-02 Thomson Consumer Electronics Inc. System for acquiring, processing, and storing video data and program guides transmitted in different coding formats
JP3607798B2 (ja) * 1997-09-30 2005-01-05 松下電器産業株式会社 テレビジョン受信機および映像信号処理装置
JP3492567B2 (ja) * 1999-09-24 2004-02-03 シャープ株式会社 データの相互送受信可能なデジタルavシステム
US20030079035A1 (en) * 2001-10-18 2003-04-24 Yazaki North America, Inc. Multi-format media decoder and method of using same as an interface with a digital network
JP2003152546A (ja) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd マルチフォーマットストリーム復号化装置及びマルチフォーマットストリーム送出装置
WO2003085494A2 (en) * 2002-04-01 2003-10-16 Broadcom Corporation Video decoding system
EP1570647A1 (en) * 2002-12-04 2005-09-07 Koninklijke Philips Electronics N.V. Method and apparatus for selecting particular decoder based on bitstream format detection
JP2005267172A (ja) * 2004-03-18 2005-09-29 Sony Corp コンテンツ受信システム、コンテンツ受信装置および方法、記録媒体、並びにプログラム
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
US8705632B2 (en) * 2005-03-30 2014-04-22 Intel Corporation Decoder architecture systems, apparatus and methods
KR100668346B1 (ko) * 2005-10-04 2007-01-12 삼성전자주식회사 멀티 코덱용 필터링 장치 및 방법

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5576765A (en) 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
US5598222A (en) 1995-04-18 1997-01-28 Hatachi American, Ltd. Method and apparatus for decoding multiple video bitstreams using a common memory
US20050123057A1 (en) * 2002-04-01 2005-06-09 Macinnis Alexander G. Video decoding system supporting multiple standards

Also Published As

Publication number Publication date
CN101322321A (zh) 2008-12-10
KR20080082676A (ko) 2008-09-11
JP4891335B2 (ja) 2012-03-07
DE112006003307T5 (de) 2008-10-23
JP2009518960A (ja) 2009-05-07
WO2007070343A3 (en) 2008-01-17
TW200735667A (en) 2007-09-16
WO2007070343A2 (en) 2007-06-21
DE112006003307T8 (de) 2009-01-29
KR20100046284A (ko) 2010-05-06

Similar Documents

Publication Publication Date Title
US9210437B2 (en) Hardware multi-stream multi-standard video decoder device
US20090129478A1 (en) Deblocking filter
KR20070104568A (ko) 오버랩 평활화 및 인-루프 디블록킹의 구분적 프로세싱
JP2005510981A (ja) 複数チャネル・ビデオトランスコーディング・システムおよび方法
US20080170611A1 (en) Configurable functional multi-processing architecture for video processing
JP2005175997A (ja) 復号化装置、電子機器、コンピュータ、復号化方法、プログラム及び記録媒体
US9161056B2 (en) Method for low memory footprint compressed video decoding
US9204158B2 (en) Hardware multi-standard video decoder device
JP2008506294A (ja) デブロッキング・フィルタリングを実行する方法及びシステム
CN102761739B (zh) 用来动态地调整视频译码复杂度的装置与方法
KR101065546B1 (ko) 하드웨어 다중 표준 비디오 디코더 장치
US7250878B2 (en) Decoding device with multi-buffers and decoding method thereof
US7953161B2 (en) System and method for overlap transforming and deblocking
US8443413B2 (en) Low-latency multichannel video port aggregator
JP2006279574A (ja) 復号装置と方法
US9843811B2 (en) Method for rotating macro-blocks of a frame of a video stream
US6928115B2 (en) Compression-encoded data decoding apparatus cross-reference to related applications
WO2002087248A2 (en) Apparatus and method for processing video data
US7675972B1 (en) System and method for multiple channel video transcoding
US9794593B1 (en) Video decoder architecture for processing out-of-order macro-blocks of a video stream
US20050047507A1 (en) Efficient video codec system and related method
KR100556341B1 (ko) 메모리 대역폭이 감소된 비디오 디코더 시스템
US20080056377A1 (en) Neighboring Context Management
US6614437B1 (en) Apparatus and method for efficient memory utilization in an electronic system
KR100821922B1 (ko) 미디어 디코딩용 국부 메모리 관리 장치

Legal Events

Date Code Title Description
A201 Request for examination
AMND Amendment
E902 Notification of reason for refusal
A107 Divisional application of patent
AMND Amendment
E902 Notification of reason for refusal
E601 Decision to refuse application
J201 Request for trial against refusal decision
AMND Amendment
B601 Maintenance of original decision after re-examination before a trial
J301 Trial decision

Free format text: TRIAL DECISION FOR APPEAL AGAINST DECISION TO DECLINE REFUSAL REQUESTED 20101209

Effective date: 20110602

S901 Examination by remand of revocation
GRNO Decision to grant (after opposition)
GRNT Written decision to grant
FPAY Annual fee payment

Payment date: 20140825

Year of fee payment: 4

FPAY Annual fee payment

Payment date: 20151023

Year of fee payment: 5

FPAY Annual fee payment

Payment date: 20180903

Year of fee payment: 8