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.