KR20080082676A - A hardware multi-standard video decoder device - Google Patents

A hardware multi-standard video decoder device Download PDF

Info

Publication number
KR20080082676A
KR20080082676A KR1020087016391A KR20087016391A KR20080082676A KR 20080082676 A KR20080082676 A KR 20080082676A KR 1020087016391 A KR1020087016391 A KR 1020087016391A KR 20087016391 A KR20087016391 A KR 20087016391A KR 20080082676 A KR20080082676 A KR 20080082676A
Authority
KR
South Korea
Prior art keywords
video
hardware
decoding
stream
engine
Prior art date
Application number
KR1020087016391A
Other languages
Korean (ko)
Other versions
KR101065546B1 (en
Inventor
인개티어스 비. 트잔드라스위타
해리크리쉬나 엠. 리디
이올레 모카가타
Original Assignee
엔비디아 코포레이션
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
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/en
Application granted granted Critical
Publication of KR101065546B1 publication Critical patent/KR101065546B1/en

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

Abstract

A hardware multi-standard video decoder device. A command parser accesses a video stream and identifies a video encoding standard used for encoding the video stream. A plurality of hardware decoding blocks perform operations associated with decoding the video stream, wherein different subsets of the plurality of hardware decoding blocks are for decoding video streams encoded using different video encoding standards.

Description

하드웨어 다중 표준 비디오 디코더 장치{A HARDWARE MULTI-STANDARD VIDEO DECODER DEVICE}Hardware multi-standard video decoder device {A HARDWARE MULTI-STANDARD VIDEO DECODER DEVICE}

본 발명은 비디오 디코딩에 관한 것이다. 구체적으로, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치에 관한 것이다.The present invention relates to video decoding. Specifically, the present invention relates to a hardware multiple standard video decoder device.

디지털 비디오 스트림들은 통상적으로 많은 상이한 인코딩 표준 중 하나를 이용하여 인코딩된다. 예를 들어, 디지털 비디오 스트림은 보다 적은 비트를 필요로 하는 데이터 포맷으로의 변환을 위해 압축될 수 있다. 이러한 압축은 손실이 없어서, 디코딩시 원래의 비디오 스트림이 재생될 수 있거나, 손실이 많아서, 원래의 비디오 스트림의 정확한 사본이 재생될 수 없지만, 압축된 데이터의 디코딩은 보다 효율적이다.Digital video streams are typically encoded using one of many different encoding standards. For example, a digital video stream can be compressed for conversion to data formats that require fewer bits. This compression is lossless so that the original video stream can be played back during decoding, or lossy, so that an exact copy of the original video stream cannot be played back, but the decoding of the compressed data is more efficient.

현재 다수의 비디오 인코딩 표준이 존재하며, 새로운 표준들이 종종 출현하고 있다. 현재의 비디오 인코딩 표준들의 예는 JPEG(Joint Photographic Experts Group), MPEG(Moving Picture Experts Group), MPEG-2, MPEG-3, MPEG-4, H.263, H.263+, H.264 및 리얼 비디오 및 윈도우 미디어와 같은 독점 표준들을 포함한다. 디지털 비디오의 이익들을 충분히 실현하기 위하여, 사용자는 모든 일반 인코딩 표준들을 디코딩할 수 있는 디코더들에 대한 액세스를 필요로 한다.There are currently many video encoding standards, and new standards are often emerging. Examples of current video encoding standards are Joint Photographic Experts Group (JPEG), Moving Picture Experts Group (MPEG), MPEG-2, MPEG-3, MPEG-4, H.263, H.263 +, H.264 and Real Proprietary standards such as video and window media. In order to fully realize the benefits of digital video, the user needs access to decoders that can decode all common encoding standards.

비디오 스트리밍의 많은 중요한 이용은 실시간 통신과 관련된다. 예를 들어, 비디오 전화는 대응하는 오디오 신호와 동기화할 수 있도록 하기 위해 실시간 비디오 디코딩을 필요로 한다. 따라서, 사용자들에게 실시간 비디오 디코딩을 제공하여 실시간 통신과 관련된 응용들을 제공하는 것도 바람직하다. 더욱이, 사용자가 다수의 비디오 스트림의 디코딩을 필요로 하는 상황이 발생한다. 예를 들어, 현재 비디오 전화 호 상에 있는 사용자는 그가 대화하고 있는 사람으로부터 첨부 이미지를 수신한다. 이 예에서는, 대화에 필요한 이미지가 디코딩되는 동안, 비디오 전화 스트림의 실시간 디코딩이 유지되어야 한다.Many important uses of video streaming are related to real time communication. For example, video telephony requires real-time video decoding in order to be able to synchronize with the corresponding audio signal. Accordingly, it is also desirable to provide users with real time video decoding to provide applications related to real time communication. Moreover, a situation arises in which a user requires decoding of multiple video streams. For example, a user who is currently on a video phone call receives an attachment image from the person he is talking to. In this example, real time decoding of the video telephony stream must be maintained while the image required for the conversation is decoded.

현재, 비디오 디코딩은 2개의 이용 가능 방법, 즉 단일 표준 하드웨어 비디오 디코더들 및 하나 이상의 비디오 표준에 따라 비디오 스트림을 디코딩할 수 있는 소프트웨어 기반 프로그래머블 코어들 중 하나를 이용하여 수행된다. 단일 표준 하드웨어 비디오 디코더들은 실시간 디코딩 기능을 제공할 수 있다. 그러나, 특정 인코딩 표준을 이용하여 인코딩된 비디오 스트림을 디코딩하기 위하여, 사용자는 그 특정 표준을 위한 하드웨어 비디오 디코더를 구비해야 한다. 널리 이용되는 다수의 비디오 인코딩 표준이 존재하므로, 사용자는 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 디지털 비디오에 액세스하기 위해 많은 상이한 단일 표준 하드웨어 비디오 디코더를 필요로 할 것이며, 이는 사용자에게 상당한 재정 지출을 요구한다. 더욱이, 통상의 컴퓨터 시스템들은 다수의 단일 표준 하드웨어 비디오 디코더를 추가할 수 있는 능력을 갖지 못하여, 사용자가 액세스할 수 있는 비디오 스트림들의 수를 더 제한한다.Currently, video decoding is performed using two available methods: single standard hardware video decoders and software based programmable cores capable of decoding the video stream in accordance with one or more video standards. Single standard hardware video decoders can provide real time decoding functionality. However, in order to decode a video stream encoded using a particular encoding standard, the user must have a hardware video decoder for that particular standard. Since there are a number of widely used video encoding standards, users will need many different single standard hardware video decoders to access digital video encoded using different video encoding standards, which requires significant financial expenditure on the user. do. Moreover, conventional computer systems do not have the ability to add multiple single standard hardware video decoders, further limiting the number of video streams that a user can access.

현재의 소프트웨어 기반 프로그래머블 코어 비디오 디코더들은 하나 이상의 비디오 인코딩 표준을 이용한 디코딩을 제공하는 데 이용될 수 있다. 프로그래머블 코어 비디오 디코더는 디코딩 기능을 가속화하기 위한 하드웨어 가속을 포함할 수 있다. 그러나, 프로그래머블 코어는 모든 디코딩을 수행한다. 프로그래머블 코어 비디오 디코더들은 통상적으로 높은 처리 오버헤드를 갖고, 덜 효율적이고, 단일 표준 하드웨어 비디오 디코더보다 훨씬 많은 전력을 소비한다. 더욱이, 프로그래머블 코어 비디오 디코더들은, 디코딩이 전체 컴퓨터 시스템의 처리 요건에 종속하므로, 실시간 비디오 디코딩을 일관되게 제공할 수 없다.Current software based programmable core video decoders can be used to provide decoding using one or more video encoding standards. The programmable core video decoder may include hardware acceleration to accelerate the decoding function. However, the programmable core does all the decoding. Programmable core video decoders typically have high processing overhead, are less efficient, and consume much more power than a single standard hardware video decoder. Moreover, programmable core video decoders cannot consistently provide real-time video decoding, since decoding depends on the processing requirements of the entire computer system.

따라서, 현재 이용 가능한 디지털 비디오 디코더들은 널리 이용되는 다수의 비디오 인코딩 표준을 위한 실시간 비디오 디코딩을 제공할 수 없다. 또한, 현재 이용 가능한 디지털 비디오 디코더들은 널리 이용되는 다수의 비디오 인코딩 표준을 이용하여 인코딩된 다수의 스트림에 대한 동시 비디오 디코딩을 제공할 수 없다. 더욱이, 현재 이용 가능한 디지털 비디오 디코더들은 적어도 하나의 비디오 스트림이 실시간 디코딩을 필요로 하는 다수의 비디오 스트림을 동시에 디코딩할 수 없다. 따라서, 종래 기술의 한계를 극복하는 새로운 디지털 비디오 디코더가 필요하다. 새로운 디지털 비디오 디코더는 다수의 상이한 비디오 표준을 위한 실시간 비디오 디코딩 기능을 제공해야 한다. 새로운 디지털 비디오 디코더는 또한, 복수의 상이한 비디오 표준을 이용하여 인코딩된 복수의 비디오 스트림에 대한 동시 비디오 디코딩 기능을 제공해야 한다.Thus, currently available digital video decoders cannot provide real-time video decoding for many widely used video encoding standards. In addition, currently available digital video decoders cannot provide simultaneous video decoding for multiple streams encoded using multiple video encoding standards that are widely used. Moreover, currently available digital video decoders cannot simultaneously decode multiple video streams in which at least one video stream requires real time decoding. Therefore, there is a need for a new digital video decoder that overcomes the limitations of the prior art. New digital video decoders must provide real-time video decoding for many different video standards. The new digital video decoder must also provide simultaneous video decoding functionality for a plurality of video streams encoded using a plurality of different video standards.

<발명의 요약>Summary of the Invention

본 발명의 실시예들은 복수의 상이한 비디오 인코딩 표준을 위한 비디오 디코딩 기능을 제공하기 위한 하드웨어 다중 표준 비디오 디코더 장치를 제공한다. 본 발명의 실시예들은 복수의 비디오 인코딩 표준의 각각을 위한 실시간 디코딩을 제공할 수 있다.Embodiments of the present invention provide a hardware multi-standard video decoder device for providing video decoding functionality for a plurality of different video encoding standards. Embodiments of the present invention may provide real time decoding for each of a plurality of video encoding standards.

일 실시예에서, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치를 제공한다. 하드웨어 다중 표준 비디오 디코더 장치의 커맨드 파서가 비디오 스트림에 액세스하고 비디오 스트림을 인코딩하는 데 이용된 비디오 인코딩 표준을 식별하도록 동작할 수 있다. 하드웨어 다중 표준 비디오 디코더 장치는 또한 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록을 포함하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이다. 일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 인쇄 회로 기판에 결합된 집적 회로 내에 구현되며, 인쇄 회로 기판은 인쇄 회로 기판을 컴퓨터 시스템에 착탈 가능하게 결합하기 위한 접속기에 결합된다.In one embodiment, the present invention provides a hardware multiple standard video decoder device. The command parser of the hardware multi-standard video decoder device may be operable to access the video stream and identify the video encoding standard used to encode the video stream. The hardware multi-standard video decoder apparatus also includes a plurality of hardware decoding blocks for performing operations associated with decoding of the video stream, wherein different subsets of the plurality of hardware decoding blocks receive video streams encoded using different video encoding standards. For decoding. In one embodiment, a hardware multi-standard video decoder device is implemented in an integrated circuit coupled to a printed circuit board, the printed circuit board coupled to a connector for detachably coupling the printed circuit board to a computer system.

일 실시예에서, 커맨드 파서는 비디오 스트림을 인코딩하는 데 사용된 제1의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 복수의 하드웨어 디코딩 블록의 제1 서브세트를 활성화하도록 동작할 수 있으며, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다. 일 실시예에서, 커맨드 파서는 비디오 스트림의 인코딩에 사용된 제2의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 복수의 하드웨어 디코딩 블록의 제2 서브세트를 활 성화하도록 동작할 수 있으며, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.In one embodiment, the command parser may be operable to activate a first subset of the plurality of hardware decoding blocks used to decode the first identified video encoding standard used to encode the video stream, and thus the video. Hardware decoding blocks not associated with decoding of the stream are not activated. In one embodiment, the command parser may be operable to activate a second subset of the plurality of hardware decoding blocks used to decode the second identified video encoding standard used to encode the video stream, and thus the video. Hardware decoding blocks not associated with decoding of the stream are not activated.

일 실시예에서, 복수의 하드웨어 디코딩 블록은 다중 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 일 실시예에서, 커맨드 파서는 비디오 스트림의 어떠한 데이터도 다중 스테이지 매크로블록 레벨 파이프라인의 하나의 스테이지에서 수신되지 않는 경우에 이 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작할 수 있다. 일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 비디오 스트림을 완전히 디코딩한 후에 메모리 유닛에 액세스한다.In one embodiment, the plurality of hardware decoding blocks is implemented in a multi-stage macroblock level pipeline. In one embodiment, the command parser may be operable to deactivate hardware decoding blocks within this stage if no data in the video stream is received at one stage of the multi-stage macroblock level pipeline. In one embodiment, the hardware multi-standard video decoder device accesses the memory unit after fully decoding the video stream.

일 실시예에서, 하드웨어 다중 표준 비디오 디코더 장치는 디코딩된 비디오 스트림에 대한 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함한다. 일 실시예에서, 커맨드 파서는 커맨드 파서에서 수신된 비디오 스트림이 디코딩된 비디오 스트림인 경우에 복수의 하드웨어 디코딩 블록을 비활성화하도록 동작하여, 하드웨어 후처리 블록이 디코딩된 비디오 스트림에 대해 후처리 동작을 수행하게 할 수 있다. 일 실시예에서, 하드웨어 후처리 블록은 필터를 포함한다.In one embodiment, the hardware multi-standard video decoder device further comprises a hardware post processing block for performing a post processing operation on the decoded video stream. In one embodiment, the command parser operates to deactivate a plurality of hardware decoding blocks when the video stream received at the command parser is a decoded video stream, such that the hardware post processing block performs a post processing operation on the decoded video stream. It can be done. In one embodiment, the hardware post processing block includes a filter.

다른 실시예에서, 본 발명은 비디오 스트림을 디코딩하기 위한 방법을 제공하는데, 이 방법은 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현된다. 비디오 스트림이 액세스된다. 비디오 스트림을 인코딩하는 데 사용된 비디오 표준이 식별된다. 비디오 스트림을 디코딩하는 데 사용된 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트가 결정되며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디 오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다.In another embodiment, the present invention provides a method for decoding a video stream, which method is implemented using a hardware multiple standard video decoder device. The video stream is accessed. The video standard used to encode the video stream is identified. A subset of the hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-standard video decoder device used to decode the video stream is determined, and different subsets of the plurality of hardware decoding blocks are encoded using different video encoding standards. To decode the video streams. The video stream is decoded using a subset of hardware decoding blocks.

일 실시예에서, 복수의 레지스터는 메모리 표면 포인터 레지스터 및 프레임 레벨 파라미터 레지스터를 포함한다. 일 실시예에서, 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치는 적어도 하나의 디코딩된 비디오 스트림 상에 후처리 동작을 수행하기 위한 하드웨어 후처리 블록을 더 포함한다.In one embodiment, the plurality of registers comprises a memory surface pointer register and a frame level parameter register. In one embodiment, the hardware multi-stream multi-standard video decoder device further comprises a hardware post-processing block for performing a post processing operation on at least one decoded video stream.

일 실시예에서, 복수의 비디오 스트림은 적어도 하나의 디지털 정지 이미지 스트림 및 디지털 영화 스트림을 포함한다. 본 실시예에서, 복수의 비디오 스트림의 부분들은 디지털 정지 이미지 스트림 및 디지털 영화 스트림의 매크로블록들이다. 다른 실시예에서, 복수의 비디오 스트림은 복수의 디지털 영화 스트림을 포함한다. 본 실시예에서, 복수의 비디오 스트림의 부분들은 복수의 디지털 영화 스트림의 매크로블록들이다.In one embodiment, the plurality of video streams comprises at least one digital still image stream and a digital movie stream. In this embodiment, the portions of the plurality of video streams are macroblocks of the digital still image stream and the digital movie stream. In another embodiment, the plurality of video streams comprises a plurality of digital movie streams. In this embodiment, the portions of the plurality of video streams are macroblocks of the plurality of digital movie streams.

다른 실시예에서, 본 발명은 복수의 비디오 스트림을 디코딩하기 위한 방법을 제공하는데, 이 방법은 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현된다. 복수의 비디오 스트림이 액세스된다. 비디오 스트림들을 인코딩하는 데 사용된 비디오 표준들이 식별된다. 비디오 스트림들을 디코딩하는 데 사용된 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트들이 결정되며, 복수의 하드웨어 디코딩 블록의 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비 디오 스트림들을 디코딩하도록 동작할 수 있다. 복수의 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다. 일 실시예에서, 하드웨어 디코딩 블록들의 복수의 서브세트는 활성화되며, 따라서 복수의 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.In another embodiment, the present invention provides a method for decoding a plurality of video streams, which method is implemented using a hardware multi-stream multi-standard video decoder device. Multiple video streams are accessed. Video standards used to encode video streams are identified. Subsets of the hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-stream multi-standard video decoder device used to decode the video streams are determined, and the subsets of the plurality of hardware decoding blocks are encoded using different video encoding standards. To decode the video streams. The plurality of video streams are decoded using a subset of hardware decoding blocks. In one embodiment, the plurality of subsets of hardware decoding blocks is activated, so that hardware decoding blocks not associated with decoding of the plurality of video streams are not activated.

대체로, 본 발명은 하드웨어 다중 표준 비디오 디코더 장치를 개시한다. 커맨드 파서가 비디오 스트림에 액세스하여 비디오 스트림을 인코딩하는 데 사용되는 비디오 인코딩 표준을 식별한다. 복수의 하드웨어 디코딩 블록이 비디오 스트림의 디코딩과 연관된 동작들을 수행하며, 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩한다.In general, the present invention discloses a hardware multiple standard video decoder device. The command parser identifies the video encoding standard used to access the video stream and encode the video stream. A plurality of hardware decoding blocks performs operations associated with decoding of a video stream, and different subsets of the plurality of hardware decoding blocks decode video streams encoded using different video encoding standards.

본 발명은 동일 참조 번호가 동일한 요소를 나타내는 첨부 도면들에서 제한적이 아니라 예시적으로 도시된다.The invention is shown by way of example and not by way of limitation in the figures of the accompanying drawings in which like reference numerals indicate like elements.

도 1은 본 발명의 일 실시예에 따른 컴퓨터 시스템의 기본 컴포넌트들의 개략도이다.1 is a schematic diagram of basic components of a computer system according to an embodiment of the present invention.

도 2A는 본 발명의 일 실시예에 따라 인쇄 회로 기판 상에 구현된 예시적인 하드웨어 비디오 디코더 카드의 도면이다.2A is a diagram of an exemplary hardware video decoder card implemented on a printed circuit board in accordance with one embodiment of the present invention.

도 2B는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치를 포함하는 예시적인 아키텍처의 도면이다.2B is a diagram of an exemplary architecture that includes a hardware multi-standard video decoder device in accordance with an embodiment of the present invention.

도 3은 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치 의 내부 컴포넌트들을 나타내는 블록도이다.3 is a block diagram illustrating internal components of a hardware multi-standard video decoder device according to an embodiment of the present invention.

도 4는 본 발명의 일 실시예에 따른 예시적인 하드웨어 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 블록도이다.4 is a block diagram illustrating internal components of an exemplary hardware multi-standard video decoder device according to an embodiment of the present invention.

도 5는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 비디오 스트림 디코딩 방법의 흐름도이다.5 is a flowchart of a video stream decoding method implemented using a hardware multi-standard video decoder device according to an embodiment of the present invention.

도 6은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치의 내부 컴포넌트들을 나타내는 도면이다.6 is a diagram illustrating internal components of a hardware multi-stream multi-standard video decoder device according to an embodiment of the present invention.

도 7A 및 7B는 본 발명의 일 실시예에 따른 다수의 비디오 스트림의 예시적인 인터리빙된 부분들을 나타내는 도면들이다.7A and 7B are diagrams illustrating exemplary interleaved portions of multiple video streams in accordance with one embodiment of the present invention.

도 8은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 다수의 비디오 스트림을 디코딩하기 위한 방법의 흐름도이다.8 is a flowchart of a method for decoding a plurality of video streams, implemented using a hardware multi-stream multi-standard video decoder device, in accordance with an embodiment of the present invention.

도 9는 본 발명의 일 실시예에 따른, 비디오 스트림의 무질서(out-of-order) 매크로블록들을 처리하기 위한 방법의 흐름도이다.9 is a flowchart of a method for processing out-of-order macroblocks of a video stream, in accordance with an embodiment of the present invention.

도 10A 및 10B는 본 발명의 일 실시예에 따른 프레임들의 매크로블록들의 예시적인 회전의 도면들이다.10A and 10B are diagrams of exemplary rotation of macroblocks of frames in accordance with an embodiment of the present invention.

도 11은 본 발명의 일 실시예에 따른 프레임의 매크로블록들을 회전시키기 위한 방법의 흐름도이다.11 is a flowchart of a method for rotating macroblocks of a frame according to an embodiment of the present invention.

이제, 첨부된 도면들에 예들이 도시된 본 발명의 바람직한 실시예들을 상세히 설명한다. 본 발명은 바람직한 실시예들과 관련하여 설명되지만, 이들은 본 발명을 이들 실시예로 한정하는 것을 의도하지 않는다는 것을 이해할 것이다. 이와 달리, 본 발명은 첨부된 청구범위에 의해 정의되는 바와 같은 발명의 사상 및 범위 내에 포함될 수 있는 대안들, 변형들 및 균등물들을 커버하는 것을 의도한다. 또한, 아래의 본 발명의 실시예들의 상세한 설명에서, 다수의 특정 상세는 본 발명의 충분한 이해를 제공하기 위해 설명된다. 그러나, 본 발명은 이러한 특정 상세들 없이도 실시될 수 있음을 이 분야의 전문가는 인식할 것이다. 다른 예에서, 공지된 방법들, 프로시저들, 컴포넌트들 및 회로들은 본 발명의 실시예들의 양태들을 필요 없이 모호하게 하지 않도록 상세히 설명되지 않는다.DESCRIPTION OF THE PREFERRED EMBODIMENTS Now, preferred embodiments of the present invention, examples of which are illustrated in the accompanying drawings, are described in detail. While the invention has been described in connection with the preferred embodiments, it will be understood that they are not intended to limit the invention to these embodiments. On the contrary, the invention is intended to cover alternatives, modifications and equivalents that may be included within the spirit and scope of the invention as defined by the appended claims. In addition, in the following detailed description of embodiments of the invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, those skilled in the art will recognize that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of embodiments of the present invention.

기호 및 명명법Symbols and Nomenclature

이어지는 상세한 설명의 소정 부분들은 프로시저, 단계, 논리 블록, 처리, 및 컴퓨터 메모리 내의 데이터 비트들 상의 동작들의 다른 심벌 표현과 관련하여 제공된다. 이러한 설명 및 표현들은 데이터 처리 분야의 전문가들이 그 분야의 다른 전문가들에게 그들의 연구 내용을 전달하기 위해 사용하는 수단이다. 프로시저, 컴퓨터 실행 단계, 논리 블록, 프로세스 등은 여기서 그리고 일반적으로 원하는 결과를 유도하는 단계들 또는 명령들의 일관된 시퀀스인 것으로 간주된다. 단계들은 물리량들의 물리적 조작을 필요로 하는 것들이다. 일반적으로, 꼭 필요한 것은 아니지만, 이러한 양들은 컴퓨터 시스템에서 저장, 전송, 조합, 비교 및 조작될 수 있는 전기 또는 자기 신호들의 형태를 갖는다. 때때로, 일반적인 이용의 이유로, 이러한 신호들을 비트, 값, 요소, 심벌, 문자, 용어, 숫자 등으로 지칭하는 것이 편리한 것으로 입증되었다.Certain portions of the detailed description that follows are provided in connection with procedures, steps, logical blocks, processing, and other symbolic representations of operations on data bits in computer memory. These descriptions and representations are the means used by those in the data processing arts to convey their work to others in the field. Procedures, computer execution steps, logic blocks, processes, and the like are considered here and generally to be a consistent sequence of steps or instructions that lead to a desired result. The steps are those requiring physical manipulation of physical quantities. Generally, but not necessarily, these quantities take the form of electrical or magnetic signals that can be stored, transmitted, combined, compared, and manipulated in a computer system. Sometimes, for general use reasons, it has proven convenient to refer to these signals as bits, values, elements, symbols, letters, terms, numbers, and the like.

그러나, 이들 및 유사한 용어들 모두는 적절한 물리량들과 연관되어야 하며, 단지 이러한 양들에 적용되는 편리한 라벨들이라는 점을 기억해야 한다. 아래의 설명으로부터 명백하듯이, 특별히 달리 언급되지 않는 한, 본 발명 전반에서 "식별" 또는 "액세스" 또는 "수행" 또는 "디코딩" 또는 "활성화" 또는 "비활성화" 또는 "결정" 또는 "처리" 또는 "수신" 또는 "버퍼링" 또는 "배열" 또는 "전송" 또는 "파싱" 또는 "인터리빙" 또는 "회전" 또는 "재배치" 또는 "저장" 등과 같은 용어들을 이용한 설명들은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 하드웨어 다중 표준 비디오 디코더 장치(150)), 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(예를 들어, 도 6의 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(600)), 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260)), 회전 엔진(예를 들어, 도 4의 회전 엔진(450)), 또는 컴퓨터 시스템의 레지스터들 및 메모리들 내에 물리(전자) 양들로서 표현된 데이터를 조작하여, 컴퓨터 시스템 메모리들 또는 레지스터들 또는 다른 정보 저장, 전송 또는 표시 장치들 내에 물리량들로 유사하게 표현되는 다른 데이터로 변환하는 유사한 전자 컴퓨팅 장치의 동작 및 프로세스들을 지칭한다는 것을 이해한다.However, it should be remembered that both these and similar terms should be associated with appropriate physical quantities and are merely convenient labels applied to these quantities. As will be apparent from the description below, unless otherwise stated, "identification" or "access" or "perform" or "decoding" or "activation" or "deactivation" or "determination" or "processing" throughout this invention. Or descriptions using terms such as "receive" or "buffering" or "array" or "transmit" or "parsing" or "interleaving" or "rotate" or "relocate" or "save" or the like. For example, the hardware multi-standard video decoder device 150 of FIG. 3, the hardware multi-stream multi-standard video decoder device (eg, the hardware multi-stream multi-standard video decoder device 600 of FIG. 6), the microcode engine (Eg, microcode engine 260 of FIG. 2B), a rotation engine (eg, rotation engine 450 of FIG. 4), or physical (electronic) quantities within registers and memories of a computer system. Refers to the operations and processes of a similar electronic computing device that manipulates the data represented as a computer system memories or registers or other data similarly represented as physical quantities in storage, transmission or display devices. I understand.

