Dokumentenidentifikation |
DE112006000270T5 13.12.2007 |
Titel |
Arbeitspuffer zum Speichern von Schleifenfilterzwischendaten |
Anmelder |
Advanced Micro Devices, Inc., Sunnyvale, Calif., US |
Erfinder |
Kwan, Bill, Austin, Tex., US; Schlanger, Erik, Austin, Tex., US; Rozas, Raquel, Evanston, Ill., US; King, Casey, Austin, Tex., US |
Vertreter |
Grünecker, Kinkeldey, Stockmair & Schwanhäusser, 80538 München |
DE-Aktenzeichen |
112006000270 |
Vertragsstaaten |
AE, AG, AL, AM, AT, AU, AZ, BA, BB, BG, BR, BW, BY, BZ, CA, CH, CN, CO, CR, CU, CZ, DE, DK, DM, DZ, EC, EE, EG, ES, FI, GB, GD, GE, GH, GM, HR, HU, ID, IL, IN, IS, JP, KE, KG, KM, KN, KP, KR, KZ, LC, LK, LR, LS, LT, LU, LV, LY, MA, MD, MG, MK, MN, MW, MX, MZ, NA, NG, NI, NO, NZ, OM, PG, PH, PL, PT, RO, RU, SC, SD, SE, SG, SK, SL, SM, SY, TJ, TM, TN, TR, TT, TZ, UA, UG, US, UZ, VC, VN, YU, ZA, ZM, ZW, EP, AT, BE, BG, CH, CY, CZ, DE, DK, EE, ES, FI, FR, GB, GR, HU, IE, IS, IT, LT, LU, LV, MC, NL, PL, PT, RO, SE, SI, SK, TR, OA, BF, BJ, CF, CG, CI, CM, GA, GN, GQ, GW, ML, MR, NE, SN, TD, TG, AP, BW, GH, GM, KE, LS, MW, MZ, NA, SD, SL, SZ, TZ, UG, ZM, ZW, EA, AM, AZ, BY, KG, KZ, MD, RU, TJ, TM |
WO-Anmeldetag |
17.01.2006 |
PCT-Aktenzeichen |
PCT/US2006/001599 |
WO-Veröffentlichungsnummer |
2006081098 |
WO-Veröffentlichungsdatum |
03.08.2006 |
Date of publication of WO application in German translation |
13.12.2007 |
Veröffentlichungstag im Patentblatt |
13.12.2007 |
IPC-Hauptklasse |
H04N 7/26(2006.01)A, F, I, 20060117, B, H, DE
|
IPC-Nebenklasse |
H04N 7/50(2006.01)A, L, I, 20060117, B, H, DE
|
Beschreibung[de] |
Hintergrund der Erfindung
Gebiet der Erfindung
Die vorliegende Erfindung betrifft die Videoverarbeitungstechnologie.
In einem Aspekt betrifft die vorliegende Erfindung das Dekomprimieren von digitalen
Videoinformationen.
Beschreibung des Stands der Technik
Da Videoinformationen eine große Menge an Speicherplatz erfordern,
werden Videoinformationen im Allgemeinen komprimiert. Um folglich komprimierte Videoinformationen,
die beispielsweise auf einer CD-ROM oder einer DVD gespeichert sind, anzuzeigen,
müssen die komprimierten Videoinformationen dekomprimiert werden, um die dekomprimierten
Videoinformationen bereitzustellen. Die dekomprimierte Videoinformationen werden
dann in einem Bitstrom einer Anzeige zugeführt. Der dekomprimierte Bitstrom
aus Videoinformationen wird typischerweise als Bitfeld bzw. als eine „Bitmap"
in Speicherstellen gespeichert, die den Pixelpositionen auf einer Anzeige entsprechen.
Die Videoinformationen, die erforderlich sind, um einen einzelnen Bildschirm aus
Informationen auf einer Anzeige zu bilden, werden als ein Block bzw. ein Rahmen
bezeichnet. Ein Ziel vieler Videosysteme besteht darin, komprimierte Videoinformationen
schnell und effizient zu decodieren, um damit Bewegtbilder bereitzustellen, indem
eine Sequenz aus Bildrahmen angezeigt wird.
Die Standardisierung von Aufzeichnungsmedien, Geräten und diversen
Aspekten der Datenhandhabung, etwa der Videokomprimierung, ist äußerst
wünschenswert im Hinblick für ein ständiges Wachsen dieser Technologie
und deren Anwendungen. Eine Reihe von (De-)Komprimierungsstandards wurden entwickelt
oder sind gegenwärtig in der Entwicklung, um Videoinformationen zu komprimieren
und dekomprimieren, etwa Bewegtbildexpertengruppenstandards (MPEG) für die
Videokodierung und Dekodierung (z. B. MPEG-1, MPEG-2, MPEG-3, MPEG-4, MPEG-7, MPEG-21)
oder die Windows-Media Videokomprimierungsstandards (beispielsweise WMV9). Jeder
dieser MPEG- und WMF-Standards ist hiermit durch Bezugnahme in seiner Gesamtheit
mit eingeschlossen in der gleichen Weise, als ob diese hierin beschrieben werden.
Im Allgemeinen beinhalten Videokomprimierungstechniken eine rahmeninterne
Komprimierung und eine Zwischenrahmenkomprimierung, die so arbeiten, dass Videoinformationen
komprimiert werden, indem sowohl räumliche als auch zeitliche Redundanzen reduziert
werden, die in Videobildrahmen bzw. Bildblöcken enthalten sind. Rahmeninterne
Komprimierungsverfahren verwenden lediglich Informationen, die innerhalb des Bildrahmens
enthalten sind, um den Bildrahmen zu komprimieren, der als ein I-Bildrahmen bzw.
Bildblock bezeichnet wird. Zwischenrahmenkomprimierungsverfahren komprimieren Bildrahmen
in Bezug auf vorhergehende und/oder nachfolgende Bildrahmen und werden typischerweise
als vorhergesagte Bildrahmen, P-Rahmen oder B-Rahmen bezeichnet. Rahmeninterne und
Zwischenrahmenkomprimierungsverfahren verwenden typischerweise eine räumliche
oder blockbasierte Kodierung, wodurch ein Videobildrahmen zum Kodieren in Blöcke
aufgeteilt wird (was auch als ein Blocktransformationsprozess bezeichnet wird).
Z. B. wird ein I-Bildrahmen in 8×8 Blöcke aufgeteilt. Die Blöcke
werden unter Anwendung eines diskreten Kosinustransformations-(DCT) Kodierschemas
kodiert, wobei Koeffizienten als eine Amplitude einer speziellen Kosinusbasisfunktion
kodiert werden, oder es werden andere Transformationen (beispielsweise die Ganzzahltransformation)
verwendet. Die transformierten Koeffizienten werden dann quantifiziert, wodurch
Koeffizienten mit Amplitudenpegeln ungleich Null oder Sequenzen (oder Teilsequenzen)
mit Koeffizienten mit Amplitudenpegel Null erzeugt werden. Die quantifizierten Koeffizienten
werden dann auf Sequenzebene kodiert (oder Sequenzlängen kodiert), um die langen
Sequenzen oder Abläufe von Koeffizienten mit Wert Null zu kondensieren. Die
Ergebnisse werden dann Entropy-kodiert in einem Kodierer mit variabler Länge
(VLC), wobei statistische Kodierungsverfahren eingesetzt werden, die Codewörter
den zu kodierenden Werten zuordnen, oder wobei andere geeignete Zufallkodierungsverfahren
eingesetzt werden, etwa eine kontextbasierte adaptive binäre arithmetische
Kodierung (CABAC), eine adaptive Kontextkodierung mit variabler Länge (CAVLC)
und dergleichen. Werte, die mit größerer Häufigkeit auftreten, werden
kurzen Codewerten zugeordnet, und Werte, die selten auftreten, werden langen Codewörtern
zugeordnet. Im Mittel dominieren die häufigeren kürzeren Codewörter,
so dass die Kodierungszeichenfolge kürzer ist als die ursprünglichen Daten.
Somit komprimieren räumliche oder blockbasierte Kodierverfahren die digitalen
Informationen, die mit einem einzelnen Bild verknüpft sind, um die digitalen
Informationen zu komprimieren, werden in Videokomprimierverfahren, wie P-Rahmen
und/oder B-Rahmen verwendet, um die Tatsache auszunutzen, dass es eine zeitliche
Korrelation zwischen aufeinanderfolgenden Rahmen gibt. Die Zwischenrahmenkompressionsverfahren
erkennen den Unterschied zwischen unterschiedlichen Bildrahmen und kodieren dann
räumlich die Differenzinformation unter Anwendung von DCT-Quantisierung, Sequenzlängen
und Entropy-Kodierungsverfahren, obwohl in anderen Implementierungen auch unterschiedliche
Blockkonfigurationen eingesetzt werden können. Beispielsweise wird ein P-Bildrahmen
in 16×16 Makroblöcke aufgeteilt (beispielsweise mit vier 8×8 Luminanzblöcken
und zwei 8×8 Chrominanzblöcken) und die Makroblöcke werden komprimiert.
Unabhängig davon, ob rahmeninterne Komprimiertechniken oder Zwischenrahmenkomprimiertechniken
eingesetzt werden, bedeutet die Verwendung von räumlichen oder blockbasierten
Kodierverfahren zum Kodieren der Videodaten, dass die komprimierten Videodaten mit
variabler Länge kodiert sind und anderweitig komprimiert sind, wobei blockbasierte
Komprimierverfahren in der oben beschriebenen Weise verwendet werden.
An dem Empfangsgerät oder dem Wiedergabegerät werden die
Komprimierschritte umgekehrt, um die Videodaten, die mit Blocktransformationen bearbeitet
werden, zu decodieren. 1 zeigt ein konventionelles
System 30 zum Dekomprimieren von Videoinformationen, das einen Eingangsstromdekodierbereich
35, einen Bewegungsdekodierer 38, einen Addierer 39,
einen Bildrahmenpuffer 40 und eine Anzeige 41 aufweist. Der Eingangsstromdekodierer
35 empfängt einen Strom aus komprimierten Videoinformationen im Eingangspuffer
31, führt eine Decodierung mit variabler Länge im VLC-Dekodierer
32 durch, kehrt das Zickzackmuster und die Quantisierung im inversen Quantisierer
33 um, invertiert die DCT-Tansformation im IDCT 34 und liefert
Blöcke aus statisch dekomprimierten Videoinformationen an den Addierer
39. In dem Bewegungsdekodierbereich 38 empfängt die Bewegungskompensationseinheit
37 Bewegungsinformation von dem VLC-Dekodierer 32 und eine Kopie
der vorhergehenden Bilddaten (die in dem Puffer 36 zur Speicherung eines
vorhergehenden Bildes enthalten sind) und liefert bewegungskompensierte Pixel an
den Addierer 39. Der Addierer 39 empfängt die statisch dekomprimierte
Videoinformation und die bewegungskompensierten Pixel und liefert dekomprimierte
Pixel an den Bildrahmenpuffer 40, der die Information zur Anzeige
41 liefert.
Bei konventionellen Videokodier- und Dekodierstrukturen können
Bildfehler bei der Blockbildung (als erkennbare Diskontinuitäten zwischen Blöcken)
in einen Bildrahmen aus der blockbasierten Transformation, der Bewegungskompensation,
der Quantisierung und/oder anderen verlustbehafteten Verarbeitungsschritten eingeführt
werden. Frühere Versuche, um die Bildfehler bei der Blockbildung zu reduzieren,
verwendeten die Glättung im Überlappbereich oder eine blockaufhebende
Filterung (in einer schleifeninternen Verarbeitung oder einer Nachbearbeitung),
um Bildrahmen durch Glätten der Grenzen zwischen den Blöcken zu verarbeiten.
Beispielsweise wird in dem WMF9-Standard spezifiziert, dass die Überlappglättung
und schleifeninterne Blockaufhebung an dem gesamten Bild durchgeführt werden,
um Bildfehler bei der Blockbildung zu reduzieren. Wenn die WMV9-Decodierung aktiviert
ist, wird die Überlappungsglättung lediglich an den 8×8 Blockgrenzen
ausgeführt, wobei mit der Glättung in der vertikalen Richtung für
den gesamten Bildrahmen begonnen wird, und anschließend wird die Glättung
an dem Überlappbereich in der horizontalen Richtung für den gesamten Bildrahmen
ausgeführt. Als nächste wird eine schleifeninterne Blockaufhebung, falls
diese aktiviert ist, in dieser Reihenfolge ausgeführt: (i) alle 8×8 Blockhorizontalgrenzlinien
in dem Bildrahmen werden gefiltert, wobei von der obersten Länge aus gestartet
wird; (ii) alle 8×4-Teilblockhorizontalgrenzlinien im Bildrahmen werden gefiltert,
wobei von der obersten Linie aus gestartet wird, (iii) alle vertikalen Grenzlinien
der 8×8 Blöcke werden gefiltert, wobei von der äußerst linken
Linie gestartet wird; und (iv) alle vertikalen Grenzlinien der 4×8 Teilblöcke
werden gefiltert, wobei von der äußersten linken Linie begonnen wird.
In konventionellen Lösungen werden zwei Durchläufe für den gesamten
Bildrahmen angewendet, wobei der erste Durchlauf dazu dient, die Überlappungsglättung
auszuführen, und der zweite Schritt dient für eine schleifeninterne Blockaufhebung.
Obwohl auch andere Erfordernisse (beispielsweise entsprechend einem Parameter QUANT
und entsprechend den Blockarten) zu erfüllen sind, die auch zutreffen, wenn
bestimmt wird, ob die Verarbeitung des einzelnen Schrittes durchgeführt werden
soll oder nicht, liegt die Absicht dieser Prozesse darin, über die Ränder
der 16×16-Makroblöcke, der 8×8-Blöcke oder der 4×4-Teilblöcke
hinweg zu glätten, wodurch die Bildfehler der Blockverarbeitung, die durch
die 2-D-Transformation und Quantisierung eingeführt wurden, entfernt werden.
Bei prozessorgestützten Vorgehensweisen zur Handhabung der Videodekomprimierung
ist das Hinzufügen einer Glättungsfunktion oder einer Blockaufhebungsfunktion
ein rechenintensiver Filterprozess. Diese Reihenfolge der Verarbeitung kann in Software
ausgeführt werden, wenn es einen großen Pufferspeicher gibt, um einen
Bildrahmen aufzunehmen, beispielsweise VGA-Größe mit 640×480 Pixel,
was 307 kBytes entspricht. Andererseits werden in hardwaregestützten Lösungen
zum Decodieren das Glätten und die Blockaufhebung nicht gleichzeitig ausgeführt,
und die Blockaufhebung wird an dem Bildrahmen als Ganzes ausgeführt, wodurch
ein großer lokaler Speicher erforderlich ist, der entsprechende Erfordernisse
im Hinblick auf die Busbandbreite auferlegt und damit Speicherzugriffszeit opfert.
Folglich besteht eine große Notwendigkeit, die Verarbeitungserfordernisse,
die mit Dekomprimierverfahren verknüpft sind, zu reduzieren und die Dekomprimieroperationen
zu verbessern, wobei insbesondere die Überlappungsglättung und/oder die
Blockaufhebungsfilteroperationen zu berücksichtigen sind. Weitere Beschränkungen
und Nachteile konventioneller Systeme erkennt der Fachmann nach dem Studium des
verbleibenden Teils der vorliegenden Anmeldung, wenn Bezug auf die Zeichnungen und
die folgende detaillierte Beschreibung genommen wird.
Überblick über die Erfindung
Durch Anwenden einer Kombination aus Software und Hardware zur Ausführung
der Videodekomprimierung wird ein flexibles Dekomprimierungssystem bereitgestellt,
das ausgebildet ist, rasch und effizient eine Vielzahl unterschiedlicher Videokomprimierschemata
auszuführen. Das flexible Dekomprimiersystem umfasst einen Prozessor zum Ausführen
von vorderseitigen Dekomprimierschritten und einen Videobeschleuniger zum Ausführen
nachgeordneter Dekomprimierschritte. Um die Speicherbandbreitenerfordernisse in
dem Videobeschleuniger zum Ausführen von Überlappungsglättungs- und
schleifeninternen Blockaufhebungsfilteroperationen für Videobilddaten zu reduzieren,
ist der schleifeninterne Filter mit einem Arbeitspufferspeicher oder einer Speichereinrichtung
verbunden, die das stückweise Verarbeiten bei der Überlappungsglättung
und der schleifeninternen Blockaufhebung in einer makroblockgestützten Weise
ermöglicht. Die Verwendung eines Arbeitspuffers, um eine stückweise Verarbeitung
bzw. der Teilverarbeitung der Filteroperationen in einer Makroblock-gestützten
Weise auszuführen, ist wesentlich effizienter das bildrahmengestützte
Verfahren. Da die Größe des Arbeitspufferspeichers mit der Breite des
Bildrahmens in Beziehung steht, kann die Größe des chipinternen Speichers
verringert werden. Z. B. kann die Größe des Arbeitspufferspeichers ausreichend
groß sein, um nicht mehr als eine Reihe von teilweise gefilterten Blöcken
aus einem Bildrahmen aus Videodaten aufzunehmen.
Gemäß einer oder mehreren Ausführungsformen der vorliegenden
Erfindung werden ein Videoverarbeitungssystem, eine Vorrichtung und ein Verfahren
bereitgestellt, in welchem ein Prozessor und eine Videodekodierschaltung Videodaten
dekodieren, die mit Blocktransformationen in mehrere Makroblöcke verarbeitet
wurden. In Verbindung mit den Dekodieroperationen werden ein schleifinterner Filter-
und Arbeitspufferspeicher, der in einer oder mehreren integrierten Schaltungen vorgesehen
ist, verwendet, um eine stückweise Verarbeitung durch Glätten und Blockaufhebung
ausgewählter Pixeldaten in einem ersten Makroblock auszuführen, um einen
oder mehrere fertiggestellte Blöcke und einen oder mehrere teilweise gefilterte
Blöcke zu erzeugen, wobei zumindest einer der teilweise gefilterten Blöcke
Steuerdaten und Pixeldaten enthält, die in einem Arbeitspufferspeicher gespeichert
sind. Als Folge davon kann ein Block, der benachbart zu einem zuvor bearbeiten Makroblock
ist, für die Überlappglättung und die Blockaufhebung vollständig
gefiltert werden und dann als ein fertiggestellter Block während einer ersten
Filteroperation ausgegeben werden, während ein Block, der benachbart zu einem
nachfolgend bearbeiteten Makroblock liegt, für die Überlappglättung
und die Blockaufhebung teilweise gefiltert werden kann und nachfolgend als ein teilweise
gefilterter Block in den Arbeitspufferspeicher ausgegeben werden kann. Der Arbeitspufferspeicher
wird von dem schleifeninternen Filter verwendet, um einen teilweise gefilterten
Block bereitzustellen, der zum Glätten und zur Auflösung von Blöcken
von Pixeldaten in dem ersten Makroblock verwendet wird, wobei der abgeholte teilweise
gefilterte Block während der Bearbeitung eines vorhergehenden Makroblocks erzeugt
wurde. Durch aufeinanderfolgendes Verarbeiten jeder Zeile bzw. Reihe aus Makroblöcken
in einem Videobildrahmen für die Überlappungsglättung und die Blockaufhebung
der Reihe nach in den einzelnen Makroblöcken können der schleifeninterne
Filter und der Arbeitspufferspeicher verwendet werden, um sequenziell das Glätten
und die Blockaufhebung an Makroblöcken in einer Pipeline-Verarbeitung auszuführen.
Der Fachmann erkennt die Aufgaben, Vorteile und andere neuen Merkmale
der vorliegenden Erfindung aus der folgenden detaillierten Beschreibung, wenn diese
im Zusammenhang mit den angefügten Patentansprüchen und den begleitenden
Zeichnungen studiert wird.
Kurze Beschreibung der Zeichnungen
1 zeigt eine Blockansicht eines System zum Dekomprimieren
von Videoinformationen.
2 zeigt eine Blockansicht eines beispielhaften Videodekomprimiersystems,
das gemäß der vorliegenden Erfindung aufgebaut ist.
3 zeigt eine vereinfachte Darstellung eines schleifeninternen
Filterprozesses, in welchem ein Arbeitspufferspeicher verwendet wird, um in effizienter
Weise die Überlappungsglättung und die schleifeninterne Blockauflösung
bzw. Blockaufhebung in Hardware gemäß einer ausgewählten Ausführungsform
der vorliegenden Erfindung zu handhaben.
4 zeigt eine beispielhafte Technologie zum Reduzieren
der Eigenschaften in einem dekodierten Bildrahmen unter Anwendung eines Glättungs-
und Blockaufhebungsfilters in einem Videokodierer oder Dekodierer.
5a bis k zeigen, wie die stückweise Verarbeitung
verwendet werden kann, um Glättungs- und Blockaufhebungsprozeduren für
Luminanzblöcke einzurichten.
6a bis f zeigen, wie die stückweise Verarbeitung
verwendet werden kann, um Glättungs- und Blockaufhebungs-Prozeduren für
Chrominanz-Blöcke einzurichten.
Arten zum Ausführen der Erfindung
Obwohl anschauliche Ausführungsformen der vorliegenden Erfindung
nachfolgend beschrieben werden, ist zu beachten, dass die vorliegende Erfindung
auch ohne die speziellen Details praktiziert werden kann, und dass zahlreiche implementationsspezifische
Entscheidungen getroffen werden können auf der Grundlage der Erfindung, wie
sie hierin beschrieben ist, um die speziellen Ziele der Entwickler zu erreichen,
etwa die Verträglichkeit mit systemabhängigen und geschäftsabhängigen
Rahmenbedingungen, die sich von einer Implementierung zur anderen unterscheiden
können. Obwohl ein derartiger Entwicklungsaufwand komplex und zeitaufwendig
sein kann, ist er dennoch eine Routinemaßnahme für den Fachmann, wenn
dieser im Besitz der vorliegenden Offenbarung ist. Beispielsweise sind ausgewählte
Aspekte in Blockdiagrammform gezeigt, anstatt dass detaillierte Darstellungen angegeben
sind, um eine klarere Darstellung der vorliegenden Erfindung zu erreichen. Derartige
Beschreibungen und Darstellungen werden vom Fachmann verwendet, um den Inhalt seiner
Arbeit zu beschreiben und anderen Fachleuten zu vermitteln. Die vorliegende Erfindung
wird nun mit Bezug zu den Zeichnungen nachfolgend beschrieben.
2 zeigt eine Blockansicht eines beispielhaften Videodekomprimiersystems
100 gemäß der vorliegenden Erfindung. Wie gezeigt, kann das Videodekomprimiersystem
100 in einem beliebigen Videowiedergabegerät, etwa einem Tischrechner,
oder einem tragbaren Computer, in einem drahtgestützten oder mobilen Gerät,
in persönlichen digitalen Assistenten, Mobiltelefonen oder Funktelefonen oder
anderen beliebigen Videowiedergabegerät eingerichtet werden, die Videobildfunktionen
enthalten. Wie in 2 gezeigt ist, ist das Videodekomprimiersystem
100 als ein Host- bzw. als ein Leitrechner oder als eine Anwendungsverarbeitungseinheit
eingerichtet, die einen Bus 95 enthält, der mit einem oder mehreren
Prozessoren oder Verarbeitungseinheiten 50 und einer Video- oder Medienbeschleunigungshardwareeinheit
101 verbunden ist. Ferner umfasst dass Videodekomprimiersystem
100 ein Hauptspeichersystem, das einen großen DDR SDRAM
62, 64 enthält, auf den über eine DDR-Steuerung
60 zugegriffen wird. Zusätzlich oder alternativ wird auf einen oder
mehrere Speicher (beispielsweise IDE 72, eine Flash-Speichereinheit
74, ein ROM 76, etc.) über die statische Speichersteuerung
70 zugegriffen. Der DDR SDRAM oder die anderen Speicher können in
dem Videokomprimiersystem 100 integriert sein oder können externe
Komponente sein. Selbstverständlich können auch auf andere periphere Geräte
oder Anzeigegeräte (82, 84, 86, 92) über
die entsprechenden Steuerungen 80, 90 zugegriffen werden. Der
Einfachheit halber und zum besseren Verständnis sind nicht alle Elemente, die
in dem Videodekomprimiersystem 100 vorgesehen sind, detailliert beschrieben.
Derartige Details sind dem Fachmann gut bekannt und können sich in Abhängigkeit
von dem speziellen Computeranbieter oder der speziellen Mikroprozessorart unterscheiden.
Ferner kann das Videodekomprimiersystem 100 andere Busse, Geräte und/oder
Subsysteme aufweisen, abhängig von der gewünschten Implementierung. Beispielsweise
kann das Videodekomprimiersystem 100 Cash-Speicher, Modems, parallele oder
serielle Schnittstellen, SCSI-Schnittstellen, Netzwerkschnittstellenkarten, und
dergleichen enthalten. In der dargestellten Ausführungsform führt die
CPU 50 die Software aus, die in dem Flash-Speicher 74 und/oder
in dem SDRAM 62, 64 gespeichert ist.
In dem in 2 dargestellten Videodekomprimiersystem
100 führt die CPU 50 die anfängliche Dekodierfunktion
mit variabler Länge durch, wie dies durch den VLD-Block 52 angegeben
ist, während die Medienbeschleunigungshardwareeinheit 101 die inverse
Quantisierung 104, die inverse Transformation 106, die Bewegungskompensation
108, die schleifeninterne Filterung 110, die Farbraumkonversion
112, die Skalierung 114 und die Filterung 116 an den
dekodierten Daten ausführt. Die resultierenden dekodierten Daten können
temporär in dem Ausgabepuffer 118 und/oder Bildpuffer (nicht gezeigt)
gespeichert werden, bevor diese auf der Anzeige 92 dargestellt werden.
Durch Aufteilen der Decodierverarbeitungsfunktionen zwischen dem Prozessor
50 und der Medienbeschleunigungshardware 101 können die eingangsseitigen
Decodierschritte (beispielsweise die Decodierung mit variabler Länge) in Software
eingerichtet werden, um eine Reihe unterschiedlicher Komprimierungsschemata zu berücksichtigen
(beispielsweise MPEG-1, MPEG-2, MPEG-3, MPEG-4, MPEG-7, MPEG-21, WMV9, etc.). Die
eingangsseitig erzeugten dekodierten Daten werden der Medienbeschleunigungshardware
101 zugeleitet, die die dekodierten Daten weiter dekodiert, um Pixelwerte
dem Ausgabepuffer 118 oder dem Bildpuffer auf Grundlage einzelner Makroblöcke
zuzuführen, bis ein Bildrahmen vollständig ist.
Während des Betriebs empfängt das Videodikomprimiersystem
109 ein komprimiertes Videosignal von einer Videosignalquelle, etwa einer
CD-ROM, einer DVD, oder einer anderen Speichereinrichtung. Das komprimierte Videosignal
wird als ein Strom aus komprimierten Videoinformationen zu dem Prozessor
50 geführt, der Befehle ausführt, um den mit variabler Länge
codierten Bereich des komprimierten Signals zu dekodieren, um damit ein Signal mit
dekodierten Daten mit variabler Länge (VLD-Daten) bereitzustellen. Sobald der
Softwareassisten verwendet wird, um eine Dekodierung mit variabler Länge auszuführen,
werden die VLD-Daten (die einen Kopfbereich, Matrixgewichtungen, Bewegungsvektoren,
transformierte Restkoeffizienten und sogar differenzielle Bewegungsvektoren
enthalten) zu der Medienbeschleunigungshardwareeinheit 101 geleitet, wobei
dies direkt oder unter Anwendung der Datenkomprimierverfahren erfolgen kann, wie
sie vollständiger in der US-Patentanmeldung mit der Nr. 11/042,365 beschrieben
sind (Titel: Leichte Komprimierung von Eingangsdaten") erfolgen kann. In der Mediumbeschleunigungshardwareeinheit
101 werden, sobald die VLD-Daten empfangen sind, die Daten der inversen
Zickzack- und Quantisierschaltung 104 zugeführt, die das VLD-Datensignal
decodiert, um ein Zickzack-decodiertes Signal bereitzustellen. Die inverse Zickzack-Verarbeitung
und Quantisierung führt zur einer Kompensation im Hinblick auf die Tatsache,
dass während ein komprimiertes Videosignal in einer Zickzack-Sequenzlängenkodierung
komprimiert wird, das Zickzack-decodierte Signal der inversen DCT-Schaltung
106 als sequenzielle Blöcke an Information zugeführt wird. Somit
stellt das Zickzack-decodierte Signal Blöcke bereit, die in einer Reihenfolge
vorliegen, wie sie für die Rasterabtastung über die Anzeige
92 erforderlich sind. Das Zickzack-decodierte Signal wird der inversen
Transformationsschaltung 106 zugeleitet (beispielsweise IDCT oder inverse
Ganzzahltransformation), die eine inverse diskrete Kosinustransformation an dem
Zickzack-dekodierten Videosignal auf Basis einzelner Blöcke ausführt,
um statisch dekomprimierte Pixelwerte oder dekompromierte Fehlerterme bereitzustellen.
Die statische dekomprimierten Pixelwerte werden auf Basis einzelner Blöcke
mittels der Bewegungskompensationseinheit 108 verarbeitet, die eine bildrahmeninterne
vorhergesagte und bidirektionale Bewegungskompensation bietet, wobei ein, zwei und
vier Bewegungsvektoren (16×16, 16×8 und 8×8-Blöcke) unterstützt
werden. Der schleifeninterne Filter 110 führt eine Überlappglättung
und/oder eine Blockaufhebung aus, um Bildfehler der Blockbildung gemäß
dem WMV9-Komprimierstandard zu reduzieren oder zu eliminieren, indem der Arbeitspufferspeicher
111 verwendet wird, um teilweise fertiggestellte Makroblockfilterdaten
zu speichern, wie dies nachfolgend detaillierter beschrieben ist. Der Farbraumkonvertierer
112 konvertiert ein oder mehrere Eingangsdatenformate (beispielsweise YcbCr
4:2:0) in ein oder mehrere Ausgangsformate (beispielsweise RGB), und das Ergebnis
wird im Filter 116 gebildet und/oder skaliert.
Wie hierin offenbart ist, entfernt der schleifeninterne Glättungs-
und Blockaufhebungsfilter 110 Diskontinuitäten an Grenzen zwischen
benachbarten Blöcken, indem jede Reihe aus Makroblöcken während eines
ersten Durchlaufs teilweise gefiltert oder bearbeitet wird. Die Bearbeitung der
teilweise verarbeiteten Blöcke wird während der Bearbeitung der nächsten
Reihe aus Makroblöcken dann abgeschlossen. Mit dieser Technik ist ein kleiner
Arbeitspufferspeicher 111 ausreichend, um die teilweise verarbeiteten Blöcke
in einem Arbeitspufferspeicher zu speichern, im Gegensatz zu der Verwendung eines
großen Speichers, um den gesamten Bildinhalt für das Filtern zu speichern,
wie dies in konventionellen Blockaufhebungsprozessen der Fall ist. Da die Verarbeitung
jedes Blockes für die Überlappungsglättung und die Blockaufhebung
auf Basis einzelner Reihen ausgeführt wird, können die fertiggestellten
Blöcke von dem Filter 110 an einen Fifo-Puffer (nicht gezeigt) ausgegeben
werden, bevor die Blöcke an die CSC 112 übertragen werden.
3 zeigt eine vereinfachte Darstellung eines schleifeninternen
Filterprozesses auf Makroblock-Basis, wobei ein Arbeitspufferspeicher verwendet
wird, um in effizienter Weise die Überlappungsglättung und die Blockaufhebung
gemäß einer ausgewählten Ausführungsform der vorliegenden Erfindung
zu handhaben. In dem Filterprozess erzeugt jeder Durchlauf des schleifeninternen
Filters für eine Reihe von Makroblöcken vollständig fertiggestellte
Blöcke (die vollständig gefiltert sind, um die Blöcke zu glätten
und die Blockaufteilung aufzuheben) und teilweise fertiggestellte Blöcke (die
in dem Arbeitspufferspeicher für die nachfolgende Verwendung beim Glätten
und der Blockaufhebung der nächsten Reihe aus Makroblöcken gespeichert
sind). Wie dargestellt durchläuft jeder einzelne Makroblock (beispielsweise
Makroblock 4 oder „mb4", der vier Luminanzblöcke mb4y0, mb4y1, mb4y2
und mb4y3 enthält) in dem schleifeninternen Filterungsprozess die folgende
Reihenfolge von Verarbeitungsschritten:
- (i) vollständiges Fertigstellen des Glättens und Blockauflösens
der 8×8-Blöcke (beispielsweise mb4y0, mb4y1) benachbart zu dem vorhergehenden
Makroblock (beispielsweise Makroblock 1) und teilweise Fertigstellen des Glättens
und Blockauflösens der 8×8-Blöcke (mb4y2, mb4y3) benachbart zu dem
nächsten Makroblock (beispielsweise Makroblock 7);
- (ii) Ausgeben der fertiggestellten 8×8-Blöcke (beispielsweise mb4y0,
mb4y1) und Speichern der teilweise fertiggestellten 8×8-Blöcke (beispielsweise
mb4y2, mb4y3) in dem Arbeitspufferspeicher;
- (iii) Abrufen der teilweise fertiggestellten 8×8-Blöcke (beispielsweise
mb4y2, mb4y3) aus dem Arbeitspufferspeicher, wenn der nächste Makroblock (beispielsweise
der Makroblock 7) in Bearbeitung ist und Fertigstellen der Bearbeitung
der abgerufenen 8×8-Blöcke (beispielsweise mb4y2, mb4y3); und
- (iv) Ausgeben der fertiggestellten 8×8-Blöcke (beispielsweise mb4y2,
mb4y3) zusammen mit den fertiggestellten 8×8-Blöcken des nächsten
Makroblocks (beispielsweise mb7y0, mb7y1).
Obwohl die Details der Implementierung anwendungsabhängig variieren
können, zeigt 3 eine anschauliche Ausführungsform,
wobei der Bildrahmen 150, der gerade in dem schleifeninternen Filter
110 bearbeitet wird, aus Makroblöcken (beispielsweise
Makroblöcke mb0, mb1, mb2, mb3, mb4, mb5, mb6, mb7, mb8, etc.) aufgebaut und
in mehreren Reihen angeordnet ist (z. B. eine erste Reihe 151, die aus
mb0, mb1 und mb2 gebildet ist). Wie in 3a gezeigt ist, hat der
schleifeninterne Filter 110 bereits einen ersten Durchlauf durch die erste
Reihe aus Makroblöcken 151 durchgeführt. Als Folge des ersten
Durchlaufes durch die erste Reihe 151 sind die oberen Blöcke (mb0y0,
mb0y1, mb1y0, mb1y1, mb2y0, mb2y1) vollständig im Hinblick auf die Überlappungsglättung
und die Blockaufhebung verarbeitet (wie dies durch die Schraffur angegeben ist),
während die unteren Blöcke (mb0y2, mb0y3, mb1y2, mb1y3, mb2y2, mb2y3)
lediglich teilweise im Hinblick auf die Überlappungsglättung und die Blockaufhebung
bearbeitet sind. Zum Zwecke der Fertigstellung der teilweise verarbeiteten Blöcke
aus der ersten Reihe 151 während des nächsten Durchlaufes der
Makroblockverarbeitung werden die teilweise verarbeiteten Blöcke aus der ersten
Reihe 151 in einem Arbeitspufferspeicher 111 gespeichert (wie
dies durch das Punktmuster angezeigt ist). Wie zusätzlich in 3a
gezeigt ist, hat der schleifeninterne Filter 110 begonnen, die zweite Reihe
aus Makroblöcken 152 mit einem Prozess zu verarbeiten, der die teilweise
bearbeiteten Blöcke aus der ersten Reihe 151 fertig stellt. Als Folge
davon sind die Blöcke mb0y2 und mb3y0 im Hinblick auf das Glätten und
Blockaufheben vollständig verarbeitet, und der Block mb3y2 ist nur teilweise
verarbeitet (und in dem Arbeitspuffer gespeichert). Im Hinblick auf die Blöcke,
die durch den Filter 110 in 3a zu verarbeiten sind (wie
dies durch die diagonale Schraffur der gefilterten Blöcke 154 angegeben
ist), sind die Blöcke mb3y1 und mb3y3 teilweise im Hinblick auf das Glätten
und Blockaufheben bearbeitet (und in den Filter 110 bewahrt), der Block
mb1y2 ist ein teilweise fertiggestellter Block, der aus dem Arbeitspuffer abgerufen
wurde, und die verbleibenden Blöcke (mb4y0 und mb4y2) werden aus dem aktuellen
Makroblock erhalten (beispielsweise der Makroblock 4). Wenn der schleifeninterne
Filter 110 die gefilterten Blöcke 154 verarbeitet, wird das
Glätten und die Blockaufhebung in einem oder mehreren der teilweise verarbeiteten
Blöcke fertiggestellt (beispielsweise mb0y3, mb3y1), während die verbleibenden
Blöcke mb1y2, mb4y0, mb4y2 und mb3y3) lediglich teilweise fertiggestellt sind.
Nach dem Verarbeiten der gefilterten Blöcke 156 nimmt
der schleifeninterne Filter 110 neue Daten auf. Dies ist durch den Bildrahmen
155, der in 3b gezeigt ist, dargestellt, wobei gezeigt
ist, dass der Filter 110 gefilterte Blöcke 156 erhält,
indem fertiggestellte Blöcke (beispielsweise mb0y3, mb3y1) ausgegeben werden,
indem ein oder mehrere der teilweise fertiggestellten Blöcke (beispielsweise
mb3y3) in dem Arbeitspufferspeicher gespeichert werden, indem die verbleibenden
teilweise fertiggestellten Blöcke (beispielsweise mb1y2, mb4y0, mb4y2) in dem
Filter um eine Blockposition verschoben werden, indem ein teilweise fertiggestellter
Block (beispielsweise mb1y3) aus der vorhergehenden Reihe aus Makroblöcken
abgerufen wird und indem neue Blöcke (beispielsweise mb4y1, mb4y3) aus dem
aktuellen Makroblock eingeladen werden. Wenn der schleifeninterne Filter
110 die gefilterten Blöcke 156 verarbeitet, wird das Glätten
und die Blockaufhebung in einem oder mehreren der teilweise verarbeiteten Blöcke
abgeschlossen (beispielsweise mb1y2, mb4y0), während die verbleibenden Blöcke
(mb1y3, mb4y1, mb4y3 und mb4y2) nur teilweise fertiggestellt sind.
Nach dem Verarbeiten der gefilterten Blöcke 156 werden
wiederum neue Daten in den schleifeninternen Filter 110 eingeschoben, wie
dies durch den Bildrahmen 157, der in 3c gezeigt ist,
dargestellt ist. Insbesondere erhält der Filter 110 gefilterte Blöcke
158 durch Ausgeben von fertiggestellten Blöcken (beispielsweise mb1y2,
mb4y0), durch Speichern eines oder mehrerer der teilweise fertiggestellten Blöcke
(beispielsweise mb4y2) in dem Arbeitspufferspeicher, durch Verschieben der verbleibenden
teilweise fertiggestellten Blöcke (beispielsweise mb1y3, mb4y1, mb4y3) in dem
Filter um eine Blockposition, durch Abrufen eines teilweise fertiggestellten Blocks
(beispielsweise mb2y2) aus der vorhergehenden Reihe aus Makroblöcken und durch
Einladen neuer Blöcke (beispielsweise mb5y0, mb5y2) aus dem aktuellen Makroblock.
Wenn der schleifeninterne Filter 110 die gefilterten Blöcke
158 verarbeitet, wird das Glätten und die Blockaufhebung in einem
oder mehreren der teilweise verarbeiten Blöcke abgeschlossen (beispielsweise
mb1y3, mb4y1), während die verbleibenden Blöcke (mb2y2, mb5y0, mb5y2 und
mb4y3) nur teilweise fertiggestellt werden. Zu diesem Zeitpunkt sind das Glätten
und die Blockaufhebung an den oberen Blöcken (mb4y0, mb4y1) in dem Makroblock
4 abgeschlossen, aber die unteren Blöcke (mb4y2, mb4y3) sind nur teilweise
fertiggestellt. Durch Speichern der teilweise gespeicherten unteren Blöcke
in dem Arbeitspufferspeicher können die Filteroperationen abgeschlossen werden,
wenn der Filter 110 die nächste Reihe aus Makroblöcken verarbeitet.
Weitere Details einer alternativen Ausführungsform der vorliegenden
Erfindung sind in 4 gezeigt, die eine Technik (200)
zum Reduzieren der Blockeffekte in einem dekodierten Bildrahmen unter Anwendung
eines Glättungs- und Blockaufhebungsfilters in einem Videokodierer oder Dekodierer
zeigt. Es sollte beachtet werden, dass die dargestellte Technik eingesetzt werden
kann, um Luminanz- oder Chrominanz-Blöcke zu verarbeiten, obwohl es speziell
Randfälle geben kann am Rand jedes Bildrahmens, in denen der Fachmann die vorliegende
Erfindung nach Bedarf einstellt und anwendet. Der Einfachheit halber konzentriert
sich die vorliegende Offenbarung im Wesentlichen auf die schleifeninternen Filterschritte,
die im Inneren von Makroblöcken jedes Bildrahmens ausgeführt werden.
Gemäß 4 verarbeitet der schleifeninterne
Filter, sobald der Videokodierer/Dekodierer zumindest den ersten Makroblock für
den Bildrahmen (201) erzeugt, die obere Reihe aus Makroblöcken, wobei
ein Makroblock nach dem anderen verarbeitet wird, um die Grenzen jedes Blockes mit
seinen benachbarten Blöcken zu filtern. Wie man erkennt, gibt es keine teilweise
fertiggestellten Blöcke außerhalb des Bildrahmens zur Verwendung in dem
Filterprozess, da keine Glättung oder keine Blockaufhebung am Rand des Bildrahmens
ausgeführt wird. Wenn jedoch die erste Reihe aus Makroblöcken gefiltert
ist, wird der Arbeitspufferspeicher mit teilweise fertiggestellten Blöcken
gefüllt. Beginnend mit dem ersten Makroblock (201) lädt der Kodierer/Dekodierer
die erforderlichen Blöcke ein und ruft einen teilweise fertiggestellten benachbarten
Block von zuvor aus dem Arbeitspuffer ab (mit Ausnahme der ersten Reihe der Makroblöcke).
Wenn ein Makroblock aus vier Blöcken an Luminanz (y0, y1, y2, y3) und zwei
Chroma-Blöcken (Cb, Cr) besteht, werden die Blöcke in die Kodierer/Dekodierer
Hardware in folgenden Reihenfolge eingespeist: y0, y1, y2, y3, Cb, Cr.
Anschließend filtert der Video-Kodierer/Dekodierer vorbestimmte
Grenzen der in den Filter eingeladenen Blöcke mit benachbarten Blöcken
oder Unterblöcken (210). In einer ausgewählten Ausführungsform
wird eine stückweise bzw. Teil-Verarbeitungstechnik eingesetzt, um teilweise
jeden Block in dem Filter zu verarbeiten. Beispielweise werden nach dem Dekodieren
eines 8×8-Blocks in einer Luminanz- oder Chrominanz-Ebene alle Kanten oder
ein Teil der linken und/oder rechten (vertikalen) Kante einem Glättungsfilterprozess
(211) unterzogen. Zusätzlich oder alternativ werden alle oder ein
Teil der oberen und/oder unteren (horizontalen) Kanten des Blockes einem Glättungsfilterprozess
(212) unterzogen. Zusätzlich zu der Überlappungsglättung
wird ein Blockaufhebungsfilterprozess bzw. ein Filterungsprozess zum Reduzieren
von blockhervorgerufenen Phänomenen auf alle oder einen Teil der ausgewählten
horizontalen Grenzlinien der 8×8-Blöcke (213) und/oder auf alle
oder einen Teil von ausgewählten horizontalen Grenzlinien der 8×4-Teilblöcke
(214) angewendet. Zusätzlich oder alternativ wird der Blockaufhebungsfilterprozess
auf alle oder einen Teil von ausgewählten vertikalen Grenzlinien der 8×8-Blöcke
(215) und/oder auf alle oder einen Teil von ausgewählten Grenzlinien
der 4×8-Teilblöcke (216) angewendet. Sobald die Blöcke in
dem Filter stückweise verarbeitet sind, werden die Ergebnisse gespeichert oder
in dem Filter für eine weitere Verarbeitung weitergeschoben. Insbesondere werden
fertiggestellte Blöcke in dem Filter aus dem Filter (217) herausgeführt,
um die Verarbeitung neuer Daten in dem Filter zu ermöglichen. Zusätzlich
werden teilweise fertiggestellte Blöcke, die nicht mit den neuen Blöcken
verarbeitet werden, in einem Arbeitspufferspeicher (219) für die nachfolgende
Verwendung und für die weitere Verarbeitung mit der nächsten Reihe aus
Makroblöcken gespeichert, sofern nicht die letzte Reihe aus Makroblöcken
verarbeitet wird (ein negatives Ergebnis aus der Entscheidung 218), wobei
in diesem Falle der Arbeitspufferspeicherschritt (219) weggelassen wird.
Nachdem in dem Filter Platz geschaffen ist, indem ausgewählte
Blöcke (217, 219) gespeichert werden, kann nunmehr der Filter
neue Daten verarbeiten. Insbesondere wenn es zusätzliche Blöcke in dem
Bildrahmen (positives Ergebnis in der Entscheidung 220) gibt, werden die
verbleibenden teilweise gefilterten Blöcke in dem Filter nach links (222)
verschoben. Für Reihen unterhalb der obersten Reihe (negatives Ergebnis in
der Entscheidung (224)) wird der verfügbare Platz in den Filter aufgefüllt,
indem der nächste teilweise fertiggestellte Block aus dem Arbeitspufferspeicher
(226) abgerufen wird und ein verbleibender Platz in dem Filter mit neuen
Blöcken (228) aufgefüllt wird. Sobald der Filter die neuen Daten
eingeladen hat, wird der Blockfilterprozess 210 an dem neuen Satz aus Filterblöcken
ausgeführt. Durch Wiederholen dieser Sequenz an Operationen wird jeder Makroblock
in dem Bildrahmen sequenziell gefiltert, um teilweise fertiggestellte Blöcke
aus dem Arbeitspuffer auszulesen, die während der Verarbeitung der vorhergehenden
Reihe aus Makroblöcken erzeugt wurden, und um teilweise gefilterte Blöcke
in dem Arbeitspufferspeicher für die nachfolgende Verwendung während der
Verarbeitung der nächsten Reihe aus Makroblöcken zu speichern. Wenn andererseits
keine verbleibenden Blöcke zu filtern sind (negatives Ergebnis in der Entscheidung
222), ist der Glättungs- und Blockauflösungsprozess für
den aktuellen Bildrahmen beendet. Zu diesem Zeitpunkt wird der nächste Bildrahmen
abgerufen (230), und der Filterprozess wird wiederholt, wobei mit dem ersten
Makroblock in dem neuen Bildrahmen begonnen wird.
Die 5a bis 5k
zeigen eine anschauliche Ausführungsform der vorliegenden Erfindung, wobei
dargestellt ist, wie die WMV9-Glättungs- und Blockaufhebungsprozedur für
Luminanzblöcke in dem Makroblock 4 oder („mb4") mit einer Technik mit
Teilverarbeitung eingerichtet werden kann. Der Anfangspunkt für den Filterungsprozess
ist in 5a gezeigt, wobei der Filter 320 bereits
mit Blöcken geladen ist (beispielsweise mb0y3, mb3y1 und mb3y3), die bereits
im Hinblick auf die Überlappungsglättung (siehe beispielsweise die ovale
Angabe 322) und die Blockaufhebung (siehe beispielsweise die Strichangabe
322) verarbeitet sind.
Der Filter 320 wird dann mit weiteren Blöcken gefüllt,
wie dies in 5b gezeigt ist. Insbesondere wird ein teilweise
fertiggestellter Block (beispielsweise mb1y2) aus dem Arbeitspufferspeicher abgerufen
und in den Filter geladen. Des weiteren werden ausgewählte Blöcke (beispielsweise
mb4y9, mb4y2) aus dem aktuellen Makroblock (z. B. mb4) in den Kodierer/Dekodierer
eingeladen, obwohl die Ladesequenz für die Makroblöcke (z. B. mb4y0, mb4y1,
mb4y2 und mb4y3) erfordert, dass mindestens einer der Blöcke zu diesem Zeitpunkt
eingeladen aber in dem Filter 320 nicht verschoben wird, wie dies durch
321 angegeben ist.
Wenn die Filterblöcke eingeladen sind, führt der Filter
320 stückweise die Überlappungsglättung durch, wie dies
in 5c gezeigt ist. Insbesondere wird eine vertikale
Überlappungsglättung (V) an ausgewählten inneren vertikalen Kanten
301, 302 ausgeführt. Als nächstes wird eine horizontale
Überlappungsglättung (H) an ausgewählten inneren horizontalen Kanten
(beispielsweise 303, 304, 305, 306) ausgeführt.
Nachdem die Filterblöcke teilweise geglättet sind, führt
der Filter 320 stückweise eine Blockaufhebung durch, wie dies in
5d gezeigt ist. Zunächst wird eine horizontale
schleifeninterne Blockauflösung bzw. Blockaufhebung (HD) an ausgewählten
8×8-Blockgrenzen (beispielsweise 307, 308, 309,
310) ausgeführt, woran sich eine horizontale schleifeninterne Blockaufhebung
an ausgewählten Teilblockgrenzen (HDH) anschließt, beispielsweise
311, 312, 313, 314). Als nächstes führt
der Filter eine vertikale schleifeninterne Blockaufhebung (VD) an ausgewählten
8×8 Blockgrenzen (beispielsweise 315, 316) durch, woran sich
eine vertikale schleifeninterne Blockaufhebung an ausgewählten Teilblockgrenzen
(VDH) anschließt (beispielsweise 317, 318).
In jedem der zuvor beschriebenen Glättungs- und Blockaufhebungsschritten
spielt die Reihenfolge, in der die Grenzstücke gefiltert werden, keine Rolle,
da es keine Abhängigkeit zwischen den Grenzstücken gibt. Zusätzlich
zu der speziellen Reihenfolge der Teilverarbeitung, die in den 5c
und 5d dargestellt ist, können auch andere Sequenzen
oder Filterschritte gemäß der vorliegenden Erfindung eingerichtet werden.
Beispielsweise kann eine andere Sequenz aus Grenzkantenstücken gefiltert werden.
Ferner kann es mehr als eine Art an Glättungs- oder Blockaufhebungsmodi, die
angewendet werden, geben, und die Filteroperation kann bis zu 3 oder mehr Pixel
an jeder Seite der Grenze beeinflussen, abhängig von dem Filterungsschema.
Beispielsweise werden in dem MPEG-Standard zwei Blockaufhebungsmodi verwendet, um
einen kurzen Filter auf 1 Pixel auf jeder Seite der Blockkante in einem Modus anzuwenden,
und um einen längeren Filter auf 2 Pixel auf jeder Seite im zweiten Modus anzuwenden.
In anderen Ausführungsform können die Filterdefinitionen, die Anzahl der
unterschiedlichen Filter und/oder adaptive Filterbedingungen angepasst werden, um
speziellen Erfordernissen zu genügen.
Sobald die Glättungs- und Blockaufhebungsfilteroperationen beendet
sind, werden die verarbeiteten Filterblöcke gespeichert und verschoben, wie
dies in 5e gezeigt ist. Insbesondere werden fertiggestellte
Blöcke (beispielsweise mb0y3, mb3y1) dann ausgegeben, da sie abgeschlossen
sind. Ferner können ein oder mehrere teilweise fertiggestellte Blöcke
(beispielsweise mb3y3) in den Arbeitspuffer für die nachfolgende Verwendung
verschoben werden, wenn die Verarbeitung des unteren benachbarten Makroblocks (siehe
beispielsweise den Makroblock 6 in Abhängigkeit zu mb3y3 in 3)
verarbeitet wird. Verbleibende teilweise fertiggestellte Blöcke in dem Filter
(beispielsweise mb1y2, mb4y4, mb4y2) werden dann im Filter verschoben, um Platz
für neue Daten zu schaffen. Das Ergebnis der Ausgabe-, Speicher- und Verschiebeschritten
ist in 5f gezeigt.
Der Filter 320 kann nun mit neuen Datenblöcken gefüllt
werden, wie in 5g gezeigt ist. Insbesondere wird ein
teilweise fertiggestellter Block (beispielsweise mb1y3) aus dem Arbeitspufferspeicher
abgerufen und in den Filter geladen. Ferner werden die verbleibenden Blöcke
(beispielsweise mb4y1, mb4y3) aus dem aktuellen Makroblock (z. B. mb4) in den Filter
320 eingeladen.
Sobald die Filterblöcke eingeladen sind, führt der Filter
320 stückweise eine Überlappungsglättung aus, wie in
5h gezeigt ist. Insbesondere wird eine vertikale Überlappungsglättung
(V1, V2) an ausgewählten inneren vertikalen Kanten durchgeführt.
Nachdem die Filterblöcke teilweise geglättet sind, führt
der Filter 320 stückweise eine Blockaufhebung durch, wie in den
5i gezeigt ist. Zunächst wird eine horizontale
schleifeninterne Blockaufhebung (HD1, HD2, HD3, HD4) an ausgewählten 8×8-Blockgrenzen
ausgeführt, woran sich eine schleifeninterne Blockaufhebung an ausgewählten
Teilblockgrenzen (HDH1, HDH2, HDH3, HDH4) anschließt. Als nächstes führt
der Filter eine vertikale schleifeninterne Blockaufhebung (VD1, VD2) an ausgewählten
8×8-Blockgrenzen durch, woran sich eine vertikale schleifeninterne Blockaufhebung
an ausgewählten Teilblockgrenzen (VDH1, VDH2) anschließt.
Sobald die Glättungs- und Blockaufhebungs-Filteroperationen beendet
sind, werden die verarbeiteten Filterblöcke gespeichert und verschoben, wie
in 5 gezeigt ist. Insbesondere werden fertiggestellte Blöcke
(beispielsweise mb1y2, mb4y0) ausgegeben, da diese abgeschlossen sind. Ferner werden
ein oder mehrerer teilweise fertiggestellte Blöcke (beispielsweise mb4y2) zum
Arbeitspuffer für eine nachfolgende Verwendung verschoben, wenn der untere
benachbarte Makroblock verarbeitet wird. Verbleibende teilweise fertiggestellte
Blöcke in dem Filter (beispielsweise mb1y3, mb4y1, mb4y3) werden dann in dem
Filter verschoben, um Platz für neue Daten zu schaffen. Das
Ergebnis der Ausgabe-, Speicher- und Verschiebeschritte ist in 5k
gezeigt, die genau dem anfänglichen Filterzustand entspricht, der in
5a gezeigt ist. Folglich kann die Sequenz aus Schritten,
die in den 5a bis k gezeigt sind, wiederholt werden,
um die Filterung der Filterblöcke fortzusetzen, wobei der nächste Makroblock
enthalten ist (beispielsweise der Makroblock 5 oder mb5).
Gemäß den 6a bis f wird eine
anschauliche Ausführungsform der vorliegenden Erfindung nunmehr beschrieben,
um zu zeigen, wie die WMV9-Glättungs- und Blockaufhebungsprozeduren an einem
Cb- oder Cr-Block in einem Makroblock mit einer Teilverarbeitungstechnik eingerichtet
werden können. Da die Cb- und Cr-Makroblöcke ähnlich sind, wird das
Beispiel in Bezug auf einen aktuellen Cb-Makroblock angegeben, der mit der Indizierung
Cb(x, y) gekennzeichnet ist. Der Anfangspunkt für den Filterprozess ist in
6a gezeigt, wobei der Filter 420 bereits mit
Blöcken beladen ist (beispielsweise Cb(x – 1, y – 1) und Cb(x
– 1, y)), die bereits teilweise im Hinblick auf die Überlappungsglättung
(siehe beispielsweise die ovale Kennzeichnung 422) und die Blockaufhebung
(siehe beispielsweise die Linienangabe 423) verarbeitet sind.
Der Filter 420 wird dann mit weiteren Blöcken gefüllt,
wie in 6b gezeigt ist. Insgesamt wird ein teilweise
fertiggestellter Block (beispielsweise Cb(x, y – 1)) aus dem Arbeitspufferspeicher
abgerufen und in den Filter eingeladen. Ferner wird der Block (beispielsweise Cb(x,
y)) aus dem aktuellen Makroblock in den Filter 420 eingeladen. Sobald die
Filterblöcke eingeladen sind, führt der Filter 420 eine stückweise
Überlappungsglättung durch, wie in den 6c
gezeigt ist. Insbesondere wird eine vertikale Überlappungsglättung (V)
an ausgewählten inneren vertikalen Kanten ausgeführt. Als nächstes
wird eine horizontale Überlappungsglättung (H1, H2) an ausgewählten
inneren horizontalen Kanten ausgeführt.
Nachdem die Filterblöcke teilweise geglättet sind, führt
der Filter 420 stückweise eine Blockaufhebung aus, wie in den
6d gezeigt ist. Zunächst wird eine horizontale
schleifeninterne Blockaufhebung (HD1, HD2) an ausgewählten 8×8-Blockgrenzen
durchgeführt, woran sich eine horizontale schleifeninterne Blockaufhebung von
ausgewählten Teilblockgrenzen (HDH1, HDH2) anschließt. Danach führt
der Filter eine vertikale schleifeninterne Blockaufhebung (VD) an ausgewählten
8×8-Blockgrenzen durch, woran sich eine vertikale schleifeninterne Blockaufhebung
an ausgewählten Teilblockgrenzen (VDH) anschließt.
Sobald die Glättungs- und Blockaufhebungsfilteroperationen beendet
sind, werden die verarbeiteten Filterblöcke gespeichert und verschoben, wie
dies in 6e gezeigt ist. Insbesondere wird der fertiggestellte
Block (beispielsweise Cb(x – 1, y – 1)) ausgegeben, da dieser abgeschlossen
ist. Des weiteren wird der teilweise fertiggestellte Block (beispielsweise Cb(x
– 1, y)) zu dem Arbeitspuffer für einen nachfolgende Verwendung verschoben,
wenn der untere benachbarte Makroblock verarbeitet wird. Verbleibende teilweise
fertiggestellte Blöcke in dem Filter (beispielsweise Cb(x, y – 1), Cb(x,
y)) werden dann im Filter verschoben, um Platz für neue Daten zu schaffen.
Das Ergebnis der Ausgabe-, Speicher- und Verschiebungsschritte ist in
6f gezeigt, die genau dem anfänglichen Filterzustand
entspricht, der in 6a gezeigt ist. Folglich kann diese
Sequenz der in den 6a bis 6f
gezeigten Schritten wiederholt werden, um den nächsten Makroblock zu filtern.
Wie aus dem Vorhergehenden ersichtlich wird, kann durch Bereitstellen
eines kleinen Arbeitspufferspeichers in der Hardwaredekodiereinheit der schleifeninterne
Filter teilweise fertiggestellte Filterergebnisse aus den Luminanz- und Chrominanzblöcken
des aktuellen Makroblocks (der als MB(x, y) bezeichnet ist) in dem Arbeitspuffer
speichern. Die gespeicherten Filterergebnisse können dann bei der Verarbeitung
der Blöcke verwendet werden, die benachbart zu dem Makroblock in der Reihe
darunter sind. Insbesondere wenn der Filter den direkt darunter liegenden Makroblock
verarbeitet, d. h. Mb(x, y + 1), werden die gespeicherten Daten für mb(x, y)
aus dem Arbeitspuffer abgerufen und für die Verarbeitung von mb(x, y + 1) verwendet.
Obwohl die teilweise fertiggestellten Filterergebnisse, die in dem
Arbeitspuffer gespeichert sind, zumindest die 8×8-Pixeldaten enthalten sollten,
speichert in einer ausgewählten Ausführungsform der Arbeitspuffer auch
die Steuerdaten zum Bestimmen, ob eine Grenzfilterung für den Block erforderlich
ist. Z. B. können die Steuerdaten für jeden Block die Gruppe aus Kopfbereichen
für die 6 Blöcke in dem aktuellen Makroblock enthalten, wobei 1 mv oder
4 mv Auswahl, Blockadressen, die Position des Blockes in dem Bildrahmen, der mb-Modus,
Transformationsgröße, Koeffizient (0 oder nicht 0) und Bewegungsvektoren
(zwei in Vorwärtsrichtung in der x- und y-Richtung und zwei in der Rückwärtsrichtung
in der x- und y-Richtung) enthalten sind. Die Daten können so gepackt sein,
um eine effiziente Anwendung einer Sequenzgröße zu ermöglichen.
Auf Grund der geringen Größe des Arbeitspufferspeichers
kann der Speicher auf dem gleichen Chip wie der Videobeschleuniger angeordnet sein,
wobei aber für typische Bildrahmengrößen der Arbeitspuffer auf einem
anderen Chip integriert sein kann, etwa dem DDR-Speicher oder einem anderen externen
Speicher. Durch Vorsehen des Arbeitspufferspeichers wird ein verbessertes Zugriffsverhalten
für den Speicher erreicht. Durch Minimieren der Größe
des Arbeitspufferspeichers können die Fertigungskosten für die Medienbeschleunigungshardwareeinheit
im Vergleich zum Vorsehen eines großen Pufferspeichers zum Speichern von Datenblöcken
für den gesamten Bildrahmen reduziert werden. Beispielsweise kann ein Arbeitspufferspeicher,
der zum Speichern von teilweise fertiggestellten Filterergebnissen einschließlich
der Steuerdaten und Pixeldaten verwendet wird, wie folgt berechnet werden:
Größe des Arbeitspuffers ungefähr (576 Bytes) × (Anzahl der
Makroblöcke in horizontaler Richtung in dem Bildrahmen).
Wie aus dem Vorhergehenden ersichtlich wird, ist die Größe
des Arbeitspuffers relativ klein, wenn die Größe des Bildrahmens in der
vertikalen Richtung groß ist. Anders ausgedrückt, die Größe
des Arbeitspuffers hängt von der Größe des Bildrahmens in der horizontalen
Richtung ab. Zu beachten ist, dass die Techniken mit Teilverarbeitung, wie sie hierin
beschrieben sind, vorteilhaft verwendet werden können in Verbindung mit einem
großen Speicher zum Bewahren des gesamten Bildrahmens, um damit die Geschwindigkeit
der Filteroperationen zu erhöhen, da das Filtern an dem ersten Makroblock beginnen
kann, bevor der gesamte Bildrahmen decodiert ist. Jedoch bietet die Verwendung eines
Arbeitspufferspeichers Vorteile im Hinblick auf Kosten und die Geschwindigkeit im
Gegensatz zur Verwendung eines großen Speichers zum Speichern des gesamten
Bildrahmens, der höhere Kosten mit sich bringt und höhere Zugriffszeiten
erfordert. Die Verwendung eines Arbeitspuffers kann auch vorteilhaft in eine Pipeline-Verarbeitung
in dem Filteralgorithmus eingebunden werden.
Die speziellen offenbarten Ausführungsformen sind lediglich anschaulicher
Natur und sollten nicht als Einschränkungen für die vorliegende Erfindung
gesehen werden, da die Erfindung auf unterschiedliche aber äquivalente Weisen
modifiziert und praktiziert werden kann, wie sich dies dem Fachmann im Besitze der
vorliegenden Lehre erschließt. Daher soll die vorhergehende Beschreibung die
Erfindung nicht auf die spezielle dargestellte Form einschränken, sondern es
ist vielmehr beabsichtigt, derartige Alternativen, Modifizierungen und Äquivalente
abzudecken, die innerhalb des Grundgedankens und des Schutzbereichs der Erfindung
liegen, wie sie durch die angefügten Patentansprüche definiert ist, so
dass der Fachmann erkennt, dass er diverse Änderungen, Substitutionen und Modifizierungen
vornehmen kann, ohne von dem Grundgedanken und dem Schutzbereich der Erfindung in
ihrer weitesten Form abzuweichen.
Zusammenfassung
Eine Videoverarbeitungseinrichtung und ein Verfahren sind als eine
Kombination eines Prozessors und eines Videodekodierhardwareblockes eingerichtet,
um Videodaten zu dekodieren, indem der Videodekodierblock mit einem schleifeninternen
Filter und einem Arbeitspufferspeicher versehen ist, so dass der schleifeninterne
Filter effizient eine Teilverarbeitung für die Überlappungsglättung
und die schleifeninterne Blockabhebung auf Basis von Makroblöcken durchführen
kann, was ein wesentlich effizienterer Algorithmus im Vergleich zu einem Verfahren
auf Basis gesamter Bildrahmen ist.
|
Anspruch[de] |
Verfahren zum Decodieren von Videodaten, die mittels Blocktransformationen
in mehrere Makroblöcke verarbeitet sind, mit:
Ausführen einer Glättung und Blockaufhebung in ausgewählten Pixeldaten
in einem ersten Makroblock, um mindestens einen ersten teilweise gefilterten Block
und mindestens einen ersten fertiggestellten Block zu erzeugen; und
Speichern des ersten teilweise gefilterten Blockes in einem Arbeitspufferspeicher
zur Verwendung beim Glätten und Blockaufheben ausgewählter Pixeldaten
in einem zweiten Makroblock.
Verfahren nach Anspruch 1, das ferner umfasst: Abrufen eines zweiten
teilweise gefilterten Blockes aus dem Arbeitspufferspeicher zur Verwendung in dem
Glättungs- und Blockaufhebungsschritt, wobei der zweite teilweise gefilterte
Block während der Verarbeitung eines vorhergehenden Makroblocks erzeugt wurde.
Verfahren nach Anspruch 1, wobei der Glättungs- und Blockaufhebungsschritt
mit einem schleifeninternen Filter ausgeführt wird.
Verfahren nach Anspruch 3, wobei der schleifeninterne Filter sequenziell
jede Reihe aus Makroblöcken in einem Videobildrahmen zum Überlappungsglätten
und Blockaufheben verarbeitet, wobei ein Makroblock nach dem anderen bearbeitet
wird.
Verfahren nach Anspruch 3, wobei der schleifeninterne Filter sequenziell
eine Glättung und Blockaufhebung an mehreren Makroblöcken in einer Pipeline-Verarbeitungsweise
ausführt.
Verfahren nach Anspruch 1, das umfasst:
Ausführen einer Glättung und Blockaufhebung in ausgewählten Pixeldaten
in einer ersten Reihe aus Makroblöcken, um mehrere teilweise gefilterte Blöcke
zu erzeugen; und
Speichern der mehreren teilweise gefilterten Blöcke in dem Arbeitspufferspeicher.
Verfahren nach Anspruch 6, das ferner umfasst:
Abrufen eines ersten teilweise gefilterten Blocks aus dem Arbeitspufferspeicher,
wenn ausgewählte Pixeldaten in einer zweiten Reihe aus Makroblöcken einer
Glättung und einer Blockaufhebung unterzogen werden; und
Ausführen einer Glättung und Blockaufhebung in ausgewählten Pixeldaten
in dem ersten teilweise gefilterten Block, um die Glättung und die Blockaufhebungsverarbeitung
an dem ersten teilweise gefilterten Block abzuschließen, um damit einen fertiggestellten
Block zu erzeugen.
Verfahren nach Anspruch 1, wobei der Glättungs- und Blockaufhebungsschritt
umfasst: stückweise Ausführen der Überlappungsglättung und der
Blockaufhebung an mindestens einem ersten Block innerhalb jedes Makroblocks derart,
dass der erste Block teilweise in einer ersten Filteroperation verarbeitet, in dem
Arbeitspufferspeicher gespeichert und nachfolgend vollständig in einer zweiten
Filteroperation verarbeitet wird.
Vorrichtung in einem Videoverarbeitungssystem zum Dekodieren von Videoinformationen
aus einem komprimierten Videodatenstrom, wobei die Vorrichtung umfasst:
einen Prozessor, der teilweise den komprimierten Videodatenstrom dekodiert, um teilweise
dekodierte Videodaten zu erzeugen; und
eine Videodekodierschaltung, die die teilweise dekodierten Videodaten dekodiert,
um Videobildrahmen zu erzeugen, wobei die Videodekodierschaltung einen Arbeitspufferspeicher
und einen schleifeninternen Filter zum Ausführen einer Teilverarbeitung der
Überlappungsglättung und der schleifeninternen Blockaufhebung sequenziell
an mehreren Makroblöcken in dem Videobildrahmen umfasst.
Vorrichtung nach Anspruch 9, wobei der Arbeitspufferspeicher teilweise
gefilterte Blöcke aus einer ersten Reihe aus Makroblöcken speichert, so
dass jeder teilweise gefilterte Block von dem schleifeninternen Filter während
der Überlappungsglättung und der Blockaufhebung einer zweiten Reihe aus
Makroblöcken abgerufen werden kann.
|
|
Patent Zeichnungen (PDF)
|