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

Hardware multi-standard video decoder device Download PDF

Info

Publication number
DE112006003307T5
DE112006003307T5 DE112006003307T DE112006003307T DE112006003307T5 DE 112006003307 T5 DE112006003307 T5 DE 112006003307T5 DE 112006003307 T DE112006003307 T DE 112006003307T DE 112006003307 T DE112006003307 T DE 112006003307T DE 112006003307 T5 DE112006003307 T5 DE 112006003307T5
Authority
DE
Germany
Prior art keywords
video
hardware
video stream
decoding
stream
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
DE112006003307T
Other languages
German (de)
Other versions
DE112006003307T8 (en
Inventor
Ingatius B. Atherton Tjandrasuwita
Harikrishna M. San Jose Reddy
Iole Moccagatta
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nividia Corp Santa Clara
Nvidia Corp
Original Assignee
Nividia Corp Santa Clara
Nvidia Corp
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 Nividia Corp Santa Clara, Nvidia Corp filed Critical Nividia Corp Santa Clara
Publication of DE112006003307T5 publication Critical patent/DE112006003307T5/en
Application granted granted Critical
Publication of DE112006003307T8 publication Critical patent/DE112006003307T8/en
Expired - Fee Related legal-status Critical Current

Links

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

Verfahren zum Decodieren, wobei das Verfahren unter Verwendung einer Multistandard-Hardware-Videodecodervorrichtung implementiert wird, das Verfahren aufweisend:
Zugreifen auf einen ersten Videostrom, wobei der erste Videostrom einer von mehreren Videoströmen ist;
Identifizieren eines ersten Videostandards, der zum Codieren des ersten Videostromes verwendet wurde;
Bestimmen einer ersten Teilmenge von Hardware-Decodierblöcken aus mehreren Hardware-Decodierblöcken der Multistandard-Hardware-Videodecodervorrichtung, die zum Decodieren des ersten Videostromes verwendet werden, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke zum Decodieren von Videoströmen dienen können, die unter Verwendung verschiedener Videocodierstandards codiert wurden; und
Decodieren des ersten Videostromes unter Verwendung der ersten Teilmenge von Hardware-Decodierblöcken.
A method of decoding, the method being implemented using a multi-standard hardware video decoder apparatus, the method comprising:
Accessing a first video stream, wherein the first video stream 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 decode blocks from a plurality of hardware decode blocks of the multi-standard hardware video decoder device used to decode the first video stream, wherein different subsets of the plurality of hardware decode blocks may be for decoding video streams encoding using different video encoding standards were; and
Decoding the first video stream using the first subset of hardware decode blocks.

Figure 00000001
Figure 00000001

Description

TECHNISCHES GEBIETTECHNICAL AREA

Das hier behandelte technische Gebiet betrifft die Videodecodierung. Insbesondere betrifft die vorliegende Schrift eine Multistandard-Hardware-Videodecodervorrichtung.The The technical field discussed here concerns video decoding. In particular, the present specification relates to a multi-standard hardware video decoder device.

ALLGEMEINER STAND DER TECHNIKGENERAL PRIOR ART

Digitale Videoströme werden in der Regel unter Verwendung eines von vielen verschiedenen Codierstandards codiert. Zum Beispiel kann ein digitaler Videostrom zur Umwandlung in ein Datenformat, das weniger Bits benötigt, komprimiert werden. Diese Komprimierung kann verlustfrei sein, so dass der ursprüngliche Videostrom beim Decodieren wiederhergestellt werden kann, oder sie kann verlustbehaftet sein, so dass eine exakte Kopie des ursprünglichen Videostromes nicht wiederhergestellt werden kann, wobei aber das Decodieren der komprimierten Daten effizienter ist.digital video streams are usually using one of many different encoding standards coded. For example, a digital video stream can be converted into a data format that requires fewer bits to be compressed. These Compression can be lossless, so the original one Video stream can be restored when decoding, or they can be lossy, making an exact copy of the original one Video stream can not be restored, but the Decode the compressed data is more efficient.

Es gibt zurzeit eine große Anzahl von Videocodierstandards, und häufig kommen neue Standards hinzu. Zu Beispielen derzeitiger Videocodierstandards gehören JPEG (Joint Photographic Experts Group), MPEG (Moving Pictures Experts Group), MPEG-2, MPEG-3, MPEG-4, H.263, H.263+, H.264 und proprietäre Standards wie zum Beispiel Real Video und Windows Media. Um die Vorteile von digitalem Video in vollem Umfang auszuschöpfen, benötigt ein Nutzer Zugang zu Decodern, die in der Lage sind, alle gängigen Codierstandards zu decodieren.It currently has a big one Number of video coding standards, and often come new standards added. Examples of current video coding standards include JPEG (Joint Photographic Experts Group), MPEG (Moving Pictures Experts Group), MPEG-2, MPEG-3, MPEG-4, H.263, H.263 +, H.264 and proprietary standards such as Real Video and Windows Media. To take advantage of digital To fully exploit video requires one Users have access to decoders that are capable of all common coding standards to decode.

Viele wichtige Verwendungen für Streaming-Video stehen im Zusammenhang mit Echtzeit-Kommunikationen. Zum Beispiel erfordert die Video-Telefonie eine Videodecodierung in Echtzeit, so dass sie mit einem entsprechenden Audiosignal synchronisiert werden kann. Darum ist es ebenfalls wünschenswert, den Nutzern eine Echtzeit-Videodecodierung anzubieten, um Echtzeit-Kommunikationsanwendungen zu ermöglichen. Darüber hinaus kommt es zu Situationen, wo ein Nutzer das Decodieren mehrerer Videoströme benötigt. Zum Beispiel empfängt ein Nutzer, der heute ein Videotelefonat führt, ein angehängtes Bild von der Person, mit der er gerade spricht. In diesem Beispiel muss eine Echtzeit-Decodierung des Videotelefoniestromes aufrechterhalten werden, während das Bild, das für die Konversation notwendig ist, decodiert wird.Lots important uses for Streaming video is related to real-time communications. For example, video telephony requires video decoding in real time, so that they are synchronized with an appropriate audio signal can be. Therefore, it is also desirable to give the users a Provide real-time video decoding to real-time communication applications to enable. About that In addition, situations occur where one user decodes several video streams needed. For example, receive a user who is making a video call today, an attached picture from the person he's talking to. In this example, must Maintain a real-time decoding of the video telephony stream be while the picture that for the conversation is necessary, is decoded.

Derzeit erfolgt die Videodecodierung unter Verwendung eines von zwei verfügbaren Verfahren: Einzelstandard-Hardware-Videodecoder und Softwaregestützte programmierbare Kerne, die einen Videostrom gemäß einem oder mehreren Videostandards decodieren können. Einzelstandard-Hardware-Videodecoder können eine Echtzeitdecodier-Funktionalität bereitstellen. Um aber einen Videostrom zu decodieren, der unter Verwendung eines bestimmten Codierstandards codiert wurde, muss ein Nutzer einen Hardware-Videodecoder für diesen bestimmten Standard besitzen. Da es eine große Anzahl von weithin verwendeten Videocodierstandards gibt, würde ein Nutzer viele verschiedene Einzelstandard-Hardware-Videodecoder benötigen, um auf digitales Video zuzugreifen, das unter Verwendung verschiedener Videocodierstandards codiert wurde, was für den Nutzer eine teure Angelegenheit darstellen würde. Darüber hinaus verfügen typische Computersysteme nicht über die Fähigkeit, eine große Anzahl von Einzelstandard-Hardware-Videodecodern hinzuzufügen, wodurch die Anzahl von Videoströmen, auf die ein Nutzer zugreifen kann, weiter beschränkt wird.Currently video decoding is performed using one of two available methods: single-standard hardware video decoder and software supported programmable cores that decode a video stream according to one or more video standards can. Single standard hardware video decoder can provide real-time decoding functionality. But one To decode video stream using a particular Encoding standards, a user must have a hardware video decoder for this own certain standard. As there are a large number of widely used Video encoding standards would a user many different single-standard hardware video decoders need, to access digital video using different Video coding standards, which is an expensive affair for the user would represent. About that have typical computer systems do not over the ability, a big number of single-standard hardware video decoders, which adds the number of video streams, which a user can access is further restricted.

Es stehen derzeitige Software-gestützte Videodecoder mit programmierbarem Kern zur Verfügung, die ein Decodieren unter Verwendung eines oder mehrerer Videocodierstandards ermöglichen. Ein Videodecoder mit programmierbarem Kern kann eine Hardwarebeschleunigung zum Beschleunigen der Decodierfunktionalität enthalten. Jedoch führt der programmierbare Kern das gesamte Decodieren aus. Videodecoder mit programmierbarem Kern haben in der Regel einen hohen Verarbeitungsaufwand, sind weniger effizient und verbrauchen viel mehr Strom als ein Einzelstandard-Hardware-Videodecoder. Darüber hinaus sind Videodecoder mit programmierbarem Kern nicht in der Lage, gleichbleibend eine Echtzeit-Videodecodierung auszuführen, da die Decodierung von den Verarbeitungsanforderungen des gesamten Computersystems abhängig ist.It are currently software-supported Video decoder with programmable core available, which decode under Use one or more video coding standards. One Video decoder with programmable core can provide hardware acceleration to speed up the decoding functionality. However, the programmable Core the entire decoding out. Video decoder with programmable Core usually have a high processing cost, are less efficient and consume much more power than a single-standard hardware video decoder. About that In addition, video decoders with programmable core are not in the Able to perform a real-time video decoding consistently since the decoding of the processing requirements of the whole Computer system dependent is.

Dementsprechend sind derzeit verfügbare digitale Videodecoder nicht in der Lage, eine Echtzeit-Videodecodierung für eine große Anzahl von weithin verwendeten Videocodierstandards auszuführen. Außerdem sind derzeit verfügbare digitale Videodecoder nicht in der Lage, eine gleichzeitige Videodecodierung für mehrere Ströme auszuführen, die unter Verwendung einer großen Anzahl von weithin verwendeten Videocodierstandards codiert wurden. Darüber hinaus sind derzeit verfügbare digitale Videodecoder nicht in der Lage, gleichzeitig mehrere Videoströme zu decodieren, wenn mindestens ein Videostrom eine Echtzeit-Decodierung erfordert. Es besteht somit Bedarf an einem neuen digitalen Videodecoder, der die Einschränkungen des Standes der Technik überwindet. Der neue digitale Videodecoder sollte eine Echtzeit Videodecodierfunktionalität für mehrere verschiedene Videostandards bereitstellen. Der neue digitale Videodecoder sollte außerdem eine gleichzeitige Videodecodierfunktionalität für mehrere Videoströme bereitstellen, die unter Verwendung mehrerer verschiedener Videostandards codiert wurden.Accordingly, currently available digital video decoders are incapable of performing real-time video decoding for a large number of widely used video coding standards. In addition, currently available digital video decoders are incapable of performing concurrent video decoding for multiple streams encoded using a large number of widely used video coding standards. Moreover, currently available digital video decoders are unable to simultaneously decode multiple video streams when at least one video stream requires real-time decoding. Thus, there is a need for a new digital video decoder which overcomes the limitations of the prior art. The new digital video decoder should provide real-time video decoding functionality for several different video standards. The new digital video decoder should also provide simultaneous video decoding functionality for multiple video streams encoded using several different video standards the.

KURZDARSTELLUNG DER ERFINDUNGBRIEF SUMMARY OF THE INVENTION

Ausführungsformen der vorliegenden Erfindung stellen eine Multistandard-Hardware-Videodecodervorrichtung bereit, die eine Videodecodierfunktionalität für mehrere verschiedene Videocodierstandards enthalten. Ausführungsformen der vorliegenden Erfindung sind in der Lage, eine Echtzeit-Decodierung für jeden der mehreren Videocodierstandards auszuführen.embodiments of the present invention provide a multi-standard hardware video decoder device It provides a video decoding functionality for several different video coding standards contain. embodiments The present invention is capable of real-time decoding for each the multiple video coding standards.

In einer Ausführungsform stellt die vorliegende Erfindung eine Multistandard-Hardware-Videodecodervorrichtung bereit. Ein Befehlsanalysator der Multistandard-Hardware-Videodecodervorrichtung ist dafür ausgelegt, auf einen Videostrom zuzugreifen, und dafür ausgelegt, einen Videocodierstandard zu identifizieren, der zum Codieren des Videostromes verwendet wurde. Die Multistandard-Hardware-Videodecodervorrichtung enthält außerdem mehrere Hardware-Decodierblöcke zum Ausführen von Operationen in Verbindung mit dem Decodieren des Videostromes, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke dem Decodieren von Videoströmen dienen, die unter Verwendung verschiedener Videocodierstandards codiert wurden. In einer Ausführungsform ist die Multistandard-Hardware-Videodecodervorrichtung innerhalb eines integrierten Schaltkreises implementiert, der mit einer gedruckten Leiterplatte gekoppelt ist, wobei die gedruckte Leiterplatte mit einem Verbinder gekoppelt ist, um die gedruckte Leiterplatte lösbar mit einem Computersystem zu koppeln.In an embodiment The present invention provides a multi-standard hardware video decoder device ready. A command analyzer of the multi-standard hardware video decoder device is designed for to access a video stream and adapted to a video encoding standard identify that was used to encode the video stream. The multi-standard hardware video decoder device also includes several Hardware decoding blocks to execute Operations in connection with the decoding of the video stream, wherein different subsets of the multiple hardware decode blocks Decode video streams serve, using various video coding standards were coded. In one embodiment is the multi-standard hardware video decoder device implemented within an integrated circuit using a printed circuit board is coupled, wherein the printed Printed circuit board is coupled with a connector to the printed PCB detachable to pair with a computer system.

In einer Ausführungsform ist der Befehlsanalysator dafür ausgelegt, eine erste Teilmenge der mehreren Hardware-Decodierblöcke zu aktivieren, die zum Decodieren eines ersten identifizierten Videocodierstandards verwendet werden, der zum Codieren des Videostromes verwendet wurde, so dass ein Hardware-Decodierblock, der nicht an der Decodierung des Videostromes beteiligt ist, nicht aktiviert wird. In einer Ausführungsform ist der Befehlsanalysator dafür ausgelegt, eine zweite Teilmenge der mehreren Hardware-Decodierblöcke zu aktivieren, die zum Decodieren eines zweiten identifizierten Videocodierstandards verwendet werden, der zum Codieren des Videostromes verwendet wurde, dergestalt, dass ein Hardware-Decodierblock, der nicht an der Decodierung des Videostromes beteiligt ist, nicht aktiviert wird.In an embodiment is the command analyzer for that configured to activate a first subset of the plurality of hardware decoding blocks that for decoding a first identified video coding standard used to encode the video stream, leaving a hardware decoding block that is not decoding the video stream is not activated. In one embodiment is the command analyzer for that configured to activate a second subset of the plurality of hardware decode blocks that for decoding a second identified video coding standard used to encode the video stream, such that a hardware decoding block that is not decoding the video stream is not activated.

In einer Ausführungsform sind die mehreren Hardware-Decodierblöcke innerhalb einer mehrstufigen Makroblockebenen-Pipeline implementiert. In einer Ausführungsform ist der Befehlsanalysator dafür ausgelegt, Hardware-Decodierblöcke innerhalb einer Stufe der mehrstufigen Makroblockebenen-Pipeline zu deaktivieren, wenn keine Daten des Videostromes an der Stufe empfangen werden. In einer Ausführungsform greift die Multistandard-Hardware-Videodecodervorrichtung nach dem vollständigen Decodieren des Videostromes auf eine Speichereinheit zu.In an embodiment The multiple hardware decode blocks are within a multi-level Macroblock level pipeline implemented. In one embodiment the command analyzer is designed to Hardware decoding blocks within disable one level of the multilevel macroblock level pipeline, if none Data of the video stream will be received at the stage. In one embodiment accesses the multistandard hardware video decoder device after the complete Decode the video stream to a storage unit.

In einer Ausführungsform enthält die Multistandard-Hardware-Videodecodervorrichtung des Weiteren einen Hardware-Nachbearbeitungsblock zum Ausführen einer Nachbearbeitungsoperation an einem decodierten Videostrom. In einer Ausführungsform ist der Befehlsanalysator dafür ausgelegt, die mehreren Hardware-Decodierblöcke zu deaktivieren, wenn der an dem Befehlsanalysator empfangene Videostrom ein decodierter Videostrom ist, so dass der Hardware-Nachbearbeitungsblock die Nachbearbeitungsoperation an dem decodierten Videostrom ausführt. In einer Ausführungsform umfasst der Hardware-Nachbearbeitungsblock ein Filter.In an embodiment contains the multi-standard hardware video decoder device Furthermore, a hardware post-processing block for executing a Post-processing operation on a decoded video stream. In a embodiment is the command analyzer for that designed to disable the multiple hardware decode blocks when the video stream received at the command analyzer receives a decoded video stream so that the hardware post-processing block is the post-processing operation on the decoded video stream. In one embodiment The hardware post-processing block includes a filter.

In einer weiteren Ausführungsform gibt die vorliegende Erfindung ein Verfahren zum Decodieren eines Videostromes an, wobei das Verfahren unter Verwendung einer Multistandard-Hardware-Videodecodervorrichtung implementiert wird. Es wird auf einen Videostrom zugegriffen. Ein Videostandard, der zum Codieren des Videostromes verwendet wurde, wird identifiziert. Eine Teilmenge von Hardware-Decodierblöcken aus mehreren Hardware-Decodierblöcken der Multistandard-Hardware-Videodecodervorrichtung, die zum Decodieren des Videostromes verwendet werden, wird festgelegt, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke zum Decodieren von Videoströmen dienen können, welche unter Verwendung verschiedener Videocodierstandards codiert wurden. Der Videostrom wird unter Verwendung der Teilmenge von Hardware-Decodierblöcken decodiert.In a further embodiment The present invention provides a method for decoding a Video stream, the method using a multi-standard hardware video decoder device is implemented. It is accessed on a video stream. One Video standard used to encode the video stream becomes identified. A subset of hardware decode blocks several hardware decode blocks the multi-standard hardware video decoder device, used to decode the video stream is set wherein different subsets of the plurality of hardware decoding blocks for Decode video streams can serve, which coded using different video coding standards. The video stream is decoded using the subset of hardware decode blocks.

In einer Ausführungsform weisen die mehreren Register ein Speicheroberflächen-Zeigerregister und ein Frameebenen-Parameterregister auf. In einer Ausführungsform enthält die Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung des Weiteren einen Hardware-Nachbearbeitungsblock zum Ausführen einer Nachbearbeitungsoperation an mindestens einem decodierten Videostrom.In an embodiment the multiple registers have a memory surface pointer register and Frame level parameter register. In one embodiment, the multi-stream, multi-standard hardware video decoder device includes Furthermore, a hardware post-processing block for executing a Post-processing operation on at least one decoded video stream.

In einer Ausführungsform weisen die mehreren Videoströme mindestens einen digitalen Standbildstrom und einen digitalen Filmstrom auf. In der vorliegenden Ausführungsform sind die Abschnitte der mehreren Videoströme Makroblöcke des digitalen Standbildstromes und des digitalen Filmstromes. In einer weiteren Ausführungsform umfassen die mehreren Videoströme mehrere digitale Filmströme. In der vorliegenden Ausführungsform sind die Abschnitte der mehreren Videoströme Makroblöcke der mehreren digitalen Filmströme.In an embodiment assign the multiple video streams at least one digital still image stream and one digital movie stream on. In the present embodiment For example, the portions of the multiple video streams are macroblocks of the digital still image stream and the digital movie stream. In a further embodiment include the multiple video streams several digital movie streams. In the present embodiment For example, the sections of the multiple video streams are macroblocks of the multiple digital ones Movie streams.

In einer weiteren Ausführungsform gibt die vorliegende Erfindung ein Verfahren zum Decodieren mehrerer Videoströme an, wobei das Verfahren unter Verwendung einer Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung implementiert wird. Es wird auf mehrere Videoströme zugegriffen. Videostandards, die zum Codieren des Videostromes verwendet wurden, werden identifiziert. Teilmengen von Hardware-Decodierblöcken aus mehreren Hardware-Decodierblöcken der Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung, die zum Decodieren des Videostromes verwendet werden, werden festgelegt, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke zum Decodieren von Videoströmen dienen können, welche unter Verwendung verschiedener Videocodierstandards codiert wurden. Die mehreren Videoströme werden unter Verwendung der Teilmenge von Hardware-Decodierblöcken decodiert. In einer Ausführungsform werden die mehreren Teilmengen von Hardware-Decodierblöcken aktiviert, so dass ein Hardware-Decodierblock, der nicht an der Decodierung der mehreren Videoströme beteiligt ist, nicht aktiviert wird.In a further embodiment For example, the present invention provides a method for decoding multiple video streams the method using a multi-stream multi-standard hardware video decoder device is implemented. It will access multiple video streams. Video standards, that were used to encode the video stream are identified. Subsets of hardware decode blocks several hardware decode blocks the multi-stream multi-standard hardware video decoder device, that are used to decode the video stream are set, wherein different subsets of the plurality of hardware decoding blocks for Decode video streams can serve, which encodes using various video coding standards were. The multiple video streams will be decoded using the subset of hardware decode blocks. In one embodiment the multiple subsets of hardware decode blocks are activated so that a hardware decode block, which is not involved in the decoding of the multiple video streams is not activated.

Allgemein ausgedrückt, offenbart dieses Schriftstück eine Multistandard-Hardware-Videodecodervorrichtung. Ein Befehlsanalysator greift auf einen Videostrom zu und identifiziert einen Videocodierstandard, der zum Codieren des Videostromes verwendet wurde. Mehrere Hardware-Decodierblöcke führen Operationen in Verbindung mit dem Decodieren des Videostromes aus, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke dem Decodieren von Videoströmen dienen, die unter Verwendung verschiedener Videocodierstandards codiert wurden.Generally expressed discloses this document a multi-standard hardware video decoder device. A command analyzer accesses a video stream and identifies a video coding standard used to encode the video stream has been. Several hardware decode blocks associate operations with the decoding of the video stream, with different subsets the multiple hardware decoding blocks the Decode video streams which encodes using various video coding standards were.

KURZE BESCHREIBUNG DER ZEICHNUNGENBRIEF DESCRIPTION OF THE DRAWINGS

Die vorliegende Erfindung wird beispielhaft und nicht zur Einschränkung in den Figuren der beiliegenden veranschaulicht, in denen gleiche Bezugzahlen ähnliche Elemente bezeichnen und in denen Folgendes dargestellt ist:The The present invention is given by way of example and not by way of limitation the figures of the accompanying illustrated in which like reference numerals similar Denote elements and in which:

1 veranschaulicht ein Übersichtsschaubild der Grundkomponenten eines Computersystems gemäß einer Ausführungsform der vorliegenden Erfindung. 1 FIG. 12 illustrates an overview diagram of the basic components of a computer system according to an embodiment of the present invention. FIG.

2A veranschaulicht ein Schaubild einer beispielhaften Hardware-Videodecoderkarte, die auf einer gedruckten Leiterplatte implementiert ist, gemäß einer Ausführungsform der vorliegenden Erfindung. 2A FIG. 12 illustrates a diagram of an exemplary hardware video decoder card implemented on a printed circuit board according to one embodiment of the present invention.

2B veranschaulicht ein Schaubild einer beispielhaften Architektur, die eine Multistandard-Hardware-Videodecodervorrichtung aufweist, gemäß einer Ausführungsform der vorliegenden Erfindung. 2 B FIG. 12 illustrates a diagram of an exemplary architecture having a multi-standard hardware video decoder device according to one embodiment of the present invention.

3 veranschaulicht ein Blockschaubild, das die internen Komponenten einer Multistandard-Hardware-Videodecodervorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. 3 FIG. 12 illustrates a block diagram showing the internal components of a multi-standard hardware video decoder apparatus according to an embodiment of the present invention.

4 veranschaulicht ein Blockschaubild, das interne Komponenten einer beispielhaften Multistandard-Hardware-Videodecodervorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. 4 FIG. 12 illustrates a block diagram showing internal components of an exemplary multi-standard hardware video decoder apparatus according to an embodiment of the present invention.

5 veranschaulicht ein Flussdiagramm eines Verfahrens zum Decodieren eines Videostromes, wobei das Verfahren unter Verwendung einer Multistandard-Hardware-Videodecodervorrichtung implementiert wird, gemäß einer Ausführungsform der vorliegenden Erfindung. 5 FIG. 12 illustrates a flowchart of a method of decoding a video stream, the method being implemented using a multi-standard hardware video decoder apparatus, according to an embodiment of the present invention.

6 zeigt ein Schaubild, das die internen Komponenten der Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. 6 FIG. 12 is a diagram showing the internal components of the multi-stream multi-standard hardware video decoder apparatus according to an embodiment of the present invention.

7A und 7B zeigen Schaubilder, die beispielhafte ineinandergreifende Abschnitte mehrerer Videoströme gemäß Ausführungsformen der vorliegenden Erfindung zeigen. 7A and 7B FIG. 15 are diagrams showing example interleaved portions of multiple video streams in accordance with embodiments of the present invention.

8 veranschaulicht ein Flussdiagramm eines Verfahrens zum Decodieren mehrerer Videoströme, wobei das Verfahren unter Verwendung einer Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung gemäß einer Ausführungsform der vorliegenden Erfindung implementiert wird. 8th FIG. 12 illustrates a flowchart of a method for decoding multiple video streams, the method being implemented using a multi-stream, multi-standard hardware video decoder apparatus according to one embodiment of the present invention.

9 veranschaulicht ein Flussdiagramm eines Verfahrens zum Verarbeiten von außerhalb der Reihenfolge liegenden Makroblöcken eines Videostromes gemäß einer Ausführungsform der vorliegenden Erfindung. 9 FIG. 12 illustrates a flowchart of a method of processing out-of-order macroblocks of a video stream in accordance with an embodiment of the present invention.

10A und 10B veranschaulichen Schaubilder der beispielhaften Drehung von Makroblöcken von Frames gemäß Ausführungsformen der vorliegenden Erfindung. 10A and 10B 12 are diagrams illustrating exemplary rotation of macroblocks of frames in accordance with embodiments of the present invention.

11 veranschaulicht ein Flussdiagramm eines Verfahrens zum Drehen von Makroblöcken eines Frames gemäß einer Ausführungsform der vorliegenden Erfindung. 11 FIG. 12 illustrates a flowchart of a method for rotating macroblocks of a frame according to an embodiment of the present invention.

DETAILLIERTE BESCHREIBUNGDETAILED DESCRIPTION

Es wird nun ausführlich auf die bevorzugten Ausführungsformen der vorliegenden Erfindung eingegangen, wovon Beispiele in den begleitenden Zeichnungen veranschaulicht sind. Obgleich die Erfindung in Verbindung mit den bevorzugten Ausführungsformen beschrieben wird, versteht es sich, dass sie nicht die Erfindung auf diese Ausführungsformenbeschränken sollen. Im Gegenteil: Die Erfindung soll sich auch auf Alternativen, Modifikationen und Äquivalente erstrecken, die in den allgemeinen Gedanken und in dem Geltungsbereich der Erfindung, wie in den angehängten Ansprüchen definiert, enthalten sein können. Des Weiteren sind in der folgenden detaillierten Beschreibung von Ausführungsformen der vorliegenden Erfindung zahlreiche konkrete Details dargelegt, um ein gründliches Verstehen der vorliegenden Erfindung zu ermöglichen. Dem Durchschnittsfachmann leuchtet jedoch ein, dass die vorliegende Erfindung auch ohne diese konkreten Details praktiziert werden kann. In anderen Fällen wurden allseits bekannte Verfahren, Abläufe, Komponenten und Schaltkreise nicht ausführlich beschrieben, um Aspekte der Ausführungsformen der vorliegenden Erfindung nicht unnötig in den Hintergrund treten zu lassen.Reference will now be made in detail to the preferred embodiments of the present invention, examples of which are described in the accompanying drawings Drawings are illustrated. Although the invention will be described in conjunction with the preferred embodiments, it is to be understood that they are not intended to limit the invention to those embodiments. On the contrary, the invention is also intended to cover alternatives, modifications, and equivalents, which may be included within the general spirit and scope of the invention as defined in 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, one of ordinary skill in the art will appreciate that the present invention may be practiced without these specific details. In other instances, well-known methods, procedures, components, and circuits have not been described in detail so as not to unnecessarily obscure aspects of the embodiments of the present invention.

Bezeichnung und Nomenklatur:Name and nomenclature:

Einige Abschnitte der folgenden detaillierten Beschreibungen werden anhand von Abläufen, Schritten, Logikblöcken, Verarbeitungen und anderen symbolischen Darstellungen von Operationen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese Beschreibungen und Darstellungen sind die Mittel, die vom Fachmann auf dem Gebiet der Datenverarbeitung verwendet werden, um anderen Fachleuten den Wesensgehalt ihrer Arbeit zu übermitteln. Unter einem Ablauf, einem durch einen Computer ausgeführten Schritt, einem Logikblock, Prozess usw. verstehen wir hier, und allgemein, eine in sich geschlossene Abfolge von Schritten oder Befehlen, die zu einem gewünschten Ergebnis führen. Die Schritte sind jene, die physikalische Manipulationen von physikalischen Quantitäten erfordern. Üblicherweise, wenn auch nicht notwendigerweise, haben diese Quantitäten die Form von elektrischen oder magnetischen Signalen, die sich speichern, übertragen, kombinieren, vergleichen und auf sonstige Weise in einem Computersystem manipulieren lassen. Es hat sich gelegentlich als zweckmäßig erwiesen, hauptsächlich aus Gründen des einheitlichen Sprachgebrauchs, diese Signale als Bits, Werte, Elemente, Symbole, Zeichen, Terme, Zahlen oder dergleichen zu bezeichnen.Some Sections of the following detailed descriptions are presented of processes, steps, Logic blocks, Processions and other symbolic representations of operations represented on data bits within a computer memory. These Descriptions and representations are the means used by the professional used in the field of data processing to other professionals to communicate the essence of their work. Under a procedure, a computer-executed step, a logic block, Process, etc., we understand here, and generally, a self-contained Sequence of steps or commands leading to a desired Result. The steps are those that involve physical manipulations of physical quantities require. Usually, though not necessarily, these quantities have the Form of electrical or magnetic signals that store, transmit, combine, compare, and otherwise work in a computer system let manipulate. It has proven useful at times, mainly from establish common usage, these signals as bits, values, Designate elements, symbols, characters, terms, numbers or the like.

Es ist jedoch zu beachten, dass alle diese und ähnlichen Begriffe den entsprechenden physikalischen Quantitäten zuzuordnen sind und lediglich zweckmäßige Etiketten sind, die diesen Quantitäten beigegeben sind. Sofern nicht aus den folgenden Besprechungen hervorgeht, dass ausdrücklich etwas anderes angegeben ist, versteht es sich, dass im gesamten Verlauf der vorliegenden Erfindung Besprechungen, in denen Begriffe wie zum Beispiel "identifizieren" oder "zugreifen" oder "ausführen" oder "decodieren" oder "aktivieren" oder "deaktivieren" oder "bestimmen" oder "verarbeiten" oder "empfangen" oder "puffern" oder "ordnen" oder "weiterleiten" oder "analysieren" oder "ineinandergreifen" oder "drehen" oder "umpositionieren" oder "speichern" oder dergleichen verwendet werden, sich auf die Aktion und Prozesse einer Multistandard-Hardware-Videodecodervorrichtung (zum Beispiel einer Multistandard-Hardware-Videodecodervorrichtung 150 von 3), einer Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung (zum Beispiel einer Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung 600 von 6), einer Mikrocodemaschine (zum Beispiel einer Mikrocodemaschine 260 von 2B), einer Drehungsmaschine (zum Beispiel einer Drehungsmaschine 450 von 4) oder einer ähnlichen elektronischen Rechenvorrichtung beziehen, welche Daten, die innerhalb der Register und Speicher des Computersystems als physikalische (elektronische) Quantitäten dargestellt sind, in andere Daten manipuliert und transformiert, die in ähnlicher Weise innerhalb der Register und Speicher des Computersystems oder sonstiger anderer Informationsspeicher-, -übertragungs- oder -anzeigevorrichtungen als physikalische Quantitäten dargestellt werden.It should be noted, however, that all of these and similar terms are to be assigned to the corresponding physical quantities and are merely convenient labels attached to those quantities. Unless otherwise clear from the following discussions, it is to be understood that throughout the course of the present invention, there is a discussion in which terms such as "identify" or "access" or "execute" or "decode" or "activate" or "disable" or "determine" or "process" or "receive" or "buffer" or "arrange" or "forward" or "analyze" or "interlock" or "rotate" or "reposition" or "save "or the like, based on the action and processes of a multi-standard hardware video decoder device (for example, a multi-standard hardware video decoder device 150 from 3 ), a multi-stream multi-standard hardware video decoder device (for example, a multi-stream multi-standard hardware video decoder device 600 from 6 ), a microcode engine (for example, a microcode engine 260 from 2 B ), a rotary machine (for example, a rotary machine 450 from 4 ) or a similar electronic computing device which manipulates and transforms data represented within the registers and memories of the computer system as physical (electronic) quantities into other data, similarly within the registers and memories of the computer system or other other information storage -, Transfer or display devices are represented as physical quantities.

Computersystemplattform:Computer System Platform:

1 veranschaulicht ein beispielhaftes Computersystem 100, auf dem Ausführungsformen der vorliegenden Erfindung praktiziert werden können. Im Allgemeinen umfasst das Computersystem 100 einen Bus 110 zum Übermitteln von Informationen, einen Prozessor 101, der mit dem Bus 110 gekoppelt ist, zum Verarbeiten von Informationen und Befehlen, einen flüchtigen Speicher 102, der auch als Direktzugriffsspeicher (RAM) bezeichnet wird und mit dem Bus 110 gekoppelt ist, zum Speichern von Informationen und Befehlen für den Prozessor 101, und einen nichtflüchtigen Speicher 103, der im vorliegenden Text auch als ausschließlich lesbarer Speicher (ROM) bezeichnet wird und mit dem Bus 110 gekoppelt ist, zum Speichern von statischen Informationen und Befehlen für den Prozessor 101. 1 illustrates an exemplary computer system 100 on which embodiments of the present invention can be practiced. In general, the computer system includes 100 a bus 110 for conveying information, a processor 101 with the bus 110 coupled to process information and commands, a volatile memory 102 also referred to as Random Access Memory (RAM) and the bus 110 coupled to store information and instructions for the processor 101 , and a non-volatile memory 103 , which in the present text is also referred to as read-only memory (ROM) and by bus 110 coupled to store static information and instructions for the processor 101 ,

In einer Ausführungsform umfasst das Computersystem 100 eine optionale Datenspeichervorrichtung 104 wie zum Beispiel eine magnetische oder optische Platte und ein Plattenlaufwerk, das mit dem Bus 110 gekoppelt ist, zum Speichern von Informationen und Befehlen. In einer Ausführungsform umfasst das Computersystem 100 eine optionale Nutzer-Ausgabevorrichtung wie zum Beispiel eine Anzeigevorrichtung 105, die mit dem Bus 110 gekoppelt ist, zum Anzeigen von Informationen für den Computernutzer, eine optionale Nutzer-Eingabevorrichtung wie zum Beispiel eine alphanumerische Eingabevorrichtung 106, die alphanumerische und Funktionstasten hat und mit dem Bus 110 gekoppelt ist, zum Übermitteln von Informationen und Befehlsauswahlen an den Prozessor 101, und/oder eine optionale Nutzer-Eingabevorrichtung wie zum Beispiel eine Cursorsteuervorrichtung 107, die mit dem Bus 110 gekoppelt ist, zum Übermitteln von Nutzereingabeinformationen und Befehlsauswahlen an den Prozessor 101. Des Weiteren wird eine optionale Eingabe/Ausgabe(I/O)-Vorrichtung 108 verwendet, um das Computersystem 100 zum Beispiel mit einem Netzwerk zu verbinden.In one embodiment, the computer system includes 100 an optional data storage device 104 such as a magnetic or optical disk and a disk drive connected to the bus 110 coupled to store information and commands. In one embodiment, the computer system includes 100 an optional user output device such as a display device 105 by bus 110 for displaying information to the computer user, an optional user input device such as an alphanumeric input device 106 , the alphanumeric and functional tas and by bus 110 coupled to transmit information and command selections to the processor 101 , and / or an optional user input device such as a cursor control device 107 by bus 110 coupled to transmit user input information and command selections to the processor 101 , Furthermore, an optional input / output (I / O) device 108 used to the computer system 100 for example, to connect to a network.

In einer Ausführungsform umfasst das Computersystem 100 außerdem eine Multistandard-Hardware-Videodecodervorrichtung 150, im vorliegenden Text auch als eine Decodervorrichtung 150 bezeichnet, zum Decodieren eines Videostromes, der unter Verwendung eines von mehreren Videocodierstandards codiert wurde. Die Decodervorrichtung 150 enthält mehrere Hardware-Decodierblöcke zum Ausführen von Decodieroperationen, die von den mehreren Videocodierstandards benötigt werden. Es versteht sich, dass die Decodervorrichtung 150 dafür konfiguriert sein kann, Videos gemäß jeder beliebigen Kombination von Videocodierstandards zu decodieren, einschließlich digitaler Standbilder und digitaler Filme. Zum Beispiel kann die Decodervorrichtung 150 dafür konfiguriert sein, Videos zu decodieren, die unter Verwendung eines der folgenden Formate codiert wurde: JPEG, MPEG-4, H.263, H.263+, H.264 und Windows Media (WMV9/VC-1).In one embodiment, the computer system includes 100 also a multi-standard hardware video decoder device 150 , also referred to herein as a decoder device 150 for decoding a video stream encoded using one of a plurality of video encoding standards. The decoder device 150 includes a plurality of hardware decode blocks for performing decode operations required by the multiple video encoding standards. It is understood that the decoder device 150 may be configured to decode videos according to any combination of video encoding standards, including digital still images and digital films. For example, the decoder device 150 be configured to decode video encoded using any of the following formats: JPEG, MPEG-4, H.263, H.263 +, H.264, and Windows Media (WMV9 / VC-1).

Es versteht sich, dass die Decodervorrichtung 150 implementiert sein kann als: eine diskrete Komponente, eine diskrete Grafikkarte, die dafür ausgelegt ist, über einen Verbinder (zum Beispiel AGP-Schlitz, PCI-Express- Schlitz usw.) mit dem Computersystem 100 verbunden zu werden, ein diskreter integrierter Schaltkreis-Chip (der zum Beispiel direkt auf der Hauptplatine sitzt), oder als eine integrierte Decodervorrichtung, die in dem integrierten Schaltkreis-Chip einer Chipsatzkomponente eines Computersystems enthalten ist. Außerdem kann ein lokaler Grafikspeicher für die Decodervorrichtung 150 zur Datenspeicherung enthalten sein.It is understood that the decoder device 150 may be implemented as: a discrete component, a discrete graphics card designed to interface with the computer system via a connector (eg, AGP slot, PCI Express slot, etc.) 100 a discrete integrated circuit chip (sitting, for example, directly on the motherboard), or as an integrated decoder device included in the integrated circuit chip of a chipset component of a computer system. In addition, a local graphics memory for the decoder device 150 be included for data storage.

2A veranschaulicht ein Schaubild einer beispielhaften Hardware-Videodecoderkarte 200, die auf einer gedruckten Leiterplatte implementiert ist, gemäß einer Ausführungsform der vorliegenden Erfindung. Die Hardware-Videodecoderkarte 200 enthält eine gedruckte Leiterplatte (PCB) 210, einen integrierten Schaltkreis(IC)-Chip 220, eine Datenleitung 225 und einen Verbinder 230. Der IC-Chip 220 enthält eine Multistandard-Hardware-Videodecodervorrichtung 150. Der Verbinder 230 ist dafür konfiguriert, mit einem Computersystem (zum Beispiel dem Computersystem 100 von 1) über einen Verbinder des Computersystems (zum Beispiel AGP-Schlitz, PCI-Express-Schlitz usw.) verbunden zu werden. Die Datenleitung 225 dient zum Übermitteln von Daten (zum Beispiel eines Bitstromes) zwischen dem Computersystem und dem IC-Chip 220. 2A FIG. 12 illustrates a diagram of an exemplary hardware video decoder card. FIG 200 implemented on a printed circuit board according to an embodiment of the present invention. The hardware video decoder card 200 contains a printed circuit board (PCB) 210 , an integrated circuit (IC) chip 220 , a data line 225 and a connector 230 , The IC chip 220 includes a multi-standard hardware video decoder device 150 , The connector 230 is configured with a computer system (for example, the computer system 100 from 1 ) via a connector of the computer system (for example, AGP slot, PCI Express slot, etc.). The data line 225 is used to transfer data (for example, a bit stream) between the computer system and the IC chip 220 ,

2B veranschaulicht ein Schaubild einer beispielhaften Architektur 250, die eine Multistandard-Hardware-Videodecodervorrichtung 150 enthält, gemäß einer Ausführungsform der vorliegenden Erfindung. Die Architektur 250 enthält eine Mikrocodemaschine 260, eine Multistandard-Hardware-Videodecodervorrichtung 150 und einen Speicher 270. In einer Ausführungsform steuert die Mikrocodemaschine 260 den Betrieb der Multistandard-Hardware-Videodecodervorrichtung 150. Die Mikrocodemaschine 260 enthält Operationen, welche die Multistandard-Hardware-Videodecodervorrichtung 150 ausführen muss, wobei sie als eine Übersetzungsschicht zwischen dem Maschinenbefehl und der Hardware-Decodervorrichtung 150 fungiert. In einer Ausführungsform erfolgen die Bitstromanalyse und die längenvariable Decodierung (VLD) in der Mikrocodemaschine 260. Der Speicher 270 wird von der Decodervorrichtung 150 zum Ausführen von Decodierungs- und Nachbearbeitungsoperationen an empfangenen Videoströmen verwendet. Eine Ausführungsform des Betriebes des Speichers 270 ist anhand des Speichers 330 von 3 beschrieben. 2 B illustrates a diagram of an example architecture 250 , which is a multi-standard hardware video decoder device 150 contains, according to an embodiment of the present invention. Architecture 250 contains a microcode engine 260 , a multi-standard hardware video decoder device 150 and a memory 270 , In one embodiment, the microcode engine controls 260 the operation of the multi-standard hardware video decoder device 150 , The microcode engine 260 contains operations that the multistandard hardware video decoder device 150 acting as a translation layer between the machine instruction and the hardware decoder device 150 acts. In one embodiment, bit stream analysis and variable length decoding (VLD) are done in the microcode engine 260 , The memory 270 is from the decoder device 150 used to perform decoding and post processing operations on received video streams. An embodiment of the operation of the memory 270 is based on the memory 330 from 3 described.

Wenden wir uns 2B zu. In einer Ausführungsform ermöglicht die vorliegende Erfindung ein Umordnen von Makroblöcken in der Mikrocodemaschine 260. Wie unten beschrieben wird, unterstützt die Decodervorrichtung 150 verschiedene Nachbearbeitungsoperationen, wie zum Beispiel eine schleifeninterne Blockbeseitigung (zum Beispiel in einem schleifeninternen Blockfilter 440) und eine schleifenexterne Blockbeseitigung und/oder ein Deringing (zum Beispiel in einem schleifenexternen Filter 442). In verschiedenen Ausführungsformen erfordert die schleifeninterne Blockbeseitigung, dass die Makroblöcke in dem schleifeninternen Blockfilter in der Rasterabtastreihenfolge empfangen werden. Jedoch unterstützen bestimmte Videostandards, wie zum Beispiel H.264, das Senden und den Empfang von Makroblöcken auch in einer Nicht-Rasterabtastreihenfolge. Dementsprechend ermöglicht die vorliegende Erfindung ein Ordnen der Makroblöcke in der Rasterabtastreihenfolge, um die schleifeninterne Blockbeseitigung für Videostandards zu unterstützen, die ein Senden und Empfangen von Makroblöcken in Nicht-Rasterabtastreihenfolge unterstützen.Let us turn 2 B to. In one embodiment, the present invention allows rearrangement of macroblocks in the microcode engine 260 , As will be described below, the decoder device assists 150 various post-processing operations, such as loop-internal block elimination (for example, in an in-loop block filter 440 ) and an off-loop removal and / or a dering (for example, in an out-of-loop filter 442 ). In various embodiments, in-loop cancellation requires that the macroblocks in the loop-internal block filter be received in the raster scan order. However, certain video standards, such as H.264, also support the transmission and reception of macroblocks in a non-raster scanning order. Accordingly, the present invention enables ordering of the macroblocks in the raster scan order to support in-frame block elimination for video standards that support non-raster scan order transmission and reception of macroblocks.

In einer Ausführungsform werden Vorbearbeitungsoperationen in der Mikrocodemaschine 260 ausgeführt. In einer Ausführungsform erfolgen die Bitstromanalyse und die längenvariable Decodierung (VLD) in der Mikrocodemaschine 260. Die Mikrocodemaschine 260 ist dafür konfiguriert, die Makroblöcke zu ordnen, bevor sie an die Hardware-Decodervorrichtung 150 gesendet werden. Die Mikrocodemaschine 260 puffert einen einzelnen Frame aus komprimierten Daten. In einer Ausführungsform puffert die Mikrocodemaschine 260 einen einzelnen Frame aus lauflängencodierten komprimierten Daten. In einer Ausführungsform analysiert die Mikrocodemaschine 260 den ankommenden Bitstrom und führt dann die VLD aus. Wenn die Mikrocodemaschine 260 außerhalb der Reihenfolge liegende Makroblöcke detektiert, so puffert sie die Daten und wartet, bis alle Makroblöcke empfangen wurden. Die Mikrocodemaschine 260 ordnet dann die Makroblöcke in der Rasterabtastreihenfolge und sendet sie an die Hardware-Decodervorrichtung 150.In one embodiment, pre-processing operations in the microcode engine become 260 executed. In one embodiment, bit stream analysis and variable length decoding (VLD) are done in the microcode engine 260 , The microcode engine 260 is configured to order the macroblocks before going to the hardware decoder device 150 be sent. The microcodema machine 260 buffers a single frame of compressed data. In one embodiment, the microcode engine buffers 260 a single frame of run length encoded compressed data. In one embodiment, the microcode engine analyzes 260 the incoming bitstream and then execute the VLD. If the microcode machine 260 detected out of sequence macroblocks, it buffers the data and waits until all macroblocks have been received. The microcode engine 260 then arranges the macroblocks in raster scan order and sends them to the hardware decoder device 150 ,

Durch Puffern der Makroblöcke, während sich die Makroblöcke immer noch in komprimierten Daten befinden, braucht die Mikrocodemaschine 260 lediglich maximal einen einzelnen Frame aus lauflängencodierten komprimierten Daten zu Puffern, was bedeutend weniger ist als die decodierten Videodaten. Des Weiteren spart das Puffern der komprimierten Makroblöcke Strom. Videoströme, die durch die Luft empfangen werden, unterliegen ebenfalls vielen Fehlern. Das Teilen der Bitstromanalyse zu der Mikrocodemaschine 260 hat außerdem den Vorteil, dass die Wiederherstellung nach einem Fehler verbessert wird.By buffering the macroblocks while the macroblocks are still in compressed data, the microcode engine needs 260 buffering at most only a single frame of run length encoded compressed data, which is significantly less than the decoded video data. Furthermore, buffering the compressed macroblocks saves power. Video streams received through the air are also subject to many errors. Splitting the bit stream analysis to the microcode engine 260 also has the advantage of improving the recovery from an error.

Architektur einer Multistandard-Hardware-VideodecodervorrichtungArchitecture of a multi-standard hardware video decoder device

3 zeigt ein Schaubild, das die internen Komponenten der Multistandard-Hardware-Videodecodervorrichtung 150 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Wie in 3 veranschaulicht, enthält die Decodervorrichtung 150 einen Befehlsanalysator 305, mehrere Hardware-Decodierblöcke 310 bis 318, einen Hardware-Nachbearbeitungsblock 320 und einen Speicher 330. Die Decodervorrichtung 150 ist dafür ausgelegt, mehrere Videocodierstandards zu decodieren. 3 Figure 12 is a diagram showing the internal components of the multi-standard hardware video decoder apparatus 150 according to an embodiment of the present invention. As in 3 illustrates the decoder device 150 a command analyzer 305 , several hardware decode blocks 310 to 318 , a hardware post-processing block 320 and a memory 330 , The decoder device 150 is designed to decode multiple video coding standards.

Der Befehlsanalysator 305 dient zum Zugreifen auf einen Videostrom 302 (zum Beispiel einen Bitstrom). Der Videostrom 302 ist ein komprimierter Videostrom, der gemäß einem von mehreren Videocodierstandards codiert wurde. Es versteht sich, dass der Videostrom 302 digitale Standbilddaten (zum Beispiel JPEG-codiert) oder digitale Filmdaten (zum Beispiel MPEG-4) enthalten kann. In einer Ausführungsform wird der Videostrom 302 von einer Mikrocodemaschine (zum Beispiel der Mikrocodemaschine 260 von 2B) kommend empfangen. Der Befehlsanalysator 305 identifiziert einen Videocodierstandard, der zum Codieren des Videostromes 302 verwendet wurde. In einer Ausführungsform werden die Bitstromanalyse und die längenvariable Decodierung (VLD) ausführt, bevor der Befehlsanalysator 305 auf den Videostrom 302 zugreift. Die Bitstromanalyse und die VLD können durch die Host-CPU (zum Beispiel den Prozessor 101 von 1) oder eine Mikrocodemaschine (zum Beispiel die Mikrocodemaschine 260 von 2B) ausgeführt werden. Der Befehlsanalysator 305 steuert außerdem mittels Steuern der Taktzyklen die Bewegung von Daten durch die Decodervorrichtung 150 hindurch.The command analyzer 305 serves to access a video stream 302 (for example, a bitstream). The video stream 302 is a compressed video stream coded according to one of several video coding standards. It is understood that the video stream 302 digital still image data (for example, JPEG encoded) or digital movie data (for example, MPEG-4). In one embodiment, the video stream is 302 from a microcode engine (for example the microcode engine 260 from 2 B ) received. The command analyzer 305 identifies a video coding standard used to encode the video stream 302 has been used. In one embodiment, bit stream analysis and variable length decoding (VLD) are performed before the instruction analyzer 305 on the video stream 302 accesses. Bit stream analysis and VLD can be performed by the host CPU (for example, the processor 101 from 1 ) or a microcode engine (for example, the microcode engine 260 from 2 B ). The command analyzer 305 Also, by controlling the clock cycles, controls the movement of data through the decoder device 150 therethrough.

Die mehreren Hardware-Decodierblöcke 310 bis 318 dienen zum Ausführen von Operationen in Verbindung mit dem Decodieren des Videostromes. Es versteht sich, dass die Hardware-Decodierblöcke 310 bis 318 für verschiedene Decodierfunktionen stehen, die benötigt werden, um Videoströme gemäß den Videostandards zu decodieren, die innerhalb des Videodecoders 150 implementiert sind. Videocodierstandards, wie zum Beispiel MPEG-4, erfordern die Ausführung bestimmter Operationen zum Decodieren eines Videostromes, so dass alle MPEG-4-Decoder in der Lage sind, MPEG-4-Videoströme zu decodieren. Es versteht sich, dass die Operationen, die benötigt werden, um ein Decodieren gemäß verschiedenen Standards ausführen zu können, dem Fachmann bestens bekannt sind.The multiple hardware decode blocks 310 to 318 are used to perform operations in connection with decoding the video stream. It is understood that the hardware decoding blocks 310 to 318 for various decode functions needed to decode video streams according to the video standards that are within the video decoder 150 are implemented. Video encoding standards, such as MPEG-4, require the execution of certain operations to decode a video stream so that all MPEG-4 decoders are capable of decoding MPEG-4 video streams. It is understood that the operations required to perform decoding according to various standards are well known to those skilled in the art.

In einer Ausführungsform sind die Hardware-Decodierblöcke der Decodervorrichtung 150 dafür konfiguriert, Operationen auf der Makroblockebene auszuführen (zum Beispiel 8 × 8 Pixel-Makroblock). Es versteht sich jedoch, dass die Decodervorrichtung 150 auch Hardware-Decodierblöcke enthalten kann, die Operationen auf anderen Dimensionsebenen, wie zum Beispiel den Frameebenen, ausführen.In one embodiment, the hardware decode blocks are the decoder device 150 configured to perform operations on the macroblock level (for example, 8x8 pixel macroblock). It is understood, however, that the decoder device 150 also may include hardware decode blocks that perform operations on other dimension planes, such as the frame planes.

Verschiedene Teilmengen von Hardware-Decodierblöcken 310 bis 318 dienen dem Decodieren von Videoströmen, die unter Verwendung verschiedener Videocodierstandards codiert wurden. Zum Beispiel erfordert ein erster beispielhafter Videostandard die Verwendung von Hardware-Decodierblöcken 312 und 316 beim Decodieren eines Videostromes. Ein zweiter beispielhafter Videostandard erfordert die Verwendung von Hardware-Decodierblöcken 310, 312, 314 und 318 beim Decodieren eines Videostromes. Dementsprechend werden in verschiedenen Ausführungsformen der vorliegenden Erfindung nur jene Hardware-Decodierblöcke, die zum Decodieren eines Videostromes erforderlich sind, beim Decodieren eines Videostromes, der unter Verwendung des identifizierten Videostandard codiert wurde, verwendet.Different subsets of hardware decode blocks 310 to 318 are used to decode video streams encoded using different video coding standards. For example, a first exemplary video standard requires the use of hardware decode blocks 312 and 316 when decoding a video stream. A second exemplary video standard requires the use of hardware decode blocks 310 . 312 . 314 and 318 when decoding a video stream. Accordingly, in various embodiments of the present invention, only those hardware decode blocks required to decode a video stream are used in decoding a video stream encoded using the identified video standard.

In einer Ausführungsform ist der Befehlsanalysator 305 dafür ausgelegt, nur jene Hardware-Decodierblöcke zu aktivieren, die für das Decodieren eines empfangenen Videostromes benötigt werden, so dass ein Hardware-Decodierblock, der nicht an der Decodierung des Videostromes beteiligt ist, nicht aktiviert wird. Zum Beispiel wird eine erste Teilmenge von Hardware-Decodierblöcken (zum Beispiel die Hardware-Decodierblöcke 312 und 316), die zum Decodieren eines ersten identifizierten Videocodierstandards verwendet werden, aktiviert, so dass Hardware-Decodierblöcke (zum Beispiel die Hardware-Decodierblöcke 310, 314 und 318), die nicht an der Decodierung des Videostromes beteiligt sind, nicht aktiviert werden. In einem weiteren Beispiel wird eine zweite Teilmenge von Decodierblöcken (zum Beispiel die Hardware-Decodierblöcke 310, 312, 314 und 318), die zum Decodieren eines zweiten identifizierten Videocodierstandards verwendet werden, aktiviert, so dass ein Hardware-Decodierblock (zum Beispiel der Hardware-Decodierblock 316), der nicht an der Decodierung des Videostromes beteiligt ist, nicht aktiviert wird. In einer Ausführungsform ist der Befehlsanalysator 305 die einzige Komponente der Decodervorrichtung 150, die aktiv ist. Die Hardware-Decodierblöcke werden nach Bedarf gemäß dem identifizierten Videostandard und Datenfluss aktiviert.In one embodiment, the command analyzer is 305 designed to activate only those hardware decoding blocks needed for decoding a received video stream, so that a hardware decoding block not involved in the decoding of the video stream is not activated. For example, a first subset of hardware decode blocks (for example, the Hardware decoding blocks 312 and 316 ) used to decode a first identified video coding standard is activated so that hardware decoding blocks (for example the hardware decoding blocks 310 . 314 and 318 ), which are not involved in the decoding of the video stream, are not activated. In another example, a second subset of decode blocks (eg, the hardware decode blocks 310 . 312 . 314 and 318 ) used to decode a second identified video coding standard is activated so that a hardware decoding block (for example the hardware decoding block 316 ), which is not involved in the decoding of the video stream, is not activated. In one embodiment, the command analyzer is 305 the only component of the decoder device 150 that is active. The hardware decode blocks are activated as needed in accordance with the identified video standard and data flow.

In einer Ausführungsform sind die Hardware-Decodierblöcke der Decodervorrichtung 150 innerhalb einer mehrstufigen Makroblockebenen-Pipeline implementiert. Wie in 3 gezeigt, ist die Decodervorrichtung 150 als eine dreistufige Makroblockebenen-Pipeline implementiert, mit einer Pipeline-Stufe 1, welch die Hardware-Decodierblöcke 310 und 312 enthält, und einer Pipeline-Stufe 2, welche die Hardware-Decodierblöcke 314, 316 und 318 enthält. In einer Ausführungsform leitet der Befehlsanalysator 305 den Makroblock des Videostromes 302 in die Hardware-Decodierblöcke der Pipeline-Stufe 1. In einer Ausführungsform können mehrere Makroblöcke in der Pipeline-Stufe 1 resident sein, während die Pipeline-Stufen 2 und 3 auf nur einen einzigen residenten Makroblock beschränkt sind. In einer Ausführungsform befinden sich die Hardware-Decodierblöcke 312, 316 und 318 in einem Restdatenpfad, und die Hardware-Decodierblöcke 310 und 314 befinden sich in einem Prädiktionsdatenpfad (prediction data path). In einer Ausführungsform verarbeitet der Restdatenpfad die Fehler- oder Differenzdaten, und der Prädiktionspfad greift auf die Daten zu, die zu dem vorherigen Frame oder Makroblock gehören.In one embodiment, the hardware decode blocks are the decoder device 150 implemented within a multi-level macroblock level pipeline. As in 3 shown is the decoder device 150 implemented as a three-stage macroblock level pipeline, with a pipeline stage 1, which are the hardware decode blocks 310 and 312 contains, and a pipeline stage 2, which the hardware decoding blocks 314 . 316 and 318 contains. In one embodiment, the command analyzer directs 305 the macroblock of the video stream 302 in the hardware decode blocks of pipeline stage 1. In one embodiment, multiple macroblocks in pipeline stage 1 may be resident, while pipeline stages 2 and 3 are limited to only a single resident macroblock. In one embodiment, the hardware decode blocks are located 312 . 316 and 318 in a residual data path, and the hardware decode blocks 310 and 314 are in a prediction data path. In one embodiment, the residual data path processes the error or difference data, and the prediction path accesses the data associated with the previous frame or macroblock.

In einer Ausführungsform ist der Befehlsanalysator 305 dafür ausgelegt, Hardware-Decodierblöcke innerhalb einer Stufe der mehrstufigen Makroblockebenen-Pipeline zu deaktivieren, wenn keine Daten des Videostromes an der Stufe empfangen werden. Zum Beispiel werden beim Decodieren des Videostromes 302 alle Hardware-Decodierblöcke der Pipeline-Stufe 1 deaktiviert, wenn die letzten Daten für den Videostrom 302 die Pipeline-Stufe 1 verlassen und keine Daten an der Pipeline-Stufe 1 empfangen werden. Somit wird eine zusätzliche Stromeinsparung durch Deaktivieren aller Hardware-Decodierblöcke einer Pipeline-Stufe erreicht, selbst jener Hardware-Decodierblöcke, die für den Videostandard erforderlich sind, der dem Videostrom 302 zugeordnet ist.In one embodiment, the command analyzer is 305 configured to disable hardware decode blocks within a stage of the multilevel macroblock layer pipeline when data of the video stream is not received at the stage. For example, when decoding the video stream 302 all pipeline stage 1 hardware decode blocks are disabled when the last data for the video stream 302 leave the pipeline stage 1 and no data is received at the pipeline stage 1. Thus, additional power savings are achieved by disabling all hardware pipelined hardware decode blocks, even those hardware decode blocks required by the video standard, that of the video stream 302 assigned.

In einer Ausführungsform geht der Videostrom 302 weder in den Speicher 330 hinein noch aus dem Speicher 330 heraus, bis er vollständig decodiert ist. Es versteht sich, dass der Speicher 330 eine externe Speichereinheit (zum Beispiel ein flüchtiger Speicher 102 oder ein nichtflüchtiger Speicher 103 von 1) oder eine eingebettete Speichereinheit der Decodervorrichtung 150 sein kann. Indem erst dann auf den Speicher 330 zugegriffen wird, wenn der Videostrom 302 vollständig decodiert ist, verbraucht die Decodervorrichtung 150 weniger Strom.In one embodiment, the video stream goes 302 neither in the store 330 into it still from the memory 330 until it is completely decoded. It is understood that the memory 330 an external storage device (for example, a volatile memory 102 or a nonvolatile memory 103 from 1 ) or an embedded memory unit of the decoder device 150 can be. Only then on the memory 330 is accessed when the video stream 302 is completely decoded consumes the decoder device 150 less electricity.

In einer Ausführungsform enthält die Decodervorrichtung 150 des Weiteren einen Hardware-Nachbearbeitungsblock 320 zum Ausführen einer Nachbearbeitungsoperation an einem decodierten Videostrom. In einer Ausführungsform enthält der Hardware-Nachbearbeitungsblock 320 einen Entblockungsfilter (deblocking filter). Es versteht sich, dass der Entblockungsfilter ein schleifeninterner Blockfilter oder ein schleifenexterner Entblockungs- und/oder Deringing-Filter sein kann. Der schleifeninterne Entblockungsfilter führt Blockbeseitigungsoperationen aus, bevor auf den Speicher 330 zugegriffen wird. Der schleifenexterne Entblockungs- und Deringing-Filter führt Blockbeseitigungs- und Deringing-Operationen an Daten aus, die aus dem Speicher 330 geholt wurden. Es versteht sich jedoch, dass der Hardware-Nachbearbeitungsblock 320 jede beliebige Art von Nachbearbeitungsoperation ausführen kann. Darüber hinaus kann eine beliebige Anzahl von Hardware-Nachbearbeitungsblöcken 320 vorhanden sein, um mehrere Nachbearbeitungsoperationen auszuführen.In one embodiment, the decoder device includes 150 Furthermore, a hardware post-processing block 320 to perform a post-processing operation on a decoded video stream. In one embodiment, the hardware post-processing block includes 320 a deblocking filter. It is understood that the deblocking filter may be an in-loop block filter or an off-filter deblocking and / or deringing filter. The in-loop deblocking filter performs block removal operations before going to memory 330 is accessed. The out-of-block deblocking and deringing filter performs block removal and dering operations on data from memory 330 were brought. It is understood, however, that the hardware post-processing block 320 can perform any type of post-processing operation. In addition, any number of hardware post-processing blocks 320 be present to perform multiple post-processing operations.

In einer Ausführungsform ist der Befehlsanalysator 305 dafür ausgelegt, alle Hardware-Decodierblöcke zu deaktivieren, wenn der Videostrom 302 ein decodierter Videostrom ist, so dass der Hardware-Nachbearbeitungsblock 320 eine Nachbearbeitungsoperation an dem decodierten Videostrom ausführt. Oder anders ausgedrückt: Die Decodervorrichtung 150 braucht auch nur als eine Hardware-Nachbearbeitungsvorrichtung verwendet zu werden. Wenn ein decodierter Videostrom an der Decodervorrichtung 150 empfangen wird, so werden alle Hardware-Decodierblöcke deaktiviert, und es wird eine Nachbearbeitungsoperation an dem decodierten Videostrom ausgeführt.In one embodiment, the command analyzer is 305 designed to disable all hardware decode blocks when the video stream 302 is a decoded video stream, so the hardware post-processing block 320 performs a post-processing operation on the decoded video stream. In other words: the decoder device 150 also needs to be used only as a hardware post-processing device. If a decoded video stream at the decoder device 150 is received, all hardware decode blocks are disabled and a post-processing operation is performed on the decoded video stream.

4 veranschaulicht ein Blockschaubild, das interne Komponenten einer beispielhaften Multistandard-Hardware-Videodecodervorrichtung 400 zeigt, die auch als Decodervorrichtung 400 bezeichnet wird, gemäß einer Ausführungsform der vorliegenden Erfindung. Die Decodervorrichtung 400 ist dafür konfiguriert, als ein JPEG-, MPEG-4-, H.263-, H.263+-, H.264- oder WMV9/VC-1-Decoder zu arbeiten. Dementsprechend enthält die Decodervorrichtung 400 Hardware-Decodierblöcke zum Ausführen aller Decodieroperationen, die zum Decodieren von Videoströmen erforderlich sind, die unter Verwendung des JPEG-, MPEG-4-, H.263-, H.263+-, H.264- oder WMV9/VC-1-Standards codiert wurden. Es versteht sich jedoch, dass die vorliegende Erfindung die Flexibilität besitzt, auch andere Videostandards zu unterstützen, und dass die vorliegende Erfindung nicht auf die in 4 beschriebene Ausführungsform zu beschränken ist. 4 Figure 12 illustrates a block diagram illustrating internal components of an exemplary multi-standard hardware video decoder device 400 which also acts as a decoder device 400 is designated according to an embodiment of the present invention. The decoder device 400 is configured to work as a JPEG, MPEG-4, H.263, H.263 +, H.264, or WMV9 / VC-1 decoder. Accordingly, the decoder device includes 400 Hardware decoding blocks for performing all decoding operations required to decode video streams using JPEG, MPEG-4, H.263, H.263 +, H.264 or WMV9 / VC-1 Standards were coded. It should be understood, however, that the present invention has the flexibility to support other video standards as well, and that the present invention is not limited to those disclosed in US Pat 4 described embodiment is limited.

Wie in 4 veranschaulicht, enthält die Decodervorrichtung 400 einen Befehlsanalysator 402, mehrere Hardware-Decodierblöcke, mehrere Hardware-Nachbearbeitungsblöcke und einen Speicher 460. Der Befehlsanalysator 402 dient zum Zugreifen auf einen Videostrom 401 (zum Beispiel einen Bitstrom). Es versteht sich, dass der Videostrom 401 digitale Standbilddaten (zum Beispiel JPEG-codiert) oder digitale Filmdaten (zum Beispiel MPEG-4) enthalten kann. In einer Ausführungsform wird der Videostrom 401 von einer Mikrocodemaschine (zum Beispiel der Mikrocodemaschine 260 von 2B) kommend empfangen. Der Videostrom 401 ist ein komprimierter Videostrom, der gemäß einem von mehreren Videocodierstandards codiert wurde. Der Befehlsanalysator 402 identifiziert einen Videocodierstandard, der zum Codieren des Videostromes 401 verwendet wurde. In einer Ausführungsform erfolgen die Bitstromanalyse und die längenvariable Decodierung (VLD), bevor der Befehlsanalysator 402 auf den Videostrom 401 zugreift. Die Bitstromanalyse und die VLD können durch die Host-CPU (zum Beispiel den Prozessor 101 von 1) oder eine Mikrocodemaschine ausgeführt werden. Es versteht sich, dass, wenn der Videostrom 401 unter Verwendung eines anderen Videostandards codiert wurde als dem, für dessen Decodierung die Decodervorrichtung 400 konfiguriert ist, keine Decodieroperationen ausgeführt werden. In einer Ausführungsform sendet der Befehlsanalysator 402 einen Hinweis an das Computersystem, der besagt, dass das Decodieren des Videostromes, der unter Verwendung eines nicht-unterstützten Standards codiert wurde, nicht ausgeführt werden kann.As in 4 illustrates the decoder device 400 a command analyzer 402 , multiple hardware decode blocks, multiple hardware post-processing blocks and a memory 460 , The command analyzer 402 serves to access a video stream 401 (for example, a bitstream). It is understood that the video stream 401 digital still image data (for example, JPEG encoded) or digital movie data (for example, MPEG-4). In one embodiment, the video stream is 401 from a microcode engine (for example the microcode engine 260 from 2 B ) received. The video stream 401 is a compressed video stream coded according to one of several video coding standards. The command analyzer 402 identifies a video coding standard used to encode the video stream 401 has been used. In one embodiment, bit stream analysis and variable length decoding (VLD) occur before the instruction analyzer 402 on the video stream 401 accesses. Bit stream analysis and VLD can be performed by the host CPU (for example, the processor 101 from 1 ) or a microcode engine. It is understood that when the video stream 401 was encoded using a different video standard than that for decoding the decoder device 400 is configured, no decoding operations are performed. In one embodiment, the command analyzer sends 402 an indication to the computer system stating that the decoding of the video stream encoded using an unsupported standard can not be performed.

Sobald der Videostandard, der zum Codieren des Videostromes 401 verwendet wurde, identifiziert ist, leitet der Befehlsanalysator 402 Makroblöcke des Videostromes 401 zu den entsprechenden Hardware-Decodierblöcken für den identifizierten Videostandard. In einer Ausführungsform aktiviert der Befehlsanalysator die entsprechenden Hardware-Decodierblöcke für den identifizierten Videostandard, so dass Hardware-Decodierblöcke, die für den identifizierten Videostandard nicht benötigt werden, deaktiviert werden. Der Befehlsanalysator 402 steuert außerdem mittels Steuern der Taktzyklen die Bewegung von Daten durch die Decodervorrichtung 400 hindurch. In einer Ausführungsform ist der Befehlsanalysator 402 die einzige Komponente der Decodervorrichtung 400, die aktiv ist. Hardware-Decodierblöcke werden nach Bedarf gemäß dem identifizierten Videostandard und Datenfluss aktiviert.Once the video standard used to encode the video stream 401 is used, the command analyzer forwards 402 Macro blocks of video stream 401 to the appropriate hardware decoding blocks for the identified video standard. In one embodiment, the command analyzer activates the appropriate hardware decoding blocks for the identified video standard so that hardware decoding blocks that are not needed for the identified video standard are disabled. The command analyzer 402 Also, by controlling the clock cycles, controls the movement of data through the decoder device 400 therethrough. In one embodiment, the command analyzer is 402 the only component of the decoder device 400 that is active. Hardware decode blocks are activated as needed in accordance with the identified video standard and data flow.

Die Hardware-Decodierblöcke der Decodervorrichtung 400 enthalten eine Intraprädiktionsmodusmaschine (Intra prediction mode engine, interne Modusprognostiziermaschine) 404, eine Bewegungsvektor(MV)-Prädiktionsmaschine (Bewegungsvektor(MV)-prediction engine) 406, eine Koeffizientenmaschine (zum Beispiel Lauflängen-(RD) oder Dequantisierungs-Maschine) 408, eine Wechselstrom/Gleichstrom(AC/DC)-Prädiktionsmaschine 410 (zum Beispiel Wechselstrom/Gleichstrom-Prädiktions- oder -dequantisierungs-Prädiktionsmaschine 410), eine Intraprädiktionsmaschine 414, eine Drehungsmaschine 415, eine Bewegungskompensationsmaschine 416, eine 4 × 4-Umkehrtransformationsmaschine 418, eine 8 × 8-Diskrete-Kosinus-Umkehrtransformations(IDCT)-Maschine 420, eine IDCT-Formatumwandlermaschine 422, einen Intraprädiktionspuffer 432, einen Prädiktionsabtastwert 434 und einen Restblock 436. Die Decodervorrichtung 400 enthält des Weiteren die Multiplexierer 405, 409, 417, 419, 439 und den Addierer 435. Die Decodervorrichtung 400 enthält außerdem optional Hardware-Nachbearbeitungsblöcke: einen schleifeninternen Blockfilter 440, einen schleifenexternen Filter 442 und eine Drehungsmaschine 450.The hardware decoding blocks of the decoder device 400 include an intra prediction mode engine (internal prediction mode engine) 404 a motion vector (MV) prediction engine (motion vector (MV) prediction engine) 406 , a coefficient machine (for example run-length (RD) or dequantization machine) 408 , an ac / dc (AC / DC) prediction engine 410 (For example, AC / DC prediction or dequantization prediction engine 410 ), an intraprediction engine 414 , a turning machine 415 , a motion compensation machine 416 , a 4 × 4 reverse transformation machine 418 , an 8x8 Discrete Cosine Inverse Transform (IDCT) engine 420 , an IDCT format converter engine 422 , an intra-prediction buffer 432 , a prediction sample 434 and a rest block 436 , The decoder device 400 further includes the multiplexer 405 . 409 . 417 . 419 . 439 and the adder 435 , The decoder device 400 Also includes optional hardware wrap-up blocks: an in-loop block filter 440 , an external filter 442 and a turning machine 450 ,

Die Decodervorrichtung 400 ist innerhalb einer dreistufigen Makroblockebenen-Pipeline implementiert, die einen Restpfad und einen Prädiktionspfad aufweist. In einer Ausführungsform können mehrere Makroblöcke in der Pipeline-Stufe 1 resident sein, während die Pipeline-Stufen 2 und 3 auf nur einen einzigen residenten Makroblock beschränkt sind. Der Restpfad enthält eine Koeffizientenmaschine 408, eine Wechselstrom/Gleichstrom-Prädiktionsmaschine 410, eine 4 × 4-Umkehrtransformationsmaschine 418, eine 8 × 8-IDCT-Maschine 420, eine IDCT-Formatwandlermaschine 422 und einen Restblock 436. Der Prädiktionspfad enthält eine Intraprädiktionsmodusmaschine (interne Modusprognostiziermaschine, Intra prediction mode engine) 404, eine MV-Prädiktionsmaschine 406, eine Intraprädiktionsmaschine (interne Prognostiziermaschine, Intra prediction engine) 414, eine Drehungsmaschine 415, eine Bewegungskompensationsmaschine 416, einen Intraprädiktionspuffer 432 und einen Prädiktionsabtastwert 434.The decoder device 400 is implemented within a three stage macroblock layer pipeline having a remainder path and a prediction path. In one embodiment, multiple macroblocks in pipeline stage 1 may be resident, while pipeline stages 2 and 3 are limited to only a single resident macroblock. The remainder path contains a coefficient engine 408 , an AC / DC prediction engine 410 , a 4 × 4 reverse transformation machine 418 , an 8x8 IDCT machine 420 , an IDCT format converter engine 422 and a rest block 436 , The prediction path includes an intra prediction mode engine (internal mode prediction engine, Intra prediction mode engine) 404 , an MV prediction engine 406 , an intra prediction engine (internal prediction engine, Intra prediction engine) 414 , a turning machine 415 , a motion compensation machine 416 , an intra-prediction buffer 432 and a prediction sample 434 ,

Wie oben beschrieben, ist die Decodervorrichtung 400 dafür ausgelegt, Videoströme gemäß dem JPEG-, MPEG-4-, H.263-, H.263+-, H.264- oder WMV9/VC-1-Standard zu decodieren. Die beschriebenen Hardware-Decodierblöcke führen alle Decodieroperationen aus, die gemäß den unterstützten Standards benötigt werden. Der Fachmann kennt und versteht die konkreten Operationen der Hardware-Decodierblöcke genau, da die Operationen in jedem der Standards beschrieben sind. Dementsprechend werden die konkreten Operationen der Hardware-Decodierblöcke im vorliegenden Text nicht ausführlich beschrieben.As described above, the decoder device is 400 designed to decode video streams according to the JPEG, MPEG-4, H.263, H.263 +, H.264 or WMV9 / VC-1 standard. The shouted Hardware decode blocks perform all decode operations required by the supported standards. The person skilled in the art knows and understands the concrete operations of the hardware decoding blocks precisely, since the operations are described in each of the standards. Accordingly, the concrete operations of the hardware decoding blocks will not be described in detail herein.

In einer Ausführungsform werden MV-Parameter und Intraprädiktionsparameter (Intra prediction parameter) an die MV-Prädiktionsmaschine 406 bzw. die Intraprädiktionsmodusmaschine 404 in dem Prädiktionspfad übermittelt. Diese Maschinen berechnen die tatsächlichen Bewegungsvektoren oder den Intraprädiktionsmodus auf der Basis des programmierten Videostandards und übermitteln sie an die Bewegungskompensationsmaschine 416 bzw. die Intraprädiktionsmaschine 414. Die Bewegungskompensationsmaschine 416 oder die Intraprädiktionsmaschine 414 berechnet die vorhergesagten Daten. In einer Ausführungsform enthält die Bewegungskompensationsmaschine 416 die Drehungsmaschine 415. Die Drehungsmaschine 415 dient zum Drehen eines Bezugsframes, um ihn auf einen ankommenden Videoframe auszurichten. Die Drehungsmaschine 415 wird immer aktiviert, wenn die Bewegungskompensationsmaschine beim Decodieren eines Videostromes verwendet wird. Des Weiteren werden die Fehlerdaten in der benötigten Teilmenge aus der Koeffizientenmaschine 408, der Wechselstrom/Gleichstrom-Prädiktionsmaschine 410, der 4 × 4-Umkehrtransformationsmaschine 418, der 8 × 8-IDCT-Maschine 420 und der IDCT-Formatwandlermaschine 422 verarbeitet.In one embodiment, MV parameters and intra prediction parameters are applied to the MV prediction engine 406 or the intra prediction mode machine 404 transmitted in the prediction path. These machines compute the actual motion vectors or the intra prediction mode based on the programmed video standard and transmit them to the motion compensation machine 416 or the intraprediction machine 414 , The motion compensation machine 416 or the intraprediction engine 414 calculates the predicted data. In one embodiment, the motion compensation engine includes 416 the turning machine 415 , The turning machine 415 Used to rotate a reference frame to align it with an incoming video frame. The turning machine 415 is always activated when the motion compensation engine is used in decoding a video stream. Furthermore, the error data in the required subset of the coefficient machine 408 , the AC / DC prediction engine 410 , the 4 × 4 reverse transformation machine 418 , the 8 × 8 IDCT machine 420 and the IDCT format converter engine 422 processed.

Die wiederhergestellten Fehlerdaten werden zu den vorhergesagten Daten addiert und werden dann an die Pipeline-Stufe 3 weitergeleitet. Die resultierenden Daten werden erforderlichenfalls weiterverarbeitet und werden zum Anzeigen in den Speicher 460 geschrieben. Der schleifeninterne Entblockungsfilter wird im H264- und im WMV9/VC-1-Modus verwendet. Im WMV9/VC-1-Modus wird der schleifeninterne Entblockungsfilter 440 verwendet, um den Überlappungsglättungsfilter zu implementieren. Der schleifenexterne Filter 442 kann für jeden Videostrom verwendet werden, um die Qualität des decodierten Bildes zu verbessern. In einer Ausführungsform arbeitet der schleifenexterne Filter 442 gleichzeitig mit dem Rest der Decodervorrichtung 400. Der schleifenexterne Filter 442 sollte ausgelöst werden, nachdem ein Frame in den Speicher 460 hinein decodiert wurde. Das decodierte Bild kann außerdem gedreht werden, bevor es in den Speicher 460 in der Pipeline-Stufe 3 an der Drehungsmaschine 450 geschrieben wird.The recovered error data is added to the predicted data and then forwarded to the pipeline stage 3. The resulting data is further processed if necessary and is put into memory for display 460 written. The in-loop deblock filter is used in H264 and WMV9 / VC-1 modes. In WMV9 / VC-1 mode, the in-loop deblock filter will be used 440 used to implement the overlap smoothing filter. The external filter 442 can be used for any video stream to improve the quality of the decoded picture. In one embodiment, the out-of-loop filter operates 442 simultaneously with the rest of the decoder device 400 , The external filter 442 should be fired after a frame in memory 460 was decoded into it. The decoded image can also be rotated before storing it in memory 460 in pipeline stage 3 on the turner 450 is written.

Beispielhafter Betrieb der Multistandard-Hardware-Videodecodervorrichtung für die unterstützten VideostandardsExemplary operation of Multistandard hardware video decoder device for the supported video standards

Die folgenden Ausführungsformen beschreiben den Betrieb der Decodervorrichtung 400 für jeden der unterstützten Videostandards:The following embodiments describe the operation of the decoder device 400 for each of the supported video standards:

JPEG: Die JPEG-Decodierung erfordert keine Hardware-Decodierblöcke des Prädiktionspfades, weil JPEG-Videoströme zum Erzeugen eines digitalen Standbildes dienen. Darum werden die Intraprädiktionsmodusmaschine 404, die MV-Prädiktionsmaschine 406, die Intraprädiktionsmaschine 414, die Drehungsmaschine 415, die Bewegungskompensationsmaschine 416, der Intraprädiktionspuffer 432 und der Prädiktionsabtastwert 434 alle für die JPEG-Decodierung deaktiviert. Außerdem erfordert die JPEG-Decodierung keine 4 × 4-Umkehrtransformationsmaschine 418, die somit deaktiviert wird. Der Befehlsanalysator 402 aktiviert die Koeffizientenmaschine 408, die Wechselstrom/Gleichstrom-Prädiktionsmaschine (AC/DC prediction engine) 410, die 8 × 8-IDCT-Maschine 420, die Dezimierungs-IDCT-Maschine 438, die IDCT-Formatwandlermaschine 422 und den Restblock 436. Der Befehlsanalysator 402 bestimmt die Route der Daten von dem Videostrom 401 durch die aktiven Hardware-Decodierblöcke hindurch zum Decodieren eines JPEG-codierten Videostromes. Es versteht sich, dass die durch die Hardware- Decodierblöcke ausgeführten Operationen und die Abfolge der Operationen durch den JPEG-Standard vorgegeben sind.JPEG: JPEG decoding does not require predecode path hardware decode blocks because JPEG video streams are used to create a digital still image. Therefore, the intra prediction mode machine becomes 404 , the MV prediction engine 406 , the intraprediction machine 414 , the turning machine 415 , the motion compensation machine 416 , the intra-prediction buffer 432 and the prediction sample 434 all disabled for JPEG decoding. In addition, JPEG decoding does not require a 4x4 reverse transformation machine 418 , which is thus deactivated. The command analyzer 402 activates the coefficient machine 408 , the AC / DC prediction engine (AC / DC prediction engine) 410 , the 8 × 8 IDCT machine 420 , the decimation IDCT engine 438 , the IDCT format converter engine 422 and the rest block 436 , The command analyzer 402 determines the route of the data from the video stream 401 through the active hardware decode blocks for decoding a JPEG encoded video stream. It is understood that the operations performed by the hardware decode blocks and the sequence of operations are given by the JPEG standard.

Die JPEG-Decodierung erfordert nur die Verwendung der 8 × 8-IDCT-Maschine 420 oder der Dezimierungs-IDCT-Maschine 438. In einer Ausführungsform ist der Befehlsanalysator 402 dafür ausgelegt festzustellen, welche der 8 × 8-IDCT-Maschine 420 und der Dezimierungs-IDCT-Maschine 438 für den Videostrom aktiviert ist. Die 8 × 8-IDCT-Maschine 420 wird für eine vollständige Decodierung des Videostromes aktiviert, während die Dezimierungs-IDCT-Maschine 438 aktiviert wird, wenn der Videostrom Dezimierung anzeigt. Die IDCT-Formatwandlermaschine 422 ist dafür ausgelegt, eine Formatumwandlung auszuführen. Zum Beispiel kann die IDCT-Formatwandlermaschine 422 eine Formatumwandlung zwischen jedem der folgenden Formate ausführen: YUV 4:4:4, YUV 4:2:2, YUV 4:2:2R und YUV 4:2:0. Es versteht sich, dass auch andere Formatumwandlungen ausgeführt werden können und dass die IDCT-Formatwandlermaschine 422 nicht auf die angeführten Formate beschränkt ist.JPEG decoding requires only the use of the 8x8 IDCT machine 420 or the decimation IDCT engine 438 , In one embodiment, the command analyzer is 402 designed to determine which of the 8 × 8 IDCT machine 420 and the decimation IDCT engine 438 is enabled for the video stream. The 8x8 IDCT machine 420 is activated for a complete decoding of the video stream while the decimation IDCT engine 438 is activated when the video stream indicates decimation. The IDCT format converter engine 422 is designed to perform a format conversion. For example, the IDCT format converter engine 422 Make a format conversion between any of the following formats: YUV 4: 4: 4, YUV 4: 2: 2, YUV 4: 2: 2R, and YUV 4: 2: 0. It is understood that other format conversions can be performed and that the IDCT format converter engine 422 is not limited to the listed formats.

Ein decodierter JPEG-Videostrom verlässt die Pipeline-Stufe 2. In einer Ausführungsform wird der decodierte JPEG-Videostrom im Speicher 330 gespeichert. In einer weiteren Ausführungsform werden vor dem Speichern im Speicher 330 Nachbearbeitungsoperationen an dem decodierten JPEG-Videostrom ausgeführt.A decoded JPEG video stream leaves the pipeline stage 2 , In one embodiment, the decoded JPEG video stream is stored in memory 330 saved. In another embodiment, before being stored in memory 330 Nachbear processing operations on the decoded JPEG video stream.

MPEG-4/H.263: Die MPEG-4- und die H.263-Decodierung sind einander für die Zwecke der Decodervorrichtung 400 sehr ähnlich. Genauer gesagt, erfordert der MPEG-4-Standard, dass MPEG-4-Decoder dafür ausgelegt sind, H.263-codierte Videoströme zu decodieren. Die MPEG-4- und die H.263-Decodierung erfordern keine Intraprädiktionsmodusmaschine (Intra prediction mode engine) 404, Intraprädiktionsmaschine (Intra prediction engine) 414, IDCT-Formatwandlermaschine 422 und 4 × 4-Umkehrtransformationsmaschine 418, die deaktiviert werden. Des Weiteren ist auch der schleifeninterne Entblockungsfilter 440 für die Nachbearbeitungsoperationen deaktiviert. Dementsprechend aktiviert der Befehlsanalysator die MV-Prädiktionsmaschine 406, die Koeffizientenmaschine 408, die Wechselstrom/Gleichstrom-Prädiktionsmaschine (AC/DC prediction engine) 410, die Drehungsmaschine 415, die Bewegungskompensationsmaschine 416, die 8 × 8-IDCT-Maschine 420, den Intraprädiktionspuffer 432, den Prädiktionsabtastwert 434 und den Restblock 436. Der Befehlsanalysator 402 bestimmt dien Route von Daten von dem Videostrom 401 durch die aktiven Hardware-Decodierblöcke hindurch zum Decodieren eines MPEG-4- oder H.263-codierten Videostromes. Es versteht sich, dass die Operationen, die durch die Hardware-Decodierblöcke ausgeführt werden, und die Abfolge der Operationen durch den MPEG-4- und den H.263-Standard vorgegeben sind.MPEG-4 / H.263: MPEG-4 and H.263 decoding are mutually exclusive for the purposes of the decoder device 400 very similar. More specifically, the MPEG-4 standard requires that MPEG-4 decoders be designed to decode H.263 encoded video streams. MPEG-4 and H.263 decoding do not require an intra prediction mode engine 404 , Intra prediction engine 414 , IDCT format converter 422 and 4 × 4 reverse transformation machine 418 which are disabled. Furthermore, the loop-internal deblocking filter is also available 440 disabled for postprocessing operations. Accordingly, the command analyzer activates the MV prediction engine 406 , the coefficient machine 408 , the AC / DC prediction engine (AC / DC prediction engine) 410 , the turning machine 415 , the motion compensation machine 416 , the 8 × 8 IDCT machine 420 , the intra-prediction buffer 432 , the prediction sample 434 and the rest block 436 , The command analyzer 402 determines the route of data from the video stream 401 through the active hardware decoder blocks for decoding an MPEG-4 or H.263 encoded video stream. It is understood that the operations performed by the hardware decode blocks and the sequence of operations are predetermined by the MPEG-4 and H.263 standards.

Der Befehlsanalysator 402 ist dafür ausgelegt, Makroblöcke zu den entsprechenden Restpfad- oder Prädiktionspfad-Hardware-Decodierblöcken zu lenken. In einer Ausführungsform können Intra-Frames (I-Frames) in der Koeffizientenmaschine 408 und der Wechselstrom/Gleichstrom-Prädiktionsmaschine 410 des Restpfades gleichzeitig mit Prädiktions-Frames (P-Frames) verarbeitet werden, die in der MV-Prädiktionsmaschine 406 innerhalb der Pipeline-Stufe 1 verarbeitet werden. Die I-Frames und P-Frames werden in der Pipeline-Stufe 2 synchronisiert. Der Befehlsanalysator 402 ist außerdem dafür ausgelegt, die entsprechenden Hardware-Decodierblöcke der 8 × 8-IDCT-Maschine 420 zu aktivieren.The command analyzer 402 is designed to direct macroblocks to the corresponding residual path or prediction path hardware decode blocks. In one embodiment, intra-frames (I-frames) may be used in the coefficient engine 408 and the AC / DC prediction engine 410 of the remainder path are processed simultaneously with prediction frames (P-frames) that are in the MV prediction engine 406 within pipeline stage 1. The I-frames and P-frames are synchronized in pipeline stage 2. The command analyzer 402 is also designed to accept the appropriate hardware decode blocks of the 8x8 IDCT machine 420 to activate.

Ein decodierter MPEG-4/H.263-Videostrom verlässt die Pipeline-Stufe 2. In einer Ausführungsform wird der decodierte MPEG-4/H.263-Videostrom im Speicher 330 gespeichert. In einer weiteren Ausführungsform werden Nachbearbeitungsoperationen an dem decodierten MPEG-4/H.263-Videostrom vor dem Speichern im Speicher 330 ausgeführt. In einer weiteren Ausführungsform werden in dem schleifenexternen Filter 442 Nachbearbeitungsoperationen an dem decodierten MPEG-4/H.263-Videostrom ausgeführt. In einer Ausführungsform ist der schleifenexterne Filter 442 ein Entblockungsfilter. In einer weiteren Ausführungsform ist der schleifenexterne Filter 442 ein Deringing-Filter. In einer weiteren Ausführungsform ist der schleifenexterne Filter 442 sowohl ein Entblockungsfilter als auch ein Deringing-Filter. Es versteht sich, dass der schleifenexterne Filter 442 als ein beliebiger Entblockungs- und/oder Deringing-Filter implementiert sein kann.A decoded MPEG-4 / H.263 video stream leaves the pipeline stage 2. In one embodiment, the decoded MPEG-4 / H.263 video stream is stored in memory 330 saved. In another embodiment, post-processing operations are performed on the decoded MPEG-4 / H.263 video stream prior to being stored in memory 330 executed. In another embodiment, in the out-of-loop filter 442 Post-processing operations on the decoded MPEG-4 / H.263 video stream. In one embodiment, the out-of-loop filter is 442 a deblocking filter. In another embodiment, the out-of-loop filter is 442 a deringing filter. In another embodiment, the out-of-loop filter is 442 both a deblocking filter and a deringing filter. It is understood that the out-of-loop filter 442 may be implemented as any deblocking and / or deringing filter.

H.263+: Die H.263+-Decodierung ähnelt der MPEG-4/H.263-Decodierung, wie oben beschrieben. H.263+ verschiebt einen Abschnitt der Decodieroperation in die VLD, die ausgeführt wird, bevor der Befehlsanalysator 402 auf den Videostrom 401 zugreift. Zusätzlich zum Nicht-Benötigen, und darum Deaktivieren, der Intraprädiktionsmodusmaschine (Intra prediction mode engine) 404, der Intraprädiktionsmaschine (Intra prediction engine) 414, der 4 × 4-Umkehrtransformationsmaschine 418 und des schleifenexternen Filters 442 deaktiviert der Befehlsanalysator 402 auch die Koeffizientenmaschine 408 und die Wechselstrom/Gleichstrom-Prädiktionsmaschine (AC/DC prediction engine) 410. Ansonsten ähnelt die H.263+-Decodierung der MPEG-4/H.263-Decodierung, wie oben beschrieben. Es versteht sich, dass die Operationen, die durch die Hardware-Decodierblöcke ausgeführt werden, und die Abfolge der Operationen durch den H.263+-Standard vorgegeben sind.H.263 +: H.263 + decoding is similar to MPEG-4 / H.263 decoding as described above. H.263 + shifts a portion of the decode operation into the VLD that is executed before the instruction analyzer 402 on the video stream 401 accesses. In addition to disabling, and therefore disabling, the Intra prediction mode engine 404 , the intra prediction engine 414 , the 4 × 4 reverse transformation machine 418 and the external filter 442 disables the command analyzer 402 also the coefficient machine 408 and the AC / DC prediction engine 410 , Otherwise, H.263 + decoding is similar to MPEG-4 / H.263 decoding as described above. It is understood that the operations performed by the hardware decode blocks and the sequence of operations are given by the H.263 + standard.

H.264: Die H.264-Decodierung erfordert nicht die Wechselstrom/Gleichstrom-Prädiktionsmaschine 410, die 8 × 8-IDCT-Maschine 420 und die IDCT-Formatwandlermaschine 422, die deaktiviert werden. Dementsprechend aktiviert der Befehlsanalysator 402 die Intraprädiktionsmodusmaschine (Intra prediction mode engine) 404, die MV-Prädiktionsmaschine 406, die Koeffizientenmaschine 408, die Intraprädiktionsmaschine (Intra prediction engine) 414, die Drehungsmaschine 415, die Bewegungskompensationsmaschine 416, die 4 × 4-Umkehrtransformationsmaschine 418, den Intraprädiktionspuffer 432, den Prädiktionsabtastwert 434 und den Restblock 436. Der Intraprädiktionspuffer 432 ist dafür ausgelegt, die oberste Zeile von Pixeln von dem vorherigen Makroblock zu speichern, so dass die Intraprädiktionsmaschine 414 auf die vorherigen "Nivellierungs"-Pixeln zugreifen kann, wenn die nächste Zeile von Makroblöcken verarbeitet wird. Der Befehlsanalysator 402 bestimmt die Route der Daten von dem Videostrom 401 durch die aktiven Hardware-Decodierblöcke hindurch zum Decodieren eines H.264-codierten Videostromes. Es versteht sich, dass die Operationen, die durch die Hardware-Decodierblöcke ausgeführt werden, und die Abfolge der Operationen durch den H.264-Standard vorgegeben sind.H.264: H.264 decoding does not require the AC / DC prediction engine 410 , the 8 × 8 IDCT machine 420 and the IDCT format converter engine 422 which are disabled. Accordingly, the command analyzer activates 402 the Intra prediction mode engine 404 , the MV prediction engine 406 , the coefficient machine 408 , the Intra Prediction Engine 414 , the turning machine 415 , the motion compensation machine 416 , the 4 × 4 reverse transformation machine 418 , the intra-prediction buffer 432 , the prediction sample 434 and the rest block 436 , The intraprediction buffer 432 is designed to store the top row of pixels from the previous macroblock, so that the intraprediction engine 414 can access the previous "leveling" pixels when the next line of macroblocks is processed. The command analyzer 402 determines the route of the data from the video stream 401 through the active hardware decode blocks for decoding an H.264 encoded video stream. It is understood that the operations performed by the hardware decode blocks and the sequence of operations are given by the H.264 standard.

Der Befehlsanalysator 402 ist dafür ausgelegt, Makroblöcke zu den entsprechenden Restpfad- oder Prädiktionspfad-Hardware-Decodierblöcken zu lenken. In einer Ausführungsform können Frames in dem Restpfad und dem Prädiktionspfad gleichzeitig innerhalb der Pipeline-Stufe 1 verarbeitet werden. Die Frames werden in der Pipeline-Stufe 2 synchronisiert.The command analyzer 402 is configured to provide macroblocks to the corresponding residual path or prediction path hardware decode blocks to steer. In one embodiment, frames in the remainder path and the prediction path may be processed concurrently within the pipeline stage 1. The frames are synchronized in pipeline stage 2.

Ein decodierter H.264-Videostrom verlässt die Pipeline-Stufe 2. In einer Ausführungsform werden schleifeninterne Nachbearbeitungsoperationen an dem decodierten H.264-Videostrom vor dem Speichern im Speicher 330 ausgeführt. In einer weiteren Ausführungsform werden schleifenexterne Nachbearbeitungsoperationen an dem decodierten H.264-Videostrom in dem schleifenexternen Filter 442 ausgeführt. Es versteht sich, dass der schleifenexterne Filter 442 als ein beliebiger Entblockungsfilter und/oder Deringing-Filter implementiert sein kann.A decoded H.264 video stream leaves the pipeline stage 2. In one embodiment, in-loop rework operations on the decoded H.264 video stream prior to storage are stored in memory 330 executed. In another embodiment, off-hook post-processing operations are performed on the decoded H.264 video stream in the off-loop filter 442 executed. It is understood that the out-of-loop filter 442 may be implemented as any deblocking filter and / or deringing filter.

WMV9/VC-1: Die WMV9/VC-1-Decodierung erfordert nicht die Intraprädiktionsmodusmaschine (Intra prediction mode engine) 404 und die Intraprädiktionsmaschine (Intra prediction engine) 414, die deaktiviert werden. Dementsprechend aktiviert der Befehlsanalysator 402 die MV-Prädiktionsmaschine 406, die Koeffizientenmaschine 408, die Wechselstrom/Gleichstrom-Prädiktionsmaschine (AC/DC prediction engine) 410, die Drehungsmaschine 415, die Bewegungskompensationsmaschine 416, die 4 × 4-Umkehrtransformationsmaschine 418, die 8 × 8-IDCT-Maschine 420, den Intraprädiktionspuffer 432, den Prädiktionsabtastwert 434 und den Restblock 436. Der Befehlsanalysator 402 bestimmt die Route der Daten von dem Videostrom 401 durch die aktiven Hardware-Decodierblöcke hindurch zum Decodieren eines WMV9/VC-1-codierten Videostromes. Es versteht sich, dass die Operationen, die durch die Hardware-Decodierblöcke ausgeführt werden, und die Abfolge der Operationen durch den WMV9/VC-1-Standard vorgegeben sind.WMV9 / VC-1: WMV9 / VC-1 decoding does not require intra prediction mode engine 404 and the intraprediction engine (intra prediction engine) 414 which are disabled. Accordingly, the command analyzer activates 402 the MV prediction engine 406 , the coefficient machine 408 , the AC / DC prediction engine (AC / DC prediction engine) 410 , the turning machine 415 , the motion compensation machine 416 , the 4 × 4 reverse transformation machine 418 , the 8 × 8 IDCT machine 420 , the intra-prediction buffer 432 , the prediction sample 434 and the rest block 436 , The command analyzer 402 determines the route of the data from the video stream 401 through the active hardware decode blocks for decoding a WMV9 / VC-1 encoded video stream. It is understood that the operations performed by the hardware decode blocks and the sequence of operations are predetermined by the WMV9 / VC-1 standard.

Der Befehlsanalysator 402 ist dafür ausgelegt, Makroblöcke zu den geeigneten Restpfad- oder Prädiktionspfad-Hardware-Decodierblöcken zu lenken. In einer Ausführungsform können Frames in dem Restpfad und dem Prädiktionspfad gleichzeitig innerhalb der Pipeline-Stufe 1 verarbeitet werden. Die Frames werden in der Pipeline-Stufe 2 synchronisiert.The command analyzer 402 is designed to direct macroblocks to the appropriate residual path or prediction path hardware decode blocks. In one embodiment, frames in the remainder path and the prediction path may be processed concurrently within the pipeline stage 1. The frames are synchronized in pipeline stage 2.

Ein decodierter WMV9/VC-1-Videostrom verlässt die Pipeline-Stufe 2. In einer Ausführungsform werden schleifeninterne Nachbearbeitungsoperationen an dem decodierten WMV9/C-1-Videostrom vor dem Speichern im Speicher 330 ausgeführt. In einer Ausführungsform wird der schleifeninterne Entblockungsfilter 440 zum Implementieren eines Überlappungsglättungsfilters verwendet. In einer weiteren Ausführungsform werden Nachbearbeitungsoperationen an dem decodierten WMV9/VC-1-Videostrom in dem schleifenexternen Filter 442 ausgeführt. Es versteht sich, dass der schleifenexterne Filter 442 als ein beliebiger Entblockungs- und/oder Deringing-Filter implementiert sein kann.A decoded WMV9 / VC-1 video stream leaves the pipeline stage 2. In one embodiment, in-loop rework operations on the decoded WMV9 / C-1 video stream are stored in memory prior to being stored 330 executed. In one embodiment, the in-loop deblocking filter becomes 440 used to implement an overlap smoothing filter. In another embodiment, post-processing operations on the decoded WMV9 / VC-1 video stream are in the off-loop filter 442 executed. It is understood that the out-of-loop filter 442 may be implemented as any deblocking and / or deringing filter.

Nachbearbeitungsoperationenfinishing operations

Die Pipeline-Stufe 3 der Decodervorrichtung 400 enthält drei Hardware-Nachbearbeitungsblöcke: den schleifeninternen Entblockungsfilter 440, den schleifenexternen Filter 442 und die Drehungsmaschine 450. Der schleifeninterne Entblockungsfilter 440 wird im H.264- und im WMV9A/C-1-Modus verwendet. In einer Ausführungsform wird im WMV9/VC-1-Modus der schleifeninterne Entblockungsfilter 440 zum Implementieren des Überlappungsglättungsfilters verwendet.The pipeline stage 3 of the decoder device 400 contains three hardware wrap-up blocks: the loop-internal deblocking filter 440 , the external filter 442 and the turning machine 450 , The loop-internal deblocking filter 440 is used in H.264 and WMV9A / C-1 mode. In one embodiment, in WMV9 / VC-1 mode, the in-loop deblocking filter becomes 440 used to implement the overlap smoothing filter.

Der schleifenexterne Filter 442 kann auf jeden Videostrom angewendet werden, um die Qualität des decodierten Bildes zu verbessern. In einer Ausführungsform arbeitet der schleifenexterne Filter 442 gleichzeitig mit dem Rest der Decodervorrichtung 400. Der schleifenexterne Filter 442 sollte ausgelöst werden, nachdem ein Frame in den Speicher 460 decodiert wurde.The external filter 442 can be applied to any video stream to improve the quality of the decoded picture. In one embodiment, the out-of-loop filter operates 442 simultaneously with the rest of the decoder device 400 , The external filter 442 should be fired after a frame in memory 460 was decoded.

Es versteht sich, dass ein beliebiger Entblockungs- und/oder Deringing-Filter für den schleifenexternen Filter 442 verwendet werden kann. Zum Beispiel nimmt die Internationale Organisation für Normung (ISO), die Organisation für die Beaufsichtigung von vielen der Videostandards, die in der Vorrichtung 150 implementiert werden können, oft vorgeschlagene Entblockungsfilter in die Normungspublikationen auf. Zum Beispiel kann der schleifenexterne Filter 442 den Entblockungsfilter enthalten, der in der ISO-Publikation ISO/IEC 14496-2:2001, Sektion F.3.1, beschrieben ist.It should be understood that any unblocking and / or deringing filter for the off-filter may be used 442 can be used. For example, the International Organization for Standardization (ISO), the organization responsible for the supervision of many of the video standards used in the device 150 implemented deblocking filters into the standardization publications. For example, the out-of-loop filter 442 contain the deblocking filter described in ISO publication ISO / IEC 14496-2: 2001, section F.3.1.

Das decodierte Bild kann außerdem gedreht werden, bevor es in den Speicher 460 in der Pipeline-Stufe 3 in der Drehungsmaschine 450 geschrieben wird. Die Drehungsmaschine 450 ist dafür konfiguriert, eine On-the-fly-Makroblockdrehung auszuführen, wobei individuelle Makroblöcke auf der Basis eines angegebenen Drehungsgrades gedreht und an einer neuen Position des Frames angeordnet werden. Wir verweisen auf die Besprechung der 10A, 10B und 11 unten für eine detaillierte Besprechung des Betriebes der Drehungsmaschine 450.The decoded image can also be rotated before storing it in memory 460 in pipeline stage 3 in the turner 450 is written. The turning machine 450 is configured to perform on-the-fly macroblock rotation, wherein individual macroblocks are rotated based on a specified degree of rotation and placed at a new position of the frame. We refer to the meeting of the 10A . 10B and 11 below for a detailed discussion of the operation of the rotary machine 450 ,

Verfahren zum Decodieren eines Videostromes unter Verwendung einer Multistandard-Hardware-VideodecodervorrichtungMethod for decoding a Video streams using a multi-standard hardware video decoder device

5 veranschaulicht ein Flussdiagramm eines Verfahrens 500 zum Decodieren eines Videostromes, wobei das Verfahren unter Verwendung einer Multistandard-Hardware-Videodecodervorrichtung implementiert wird, gemäß einer Ausführungsform der vorliegenden Erfindung. Obgleich konkrete Schritte in dem Verfahren 500 offenbart sind, sind solche Schritte beispielhaft. Das heißt, die Ausführungsformen der vorliegenden Erfindung eignen sich auch gut zum Ausführen verschiedener anderer Schritte oder Variationen der Schritte, die in 5 angegeben sind. In einer Ausführungsform wird das Verfahren 500 durch die Decodervorrichtung 150 von 3 ausgeführt. 5 illustrates a flowchart of a method 500 for decoding a video stream, the method using ei a multi-standard hardware video decoder apparatus is implemented according to an embodiment of the present invention. Although concrete steps in the process 500 are disclosed, such steps are exemplary. That is, the embodiments of the present invention are also well suited for performing various other steps or variations of the steps described in U.S. Pat 5 are indicated. In one embodiment, the method 500 through the decoder device 150 from 3 executed.

In Schritt 510 des Prozesses 500 wird auf einen Videostrom zugegriffen. In Schritt 520 wird ein Videostandard identifiziert, der zum Codieren des Videostromes verwendet wurde. Die Multistandard-Hardware-Videodecodervorrichtung ist dafür konfiguriert, den Videostrom gemäß mehreren Videostandards zu decodieren.In step 510 of the process 500 a video stream is accessed. In step 520 a video standard is identified which was used to encode the video stream. The multi-standard hardware video decoder apparatus is configured to decode the video stream according to a plurality of video standards.

In Schritt 530 wird eine Teilmenge von Hardware-Decodierblöcken aus mehreren Hardware-Decodierblöcken der Multistandard-Hardware-Videodecodervorrichtung, die zum Decodieren des Videostromes verwendet werden, festgelegt. Verschiedene Teilmengen der mehreren Hardware-Decodierblöcke dienen zum Decodieren von Videoströmen, die unter Verwendung verschiedener Videocodierstandards codiert wurden. In einer Ausführungsform wird, wie in Schritt 540 gezeigt, die Teilmenge von Hardware-Decodierblöcken aktiviert, so dass ein Hardware-Decodierblock, der nicht an der Decodierung des Videostromes beteiligt ist, nicht aktiviert wird.In step 530 For example, a subset of hardware decode blocks are defined from multiple hardware decode blocks of the multi-standard hardware video decoder device used to decode the video stream. Different subsets of the plurality of hardware decode blocks are for decoding video streams encoded using different video encoding standards. In one embodiment, as in step 540 1, activates the subset of hardware decode blocks so that a hardware decode block that is not involved in the decoding of the video stream is not activated.

In Schritt 550 wird der Videostrom unter Verwendung der Teilmenge von Hardware-Decodierblöcken decodiert. In einer Ausführungsform werden, wie in Schritt 560 gezeigt, Hardware-Decodierblöcke innerhalb einer Stufe einer mehrstufigen Makroblockebenen-Pipeline deaktiviert, wenn keine Daten des Videostromes an der Stufe empfangen werden. Es versteht sich, dass die Schritte 540 und 560 eine zusätzliche Stromeinsparung bringen und optional sind.In step 550 The video stream is decoded using the subset of hardware decode blocks. In one embodiment, as in step 560 shown disables hardware decode blocks within a stage of a multi-level macroblock layer pipeline when no data of the video stream is received at the stage. It is understood that the steps 540 and 560 bring additional power savings and are optional.

In Schritt 570 wird nach der Decodierung des Videostromes auf eine Speichereinheit zugegriffen. In einer Ausführungsform wird der decodierte Videostrom zum Anzeigen in dem Speicher gespeichert. In einer Ausführungsform wird, wie in Schritt 580 gezeigt, eine Nachbearbeitungsoperation an einem decodierten Videostrom ausgeführt. Es versteht sich, dass die Nachbearbeitungsoperation ausgeführt werden kann, bevor oder nachdem der Schritt 570 ausgeführt wird. In einer Ausführungsform wird der decodierte Videostrom gedreht. In einer weiteren Ausführungsform wird ein schleifeninterner Entblockungsfilter auf den decodierten Videostrom angewendet. Die Drehung und die schleifeninterne Blockbeseitigung werden ausgeführt, bevor auf die Speichereinheit zugegriffen wird. In einer Ausführungsform werden der schleifenexterne Entblockungs- und der Deringing-Filter auf den decodierten Videostrom angewendet, nachdem auf die Speichereinheit zugegriffen wurde.In step 570 A memory unit is accessed after the video stream is decoded. In one embodiment, the decoded video stream is stored in the memory for display. In one embodiment, as in step 580 shown performing a post-processing operation on a decoded video stream. It is understood that the post-processing operation may be performed before or after the 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. The rotation and in-loop debugging are executed before accessing the memory unit. In one embodiment, the off-loop deblocking and deringing filters are applied to the decoded video stream after the storage unit has been accessed.

Decodierung mehrerer Ströme, die unter Verwendung verschiedener Videostandards codiert wurden, mittels einer Multistandard-Hardware-VideodecodervorrichtungDecoding multiple streams, the coded using various video standards a multi-standard hardware video decoder device

Ausführungsformen der Multistandard-Hardware-Videodecodervorrichtung der vorliegenden Erfindung sind außerdem dafür ausgelegt, mehrere Videoströme gleichzeitig zu decodieren. Abschnitte der Videoströme greifen verschachtelnd ineinander, wie zum Beispiel Makroblöcke oder Frames. Die Decodervorrichtung greift der Reihe nach auf die verschachtelten Abschnitte zu. Dementsprechend führt die Decodervorrichtung Decodieroperationen an den verschachtelten Abschnitten aus. Zum Beispiel kann eine Decodieroperation an Makroblöcken von zwei Videoströmen ausgeführt werden. Die Videoströme sind dergestalt verschachtelt, dass sich Makroblöcke der Videoströme abwechseln. In jedem Taktzyklus kann die Decodieroperation an einem alternierenden Videostrom ausgeführt werden.embodiments the multi-standard hardware video decoder device The present invention is also designed to handle multiple video streams simultaneously to decode. Sections of the video streams interlock, such as macroblocks or frames. The decoder device sequentially accesses the nested sections too. Accordingly, the decoder device performs Decoding operations on the nested sections. To the For example, a decode operation may be performed on macroblocks of two video streams. The video streams are nested in such a way that macroblocks of the video streams alternate. In each clock cycle, the decoding operation may be on an alternating video stream accomplished become.

6 zeigt ein Schaubild, das die internen Komponenten der Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung 600 gemäß einer Ausführungsform der vorliegenden Erfindung darstellt. Wie in 6 veranschaulicht, enthält die Decodervorrichtung 600 eine Videostromverschachtelungsvorrichtung (video strem interleaver) 605, einen Befehlsanalysator 305, mehrere Hardware-Decodierblöcke 310 bis 318, einen Hardware-Nachbearbeitungsblock 320, einen Speicher 330, einen Registersatz 610 und einen Registersatz 620. Die Decodervorrichtung 600 ist dafür ausgelegt, mehrere Videocodierstandards zu decodieren, und arbeitet in einer sehr ähnlichen Weise wie die Decodervorrichtung 150 von 3. Die Decodervorrichtung 600 unterscheidet sich von der Decodervorrichtung 150 dadurch, dass die Registersätze 610 und 620 es der Decodervorrichtung 600 ermöglichen, mehrere Videoströme gleichzeitig zu decodieren. 6 Figure 12 is a diagram showing the internal components of the multi-stream multi-standard hardware video decoder device 600 according to an embodiment of the present invention. As in 6 illustrates the decoder device 600 a video stream interleaver 605 , a command analyzer 305 , several hardware decode blocks 310 to 318 , a hardware post-processing block 320 , a store 330 , a register file 610 and a register file 620 , The decoder device 600 is designed to decode multiple video coding standards and operates in a very similar manner to the decoder device 150 from 3 , The decoder device 600 differs from the decoder device 150 in that the register records 610 and 620 it the decoder device 600 allow multiple video streams to be decoded simultaneously.

Die Videostromverschachtelungsvorrichtung 605 ist dafür ausgelegt, auf mehrere Videoströme zuzugreifen und Abschnitte der Videoströme zu verschachteln. Wie gezeigt, greift die Videostromverschachtelungsvorrichtung 605 auf die Videoströme 601 und 602 zu. Es versteht sich jedoch, dass die Videostromverschachtelungsvorrichtung 605 dafür ausgelegt ist, eine beliebige Anzahl von Videoströmen zu empfangen, und nicht auf die in 6 gezeigte Ausführungsform beschränkt ist. In einer Ausführungsform werden die Videoströme 601 und 602 von einer Mikrocodemaschine (zum Beispiel der Mikrocodemaschine 260 von 2B) kommend empfangen.The video stream interleaving device 605 is designed to access multiple video streams and to nest sections of the video streams. As shown, the video stream interleaving device engages 605 on the video streams 601 and 602 to. However, it is understood that the video stream interleaving device 605 is designed to receive any number of video streams, not the ones in 6 shown embodiment is limited. In one embodiment, the video streams 601 and 602 from a microcode engine (for example the microcode engine 260 from 2 B ) coming emp to catch.

Die 7A und 7B zeigen Schaubilder, die beispielhafte verschachtelte Abschnitte mehrerer Videoströme darstellen, gemäß Ausführungsformen der vorliegenden Erfindung. Wenden wir uns 7A zu, wo zwei verschachtelte Videoströme gezeigt sind, wobei ein Strom ein Standbild-Videostrom (zum Beispiel JPEG) ist und der andere Strom ein digitaler Filmstrom (zum Beispiel MPEG-4) ist. Wie gezeigt, können, wenn die Videoströme nur einen einzigen digitalen Filmstrom enthalten, die Videoströme auf der Makroblockebene verschachtelt sein. Genauer gesagt, sind die Standbild-Makroblöcke 704 und 708 mit digitalen Film-Makroblöcken 702 und 706 verschachtelt, so dass sich Makroblöcke von jedem Videostrom innerhalb eines verschachtelten Stromes 700 abwechseln. Wo Videoströme auf der Makroblockebene verschachtelt sind, puffert ein Softwaretreiber der Decodervorrichtung 600 Makroblockdaten im Systemspeicher, um die Decodierung der verschachtelten Videoströme zu verwalten.The 7A and 7B FIG. 15 shows graphs illustrating exemplary nested portions of multiple video streams in accordance with embodiments of the present invention. Let us turn 7A to where two interlaced video streams are shown, one stream being a still video stream (JPEG, for example) and the other stream being a digital movie stream (MPEG-4, for example). As shown, if the video streams contain only a single digital movie stream, the video streams may be interleaved at the macroblock level. More specifically, the still image macroblocks are 704 and 708 with digital movie macroblocks 702 and 706 nested so that macroblocks from each video stream within a nested stream 700 alternate. Where video streams are interleaved at the macroblock level, a software driver buffers the decoder device 600 Macroblock data in system memory to manage the decoding of nested video streams.

Wenden wir uns 7B zu, wo zwei verschachtelte Videoströme gezeigt sind, wobei beide Ströme digitale Filmströme sind. Wie gezeigt, sind, wenn die Videoströme mehrere digitale Filmströme enthalten, die Videoströme auf der Frameebene verschachtelt. Genauer gesagt, sind erste digitale Filmframes 752 und 756 mit zweiten digitalen Filmframes 754 und 758 verschachtelt, so dass sich Frames von jedem Videostrom innerhalb eines verschachtelten Stromes 750 abwechseln. Wo Videoströme auf der Frameebene verschachtelt sind, puffert ein Softwaretreiber der Decodervorrichtung 600 Framedaten im Systemspeicher, um die Decodierung der verschachtelten Videoströme zu verwalten.Let us turn 7B to where two interlaced video streams are shown, both streams being digital movie streams. As shown, when the video streams contain multiple digital movie streams, the video streams are interleaved at the frame level. More precisely, they are the first digital film frames 752 and 756 with second digital movie frames 754 and 758 nested, allowing frames from every video stream within a nested stream 750 alternate. Where video streams are nested at the frame level, a software driver buffers the decoder device 600 Frame data in system memory to manage the decoding of nested video streams.

Wenden wir uns 6 zu, wo ein Befehlsanalysator 305, Hardware-Decodierblöcke 310 bis 318, ein Hardware-Nachbearbeitungsblock 320 und ein Speicher 330 wie in 3 beschrieben arbeiten. Die Restdaten und die anderen Decoderparameter werden über den Befehlsanalysator 305 an die Decodervorrichtung übermittelt. Daten von dem Befehlsanalysator 305 werden entweder zu dem Restpfad (Hardware-Decodierblöcke 312, 316 und 318) oder dem Prädiktionspfad (Hardware-Decodierblöcke 310 und 314) geleitet. Der Restpfad verarbeitet die Fehler- oder Differenzdaten, während der Prädiktionspfad die Daten des vorherigen Frames oder vorherigen Makroblocks vorbereitet oder abruft.Let us turn 6 to where a command analyzer 305 , Hardware decoding blocks 310 to 318 , a hardware post-processing block 320 and a memory 330 as in 3 described work. The remainder data and the other decoder parameters are sent via the command analyzer 305 transmitted to the decoder device. Data from the command analyzer 305 either go to the remainder path (hardware decode blocks 312 . 316 and 318 ) or the prediction path (hardware decode blocks 310 and 314 ). The remainder path processes the error or difference data while the prediction path prepares or retrieves the data of the previous frame or previous macroblock.

Um die Decodierung von verschachtelten Videoströmen zu verwalten, werden zwei Registersätze 610 und 620 in der Pipeline-Stufe 1 behalten. In einer Ausführungsform speichern die Registersätze 610 und 620 die Speicheroberflächenzeiger 612 bzw. 622 und die Frameebenenparameter 614 bzw. 624. Jeder der Registersätze wird verwendet, um die Parameter in Verbindung mit einem der Videoströme zu speichern. Zum Beispiel wird der Registersatz 610 verwendet, um Parameter in Verbindung mit dem Videostrom 601 zu speichern, und der Registersatz 620 wird verwendet, um Parameter in Verbindung mit dem Videostrom 602 zu speichern. Nachdem ein Abschnitt eines einzelnen Videostromes in der Pipeline-Stufe 1 verarbeitet wurde, werden die entsprechenden Parameter mit dem Rest oder den vorhergesagten Daten an die stromabwärtigen Pipeline-Stufen 2 und 3 in Form von Paketen übermittelt. Die decodierten Daten werden anhand dessen, ob der Makroblock vom Standbild- oder vom digitalen Filmtyp ist, zu dem entsprechenden Bereich in dem Speicher geleitet. Es versteht sich, dass die Decodervorrichtung 600 dafür konfiguriert sein kann, eine beliebige Anzahl von Videoströmen zu decodieren, indem die entsprechende Anzahl von Registersätzen hinzugefügt wird, so dass jeder zu decodierende Strom einen zugehörigen Registersatz hat.To manage the decoding of interlaced video streams, two sets of registers are created 610 and 620 in pipeline stage 1. In one embodiment, the register sets store 610 and 620 the storage surface pointers 612 respectively. 622 and the frame level parameters 614 respectively. 624 , Each of the register sets is used to store the parameters associated with one of the video streams. For example, the register file becomes 610 used to set parameters in connection with the video stream 601 to save, and the register file 620 is used to set parameters related to the video stream 602 save. After a portion of a single video stream has been processed in the pipeline stage 1, the corresponding parameters with the remainder or the predicted data are transmitted to the downstream pipeline stages 2 and 3 in the form of packets. The decoded data is passed to the corresponding area in the memory based on whether the still or digital film type macroblock is. It is understood that the decoder device 600 may be configured to decode any number of video streams by adding the appropriate number of register sets so that each stream to be decoded has an associated register set.

8 veranschaulicht ein Flussdiagramm eines Verfahrens 800 zum Decodieren mehrerer Videoströme, wobei das Verfahren unter Verwendung einer Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung implementiert wird, gemäß einer Ausführungsform der vorliegenden Erfindung. Obgleich in dem Verfahren 800 konkrete Schritte offenbart sind, sind solche Schritte beispielhaft. Das heißt, die Ausführungsformen der vorliegenden Erfindung eignen sich auch sehr gut zum Ausführen verschiedener anderer Schritte oder Variationen der Schritte, die in 8 angeführt sind. In einer Ausführungsform wird das Verfahren 800 durch die Decodervorrichtung 600 von 6 ausgeführt. 8th illustrates a flowchart of a method 800 for decoding a plurality of video streams, the method being implemented using a multi-stream, multi-standard hardware video decoder apparatus according to an embodiment of the present invention. Although in the process 800 concrete steps are disclosed, such steps are exemplary. That is, the embodiments of the present invention are also very well suited to performing various other steps or variations of the steps described in U.S. Pat 8th are listed. In one embodiment, the method 800 through the decoder device 600 from 6 executed.

In Schritt 810 des Prozesses 800 wird auf mehrere Videoströme zugegriffen. In Schritt 820 werden Videostandards identifiziert, die zum Codieren des Videostromes verwendet wurden. Die Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung ist dafür konfiguriert, die Videoströme gemäß mehreren Videostandards zu decodieren. In Schritt 830 werden Abschnitte der Videoströme verschachtelt. In einer Ausführungsform, wo die Videoströme nur einen digitalen Filmstrom enthalten, werden Makroblöcke der Videoströme verschachtelt. In einer weiteren Ausführungsform, wo die Videoströme mehrere digitale Filmströme enthalten, werden Frames der Videoströme verschachtelt. Es versteht sich, dass die Schritte 820 und 830 in jeder beliebigen Reihenfolge ausgeführt werden können.In step 810 of the process 800 is accessed on multiple video streams. In step 820 identifies video standards used to encode the video stream. The multi-stream, multi-standard hardware video decoder apparatus is configured to decode the video streams in accordance with multiple video standards. In step 830 sections of the video streams are nested. In an embodiment where the video streams contain only one digital movie stream, macroblocks of the video streams are interleaved. In another embodiment where the video streams contain multiple digital movie streams, frames of the video streams are interleaved. It is understood that the steps 820 and 830 can be executed in any order.

In Schritt 840 werden Teilmengen von Hardware-Decodierblöcken aus mehreren Hardware-Decodierblöcken der Multistandard-Hardware-Videodecodervorrichtung festgelegt, die zum Decodieren der mehreren Videoströme verwendet werden. Verschiedene Teilmengen der mehreren Hardware-Decodierblöcke dienen zum Decodieren von Videoströmen, die unter Verwendung verschiedener Videocodierstandards codiert wurden. In einer Ausführungsform werden, wie in Schritt 850 gezeigt, die Teilmengen von Hardware-Decodierblöcken aktiviert, so dass ein Hardware-Decodierblock, der nicht an der Decodierung der Videoströme beteiligt ist, nicht aktiviert wird.In step 840 For example, subsets of hardware decode blocks are defined from multiple hardware decode blocks of the multi-standard hardware video decoder device that are used to decode the multiple video streams. Different subsets of the multiple hardware decode blocks are used to decode video streams, which were coded using different video coding standards. In one embodiment, as in step 850 2, which activates subsets of hardware decode blocks such that a hardware decode block not involved in the decoding of the video streams is not activated.

In Schritt 860 werden die Videoströme unter Verwendung der Teilmengen von Hardware-Decodierblöcken decodiert. In Schritt 870 wird nach der Decodierung des Videostromes auf eine Speichereinheit zugegriffen. In einer Ausführungsform wird der decodierte Videostrom zum Anzeigen in dem Speicher gespeichert. In einer Ausführungsform wird, wie in Schritt 880 gezeigt, eine Nachbearbeitungsoperation an mindestens einem decodierten Videostrom ausgeführt. Es versteht sich, dass die Nachbearbeitungsoperation ausgeführt werden kann, bevor oder nachdem der Schritt 870 ausgeführt wurde. In einer Ausführungsform wird der decodierte Videostrom gedreht. In einer weiteren Ausführungsform wird ein schleifeninterner Blockfilter auf den decodierten Videostrom angewendet. Die Drehung und die schleifeninterne Blockbeseitigung werden ausgeführt, bevor auf die Speichereinheit zugegriffen wird. In einer Ausführungsform werden der schleifenexterne Entblockungs- und der Deringing-Filter auf den decodierten Videostrom angewendet, nachdem auf die Speichereinheit zugegriffen wurde.In step 860 For example, the video streams are decoded using the subsets of hardware decode blocks. In step 870 A memory unit is accessed after the video stream is decoded. In one embodiment, the decoded video stream is stored in the memory for display. In one embodiment, as in step 880 shown performing a post-processing operation on at least one decoded video stream. It is understood that the post-processing operation may be performed before or after the step 870 was executed. In one embodiment, the decoded video stream is rotated. In another embodiment, an in-loop block filter is applied to the decoded video stream. The rotation and in-loop debugging are executed before accessing the memory unit. In one embodiment, the off-loop deblocking and deringing filters are applied to the decoded video stream after the storage unit has been accessed.

Verarbeitung von außerhalb der Reihenfolge liegenden Makroblöcken eines VideostromesProcessing from outside the sequence of macroblocks of a video stream

Wenden wir uns 2B zu. In einer Ausführungsform ermöglicht die vorliegende Erfindung das Puffern und Umordnen von Makroblöcken in der Mikrocodemaschine 260. Die vorliegende Erfindung ermöglicht das Ordnen der Makroblöcke in der Rasterabtastreihenfolge, um eine schleifeninterne Blockbeseitigung für Videostandards zu unterstützen, die ein Senden und Empfangen von Makroblöcken in einer Nicht-Rasterabtastreihenfolge unterstützen. Die Mikrocodemaschine 260 ist dafür konfiguriert, komprimierte Daten zu empfangen, die Makroblöcke eines Frames eines Videostromes darstellen. In einer Ausführungsform wird mindestens ein Makroblock außerhalb der Reihenfolge empfangen. Die Mikrocodemaschine 260 ist dafür konfiguriert, die komprimierten Daten zu Puffern, und ist, dafür konfiguriert, die Makroblöcke des Frames in der Rasterabtastreihenfolge zu ordnen.Let us turn 2 B to. In one embodiment, the present invention enables buffering and reordering of macroblocks in the microcode engine 260 , The present invention allows ordering of the macroblocks in the raster scan order to support in-loop intra-frame decryption support for video standards that support sending and receiving of macroblocks in a non-raster scan order. The microcode engine 260 is configured to receive compressed data representing macroblocks of a frame 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 order the macroblocks of the frame in raster scan order.

9 veranschaulicht ein Flussdiagramm eines Verfahrens 900 zum Verarbeiten von außerhalb der Reihenfolge liegenden Makroblöcken eines Videostromes gemäß einer Ausführungsform der vorliegenden Erfindung. Obgleich in dem Verfahren 900 konkrete Schritten offenbart werden, sind solche Schritte beispielhaft. Das heißt, die Ausführungsformen der vorliegenden Erfindung eignen sich auch sehr gut zum Ausführen verschiedener anderer Schritte oder Variationen der Schritte, die in 9 angegeben sind. In einer Ausführungsform wird das Verfahren 900 durch die Mikrocodemaschine 260 von 2B ausgeführt. 9 illustrates a flowchart of a method 900 for processing out-of-order macroblocks of a video stream according to an embodiment of the present invention. Although in the process 900 concrete steps are disclosed, such steps are exemplary. That is, the embodiments of the present invention are also very well suited to performing various other steps or variations of the steps described in U.S. Pat 9 are indicated. In one embodiment, the method 900 through the microcode engine 260 from 2 B executed.

In Schritt 910 des Verfahrens 900 werden komprimierte Daten empfangen, die Makroblöcke eines Frames eines Videostromes darstellen, wobei mindestens ein Makroblock außerhalb der Reihenfolge empfangen wird. In Schritt 920 werden die komprimierten Daten gepuffert. In einer Ausführungsform werden die komprimierten Daten in einem Puffer der Mikrocodemaschine 260 gepuffert. In Schritt 930 wird der Videostrom analysiert, und es wird eine VLD an dem Videostrom ausgeführt. Es versteht sich, dass der Schritt 930 optional ist und dass die Videostromanalyse und die VLD durch die Hardware-Decodervorrichtung ausgeführt werden können. Es versteht sich des Weiteren, dass in Schritt 930 auch andere oder zusätzliche Vorbearbeitungsoperationen an dem Videostrom ausgeführt werden können.In step 910 of the procedure 900 Compressed data will be received representing macroblocks of a frame of a video stream, with at least one macroblock received out of order. In step 920 the compressed data is buffered. In one embodiment, the compressed data is stored in a buffer of the microcode engine 260 buffered. In step 930 the video stream is analyzed and a VLD is executed on the video stream. It is understood that the step 930 is optional and that the video stream analysis and the VLD can be performed by the hardware decoder device. It goes without saying that in step 930 also other or additional preprocessing operations can be performed on the video stream.

In einem Schritt 935 wird festgestellt, ob der Videostrom eine schleifeninterne Blockbeseitigung erfordert. In einer Ausführungsform enthalten die komprimierten Daten einen Hinweis, ob an dem Videostrom eine schleifeninterne Blockbeseitigung auszuführen ist. Wenn eine schleifeninterne Blockbeseitigung erforderlich ist, so werden die Makroblöcke des Frames in der Rasterabtastreihenfolge geordnet, wie in Schritt 940 gezeigt. In einer Ausführungsform werden alle Makroblöcke eines Frames gepuffert, bevor die Makroblöcke in der Rasterabtastreihenfolge geordnet werden. Das Verfahren 900 schreitet dann zu Schritt 950 weiter. Alternativ, wenn keine schleifeninterne Blockbeseitigung benötigt wird, schreitet das Verfahren 900 dann direkt zu Schritt 950 weiter.In one step 935 a determination is made as to whether the video stream requires in-frame block removal. In one embodiment, the compressed data includes an indication as to whether loop-internal block elimination is to be performed on the video stream. If in-loop debugging is required, the macroblocks of the frame are ordered in the raster scan order, as in step 940 shown. In one embodiment, all macroblocks of a frame are buffered before the macroblocks are ordered in raster scan order. The procedure 900 then walk to step 950 further. Alternatively, if no in-loop debugging is needed, the process proceeds 900 then directly to step 950 further.

In Schritt 950 wird der Videostrom decodiert. In einer Ausführungsform werden die Makroblöcke in der Rasterabtastreihenfolge decodiert. In einer Ausführungsform wird der Videostrom durch eine Multistandard-Hardware-Videodecodervorrichtung (zum Beispiel die Decodervorrichtung 150 von 3 oder die Decodervorrichtung 400 von 4) decodiert. In einer Ausführungsform wird der Videostrom gemäß dem Verfahren 500 von 5 decodiert.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 through a multi-standard hardware video decoder device (e.g., the decoder device 150 from 3 or the decoder device 400 from 4 ) decoded. In one embodiment, the video stream is in accordance with the method 500 from 5 decoded.

In Schritt 960 wird eine schleifeninterne Blockbeseitigung auf Makroblockebene an einem decodierten Makroblock ausgeführt. In Schritt 970 wird auf die Speichereinheit zugegriffen. In einer Ausführungsform wird der blockbereinigte und decodierte Videostrom zum Anzeigen in dem Speicher gespeichert.In step 960 an in-block macroblock level debug is performed on a decoded macroblock. In step 970 the storage device is accessed. In one embodiment, the block-cleared and decoded video stream is stored in the memory for display.

In Schritt 980 wird eine schleifenexterne Nachbearbeitung auf Frameebene an einem decodierten Frame ausgeführt. In einer Ausführungsform enthält die schleifenexterne Nachbearbeitung Blockbeseitigungs- und Deringing-Operationen. Es versteht sich, dass der Schritt 980 optional ist. Das Verfahren 900 kehrt dann zu Schritt 970 zurück, wo auf die Speichereinheit zugegriffen wird. In einer Ausführungsform wird der blockbereinigte, von Ringing-Artefakten befreite und decodierte Videostrom zum Anzeigen in dem Speicher gespeichert.In step 980 An out-of-frame, frame level refinement is performed on a decoded frame. In one embodiment The off-board post-processing includes block removal and deringing operations. It is understood that the step 980 is optional. The procedure 900 then returns to step 970 back where the storage device is accessed. In one embodiment, the block-cleaned video stream freed from ringing artifacts and decoded is stored in the memory for display.

Durch Puffern der Makroblöcke, während sich die Makroblöcke immer noch in komprimierten Daten befinden, braucht die Mikrocodemaschine 260 maximal nur einen einzigen Frame aus lauflängencodierten komprimierten Daten zu Puffern, was bedeutend weniger als die decodierten Videodaten ist. Des Weiteren spart das Puffern der komprimierten Makroblöcke auch Strom. Videoströme, die durch die Luft empfangen werden, unterliegen außerdem zahlreichen Fehlern. Das Teilen der Bitstromanalyse zu der Mikrocodemaschine 260 hat außerdem den Vorteil, dass die Wiederherstellung nach einem Fehler verbessert wird.By buffering the macroblocks while the macroblocks are still in compressed data, the microcode engine needs 260 at most only a single frame of run length encoded compressed data buffer, which is significantly less than the decoded video data. Furthermore, buffering the compressed macroblocks also saves power. Video streams received through the air are also subject to numerous errors. Splitting the bit stream analysis to the microcode engine 260 also has the advantage of improving the recovery from an error.

On-the-fly-Drehung von Makroblöcken eines VideostromesOn-the-fly rotation of macroblocks video stream

Ausführungsformen der vorliegenden Erfindung stellen eine Drehungsmaschine zum Drehen eines Videostromes "On-the-fly" bereit, bevor der Videostrom in den Speicher geschrieben wird. Ausführungsformen der vorliegenden Erfindung sind in der Lage, den Videostrom zu drehen, indem Makroblöcke eines Videostromes gedreht werden, während sie empfangen werden, und die Makroblöcke innerhalb des Frames auf der Basis der Drehung umpositioniert werden. Ausführungsformen der vorliegenden Erfindung sind in der Lage, Videoströme zu drehen, ohne dass ein zweiter Durchgang an den decodierten Frames erforderlich ist, indem die Makroblöcke bearbeitet werden, bevor die decodierten Makroblöcke in den Speicher geschrieben werden.embodiments of the present invention provide a rotary machine for turning a video stream "on-the-fly" ready before the Video stream is written to the memory. embodiments of the present invention are able to rotate the video stream, by macroblocks a video stream while they are being received, and the macroblocks be repositioned within the frame based on the rotation. embodiments of the present invention are capable of rotating video streams without requiring a second pass on the decoded frames is by the macroblocks are processed before the decoded macroblocks are written to memory become.

In einer Ausführungsform stellt die vorliegende Erfindung eine Drehungsmaschine bereit, die dafür konfiguriert ist, einen Makroblock eines Frames des Videostromes entsprechend einem Drehungsgrad zu drehen und den Makroblock an eine neue Position innerhalb des Frames umzupositionieren, wobei die neue Position auf dem Drehungsgrad basiert. In einer Ausführungsform enthält die Videodecodervorrichtung des Weiteren einen Speicher zum Speichern des Makroblocks zum Anzeigen. In einer Ausführungsform ist die Drehungsmaschine dafür konfiguriert, den Makroblock zu drehen und den Makroblock innerhalb des Frames vor dem Zugreifen auf einen Speicher umzupositionieren.In an embodiment The present invention provides a rotary machine which configured for it is corresponding to a macroblock of a frame of the video stream to turn one turn and move the macroblock to a new position reposition within the frame, with the new position based on the degree of rotation. In one embodiment, the video decoder device includes and a memory for storing the macroblock for display. In one embodiment is the twister configured to rotate the macroblock and the macroblock within the frame reposition before accessing a memory.

Die 10A und 10B veranschaulichen Schaubilder der beispielhaften Drehung von Makroblöcken von Frames gemäß Ausführungsformen der vorliegenden Erfindung. Obgleich die 10A und 10B den Betrieb der Drehungsmaschine 450 von 4 beschreiben, versteht es sich, dass die beschriebenen Ausführungsformen innerhalb eines beliebigen Typs einer Videodecodervorrichtung implementiert werden können und nicht auf die Verwendung der Multistandard-Hardware-Videodecodervorrichtung 400 von 4 beschränkt sind. Zum Beispiel kann die Drehungsmaschine in einem einzelnen standardmäßigen Hardware-Decoder oder einem Software-Decoder enthalten sein.The 10A and 10B 12 are diagrams illustrating exemplary rotation of macroblocks of frames in accordance with embodiments of the present invention. Although the 10A and 10B the operation of the turning machine 450 from 4 It should be understood that the described embodiments may be implemented within any type of video decoder device and not the use of the multi-standard hardware video decoder device 400 from 4 are limited. For example, the spin engine may be included in a single standard hardware decoder or software decoder.

Wenden wir uns 10A zu, wo das Schaubild 1000 die Drehung eines Frames 1010 unter Verwendung der Drehungsmaschine 450 von 4 veranschaulicht. Der Frame 1010 enthält viele Makroblöcke. Der Makroblock 1012 ist als der erste Makroblock gezeigt, der in der Drehungsmaschine 450 empfangen wird. In einer Ausführungsform werden die Makroblöcke in der Rasterabtastreihenfolge empfangen, wobei der Makroblock 1012 der erste Makroblock ist, der empfangen wird, da er der linke obere Makroblock ist.Let us turn 10A to where the graph 1000 the rotation of a frame 1010 using the spin machine 450 from 4 illustrated. The frame 1010 contains many macroblocks. The macroblock 1012 is shown as the first macroblock in the spin machine 450 Will be received. In one embodiment, the macroblocks are received in raster scan order, with the macroblock 1012 is the first macroblock received because it is the upper left macroblock.

Die Drehungsmaschine 450 ist dafür konfiguriert, den Makroblock 1012 zu drehen und den Makroblock 1012 an eine neue Position in dem Frame 1010 umzupositionieren. Die Drehung und die Umpositionierung basieren auf einem Drehungsgrad, der mit dem Videostrom verbunden ist. Der Drehungsgrad besagt, wie der Videostrom zu drehen ist. Zum Beispiel kann der Drehungsgrad sein: neunzig Grad im Uhrzeigersinn, neunzig Grad entgegen dem Uhrzeigersinn, einhundertachtzig Grad, oder ein beliebiger anderer Drehungsgrad.The turning machine 450 is configured to use the macroblock 1012 to turn and the macroblock 1012 to a new position in the frame 1010 reposition. The rotation and repositioning are based on a degree of rotation associated with the video stream. The degree of rotation indicates how the video stream is to be rotated. For example, the degree of rotation may be ninety degrees clockwise, ninety degrees counterclockwise, one hundred and eighty degrees, or any other degree of rotation.

Das Schaubild 1000 veranschaulicht den Betrieb der Drehungsmaschine 450 unter Verwendung eines Drehungsgrades von neunzig Grad im Uhrzeigersinn. Der Makroblock 1012 wird neunzig Grad im Uhrzeigersinn gedreht. Die Drehungsmaschine 450 positioniert außerdem den Makroblock 1012 so um, dass sich der gedrehte Makroblock 1012, der als Makroblock 1022 in dem gedrehten Frame 1020 gezeigt ist, in der gleichen Position relativ zu allen anderen Makroblöcken des Frames 1020 befindet.The graph 1000 illustrates the operation of the rotary machine 450 using a 90 degree turn clockwise. The macroblock 1012 is turned ninety degrees clockwise. The turning machine 450 also positions the macroblock 1012 so that the rotated macroblock 1012 that as a macroblock 1022 in the rotated frame 1020 is shown in the same position relative to all other macroblocks of the frame 1020 located.

Ausführungsformen der vorliegenden Erfindung ermöglichen außerdem das Drehen von Frames auf der Makroblockebene, wo Makroblöcke außerhalb der Reihenfolge empfangen werden. Wenden wir uns 10B zu, wo das Schaubild 1050 die Drehung eines Frames 1060 unter Verwendung der Drehungsmaschine 450 von 4 veranschaulicht. Der Makroblock 1062 ist als der erste Makroblock gezeigt, der in der Drehungsmaschine 450 empfangen wird. In der vorliegenden Ausführungsform werden die Makroblöcke nicht in der Rasterabtastreihenfolge empfangen, da der Makroblock 1062 der erste Makroblock ist, der empfangen wird, aber nicht der linke obere Makroblock ist.Embodiments of the present invention also allow for rotating frames on the macroblock level where macroblocks are received out of order. Let us turn 10B to where the graph 1050 the rotation of a frame 1060 using the spin machine 450 from 4 illustrated. The macroblock 1062 is shown as the first macroblock in the spin machine 450 Will be received. In the present embodiment, the macroblocks are not received in the raster scan order since the macroblock 1062 the first macroblock is received, but not the left one upper macroblock is.

Die Drehungsmaschine 450 ist dafür konfiguriert, den Makroblock 1062 zu drehen und den Makroblock 1062 an eine neue Position in dem Frame 1060 umzupositionieren. Das Schaubild 1050 veranschaulicht den Betrieb der Drehungsmaschine 450 unter Verwendung eines Drehungsgrades von neunzig Grad im Uhrzeigersinn. Der Makroblock 1062 wird neunzig Grad im Uhrzeigersinn gedreht. Die Drehungsmaschine 450 positioniert außerdem den Makroblock 1062 so um, dass sich der gedrehte Makroblock 1062, der als Makroblock 1072 in dem gedrehten Frame 1070 gezeigt ist, in der gleichen Position relativ zu allen anderen Makroblöcken des Frames 1070 befindet.The turning machine 450 is configured to use the macroblock 1062 to turn and the macroblock 1062 to a new position in the frame 1060 reposition. The graph 1050 illustrates the operation of the rotary machine 450 using a 90 degree turn clockwise. The macroblock 1062 is turned ninety degrees clockwise. The turning machine 450 also positions the macroblock 1062 so that the rotated macroblock 1062 that as a macroblock 1072 in the rotated frame 1070 is shown in the same position relative to all other macroblocks of the frame 1070 located.

11 veranschaulicht ein Flussdiagramm eines Verfahrens 1100 zum Drehen von Makroblöcken eines Frames gemäß einer Ausführungsform der vorliegenden Erfindung. Obgleich konkrete Schritte in dem Verfahren 1100 offenbart werden, sind solche Schritte beispielhaft. Das heißt, die Ausführungsformen der vorliegenden Erfindung eignen sich auch sehr gut zum Ausführen verschiedener anderer Schritte oder Variationen der Schritte, die in 11 angeführt sind. In einer Ausführungsform wird das Verfahren 1100 durch die Drehungsmaschine 450 von 4 ausgeführt. 11 illustrates a flowchart of a method 1100 for rotating macroblocks of a frame according to an embodiment of the present invention. Although concrete steps in the process 1100 are disclosed, such steps are exemplary. That is, the embodiments of the present invention are also very well suited to performing various other steps or variations of the steps described in U.S. Pat 11 are listed. In one embodiment, the method 1100 through the spin machine 450 from 4 executed.

In Schritt 1110 wird ein Videostrom decodiert. In einer Ausführungsform wird der Videostrom durch eine Multistandard-Hardware-Videodecodervorrichtung (zum Beispiel die Decodervorrichtung 150 von 3 oder die Decodervorrichtung 400 von 4) decodiert. In einer Ausführungsform wird der Videostrom gemäß dem Verfahren 500 von 5 decodiert. Es versteht sich, dass der Schritt 1110 optional ist und dass der Videostrom bereits vor der Verarbeitung decodiert wird.In step 1110 a video stream is decoded. In one embodiment, the video stream is through a multi-standard hardware video decoder device (e.g., the decoder device 150 from 3 or the decoder device 400 from 4 ) decoded. In one embodiment, the video stream is in accordance with the method 500 from 5 decoded. It is understood that the step 1110 is optional and that the video stream is already decoded before processing.

In Schritt 1120 wird auf einen Drehungsgrad für den Videostrom zugegriffen. In einer Ausführungsform ist der Drehungsgrad einer von folgenden: neunzig Grad im Uhrzeigersinn, neunzig Grad entgegen dem Uhrzeigersinn und einhundertachtzig Grad. Es versteht sich jedoch, dass ein beliebiger Drehungsgrad verwendet werden kann. In Schritt 1130 wird auf einen Makroblock des Videostromes zugegriffen.In step 1120 a rotation rate for the video stream is accessed. In one embodiment, the degree of rotation is one of the following: ninety degrees clockwise, ninety degrees counterclockwise, and one hundred and eighty degrees. It is understood, however, that any degree of rotation can be used. In step 1130 a macroblock of the video stream is accessed.

In Schritt 1140 wird der Makroblock gemäß dem Drehungsgrad gedreht. In Schritt 1150 wird der Makroblock an eine neue Position innerhalb des Frames umpositioniert, wobei die neue Position auf dem Drehungsgrad basiert. Es versteht sich, dass der Makroblock dergestalt umpositioniert wird, dass sich der Makroblock nach der Drehung in der gleichen Position relativ zu allen anderen Makroblöcken des Frames befindet. In einer Ausführungsform werden die Drehung des Makroblocks und das Umpositionieren des Makroblocks vor dem Zugreifen auf einen Speicher ausgeführt.In step 1140 the macroblock is rotated according to the degree of rotation. In step 1150 the macroblock is repositioned to a new position within the frame, the new position being based on the degree of rotation. It is understood that the macroblock is repositioned such that the macroblock after rotation is in the same position relative to all other macroblocks of the frame. In one embodiment, the rotation of the macroblock and the repositioning of the macroblock are performed prior to accessing a memory.

In Schritt 1160 wird der Makroblock in einem Speicher zum Anzeigen gespeichert. In einer Ausführungsform wird, wie in Schritt 1170 gezeigt, eine Blockbeseitigungsoperation an dem decodierten Makroblock ausgeführt. Es versteht sich, dass der Schritt 1170 optional ist. Darüber hinaus versteht es sich, dass der Schritt 1170 das Ausführen einer schleifeninternen Blockbeseitigung oder einer schleifenexternen Blockbeseitigung und Deringing enthalten kann.In step 1160 the macroblock is stored in a memory for display. In one embodiment, as in step 1170 shown a block removal operation performed on the decoded macroblock. It is understood that the step 1170 is optional. In addition, it is understood that the step 1170 may include executing in-loop deblocking or off-loop deblocking and deringing.

Auf diese Weise stellen Ausführungsformen der vorliegenden Erfindung eine neue Architektur für eine Multistandard-Hardware-Videodecodervorrichtung bereit, die eine Hardware-gestützte Decodierung von Videoströmen gemäß mehreren Videostandards unterstützt. Ausführungsformen der vorliegenden Erfindung sind in der Lage, eine Echtzeit-Decodierung für jeden der mehreren Videocodierstandards auszuführen. Ausführungsformen der vorliegenden Erfindung führen Nachbearbeitungsoperationen an decodierten Videoströmen aus. Eine Ausführungsform der vorliegenden Erfindung stellt eine Hardware-Decodervorrichtung bereit, die eine Videodecodierung für Videoströme unter Verwendung eines der JPEG-, MPEG-4-, H.263-, H.263+-, H.264- und WMV9/VC-1-Videostandards ermöglicht.On this way, embodiments of the The present invention provides a new architecture for a multi-standard hardware video decoder device ready, which is a hardware-based Decoding video streams according to several Video standards supported. embodiments The present invention is capable of real-time decoding for each the multiple video coding standards. Embodiments of the present Invention lead Postprocessing operations on decoded video streams. An embodiment The present invention provides a hardware decoder apparatus comprising a Video decoding for video streams using one of the JPEG, MPEG-4, H.263, H.263 +, H.264- and WMV9 / VC-1 video standards.

Ausführungsformen der vorliegenden Erfindung stellen eine Mehrstrom-Multistandard-Hardware-Videodecodervorrichtung mit gleichzeitiger Videodecodierfunktionalität für mehrere verschiedene Videocodierstandards bereit. Ausführungsformen der vorliegenden Erfindung sind in der Lage, mehrere verschachtelte Videoströme gleichzeitig zu decodieren.embodiments of the present invention provide a multi-stream multi-standard hardware video decoder device with simultaneous video decoding functionality for several different video coding standards ready. embodiments The present invention is capable of multiple nested ones video streams to decode at the same time.

Ausführungsformen der vorliegenden Erfindung stellen eine Videodecoder-Architektur bereit, um eine schleifeninterne Blockbeseitigung eines Videostromes auszuführen, ohne zusätzlichen Speicher zum Ordnen der Makroblöcke in der Rasterabtastreihenfolge zu benötigen. Ausführungsformen der vorliegenden Erfindung sind in der Lage, Makroblöcke des Videostromes in der Mikrocodemaschine zu ordnen. Ausführungsformen der vorliegenden Erfindung sind in der Lage, eine Decodierung und schleifenexterne Blockbeseitigung und/oder ein Deringing für einen Videostrom auszuführen, der unter Verwendung eines von mehreren unterstützten Videostandards codiert wurde.embodiments of the present invention provide a video decoder architecture ready for an in-frame block elimination of a video stream perform, without additional Memory for organizing the macroblocks in raster scan order. Embodiments of the present Invention are capable of macroblocks of the video stream in the To arrange microcode machine. Embodiments of the present Invention are capable of decoding and off-loop Block removal and / or deringing for a video stream to perform the encoded using one of several supported video standards has been.

Ausführungsformen der vorliegenden Erfindung stellen eine Drehungsmaschine zum Drehen eines Videostromes "On-the-fly" bereit, bevor der Videostrom in einen Speicher geschrieben wird. Ausführungsformen der vorliegenden Erfindung sind in der Lage, den Videostrom zu drehen, indem Makroblöcke eines Videostromes gedreht werden, während sie empfangen werden, und die Makroblöcke innerhalb des Frames auf der Basis des Drehung umpositioniert werden. Ausführungsformen der vorliegenden Erfindung sind in der Lage, Videoströme zu drehen, ohne dass ein zweiter Durchgang an den decodierten Frames erforderlich ist, indem die Makroblöcke bearbeitet werden, bevor die decodierten Makroblöcke in den Speicher geschrieben werden.Embodiments of the present invention provide a spinning machine for rotating a video stream "on-the-fly" before the video stream is written to memory. exporting Forms of the present invention are capable of rotating the video stream by rotating macroblocks of a video stream as they are received, and repositioning the macroblocks within the frame based on the rotation. Embodiments of the present invention are capable of rotating video streams without requiring a second pass on the decoded frames by manipulating the macroblocks before writing the decoded macroblocks into memory.

Die obigen Beschreibungen von konkreten Ausführungsformen der vorliegenden Erfindung sind zum Zweck der Veranschaulichung und Beschreibung gegeben worden. Sie sollen weder erschöpfend sein, noch sollen sie die Erfindung auf die konkret offenbarten Formen beschränken, und viele Modifikationen und Variationen sind vor dem Hintergrund der obigen Lehren möglich. Die Ausführungsformen wurden so gewählt und beschrieben, dass die Prinzipien der Erfindung und ihre praktische Anwendung am besten erläutert werden, um es dadurch anderen Fachleuten zu ermöglichen, die Erfindung und verschiedene Ausführungsformen mit verschiedenen Modifikationen, die dem vorgesehenen Verwendungszweck angepasst sind, optimal zu nutzen. Es ist beabsichtigt, den Geltungsbereich der Erfindung durch die hier angehängten Ansprüche und ihre Äquivalente zu definieren.The above descriptions of specific embodiments of the present The invention is for the purpose of illustration and description been given. They should neither be exhaustive nor should they limit the invention to the specific forms disclosed, and Many modifications and variations are against the background of the above Lessons possible. The embodiments were chosen like that and described that the principles of the invention and their practical Application best explained In order to make it possible for other professionals, the invention and different embodiments with various modifications, the intended use are adapted to use optimally. It is intended to the scope of the invention by the claims appended hereto and their equivalents define.

ZusammenfassungSummary

Eine Multistandard-Hardware-Videodecodervorrichtung. Ein Befehlsanalysator greift auf einen Videostrom zu und identifiziert einen Videocodierstandard, der zum Codieren des Videostromes verwendet wurde. Mehrere Hardware-Decodierblöcke führen Operationen in Verbindung mit dem Decodieren des Videostromes aus, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke dem Decodieren von Videoströmen dienen, die unter Verwendung verschiedener Videocodierstandards codiert wurden.A Hardware multi-standard video decoder device. A command analyzer accesses a video stream and identifies a video encoding standard, used to encode the video stream. Several hardware decode blocks perform operations in connection with the decoding of the video stream, with different Subsets of the multiple hardware decode blocks Decode video streams which encodes using various video coding standards were.

Claims (10)

Verfahren zum Decodieren, wobei das Verfahren unter Verwendung einer Multistandard-Hardware-Videodecodervorrichtung implementiert wird, das Verfahren aufweisend: Zugreifen auf einen ersten Videostrom, wobei der erste Videostrom einer von mehreren Videoströmen ist; Identifizieren eines ersten Videostandards, der zum Codieren des ersten Videostromes verwendet wurde; Bestimmen einer ersten Teilmenge von Hardware-Decodierblöcken aus mehreren Hardware-Decodierblöcken der Multistandard-Hardware-Videodecodervorrichtung, die zum Decodieren des ersten Videostromes verwendet werden, wobei verschiedene Teilmengen der mehreren Hardware-Decodierblöcke zum Decodieren von Videoströmen dienen können, die unter Verwendung verschiedener Videocodierstandards codiert wurden; und Decodieren des ersten Videostromes unter Verwendung der ersten Teilmenge von Hardware-Decodierblöcken.Method for decoding, wherein the method using a multi-standard hardware video decoder device implementing the method comprising: To access to a first video stream, wherein the first video stream is one of several Video streaming is; Identify a first video standard used to encode the first video stream has been used; Determining a first subset of hardware decode blocks several hardware decode blocks the multi-standard hardware video decoder device, which are used to decode the first video stream, wherein different subsets of the multiple hardware decoding blocks for Decode video streams can serve that coded using different video coding standards; and Decoding the first video stream using the first subset of hardware decode blocks. Verfahren nach Anspruch 1, ferner aufweisend: Aktivieren der Teilmenge von Hardware-Decodierblöcken, so dass ein Hardware-Decodierblock, der nicht an der Decodierung des ersten Videostromes beteiligt ist, nicht aktiviert wird.The method of claim 1, further comprising: Activate the subset of hardware decode blocks such that a hardware decode block, which is not involved in the decoding of the first video stream, not activated. Verfahren nach Anspruch 1, wobei die mehreren Hardware-Decodierblöcke innerhalb einer mehrstufigen Makroblockebenen-Pipeline implementiert sind.The method of claim 1, wherein the plurality of hardware decode blocks within a multi-level macroblock level pipeline are implemented. Verfahren nach Anspruch 3, ferner aufweisend: Deaktivieren von Hardware-Decodierblöcken innerhalb einer Stufe der mehrstufigen Makroblockebenen-Pipeline, wenn keine Daten des ersten Videostromes in der Stufe empfangen werden.The method of claim 3, further comprising: Deactivate of hardware decode blocks within a stage of the multi-level macroblock layer pipeline, if no data of the first video stream is received in the stage become. Verfahren nach Anspruch 1, ferner aufweisend: Zugreifen auf eine Speichereinheit nach der Decodierung des ersten Videostromes.The method of claim 1, further comprising: Access to a memory unit after decoding the first video stream. Verfahren nach Anspruch 1, ferner aufweisend: Zugreifen auf die mehreren Videoströme; Identifizieren eines zweiten Videostandards, der für Videoströme der mehreren Videoströme verwendet wurde; Verschachteln von Abschnitten der mehreren Videoströme; Bestimmen mehrerer Teilmengen von Hardware-Decodierblöcken der mehreren Hardware-Decodierblöcke; und Decodieren der mehreren Videoströme unter Verwendung der mehreren Teilmengen von Hardware-Decodierblöcken.The method of claim 1, further comprising: Access on the several video streams; Identify a second video standard used for video streams of the multiple video streams; interlace portions of the multiple video streams; Determine several Subsets of hardware decode blocks of the plurality of hardware decode blocks; and decoding the multiple video streams using the multiple subsets of hardware decode blocks. Verfahren nach Anspruch 6, wobei die mehreren Videoströme mindestens einen digitalen Standbildstrom und einen digitalen Filmstrom umfassen.The method of claim 6, wherein the plurality of video streams is at least a digital still image stream and a digital film stream. Verfahren nach Anspruch 7, wobei die Abschnitte der mehreren Videoströme Frames des digitalen Standbildstromes und des digitalen Filmstromes sind.The method of claim 7, wherein the sections of multiple video streams Frames of digital still image stream and digital film stream are. Verfahren nach Anspruch 6, wobei die mehreren Videoströme mehrere digitale Filmströme umfassen.The method of claim 6, wherein the plurality of video streams comprises a plurality of video streams digital movie streams include. Verfahren nach Anspruch 9, wobei die Abschnitte der mehreren Videoströme Makroblöcke der mehreren digitalen Filmströme sind.The method of claim 9, wherein the sections the multiple video streams macroblocks of the several digital movie streams are.
DE200611003307 2005-12-09 2006-12-06 Hardware multi-standard video decoder device Expired - Fee Related DE112006003307T8 (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 (2)

Publication Number Publication Date
DE112006003307T5 true DE112006003307T5 (en) 2008-10-23
DE112006003307T8 DE112006003307T8 (en) 2009-01-29

Family

ID=38163412

Family Applications (1)

Application Number Title Priority Date Filing Date
DE200611003307 Expired - Fee Related DE112006003307T8 (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)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8705630B2 (en) * 2006-02-10 2014-04-22 Nvidia Corporation Adapting one type of encoder to another type of encoder
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

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5576765A (en) * 1994-03-17 1996-11-19 International Business Machines, Corporation Video decoder
US5598222A (en) 1995-04-18 1997-01-28 Hatachi American, Ltd. Method and apparatus for decoding multiple video bitstreams using a common memory
US6366326B1 (en) * 1996-08-01 2002-04-02 Thomson Consumer Electronics Inc. System for acquiring, processing, and storing video data and program guides transmitted in different coding formats
JP3607798B2 (en) * 1997-09-30 2005-01-05 松下電器産業株式会社 Television receiver and video signal processing apparatus
JP3492567B2 (en) * 1999-09-24 2004-02-03 シャープ株式会社 Digital AV system capable of mutual data transmission and reception
US20030079035A1 (en) * 2001-10-18 2003-04-24 Yazaki North America, Inc. Multi-format media decoder and method of using same as an interface with a digital network
JP2003152546A (en) * 2001-11-15 2003-05-23 Matsushita Electric Ind Co Ltd Multi-format stream decoder and multi-format stream sender
WO2003085494A2 (en) * 2002-04-01 2003-10-16 Broadcom Corporation Video decoding system
US8284844B2 (en) * 2002-04-01 2012-10-09 Broadcom Corporation Video decoding system supporting multiple standards
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
JP2005267172A (en) * 2004-03-18 2005-09-29 Sony Corp Content reception system, device and method, recording medium, and program
US7590059B2 (en) * 2004-05-21 2009-09-15 Broadcom Corp. Multistandard video decoder
US8705632B2 (en) * 2005-03-30 2014-04-22 Intel Corporation Decoder architecture systems, apparatus and methods
KR100668346B1 (en) * 2005-10-04 2007-01-12 삼성전자주식회사 Filtering apparatus and method for a multi-codec

Also Published As

Publication number Publication date
WO2007070343A3 (en) 2008-01-17
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
JP2009518960A (en) 2009-05-07

Similar Documents

Publication Publication Date Title
DE112007000359B4 (en) Processing of video data
DE112012001609B4 (en) Intra prediction methods, encoders and decoders for using the same
DE60220106T2 (en) Method and device for reducing interference in decoded images with postfiltering
DE112006000270T5 (en) Work buffer for storing loop filter intermediate data
DE10190285B4 (en) Method and system for processing compressed video signals
DE112006000271T5 (en) Work buffer for storing loop filter intermediate data
JP4680608B2 (en) Image decoding apparatus and method
DE69913990T2 (en) SYSTEM FOR EDITING COMPRESSED IMAGE SEQUENCES
DE69834959T2 (en) Predictive image decoding method
DE102016225270A1 (en) METHOD, APPLICATION PROCESSOR, AND MOBILE DEVICE FOR PROCESSING A REFERENCE PICTURE
DE202016008175U1 (en) Adaptive directed intra-prediction with block size
DE112017003212T5 (en) Method and system for video coding with context decoding and reconstruction workaround
DE102019201370A1 (en) PROCESSING MULTIDIRECTIONAL IMAGES IN SPATIAL VIDEO CODING APPLICATIONS
DE102005040026A1 (en) Apparatus and method for processing video / image data
KR20070033417A (en) Method and system for performing deblocking filtering
DE202016008164U1 (en) Intelligent sorting of recursive block partitioning for advanced intra-prediction in video coding
DE112006003307T5 (en) Hardware multi-standard video decoder device
DE19755345A1 (en) Reverse playback of video signals in the MPEG standard
DE102016125086A1 (en) Adaptive directional loop filter
DE102020125206A1 (en) METHOD AND SYSTEM FOR MULTI-CHANNEL VIDEO ENCODING WITH FRAMERATE CHANGE AND CROSS-CHANNEL REFERENCING
DE60300591T2 (en) Method and device for decompressing images by transcoding into compressed moving pictures
DE10296787B4 (en) Selective predication for intra-coding a video data block
DE102020128902A1 (en) MOTION ADAPTIVE VIDEO CODING
DE4408522C2 (en) Device for processing image data and method for processing image data
DE102016015996B3 (en) Adaptive tile data size encoding for video and image compression

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8696 Reprint of defective front page
OP8 Request for examination as to paragraph 44 patent law
8139 Disposal/non-payment of the annual fee
R082 Change of representative

Representative=s name: KRAUS & WEISERT PATENTANWAELTE PARTGMBB, DE