컴퓨터 시스템 플랫폼Computer system platform

도 1은 본 발명의 실시예들이 실시될 수 있는 예시적인 컴퓨터 시스템을 나타낸다. 일반적으로, 컴퓨터 시스템(100)은 정보를 통신하기 위한 버스(110), 버스(110)에 결합되어 정보 및 명령들을 처리하기 위한 프로세서(101), 버스(110)에 결합되어 프로세서(101)에 대한 정보 및 명령들을 저장하기 위한, 랜덤 액세스 메모리(RAM)로도 지칭되는 휘발성 메모리(102), 및 버스(110)에 결합되어 프로세스(101)에 대한 정적 정보 및 명령들을 저장하기 위한, 여기서 판독 전용 메모리(ROM)로도 지칭되는 비휘발성 메모리(103)를 포함한다.1 illustrates an exemplary computer system in which embodiments of the present invention may be practiced. In general, computer system 100 is a bus 110 for communicating information, a processor 101 coupled to bus 110 to process information and instructions, and a bus 110 coupled to bus 110 to processor 101. Volatile memory 102, also referred to as random access memory (RAM) for storing information and instructions, and coupled to bus 110 to store static information and instructions for process 101, where read-only Non-volatile memory 103, also referred to as memory (ROM).

일 실시예에서, 컴퓨터 시스템(100)은 버스(110)에 결합되어 정보 및 명령들을 저장하기 위한 자기 또는 광 디스크 및 디스크 드라이브와 같은 광학 데이터 저장 장치(104)를 옵션으로 포함한다. 일 실시예에서, 컴퓨터 시스템(100)은 버스(110)에 결합되어 컴퓨터 사용자에게 정보를 표시하기 위한 표시 장치(105)와 같은 사용자 출력 장치, 버스(110)에 결합되어 정보 및 커맨드 선택들을 프로세서(101)에 통신하기 위한 영숫자 및 기능 키들을 포함하는 영숫자 입력 장치(106)와 같은 사용자 입력 장치, 및/또는 버스(110)에 결합되어 사용자 입력 정보 및 커맨드 선택들을 프로세서(101)에 통신하기 위한 커서 제어 장치(107)와 같은 사용자 입력 장치를 옵션으로 포함한다. 또한, 옵션인 입출력(I/O) 장치(108)가 예를 들어 네트워크 상에 컴퓨터 시스템(100)을 결합하는 데 사용된다.In one embodiment, computer system 100 optionally includes an optical data storage device 104 such as a magnetic or optical disk and a disk drive coupled to bus 110 for storing information and instructions. In one embodiment, computer system 100 is coupled to bus 110 to a user output device, such as display device 105 for displaying information to a computer user, coupled to bus 110 to process information and command selections. A user input device, such as an alphanumeric input device 106 including alphanumeric and function keys for communicating to 101, and / or coupled to the bus 110 to communicate user input information and command selections to the processor 101. A user input device, such as a cursor control device 107, as an option. In addition, an optional input / output (I / O) device 108 is used to couple the computer system 100 on a network, for example.

일 실시예에서, 컴퓨터 시스템(100)은 또한, 다수의 비디오 인코딩 표준 중 하나를 이용하여 인코딩된 비디오 스트림을 디코딩하기 위한, 여기서 디코더 장치(150)로도 지칭되는 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함한다. 디코더 장치(150)는 다수의 비디오 인코딩 표준에 의해 요구되는 디코딩 동작들을 수행하기 위한 복수의 하드웨어 디코딩 블록을 포함한다. 디코더 장치(150)는 디지털 정지 이미지들 및 디지털 영화들을 포함하는 비디오 인코딩 표준들의 임의 조합에 따라 비디오를 디코딩하도록 구성될 수 있다는 것을 이해해야 한다. 예를 들어, 디코더 장치(150)는 JPEG, MPEG-4, H.263, H.263+, H.264, 및 윈도우 미디어(WMV9/VC-1) 포맷들 중 임의 포맷을 이용하여 인코딩된 비디오를 디코딩하도록 구성될 수 있다.In one embodiment, computer system 100 is also a hardware multi-standard video decoder device 150, also referred to herein as decoder device 150, for decoding a video stream encoded using one of a number of video encoding standards. It includes. Decoder device 150 includes a plurality of hardware decoding blocks for performing decoding operations required by multiple video encoding standards. It should be understood that decoder device 150 may be configured to decode video according to any combination of video encoding standards, including digital still images and digital movies. For example, decoder device 150 may encode video using any of JPEG, MPEG-4, H.263, H.263 +, H.264, and Window Media (WMV9 / VC-1) formats. It can be configured to decode.

디코더 장치(150)는 개별 컴포넌트, 접속기(예를 들어, AGP 슬롯, PCI-Express 슬롯 등)를 통해 컴퓨터 시스템(100)에 결합되도록 설계된 개별 그래픽 카드, 개별 집적 회로 다이(예를 들어, 마더 보드 상에 직접 실장됨)로서, 또는 컴퓨터 시스템 칩셋 컴포넌트의 집적 회로 다이 내에 포함된 통합 디코더 장치로서 구현될 수 있다는 것을 이해해야 한다. 또한, 디코더 장치(150)의 데이터 저장을 위해 로컬 그래픽 메모리가 포함될 수 있다.Decoder device 150 is a discrete graphics card, discrete integrated circuit die (eg, motherboard) designed to be coupled to computer system 100 via discrete components, connectors (eg, AGP slots, PCI-Express slots, etc.). It may be implemented as an integrated decoder device included in an integrated circuit die of a computer system chipset component. In addition, a local graphics memory may be included for data storage of the decoder device 150.

