JP2009518960A - Hardware multi-standard video decoder device - Google Patents

Hardware multi-standard video decoder device Download PDF

Info

Publication number
JP2009518960A
JP2009518960A JP2008544512A JP2008544512A JP2009518960A JP 2009518960 A JP2009518960 A JP 2009518960A JP 2008544512 A JP2008544512 A JP 2008544512A JP 2008544512 A JP2008544512 A JP 2008544512A JP 2009518960 A JP2009518960 A JP 2009518960A
Authority
JP
Japan
Prior art keywords
video
video stream
hardware
decoding
engine
Prior art date
Legal status (The legal status 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 status listed.)
Granted
Application number
JP2008544512A
Other languages
Japanese (ja)
Other versions
JP4891335B2 (en
JP2009518960A5 (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 JP2009518960A publication Critical patent/JP2009518960A/en
Publication of JP2009518960A5 publication Critical patent/JP2009518960A5/ja
Application granted granted Critical
Publication of JP4891335B2 publication Critical patent/JP4891335B2/en
Active legal-status Critical Current
Anticipated expiration legal-status Critical

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

ハードウェア多標準対応ビデオデコーダ装置。命令パーサはビデオストリームにアクセスし、ビデオストリームを符号化するために使用されたビデオ符号化標準を特定する。複数のハードウェア復号化ブロックがビデオストリームの復号化に関連する動作を実行し、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。
【選択図】 図1
A hardware multi-standard video decoder device. The instruction parser accesses the video stream and identifies the video coding standard that was used to encode the video stream. Multiple hardware decoding blocks perform operations related to decoding a video stream, and different subsets of multiple hardware decoding blocks decode video streams encoded using different video encoding standards. It is for making it.
[Selection] Figure 1

Description

分野Field

[001]本明細書で説明される技術分野はビデオ復号化に関する。より具体的には、本明細書は、ハードウェア多標準対応ビデオデコーダ装置に関する。   [001] The technical field described herein relates to video decoding. More specifically, the present specification relates to a hardware multi-standard video decoder device.

背景background

[002]概して、デジタルビデオストリームは、多くの異なる符号化標準のうちの1つを使用して符号化される。例えば、デジタルビデオストリームは、より少ないビットしか必要としないデータ形式への変換のために圧縮されることができる。この圧縮は、元のビデオストリームが復号化のときに再現されることができるように可逆であることができるか、又は元のビデオストリームの正確な複製が再現されることができないが、圧縮データの復号化がより効率的であるように不可逆であることができる。   [002] In general, a digital video stream is encoded using one of many different encoding standards. For example, a digital video stream can be compressed for conversion to a data format that requires fewer bits. This compression can be reversible so that the original video stream can be reproduced at the time of decoding, or an exact duplicate of the original video stream cannot be reproduced, but the compressed data Can be irreversible so that the decoding of is more efficient.

[003]現在、多くのビデオ符号化標準が存在し、新しい標準が頻繁に登場している。現在のビデオ符号化標準の例は、JPEG(Joint Photographic Experts Group)、MPEG(Moving Pictures Experts Group)、MPEG−2、MPEG−3、MPEG−4、H.263、H.263+、H.264、並びにReal Video及びWindows Mediaなどの独自仕様の標準を含む。デジタルビデオの利益を十分に得るために、ユーザは、全ての一般的な符号化標準を復号化することができるデコーダにアクセスする必要がある。   [003] Currently, there are many video coding standards, and new standards frequently appear. Examples of current video coding standards include JPEG (Joint Photographic Experts Group), MPEG (Moving Pictures Experts Group), MPEG-2, MPEG-3, MPEG-4, and H.264. 263, H.M. 263+, H.H. H.264, and proprietary standards such as Real Video and Windows Media. In order to fully benefit from digital video, the user needs access to a decoder that can decode all common coding standards.

[004]ビデオをストリーミングするための多くの重要な用途は、リアルタイム通信に関連する。例えば、テレビ電話は、そのテレビ電話が対応する音声信号と同期することができるようにリアルタイムのビデオ復号化を必要とする。したがって、リアルタイム通信に関連するアプリケーションを提供するためにユーザにリアルタイムビデオ復号化を提供することがやはり望ましい。さらに、ユーザが複数のビデオストリームの復号化を要求する状況が生じる。例えば、テレビ電話で現在通話中のユーザが、当該ユーザが話している人から添付画像を受信する。この例において、テレビ電話ストリームのリアルタイムの復号化が、会話に必要な画像が復号されながら維持されなければならない。   [004] Many important applications for streaming video are related to real-time communications. For example, a videophone requires real-time video decoding so that the videophone can be synchronized with the corresponding audio signal. Accordingly, it is still desirable to provide real-time video decoding to users to provide applications related to real-time communications. Furthermore, a situation arises where the user requests decoding of multiple video streams. For example, a user who is currently talking on a videophone receives an attached image from a person who is speaking. In this example, real-time decoding of the videophone stream must be maintained as the images required for the conversation are decoded.

[005]現在、ビデオ復号化は、2つの利用可能な方法、すなわち、単一標準対応ハードウェアビデオデコーダと、1つ又は複数のビデオ標準に従ってビデオストリームを復号化することができるソフトウェアベースのプログラム可能なコアとのうちの1つを使用して実行される。単一標準対応ハードウェアビデオデコーダは、リアルタイムの復号化機能を提供することができる。しかし、特定の符号化標準を使用して符号化されたビデオストリームを復号化するために、ユーザは、その特定の標準用のハードウェアビデオデコーダを持っていなければならない。多数の広く使用されているビデオ符号化標準が存在するので、ユーザは、ユーザにかかる金銭的コストが大きい、異なるビデオ符号化標準を使用して符号化されたデジタルビデオにアクセスするための多くの異なる単一標準対応ハードウェアビデオデコーダを必要とする。さらに、典型的なコンピュータシステムは、多くの単一標準対応ハードウェアビデオデコーダを追加することができず、さらには、ユーザがアクセスすることができるビデオストリーム数を制限する。   [005] Currently, video decoding is a software-based program that can decode a video stream according to two available methods: a single standard capable hardware video decoder and one or more video standards. It is executed using one of the possible cores. A single-standard hardware video decoder can provide real-time decoding capabilities. However, in order to decode a video stream encoded using a specific encoding standard, the user must have a hardware video decoder for that specific standard. Since there are a number of widely used video coding standards, users have much to access digital video encoded using different video coding standards, which is costly to the user. Requires a different single-standard hardware video decoder. Furthermore, typical computer systems cannot add many single-standard hardware video decoders, and further limit the number of video streams that a user can access.

[006]現在のソフトウェアベースのプログラム可能なコアビデオデコーダは、1つ又は複数のビデオ符号化標準を使用する符号化を提供するために利用できる。プログラム可能なコアビデオデコーダは、復号化機能を高速化するためのハードウェア高速化を含む可能性がある。しかし、プログラム可能なコアは全ての復号化を実行する。概して、プログラム可能なコアビデオデコーダは、大きな処理オーバヘッドを有し、効率が低く、単一標準対応ハードウェアビデオデコーダよりもずっと多くの電力を消費する。さらに、プログラム可能なコアビデオデコーダは、復号化がコンピュータシステム全体の処理要件に影響を受けるので、リアルタイムのビデオ復号化を常に提供し続けることはできない。   [006] Current software-based programmable core video decoders can be utilized to provide encoding using one or more video encoding standards. A programmable core video decoder may include hardware acceleration to speed up the decoding function. However, the programmable core performs all decryption. In general, a programmable core video decoder has a large processing overhead, is less efficient, and consumes much more power than a single-standard hardware video decoder. Furthermore, programmable core video decoders cannot always provide real-time video decoding because the decoding is affected by the processing requirements of the entire computer system.

[007]したがって、現在利用可能なデジタルビデオデコーダは、多数の広く使用されているビデオ符号化標準のためのリアルタイムのビデオ復号化を提供することができない。加えて、現在利用可能なデジタルビデオデコーダは、多数の広く使用されているビデオ符号化標準を使用して符号化された複数のストリームに対するビデオ復号化を同時に提供することができない。さらに、現在利用可能なデジタルビデオデコーダは、少なくとも1つのビデオストリームがリアルタイムの復号化を必要とする複数のビデオストリームを同時に復号化することができない。したがって、必要とされているのは、従来技術に対する制限を克服する新しいデジタルビデオデコーダである。新しいデジタルビデオデコーダは、複数の異なるビデオ標準のためのリアルタイムのビデオ復号化機能を提供すべきである。また、新しいデジタルビデオデコーダは、複数の異なるビデオ標準を使用して符号化された複数のビデオストリームのためのビデオ復号化機能を同時に提供すべきである。   [007] Thus, currently available digital video decoders cannot provide real-time video decoding for a number of widely used video coding standards. In addition, currently available digital video decoders cannot simultaneously provide video decoding for multiple streams encoded using a number of widely used video encoding standards. Furthermore, currently available digital video decoders cannot simultaneously decode multiple video streams where at least one video stream requires real-time decoding. Therefore, what is needed is a new digital video decoder that overcomes the limitations of the prior art. New digital video decoders should provide real-time video decoding capabilities for multiple different video standards. A new digital video decoder should also provide video decoding capabilities for multiple video streams encoded using multiple different video standards simultaneously.

概要Overview

[008]本発明の実施形態は、複数の異なるビデオ符号化標準のためのビデオ復号化機能を提供するためのハードウェア多標準対応ビデオデコーダ装置を提供する。本発明の実施形態は、複数のビデオ符号化標準のそれぞれに対してリアルタイムの復号化を提供することができる。   [008] 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 can provide real-time decoding for each of a plurality of video coding standards.

[009]一実施形態において、本発明は、ハードウェア多標準対応ビデオデコーダ装置を提供する。ハードウェア多標準対応ビデオデコーダ装置の命令パーサは、ビデオストリームにアクセスするように動作可能であり、ビデオストリームの符号化に使用されたビデオ符号化標準を特定するように動作可能である。ハードウェア多標準対応ビデオデコーダ装置は、ビデオストリームの復号化に関連する動作を実行するための複数のハードウェア復号化ブロックも含み、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。一実施形態において、ハードウェア多標準対応ビデオデコーダ装置は、プリント回路基板に結合された集積回路内に実装され、プリント回路基板は、当該プリント回路基板をコンピュータシステムに取り外し可能に結合するためのコネクタに結合される。   [009] In one embodiment, the present invention provides a hardware multi-standard video decoder device. The instruction parser of the hardware multi-standard video decoder device is operable to access the video stream and is operable to 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 related to decoding of the video stream, wherein different subsets of the plurality of hardware decoding blocks are different video encodings. For decoding a video stream encoded using a standard. 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 being a connector for releasably coupling the printed circuit board to a computer system. Combined with

[010]一実施形態において、命令パーサは、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないように、ビデオストリームを符号化するために使用された第1の特定されたビデオ符号化標準を復号化するために使用される複数のハードウェア復号化ブロックの第1のサブセットを作動するように動作可能である。一実施形態において、命令パーサは、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないように、ビデオストリームを符号化するために使用された第2の特定されたビデオ符号化標準を復号化するために使用される複数のハードウェア復号化ブロックの第2のサブセットを作動するように動作可能である。   [010] In one embodiment, the instruction parser uses a first identified video code used to encode the video stream such that hardware decoding blocks not involved in decoding the video stream are not activated. Operable to operate a first subset of a plurality of hardware decoding blocks used to decode the encoding standard. In one embodiment, the instruction parser determines the second identified video encoding standard used to encode the video stream such that hardware decoding blocks not involved in decoding the video stream are not activated. Operable to operate a second subset of the plurality of hardware decoding blocks used to decode.

[011]一実施形態において、複数のハードウェア復号化ブロックは、多段階マクロブロックレベルパイプライン内に実装される。一実施形態において、命令パーサは、多段階マクロブロックレベルパイプラインの1つの段階でビデオストリームのデータが受信されない場合にその段階の中のハードウェア復号化ブロックを停止するように動作可能である。一実施形態において、ハードウェア多標準対応ビデオデコーダ装置は、ビデオストリームを完全に復号化した後でメモリユニットにアクセスする。   [011] In one embodiment, the plurality of hardware decoding blocks are implemented in a multi-stage macroblock level pipeline. In one embodiment, the instruction parser is operable to stop the hardware decoding block in a stage when no data in the video stream is received in 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.

[012]一実施形態において、ハードウェア多標準対応ビデオデコーダ装置は、復号化されたビデオストリームに対して後処理動作を実行するためのハードウェア後処理ブロックをさらに含む。一実施形態において、命令パーサは、ハードウェア後処理ブロックが復号化されたビデオストリームに対して後処理動作を実行するように、命令パーサにおいて受信されたビデオストリームが復号化されたビデオストリームである場合に複数のハードウェア復号化ブロックを停止するように動作可能である。一実施形態において、ハードウェア後処理ブロックはフィルタを含む。   [012] In one embodiment, the hardware multi-standard video decoder device further includes a hardware post-processing block for performing post-processing operations on the decoded video stream. In one embodiment, the instruction parser is a video stream obtained by decoding the video stream received at the instruction parser so that the hardware post-processing block performs a post-processing operation on the decoded video stream. In some cases, it is operable to stop a plurality of hardware decoding blocks. In one embodiment, the hardware post-processing block includes a filter.

[013]別の実施形態において、本発明はビデオストリームを復号化するための方法を提供し、方法はハードウェア多標準対応ビデオデコーダ装置を使用して実行される。ビデオストリームがアクセスされる。ビデオストリームを符号化するために使用されたビデオ標準が特定される。ビデオストリームを復号化するために使用されるハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定され、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。ビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。   [013] In another embodiment, the present invention provides a method for decoding a video stream, and the method is performed using a hardware multi-standard video decoder device. A 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 the plurality of hardware decoding blocks are different. The subset is operable to decode video streams encoded using different video encoding standards. The video stream is decoded using a subset of hardware decoding blocks.

[014]一実施形態において、複数のレジスタが、メモリサーフェスポインタレジスタ及びフレームレベルパラメータレジスタを含む。一実施形態において、ハードウェア多ストリーム多標準対応ビデオデコーダ装置は、少なくとも1つの復号化されたビデオストリームに対して後処理動作を実行するためのハードウェア後処理ブロックをさらに含む。   [014] In one embodiment, the plurality of registers includes a memory surface pointer register and a frame level parameter register. In one embodiment, the hardware multi-stream multi-standard video decoder device further includes a hardware post-processing block for performing post-processing operations on the at least one decoded video stream.

[015]一実施形態において、複数のビデオストリームは、少なくとも1つのデジタル静止画像ストリーム、及びデジタルムービーストリームを含む。この実施形態において、複数のビデオストリームの一部は、デジタル静止画像ストリーム及びデジタルムービーストリームのマクロブロックである。別の実施形態において、複数のビデオストリームは、複数のデジタルムービーストリームを含む。この実施形態において、複数のビデオストリームの一部は、複数のデジタルムービーストリームのマクロブロックである。   [015] In one embodiment, the plurality of video streams includes at least one digital still image stream and a digital movie stream. In this embodiment, some of the plurality of video streams are macroblocks of a digital still image stream and a digital movie stream. In another embodiment, the plurality of video streams includes a plurality of digital movie streams. In this embodiment, some of the multiple video streams are macroblocks of multiple digital movie streams.

[016]別の実施形態において、本発明は複数のビデオストリームを復号化するための方法を提供し、方法はハードウェア多ストリーム多標準対応ビデオデコーダ装置を使用して実行される。複数のビデオストリームがアクセスされる。ビデオストリームを符号化するために使用されたビデオ標準が特定される。ビデオストリームを復号化するために使用されるハードウェア多ストリーム多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定され、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。複数のビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。一実施形態において、前記複数のビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックの複数のサブセットが作動される。   [016] In another embodiment, the present invention provides a method for decoding a plurality of video streams, the method being performed using a hardware multi-stream multi-standard video decoder device. Multiple video streams are accessed. The video standard used to encode the video stream is identified. A subset of hardware decoding blocks of a plurality of hardware decoding blocks of a hardware multi-stream multi-standard video decoder device used to decode a video stream is determined, and the plurality of hardware decoding blocks The different subsets are operable to decode video streams encoded using different video encoding standards. Multiple video streams are decoded using a subset of the hardware decoding blocks. In one embodiment, a plurality of subsets of hardware decoding blocks are activated such that hardware decoding blocks not involved in decoding the plurality of video streams are not activated.

概して、本明細書は、ハードウェア多標準対応ビデオデコーダ装置を開示する。命令パーサはビデオストリームにアクセスし、ビデオストリームを符号化するために使用されたビデオ符号化標準を特定する。複数のハードウェア復号化ブロックがビデオストリームの復号化に関連する動作を実行し、複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。   In general, this specification discloses a hardware multi-standard video decoder device. The instruction parser accesses the video stream and identifies the video coding standard that was used to encode the video stream. Multiple hardware decoding blocks perform operations related to decoding a video stream, and different subsets of multiple hardware decoding blocks decode video streams encoded using different video encoding standards. It is for making it.

[017]本発明が、同様の参照番号が同様の要素を参照する添付の図面の図において限定としてではなく例として示される。   [017] The present invention is illustrated by way of example and not limitation in the figures of the accompanying drawings in which like reference numerals refer to like elements.

詳細な説明Detailed description

[030]ここで、本発明の好ましい実施形態に対する言及が詳細になされ、それらの実施形態の例が添付の図面に示される。本発明が好ましい実施形態に関連して説明されるが、これらの実施形態は本発明をこれらの実施形態に限定するように意図されていないことが理解されるであろう。むしろ、本発明は、添付の特許請求の範囲によって定義された本発明の精神及び範囲内に含まれ得る変更形態、修正形態、及び均等物を包含するように意図される。さらに、本発明の実施形態の以下の詳細な説明において、本発明の完全な理解を提供するために多くの具体的な詳細が説明される。しかし、本発明がこれらの具体的詳細なしに実施され得ることが当業者によって理解されるであろう。その他の場合、本発明の実施形態の態様を不必要に曖昧にしないように、よく知られている方法、プロシージャ、コンポーネント、及び回路は詳細に説明されていない。   [030] Reference will now be made in detail to the preferred embodiments of the invention, examples of which are illustrated in the accompanying drawings. While the invention will be described in conjunction with the preferred embodiments, it will be understood that these embodiments are not intended to limit the invention to these embodiments. Rather, the present invention is intended to embrace alterations, modifications, and equivalents that may be included within the spirit and scope of the present invention as defined by the appended claims. Furthermore, in the following detailed description of embodiments of the present invention, numerous specific details are set forth in order to provide a thorough understanding of the present invention. However, it will be understood by one skilled in the art 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 as not to unnecessarily obscure aspects of the embodiments of the present invention.

表記及び用語
[031]以下に続く詳細な説明の一部は、プロシージャ、ステップ、論理ブロック、処理、及びコンピュータメモリ内のデータビットに対する操作のその他の記号的表現の観点で示される。これらの記述及び表現は、データ処理技術に精通した者によって、それらの者の業績の内容を当該技術に精通したその他の者に最も効果的に伝えるために使用される手段である。プロシージャ、コンピュータによって実行されるステップ、論理ブロック、プロセスなどは、ここで、及び概して、所望の結果をもたらす自己矛盾のない一連のステップ又は命令であると考えられる。ステップとは、物理量の物理的操作を必要とするステップである。必ずではないが通常は、これらの量は、記憶、転送、組合せ、比較、及びコンピュータシステムにおけるその他の操作を行われることができる電気的又は磁気的信号の形態を取る。これらの信号をビット、値、要素、シンボル、文字、語、数などと呼ぶことが、主に共通使用の理由で便利であることがあることが分かっている。
Notation and terminology
[031] Some of the detailed description that follows is presented in terms of 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 familiar with data processing technology to most effectively convey the content of their performance to others familiar with the technology. Procedures, computer-executed steps, logic blocks, processes, etc. are here and generally considered to be a self-consistent sequence of steps or instructions that produce the desired result. A step is a step that requires physical manipulation of physical quantities. Usually, though not necessarily, these quantities take the form of electrical or magnetic signals capable of being stored, transferred, combined, compared, and otherwise manipulated in a computer system. It has proven convenient to refer to these signals as bits, values, elements, symbols, characters, words, numbers, etc. mainly for common use reasons.

[032]しかし、これらの及び同様の用語の全ては適切な物理量に関連付けられるべきであり、これらの量に付される便宜的なラベルであるに過ぎないことに留意されたい。以下の検討から明らかなように、別途具体的に示されない限り、本発明の全体を通じて、「特定する」、又は「アクセスする」、又は「実行する」、又は「復号化する」、又は「作動する」、又は「停止する」、又は「決定する」、又は「処理する」、又は「受信する」、又は「バッファリングする」、又は「整列する」、又は「転送する」、又は「パースする」、又は「インターリーブする」、又は「回転する」、又は「再配置する」、又は「記憶する」などの用語を利用する検討は、コンピュータシステムのレジスタ及びメモリ内で物理(電子的)量として表されるデータを操作し、コンピュータシステムのメモリ、又はレジスタ、又はその他のそのような情報記憶、送信、若しくは表示装置内で同様に物理量として表されるその他のデータに変換するハードウェア多標準対応ビデオデコーダ装置(例えば、図3のハードウェア多標準対応ビデオデコーダ装置150)、ハードウェア多ストリーム多標準対応ビデオデコーダ装置(例えば、図6のハードウェア多ストリーム多標準対応ビデオデコーダ装置600)、マイクロコードエンジン(例えば、図2Bのマイクロコードエンジン260)、回転エンジン(例えば、図4の回転エンジン450)、又は同様の電子的コンピューティングデバイスの動作及びプロセスに言及することが理解される。   [032] It should be noted, however, that all of these and similar terms are to be associated with the appropriate physical quantities and are merely convenient labels applied to these quantities. As will be apparent from the discussion below, unless otherwise specified, throughout the present invention “identify” or “access” or “execute” or “decrypt” or “activate” "Or" "stop" or "determine" or "process" or "receive" or "buffer" or "align" or "forward" or "parse" , Or “interleave”, “rotate”, “relocate”, or “store” terms are considered as physical (electronic) quantities in the computer system registers and memory. Manipulate the data represented, and other data represented as physical quantities in the computer system's memory or registers, or other such information storage, transmission, or display devices as well. Hardware multi-standard video decoder device (for example, hardware multi-standard video decoder device 150 in FIG. 3), hardware multi-stream multi-standard video decoder device (for example, hardware multi-stream video in FIG. 6). Standard-compliant video decoder apparatus 600), microcode engine (eg, microcode engine 260 of FIG. 2B), rotation engine (eg, rotation engine 450 of FIG. 4), or similar electronic computing device operation and process. To be understood.

コンピュータシステムプラットフォーム
[033]図1は、本発明の実施形態が実施されることができる例示的なコンピュータシステム100を示す。概して、コンピュータシステム100は、情報を伝達するためのバス110と、情報及び命令を処理するための、バス110に結合された処理装置101と、処理装置101のための情報及び命令を記憶するための、バス110に結合された、ランダムアクセスメモリ(RAM)とも呼ばれる揮発性メモリ102と、処理装置101のための静的な情報及び命令を記憶するための、バス110に結合された、本明細書においては読み出し専用メモリ(ROM)とも呼ばれる不揮発性メモリ103とを含む。
Computer system platform
[033] FIG. 1 illustrates an exemplary computer system 100 in which embodiments of the present invention may be implemented. In general, computer system 100 stores a bus 110 for communicating information, a processing device 101 coupled to bus 110 for processing information and instructions, and information and instructions for processing device 101. A volatile memory 102, also referred to as a random access memory (RAM), coupled to the bus 110, and a bus 110 for storing static information and instructions for the processing unit 101. The book includes a non-volatile memory 103 also called a read-only memory (ROM).

[034]一実施形態において、コンピュータシステム100は、情報及び命令を記憶するための、バス110に結合された磁気又は光ディスク及びディスクドライブなどの任意的なデータ記憶装置104を含む。一実施形態において、コンピュータシステム100は、コンピュータユーザに対して情報を表示するための、バス110に結合されたディスプレイ装置105などの任意的なユーザ出力装置、情報及び命令の選択を処理装置101に伝達するための、バス110に結合された英数字及びファンクションキーを含む英数字入力装置106などの任意的なユーザ入力装置、並びに/又はユーザ入力情報及び命令の選択を処理装置101に伝達するための、バス110に結合されたカーソル制御装置107などの任意的なユーザ入力装置を含む。さらに、任意的な入力/出力(I/O)装置108が、コンピュータシステム100を例えばネットワークに結合するために使用される。   [034] In one embodiment, the computer system 100 includes an optional data storage device 104, such as a magnetic or optical disk and disk drive, coupled to the bus 110 for storing information and instructions. In one embodiment, the computer system 100 allows the processing device 101 to select an optional user output device, such as a display device 105 coupled to the bus 110, and information and instructions for displaying information to a computer user. To communicate the selection of optional user input devices, such as alphanumeric input device 106 including alphanumeric and function keys coupled to bus 110, and / or user input information and command selection to processing device 101. Optional user input devices such as cursor control device 107 coupled to bus 110. In addition, an optional input / output (I / O) device 108 is used to couple the computer system 100 to, for example, a network.

[035]一実施形態において、コンピュータシステム100は、複数のビデオ符号化標準のうちの1つを使用して符号化されたビデオストリームを復号化するための、本明細書においてデコーダ装置150とも呼ばれるハードウェア多標準対応ビデオデコーダ装置150も含む。デコーダ装置150は、複数のビデオ符号化標準によって必要とされる復号化動作を実行するための複数のハードウェア復号化ブロックを含む。デコーダ装置150は、デジタル静止画像及びデジタルムービーを含む、ビデオ符号化標準の任意の組合せによるビデオを復号化するように構成されることができることを理解されたい。例えば、デコーダ装置150は、JPEG、MPEG−4、H.263、H.263+、H.264、及びWindows Media(WMV9/VC−1)形式のうちのいずれかを使用して符号化されたビデオを復号化するように構成されることができる。   [035] In one embodiment, the computer system 100 is also referred to herein as a decoder device 150 for decoding a video stream that has been encoded using one of a plurality of video encoding standards. A hardware multi-standard video decoder device 150 is also included. The decoder device 150 includes a plurality of hardware decoding blocks for performing decoding operations required by a plurality of video encoding standards. It should be understood that the decoder device 150 can be configured to decode video according to any combination of video encoding standards, including digital still images and digital movies. For example, the decoder device 150 may be JPEG, MPEG-4, H.264, or the like. 263, H.M. 263+, H.H. H.264, and can be configured to decode video encoded using any of the Windows Media (WMV9 / VC-1) formats.

[036]デコーダ装置150は、別個のコンポーネント、コネクタ(例えば、AGPスロット、PCI−Expressスロットなど)を介してコンピュータシステム100に結合するように設計された別個のグラフィックスカード、(例えば、マザーボード上に直接取り付けられた)別個の集積回路ダイとして、又はコンピュータシステムのチップセットコンポーネントの集積回路ダイに含まれる統合されたデコーダ装置として実装されることができることを理解されたい。さらに、ローカルのグラフィックスメモリが、データ記憶のためにデコーダ装置150に含まれることができる。   [036] The decoder device 150 is a separate graphics card (eg, on a motherboard) designed to couple to the computer system 100 via a separate component, connector (eg, AGP slot, PCI-Express slot, etc.). It should be understood that it can be implemented as a separate integrated circuit die (directly attached) or as an integrated decoder device included in an integrated circuit die of a chipset component of a computer system. Further, a local graphics memory can be included in the decoder device 150 for data storage.

[037]図2Aは、本発明の一実施形態による、プリント回路基板上に実装された例示的なハードウェアビデオデコーダカード200の図を示す。ハードウェアビデオデコーダカード200は、プリント回路基板(PCB)210、集積回路(IC)チップ220、データ配線225、及びコネクタ230を含む。ICチップ220は、ハードウェア多標準対応ビデオデコーダ装置150を含む。コネクタ230は、コンピュータシステムのコネクタ(例えば、AGPスロット、PCI−Expressスロットなど)を介してコンピュータシステム(例えば、図1のコンピュータシステム100)に結合するように構成される。データ配線225は、コンピュータシステムとICチップ220の間でデータ(例えば、ビットストリーム)を伝達するためのものである。   [037] FIG. 2A shows a diagram of an exemplary hardware video decoder card 200 mounted on a printed circuit board, according to one embodiment of the invention. The hardware video decoder card 200 includes a printed circuit board (PCB) 210, an integrated circuit (IC) chip 220, data wiring 225, and a connector 230. The IC chip 220 includes a hardware multi-standard video decoder device 150. Connector 230 is configured to couple to a computer system (eg, computer system 100 of FIG. 1) via a computer system connector (eg, an AGP slot, a PCI-Express slot, etc.). The data wiring 225 is for transmitting data (for example, a bit stream) between the computer system and the IC chip 220.

[038]図2Bは、本発明の一実施形態による、ハードウェア多標準対応ビデオデコーダ装置150を含む例示的なアーキテクチャ250の図を示す。アーキテクチャ250は、マイクロコードエンジン260、ハードウェア多標準対応ビデオデコーダ装置150、及びメモリ270を含む。一実施形態において、マイクロコードエンジン260は、ハードウェア多標準対応ビデオデコーダ装置150の動作を制御する。マイクロコードエンジン260は、ハードウェア多標準対応ビデオデコーダ装置150が実行しなければならない動作を含み、機械命令とハードウェア装置デコーダ150の間の変換層として働く。一実施形態において、ビットストリームのパース及び可変長復号化(VLD)が、マイクロコードエンジン260において行われる。メモリ270は、受信ビデオストリームに対する復号化及び後処理動作を実行するためにデコーダ装置150によって使用される。動作メモリ270の一実施形態が、図3のメモリ330に示される。   [038] FIG. 2B shows a diagram of an exemplary architecture 250 that includes a hardware multi-standard video decoder device 150, according to one embodiment of the invention. The architecture 250 includes a microcode engine 260, a hardware multi-standard video decoder device 150, and a memory 270. In one embodiment, the microcode engine 260 controls the operation of the hardware multi-standard video decoder device 150. The microcode engine 260 includes the operations that the hardware multi-standard video decoder device 150 must perform and acts as a translation layer between machine instructions and the hardware device decoder 150. In one embodiment, parsing and variable length decoding (VLD) of the bitstream is performed in the microcode engine 260. Memory 270 is used by decoder device 150 to perform decoding and post-processing operations on the received video stream. One embodiment of operational memory 270 is shown in memory 330 of FIG.

[039]図2Bを参照すると、一実施形態において、本発明は、マイクロコードエンジン260においてマクロブロックの並べ替えを行う。以下で説明されるように、デコーダ装置150は、(例えば、ループ内デブロッキングフィルタ440における)ループ内デブロッキング、並びに(例えば、ループ外フィルタ442における)ループ外デブロッキング及び/又はデリンギングなどの様々な後処理動作をサポートする。種々の実施形態において、ループ内デブロッキングは、マクロブロックがループ内デブロッキングフィルタにおいてラスタ走査順で受信されることを必要とする。しかし、H.264などの特定のビデオ標準は、非ラスタ走査順のマクロブロックの送信及び受信をサポートする。したがって、本発明は、非ラスタ走査順のマクロブロックの送信及び受信をサポートするビデオ標準のためのループ内デブロッキングをサポートするために、マクロブロックをラスタ走査順に整列することを提供する。   [039] Referring to FIG. 2B, in one embodiment, the present invention performs macroblock reordering in the microcode engine 260. As described below, decoder device 150 may perform various operations such as in-loop deblocking (eg, in in-loop deblocking filter 440) and out-of-loop deblocking and / or deringing (eg, in out-of-loop filter 442). Support post-processing operations. In various embodiments, in-loop deblocking requires macroblocks to be received in raster scan order at an in-loop deblocking filter. However, H. Certain video standards, such as H.264, support transmission and reception of macroblocks in non-raster scan order. Thus, the present invention provides for aligning macroblocks in raster scan order to support in-loop deblocking for video standards that support transmission and reception of macroblocks in non-raster scan order.

[040]一実施形態において、前処理動作が、マイクロコードエンジン260において実行される。一実施形態において、ビットストリームのパース及び可変長復号化(VLD)が、マイクロコードエンジン260において行われる。マイクロコードエンジン260は、マクロブロックをハードウェアデコーダ装置150に送信する前にそれらのマクロブロックを整列するように構成される。マイクロコードエンジン260は、圧縮データの1フレームをバッファリングする。一実施形態において、マイクロコードエンジン260は、ランレングス符号化された圧縮データの1フレームをバッファリングする。一実施形態において、マイクロコードエンジン260は、受信ビットストリームをパースし、次にVLDを実行する。マイクロコードエンジン260が順番が狂ったマクロブロックを検出する場合、そのマイクロコードエンジン260はデータをバッファし、全てのマクロブロックが受信されるのを待つ。次に、マイクロコードエンジン260は、マクロブロックをラスタ走査順に整列し、それらのマクロブロックをハードウェアデコーダ装置150に送信する。   [040] In one embodiment, pre-processing operations are performed in the microcode engine 260. In one embodiment, parsing and variable length decoding (VLD) of the bitstream is performed in the microcode engine 260. The microcode engine 260 is configured to align the macroblocks before sending them to the hardware decoder device 150. The microcode engine 260 buffers one frame of compressed data. In one embodiment, the microcode engine 260 buffers one frame of run-length encoded compressed data. In one embodiment, the microcode engine 260 parses the received bitstream and then performs VLD. If the microcode engine 260 detects an out-of-order macroblock, the microcode engine 260 buffers the data and waits for all macroblocks to be received. Next, the microcode engine 260 arranges the macroblocks in the raster scan order and transmits the macroblocks to the hardware decoder device 150.

[041]マクロブロックがマクロブロックをまだ圧縮データである間にバッファリングすることによって、マイクロコードエンジン260は、復号化されたビデオデータよりもずっと少ないランレングス符号化圧縮データの最大1フレームをバッファリングすることしか必要としない。さらに、圧縮マクロブロックのバッファリングは、電力も節約する。また、無線で受信されたビデオストリームは、多くのエラーを含みやすい。また、マイクロコードエンジン260に対するビットストリームのパースの分割は、エラー回復を改善する利点を有する。   [041] By buffering a macroblock while the macroblock is still compressed data, the microcode engine 260 buffers up to one frame of run-length encoded compressed data that is much less than the decoded video data. You only need to ring. Furthermore, compressed macroblock buffering also saves power. Also, video streams received over the air are likely to contain many errors. Also, the parsing of the bitstream for the microcode engine 260 has the advantage of improving error recovery.

ハードウェア多標準対応ビデオデコーダ装置のアーキテクチャ
[042]図3は、本発明の一実施形態によるハードウェア多標準対応ビデオデコーダ装置150の内部コンポーネントを示す図を示す。図3に示されるように、デコーダ装置150は、命令パーサ305、複数のハードウェア復号化ブロック310から318、ハードウェア後処理ブロック320、及びメモリ330を含む。デコーダ装置150は、複数のビデオ符号化標準を復号化するように動作可能である。
Hardware multi-standard video decoder device architecture
[042] FIG. 3 shows a diagram illustrating the internal components of a hardware multi-standard video decoder device 150 according to one embodiment of the invention. As shown in FIG. 3, the decoder device 150 includes an instruction parser 305, a plurality of hardware decoding blocks 310 to 318, a hardware post-processing block 320, and a memory 330. Decoder device 150 is operable to decode a plurality of video encoding standards.

[043]命令パーサ305は、ビデオストリーム302(例えば、ビットストリーム)にアクセスするためのものである。ビデオストリーム302は、複数のビデオ符号化標準のうちの1つに従って符号化された圧縮ビデオストリームである。ビデオストリーム302は、(例えば、JPEGで符号化された)デジタル静止画像データ、又は(例えば、MPEG−4)デジタルムービーデータを含む可能性があることを理解されたい。一実施形態において、ビデオストリーム302は、マイクロコードエンジン(例えば、図2Bのマイクロコードエンジン260)から受信される。命令パーサ305は、ビデオストリーム302を符号化するために使用されたビデオ符号化標準を特定する。一実施形態において、ビットストリームのパース及び可変長復号化(VLD)が、命令パーサ305がビデオストリーム302にアクセスする前に実行される。ビットストリームのパース及びVLDは、ホストCPU(例えば、図1の処理装置101)又はマイクロコードエンジン(例えば、図2Bのマイクロコードエンジン260)によって実行されることができる。また、命令パーサ305は、クロックサイクルを制御することによってデコーダ装置150を通じたデータの移動を制御する。   [043] The instruction parser 305 is for accessing a video stream 302 (eg, a bitstream). Video stream 302 is a compressed video stream encoded according to one of a plurality of video encoding standards. It should be understood that the video stream 302 may include digital still image data (eg, encoded with JPEG) 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). The instruction parser 305 identifies the video encoding standard that was used to encode the video stream 302. In one embodiment, parsing and variable length decoding (VLD) of the bitstream is performed before the instruction parser 305 accesses the video stream 302. Bitstream parsing and VLD can be performed by a host CPU (eg, processing unit 101 of FIG. 1) or a microcode engine (eg, microcode engine 260 of FIG. 2B). The instruction parser 305 also controls the movement of data through the decoder device 150 by controlling the clock cycle.

[044]複数のハードウェア復号化ブロック310から318は、前記ビデオストリームを復号化することに関連する動作を実行するためのものである。ハードウェア復号化ブロック310から318は、ビデオデコーダ150内に実装されたビデオ標準によるビデオストリームを復号化するために必要とされる異なる復号化機能を表すことを理解されたい。MPEG−4などのビデオ符号化標準は、全てのMPEG−4デコーダがMPEG−4ビデオストリームを復号化することができるように、ビデオストリームを復号化するために特定の動作が実行されることを必要とする。様々な標準に従って復号化を実行するために必要とされる動作は当業者によく知られていることを理解されたい。   [044] A plurality of hardware decoding blocks 310-318 are for performing operations associated with decoding the video stream. It should be understood that the hardware decoding blocks 310 to 318 represent the different decoding functions required to decode a video stream according to the video standard implemented in the video decoder 150. Video encoding standards such as MPEG-4 indicate that certain operations are performed to decode a video stream so that all MPEG-4 decoders can decode the MPEG-4 video stream. I need. It should be understood that the operations required to perform decoding according to various standards are well known to those skilled in the art.

[045]一実施形態において、デコーダ装置150のハードウェア復号化ブロックは、マクロブロックレベル(例えば、8×8画素マクロブロック)で動作を実行するように構成される。しかし、デコーダ装置150は、フレームレベルなどのその他の次元のレベルで動作を実行するハードウェア復号化ブロックを含むことができることを理解されたい。   [045] In one embodiment, the hardware decoding block of decoder device 150 is configured to perform operations at a macroblock level (eg, an 8x8 pixel macroblock). However, it should be understood that the decoder device 150 may include hardware decoding blocks that perform operations at other dimensional levels, such as the frame level.

[046]ハードウェア復号化ブロック310から318の異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するためのものである。例えば、第1の例示的なビデオ標準は、ビデオストリームを復号化する際にハードウェア復号化ブロック312及び316を使用することを必要とする。第2の例示的なビデオ標準は、ビデオストリームを復号化する際にハードウェア復号化ブロック310、312、314、及び318を使用することを必要とする。したがって、本発明の種々の実施形態において、ビデオストリームを復号化するために必要とされるハードウェア復号化ブロックだけが、特定されたビデオ標準を使用して符号化されたビデオストリームの復号化に使用される。   [046] Different subsets of hardware decoding blocks 310 to 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, and 318 in decoding the video stream. Thus, in various embodiments of the present invention, only the hardware decoding blocks required to decode a video stream are used to decode a video stream encoded using a specified video standard. used.

[047]一実施形態において、命令パーサ305は、受信ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないように、前記ビデオストリームを復号化するために必要とされるハードウェア復号化ブロックだけを作動するように動作可能である。例えば、ビデオストリームの復号化に関係のないハードウェア復号化ブロック(例えば、ハードウェア復号化ブロック310、314、及び318)が作動されないように、第1の特定されたビデオ符号化標準を復号化するために使用されるハードウェア復号化ブロックの第1のサブセット(例えば、ハードウェア復号化ブロック312及び316)が作動される。別の例において、前記ビデオストリームの復号化に関係のないハードウェア復号化ブロック(例えば、ハードウェア復号化ブロック316)が作動されないように、第2の特定されたビデオ符号化標準を復号化するために使用される復号化ブロックの第2のサブセット(例えば、ハードウェア復号化ブロック310、312、314、及び318)が作動される。一実施形態において、命令パーサ305は、デコーダ装置150の唯一つのアクティブなコンポーネントである。ハードウェア復号化ブロックは、特定されたビデオ標準及びデータフローに従って必要に応じて作動される。   [047] In one embodiment, the instruction parser 305 determines the hardware decoding required to decode the video stream such that hardware decoding blocks not involved in decoding the received video stream are not activated. It is operable to actuate only the block. For example, the first identified video coding standard is decoded such that hardware decoding blocks not related to decoding of the video stream (eg, hardware decoding blocks 310, 314, and 318) are not activated. A first subset of hardware decoding blocks used to do this (eg, hardware decoding blocks 312 and 316) is activated. In another example, a second identified video coding standard is decoded such that a hardware decoding block not related to decoding of the video stream (eg, hardware decoding block 316) is not activated. A second subset of decoding blocks used for the purpose (eg, hardware decoding blocks 310, 312, 314, and 318) is activated. In one embodiment, instruction parser 305 is the only active component of decoder device 150. The hardware decoding block is activated as needed according to the specified video standard and data flow.

[048]一実施形態において、デコーダ装置150のハードウェア復号化ブロックは、多段階マクロブロックレベルパイプライン内に実装される。図3に示されるように、デコーダ装置150は、ハードウェア復号化ブロック310及び312を含むパイプラインの段階1と、ハードウェア復号化ブロック314、316、及び318を含むパイプラインの段階2とを含む3段階マクロブロックレベルパイプラインとして実装される。一実施形態において、命令パーサ305は、ビデオストリーム302のマクロブロックをパイプラインの段階1のハードウェア復号化ブロックに導く。一実施形態において、2つ以上のマクロブロックがパイプラインの段階1に存在する可能性がある一方、パイプラインの段階2及び3は1つのマクロブロックしか存在しないように制限される。一実施形態において、ハードウェア復号化ブロック312、316、及び318は残差データ経路内にあり、ハードウェア復号化ブロック310及び314は予測データ経路内にある。一実施形態において、残差データ経路は、エラー又は差分データを処理し、予測経路は、前のフレーム又はマクロブロックに関連するデータにアクセスする。   [048] In one embodiment, the hardware decoding block of decoder device 150 is 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 containing. In one embodiment, the instruction parser 305 directs the macroblock of the video stream 302 to the pipeline stage 1 hardware decoding block. In one embodiment, more than one macroblock may exist in pipeline stage 1, while pipeline stages 2 and 3 are limited to having only one macroblock. In one embodiment, hardware decoding blocks 312, 316, and 318 are in the residual data path, and hardware decoding blocks 310 and 314 are in the prediction data path. In one embodiment, the residual data path handles error or difference data, and the prediction path accesses data associated with the previous frame or macroblock.

[049]一実施形態において、命令パーサ305は、多段階マクロブロックレベルパイプラインの1つの段階で前記ビデオストリームのデータが受信されない場合、その段階の中のハードウェア復号化ブロックを停止するように動作可能である。例えば、ビデオストリーム302の復号化において、ビデオストリーム302に関する最後のデータがパイプラインの段階1を出て、データがパイプラインの段階1で受信されないとき、パイプラインの段階1の全てのハードウェア復号化ブロックは停止される。したがって、たとえハードウェア復号化ブロックがビデオストリーム302に関連するビデオ標準のために必要とされるとしても、パイプラインの段階の全てのハードウェア復号化ブロックを停止することによってさらなる省電力が達成される。   [049] In one embodiment, the instruction parser 305 may stop the hardware decoding block in a stage when the data of the video stream is not received in one stage of the multi-stage macroblock level pipeline. It is possible to operate. For example, in decoding video stream 302, all hardware decoding in pipeline stage 1 when the last data for video stream 302 exits pipeline stage 1 and no data is received in pipeline stage 1 The block is stopped. Thus, even if hardware decoding blocks are required for the video standard associated with video stream 302, further power savings are achieved by stopping all hardware decoding blocks in the pipeline stage. The

[050]一実施形態において、ビデオストリーム302は、そのビデオストリーム302が完全に復号化されるまでメモリ330を出入りしない。メモリ330は、外部メモリユニット(例えば、図1の揮発性メモリ102若しくは不揮発性メモリ103)、又はデコーダ装置150の内蔵メモリユニットであってよいことを理解されたい。ビデオストリーム302を完全に復号化するまでメモリ330にアクセスしないことによって、デコーダ装置150はより少ない電力しか使用しない。   [050] In one embodiment, the video stream 302 does not enter or leave the memory 330 until the video stream 302 is fully decoded. It should be understood that the memory 330 may be an external memory unit (eg, the volatile memory 102 or the non-volatile memory 103 of FIG. 1) or a built-in memory unit of the decoder device 150. By not accessing the memory 330 until the video stream 302 is fully decoded, the decoder device 150 uses less power.

[051]一実施形態において、デコーダ装置150は、復号化されたビデオストリームに対して後処理動作を実行するためのハードウェア後処理ブロック320をさらに含む。一実施形態において、ハードウェア後処理ブロック320はデブロッキングフィルタを含む。デブロッキングフィルタは、ループ内デブロッキングフィルタ、又はループ外デブロッキング及び/若しくはデリンギングフィルタであってよいことを理解されたい。ループ内デブロッキングフィルタは、メモリ330にアクセスする前にデブロッキング動作を実行する。ループ外デブロッキング及びデリンギングフィルタは、メモリ330からアクセスされるデータに対するデブロッキング及びデリンギング動作を実行する。しかし、ハードウェア後処理ブロック320は任意の種類の後処理動作を実行することができることを理解されたい。さらに、複数の後処理動作を実行するために任意の数のハードウェア後処理ブロック320が存在することができる。   [051] In one embodiment, the decoder device 150 further includes a hardware post-processing block 320 for performing post-processing operations 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. The in-loop deblocking filter performs a deblocking operation before accessing the memory 330. The out-of-loop deblocking and deringing filter performs deblocking and deringing operations on data accessed from the memory 330. However, it should be understood that the hardware post-processing block 320 can perform any type of post-processing operation. In addition, there can be any number of hardware post-processing blocks 320 to perform multiple post-processing operations.

[052]一実施形態において、命令パーサ305は、ハードウェア後処理ブロック320が復号化されたビデオストリームに対して後処理動作を実行するように、ビデオストリーム302が復号化されたビデオストリームである場合に全てのハードウェア復号化ブロックを停止するように動作可能である。換言すれば、デコーダ装置150は、ハードウェア後処理装置としてのみ使用されることもできる。復号化されたビデオストリームがデコーダ装置150で受信される場合、全てのハードウェア復号化ブロックが停止され、復号化されたビデオストリームに対する後処理動作。   [052] In one embodiment, the instruction parser 305 is a video stream from which the video stream 302 has been decoded such that the hardware post-processing block 320 performs post-processing operations on the decoded video stream. In some cases, it is operable to stop all hardware decoding blocks. In other words, the decoder device 150 can 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 stopped and post-processing operations on the decoded video stream.

[053]図4は、本発明の一実施形態による、デコーダ装置400とも呼ばれる例示的なハードウェア多標準対応ビデオデコーダ装置400の内部コンポーネントを示す構成図を示す。デコーダ装置400は、JPEG、MPEG−4、H.263、H.263+、H.264、又はWMV9/VC−1デコーダのうちのいずれか1つとして動作するように構成される。したがって、デコーダ装置400は、JPEG、MPEG−4、H.263、H.263+、H.264、又はWMV9/VC−1標準のうちのいずれか1つを使用して符号化されたビデオストリームを復号化するために必要な全ての復号化動作を実行するためのハードウェア復号化ブロックを含む。しかし、本発明はその他のビデオ標準を柔軟にサポートすること、及び本発明は図4に示された実施形態に限定されるように意図されていないことを理解されたい。   [053] FIG. 4 shows a block diagram illustrating the internal components of an exemplary hardware multi-standard video decoder device 400, also referred to as decoder device 400, according to one embodiment of the invention. The decoder device 400 is JPEG, MPEG-4, H.264, or the like. 263, H.M. 263+, H.H. It is configured to operate as any one of H.264 or WMV9 / VC-1 decoders. Therefore, the decoder device 400 is compatible with JPEG, MPEG-4, H.264. 263, H.M. 263+, H.H. H.264, or a hardware decoding block for performing all decoding operations necessary to decode a video stream encoded using any one of the WMV9 / VC-1 standards Including. However, it should be understood that the present invention flexibly supports other video standards, and that the present invention is not intended to be limited to the embodiment shown in FIG.

[054]図4に示されるように、デコーダ装置400は、命令パーサ402、複数のハードウェア復号化ブロック、複数のハードウェア後処理ブロック、及びメモリ460を含む。命令パーサ402は、ビデオストリーム401(例えば、ビットストリーム)にアクセスするためのものである。ビデオストリーム401は、(例えば、JPEGで符号化された)デジタル静止画像データ、又は(例えば、MPEG−4)デジタルムービーデータを含む可能性があることを理解されたい。一実施形態において、ビデオストリーム401は、マイクロコードエンジン(例えば、図2Bのマイクロコードエンジン260)から受信される。ビデオストリーム401は、複数のビデオ符号化標準のうちの1つに従って符号化された圧縮ビデオストリームである。命令パーサ402は、ビデオストリーム401を符号化するために使用されたビデオ符号化標準を特定する。一実施形態において、ビットストリームのパース及び可変長復号化(VLD)が、命令パーサ402がビデオストリーム401にアクセスする前に実行される。ビットストリームのパース及びVLDは、ホストCPU(例えば、図1の処理装置101)又はマイクロコードエンジンによって実行されることができる。ビデオストリーム401がデコーダ装置400が復号化するように構成されるビデオ標準とは異なるビデオ標準を使用して符号化される場合、復号化動作は実行されないことに留意されたい。一実施形態において、命令パーサ402は、復号化が、サポートされていない標準を使用して符号化されたビデオストリームに対して実行されることができないことを示す指示をコンピュータシステムに送信する。   [054] As shown in FIG. 4, the decoder device 400 includes an instruction parser 402, a plurality of hardware decoding blocks, a plurality of hardware post-processing blocks, and a memory 460. The instruction parser 402 is for accessing a video stream 401 (for example, a bit stream). It should be understood that the video stream 401 may include digital still image data (eg, encoded with JPEG) 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 that is encoded according to one of a plurality of video encoding standards. The instruction parser 402 identifies the video encoding standard that was used to encode the video stream 401. In one embodiment, parsing and variable length decoding (VLD) of the bitstream is performed before the instruction parser 402 accesses the video stream 401. Bitstream parsing and VLD can be performed by a host CPU (eg, processing unit 101 of FIG. 1) or a microcode engine. It should be noted that if the video stream 401 is encoded using a video standard that is different from the video standard that the decoder device 400 is configured to decode, the decoding operation is not performed. In one embodiment, the instruction parser 402 sends an indication to the computer system indicating that decoding cannot be performed on a video stream encoded using an unsupported standard.

[055]ビデオストリーム401を符号化するために使用されたビデオ標準を特定すると、命令パーサ402は、ビデオストリーム401のマクロブロックを特定されたビデオ標準に対して適切なハードウェア復号化ブロックに導く。一実施形態において、命令パーサは、特定されたビデオ標準に必要とされないハードウェア復号化ブロックが停止されるように、特定されたビデオ標準に対して適切なハードウェア復号化ブロックを作動する。また、命令パーサ402は、クロックサイクルを制御することによってデコーダ装置400を通じたデータの移動を制御する。一実施形態において、命令パーサ402は、デコーダ装置400の唯一つのアクティブなコンポーネントである。ハードウェア復号化ブロックは、特定されたビデオ標準及びデータフローに従って必要に応じて作動される。   [055] Once the video standard used to encode the video stream 401 is identified, the instruction parser 402 directs the macroblocks of the video stream 401 to the appropriate hardware decoding block for the identified video standard. . In one embodiment, the instruction parser operates the appropriate hardware decoding block for the identified video standard such that hardware decoding blocks that are not required for the identified video standard are stopped. The instruction parser 402 also controls the movement of data through the decoder device 400 by controlling the clock cycle. In one embodiment, instruction parser 402 is the only active component of decoder device 400. The hardware decoding block is activated as needed according to the specified video standard and data flow.

[056]デコーダ装置400のハードウェア復号化ブロックは、イントラ予測モードエンジン404、動きベクトル(MV)予測エンジン406、係数(例えば、ランレングス(RD)又は逆量子化)エンジン408、AC/DC(例えば、AC/DC予測又は逆量子化)予測エンジン410、イントラ予測エンジン414、回転エンジン415、動き補償エンジン416、4×4逆変換エンジン418、8×8逆離散コサイン変換(IDCT)エンジン420、IDCT形式コンバータエンジン422、イントラ予測バッファ432、予測サンプル434、及び残差ブロック436を含む。デコーダ装置400は、多重化装置405、409、417、419、439、及び加算器435をさらに含む。デコーダ装置400は、ハードウェア後処理ブロック、すなわち、ループ内デブロッキングフィルタ440、ループ外フィルタ442、及び回転エンジン450も任意的に含む。   [056] The hardware decoding block of the decoder device 400 includes an intra prediction mode engine 404, a motion vector (MV) prediction engine 406, a coefficient (eg, run length (RD) or inverse quantization) engine 408, AC / DC ( For example, AC / DC prediction or inverse quantization) prediction engine 410, intra prediction engine 414, rotation engine 415, motion compensation engine 416, 4 × 4 inverse transform engine 418, 8 × 8 inverse discrete cosine transform (IDCT) engine 420, An IDCT format converter engine 422, an intra prediction buffer 432, a prediction sample 434, and a residual block 436 are included. The decoder device 400 further includes multiplexing devices 405, 409, 417, 419, 439 and an adder 435. The decoder device 400 also optionally includes hardware post-processing blocks, ie, an in-loop deblocking filter 440, an out-of-loop filter 442, and a rotation engine 450.

[057]デコーダ装置400は、残差経路及び予測経路を有する3段階マクロブロックレベルパイプライン内に実装される。一実施形態において、2つ以上のマクロブロックがパイプラインの段階1に存在する可能性がある一方、パイプラインの段階2及び3は1つのマクロブロックしか存在しないように制限される。残差経路は、係数エンジン408、AC/DC予測エンジン410、4×4逆変換エンジン418、8×8IDCTエンジン420、IDCT形式コンバータエンジン422、及び残差ブロック436を含む。予測経路は、イントラ予測モードエンジン404、MV予測エンジン406、イントラ予測エンジン414、回転エンジン415、動き補償エンジン416、イントラ予測バッファ432、及び予測サンプル434を含む。   [057] The decoder device 400 is implemented in a three-stage macroblock level pipeline having a residual path and a prediction path. In one embodiment, more than one macroblock may exist 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 4 × 4 inverse transform engine 418, an 8 × 8 IDCT engine 420, an IDCT format converter engine 422, and a residual block 436. The prediction path includes an intra prediction mode engine 404, an MV prediction engine 406, an intra prediction engine 414, a rotation engine 415, a motion compensation engine 416, an intra prediction buffer 432, and a prediction sample 434.

[058]上述のように、デコーダ装置400は、JPEG、MPEG−4、H.263、H.263+、H.264、又はWMV9/VC−1標準のうちのいずれかによるビデオストリームを復号化するように動作可能である。上述のハードウェア復号化ブロックは、サポートされる標準によって必要とされる全ての復号化動作を実行する。ハードウェア復号化ブロックの具体的動作は標準のそれぞれに記載されているので、それらの動作は当業者によく知られ、理解されている。したがって、ハードウェア復号化ブロックの具体的動作は、本明細書において詳細に説明されない。   [058] As described above, the decoder device 400 is compatible with JPEG, MPEG-4, H.264. 263, H.M. 263+, H.H. H.264, or WMV9 / VC-1 standard, is operable to decode a video stream. The hardware decoding block described above performs all the decoding operations required by the supported standards. Since the specific operation of the hardware decoding block is described in each of the standards, their operation is well known and understood by those skilled in the art. Accordingly, the specific operation of the hardware decoding block will not be described in detail herein.

[059]一実施形態において、MVパラメータ及びイントラ予測パラメータが、予測経路においてMV予測エンジン406及びイントラ予測モードエンジン404にそれぞれ渡される。これらのエンジンは、プログラムされたビデオ標準に基づいて実際の動きベクトル又はイントラ予測モードを計算し、それらを動き補償エンジン416又はイントラ予測エンジン414にそれぞれ渡す。動き補償エンジン416又はイントラ予測エンジン414は、予測データを計算する。一実施形態において、動き補償エンジン416は回転エンジン415を含む。回転エンジン415は、受信ビデオフレームと位置が合うように参照フレームを回転するためのものである。回転エンジン415は、動き補償エンジンがビデオストリームの復号化に使用される度に作動される。一方、エラーデータは、係数エンジン408、AC/DC予測エンジン410、4×4逆変換エンジン418、8×8IDCTエンジン420、及びIDCT形式コンバータエンジン422の必要なサブセットで処理される。   [059] In one embodiment, MV parameters and intra prediction parameters are passed to the MV prediction engine 406 and intra prediction mode engine 404, respectively, in the prediction path. These engines calculate actual motion vectors or intra prediction modes based on programmed video standards and pass them to motion compensation engine 416 or intra prediction engine 414, respectively. The motion compensation engine 416 or the 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 so that the position matches the received video frame. The rotation engine 415 is activated each time the motion compensation engine is used to decode the video stream. On the other hand, the error data 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.

[060]回復されたエラーデータが予測データに加算され、それから、パイプラインの段階3にさらに渡される。結果として得られたデータは必要に応じてさらに処理され、表示されるためにメモリ460に書き込まれる。ループ内デブロッキングフィルタが、H264及びWMV9/VC−1モードで使用される。WMV9/VC−1モードにおいて、ループ内デブロッキングフィルタ440は、重なり平滑化フィルタを実装するために使用される。ループ外フィルタ442が、復号画像の品質を向上するために任意のビデオストリームに対して使用されることができる。一実施形態において、ループ外フィルタ442は、デコーダ装置400の残りの部分と同時に実行される。ループ外フィルタ442は、フレームがメモリ460に復号化された後で作動されるべきである。復号画像は、パイプラインの段階3においてメモリ460に書き込む前に回転エンジン450で回転されることもできる。   [060] The recovered error data is added to the prediction data and then passed further to stage 3 of the pipeline. The resulting data is further processed as needed and written to memory 460 for display. In-loop deblocking filter is used in H264 and WMV9 / VC-1 modes. In WMV9 / VC-1 mode, the in-loop deblocking filter 440 is used to implement an overlap smoothing filter. An out-of-loop filter 442 can be used for any video stream to improve the quality of the decoded image. In one embodiment, the out-of-loop filter 442 is performed concurrently with the rest of the decoder device 400. Out-of-loop filter 442 should be activated after the frame is decoded into memory 460. The decoded image can also be rotated by rotation engine 450 before writing to memory 460 at stage 3 of the pipeline.

サポートされるビデオ標準に対するハードウェア多標準対応ビデオデコーダ装置の例示的な動作
[061]以下の実施形態は、サポートされるビデオ標準のそれぞれに対するデコーダ装置400の動作を説明する。
Exemplary operation of a hardware multi-standard video decoder device for supported video standards
[061] The following embodiments describe the operation of the decoder device 400 for each of the supported video standards.

[062]JPEG:JPEGビデオストリームはデジタル静止画像を再現するためのものであるので、JPEG復号化は予測経路のハードウェア復号化ブロックを必要としない。したがって、イントラ予測モードエンジン404、MV予測エンジン406、イントラ予測エンジン414、回転エンジン415、動き補償エンジン416、イントラ予測バッファ432、及び予測サンプル434は、JPEGの復号化に関して全て停止される。また、JPEG復号化は4×4逆変換エンジン418を必要とせず、したがって、4×4逆変換エンジン418は停止される。命令パーサ402は、係数エンジン408、AC/DC予測エンジン410、8×8IDCTエンジン420、デシメーションIDCTエンジン438、IDCT形式コンバータエンジン422、及び残差ブロック436を作動する。命令パーサ402は、JPEGで符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム401からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はJPEG標準によって規定されることを理解されたい。   [062] JPEG: Since the JPEG video stream is for reproducing a digital still image, JPEG decoding does not require a hardware decoding block in the prediction path. Accordingly, the intra prediction mode engine 404, the MV prediction engine 406, the intra prediction engine 414, the rotation engine 415, the motion compensation engine 416, the intra prediction buffer 432, and the prediction sample 434 are all stopped for JPEG decoding. Also, JPEG decoding does not require the 4x4 inverse transform engine 418, and therefore the 4x4 inverse transform engine 418 is stopped. The instruction parser 402 operates a coefficient engine 408, an AC / DC prediction engine 410, an 8 × 8 IDCT engine 420, a decimation IDCT engine 438, an IDCT format converter engine 422, and a residual block 436. The instruction parser 402 routes data from the video stream 401 through an active hardware decoding block for decoding a JPEG encoded video stream. It should be understood that the operations performed by the hardware decoding block and the order of operations are defined by the JPEG standard.

[063]JPEG復号化は、8×8IDCTエンジン420及びデシメーションIDCTエンジン438のうちの一方を使用することだけを要求する。一実施形態において、命令パーサ402は、8×8IDCTエンジン420及びデシメーションIDCTエンジン438のうちのいずれがビデオストリームのために作動されるかを特定するように動作可能である。8×8IDCTエンジン420はビデオストリームを完全に復号化するために作動される一方、デシメーションIDCTエンジン438は、ビデオストリームがデシメーションを指示する場合に作動される。IDCT形式コンバータエンジン422は、形式変換を実行するように動作可能である。例えば、IDCT形式コンバータエンジン422は、以下のフォーマット、すなわち、YUV4:4:4、YUV4:2:2、YUV4:2:2R、及びYUV4:2:0のうちの任意のものの間の形式変換を実行することができる。その他の形式変換が実行されることもできること、及びIDCT形式コンバータエンジン422は列挙された形式に限定されないことを理解されたい。   [063] JPEG decoding only requires the use of one of the 8x8 IDCT engine 420 and the decimation IDCT engine 438. In one embodiment, the instruction parser 402 is operable to identify which of the 8 × 8 IDCT engine 420 and the decimation IDCT engine 438 is activated for the video stream. The 8x8 IDCT engine 420 is activated to fully decode the video stream, while the decimation IDCT engine 438 is activated when the video stream indicates decimation. The IDCT format converter engine 422 is operable to perform format conversion. For example, the IDCT format converter engine 422 performs format conversion between any of the following formats: YUV4: 4: 4, YUV4: 2: 2, YUV4: 2: 2R, and YUV4: 2: 0. Can be executed. It should be understood that other format conversions can be performed and that the IDCT format converter engine 422 is not limited to the listed formats.

[064]復号化されたJPEGビデオストリームはパイプラインの段階2を出る。一実施形態において、復号化されたJPEGビデオストリームはメモリ330に記憶される。別の実施形態において、メモリ330に記憶する前に、復号化されたJPEGビデオストリームに対して後処理動作が実行される。   [064] The decoded JPEG video stream exits stage 2 of the pipeline. 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 stream before storing it in memory 330.

[065]MPEG−4/H.263:MPEG−4及びH.263の復号化は、デコーダ装置400の目的上、互いによく似ている。具体的には、MPEG−4標準は、MPEG−4デコーダが、H.263で符号化されたビデオストリームを復号化するように動作可能であることを要求する。MPEG−4及びH.263の復号化は、イントラ予測モードエンジン404、イントラ予測エンジン414、IDCT形式コンバータエンジン422、及び4×4逆変換エンジン418を必要とせず、それらは停止される。さらに、ループ内デブロッキングフィルタ440は、後処理動作のためにやはり停止される。したがって、命令パーサは、MV予測エンジン406、係数エンジン408、AC/DC予測エンジン410、回転エンジン415、動き補償エンジン416、8×8IDCTエンジン420、イントラ予測バッファ432、予測サンプル434、及び残差ブロック436を作動する。命令パーサ402は、MPEG−4又はH.263で符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム401からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はMPEG−4及びH.263標準によって規定されることを理解されたい。   [065] MPEG-4 / H. 263: MPEG-4 and H.264. The decoding of H.263 is very similar to each other for the purpose of the decoder device 400. Specifically, the MPEG-4 standard is based on the MPEG-4 decoder. It is required to be operable to decode a video stream encoded at H.263. MPEG-4 and H.264. The H.263 decoding does not require the intra prediction mode engine 404, the intra prediction engine 414, the IDCT format converter engine 422, and the 4 × 4 inverse transform engine 418, which are stopped. Furthermore, the in-loop deblocking filter 440 is also stopped for post-processing operations. Thus, the instruction parser includes 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 8 × 8 IDCT engine 420, an intra prediction buffer 432, a prediction sample 434, and a residual block. 436 is activated. The instruction parser 402 is MPEG-4 or H.264. Data from the video stream 401 is routed through an active hardware decoding block for decoding the H.263 encoded video stream. The operations performed by the hardware decoding block and the order of the operations are MPEG-4 and H.264. It should be understood that it is defined by the H.263 standard.

[066]命令パーサ402は、マクロブロックを、適切な残差経路又は予測経路のハードウェア復号化ブロックに導くように動作可能である。一実施形態において、イントラフレーム(I−フレーム)は、予測フレーム(P−フレーム)がパイプラインの段階1内のMV予測エンジン406において処理されるのと同時に残差経路の係数エンジン408及びAC/DC予測エンジン410において処理されることができる。I−フレーム及びP−フレームは、パイプラインの段階2において同期される。命令パーサ402は、8×8IDCTエンジン420の適切なハードウェア復号化ブロックを作動するようにやはり動作可能である。   [066] The instruction parser 402 is operable to direct the macroblock to the hardware decoding block of the appropriate residual path or prediction path. In one embodiment, an intra frame (I-frame) is a residual path coefficient engine 408 and AC / AC at the same time that a predicted frame (P-frame) is processed in the MV prediction engine 406 in stage 1 of the pipeline. It can be processed in the DC prediction engine 410. I-frames and P-frames are synchronized in stage 2 of the pipeline. The instruction parser 402 is also operable to operate the appropriate hardware decoding block of the 8 × 8 IDCT engine 420.

[067]復号化されたMPEG−4/H.263ビデオストリームはパイプラインの段階2を出る。一実施形態において、復号化されたMPEG−4/H.263ビデオストリームはメモリ330に記憶される。別の実施形態において、メモリ330に記憶する前に、復号化されたMPEG−4/H.263ビデオストリームに対して後処理動作が実行される。別の実施形態において、復号化されたMPEG−4/H.263ビデオストリームに対してループ外フィルタ442で後処理動作が実行される。一実施形態において、ループ外フィルタ442はデブロッキングフィルタである。別の実施形態において、ループ外フィルタ442はデリンギングフィルタである。別の実施形態において、ループ外フィルタ442は、デブロッキングフィルタ及びデリンギングフィルタの両方である。ループ外フィルタ442は、任意のデブロッキング及び/又はデリンギングフィルタとして実装されることができることを理解されたい。   [067] The decoded MPEG-4 / H. The H.263 video stream exits stage 2 of the pipeline. In one embodiment, the decoded MPEG-4 / H. The H.263 video stream is stored in the memory 330. In another embodiment, prior to storing in memory 330, the decoded MPEG-4 / H. A post-processing operation is performed on the H.263 video stream. In another embodiment, the decoded MPEG-4 / H. A post-processing operation is performed on the out-of-loop filter 442 on the H.263 video stream. In one embodiment, the out-of-loop filter 442 is a deblocking filter. In another embodiment, the out-of-loop filter 442 is a deringing filter. In another embodiment, the 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.

[068]H.263+:H.263+の復号化は、上述のようなMPEG−4/H.263の復号化に似ている。H.263+は、復号化動作の一部を、命令パーサ402がビデオストリーム401にアクセスする前に実行されるVLDに移管する。イントラ予測モードエンジン404、イントラ予測エンジン414、4×4逆変換エンジン418、及びループ外フィルタ442を必要とせず、したがってイントラ予測モードエンジン404、イントラ予測エンジン414、4×4逆変換エンジン418、及びループ外フィルタ442を停止することに加えて、命令パーサ402は、係数エンジン408及びAC/DC予測エンジン410も停止する。その他の点では、H.263+の復号化は、上述のようなMPEG−4/H.263の復号化に似ている。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はH.263+標準によって規定されることを理解されたい。   [068] H.C. 263+: H. The H.263 + decoding is based on MPEG-4 / H. Similar to H.263 decoding. H. H.263 + transfers part of the decoding operation to a VLD that is executed before the instruction parser 402 accesses the video stream 401. Does not require intra prediction mode engine 404, intra prediction engine 414, 4x4 inverse transform engine 418, and out-of-loop filter 442, thus intra prediction mode engine 404, intra prediction engine 414, 4x4 inverse transform engine 418, and In addition to stopping the out-of-loop filter 442, the instruction parser 402 also stops the coefficient engine 408 and the AC / DC prediction engine 410. In other respects, H.C. The H.263 + decoding is based on MPEG-4 / H. Similar to H.263 decoding. The operations performed by the hardware decoding block and the order of the operations are H.264. It should be understood that it is defined by the H.263 + standard.

[069]H.264:H.264復号化は、AC/DC予測エンジン410、8×8IDCTエンジン420、及びIDCT形式コンバータエンジン422を必要とせず、それらは停止される。したがって、命令パーサ402は、イントラ予測モードエンジン404、MV予測エンジン406、係数エンジン408、イントラ予測エンジン414、回転エンジン415、動き補償エンジン416、4×4逆変換エンジン418、イントラ予測バッファ432、予測サンプル434、及び残差ブロック436を作動する。イントラ予測バッファ432は、マクロブロックの次の行を処理するときにイントラ予測エンジン414が前の「平準化」画素にアクセスすることができるように、前のマクロブロックからの画素の先頭行を記憶するように動作可能である。命令パーサ402は、H.264で符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム401からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はH.264標準によって規定されることを理解されたい。   [069] H. 264: H. H.264 decoding does not require the AC / DC prediction engine 410, the 8x8 IDCT engine 420, and the IDCT format converter engine 422, which are stopped. Therefore, the instruction parser 402 includes an intra prediction mode engine 404, an MV prediction engine 406, a coefficient engine 408, an intra prediction engine 414, a rotation engine 415, a motion compensation engine 416, a 4 × 4 inverse transform engine 418, an intra prediction buffer 432, a prediction The sample 434 and the residual block 436 are activated. The intra prediction buffer 432 stores the first row of pixels from the previous macroblock so that the intra prediction engine 414 can access the previous “leveled” pixels when processing the next row of the macroblock. It is possible to operate. The instruction parser 402 The data from the video stream 401 is routed through an active hardware decoding block for decoding the H.264 encoded video stream. The operations performed by the hardware decoding block and the order of the operations are H.264. It should be understood that it is defined by the H.264 standard.

[070]命令パーサ402は、マクロブロックを、適切な残差経路又は予測経路のハードウェア復号化ブロックに導くように動作可能である。一実施形態において、フレームは、パイプラインの段階1内で、残差経路及び予測経路で同時に処理されることができる。フレームは、パイプラインの段階2において同期される。   [070] The instruction parser 402 is operable to direct the macroblock to the hardware decoding block of the appropriate residual path or prediction path. In one embodiment, the frame can be processed simultaneously in the residual path and the prediction path within stage 1 of the pipeline. The frames are synchronized in stage 2 of the pipeline.

[071]復号化されたH.264ビデオストリームはパイプラインの段階2を出る。一実施形態において、メモリ330に記憶する前に、復号化されたH.264ビデオストリームに対してループ内後処理動作が実行される。別の実施形態において、復号化されたH.264ビデオストリームに対してループ外フィルタ442でループ外後処理動作が実行される。ループ外フィルタ442は、任意のデブロッキングフィルタ及び/又はデリンギングフィルタとして実装されることができることを理解されたい。   [071] Decrypted H.264. The H.264 video stream exits stage 2 of the pipeline. In one embodiment, the decrypted H.264 file is stored prior to storage in memory 330. An in-loop post-processing operation is performed on the H.264 video stream. In another embodiment, the decrypted H.264 An out-of-loop post-processing operation is performed on the H.264 video stream by the 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.

[072]WMV9/VC−1:WMV9/VC−1の復号化は、イントラ予測モードエンジン404及びイントラ予測エンジン414を必要とせず、それらは停止される。したがって、命令パーサ402は、MV予測エンジン406、係数エンジン408、AC/DC予測エンジン410、回転エンジン415、動き補償エンジン416、4×4逆変換エンジン418、8×8IDCTエンジン420、イントラ予測バッファ432、予測サンプル434、及び残差ブロック436を作動する。命令パーサ402は、WMV9/VC−1で符号化されたビデオストリームを復号化するためのアクティブなハードウェア復号化ブロックを通してビデオストリーム401からのデータをルーティングする。ハードウェア復号化ブロックによって実行される動作、及び動作の順番はWMV9/VC−1標準によって規定されることを理解されたい。   [072] WMV9 / VC-1: Decoding of WMV9 / VC-1 does not require the intra prediction mode engine 404 and the intra prediction engine 414, which are stopped. Therefore, the instruction parser 402 includes 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, the 8 × 8 IDCT engine 420, and the intra prediction buffer 432. , Activate the prediction sample 434 and the residual block 436. The instruction parser 402 routes data from the video stream 401 through an active hardware decoding block for decoding the WMV9 / VC-1 encoded video stream. It should be understood that the operations performed by the hardware decoding block and the order of operations are defined by the WMV9 / VC-1 standard.

[073]命令パーサ402は、マクロブロックを、適切な残差経路又は予測経路のハードウェア復号化ブロックに導くように動作可能である。一実施形態において、フレームは、パイプラインの段階1内で、残差経路及び予測経路で同時に処理されることができる。フレームは、パイプラインの段階2において同期される。   [073] The instruction parser 402 is operable to direct the macroblock to the hardware decoding block of the appropriate residual path or prediction path. In one embodiment, the frame can be processed simultaneously in the residual path and the prediction path within stage 1 of the pipeline. The frames are synchronized in stage 2 of the pipeline.

[074]復号化されたWMV9/VC−1ビデオストリームはパイプラインの段階2を出る。一実施形態において、メモリ330に記憶する前に、復号化されたWMV9/VC−1ビデオストリームに対してループ内後処理動作が実行される。一実施形態において、ループ内デブロッキングフィルタ440は、重なり平滑化フィルタを実装するために使用される。別の実施形態において、復号化されたWMV9/VC−1ビデオストリームに対してループ外フィルタ442で後処理動作が実行される。ループ外フィルタ442は、任意のデブロッキング及び/又はデリンギングフィルタとして実装されることができることを理解されたい。   [074] The decoded WMV9 / VC-1 video stream exits stage 2 of the pipeline. In one embodiment, in-loop post-processing operations are performed on the decoded WMV9 / VC-1 video stream before storing it in memory 330. In one embodiment, the in-loop deblocking filter 440 is used to implement an overlap smoothing filter. In another embodiment, a post-processing operation is performed on the decoded WMV9 / VC-1 video stream with an out-of-loop filter 442. It should be understood that the out-of-loop filter 442 can be implemented as any deblocking and / or deringing filter.

後処理動作
[075]デコーダ装置400のパイプラインの段階3は、3つのハードウェア後処理ブロック、すなわち、ループ内デブロッキングフィルタ440、ループ外フィルタ442、及び回転エンジン450を含む。ループ内デブロッキングフィルタ440は、H.264及びWMV9/VC−1モードで使用される。一実施形態において、WMV9/VC−1モードで、ループ内デブロッキングフィルタ440は、重なり平滑化フィルタを実装するために使用される。
Post-processing operation
[075] Stage 3 of the pipeline of the 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. The in-loop deblocking filter 440 is an H.264 filter. Used in H.264 and WMV9 / VC-1 modes. In one embodiment, in WMV9 / VC-1 mode, the in-loop deblocking filter 440 is used to implement an overlap smoothing filter.

[076]ループ外フィルタ442は、復号画像の品質を向上するために任意のビデオストリームに対して使用されることができる。一実施形態において、ループ外フィルタ442は、デコーダ装置400の残りの部分と同時に実行される。ループ外フィルタ442は、フレームがメモリ460に復号化された後で作動されるべきである。   [076] Out-loop filter 442 can be used for any video stream to improve the quality of the decoded image. In one embodiment, the out-of-loop filter 442 is performed concurrently with the rest of the decoder device 400. Out-of-loop filter 442 should be activated after the frame is decoded into memory 460.

[077]任意のデブロッキング及び/又はデリンギングフィルタがループ外フィルタ442のために使用されることができることを理解されたい。例えば、装置150で実装されることができるビデオ標準の多くを管理する組織である国際標準化機構(ISO)は、標準化の刊行物にデブロッキングフィルタの提案を含むことが多い。例えば、ループ外フィルタ442は、ISOの刊行物ISO/IEC14496−2:2001、セクションF.3.1に記載のデブロッキングフィルタを含むことができる。   [077] It should be understood that any deblocking and / or deringing filter may be used for the out-of-loop filter 442. For example, the International Organization for Standardization (ISO), an organization that manages many of the video standards that can be implemented on the device 150, often includes proposals for deblocking filters in standardization publications. For example, the out-of-loop filter 442 can be found in ISO publication ISO / IEC 14496-2: 2001, section F.1. The deblocking filter described in 3.1 can be included.

[078]復号画像は、パイプラインの段階3においてメモリ460に書き込む前に回転エンジン450で回転されることもできる。回転エンジン450は、オンザフライのマクロブロックの回転を提供するように構成され、個々のマクロブロックは、指示された回転の度合いに基づいて回転され、フレームの新しい位置に置かれる。回転エンジン450の動作の詳細な検討に関しては、以下の図10A、10B、及び11の検討を参照されたい。   [078] The decoded image may also be rotated by rotation engine 450 before writing to memory 460 at stage 3 of the pipeline. The rotation engine 450 is configured to provide rotation of on-the-fly macroblocks, and each macroblock is rotated based on the indicated degree of rotation and placed at a new position in the frame. For a detailed discussion of the operation of the rotation engine 450, see the discussion of FIGS. 10A, 10B, and 11 below.

ハードウェア多標準対応ビデオデコーダ装置を使用してビデオストリームを復号化するための方法
[079]図5は、ビデオストリームを復号化するための方法500のフローチャートを示し、方法は、本発明の実施形態によるハードウェア多標準対応ビデオデコーダ装置を使用して実行される。具体的なステップが方法500において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図5に記載のステップの変更形態を実行することによく適する。一実施形態において、方法500は、図3のデコーダ装置150によって実行される。
Method for decoding a video stream using a hardware multi-standard video decoder device
[079] FIG. 5 shows a flowchart of a method 500 for decoding a video stream, which is performed using a hardware multi-standard video decoder device according to an embodiment of the present invention. Although specific steps are disclosed in method 500, such steps are exemplary. That is, embodiments of the present invention are well suited to performing 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.

[080]プロセス500のステップ510において、ビデオストリームがアクセスされる。ステップ520において、ビデオストリームを符号化するために使用されたビデオ標準が特定される。ハードウェア多標準対応ビデオデコーダ装置は、複数のビデオ標準によるビデオストリームを復号化するように構成される。   [080] In step 510 of process 500, a 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 according to a plurality of video standards.

[081]ステップ530において、ビデオストリームを復号化するために使用されるハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定される。複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。一実施形態において、ステップ540に示されるように、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックのサブセットが作動される。   [081] At 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 are operable to decode video streams encoded using different video encoding standards. In one embodiment, as shown in step 540, a subset of hardware decoding blocks are activated so that hardware decoding blocks not involved in decoding the video stream are not activated.

[082]ステップ550において、ビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。一実施形態において、ステップ560に示されるように、多段階マクロブロックレベルパイプラインの1つの段階でビデオストリームのデータが受信されない場合、その段階の中のハードウェア復号化ブロックが停止される。ステップ540及び560はさらなる省電力を提供し、任意的であることを理解されたい。   [082] At step 550, the video stream is decoded using a subset of the hardware decoding blocks. In one embodiment, as shown in step 560, if video stream data is not received in one stage of the multi-stage macroblock level pipeline, the hardware decoding blocks in that stage are stopped. It should be understood that steps 540 and 560 provide additional power savings and are optional.

[083]ステップ570において、メモリユニットは、ビデオストリームを復号化した後でアクセスされる。一実施形態において、復号化されたビデオストリームは、表示のためにメモリに記憶される。一実施形態において、ステップ580に示されるように、復号化されたビデオストリームに対する後処理動作。後処理動作は、ステップ570が実行される前、又はステップ570が実行された後に実行されることができることを理解されたい。一実施形態において、復号化されたビデオストリームは回転される。別の実施形態において、ループ内デブロッキングフィルタが、復号化されたビデオストリームに適用される。回転及びループ内デブロッキングは、メモリユニットがアクセスされる前に実行される。一実施形態において、ループ外デブロッキング及びデリンギングフィルタが、メモリユニットがアクセスされた後に、復号化されたビデオストリームに適用される。   [083] In step 570, the memory unit is accessed after decoding the video stream. In one embodiment, the decoded video stream is stored in memory for display. In one embodiment, a post-processing operation on the decoded video stream, as shown in step 580. It should be understood that post-processing operations can be performed before step 570 is performed 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.

ハードウェア多標準対応ビデオデコーダ装置を使用した、異なるビデオ標準を使用して符号化された複数のストリームの復号化
[084]本発明のハードウェア多標準対応ビデオデコーダ装置の実施形態は、複数のビデオストリームを同時に復号化するようにも動作可能である。マクロブロック又はフレームなどのビデオストリームの一部はインターリーブされる。デコーダ装置は、インターリーブされた部分に順次アクセスする。したがって、デコーダ装置は、インターリーブされた部分に対して復号化動作を実行する。例えば、復号化動作は、2つのビデオストリームのマクロブロックに対して実行されることができる。ビデオストリームは、ビデオストリームのマクロブロックが交互に現れるようにインターリーブされる。各クロックサイクルで、復号化動作が、交互に現れるビデオストリームに対して実行されることができる。
Decode multiple streams encoded using different video standards using a hardware multi-standard video decoder device
[084] Embodiments of the hardware multi-standard video decoder device of the present invention are also operable to decode multiple video streams simultaneously. Some video streams, such as macroblocks or frames, are interleaved. The decoder device sequentially accesses the interleaved parts. Therefore, the decoder device performs a decoding operation on the interleaved part. For example, a decoding operation can be performed on macroblocks of two video streams. The video stream is interleaved so that macroblocks of the video stream appear alternately. At each clock cycle, a decoding operation can be performed on the alternating video stream.

[085]図6は、本発明の一実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置600の内部コンポーネントを示す図を示す。図6に示されるように、デコーダ装置600は、ビデオストリームインターリーバ605、命令パーサ305、複数のハードウェア復号化ブロック310から318、ハードウェア後処理ブロック320、メモリ330、レジスタセット610、及びレジスタセット620を含む。デコーダ装置600は、複数のビデオ符号化標準を復号化するように動作可能であり、図3のデコーダ装置150と多くの点で同様に動作する。デコーダ装置600は、レジスタセット610及び620がデコーダ装置600が複数のビデオストリームを同時に復号化することを可能にするという点でデコーダ装置150と異なる。   [085] FIG. 6 shows a diagram illustrating the internal components of a hardware multi-stream multi-standard video decoder device 600 according to one embodiment of the invention. As shown in FIG. 6, the decoder apparatus 600 includes a video stream interleaver 605, an instruction parser 305, a plurality of hardware decoding blocks 310 to 318, a hardware post-processing block 320, a memory 330, a register set 610, and a register. Set 620 is included. Decoder device 600 is operable to decode a plurality of video coding standards and operates in many ways similar to decoder device 150 of FIG. Decoder device 600 differs from decoder device 150 in that register sets 610 and 620 enable decoder device 600 to decode multiple video streams simultaneously.

[086]ビデオストリームインターリーバ605は、複数のビデオストリームにアクセスするように、及びビデオストリームの一部をインターリーブするように動作可能である。示されるように、ビデオストリームインターリーバ605は、ビデオストリーム601及び602にアクセスする。しかし、ビデオストリームインターリーバ605は、任意の数のビデオストリームを受信するように動作可能であり、図6に示された実施形態に限定されないことを理解されたい。一実施形態において、ビデオストリーム601及び602は、マイクロコードエンジン(例えば、図2Bのマイクロコードエンジン260)から受信される。   [086] Video stream interleaver 605 is operable to access multiple video streams and to interleave portions of the video streams. As shown, video stream interleaver 605 accesses video streams 601 and 602. However, it should be understood that the video stream interleaver 605 is operable to receive any number of video streams and is not limited to the embodiment shown in FIG. In one embodiment, video streams 601 and 602 are received from a microcode engine (eg, microcode engine 260 of FIG. 2B).

[087]図7A及び7Bは、本発明の実施形態による、複数のビデオストリームの例示的なインターリーブされた部分を示す図を示す。図7Aを参照すると、2つのインターリーブされたビデオストリームが示され、1つのストリームは静止画像ビデオストリーム(例えば、JPEG)であり、もう一方のストリームはデジタルムービーストリーム(例えば、MPEG−4)である。示されるように、ビデオストリームが1つのデジタルムービーストリームしか含まない場合、ビデオストリームはマクロブロックレベルでインターリーブされることができる。具体的には、静止画像マクロブロック704及び708は、各ビデオストリームからのマクロブロックがインターリーブされたストリーム700内に交互に現れるようにデジタルムービーのマクロブロック702及び706とインターリーブされる。ビデオストリームがマクロブロックレベルでインターリーブされる場合、デコーダ装置600のソフトウェアドライバは、インターリーブされたビデオストリームの復号化を管理するためにマクロブロックデータをシステムメモリ内にバッファリングする。   [087] FIGS. 7A and 7B show diagrams illustrating exemplary interleaved portions of multiple video streams, in accordance with an embodiment of the present invention. Referring to FIG. 7A, two interleaved video streams are shown, one stream is a still image video stream (eg, JPEG) and the other stream is a digital movie stream (eg, MPEG-4). . As shown, if the video stream contains only one digital movie stream, the video stream can be interleaved at the macroblock level. Specifically, still image macroblocks 704 and 708 are interleaved with digital movie macroblocks 702 and 706 so that macroblocks from each video stream appear alternately in interleaved stream 700. If the video stream is 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 stream.

[088]図7Bを参照すると、2つのインターリーブされたビデオストリームが示され、両方のストリームともデジタルムービーストリームである。示されるように、ビデオストリームが複数のデジタルムービーストリームを含む場合、ビデオストリームはフレームレベルでインターリーブされる。具体的には、第1のデジタルムービーのフレーム752及び756は、各ビデオストリームからのフレームがインターリーブされたストリーム750内に交互に現れるように第2のデジタルムービーのフレーム754及び758とインターリーブされる。ビデオストリームがフレームレベルでインターリーブされる場合、デコーダ装置600のソフトウェアドライバは、インターリーブされたビデオストリームの復号化を管理するためにフレームデータをシステムメモリ内にバッファリングする。   [088] Referring to FIG. 7B, two interleaved video streams are shown, both streams being digital movie streams. As shown, if the video stream includes multiple digital movie streams, the video stream is 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 such that the frames from each video stream appear alternately in the interleaved stream 750. . When the video stream is interleaved at the frame level, the software driver of the decoder device 600 buffers the frame data in the system memory to manage the decoding of the interleaved video stream.

[089]図6を参照すると、命令パーサ305、ハードウェア復号化ブロック310から318、ハードウェア後処理ブロック320、及びメモリ330が、図3に示されるように動作する。残差データ及びその他のデコーダパラメータが、命令パーサ305を通じてデコーダ装置に渡される。命令パーサ305からのデータは、残差経路(ハードウェア復号化ブロック312、316、及び318)、又は予測経路(ハードウェア復号化ブロック310及び314)のいずれかにルーティングされる。残差経路は、エラー又は差分データを処理する一方、予測経路は、前のフレーム又は前のマクロブロックデータを準備/取得する。   [089] Referring to FIG. 6, the instruction parser 305, hardware decoding blocks 310-318, hardware post-processing block 320, and memory 330 operate as shown in FIG. Residual data and other decoder parameters are passed to the decoder device through the instruction parser 305. Data from the instruction parser 305 is routed to either the residual path (hardware decoding blocks 312, 316, and 318) or the prediction path (hardware decoding blocks 310 and 314). The residual path processes error or difference data, while the prediction path prepares / acquires previous frame or previous macroblock data.

[090]インターリーブされたビデオストリームの復号化を管理するために、2つのレジスタセット610及び620は、パイプラインの段階1において維持される。一実施形態において、レジスタセット610及び620は、メモリサーフェスポインタ612及び622をそれぞれ記憶し、フレームレベルパラメータ614及び624をそれぞれ記憶する。レジスタセットのそれぞれは、ビデオストリームのうちの1つに関連するパラメータを記憶するために使用される。例えば、レジスタセット610は、ビデオストリーム601に関連するパラメータを記憶するために使用され、レジスタセット620は、ビデオストリーム602に関連するパラメータを記憶するために使用される。パイプラインの段階1において1つのビデオストリームの一部のいずれかが処理されると、適切なパラメータが、残差又は予測データと共にダウンストリームパイプラインの段階2及び3にパケットの形態で渡される。復号化されたデータは、マクロブロックが静止画像の形式であるか、それともデジタルムービーの形式であるかに基づいてメモリ内の適切な領域にルーティングされる。デコーダ装置600は、復号化されるべき各ストリームが関連するレジスタセットを有するように適切な数のレジスタセットを追加することによって任意の数のビデオストリームを復号化するように構成されることができる。   [090] In order to manage the decoding of the interleaved video stream, two register sets 610 and 620 are maintained in stage 1 of the pipeline. In one embodiment, register sets 610 and 620 store memory surface pointers 612 and 622, respectively, and store 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. When any part of one video stream is processed in pipeline stage 1, the appropriate parameters are passed in the form of packets to downstream pipeline stages 2 and 3 along with residual or predicted data. The decoded data is routed to the appropriate area in memory based on whether the macroblock is in the form of a still image or a digital movie. The decoder device 600 can be configured to decode any number of video streams by adding an appropriate number of register sets such that each stream to be decoded has an associated register set. .

[091]図8は、複数のビデオストリームを復号化するための方法800のフローチャートを示し、方法は、本発明の実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置を使用して実行される。具体的なステップが方法800において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図8に記載のステップの変更形態を実行することによく適する。一実施形態において、方法800は、図6のデコーダ装置600によって実行される。   [091] FIG. 8 shows a flowchart of a method 800 for decoding a plurality of video streams, which is performed using a hardware multi-stream multi-standard video decoder device according to an embodiment of the present invention. . Although specific steps are disclosed in method 800, such steps are exemplary. That is, embodiments of the present invention are well suited to performing 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.

[092]プロセス800のステップ810において、複数のビデオストリームがアクセスされる。ステップ820において、ビデオストリームを符号化するために使用されたビデオ標準が特定される。ハードウェア多ストリーム多標準対応ビデオデコーダ装置は、複数のビデオ標準によるビデオストリームを復号化するように構成される。ステップ830において、ビデオストリームの一部がインターリーブされる。一実施形態において、ビデオストリームが1つのデジタルムービーストリームしか含まない場合、ビデオストリームのマクロブロックがインターリーブされる。別の実施形態において、ビデオストリームが複数のデジタルムービーストリームを含む場合、ビデオストリームのフレームがインターリーブされる。ステップ820及び830は任意の順番で実行されることができることを理解されたい。   [092] At step 810 of process 800, multiple video streams are accessed. In step 820, the video standard used to encode the video stream is 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, a portion of the video stream is interleaved. In one embodiment, if the video stream contains only one digital movie stream, the macroblocks of the video stream are interleaved. In another embodiment, if the video stream includes multiple digital movie streams, the frames of the video stream are interleaved. It should be understood that steps 820 and 830 can be performed in any order.

[093]ステップ840において、複数のビデオストリームを復号化するために使用されるハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックのサブセットが決定される。複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である。一実施形態において、ステップ850に示されるように、ビデオストリームの復号化に関係ないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックのサブセットが作動される。   [093] At step 840, 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 plurality of video streams is determined. . Different subsets of the plurality of hardware decoding blocks are operable to decode video streams encoded using different video encoding standards. In one embodiment, as shown in step 850, a subset of hardware decoding blocks are activated such that hardware decoding blocks not related to decoding of the video stream are not activated.

[094]ステップ860において、ビデオストリームが、ハードウェア復号化ブロックのサブセットを使用して復号化される。ステップ870において、メモリユニットは、ビデオストリームを復号化した後でアクセスされる。一実施形態において、復号化されたビデオストリームは、表示のためにメモリに記憶される。一実施形態において、ステップ880に示されるように、少なくとも1つの復号化されたビデオストリームに対する後処理動作。後処理動作は、ステップ870が実行される前、又はステップ870が実行された後に実行されることができることを理解されたい。一実施形態において、復号化されたビデオストリームは回転される。別の実施形態において、ループ内デブロッキングフィルタが、復号化されたビデオストリームに適用される。回転及びループ内デブロッキングは、メモリユニットがアクセスされる前に実行される。一実施形態において、ループ外デブロッキング及びデリンギングフィルタが、メモリユニットがアクセスされた後に、復号化されたビデオストリームに適用される。   [094] At step 860, the video stream is decoded using a subset of the hardware decoding blocks. In step 870, the memory unit is accessed after decoding the video stream. In one embodiment, the decoded video stream is stored in memory for display. In one embodiment, a post-processing operation on at least one decoded video stream, as shown in step 880. It should be understood that the post-processing operation can be performed before step 870 is performed 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.

ビデオストリームの順番が狂ったマクロブロックの処理
[095]図2Bを参照すると、一実施形態において、本発明は、マイクロコードエンジン260においてマクロブロックのバッファリング及び並べ替えを行う。本発明は、非ラスタ走査順のマクロブロックの送信及び受信をサポートするビデオ標準のためのループ内デブロッキングをサポートするために、マクロブロックをラスタ走査順に整列することを提供する。マイクロコードエンジン260は、ビデオストリームのフレームのマクロブロックを表す圧縮データを受信するように構成される。一実施形態において、少なくとも1つのマクロブロックが順番が狂って受信される。マイクロコードエンジン260は、圧縮データをバッファリングするように構成され、フレームのマクロブロックをラスタ走査順に整列するように構成される。
Handling macroblocks with out-of-order video streams
[095] Referring to Figure 2B, in one embodiment, the present invention performs macroblock buffering and reordering in the microcode engine 260. The present invention provides for aligning macroblocks in raster scan order to support in-loop deblocking for video standards that support transmission and reception of macroblocks in non-raster scan order. Microcode engine 260 is configured to receive compressed data representing macroblocks of frames of a video stream. In one embodiment, at least one macroblock is received out of order. The microcode engine 260 is configured to buffer the compressed data and is configured to align the macroblocks of the frame in raster scan order.

[096]図9は、本発明の実施形態による、ビデオストリームの順番が狂ったマクロブロックを処理するための方法900のフローチャートを示す。具体的なステップが方法900において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図9に記載のステップの変更形態を実行することによく適する。一実施形態において、方法900は、図2Bのマイクロコードエンジン260によって実行される。   [096] FIG. 9 shows a flowchart of a method 900 for processing out-of-order macroblocks in a video stream, according to an embodiment of the present invention. Although specific steps are disclosed in method 900, such steps are exemplary. That is, embodiments of the present invention are well suited to performing 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.

[097]方法900のステップ910において、ビデオストリームのフレームのマクロブロックを表す圧縮データが受信され、少なくとも1つのマクロブロックが順番が狂って受信される。ステップ920において、圧縮データがバッファリングされる。一実施形態において、圧縮データは、マイクロコードエンジン260のバッファにバッファリングされる。ステップ930において、ビデオストリームがパースされ、VLDがビデオストリームに対して実行される。ステップ930は任意的であること、及びビデオストリームのパース及びVLDはハードウェアデコーダ装置によって実行されることができることを理解されたい。ステップ930において、その他の又はさらなる前処理動作がビデオストリームに対して実行されることができることをさらに理解されたい。   [097] At step 910 of method 900, compressed data representing a macroblock of a frame of a video stream is received, and at least one macroblock is received out of order. In step 920, the compressed data is buffered. In one embodiment, the compressed data is buffered in a microcode engine 260 buffer. In step 930, the video stream is parsed and VLD is performed on the video stream. It should be understood that step 930 is optional and that parsing and VLD of the video stream can be performed by a hardware decoder device. It should further be appreciated that other or further pre-processing operations can be performed on the video stream at step 930.

[098]ステップ935において、ビデオストリームがループ内デブロッキングを必要とするかどうかが判定される。一実施形態において、圧縮データは、ループ内デブロッキングがビデオストリームに対して実行されるべきであるかどうかの指示を含む。ループ内デブロッキングが必要とされる場合、ステップ940に示されるように、フレームのマクロブロックがラスタ走査順に整列される。一実施形態において、フレームの全てのマクロブロックは、マクロブロックがラスタ走査順に整列される前にバッファリングされる。次に、方法900はステップ950に進む。或いは、ループ内デブロッキングが必要とされない場合、方法900はステップ950に直接進む。   [098] At step 935, it is determined whether the video stream requires in-loop deblocking. In one embodiment, the compressed data includes an indication of whether in-loop deblocking should be performed on the video stream. If in-loop deblocking is required, as shown in step 940, the macroblocks of the frame are aligned in raster scan order. In one embodiment, all macroblocks in the frame are buffered before the macroblocks are aligned in raster scan order. The method 900 then proceeds to step 950. Alternatively, if in-loop deblocking is not required, method 900 proceeds directly to step 950.

[099]ステップ950において、ビデオストリームが復号化される。一実施形態において、マクロブロックは、ラスタ走査順で復号化される。一実施形態において、ビデオストリームは、ハードウェア多標準対応ビデオデコーダ装置(例えば、図3のデコーダ装置150又は図4のデコーダ装置400)によって復号化される。一実施形態において、ビデオストリームは、図5の方法500に従って復号化される。   [099] In step 950, the video stream is decoded. In one embodiment, the macroblocks are decoded in raster scan order. In one embodiment, the video stream is decoded by a hardware multi-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.

[0100]ステップ960において、マクロブロックレベルのループ内デブロッキングが、復号化されたマクロブロックに対して実行される。ステップ970において、メモリユニットがアクセスされる。一実施形態において、デブロッキング及び復号化されたビデオストリームが、表示のためにメモリに記憶される。   [0100] In step 960, macroblock-level intra-loop deblocking 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.

[0101]ステップ980において、フレームレベルのループ外後処理が、復号化されたフレームに対して実行される。一実施形態において、ループ外後処理は、デブロッキング及びデリンギング動作を含む。ステップ980は任意的であることを理解されたい。次に、方法900はステップ970に戻り、メモリユニットがアクセスされる。一実施形態において、デブロッキングされ、デリンギングされ、復号化されたビデオストリームが、表示のためにメモリに記憶される。   [0101] In step 980, frame-level out-of-loop post processing is performed on the decoded frame. In one embodiment, the out-of-loop post processing includes deblocking and deringing operations. It should be understood that step 980 is optional. The method 900 then returns to step 970 and the memory unit is accessed. In one embodiment, the deblocked, deringed and decoded video stream is stored in memory for display.

[0102]マクロブロックがまだ圧縮データである間にマクロブロックをバッファリングすることによって、マイクロコードエンジン260は、復号化されたビデオデータよりもずっと少ないランレングス符号化された圧縮データの最大1フレームをバッファリングすることしか必要としない。さらに、圧縮マクロブロックのバッファは、電力も節約する。また、無線で受信されたビデオストリームは、多くのエラーを含みやすい。また、マイクロコードエンジン260に対するビットストリームのパースの分割は、エラー回復を改善する利点を有する。   [0102] By buffering the macroblock while the macroblock is still compressed data, the microcode engine 260 allows a maximum of one frame of run-length encoded compressed data to be much less than the decoded video data. Only need to be buffered. Furthermore, the compressed macroblock buffer also saves power. Also, video streams received over the air are likely to contain many errors. Also, the parsing of the bitstream for the microcode engine 260 has the advantage of improving error recovery.

ビデオストリームのマクロブロックのオンザフライでの回転
[0103]本発明の実施形態は、ビデオストリームがメモリに書き込まれる前に、ビデオストリームを「オンザフライで」回転するための回転エンジンを提供する。本発明の実施形態は、ビデオストリームが受信されるときにそれらのビデオストリームのマクロブロックを回転し、回転に基づいてフレーム内でマクロブロックを再配置することによってビデオストリームを回転することができる。本発明の実施形態は、復号化されたマクロブロックをメモリに書き込む前にマクロブロックに対して動作することによって、復号化されたフレームにおいてセカンドパス(second pass)を必要とせずにビデオストリームを回転することができる。
Rotate video stream macroblocks on the fly
[0103] Embodiments of the present invention provide a rotation engine for rotating a video stream "on the fly" before the video stream is written to memory. Embodiments of the present invention can rotate video streams by rotating the macroblocks of those video streams as they are received and rearranging the macroblocks within the frame based on the rotation. Embodiments of the present invention operate on a macroblock before writing the decoded macroblock to memory, thereby rotating the video stream without requiring a second pass in the decoded frame. can do.

[0104]一実施形態において、本発明は、回転の度合いに従ってビデオストリームのフレームのマクロブロックを回転するように、及びマクロブロックをフレーム内の新しい位置に再配置するように構成された回転エンジンを提供し、新しい位置は回転の度合いに基づく。一実施形態において、ビデオデコーダ装置は、表示のためにマクロブロックを記憶するためのメモリをさらに含む。一実施形態において、回転エンジンは、メモリにアクセスする前に、マクロブロックを回転し、マクロブロックをフレーム内で再配置するように構成される。   [0104] 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 position within the frame. Provide new position based on the degree of rotation. In one embodiment, the video decoder device further includes a memory for storing macroblocks for display. In one embodiment, the rotation engine is configured to rotate the macroblock and reposition the macroblock within the frame before accessing the memory.

[0105]図10A及び10Bは、本発明の実施形態による、フレームのマクロブロックの例示的な回転の図を示す。図10A及び10Bは図4の回転エンジン450の動作を示すが、示された実施形態は、任意の種類のビデオデコーダ装置内に実装されることができ、図4のハードウェア多標準対応ビデオデコーダ装置400の使用に限定されないことを理解されたい。例えば、回転エンジンは、単一標準対応ハードウェアデコーダ又はソフトウェアデコーダ内に含まれることができる。   [0105] FIGS. 10A and 10B show exemplary rotation diagrams of macroblocks of a frame, according to embodiments of the invention. 10A and 10B illustrate the operation of the rotation engine 450 of FIG. 4, the illustrated embodiment can be implemented in any type of video decoder device and the hardware multi-standard video decoder of FIG. It should be understood that the invention is not limited to the use of device 400. For example, the rotation engine can be included in a single standard hardware decoder or software decoder.

[0106]図10Aを参照すると、図1000が、図4の回転エンジン450を使用したフレーム1010の回転を示す。フレーム1010は、多くのマクロブロックを含む。マクロブロック1012が、回転エンジン450において受信された第1のマクロブロックとして示される。一実施形態において、マクロブロックは、マクロブロック1012が左上のマクロブロックであるようにマクロブロック1012が第1の受信マクロブロックであるラスタ走査順に受信される。   [0106] Referring to FIG. 10A, FIG. 1000 illustrates rotation of the frame 1010 using the rotation engine 450 of FIG. Frame 1010 includes a number of macroblocks. Macroblock 1012 is shown as the first macroblock received at rotation engine 450. In one embodiment, the macroblocks are received in raster scan order in which the macroblock 1012 is the first received macroblock, such that the macroblock 1012 is the upper left macroblock.

[0107]回転エンジン450は、マクロブロック1012を回転し、マクロブロック1012をフレーム1010内の新しい位置に再配置するように構成される。回転及び再配置は、ビデオストリームに関連する回転の度合いに基づく。回転の度合いは、ビデオストリームがどのように回転されるべきかを示す。例えば、回転の度合いは、時計回りに90度、反時計回りに90度、180度、又は任意のその他の回転の度合いであってよい。   [0107] The rotation engine 450 is configured to rotate the macroblock 1012 and reposition the macroblock 1012 to a new location within the frame 1010. The rotation and rearrangement is based on the degree of rotation associated with the video stream. The degree of rotation indicates how the video stream should be rotated. For example, the degree of rotation may be 90 degrees clockwise, 90 degrees, 180 degrees counterclockwise, or any other degree of rotation.

[0108]図1000は、時計回りに90度の回転の度合いを使用した回転エンジン450の動作を示す。マクロブロック1012は、時計回りに90度回転される。回転エンジン450は、回転されたフレーム1020内のマクロブロック1022として示される回転されたマクロブロック1012が、フレーム1020の全てのその他のマクロブロックに対して相対的に同じ位置にあるようにマクロブロック1012をやはり再配置する。   [0108] FIG. 1000 illustrates the operation of the rotation engine 450 using a degree of rotation of 90 degrees clockwise. Macroblock 1012 is rotated 90 degrees clockwise. The rotation engine 450 is configured so that the rotated macroblock 1012, shown as the macroblock 1022 in the rotated frame 1020, is in the same position relative to all other macroblocks in the frame 1020. Is also rearranged.

[0109]本発明の実施形態は、マクロブロックが順番が狂って受信されるマクロブロックレベルでのフレームの回転も提供する。図10Bを参照すると、図1050が、図4の回転エンジン450を使用したフレーム1060の回転を示す。マクロブロック1062が、回転エンジン450において受信された第1のマクロブロックとして示される。この実施形態において、マクロブロックは、マクロブロック1062が第1の受信マクロブロックであるが、左上のマクロブロックではないようにラスタ走査順でない順番で受信される。   [0109] Embodiments of the present invention also provide frame rotation at the macroblock level where macroblocks are received out of order. Referring to FIG. 10B, FIG. 1050 illustrates rotation of the frame 1060 using the rotation engine 450 of FIG. Macroblock 1062 is shown as the first macroblock received at rotation engine 450. In this embodiment, the macroblocks are received in an order that is not in raster scan order so that macroblock 1062 is the first received macroblock but not the upper left macroblock.

[0110]回転エンジン450は、マクロブロック1062を回転し、マクロブロック1062をフレーム1060内の新しい位置に再配置するように構成される。図1050は、時計回りに90度の回転の度合いを使用した回転エンジン450の動作を示す。マクロブロック1062は、時計回りに90度回転される。回転エンジン450は、回転されたフレーム1070内のマクロブロック1072として示される回転されたマクロブロック1062が、フレーム1070の全てのその他のマクロブロックに対して相対的に同じ位置にあるようにマクロブロック1062をやはり再配置する。   [0110] The rotation engine 450 is configured to rotate the macroblock 1062 and reposition the macroblock 1062 to a new location within the frame 1060. FIG. 1050 shows the operation of the rotation engine 450 using a degree of rotation of 90 degrees clockwise. Macroblock 1062 is rotated 90 degrees clockwise. The rotation engine 450 is configured so that the rotated macroblock 1062, shown as the macroblock 1072 in the rotated frame 1070, is in the same position relative to all other macroblocks in the frame 1070. Is also rearranged.

[0111]図11は、本発明の実施形態による、フレームのマクロブロックを回転するための方法1100のフローチャートを示す。具体的なステップが方法1100において開示されるが、そのようなステップは例示的である。すなわち、本発明の実施形態は、様々なその他のステップ、又は図11に記載のステップの変更形態を実行することによく適する。一実施形態において、方法1100は、図4のマイクロコードエンジン450によって実行される。   [0111] FIG. 11 shows a flowchart of a method 1100 for rotating a macroblock of a frame according to an embodiment of the present invention. Although specific steps are disclosed in method 1100, such steps are exemplary. That is, embodiments of the present invention are well suited to performing various other steps or variations of the steps described in FIG. In one embodiment, the method 1100 is performed by the microcode engine 450 of FIG.

[0112]ステップ1110において、ビデオストリームが復号化される。一実施形態において、ビデオストリームは、ハードウェア多標準対応ビデオデコーダ装置(例えば、図3のデコーダ装置150又は図4のデコーダ装置400)によって復号化される。一実施形態において、ビデオストリームは、図5の方法500に従って復号化される。ステップ1110は任意的であること、及びビデオストリームは処理の前に既に復号化されていることを理解されたい。   [0112] In step 1110, the video stream is decoded. In one embodiment, the video stream is decoded by a hardware multi-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. It should be understood that step 1110 is optional and that the video stream has already been decoded prior to processing.

[0113]ステップ1120において、ビデオストリームに対する回転の度合いがアクセスされる。一実施形態において、回転の度合いは、時計回りに90度、反時計回りに90度、及び180度のうちの1つである。しかし、任意の回転の度合いが使用されてよいことを理解されたい。ステップ1130において、ビデオストリームのマクロブロックがアクセスされる。   [0113] In step 1120, the degree of rotation 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 degree of rotation may be used. In step 1130, a macroblock of the video stream is accessed.

[0114]ステップ1140において、マクロブロックは、回転の度合いに従って回転される。ステップ1150において、マクロブロックはフレーム内の新しい位置に再配置され、新しい位置は回転の度合いに基づく。マクロブロックは、当該マクロブロックが、いったん回転されたときにフレームの全てのその他のマクロブロックに対して同じ相対的位置にあるように再配置されることを理解されたい。一実施形態において、マクロブロックの回転と、マクロブロックの再配置とは、メモリにアクセスする前に実行される。   [0114] In step 1140, the macroblock is rotated according to the degree of rotation. In step 1150, the macroblock is relocated to a new position in the frame, and the new position is based on the degree of rotation. It should be understood that a macroblock is rearranged so that it is in the same relative position with respect to all other macroblocks in the frame once it has been rotated. In one embodiment, macroblock rotation and macroblock relocation are performed before accessing the memory.

[0115]ステップ1160において、マクロブロックは、表示のためにメモリ内に記憶される。一実施形態において、ステップ1170に示されるように、デブロッキング動作が、復号化されたマクロブロックに対して実行される。ステップ1170は任意的であることを理解されたい。さらに、ステップ1170は、ループ内デブロッキング、又はループ外デブロッキング及びデリンギングを実行することを含むことができることを理解されたい。   [0115] 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. Further, it should be understood that step 1170 can include performing in-loop deblocking, or out-of-loop deblocking and deringing.

[0116]このように、本発明の実施形態は、複数のビデオ標準によるビデオストリームのハードウェアベースの復号化をサポートする新しいハードウェア多標準対応ビデオデコーダ装置のアーキテクチャを提供する。本発明の実施形態は、複数のビデオ符号化標準のそれぞれに対してリアルタイムの復号化を提供することができる。本発明の実施形態は、復号化されたビデオストリームに対する後処理動作を提供する。本発明の一実施形態は、JPEG、MPEG−4、H.263、H.263+、H.264、及びWMV9/VC−1ビデオ標準のうちのいずれかを使用したビデオストリームに対するビデオ復号化を提供するハードウェアデコーダ装置を提供する。   [0116] Thus, embodiments of the present invention provide a new hardware multi-standard video decoder device architecture that supports hardware-based decoding of video streams according to multiple video standards. Embodiments of the present invention can provide real-time decoding for each of a plurality of video coding standards. Embodiments of the present invention provide post-processing operations on the decoded video stream. One embodiment of the present invention is JPEG, MPEG-4, H.264. 263, H.M. 263+, H.H. A hardware decoder device that provides video decoding for video streams using any of H.264 and WMV9 / VC-1 video standards.

[0117]本発明の実施形態は、複数の異なるビデオ符号化標準のためのビデオ復号化機能を同時に提供するためのハードウェア多ストリーム多標準対応ビデオデコーダ装置を提供する。本発明の実施形態は、複数のインターリーブされたビデオストリームを同時に復号化することができる。   [0117] Embodiments of the present invention provide a hardware multi-stream multi-standard video decoder device for simultaneously providing video decoding functions for a plurality of different video coding standards. Embodiments of the present invention can simultaneously decode multiple interleaved video streams.

[0118]本発明の実施形態は、マクロブロックをラスタ走査順に整列するための追加的なメモリを要求することなしにビデオストリームのループ内デブロッキングを提供するためのビデオデコーダアーキテクチャを提供する。本発明の実施形態は、マイクロコードエンジンにおいてビデオストリームのマクロブロックを整列することができる。本発明の実施形態は、複数のサポートされるビデオ標準のうちの1つを使用して符号化されたビデオストリームに対する復号化並びにループ外デブロッキング及び/又はデリンギングを提供することができる。   [0118] Embodiments of the present invention provide a video decoder architecture for providing in-loop deblocking of a video stream without requiring additional memory to align macroblocks in raster scan order. Embodiments of the present invention can align macroblocks of a video stream in a microcode engine. Embodiments of the present invention can provide decoding and out-of-loop deblocking and / or deringing for a video stream encoded using one of multiple supported video standards.

[0119]本発明の実施形態は、ビデオストリームがメモリに書き込まれる前に、ビデオストリームを「オンザフライで」回転するための回転エンジンを提供する。本発明の実施形態は、ビデオストリームが受信されるときにそれらのビデオストリームのマクロブロックを回転し、回転に基づいてフレーム内でマクロブロックを再配置することによってビデオストリームを回転することができる。本発明の実施形態は、復号化されたマクロブロックをメモリに書き込む前にマクロブロックに対して動作することによって、復号化されたフレームにおいてセカンドパスを必要とせずにビデオストリームを回転することができる。   [0119] Embodiments of the present invention provide a rotation engine for rotating a video stream "on the fly" before the video stream is written to memory. Embodiments of the present invention can rotate video streams by rotating the macroblocks of those video streams as they are received and rearranging the macroblocks within the frame based on the rotation. Embodiments of the present invention can rotate a video stream without requiring a second pass in the decoded frame by operating on the macroblock before writing the decoded macroblock to memory. .

[0120]本発明の特定の実施形態の上述の説明は、例示及び説明の目的で示された。それらの実施形態は、網羅的であるように、又は本発明を開示された厳密な形態に限定するように意図されておらず、多くの修正形態及び変形形態が上述の教示を踏まえて可能である。実施形態は、本発明の原理、及びその実際的な応用を最もよく説明して、それによって当業者が本発明及び種々の実施形態を、考えられる特定の用途に適する様々な修正と共に最も上手く利用することを可能にするために選択され、説明された。本発明の範囲は、本明細書に添付された特許請求の範囲と、その特許請求の範囲の均等物とによって規定されることが意図される。   [0120] The foregoing descriptions of specific embodiments of the present invention have been presented for purposes of illustration and description. These embodiments 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. is there. The embodiments best describe the principles of the invention and its practical application so that those skilled in the art can best utilize the invention and various embodiments with various modifications suitable for the particular application envisaged. Selected and explained to make it possible. It is intended that the scope of the invention be defined by the claims appended hereto and their equivalents.

本発明の一実施形態によるコンピュータシステムの基本コンポーネントの概略図である。FIG. 2 is a schematic diagram of basic components of a computer system according to an embodiment of the invention. 本発明の一実施形態による、プリント回路基板上に実装された例示的なハードウェアビデオデコーダカードの図である。FIG. 2 is a diagram of an exemplary hardware video decoder card mounted on a printed circuit board, according to one embodiment of the invention. 本発明の一実施形態による、ハードウェア多標準対応ビデオデコーダ装置を含む例示的なアーキテクチャの図である。FIG. 3 is an exemplary architecture including a hardware multi-standard video decoder device, according to one embodiment of the present invention. 本発明の一実施形態によるハードウェア多標準対応ビデオデコーダ装置の内部コンポーネントを示す構成図である。FIG. 2 is a block diagram illustrating internal components of a hardware multi-standard video decoder device according to an embodiment of the present invention. 本発明の一実施形態による例示的なハードウェア多標準対応ビデオデコーダ装置の内部コンポーネントを示す構成図である。FIG. 3 is a block diagram illustrating internal components of an exemplary hardware multi-standard video decoder device according to an embodiment of the present invention. ビデオストリームを復号化するための方法のフローチャートであり、方法は、本発明の実施形態によるハードウェア多標準対応ビデオデコーダ装置を使用して実行される。Fig. 4 is a flowchart of a method for decoding a video stream, the method being performed using a hardware multi-standard video decoder device according to an embodiment of the present invention. 本発明の一実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置の内部コンポーネントを示す図である。FIG. 3 illustrates internal components of a hardware multi-stream multi-standard video decoder device according to an embodiment of the present invention. 本発明の実施形態による、複数のビデオストリームの例示的なインターリーブされた部分を示す図である。FIG. 3 illustrates an exemplary interleaved portion of multiple video streams, in accordance with an embodiment of the present invention. 本発明の実施形態による、複数のビデオストリームの例示的なインターリーブされた部分を示す図である。FIG. 3 illustrates an exemplary interleaved portion of multiple video streams, in accordance with an embodiment of the present invention. 複数のビデオストリームを復号化するための方法のフローチャートであり、方法は、本発明の実施形態によるハードウェア多ストリーム多標準対応ビデオデコーダ装置を使用して実行される。FIG. 5 is a flowchart of a method for decoding a plurality of video streams, the method being performed using a hardware multi-stream multi-standard video decoder device according to an embodiment of the present invention. 本発明の実施形態による、ビデオストリームの順番が狂ったマクロブロックを処理するための方法のフローチャートである。4 is a flowchart of a method for processing out-of-order macroblocks in a video stream, according to an embodiment of the present invention. 本発明の実施形態による、フレームのマクロブロックの例示的な回転の図である。FIG. 3 is an exemplary rotation diagram of a macroblock of a frame according to an embodiment of the present invention. 本発明の実施形態による、フレームのマクロブロックの例示的な回転の図である。FIG. 3 is an exemplary rotation diagram of a macroblock of a frame according to an embodiment of the present invention. 本発明の実施形態による、フレームのマクロブロックを回転するための方法のフローチャートである。4 is a flowchart of a method for rotating a macroblock of a frame according to an embodiment of the present invention.

Claims (10)

ハードウェア多標準対応ビデオデコーダ装置を使用して実行される、復号化のための方法であって、
複数のビデオストリームのうちの1つである第1のビデオストリームにアクセスするステップと、
前記第1のビデオストリームを符号化するために使用された第1のビデオ標準を特定するステップと、
前記第1のビデオストリームを復号化するために使用される前記ハードウェア多標準対応ビデオデコーダ装置の複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックの第1のサブセットを決定するステップであり、前記複数のハードウェア復号化ブロックの異なるサブセットは、異なるビデオ符号化標準を使用して符号化されたビデオストリームを復号化するように動作可能である、前記決定するステップと、
ハードウェア復号化ブロックの前記第1のサブセットを使用して前記第1のビデオストリームを復号化するステップと
を含む、方法。
A method for decoding, performed using a hardware multi-standard video decoder device, comprising:
Accessing a first video stream that is one of a plurality of video streams;
Identifying a first video standard used to encode the first video stream;
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; The determining step, wherein different subsets of the plurality of hardware decoding blocks are operable to decode video streams encoded using different video encoding standards;
Decoding the first video stream using the first subset of hardware decoding blocks.
前記第1のビデオストリームの復号化に関係のないハードウェア復号化ブロックが作動されないようにハードウェア復号化ブロックの前記サブセットを作動するステップをさらに含む請求項1に記載の方法。   The method of claim 1, further comprising operating the subset of hardware decoding blocks such that hardware decoding blocks not related to decoding of the first video stream are not activated. 前記複数のハードウェア復号化ブロックは、多段階マクロブロックレベルパイプライン内に実装される請求項1に記載の方法。   The method of claim 1, wherein the plurality of hardware decoding blocks are implemented in a multi-stage macroblock level pipeline. 前記多段階マクロブロックレベルパイプラインの1つの段階で前記第1のビデオストリームのデータが受信されない場合に前記段階の中のハードウェア復号化ブロックを停止するステップをさらに含む請求項3に記載の方法。   The method of claim 3, further comprising stopping a hardware decoding block in the stage when data of the first video stream is not received in one stage of the multi-stage macroblock level pipeline. . 前記第1のビデオストリームを復号化する前記ステップの後でメモリユニットにアクセスするステップをさらに含む請求項1に記載の方法。   The method of claim 1, further comprising accessing a memory unit after the step of decoding the first video stream. 前記複数のビデオストリームにアクセスするステップと、
前記複数のビデオストリームのうちのビデオストリームに対して使用された第2のビデオ標準を特定するステップと、
前記複数のビデオストリームの一部をインターリーブするステップと、
前記複数のハードウェア復号化ブロックのうちのハードウェア復号化ブロックの複数のサブセットを決定するステップと、
ハードウェア復号化ブロックの前記複数のサブセットを使用して前記複数のビデオストリームを復号化するステップと
をさらに含む請求項1に記載の方法。
Accessing the plurality of video streams;
Identifying a second video standard used for a video stream 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;
The method of claim 1, further comprising: decoding the plurality of video streams using the plurality of subsets of hardware decoding blocks.
前記複数のビデオストリームは、少なくとも1つのデジタル静止画像ストリーム、及びデジタルムービーストリームを含む請求項6に記載の方法。   The method of claim 6, wherein the plurality of video streams includes at least one digital still image stream and a digital movie stream. 前記複数のビデオストリームの前記一部は、前記デジタル静止画像ストリーム及び前記デジタルムービーストリームのフレームである請求項7に記載の方法。   The method of claim 7, wherein the portion of the plurality of video streams is a frame of the digital still image stream and the digital movie stream. 前記複数のビデオストリームは、複数のデジタルムービーストリームを含む請求項6に記載の方法。   The method of claim 6, wherein the plurality of video streams includes a plurality of digital movie streams. 前記複数のビデオストリームの前記一部は、前記複数のデジタルムービーストリームのマクロブロックである請求項9に記載の方法。   The method of claim 9, wherein the portion of the plurality of video streams is a macroblock of the plurality of digital movie streams.
JP2008544512A 2005-12-09 2006-12-06 Hardware multi-standard video decoder device Active JP4891335B2 (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

Publications (3)

Publication Number Publication Date
JP2009518960A true JP2009518960A (en) 2009-05-07
JP2009518960A5 JP2009518960A5 (en) 2009-07-30
JP4891335B2 JP4891335B2 (en) 2012-03-07

Family

ID=38163412

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2008544512A Active JP4891335B2 (en) 2005-12-09 2006-12-06 Hardware multi-standard video decoder device

Country Status (6)

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

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009526485A (en) * 2006-02-10 2009-07-16 エヌヴィディア コーポレイション Video data processing

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107547899B (en) * 2011-04-22 2020-03-17 杜比国际公司 Lossy compression coding data method and device and corresponding data reconstruction method and device
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

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10117329A (en) * 1996-08-01 1998-05-06 Thomson Consumer Electron Inc Variable coding format and method for receiving transmission channel number
JPH11112906A (en) * 1997-09-30 1999-04-23 Matsushita Electric Ind Co Ltd Television receiver and video signal processing unit
JP2001094895A (en) * 1999-09-24 2001-04-06 Sharp Corp Digital av system capable of mutually transmitting/ receiving data
JP2003152546A (en) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd Multi-format stream decoder and multi-format stream sender
JP2003259240A (en) * 2001-10-18 2003-09-12 Yazaki North America Inc Multi-format decoder board, multimedia system, and method for handling digital data stream for transporting data encoded by plurality of different encoding formats
US20050123057A1 (en) * 2002-04-01 2005-06-09 Macinnis Alexander G. Video decoding system supporting multiple standards
JP2005267172A (en) * 2004-03-18 2005-09-29 Sony Corp Content reception system, device and method, recording medium, and program
US20050259688A1 (en) * 2004-05-21 2005-11-24 Stephen Gordon Multistandard video decoder

Family Cites Families (6)

* 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
WO2003085494A2 (en) * 2002-04-01 2003-10-16 Broadcom Corporation Video decoding system
US7167108B2 (en) * 2002-12-04 2007-01-23 Koninklijke Philips Electronics N.V. Method and apparatus for selecting particular decoder based on bitstream format detection
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

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH10117329A (en) * 1996-08-01 1998-05-06 Thomson Consumer Electron Inc Variable coding format and method for receiving transmission channel number
JPH11112906A (en) * 1997-09-30 1999-04-23 Matsushita Electric Ind Co Ltd Television receiver and video signal processing unit
JP2001094895A (en) * 1999-09-24 2001-04-06 Sharp Corp Digital av system capable of mutually transmitting/ receiving data
JP2003259240A (en) * 2001-10-18 2003-09-12 Yazaki North America Inc Multi-format decoder board, multimedia system, and method for handling digital data stream for transporting data encoded by plurality of different encoding formats
JP2003152546A (en) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd Multi-format stream decoder and multi-format stream sender
US20050123057A1 (en) * 2002-04-01 2005-06-09 Macinnis Alexander G. Video decoding system supporting multiple standards
JP2005267172A (en) * 2004-03-18 2005-09-29 Sony Corp Content reception system, device and method, recording medium, and program
US20050259688A1 (en) * 2004-05-21 2005-11-24 Stephen Gordon Multistandard video decoder

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2009526485A (en) * 2006-02-10 2009-07-16 エヌヴィディア コーポレイション Video data processing

Also Published As

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

Similar Documents

Publication Publication Date Title
US9210437B2 (en) Hardware multi-stream multi-standard video decoder device
KR101227667B1 (en) Piecewise processing of overlap smoothing and in-loop deblocking
EP1446953B1 (en) Multiple channel video transcoding
US9224187B2 (en) Wavefront order to scan order synchronization
US6959348B1 (en) Method and system for accessing data
US8774281B2 (en) Implementation of a DV video decoder with a VLIW processor and a variable length decoding unit
US9336558B2 (en) Wavefront encoding with parallel bit stream encoding
US20070153907A1 (en) Programmable element and hardware accelerator combination for video processing
KR20070111467A (en) Scratch pad for storing intermediate loop filter data
JP2005175997A (en) Decoding apparatus, electronic apparatus, computer, decoding method, program, and recording medium
US20080170611A1 (en) Configurable functional multi-processing architecture for video processing
US9161056B2 (en) Method for low memory footprint compressed video decoding
US9204158B2 (en) Hardware multi-standard video decoder device
JP4891335B2 (en) Hardware multi-standard video decoder device
US9843811B2 (en) Method for rotating macro-blocks of a frame of a video stream
JP2002112268A (en) Compressed image data decoding apparatus
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
KR100636911B1 (en) Method and apparatus of video decoding based on interleaved chroma frame buffer
JPH1056641A (en) Mpeg decoder
KR100556341B1 (en) Vedeo decoder system having reduced memory bandwidth
US20080056377A1 (en) Neighboring Context Management
KR100821922B1 (en) Local memory controller for mpeg decoder
KR20040073095A (en) A Device for Both Encoding and Decoding MPEG or JPEG Data
JP4498848B2 (en) Image processing device

Legal Events

Date Code Title Description
A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20090615

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110125

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110425

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111206

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111215

R150 Certificate of patent or registration of utility model

Ref document number: 4891335

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141222

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250