PatentDe  


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.






IPC
A Täglicher Lebensbedarf
B Arbeitsverfahren; Transportieren
C Chemie; Hüttenwesen
D Textilien; Papier
E Bauwesen; Erdbohren; Bergbau
F Maschinenbau; Beleuchtung; Heizung; Waffen; Sprengen
G Physik
H Elektrotechnik

Anmelder
Datum

Patentrecherche

Patent Zeichnungen (PDF)

Copyright © 2008 Patent-De Alle Rechte vorbehalten. eMail: info@patent-de.com