도 2A는 본 발명의 일 실시예에 따라 인쇄 회로 기판 상에 구현된 예시적인 하드웨어 비디오 디코더 카드(200)의 도면을 나타낸다. 하드웨어 비디오 디코더 카드(200)는 인쇄 회로 기판(PCB; 210), 집적 회로(IC) 칩(220), 데이터 라인(225) 및 접속기(230)를 포함한다. IC 칩(220)은 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함한다. 접속기(230)는 컴퓨터 시스템의 접속기(예를 들어, AGP 슬롯, PCI-Express 슬롯 등)를 통해 컴퓨터 시스템(예를 들어, 도 1의 컴퓨터 시스템(100))에 결합하도록 구성된다. 데이터 라인(225)은 컴퓨터 시스템과 IC 칩(220) 간에 데이터(예를 들어, 비트 스트림)를 통신하기 위한 것이다.2A shows a diagram of an exemplary hardware video decoder card 200 implemented on a printed circuit board in accordance with one embodiment of the present invention. The hardware video decoder card 200 includes a printed circuit board (PCB) 210, an integrated circuit (IC) chip 220, a data line 225, and a connector 230. IC chip 220 includes a hardware multi-standard video decoder device 150. The connector 230 is configured to couple to a computer system (eg, the computer system 100 of FIG. 1) through a connector (eg, an AGP slot, a PCI-Express slot, etc.) of the computer system. Data line 225 is for communicating data (eg, a bit stream) between computer system and IC chip 220.

도 2B는 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치(150)를 포함하는 예시적인 아키텍처(250)의 도면을 나타낸다. 아키텍처(250)는 마이크로코드 엔진(260), 하드웨어 다중 표준 비디오 디코더 장치(150) 및 메모리(270)를 포함한다. 일 실시예에서, 마이크로코드 엔진(260)은 하드웨어 다중 표준 비디오 디코더 장치(150)의 동작을 제어한다. 마이크로코드 엔진(260)은 기계 명령과 하드웨어 장치 디코더(150) 사이의 번역 계층으로 동작하는, 하드웨어 다중 표준 비디오 디코더 장치(150)가 수행하여야 하는 동작들을 포함한다. 일 실시예에서, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 마이크로코드 엔진(260)에서 행해진다. 메모리(270)는 디코더 장치(150)에 의해 수신된 비디오 스트림들에 대해 디코딩 및 후처리 동작들을 수행하는 데 사용된다. 동작 메모리(270)의 일 실시예가 도 3의 메모리(330)에서 설명된다.2B shows a diagram of an exemplary architecture 250 that includes a hardware multi-standard video decoder device 150 in accordance with an embodiment of the present invention. Architecture 250 includes a microcode engine 260, a hardware multi-standard video decoder device 150, and a memory 270. In one embodiment, microcode engine 260 controls the operation of hardware multiple standard video decoder device 150. The microcode engine 260 includes operations that the hardware multi-standard video decoder device 150 should perform, acting as a translation layer between the machine instructions and the hardware device decoder 150. In one embodiment, bit stream parsing and variable length decoding (VLD) are performed in the microcode engine 260. Memory 270 is used to perform decoding and post-processing operations on the video streams received by decoder device 150. One embodiment of the operating memory 270 is described in the memory 330 of FIG.

도 2B를 참조하면, 일 실시예에서, 본 발명은 마이크로코드 엔진(260)에서 매크로블록들을 재배열하는 것을 제공한다. 후술하는 바와 같이, 디코더 장치(150)는 루프내 디블록킹(예를 들어, 루프내 디블록킹 필터(440)에서) 및 루프외 디블록킹 및/또는 디링잉(예를 들어, 루프외 필터(442)에서)과 같은 상이한 후처리 동작들을 지원한다. 다양한 실시예에서, 루프내 디블록킹은 매크로블록들이 래스터 스캔 순서로 루프내 디블록킹 필터에서 수신되는 것을 요구한다. 그러나, H.264와 같은 소정의 비디오 표준들은 비 래스터 스캔 순서로의 매크로블록들의 송수신을 지원한다. 따라서, 본 발명은 비 래스터 스캔 순서로의 매크로블록들의 송수신을 지원하는 비디오 표준들을 위한 루프내 디블록킹을 지원하기 위하여 래스터 스캔 순서로 매크로블록들을 재배열하는 것을 제공한다.2B, in one embodiment, the present invention provides for rearranging macroblocks in the microcode engine 260. As shown in FIG. As described below, decoder device 150 may include in-loop deblocking (eg, in in-loop deblocking filter 440) and out-of-loop deblocking and / or de-ringing (eg, out-of-loop filter 442). Different post-processing operations, such as In various embodiments, in-loop deblocking requires macroblocks to be received at the in-loop deblocking filter in raster scan order. However, certain video standards, such as H.264, support the transmission and reception of macroblocks in non-raster scan order. Accordingly, the present invention provides for rearranging macroblocks in raster scan order to support in-loop deblocking for video standards that support the transmission and reception of macroblocks in non-raster scan order.

일 실시예에서, 마이크로코드 엔진(260)에서 전처리 동작들이 수행된다. 일 실시예에서, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 마이크로코드 엔진(260)에서 수행된다. 마이크로코드 엔진(260)은 매크로블록들을 하드웨어 디코더 장치(150)로 전송하기 전에 이들을 배열하도록 구성된다. 마이크로코드 엔진(260)은 압축 데이터의 일 프레임을 버퍼링한다. 일 실시예에서, 마이크로코드 엔진(260)은 실행 길이 인코딩된 압축 데이터의 일 프레임을 버퍼링한다. 일 실시예에서, 마이크로코드 엔진(260)은 착신 비트 스트림을 파싱한 후, VLD를 수행한다. 마이크로코드 엔진(260)이 무질서 매크로블록들을 검출하는 경우, 데이터를 버퍼링하고, 모든 매크로블록이 수신되기를 기다린다. 이어서, 마이크로코드 엔진(260)은 매크로블록들을 래스터 스캔 순서로 배열하여, 이들을 하드웨어 디코더 장치(150)로 전송한다.In one embodiment, preprocessing operations are performed in microcode engine 260. In one embodiment, bit stream parsing and variable length decoding (VLD) are performed in the microcode engine 260. The microcode engine 260 is configured to arrange the macroblocks before sending them to the hardware decoder device 150. The microcode engine 260 buffers one frame of compressed data. In one embodiment, microcode engine 260 buffers one frame of run length encoded compressed data. In one embodiment, the microcode engine 260 parses the incoming bit stream and then performs the VLD. When the microcode engine 260 detects disordered macroblocks, it buffers the data and waits for all macroblocks to be received. The microcode engine 260 then arranges the macroblocks in raster scan order and sends them to the hardware decoder device 150.

매크로블록들이 여전히 압축 데이터로 있는 동안 매크로블록들을 버퍼링함으로써, 마이크로코드 엔진(260)은 디코딩된 비디오 데이터보다 훨씬 적은 실행 길이 인코딩된 압축 데이터의 최대 일 프레임만 버퍼링하면 된다. 또한, 압축 매크로블록들의 버퍼링은 또한 전력을 절약한다. 무선을 통해 수신된 비디오 스트림들은 또한 많은 에러가 발생한다. 마이크로코드 엔진(260)에 대한 비트 스트림 파싱의 파티셔닝은 또한 에러 복구를 향상시키는 이점을 갖는다.By buffering macroblocks while the macroblocks are still compressed data, the microcode engine 260 only needs to buffer a maximum of one frame of run length encoded compressed data much less than the decoded video data. In addition, buffering compressed macroblocks also saves power. Video streams received over the air also generate many errors. Partitioning of bit stream parsing to microcode engine 260 also has the advantage of improving error recovery.

하드웨어 다중 표준 비디오 디코더 장치 구조Hardware Multi-Standard Video Decoder Device Architecture

도 3은 본 발명의 일 실시예에 따른 하드웨어 다중 표준 비디오 디코더 장치(150)의 내부 컴포넌트들을 나타내는 도면을 도시한다. 도 3에 도시된 바와 같이, 디코더 장치(150)는 커맨드 파서(305), 복수의 하드웨어 디코딩 블록(310 내지 318), 하드웨어 후처리 블록(320) 및 메모리(330)를 포함한다. 디코더 장치(150)는 다수의 비디오 인코딩 표준을 디코딩할 수 있다.3 illustrates internal components of a hardware multi-standard video decoder device 150 in accordance with an embodiment of the present invention. As shown in FIG. 3, the decoder device 150 includes a command parser 305, a plurality of hardware decoding blocks 310 to 318, a hardware post-processing block 320, and a memory 330. Decoder device 150 may decode a number of video encoding standards.

커맨드 파서(305)는 비디오 스트림(302)(예를 들어, 비트 스트림)에 액세스하기 위한 것이다. 비디오 스트림(302)은 다수의 비디오 인코딩 표준 중 하나에 따라 인코딩된 압축 비디오 스트림이다. 비디오 스트림(302)은 디지털 정지 이미지 데이터(예를 들어, JPEG 인코딩됨) 또는 디지털 영화 데이터(예를 들어, MPEG-4)를 포함할 수 있다는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림(302)은 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))으로부터 수신된다. 커맨드 파서(305)는 비디오 스트림(302)을 인코딩하는 데 사용된 비디오 인코딩 표준을 식별한다. 일 실시예에서, 커맨드 파서(305)가 비디오 스트림(302)에 액세스하기 전에, 비트 스트림 파싱 및 가변 길이 디코딩(VLD)이 수행된다. 비트 스트림 파싱 및 VLD는 호스트 CPU(예를 들어, 도 1의 프로세서(101)) 또는 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))에 의해 수행될 수 있다. 커맨드 파서(305)는 또한 클럭 사이클들을 제어함으로써 디코더 장치(150)를 통한 데이터의 이동을 제어한다.The command parser 305 is for accessing the video stream 302 (eg, bit stream). Video stream 302 is a compressed video stream encoded according to one of a number of video encoding standards. It should be understood that video stream 302 may include digital still image data (eg, JPEG encoded) or digital movie data (eg, MPEG-4). In one embodiment, video stream 302 is received from a microcode engine (eg, microcode engine 260 of FIG. 2B). Command parser 305 identifies the video encoding standard used to encode video stream 302. In one embodiment, bit stream parsing and variable length decoding (VLD) is performed before the command parser 305 accesses the video stream 302. Bit stream parsing and VLD may be performed by a host CPU (eg, processor 101 of FIG. 1) or by a microcode engine (eg, microcode engine 260 of FIG. 2B). The command parser 305 also controls the movement of data through the decoder device 150 by controlling clock cycles.

복수의 하드웨어 디코딩 블록(310 내지 318)은 상기 비디오 스트림의 디코딩과 연관된 동작들을 수행하기 위한 것이다. 하드웨어 디코딩 블록들(310 내지 318)은 비디오 디코더(150) 내에서 구현되는 비디오 표준들에 따라 비디오 스트림들을 디코딩하는 데 필요한 상이한 디코딩 기능들을 나타낸다는 것을 이해해야 한다. MPEG-4와 같은 비디오 인코딩 표준들은 비디오 스트림을 디코딩하기 위해 특정 동작들이 수행될 것을 요구하며, 따라서 모든 MPEG-4 디코더는 MPEG-4 비디오 스트림들을 디코딩할 수 있게 된다. 다양한 표준에 따라 디코딩을 수행하는 데 필요한 동작들은 이 분야의 전문가에게 공지되어 있다는 것을 이해해야 한다.A plurality of hardware decoding blocks 310-318 are for performing operations associated with decoding of the video stream. It should be understood that the hardware decoding blocks 310-318 represent different decoding functions required to decode video streams in accordance with video standards implemented within the video decoder 150. Video encoding standards such as MPEG-4 require certain operations to be performed to decode a video stream, so that all MPEG-4 decoders can decode MPEG-4 video streams. It should be understood that the operations required to perform decoding in accordance with various standards are known to those skilled in the art.

일 실시예에서, 디코더 장치(150)의 하드웨어 디코딩 블록들은 매크로블록 레벨로(예를 들어, 8x8 픽셀 매크로블록) 동작들을 수행하도록 구성된다. 그러나, 디코더 장치(150)는 프레임 레벨과 같은 다른 차원의 레벨들로 동작들을 수행하는 하드웨어 디코딩 블록들을 포함할 수 있다는 것을 이해해야 한다.In one embodiment, the hardware decoding blocks of decoder device 150 are configured to perform operations at the macroblock level (eg, 8x8 pixel macroblocks). However, it should be understood that the decoder device 150 may include hardware decoding blocks that perform operations at levels of other dimensions, such as the frame level.

하드웨어 디코딩 블록들(310-318)의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위한 것이다. 예를 들어, 제1 예시적인 비디오 표준은 비디오 스트림의 디코딩시 하드웨어 디코딩 블록들(312, 316)의 사용을 요구한다. 제2 예시적인 비디오 표준은 비디오 스트림의 디코딩시 하드웨어 디코딩 블록들(310, 312, 314, 318)의 사용을 요구한다. 따라서, 본 발명의 다양한 실시예에서, 비디오 스트림을 디코딩하는 데 필요한 하드웨어 디코딩 블록들만이 식별된 비디오 표준을 이용하여 인코딩된 비디오 스트림의 디코딩시에 사용된다.Different subsets of the hardware decoding blocks 310-318 are for decoding video streams encoded using different video encoding standards. For example, the first exemplary video standard requires the use of hardware decoding blocks 312 and 316 in decoding the video stream. The second exemplary video standard requires the use of hardware decoding blocks 310, 312, 314, 318 in decoding a video stream. Thus, in various embodiments of the present invention, only the hardware decoding blocks needed to decode the video stream are used in decoding the video stream encoded using the identified video standard.

일 실시예에서, 커맨드 파서(305)는 수신된 비디오 스트림의 디코딩에 필요한 하드웨어 디코딩 블록들만을 활성화하도록 동작할 수 있으며, 따라서 상기 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다. 예를 들어, 제1의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 하드웨어 디코딩 블록들의 제1 서브세트(예를 들어, 하드웨어 디코딩 블록들 312, 316)가 활성화되며, 따라서 비디오 스트림의 디코딩에 관련되지 않은 하드웨어 디코딩 블록들(예를 들어, 하드웨어 디코딩 블록들 310, 314, 318)은 활성화되지 않는다. 다른 예에서, 제2의 식별된 비디오 인코딩 표준을 디코딩하는 데 사용되는 하드웨어 디코딩 블록들의 제2 서브세트(예를 들어, 하드웨어 디코딩 블록들 310, 312, 314, 318)가 활성화되고, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록(예를 들어, 하드웨어 디코딩 블록 316)은 활성화되지 않는다. 일 실시예에서, 커맨드 파서(305)는 활성화된 유일한 디코더 장치(150)의 컴포넌트이다. 하드웨어 디코딩 블록들은 식별된 비디오 표준 및 데이터 흐름에 따라 필요에 따라 활성화된다.In one embodiment, the command parser 305 may operate to activate only the hardware decoding blocks needed for decoding the received video stream, so that hardware decoding blocks not associated with decoding of the video stream are not activated. For example, a first subset of hardware decoding blocks (e.g., hardware decoding blocks 312, 316) used to decode the first identified video encoding standard is activated and thus related to the decoding of the video stream. Hardware decoding blocks that are not (eg, hardware decoding blocks 310, 314, 318) are not activated. In another example, a second subset of hardware decoding blocks (eg, hardware decoding blocks 310, 312, 314, 318) used to decode the second identified video encoding standard is activated and thus the video stream. A hardware decoding block (eg, hardware decoding block 316) not associated with the decoding of is not activated. In one embodiment, the command parser 305 is a component of the only decoder device 150 that is active. Hardware decoding blocks are activated as needed according to the identified video standard and data flow.

일 실시예에서, 디코더 장치(150)의 하드웨어 디코딩 블록들은 다중 스테이지 매크로블록 레벨 파이프라인 내에 구현된다. 도 3에 도시된 바와 같이, 디코더 장치(150)는 하드웨어 디코딩 블록들(310, 312)을 포함하는 파이프라인 스테이지 1, 및 하드웨어 디코딩 블록들(314, 316, 318)을 포함하는 파이프라인 스테이지 2를 포함하는 3 스테이지 매크로블록 레벨 파이프라인으로 구현된다. 일 실시예에서, 커맨드 파서(305)는 비디오 스트림(302)의 매크로블록을 파이프라인 스테이지 1의 하드웨어 디코딩 블록들로 지향시킨다. 일 실시예에서, 둘 이상의 매크로블록이 파이프라인 스테이지 1에 위치할 수 있는 반면, 파이프라인 스테이지 2 및 3은 하나의 매크로블록만이 위치하는 것으로 제한된다. 일 실시예에서, 하드웨어 디코딩 블록들(312, 316, 318)은 잔여 데이터 경로 내에 있고, 하드웨어 디코딩 블록들(310, 314)은 예측 데이터 경로 내에 있다. 일 실시예에서, 잔여 데이터 경로는 에러 또는 차분 데이터를 처리하며, 예측 경로는 이전 프레임 또는 매크로블록과 연관된 데이터에 액세스한다.In one embodiment, the hardware decoding blocks of decoder device 150 are implemented in a multi-stage macroblock level pipeline. As shown in FIG. 3, the decoder device 150 includes a pipeline stage 1 that includes hardware decoding blocks 310 and 312, and a pipeline stage 2 that includes hardware decoding blocks 314, 316, and 318. It is implemented as a three stage macroblock level pipeline comprising: In one embodiment, command parser 305 directs the macroblock of video stream 302 to the hardware decoding blocks of pipeline stage 1. In one embodiment, two or more macroblocks may be located in pipeline stage 1, while pipeline stages 2 and 3 are limited to having only one macroblock. In one embodiment, the hardware decoding blocks 312, 316, 318 are in the residual data path and the hardware decoding blocks 310, 314 are in the prediction data path. In one embodiment, the residual data path handles error or differential data, and the prediction path accesses data associated with the previous frame or macroblock.

일 실시예에서, 커맨드 파서(305)는 상기 비디오 스트림의 어떠한 데이터도 다중 스테이지 매크로블록 레벨 파이프라인의 일 스테이지에서 수신되지 않는 경우에 상기 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하도록 동작할 수 있다. 예를 들어, 비디오 스트림(302)의 디코딩시, 비디오 스트림(302)의 최종 데이터가 파이프라인 스테이지 1을 떠나고, 파이프라인 스테이지 1에 어떠한 데이터도 수신되지 않을 때, 파이프라인 스테이지 1의 모든 하드웨어 디코딩 블록은 비활성화된다. 따라서, 비디오 스트림(302)과 연관된 비디오 표준을 위해 하드웨어 디코딩 블록들이 필요한 경우에도 파이프라인 스테이지의 모든 하드웨어 디코딩 블록을 비활성화함으로써 추가적인 전력 절감이 달성된다.In one embodiment, the command parser 305 may be operable to deactivate hardware decoding blocks within the stage if no data in the video stream is received at one stage of a multi-stage macroblock level pipeline. For example, when decoding the video stream 302, when the final data of the video stream 302 leaves pipeline stage 1 and no data is received in pipeline stage 1, all hardware decoding of pipeline stage 1 The block is deactivated. Thus, additional power savings are achieved by deactivating all hardware decoding blocks of the pipeline stage even if hardware decoding blocks are needed for the video standard associated with the video stream 302.

일 실시예에서, 비디오 스트림(302)은 완전히 디코딩될 때까지 메모리(330)로 들어가거나 그 밖으로 나오지 않는다. 메모리(330)는 외부 메모리 유닛(예를 들어, 도 1의 휘발성 메모리(102) 또는 비휘발성 메모리(103)) 또는 디코더 장치(150)의 내장 메모리 유닛일 수 있다. 비디오 스트림(302)을 완전히 디코딩한 후까지 메모리(330)에 액세스하지 않음으로써, 디코더 장치(150)는 더 적은 전력을 사용한다.In one embodiment, video stream 302 does not enter or exit memory 330 until fully decoded. The memory 330 may be an external memory unit (eg, the volatile memory 102 or the nonvolatile memory 103 of FIG. 1) or an internal memory unit of the decoder device 150. By not accessing the memory 330 until after the video stream 302 has been fully decoded, the decoder device 150 uses less power.

일 실시예에서, 디코더 장치(150)는 디코딩된 비디오 스트림에 대해 후처리 동작을 수행하기 위한 하드웨어 후처리 블록(320)을 더 포함한다. 일 실시예에서, 하드웨어 후처리 블록(320)은 디블록킹 필터를 포함한다. 디블록킹 필터는 루프내 디블록킹 필터 또는 루프외 디블록킹 및/또는 디링잉 필터일 수 있다는 것을 이해해야 한다. 루프내 디블록킹 필터는 메모리(330)에 액세스하기 전에 디블록킹 동작들을 수행한다. 루프외 디블록킹 및 디링잉 필터는 메모리(330)로부터 액세스된 데이터에 대해 디블록킹 및 디링잉 동작을 수행한다. 그러나, 하드웨어 후처리 블록(320)은 임의 타입의 후처리 동작을 수행할 수 있다는 것을 이해해야 한다. 더욱이, 다수의 후처리 동작을 수행하기 위한 임의 수의 하드웨어 후처리 블록들(320)이 존재할 수 있다.In one embodiment, the decoder device 150 further includes a hardware post-processing block 320 for performing a post-processing operation on the decoded video stream. In one embodiment, hardware post-processing block 320 includes a deblocking filter. It should be understood that the deblocking filter may be an in-loop deblocking filter or an out-of-loop deblocking and / or deringing filter. In-loop deblocking filter performs deblocking operations before accessing memory 330. The out-of-loop deblocking and deringing filter performs deblocking and deringing operations on the data accessed from the memory 330. However, it should be understood that hardware post-processing block 320 may perform any type of post-processing operation. Moreover, there may be any number of hardware post processing blocks 320 for performing multiple post processing operations.

일 실시예에서, 커맨드 파서(305)는 비디오 스트림(302)이 디코딩된 비디오 스트림인 경우에 모든 하드웨어 디코딩 블록을 비활성화하도록 동작할 수 있으며, 따라서 하드웨어 후처리 블록(320)은 디코딩된 비디오 스트림에 대해 후처리 동작을 수행할 수 있게 된다. 즉, 디코더 장치(150)는 하드웨어 후처리 장치로서만 사용될 수도 있다. 디코딩된 비디오 스트림이 디코더 장치(150)에서 수신되는 경우, 모든 하드웨어 디코딩 블록이 비활성화되고, 디코딩된 비디오 스트림에 대한 후처리 동작이 수행된다.In one embodiment, the command parser 305 may operate to deactivate all hardware decoding blocks if the video stream 302 is a decoded video stream, such that the hardware post processing block 320 may be decoded in the decoded video stream. It is possible to perform a post-processing operation on the. In other words, the decoder device 150 may be used only as a hardware post-processing device. When the decoded video stream is received at the decoder device 150, all hardware decoding blocks are deactivated, and a post processing operation on the decoded video stream is performed.

도 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 is a block diagram illustrating internal components of an exemplary hardware multi-standard video decoder device 400, also referred to as decoder device 400, in accordance with an embodiment of the present invention. Decoder device 400 is configured to operate as any one of JPEG, MPEG-4, H.263, H.263 +, H.264 or WMC9 / V3-1 decoders. Thus, the decoder device 400 is required to decode video streams encoded using any of the JPEG, MPEG-4, H.263, H.263 +, H.264 or WMC9 / V3-1 standards. Hardware decoding blocks for performing a decoding operation. However, it should be understood that the present invention is flexible to support of other video standards, and the present invention is not intended to be limited to the embodiment described in FIG.

도 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)는 지원되지 않는 표준을 이용하여 인코딩된 비디오 스트림에 대해 디코딩이 수행될 수 없음을 지시하는 지시를 컴퓨터 시스템에 전송한다.As shown in FIG. 4, the decoder device 400 includes a command parser 402, a plurality of hardware decoding blocks, a plurality of hardware post-processing blocks, and a memory 460. The command parser 402 is for accessing the video stream 401 (eg, bit stream). It should be understood that video stream 401 may include digital still image data (eg, JPEG encoded) or digital movie data (eg, MPEG-4). In one embodiment, video stream 401 is received from a microcode engine (eg, microcode engine 260 of FIG. 2B). Video stream 401 is a compressed video stream encoded according to one of a number of video encoding standards. Command parser 402 identifies the video encoding standard used to encode video strip 401. In one embodiment, before the command parser 402 accesses the video stream 401, bit stream parsing and variable length decoding (VLD) are performed. Bit stream parsing and VLD may be performed by a host CPU (eg, processor 101 of FIG. 1) or a microcode engine. It should be understood that if the video stream 401 has been encoded using a different video standard than those that the decoder device 400 is configured to decode, then no decoding operation is performed. In one embodiment, the command parser 402 sends an indication to the computer system indicating that decoding cannot be performed on a video stream encoded using an unsupported standard.

비디오 스트림(401)을 인코딩하는 데 사용된 비디오 표준의 식별시, 커맨드 파서(402)는 비디오 스트림(401)의 매크로블록들을 식별된 비디오 표준에 적합한 하드웨어 디코딩 블록들로 지향시킨다. 일 실시예에서, 커맨드 파서는 식별된 비디오 표준에 적합한 하드웨어 디코딩 블록들을 활성화하며, 따라서 식별된 비디오 표준에 대해 필요하지 않은 하드웨어 디코딩 블록들은 비활성화된다. 커맨드 파서(402)는 또한 클럭 사이클들을 제어함으로써 디코더 장치(400)를 통한 데이터의 이동을 제어한다. 일 실시예에서, 커맨드 파서(402)는 활성화된 유일한 디코더 장치(400)의 컴포넌트이다. 하드웨어 디코딩 블록들은 식별된 비디오 표준 및 데이터 흐름에 따라 필요에 따라 활성화된다.In identifying the video standard used to encode the video stream 401, the command parser 402 directs macroblocks of the video stream 401 to hardware decoding blocks suitable for the identified video standard. In one embodiment, the command parser activates hardware decoding blocks suitable for the identified video standard, so that hardware decoding blocks that are not needed for the identified video standard are deactivated. Command parser 402 also controls the movement of data through decoder device 400 by controlling clock cycles. In one embodiment, the command parser 402 is a component of the only decoder device 400 that is active. Hardware decoding blocks are activated as needed according to the identified video standard and data flow.

디코더 장치(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)을 옵션으로 포함한다.The hardware decoding blocks of the decoder device 400 include the intra prediction mode engine 404, the motion vector (MV) prediction engine 406, the coefficient (eg, execution length (RD) or inverse quantization) engine 408, AC / DC (eg, AC / DC prediction or inverse quantization) prediction engine 410, intra prediction engine 414, rotation engine 415, motion compensation engine 416, 4x4 inverse transform engine 418, 8x8 inverse Discrete Cosine Transform (IDCT) engine 420, IDCT format converter engine 422, intra prediction buffer 432, prediction sample 434, and residual block 436. Decoder device 400 further includes multiplexers 405, 409, 417, 419, 439 and adder 435. Decoder device 400 also optionally includes hardware post-processing blocks, namely an in-loop deblocking filter 440, an out-of-loop filter 442, and a rotation engine 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)을 포함한다.Decoder device 400 is implemented in a three stage macroblock level pipeline with a residual path and a prediction path. In one embodiment, two or more macroblocks may be located in pipeline stage 1, while pipeline stages 2 and 3 are limited to having only one macroblock. The residual path includes a coefficient engine 408, an AC / DC prediction engine 410, a 4x4 inverse transform engine 418, an 8x8 IDCT engine 420, an IDCT format converter engine 422, and a residual block 436. The prediction path is intra prediction mode engine 404, MV prediction engine 406, intra prediction engine 414, rotation engine 415, motion compensation engine 416, intra prediction buffer 432, and prediction sample 434. It includes.

전술한 바와 같이, 디코더 장치(400)는 JPEG, MPEG-4, H.263, H.263+, H.264 또는 WMC9/V3-1 표준들 중 어느 하나에 따라 비디오 스트림들을 디코딩하도록 동작할 수 있다. 설명된 하드웨어 디코딩 블록들은 지원되는 표준들에 따라 요구되는 모든 디코딩 동작을 수행한다. 하드웨어 디코딩 블록들의 특정 동작들은 표준들 각각에 기술되므로 이 분야의 전문가에게 공지되고 이해된다. 따라서, 하드웨어 디코딩 블록들의 특정 동작들은 여기에 상세히 설명되지 않는다.As mentioned above, the decoder device 400 may be operable to decode video streams in accordance with any of the JPEG, MPEG-4, H.263, H.263 +, H.264 or WMC9 / V3-1 standards. have. The described hardware decoding blocks perform all the decoding operations required according to the supported standards. Specific operations of hardware decoding blocks are described in each of the standards and are therefore known and understood by those skilled in the art. Thus, certain operations of hardware decoding blocks are not described in detail herein.

일 실시예에서, MV 파라미터들 및 인트라 예측 파라미터들은 각각 예측 경로에서 MV 예측 엔진(406) 및 인트라 예측 모드 엔진(404)으로 전달된다. 이들 엔진은 프로그래밍된 비디오 표준에 기초하여 실제 모션 벡터들 또는 인트라 예측 모드를 계산하여 이들을 각각 모션 보상 엔진(416) 또는 인트라 예측 엔진(414)으로 전달한다. 모션 보상 엔진(416) 또는 인트라 예측 엔진(414)은 예측 데이터를 계산한다. 일 실시예에서, 모션 보상 엔진(416)은 회전 엔진(415)을 포함한다. 회전 엔진(415)은 참조 프레임을 착신 비디오 프레임과 정렬하도록 회전시키기 위한 것이다. 회전 엔진(415)은 모션 보상 엔진이 비디오 스트림의 인코딩에 사용될 때마다 활성화된다. 한편, 에러 데이터는 계수 엔진(408), AC/DC 예측 엔진(410), 4x4 역변환 엔진(418), 8x8 IDCT 엔진(420) 및 IDCT 포맷 변환기 엔진(422)의 필요한 서브세트에서 처리된다.In one embodiment, MV parameters and intra prediction parameters are passed to MV prediction engine 406 and intra prediction mode engine 404 in the prediction path, respectively. These engines calculate the actual motion vectors or intra prediction mode based on the programmed video standard and pass them to the motion compensation engine 416 or intra prediction engine 414 respectively. Motion compensation engine 416 or intra prediction engine 414 calculates prediction data. In one embodiment, motion compensation engine 416 includes a rotation engine 415. The rotation engine 415 is for rotating the reference frame to align with the incoming video frame. Rotation engine 415 is activated whenever a motion compensation engine is used to encode a video stream. Error data, on the other hand, is processed in the required subset of coefficient engine 408, AC / DC prediction engine 410, 4x4 inverse transform engine 418, 8x8 IDCT engine 420, and IDCT format converter engine 422.

복구된 에러 데이터는 예측 데이터에 추가된 후, 파이프라인 스테이지 3으로 전달된다. 결과 데이터는 필요한 경우에 더 처리되고, 메모리(460)에 기입되어 표시된다. 루프내 디블록킹 필터는 H264 및 WMV9/VC-1 모드들에서 사용된다. WMV9/VC-1 모드에서, 루프내 디블록킹 필터(440)는 오버랩 평활화 필터를 구현하는 데 사용된다. 루프외 필터(442)는 디코딩된 이미지의 품질을 향상시키기 위해 임의의 비디오 스트림 상에서 사용될 수 있다. 일 실시예에서, 루프외 필터(442)는 디코더 장치(400)의 나머지와 동시에 실행된다. 루프외 필터(442)는 프레임이 메모리(460) 내로 디코딩된 후에 트리거되어야 한다. 디코딩된 이미지는 또한 회전 엔진(450)에서 파이프라인 스테이지 3 내의 메모리(460)에 기입되기 전에 회전될 수 있다.The recovered error data is added to the prediction data and then passed to pipeline stage 3. The resulting data is further processed as needed and written to and displayed in memory 460. In-loop deblocking filter is used in H264 and WMV9 / VC-1 modes. In WMV9 / VC-1 mode, in-loop deblocking filter 440 is used to implement the overlap smoothing filter. The out of loop filter 442 can be used on any video stream to improve the quality of the decoded image. In one embodiment, the out-of-loop filter 442 is executed concurrently with the rest of the decoder device 400. The out-of-loop filter 442 should be triggered after the frame is decoded into memory 460. The decoded image may also be rotated before it is written to the memory 460 in pipeline stage 3 in the rotation engine 450.

지원되는 비디오 표준들에 대한 하드웨어 다중 표준 비디오 디코더 장치의 예시적인 동작Exemplary Operation of a Hardware Multi-Standard Video Decoder Device for Supported Video Standards

아래의 실시예들은 지원되는 비디오 표준들 각각에 대한 디코더 장치(400)의 동작을 설명한다.The following embodiments describe the operation of the decoder device 400 for each of the supported video standards.

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 : JPEG decoding does not require hardware decoding blocks of the prediction path because JPEG video streams are for playing digital still images. Thus, intra prediction mode engine 404, MV prediction engine 406, intra prediction engine 414, rotation engine 415, motion compensation engine 416, intra prediction buffer 432 and prediction sample 434 All are disabled for JPEG decoding. Also, JPEG decoding does not require a 4x4 inverse transform engine 418, which is thus deactivated. The command parser 402 uses the coefficient engine 408, the AC / DC prediction engine 410, the 8x8 IDCT engine 420, the decimal IDCT engine 438, the IDCT format converter engine 422, and the residual block 436. Activate it. Command parser 402 routes data from video stream 401 through active hardware decoding blocks for decoding a JPEG encoded video stream. It should be understood that the operations and sequence of operations performed by the hardware decoding blocks are required by the JPEG standard.

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 decoding requires only the use of an 8x8 IDCT engine 420 and a decimal IDCT engine 438. In one embodiment, the command parser 402 may be operative to identify which of the 8x8 IDCT engine 420 and the decimated IDCT engine 438 is activated for the video stream. The 8x8 IDCT engine 420 is activated to fully decode the video stream, while the decimal IDCT engine 438 is activated when the video stream indicates decimation. The IDCT format converter engine 422 may perform format conversion. For example, the IDCT format converter engine 422 converts the format between any of the YUV 4: 4: 4, YUV 4: 2: 2, YUV 4: 2: 2R, and YUV 4: 2: 0 formats. Can be done. It is to be understood that other format conversions may be performed, and that the IDCT format converter engine 422 is not limited to the formats listed.

디코딩된 JPEG 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 JPEG 비디오 스트림은 메모리(330)에 저장된다. 다른 실시예에서, 디코딩된 JPEG 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 후처리 동작들이 수행된다.The decoded JPEG video stream is in pipeline stage 2. In one embodiment, the decoded JPEG video stream is stored in memory 330. In another embodiment, post processing operations are performed on the decoded JPEG video streams prior to storing them in the memory 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 표준들에 의해 요구된다는 것을 이해해야 한다. MPEG- 4 / H.263 : MPEG-4 and H.263 decoding are very similar to each other for the purpose of the decoder apparatus 400. Specifically, the MPEG-4 standard requires MPEG-4 decoders to be able to decode H.263 encoded video streams. MPEG-4 and H.263 decoding does not require intra prediction mode engine 404, intra prediction engine 414, IDCT format converter engine 422, and 4x4 inverse transform engine 418, which are deactivated. In-loop deblocking filter 440 is also deactivated for post processing operations. Thus, the command parser may include an MV prediction engine 406, a coefficient engine 408, an AC / DC prediction engine 410, a rotation engine 415, a motion compensation engine 416, an 8x8 IDCT engine 420, an intra prediction buffer. 432, activate the prediction sample 434 and the residual block 436. Command parser 402 routes data from video stream 401 through active hardware decoding blocks for decoding an MPEG-4 or H.263 encoded video stream. It should be understood that the operations and sequence of operations performed by the hardware decoding blocks are required by the MPEG-4 and H.263 standards.

커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들로 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 예측 프레임들(P 프레임들)이 파이프라인 스테이지 1 내의 MV 예측 엔진(406)에서 처리되는 것과 동시에, 인트라 프레임들(I 프레임들)이 잔여 경로의 계수 엔진(408) 및 AC/DC 예측 엔진(410)에서 처리될 수 있다. I 프레임들 및 P 프레임들은 파이프라인 스테이지 2에서 동기화된다. 커맨드 파서(402)는 또한 8x8 IDCT 엔진(420)의 적절한 하드웨어 디코딩 블록들을 활성화할 수 있다.Command parser 402 may direct macroblocks to appropriate residual path or prediction path hardware decoding blocks. In one embodiment, while the prediction frames (P frames) are processed in the MV prediction engine 406 in pipeline stage 1, the intra frames (I frames) are added to the coefficient engine 408 and AC of the remaining path. / DC prediction engine 410 may be processed. I frames and P frames are synchronized in pipeline stage 2. Command parser 402 may also activate appropriate hardware decoding blocks of 8x8 IDCT engine 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)는 임의의 디블록킹 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.The decoded MPEG-4 / H.263 video stream is in pipeline stage 2. In one embodiment, the decoded MPEG-4 / H.263 video stream is stored in memory 330. In another embodiment, post-processing operations are performed on the decoded MPEG-4 / H.263 video streams prior to storing them in the memory 330. In another embodiment, post processing operations are performed on the MPEG-4 / H.263 video stream encoded in the out-of-loop filter 442. In one embodiment, out-of-loop filter 442 is a deblocking filter. In another embodiment, out-of-loop filter 442 is a deringing filter. In another embodiment, out-of-loop filter 442 is both a deblocking filter and a deringing filter. It should be understood that the out-of-loop filter 442 can be implemented as any deblocking and / or deringing filter.

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.263 + : H.263 + decoding is similar to MPEG-4 / H.263 decoding as described above. H.263 + shifts some of the decoding operation into the VLD, which is performed before the command parser 402 accesses the video stream 401. In addition to not requiring an intra prediction mode engine 404, an intra prediction engine 414, a 4x4 inverse transform engine 418, and an out-of-loop engine 442 and thus deactivating, the command parser 402 also has a counting engine ( 408 and deactivate the AC / DC prediction engine 410. In other respects, H.263 + decoding is similar to MPEG-4 / H.263 decoding as described above. It should be understood that the operations and sequence of operations performed by the hardware decoding blocks are required by the H.263 + standard.

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 표준에 의해 요구된다는 것을 이해해야 한다. H.264 : H.264 decoding does not require AC / DC prediction engine 410, 8x8 IDCT engine 420, and IDCT format converter engine 422, which are deactivated. Accordingly, the command parser 402 may include the intra prediction mode engine 404, the MV prediction engine 406, the coefficient engine 408, the intra prediction engine 414, the rotation engine 415, the motion compensation engine 416, 4x4. Inverse transform engine 418, intra prediction buffer 432, predictive sample 434, and residual block 436 are activated. Intra prediction buffer 432 can store the top row of pixels from the previous macroblock, so intra prediction engine 414 can access previous "leveling" pixels when processing the next row of macroblocks. The command parser 402 routes data from the video stream 401 through active hardware decoding blocks for decoding the H.264 encoded video stream. It should be understood that the operations and sequence of operations performed by the hardware decoding blocks are required by the H.264 standard.

커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들로 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 프레임들은 파이프라인 스테이지 1 내의 잔여 경로 및 예측 경로에서 동시에 처리될 수 있다. 프레임들은 파이프라인 스테이지 2에서 동기화된다.Command parser 402 may direct macroblocks to appropriate residual path or prediction path hardware decoding blocks. In one embodiment, the frames may be processed simultaneously in the residual path and the prediction path in pipeline stage 1. The frames are synchronized in pipeline stage 2.

디코딩된 H.264 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 H.264 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 루프내 후처리 동작들이 수행된다. 다른 실시예에서, 루프외 후처리 동작들이 루프외 필터(442)에서 디코딩된 H.264 비디오 스트림에 대해 수행된다. 루프외 필터(442)는 임의의 디블록킹 필터 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.The decoded H.264 video stream is in pipeline stage 2. In one embodiment, in-loop post-processing operations are performed on them before storing the decoded H.264 video stream in memory 330. In another embodiment, out-of-loop post-processing operations are performed on the H.264 video stream decoded in out-of-loop filter 442. It should be understood that the out-of-loop filter 442 can be implemented as any deblocking filter and / or deringing filter.

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 표준에 의해 요구된다는 것을 이해해야 한다. WMV9 / VC- 1 : WMV9 / VC-1 decoding does not require intra prediction mode engine 404 and intra prediction engine 414, which are deactivated. Accordingly, the command parser 402 may include the MV prediction engine 406, the coefficient engine 408, the AC / DC prediction engine 410, the rotation engine 415, the motion compensation engine 416, the 4 × 4 inverse transform engine 418, Activate the 8x8 IDCT engine 420, intra prediction buffer 432, prediction sample 434, and residual block 438. Command parser 402 routes data from video stream 401 through active hardware decoding blocks for decoding a WMV9 / VC-1 encoded video stream. It should be understood that the operations and sequence of operations performed by the hardware decoding blocks are required by the WMV9 / VC-1 standard.

커맨드 파서(402)는 적절한 잔여 경로 또는 예측 경로 하드웨어 디코딩 블록들에 매크로블록들을 지향시킬 수 있다. 일 실시예에서, 프레임들은 파이프라인 스테이지 1 내의 잔여 경로 및 예측 경로에서 동시에 처리될 수 있다. 프레임들은 파이프라인 스테이지 2에서 동기화된다.The command parser 402 can direct the macroblocks to the appropriate residual path or prediction path hardware decoding blocks. In one embodiment, the frames may be processed simultaneously in the residual path and the prediction path in pipeline stage 1. The frames are synchronized in pipeline stage 2.

디코딩된 WMV9/VC-1 비디오 스트림은 파이프라인 스테이지 2에 존재한다. 일 실시예에서, 디코딩된 WMV9/VC-1 비디오 스트림을 메모리(330)에 저장하기 전에 이들에 대해 루프내 후처리 동작들이 수행된다. 일 실시예에서, 루프내 디블록킹 필터(440)가 오버랩 평활화 필터를 구현하는 데 사용된다. 다른 실시예에서, 후처리 동작들이 루프외 필터(442)에서 디코딩된 WMV9/VC-1 비디오 스트림에 대해 수행된다. 루프외 필터(442)는 임의의 디블록킹 필터 및/또는 디링잉 필터로서 구현될 수 있다는 것을 이해해야 한다.The decoded WMV9 / VC-1 video stream is in pipeline stage 2. In one embodiment, in-loop post-processing operations are performed on them before storing the decoded WMV9 / VC-1 video stream in memory 330. In one embodiment, in-loop deblocking filter 440 is used to implement the overlap smoothing filter. In another embodiment, post-processing operations are performed on the WMV9 / VC-1 video stream decoded in out-of-loop filter 442. It should be understood that the out-of-loop filter 442 can be implemented as any deblocking filter and / or deringing filter.

후처리 동작들Post Processing Actions

디코더 장치(400)의 파이프라인 스테이지 3은 3개의 하드웨어 후처리 블록, 즉 루프내 디블록킹 필터(440), 루프외 필터(442) 및 회전 엔진(450)을 포함한다. 루프내 디블록킹 필터(440)는 H.264 및 WMV9/VC-1 모드들에서 사용된다. 일 실시예에서, WMV9/VC-1 모드에서, 루프내 디블록킹 필터(440)는 오버랩 평활화 필터를 구현하는 데 사용된다.Pipeline stage 3 of decoder device 400 includes three hardware post-processing blocks: an in-loop deblocking filter 440, an out-of-loop filter 442, and a rotation engine 450. In-loop deblocking filter 440 is used in H.264 and WMV9 / VC-1 modes. In one embodiment, in WMV9 / VC-1 mode, in-loop deblocking filter 440 is used to implement the overlap smoothing filter.

루프외 필터(442)는 디코딩된 이미지의 품질을 향상시키기 위해 임의의 비디오 스트림에 대해 사용될 수 있다. 일 실시예에서, 루프외 필터(442)는 디코더 장치(400)의 나머지와 동시에 실행된다. 루프외 필터(442)는 프레임이 메모리(460) 내로 디코딩된 후에 트리거되어야 한다.Out-of-loop filter 442 may be used for any video stream to improve the quality of the decoded image. In one embodiment, the out-of-loop filter 442 is executed concurrently with the rest of the decoder device 400. The out-of-loop filter 442 should be triggered after the frame is decoded into memory 460.

임의의 디블록킹 및/또는 디링잉 필터가 루프외 필터(442)로 사용될 수 있다는 것을 이해해야 한다. 예를 들어, 장치(150)에서 구현될 수 있는 많은 비디오 표준을 감독하기 위한 기구인 국제 표준화 기구(ISO)는 종종 표준화 공보에서 제안되는 디블록킹 필터들을 포함한다. 예를 들어, 루프외 필터(442)는 ISO 공보의 ISO/IEC 14496-2:2001, 섹션 F.3.1에 기술된 디블록킹 필터를 포함할 수 있다.It should be understood that any deblocking and / or deringing filter may be used as the out-of-loop filter 442. For example, the International Organization for Standardization (ISO), an organization for overseeing many video standards that may be implemented in device 150, often includes the deblocking filters proposed in the standardization publication. For example, the out-of-loop filter 442 may include a deblocking filter described in ISO / IEC 14496-2: 2001, section F.3.1 of the ISO publication.

디코딩된 이미지는 또한, 회전 엔진(450)에서 파이프라인 스테이지 3 내의 메모리(460)에 기입되기 전에 회전될 수 있다. 회전 엔진(450)은 개별 매크로블록들이 지시된 회전도에 기초하여 회전되어 프레임의 새로운 위치에 배치되는 온-더-플라이(on-the-fly) 매크로블록 회전을 제공하도록 구성된다. 회전 엔진(450)의 동작의 상세한 설명에 대해서는 아래의 도 10A, 10B 및 11을 참조한다.The decoded image may also be rotated before it is written to the memory 460 in pipeline stage 3 in the rotation engine 450. The rotation engine 450 is configured to provide on-the-fly macroblock rotation in which individual macroblocks are rotated based on the indicated degree of rotation and placed in a new position of the frame. See FIGS. 10A, 10B and 11 below for a detailed description of the operation of the rotary engine 450.

하드웨어 다중 표준 비디오 디코더 장치를 이용하여 비디오 Video using hardware multi-standard video decoder device 스트림을Stream 디코딩하는 방법 How to decode

도 5는 본 발명의 일 실시예에 따라 하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 비디오 스트림 디코딩 방법(500)의 흐름도를 나타낸다. 방법(500)에서 특정 단계들이 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계들 또는 도 5에 기재된 단계들의 변형을 수행하는 데 적합하다. 일 실시예에서, 방법(500)은 도 3의 디코더 장치(150)에 의해 수행된다.5 shows a flowchart of a video stream decoding method 500 implemented using a hardware multi-standard video decoder device in accordance with an embodiment of the present invention. Although certain steps are disclosed in method 500, these steps are illustrative. That is, embodiments of the present invention are suitable for carrying out various other steps or variations of the steps described in FIG. In one embodiment, the method 500 is performed by the decoder device 150 of FIG.

프로세스(500)의 단계 510에서, 비디오 스트림이 액세스된다. 단계 520에서, 비디오 스트림을 인코딩하는 데 사용된 비디오 표준이 식별된다. 하드웨어 다중 표준 비디오 디코더 장치는 복수의 비디오 표준에 따라 비디오 스트림을 디코딩하도록 구성된다.In step 510 of process 500, the video stream is accessed. In step 520, the video standard used to encode the video stream is identified. The hardware multi-standard video decoder device is configured to decode a video stream in accordance with a plurality of video standards.

단계 530에서, 비디오 스트림을 디코딩하는 데 사용되는 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트가 결정된다. 복수의 하드웨어 디코딩 블록의 상이한 서브세트들이 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩할 수 있다. 일 실시예에서, 단계 540에서 도시된 바와 같이, 하드웨어 디코딩 블록들의 서브세트가 활성화되고, 따라서 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 비활성화된다.In step 530, a subset of the hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-standard video decoder device used to decode the video stream is determined. Different subsets of the plurality of hardware decoding blocks can decode video streams encoded using different video encoding standards. In one embodiment, as shown in step 540, the subset of hardware decoding blocks is activated, so that hardware decoding blocks not associated with decoding of the video stream are deactivated.

단계 550에서, 비디오 스트림은 하드웨어 디코딩 블록들의 서브세트를 이용하여 디코딩된다. 일 실시예에서, 단계 560에 도시된 바와 같이, 다중 스테이지 매크로블록 레벨 파이프라인의 일 스테이지 내의 하드웨어 디코딩 블록들은 비디오 스트림의 어떠한 데이터도 그 스테이지에서 수신되지 않는 경우에 비활성화된다. 단계 540 및 560은 추가적인 전력 절약을 제공하며 옵션이라는 것을 이해해야 한다.At step 550, the video stream is decoded using a subset of hardware decoding blocks. In one embodiment, as shown in step 560, the hardware decoding blocks in one stage of the multi-stage macroblock level pipeline are deactivated if no data in the video stream is received at that stage. It should be understood that steps 540 and 560 provide additional power savings and are optional.

단계 570에서, 비디오 스트림의 디코딩에 이어서, 메모리 유닛이 액세스된다. 일 실시예에서, 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다. 일 실시예에서, 단계 580에 도시된 바와 같이, 디코딩된 비디오 스트림 상에 후처리 동작이 수행된다. 후처리 동작은 단계 570이 수행되기 전 또는 후에 수행될 수 있다는 것을 이해해야 한다. 일 실시예에서, 디코딩된 비디오 스트림은 회전된다. 다른 실시예에서, 루프내 디블록킹 필터가 디코딩된 비디오 스트림에 적용된다. 회전 및 루프내 디블록킹은 메모리 유닛이 액세스되기 전에 수행된다. 일 실시예에서, 루프외 디블록킹 및 디링잉 필터들은 메모리 유닛이 액세스된 후에 디코딩된 비디오 스트림에 적용된다.In step 570, following decoding of the video stream, the memory unit is accessed. In one embodiment, the decoded video stream is stored in memory for display. In one embodiment, as shown in step 580, a post processing operation is performed on the decoded video stream. It should be understood that the post processing operation may be performed before or after step 570 is performed. In one embodiment, the decoded video stream is rotated. In another embodiment, an in-loop deblocking filter is applied to the decoded video stream. Rotation and in-loop deblocking are performed before the memory unit is accessed. In one embodiment, out of loop deblocking and deringing filters are applied to the decoded video stream after the memory unit is accessed.

상이한 비디오 표준들을 이용하여 인코딩된 다수의 Multiple encoded using different video standards 스트림의Of stream 하드웨어 다중 표준 비디오 디코더 장치를 이용한 디코딩 Decoding Using Hardware Multi-Standard Video Decoder Devices

본 발명의 하드웨어 다중 표준 비디오 디코더 장치의 실시예들은 또한 다수의 비디오 스트림을 동시에 디코딩할 수 있다. 매크로블록들 또는 프레임들과 같은 비디오 스트림들의 부분들은 인터리빙된다. 디코더 장치는 인터리빙된 부분들에 순차적으로 액세스한다. 따라서, 디코더 장치는 인터리빙된 부분들에 대한 디코딩 동작들을 수행한다. 예를 들어, 2개의 비디오 스트림의 매크로블록들에 대해 디코딩 동작이 수행될 수 있다. 비디오 스트림들은 비디오 스트림들의 매크로블록들이 교대하도록 인터리빙된다. 클럭 사이클마다, 교대하는 비디오 스트림에 대해 디코딩 동작이 수행될 수 있다.Embodiments of the hardware multi-standard video decoder device of the present invention can also decode multiple video streams simultaneously. Portions of video streams such as macroblocks or frames are interleaved. The decoder device sequentially accesses the interleaved portions. Thus, the decoder device performs decoding operations on the interleaved portions. For example, a decoding operation may be performed on macroblocks of two video streams. The video streams are interleaved so that macroblocks of the video streams alternate. Every clock cycle, a decoding operation may be performed on alternate video streams.

도 6은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치(600)의 내부 컴포넌트들을 나타내는 도면이다. 도 6에 도시된 바와 같이, 디코더 장치(600)는 비디오 스트림 인터리버(605), 커맨드 파서(305), 복수의 하드웨어 디코딩 블록(310-318), 하드웨어 후처리 블록(320), 메모리(330), 레지스터 세트(610) 및 레지스터 세트(620)를 포함한다. 디코더 장치(600)는 다수의 비디오 인코딩 표준을 디코딩할 수 있으며, 도 3의 디코더 장치(150)와 매우 유사하게 동작한다. 디코더 장치(600)는 레지스터 세트들(610, 620)이 디코더 장치(600)가 다수의 비디오 스트림을 동시에 디코딩하는 것을 허가한다는 점에서 디코더 장치(150)와 다르다.6 is a diagram illustrating internal components of a hardware multi-stream multi-standard video decoder device 600 according to an embodiment of the present invention. As shown in FIG. 6, the decoder device 600 includes a video stream interleaver 605, a command parser 305, a plurality of hardware decoding blocks 310-318, a hardware post-processing block 320, and a memory 330. Register set 610 and register set 620. Decoder device 600 can decode a number of video encoding standards and operates very similarly to decoder device 150 of FIG. Decoder device 600 differs from decoder device 150 in that register sets 610, 620 allow decoder device 600 to decode multiple video streams simultaneously.

비디오 스트림 인터리버(605)는 다수의 비디오 스트림에 액세스하여, 비디오 스트림들의 부분들을 인터리빙할 수 있다. 도시된 바와 같이, 비디오 스트림 인터리버(605)는 비디오 스트림들(601, 602)에 액세스한다. 그러나, 비디오 스트림 인터리버(605)는 임의 수의 비디오 스트림을 수신할 수 있으며, 도 6에 도시된 실시예로 한정되는 것이 아니라는 것을 이해해야 한다. 일 실시예에서, 비디오 스트림들(601, 602)은 마이크로코드 엔진(예를 들어, 도 2B의 마이크로코드 엔진(260))으로부터 수신된다.Video stream interleaver 605 may access multiple video streams to interleave portions of the video streams. As shown, video stream interleaver 605 accesses video streams 601, 602. However, it should be understood that the video stream interleaver 605 may receive any number of video streams and is not limited to the embodiment shown in FIG. 6. In one embodiment, video streams 601, 602 are received from a microcode engine (eg, microcode engine 260 of FIG. 2B).

도 7A 및 7B는 본 발명의 실시예들에 따른 다수의 비디오 스트림의 예시적인 인터리빙된 부분들을 나타내는 도면들이다. 도 7A를 참조하면, 2개의 인터리빙된 비디오 스트림이 도시되어 있으며, 하나의 스트림은 정지 이미지 비디오 스트림(예를 들어, JPEG)이고, 다른 하나의 스트림은 디지털 영화 스트림(예를 들어, MPEG-4)이다. 도시된 바와 같이, 비디오 스트림들이 하나의 디지털 영화 스트림만을 포함하는 경우, 비디오 스트림들은 매크로블록 레벨로 인터리빙될 수 있다. 구체적으로, 정지 이미지 매크로블록들(704, 708)은 디지털 영화 매크로블록들(702, 706)과 인터리빙되며, 따라서 각각의 비디오 스트림으로부터의 매크로블록들은 인터리빙된 스트림(700) 내에서 교대한다. 비디오 스트림들이 매크로블록 레벨로 인터리빙되는 경우, 디코더 장치(600)의 소프트웨어 드라이버는 시스템 메모리 내에 매크로블록 데이터를 버퍼링하여, 인터리빙된 비디오 스트림들의 디코딩을 관리한다.7A and 7B are diagrams illustrating exemplary interleaved portions of multiple video streams in accordance with embodiments of the present invention. Referring to FIG. 7A, two interleaved video streams are shown, one stream being a still image video stream (eg, JPEG), and the other stream being a digital movie stream (eg, MPEG-4). )to be. As shown, if the video streams contain only one digital movie stream, the video streams may be interleaved at the macroblock level. Specifically, still image macroblocks 704 and 708 are interleaved with digital movie macroblocks 702 and 706, so that the macroblocks from each video stream alternate in the interleaved stream 700. When the video streams are interleaved at the macroblock level, the software driver of the decoder device 600 buffers the macroblock data in system memory to manage the decoding of the interleaved video streams.

도 7B를 참조하면, 2개의 인터리빙된 비디오 스트림이 도시되어 있으며, 양 스트림들은 디지털 영화 스트림들이다. 도시된 바와 같이, 비디오 스트림들이 다수의 디지털 영화 스트림을 포함하는 경우, 비디오 스트림들은 프레임 레벨로 인터리빙된다. 구체적으로, 제1 디지털 영화 프레임들(752, 756)은 제2 디지털 영화 프레임들(754, 758)과 인터리빙되며, 따라서 각각의 비디오 스트림으로부터의 프레임들은 인터리빙된 스트림(750) 내에서 교대한다. 비디오 스트림들이 프레임 레벨로 인터리빙되는 경우, 디코더 장치(600)의 소프트웨어 드라이버는 시스템 메모리에 프레임 데이터를 버퍼링하여, 인터리빙된 비디오 스트림들의 디코딩을 관리한다.7B, two interleaved video streams are shown, both streams being digital movie streams. As shown, when the video streams include multiple digital movie streams, the video streams are interleaved at the frame level. Specifically, the first digital movie frames 752 and 756 are interleaved with the second digital movie frames 754 and 758, so that frames from each video stream alternate in the interleaved stream 750. When the video streams are interleaved at the frame level, the software driver of the decoder device 600 buffers the frame data in system memory to manage decoding of the interleaved video streams.

도 6을 참조하면, 커맨드 파서(305), 하드웨어 디코딩 블록들(310-318), 하드웨어 후처리 블록(320) 및 메모리(330)는 도 3에 도시된 바와 같이 동작한다. 결과 데이터 및 다른 디코더 파라미터들은 커맨드 파서(305)를 통해 디코더 장치로 전달된다. 커맨드 파서(305)로부터의 데이터는 잔여 경로(하드웨어 디코딩 블록들 312, 316, 318) 또는 예측 경로(하드웨어 디코딩 블록들 310, 314)로 라우팅될 것이다. 잔여 경로는 에러 또는 차분 데이터를 처리하는 반면, 예측 경로는 이전 프레임 또는 이전 매크로블록의 데이터를 준비/페치할 것이다.Referring to FIG. 6, the command parser 305, the hardware decoding blocks 310-318, the hardware post-processing block 320, and the memory 330 operate as shown in FIG. 3. The resulting data and other decoder parameters are passed through the command parser 305 to the decoder device. Data from the command parser 305 may be routed to the residual path (hardware decoding blocks 312, 316, 318) or the prediction path (hardware decoding blocks 310, 314). The remaining path handles error or differential data, while the prediction path will prepare / fetch data of the previous frame or previous macroblock.

인터리빙된 비디오 스트림들의 디코딩을 관리하기 위하여, 파이프라인 스테이지 1 내에 2개의 레지스터 세트(610, 620)가 유지된다. 일 실시예에서, 레지스터 세트들(610, 620)은 각각 메모리 표면 포인터들(612, 622) 및 각각 프레임 레벨 파라미터들(614, 624)을 저장한다. 레지스터 세트들 각각은 비디오 스트림들 중 하나와 연관된 파라미터들을 저장하는 데 사용된다. 예를 들어, 레지스터 세트(610)는 비디오 스트림(601)과 연관된 파라미터들을 저장하는 데 사용되고, 레지스터 세트(620)는 비디오 스트림(602)과 연관된 파라미터들을 저장하는 데 사용된다. 하나의 비디오 스트림의 일부가 파이프라인 스테이지 1에서 처리되면, 적절한 파라미터들이 잔여 또는 예측 데이터와 함께 패킷의 형태로 다운스트림 파이프라인 스테이지 2 및 3으로 전달된다. 디코딩된 데이터는 매크로블록이 정지 이미지인지 디지털 영화 타입인지에 기초하여 메모리 내의 적절한 영역으로 라우팅될 것이다. 디코더 장치(600)는 디코딩될 각각의 스트림이 관련 레지스터 세트를 갖도록 적절한 수의 레지스터 세트를 추가함으로써 임의 수의 비디오 스트림을 디코딩하도록 구성될 수 있다는 것을 이해해야 한다.In order to manage the decoding of interleaved video streams, two register sets 610 and 620 are maintained in pipeline stage 1. In one embodiment, register sets 610 and 620 store memory surface pointers 612 and 622 and frame level parameters 614 and 624 respectively. Each of the register sets is used to store parameters associated with one of the video streams. For example, register set 610 is used to store parameters associated with video stream 601 and register set 620 is used to store parameters associated with video stream 602. If a portion of one video stream is processed in pipeline stage 1, the appropriate parameters are passed to downstream pipeline stages 2 and 3 in the form of packets with residual or predicted data. The decoded data will be routed to the appropriate area in the memory based on whether the macroblock is a still image or a digital movie type. It should be understood that the decoder device 600 may be configured to decode any number of video streams by adding the appropriate number of register sets such that each stream to be decoded has an associated register set.

도 8은 본 발명의 일 실시예에 따른 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 이용하여 구현되는, 다수의 비디오 스트림을 디코딩하기 위한 방법(800)의 흐름도를 나타낸다. 특정 단계들이 방법(800)에서 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계 또는 도 8에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(800)은 도 6의 디코더 장치(600)에 의해 수행된다.8 shows a flowchart of a method 800 for decoding multiple video streams, implemented using a hardware multi-stream multi-standard video decoder device, in accordance with an embodiment of the present invention. Although certain steps are disclosed in method 800, these steps are illustrative. That is, embodiments of the present invention are suitable for carrying out various other steps or variations of the steps described in FIG. In one embodiment, the method 800 is performed by the decoder device 600 of FIG.

프로세스(800)의 단계 810에서, 복수의 비디오 스트림이 액세스된다. 단계 820에서, 비디오 스트림들을 인코딩하는 데 사용된 비디오 표준들이 식별된다. 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치는 복수의 비디오 표준에 따라 비디오 스트림들을 디코딩하도록 구성된다. 단계 830에서, 비디오 스트림들의 부분들이 인터리빙된다. 일 실시예에서, 비디오 스트림들이 하나의 디지털 영화 스트림만을 포함하는 경우, 비디오 스트림들의 매크로블록들이 인터리빙된다. 다른 실시예에서, 비디오 스트림들이 다수의 디지털 영화 스트림을 포함하는 경우, 비디오 스트림들의 프레임들이 인터리빙된다. 단계들 820 및 830은 임의 순서로 수행될 수 있다는 것을 이해해야 한다.In step 810 of process 800, a plurality of video streams are accessed. In step 820, video standards used to encode video streams are identified. The hardware multi-stream multi-standard video decoder device is configured to decode video streams according to a plurality of video standards. In step 830, portions of the video streams are interleaved. In one embodiment, if the video streams contain only one digital movie stream, macroblocks of the video streams are interleaved. In another embodiment, if the video streams comprise multiple digital movie streams, the frames of the video streams are interleaved. It should be understood that steps 820 and 830 may be performed in any order.

단계 840에서, 복수의 비디오 스트림을 디코딩하는 데 사용되는 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록 중 하드웨어 디코딩 블록들의 서브세트들이 결정된다. 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하도록 동작할 수 있다. 일 실시예에서, 단계 850에 도시된 바와 같이, 하드웨어 디코딩 블록들의 서브세트들은 활성화되고, 따라서 비디오 스트림들의 디코딩과 연관되지 않은 하드웨어 디코딩 블록은 활성화되지 않는다.In step 840, subsets of hardware decoding blocks of the plurality of hardware decoding blocks of the hardware multi-standard video decoder apparatus used to decode the plurality of video streams are determined. Different subsets of the plurality of hardware decoding blocks may be operable to decode video streams encoded using different video encoding standards. In one embodiment, as shown in step 850, the subsets of hardware decoding blocks are activated, so that a hardware decoding block that is not associated with decoding of video streams is not activated.

단계 860에서, 비디오 스트림들은 하드웨어 디코딩 블록들의 서브세트들을 이용하여 디코딩된다. 단계 870에서, 비디오 스트림들의 디코딩에 이어서, 메모리 유닛이 액세스된다. 일 실시예에서, 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다. 일 실시예에서, 단계 880에서 도시된 바와 같이, 적어도 하나의 디코딩된 비디오 스트림에 대해 후처리 동작이 수행된다. 후처리 동작은 단계 870이 수행되기 전 또는 후에 수행될 수 있다는 것을 이해해야 한다. 일 실시예에서, 디코딩된 비디오 스트림은 회전된다. 다른 실시예에서, 루프내 디블록킹 필터가 디코딩된 비디오 스트림에 적용된다. 회전 및 루프내 디블록킹은 메모리 유닛이 액세스되기 전에 수행된다. 일 실시예에서, 루프외 디블록킹 및 디링잉 필터들이 메모리 유닛이 액세스된 후에 디코딩된 비디오 스트림에 적용된다.In step 860, the video streams are decoded using subsets of hardware decoding blocks. In step 870, following decoding of the video streams, the memory unit is accessed. In one embodiment, the decoded video stream is stored in memory for display. In one embodiment, a post-processing operation is performed on at least one decoded video stream, as shown at step 880. It should be understood that the post processing operation may be performed before or after step 870 is performed. In one embodiment, the decoded video stream is rotated. In another embodiment, an in-loop deblocking filter is applied to the decoded video stream. Rotation and in-loop deblocking are performed before the memory unit is accessed. In one embodiment, out of loop deblocking and deringing filters are applied to the decoded video stream after the memory unit is accessed.

비디오 video 스트림의Of stream 무질서 매크로블록들의 처리 Processing disordered macroblocks

도 2B를 참조하면, 일 실시예에서, 본 발명은 마이크로코드 엔진(260)에서 매크로블록들을 버퍼링하고 재배열하는 것을 제공한다. 본 발명은 비 래스터 스캔 순서로 매크로블록들을 송수신하는 것을 지원하는 비디오 표준들에 대한 루프내 디블록킹을 지원하기 위하여 래스터 스캔 순서로 매크로블록들을 배열하는 것을 제공한다. 마이크로코드 엔진(260)은 비디오 스트림의 프레임의 매크로블록들을 나타내는 압축 데이터를 수신하도록 구성된다. 일 실시예에서, 적어도 하나의 매크로블록이 무질서하게 수신된다. 마이크로코드 엔진(260)은 압축 데이터를 버퍼링하도록 구성되고, 프레임의 매크로블록들을 래스터 스캔 순서로 배열하도록 구성된다.Referring to FIG. 2B, in one embodiment, the present invention provides for buffering and rearranging macroblocks in the microcode engine 260. The present invention provides for arranging macroblocks in raster scan order to support in-loop deblocking for video standards that support sending and receiving macroblocks in non-raster scan order. Microcode engine 260 is configured to receive compressed data representing macroblocks of a frame of the video stream. In one embodiment, at least one macroblock is received disorderly. The microcode engine 260 is configured to buffer the compressed data and to arrange the macroblocks of the frame in raster scan order.

도 9는 본 발명의 일 실시예에 따라 비디오 스트림의 무질서 매크로블록들을 처리하기 위한 방법(900)의 흐름도를 나타낸다. 특정 단계들이 방법(900)에 개시되지만, 이러한 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계들 또는 도 9에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(900)은 도 2B의 마이크로코드 엔진(260)에 의해 수행된다.9 shows a flowchart of a method 900 for processing disordered macroblocks of a video stream in accordance with an embodiment of the present invention. Although certain steps are disclosed in method 900, these steps are illustrative. That is, embodiments of the present invention are suitable for carrying out various other steps or variations of the steps described in FIG. In one embodiment, the method 900 is performed by the microcode engine 260 of FIG. 2B.

프로세스(900)의 단계 910에서, 비디오 스트림의 프레임의 매크로블록들을 나타내는 압축 데이터가 수신되는데, 적어도 하나의 매크로블록은 무질서하게 수신된다. 단계 920에서, 압축 데이터가 버퍼링된다. 일 실시예에서, 압축 데이터는 마이크로코드 엔진(260)의 버퍼에 버퍼링된다. 단계 930에서, 비디오 스트림이 파싱되고, VLD가 비디오 스트림 상에 수행된다. 단계 930은 옵션이고, 비디오 스트림 파싱 및 VLD는 하드웨어 디코더 장치에 의해 수행될 수 있다는 것을 이해해야 한다. 또한, 다른 또는 추가적인 전처리 동작들이 단계 930에서 비디오 스트림에 대해 수행될 수 있다는 것을 이해해야 한다.In step 910 of process 900, compressed data is received that represents macroblocks of a frame of a video stream, wherein at least one macroblock is received disorderly. At step 920, the compressed data is buffered. In one embodiment, the compressed data is buffered in a buffer of the microcode engine 260. In step 930, the video stream is parsed and the VLD is performed on the video stream. It should be understood that step 930 is optional and that video stream parsing and VLD may be performed by a hardware decoder device. It should also be understood that other or additional preprocessing operations may be performed on the video stream at step 930.

단계 935에서, 비디오 스트림이 루프내 디블록킹을 필요로 하는지를 판정한다. 일 실시예에서, 압축 데이터는 루프내 블록킹이 비디오 스트림 상에 수행되어야 하는지의 여부에 대한 지시를 포함한다. 루프내 디블록킹이 필요한 경우, 프레임의 매크로블록들은 단계 940에 도시된 바와 같이 래스터 스캔 순서로 배열된다. 일 실시예에서, 프레임의 모든 매크로블록은 매크로블록들이 래스터 스캔 순서로 배열되기 전에 버퍼링된다. 이어서, 방법(900)은 단계 950으로 진행한다. 대안으로, 루프내 디블록킹이 필요하지 않은 경우, 방법(900)은 단계 950으로 직접 진행한다.In step 935, it is determined whether the video stream requires in-loop deblocking. In one embodiment, the compressed data includes an indication as to whether intra-loop blocking should be performed on the video stream. If in-loop deblocking is needed, the macroblocks of the frame are arranged in raster scan order as shown in step 940. In one embodiment, all macroblocks of a frame are buffered before the macroblocks are arranged in raster scan order. The method 900 then proceeds to step 950. Alternatively, if no in-loop deblocking is needed, the method 900 proceeds directly to step 950.

단계 950에서, 비디오 스트림이 디코딩된다. 일 실시예에서, 매크로블록들은 래스터 스캔 순서로 디코딩된다. 일 실시예에서, 비디오 스트림은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 디코더 장치(150) 또는 도 4의 디코더 장치(400))에 의해 디코딩된다. 일 실시예에서, 비디오 스트림은 도 5의 방법(500)에 따라 디코딩된다.In step 950, the video stream is decoded. In one embodiment, macroblocks are decoded in raster scan order. In one embodiment, the video stream is decoded by a hardware multiple standard video decoder device (eg, decoder device 150 of FIG. 3 or decoder device 400 of FIG. 4). In one embodiment, the video stream is decoded according to the method 500 of FIG. 5.

단계 960에서, 디코딩된 매크로블록 상에 매크로블록 레벨 루프내 디블록킹이 수행된다. 단계 970에서, 메모리 유닛이 액세스된다. 일 실시예에서, 디블록킹 및 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다.In step 960, deblocking in a macroblock level loop is performed on the decoded macroblock. In step 970, the memory unit is accessed. In one embodiment, the deblocked and decoded video stream is stored in memory for display.

단계 980에서, 디코딩된 프레임 상에 프레임 레벨 루프외 후처리가 수행된다. 일 실시예에서, 루프외 후처리는 디블록킹 및 디링잉 동작들을 포함한다. 단계 980은 옵션이라는 것을 이해해야 한다. 이어서, 방법(900)은 단계 970으로 복귀하며, 여기서 메모리 유닛이 액세스된다. 일 실시예에서, 디블록킹, 디링잉 및 디코딩된 비디오 스트림은 표시를 위해 메모리에 저장된다.In step 980, out-of-frame post-processing is performed on the decoded frame. In one embodiment, the out-of-loop postprocessing includes deblocking and deringing operations. It should be understood that step 980 is optional. The method 900 then returns to step 970 where the memory unit is accessed. In one embodiment, the deblocked, deringed, and decoded video stream is stored in memory for display.

매크로블록들이 여전히 압축 데이터로 있는 동안 매크로블록들을 버퍼링함으로써, 마이크로코드 엔진(260)은 디코딩된 비디오 데이터보다 훨씬 적은 실행 길이 인코딩된 압축 데이터의 최대 일 프레임만을 버퍼링하면 된다. 또한, 압축된 매크로블록들의 버퍼링은 전력을 절약한다. 무선으로 수신된 비디오 스트림들은 또한 많은 에러가 발생한다. 마이크로코드 엔진(260)에 대한 비트 스트림 파싱의 파티셔닝은 또한 에러 복구를 향상시키는 이점을 갖는다.By buffering macroblocks while the macroblocks are still compressed data, the microcode engine 260 only needs to buffer a maximum of one frame of run length encoded compressed data much less than the decoded video data. In addition, buffering the compressed macroblocks saves power. Video streams received wirelessly also generate many errors. Partitioning of bit stream parsing to microcode engine 260 also has the advantage of improving error recovery.

비디오 video 스트림의Of stream 매크로블록들의 온 더 플라이 회전 On-the-Fly Rotation of Macroblocks

본 발명의 실시예들은 비디오 스트림이 메모리에 기입되기 전에 비트 스트림을 "온 더 플라이" 방식으로 회전시키기 위한 회전 엔진을 제공한다. 본 발명의 실시예들은 비디오 스트림의 매크로블록들이 수신될 때 이들을 회전시킴으로써 비디오 스트림을 회전시키고, 회전에 기초하여 프레임 내에 매크로블록들을 재배치할 수 있다. 본 발명의 실시예들은 디코딩된 매크로블록들을 메모리에 기입하기 전에 매크로블록들 상에 작용함으로써 디코딩된 프레임들을 2차 전달할 필요 없이 비디오 스트림들을 회전시킬 수 있다.Embodiments of the present invention provide a rotation engine for rotating a bit stream in an "on the fly" manner before the video stream is written to memory. Embodiments of the present invention may rotate a video stream by rotating them when macroblocks of the video stream are received, and rearrange macroblocks within a frame based on the rotation. Embodiments of the present invention can rotate video streams without having to deliver decoded frames secondary by operating on the macroblocks before writing the decoded macroblocks to memory.

일 실시예에서, 본 발명은 회전도에 따라 비디오 스트림의 프레임의 매크로블록을 회전시키고 매크로블록을 회전도에 기초하는, 프레임 내의 새로운 위치에 재배치하도록 구성된 회전 엔진을 제공한다. 일 실시예에서, 비디오 디코더 장치는 표시를 위해 매크로브록을 저장하기 위한 메모리를 더 포함한다. 일 실시예에서, 회전 엔진은 매크로블록을 회전시키고, 메모리에 액세스하기 전에 프레임 내에 매크로블록을 재배치하도록 구성된다.In one embodiment, the present invention provides a rotation engine configured to rotate a macroblock of a frame of a video stream according to the degree of rotation and to relocate the macroblock to a new location within the frame based on the degree of rotation. In one embodiment, the video decoder device further includes a memory for storing the macroblock for display. In one embodiment, the rotation engine is configured to rotate the macroblock and rearrange the macroblock within the frame before accessing the memory.

도 10A 및 10B는 본 발명의 일 실시예에 따른 프레임들의 매크로블록들의 예시적인 회전의 도면을 나타낸다. 도 10A 및 10B는 도 4의 회전 엔진(450)의 동작을 기술하지만, 설명되는 실시예들은 임의 타입의 비디오 디코더 장치에서 구현될 수 있으며, 도 4의 하드웨어 다중 표준 비디오 디코더 장치(400)의 사용으로 제한되지 않음을 이해해야 한다. 예를 들어, 회전 엔진은 단일 표준 하드웨어 디코더 또는 소프트웨어 디코더 내에 포함될 수 있다.10A and 10B show diagrams of exemplary rotation of macroblocks of frames in accordance with one embodiment of the present invention. 10A and 10B describe the operation of the rotation engine 450 of FIG. 4, the embodiments described may be implemented in any type of video decoder device, using the hardware multi-standard video decoder device 400 of FIG. 4. It should be understood that it is not limited to. For example, the rotation engine may be included within a single standard hardware decoder or software decoder.

도 10A를 참조하면, 다이어그램 1000은 도 4의 회전 엔진(450)을 이용한 프레임(1010)의 회전을 나타낸다. 프레임(1010)은 다수의 매크로블록을 포함한다. 매크로블록(1012)은 회전 엔진(450)에서 수신되는 제1 매크로블록으로 도시되어 있다. 일 실시예에서, 매크로블록들은 래스터 스캔 순서로 수신되는데, 여기서 매크로블록(1012)은 좌상 매크로블록이므로 최초로 수신되는 매크로블록이다.Referring to FIG. 10A, diagram 1000 illustrates the rotation of frame 1010 using the rotation engine 450 of FIG. 4. Frame 1010 includes a number of macroblocks. Macroblock 1012 is shown as a first macroblock that is received at rotation engine 450. In one embodiment, the macroblocks are received in raster scan order, where macroblock 1012 is the upper left macroblock and is therefore the first macroblock received.

회전 엔진(450)은 매크로블록(1012)을 회전시키고, 프레임(1010) 내의 새로운 위치에 매크로블록(1012)을 재배치하도록 구성된다. 회전 및 재배치는 비디오 스트림과 연관된 회전도에 기초한다. 회전도는 비디오 스트림이 얼마나 회전되어야 하는지를 나타낸다. 예를 들어, 회전도는 시계 방향으로 90도, 반시계 방향으로 90도, 180도, 또는 임의의 다른 회전도일 수 있다.The rotation engine 450 is configured to rotate the macroblock 1012 and to relocate the macroblock 1012 to a new location within the frame 1010. Rotation and relocation are based on the degree of rotation associated with the video stream. Rotation degree indicates how much the video stream should be rotated. For example, the degree of rotation can be 90 degrees clockwise, 90 degrees, 180 degrees, or any other degree of rotation in the counterclockwise direction.

다이어그램(diagram) 1000은 시계 방향으로 90도의 회전도를 이용하는 회전 엔진(450)의 동작을 나타낸다. 매크로블록(1012)은 시계 방향으로 90도 회전된다. 회전 엔진(450)은 또한 매크로블록(1012)을 재배치하여, 회전된 프레임(1020) 내의 매크로블록(1022)으로 도시된 회전된 매크로블록(1012)이 프레임(1020)의 모든 다른 매크로블록에 대해 동일한 위치에 있게 한다.Diagram 1000 illustrates the operation of rotary engine 450 using 90 degrees of rotation in a clockwise direction. The macroblock 1012 is rotated 90 degrees clockwise. Rotation engine 450 also rearranges macroblock 1012 so that rotated macroblock 1012, shown as macroblock 1022 in rotated frame 1020, is used for all other macroblocks in frame 1020. Be in the same location.

본 발명의 실시예들은 또한 매크로블록들이 무질서하게 수신되는 프레임들을 매크로블록 레벨로 회전시키는 것을 제공한다. 도 10B를 참조하면, 다이어그램 1050은 도 4의 회전 엔진(450)을 이용한 프레임(1060)의 회전을 나타낸다. 매크로블록(1062)은 회전 엔진(450)에서 수신된 제1 매크로블록으로서 도시된다. 본 실시예에서는, 매크로블록(1062)이 수신되는 제1 매크로블록이지만, 좌상 매크로블록이 아니므로, 매크로블록들은 래스터 스캔 순서로 수신되지 않는다.Embodiments of the present invention also provide for rotating frames at macroblock level where macroblocks are received randomly. Referring to FIG. 10B, diagram 1050 illustrates the rotation of frame 1060 using the rotation engine 450 of FIG. 4. Macroblock 1062 is shown as a first macroblock received at rotation engine 450. In this embodiment, the macroblock 1062 is the first macroblock to be received, but since it is not the upper left macroblock, the macroblocks are not received in raster scan order.

회전 엔진(450)은 매크로블록(1062)을 회전시키고, 매크로블록(1062)을 프레임(1060) 내의 새로운 위치에 재배치하도록 구성된다. 다이어그램 1050은 시계 방향으로 90의 회전도를 이용하는 회전 엔진(450)의 동작을 나타낸다. 매크로블록(1062)은 시계 방향으로 90도 회전된다. 회전 엔진(450)은 또한 매크로블록(1062)을 재배치하여, 회전된 프레임(1070) 내에 매크로블록(1072)로서 도시된 회전된 매크로블록(1062)이 프레임(1070)의 모든 다른 매크로블록에 대해 동일한 위치에 있게 한다.The rotation engine 450 is configured to rotate the macroblock 1062 and to relocate the macroblock 1062 to a new location within the frame 1060. Diagram 1050 illustrates the operation of rotary engine 450 using 90 degrees of rotation in the clockwise direction. Macroblock 1062 is rotated 90 degrees clockwise. Rotation engine 450 also rearranges macroblock 1062 so that rotated macroblock 1062, shown as macroblock 1072 in rotated frame 1070, for all other macroblocks in frame 1070. Be in the same location.

도 11은 본 발명의 일 실시예에 따라 프레임의 매크로블록들을 회전시키기 위한 방법(1100)의 흐름도를 나타낸다. 특정 단계들이 방법(1100)에서 개시되지만, 이 단계들은 예시적이다. 즉, 본 발명의 실시예들은 다양한 다른 단계 또는 도 11에 기재된 단계들의 변형들을 수행하는 데 적합하다. 일 실시예에서, 방법(1100)은 도 4의 회전 엔진(450)에 의해 수행된다.11 shows a flowchart of a method 1100 for rotating macroblocks of a frame according to one embodiment of the present invention. Although certain steps are disclosed in method 1100, these steps are illustrative. That is, embodiments of the present invention are suitable for carrying out various other steps or variations of the steps described in FIG. In one embodiment, the method 1100 is performed by the rotation engine 450 of FIG. 4.

단계 1110에서, 비디오 스트림이 디코딩된다. 일 실시예에서, 비디오 스트림은 하드웨어 다중 표준 비디오 디코더 장치(예를 들어, 도 3의 디코더 장치(150) 또는 도 4의 디코더 장치(400))에 의해 디코딩된다. 일 실시예에서, 비디오 스트림은 도 5의 방법(500)에 따라 디코딩된다. 단계 1110은 옵션이고, 비디오 스트림은 처리 전에 이미 디코딩될 수 있다는 것을 이해해야 한다.In step 1110, the video stream is decoded. In one embodiment, the video stream is decoded by a hardware multiple standard video decoder device (eg, decoder device 150 of FIG. 3 or decoder device 400 of FIG. 4). In one embodiment, the video stream is decoded according to the method 500 of FIG. 5. It should be understood that step 1110 is optional and that the video stream can already be decoded before processing.

단계 1120에서, 비디오 스트림에 대한 회전도가 액세스된다. 일 실시예에서, 회전도는 시계 방향으로 90도, 반시계 방향으로 90도, 및 180도 중 하나이다. 그러나, 임의의 회전도가 사용될 수 있음을 이해해야 한다. 단계 1130에서, 비디오 스트림의 매크로블록이 액세스된다.In step 1120, the rotation rate for the video stream is accessed. In one embodiment, the degree of rotation is one of 90 degrees clockwise, 90 degrees counterclockwise, and 180 degrees. However, it should be understood that any rotation can be used. In step 1130, the macroblock of the video stream is accessed.

단계 1140에서, 매크로블록은 회전도에 따라 회전된다. 단계 1150에서, 매크로블록은 프레임 내의 새로운 위치에 재배치되는데, 이 새로운 위치는 회전도에 기초한다. 매크로블록은 한 번 회전된 프레임의 모든 다른 매크로블록에 대해 동일 위치에 있도록 재배치된다는 것을 이해해야 한다. 일 실시예에서, 매크로블록의 회전 및 매크로블록의 재배치는 메모리에 액세스하기 전에 수행된다.In step 1140, the macroblock is rotated according to the degree of rotation. At step 1150, the macroblock is relocated to a new location within the frame, which new location is based on the degree of rotation. It should be understood that the macroblocks are rearranged to be in the same position for all other macroblocks in the frame once rotated. In one embodiment, the rotation of the macroblocks and the relocation of the macroblocks are performed before accessing the memory.

단계 1160에서, 매크로블록은 표시를 위해 메모리에 저장된다. 일 실시예에서 단계 1170에 도시된 바와 같이, 디코딩된 매크로블록에 대해 디블록킹 동작이 수행된다. 단계 1170은 옵션이라는 것을 이해해야 한다. 더욱이, 단계 1170은 루프내 디블록킹 또는 루프외 비블록킹 및 디링잉(deringing)을 수행하는 단계를 포함할 수 있다는 것을 이해해야 한다.In step 1160, the macroblock is stored in memory for display. In one embodiment, as shown in step 1170, a deblocking operation is performed on the decoded macroblock. It should be understood that step 1170 is optional. Moreover, it should be understood that step 1170 may include performing in-loop deblocking or out-of-loop nonblocking and deringing.

이와 같이, 본 발명의 실시예들은 다수의 비디오 표준에 따른 비디오 스트림들의 하드웨어 기반 디코딩을 지원하는 새로운 하드웨어 다중 표준 비디오 디코더 장치 아키텍처를 제공한다. 본 발명의 실시예들은 복수의 비디오 인코딩 표준 각각에 대한 실시간 디코딩을 제공할 수 있다. 본 발명의 실시예들은 디코딩된 비디오 스트림들에 대한 후처리 동작들을 제공한다. 본 발명의 일 실시예는 JPEG, MPEG-4, H.263, H.263+, H.264, 및 WMV9/VC-1 비디오 표준들 중 임의 표준을 이용하는 비디오 스트림들에 대한 비디오 디코딩을 제공하는 하드웨어 디코더 장치를 제공한다.As such, embodiments of the present invention provide a new hardware multi-standard video decoder device architecture that supports hardware-based decoding of video streams in accordance with multiple video standards. Embodiments of the present invention may provide real time decoding for each of a plurality of video encoding standards. Embodiments of the present invention provide post processing operations on decoded video streams. One embodiment of the present invention provides video decoding for video streams using any of the JPEG, MPEG-4, H.263, H.263 +, H.264, and WMV9 / VC-1 video standards. Provided is a hardware decoder device.

본 발명의 실시예들은 복수의 상이한 비디오 인코딩 표준에 대한 동시 비디오 디코딩 기능을 제공하기 위한 하드웨어 다중 스트림 다중 표준 비디오 디코더 장치를 제공한다. 본 발명의 실시예들은 다수의 인터리빙된 비디오 스트림들을 동시에 디코딩할 수 있다.Embodiments of the present invention provide a hardware multi-stream multi-standard video decoder device for providing simultaneous video decoding functionality for a plurality of different video encoding standards. Embodiments of the present invention can decode multiple interleaved video streams simultaneously.

본 발명의 실시예들은 래스터 스캔 순서로 매크로블록들을 배열하기 위한 추가 메모리의 필요 없이 비디오 스트림의 루프내 디블록킹을 제공하기 위한 비디오 디코더 아키텍처를 제공한다. 본 발명의 실시예들은 마이크로코드 엔진에서 비디오 스트림의 매크로블록들을 배열할 수 있다. 본 발명의 실시예들은 복수의 지원되는 비디오 표준 중 하나를 이용하여 인코딩된 비디오 스트림에 대한 디코딩 및 루프외 디블록킹 및/또는 디링잉을 제공할 수 있다.Embodiments of the present invention provide a video decoder architecture for providing in-loop deblocking of a video stream without the need for additional memory to arrange macroblocks in raster scan order. Embodiments of the present invention may arrange macroblocks of a video stream in a microcode engine. Embodiments of the present invention may provide decoding and out-of-loop deblocking and / or deringing for a video stream encoded using one of a plurality of supported video standards.

본 발명의 실시예들은 비디오 스트림이 메모리에 기입되기 전에 비디오 스트림을 "온 더 플라이" 방식으로 회전시키기 위한 회전 엔진을 제공한다. 본 발명의 실시예들은 비디오 스트림의 매크로블록들이 수신될 때 이들을 회전시킴으로써 비디오 스트림을 회전시키고, 회전에 기초하여 매크로블록들을 프레임 내에 재배치할 수 있다. 본 발명의 실시예들은 디코딩된 매크로블록들을 메모리에 기입하기 전에 매크로블록들 상에 작용함으로써 디코딩된 프레임들의 2차 전달의 필요 없이 비디오 스트림들을 회전시킬 수 있다.Embodiments of the present invention provide a rotation engine for rotating a video stream in an "on the fly" manner before the video stream is written to memory. Embodiments of the present invention may rotate a video stream by rotating them when macroblocks of the video stream are received, and relocate the macroblocks within a frame based on the rotation. Embodiments of the present invention can rotate video streams without the need for secondary delivery of decoded frames by operating on macroblocks before writing the decoded macroblocks to memory.

본 발명의 특정 실시예들의 위의 설명들은 예시 및 설명의 목적으로 제공되었다. 이들은 포괄적이거나, 본 발명을 개시된 바로 그 형태로 제한하는 것을 의도하지 않으며, 위의 가르침에 비추어 많은 수정 및 변형이 가능하다. 실시예들은 본 발명의 원리들 및 그의 실제 응용을 최상으로 설명하여 이 분야의 전문가들이 본 발명 및 다양한 실시예를 고려되는 특정 이용에 적합한 바의 다양한 수정과 함께 최상으로 이용할 수 있도록 하기 위해 선택되고 설명되었다. 본 발명의 범위는 이에 첨부된 청구범위 및 그 균등물에 의해 정의되는 것을 의도한다.The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. They are not intended to be exhaustive or to limit the invention to the precise forms disclosed, and many modifications and variations are possible in light of the above teaching. The embodiments are chosen to best illustrate the principles of the present invention and their practical applications and to enable those skilled in the art to best utilize it with various modifications as are suited to the particular use contemplated by the present invention and various embodiments. Was explained. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.

Claims (10)

하드웨어 다중 표준 비디오 디코더 장치를 이용하여 구현되는 디코딩 방법으로서,A decoding method implemented using a hardware multi-standard video decoder device, 제1 비디오 스트림에 액세스하는 단계 - 상기 제1 비디오 스트림은 복수의 비디오 스트림 중 하나임 - ;Accessing a first video stream, wherein the first video stream is one of a plurality of video streams; 상기 제1 비디오 스트림을 인코딩하는 데 사용되는 제1 비디오 표준을 식별하는 단계;Identifying a first video standard used to encode the first video stream; 상기 제1 비디오 스트림을 디코딩하는 데 사용되는 상기 하드웨어 다중 표준 비디오 디코더 장치의 복수의 하드웨어 디코딩 블록의 하드웨어 디코딩 블록들의 제1 서브세트를 결정하는 단계 - 상기 복수의 하드웨어 디코딩 블록의 상이한 서브세트들은 상이한 비디오 인코딩 표준들을 이용하여 인코딩된 비디오 스트림들을 디코딩하기 위해 동작 가능함 - ; 및Determining a first subset of hardware decoding blocks of a plurality of hardware decoding blocks of the hardware multi-standard video decoder device used to decode the first video stream, wherein different subsets of the plurality of hardware decoding blocks are different. Operable to decode video streams encoded using video encoding standards; And 상기 하드웨어 디코딩 블록들의 제1 서브세트를 이용하여 상기 제1 비디오 스트림을 디코딩하는 단계Decoding the first video stream using the first subset of hardware decoding blocks. 를 포함하는 디코딩 방법.Decoding method comprising a. 제1항에 있어서, The method of claim 1, 상기 제1 비디오 스트림의 디코딩과 연관되지 않은 하드웨어 디코딩 블록이 활성화되지 않도록 상기 하드웨어 디코딩 블록들의 서브세트를 활성화하는 단계를 더 포함하는 디코딩 방법.Activating a subset of the hardware decoding blocks such that a hardware decoding block not associated with decoding the first video stream is not activated. 제1항에 있어서, The method of claim 1, 상기 복수의 하드웨어 디코딩 블록은 다중 스테이지의 매크로블록 레벨 파이프라인 내에 구현되는 디코딩 방법.Wherein the plurality of hardware decoding blocks are implemented within a multi-stage macroblock level pipeline. 제3항에 있어서, The method of claim 3, 상기 제1 비디오 스트림의 어떠한 데이터도 상기 스테이지에서 수신되지 않는 경우에, 상기 다중 스테이지의 매크로블록 레벨 파이프라인 중 하나의 스테이지 내의 하드웨어 디코딩 블록들을 비활성화하는 단계를 더 포함하는 디코딩 방법.If no data of the first video stream is received at the stage, deactivating hardware decoding blocks within one of the multi-stage macroblock level pipelines. 제1항에 있어서, The method of claim 1, 상기 제1 비디오 스트림의 상기 디코딩에 이어서 메모리 유닛에 액세스하는 단계를 더 포함하는 디코딩 방법.Accessing a memory unit following said decoding of said first video stream. 제1항에 있어서,The method of claim 1, 상기 복수의 비디오 스트림에 액세스하는 단계;Accessing the plurality of video streams; 상기 복수의 비디오 스트림의 비디오 스트림들에 대해 사용되는 제2 비디오 표준을 식별하는 단계;Identifying a second video standard used for video streams of the plurality of video streams; 상기 복수의 비디오 스트림의 부분들을 인터리빙하는 단계;Interleaving portions of the plurality of video streams; 상기 복수의 하드웨어 디코딩 블록의 하드웨어 디코딩 블록들의 복수의 서브세트를 결정하는 단계; 및Determining a plurality of subsets of hardware decoding blocks of the plurality of hardware decoding blocks; And 상기 하드웨어 디코딩 블록들의 복수의 서브세트를 이용하여 상기 복수의 비디오 스트림을 디코딩하는 단계Decoding the plurality of video streams using the plurality of subsets of the hardware decoding blocks. 를 더 포함하는 디코딩 방법.Decoding method further comprising. 제6항에 있어서, The method of claim 6, 상기 복수의 비디오 스트림은 적어도 하나의 디지털 정지 이미지 스트림 및 디지털 영화 스트림을 포함하는 디코딩 방법.Wherein the plurality of video streams comprises at least one digital still image stream and a digital movie stream. 제7항에 있어서, The method of claim 7, wherein 상기 복수의 비디오 스트림의 상기 부분들은 상기 디지털 정지 이미지 스트림 및 상기 디지털 영화 스트림의 프레임들인 디코딩 방법.And said portions of said plurality of video streams are frames of said digital still image stream and said digital movie stream. 제6항에 있어서, The method of claim 6, 상기 복수의 비디오 스트림은 복수의 디지털 영화 스트림을 포함하는 디코딩 방법.And the plurality of video streams comprises a plurality of digital movie streams. 제9항에 있어서, The method of claim 9, 상기 복수의 비디오 스트림의 상기 부분들은 상기 복수의 디지털 영화 스트 림의 매크로블록들인 디코딩 방법.And said portions of said plurality of video streams are macroblocks of said plurality of digital movie streams.
KR1020087016391A 2005-12-09 2006-12-06 A hardware multi-standard video decoder device KR101065546B1 (en)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US11/299,055 2005-12-09
US11/299,057 US9204158B2 (en) 2005-12-09 2005-12-09 Hardware multi-standard video decoder device
US11/299,057 2005-12-09
US11/299,055 US9210437B2 (en) 2005-12-09 2005-12-09 Hardware multi-stream multi-standard video decoder device
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 (en) 2005-12-09 2006-12-06 A hardware multi-standard video decoder device

Publications (2)

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

Family

ID=38163412

Family Applications (2)

Application Number Title Priority Date Filing Date
KR1020107008555A KR20100046284A (en) 2005-12-09 2006-12-06 A hardware multi-standard video decoder device
KR1020087016391A KR101065546B1 (en) 2005-12-09 2006-12-06 A hardware multi-standard video decoder device

Family Applications Before (1)

Application Number Title Priority Date Filing Date
KR1020107008555A KR20100046284A (en) 2005-12-09 2006-12-06 A hardware multi-standard video decoder device

Country Status (6)

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

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
PL2700234T3 (en) * 2011-04-22 2019-10-31 Dolby Int Ab Method and device for lossy compress-encoding data
CN109600619A (en) * 2018-12-11 2019-04-09 晶晨半导体(上海)股份有限公司 A kind of time-sharing multiplexing method of decoding hardware
CN112672166B (en) * 2020-12-24 2023-05-05 北京睿芯高通量科技有限公司 Multi-code stream decoding acceleration system and method for video decoder
CN114339257B (en) * 2022-01-26 2023-11-28 稿定(厦门)科技有限公司 Method and apparatus for decoding video file

Family Cites Families (14)

* 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
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 (en) * 1997-09-30 2005-01-05 松下電器産業株式会社 Television receiver and video signal processing apparatus
JP3492567B2 (en) * 1999-09-24 2004-02-03 シャープ株式会社 Digital AV system capable of mutual data transmission and reception
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 (en) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd Multi-format stream decoder and multi-format stream sender
US8284844B2 (en) * 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
WO2003085494A2 (en) * 2002-04-01 2003-10-16 Broadcom Corporation Video decoding system
KR20050085273A (en) * 2002-12-04 2005-08-29 코닌클리즈케 필립스 일렉트로닉스 엔.브이. Method and apparatus for selecting particular decoder based on bitstream format detection
JP2005267172A (en) * 2004-03-18 2005-09-29 Sony Corp Content reception system, device and method, recording medium, and program
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 (en) * 2005-10-04 2007-01-12 삼성전자주식회사 Filtering apparatus and method for a multi-codec

Also Published As

Publication number Publication date
KR20100046284A (en) 2010-05-06
KR101065546B1 (en) 2011-09-19
DE112006003307T8 (en) 2009-01-29
CN101322321A (en) 2008-12-10
WO2007070343A2 (en) 2007-06-21
TW200735667A (en) 2007-09-16
JP4891335B2 (en) 2012-03-07
DE112006003307T5 (en) 2008-10-23
JP2009518960A (en) 2009-05-07
WO2007070343A3 (en) 2008-01-17

Similar Documents

Publication Publication Date Title
US9210437B2 (en) Hardware multi-stream multi-standard video decoder device
US10397592B2 (en) Method and apparatus for multi-threaded video decoding
KR101227667B1 (en) Piecewise processing of overlap smoothing and in-loop deblocking
US20090129478A1 (en) Deblocking filter
JP2005510981A (en) Multi-channel video transcoding system and method
US20080170611A1 (en) Configurable functional multi-processing architecture for video processing
US9161056B2 (en) Method for low memory footprint compressed video decoding
CN110121065B (en) Multi-directional image processing in spatially ordered video coding applications
US9204158B2 (en) Hardware multi-standard video decoder device
KR101065546B1 (en) A hardware multi-standard video decoder device
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 (en) Decoder and decoding method
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
JP2012505607A (en) Method and apparatus for reducing bus traffic of a texture decoding module in a video decoder
CN115866297A (en) Video processing method, device, equipment and storage medium
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
KR100556341B1 (en) Vedeo decoder system having reduced memory bandwidth
US20080056377A1 (en) Neighboring Context Management
US6614437B1 (en) Apparatus and method for efficient memory utilization in an electronic system
KR20040073095A (en) A Device for Both Encoding and Decoding MPEG or JPEG Data
JP2004222262A (en) Built-in memory device for motion picture compression

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