DE112007000359B4 - Verarbeitung von Videodaten - Google Patents

Verarbeitung von Videodaten Download PDF

Info

Publication number
DE112007000359B4
DE112007000359B4 DE112007000359T DE112007000359T DE112007000359B4 DE 112007000359 B4 DE112007000359 B4 DE 112007000359B4 DE 112007000359 T DE112007000359 T DE 112007000359T DE 112007000359 T DE112007000359 T DE 112007000359T DE 112007000359 B4 DE112007000359 B4 DE 112007000359B4
Authority
DE
Germany
Prior art keywords
filters
block
video data
luminance
row
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
DE112007000359T
Other languages
English (en)
Other versions
DE112007000359T5 (de
Inventor
Derek Pappas
Atul Garg
Shankar Moni
Harikrishna M. Reddy
Matthew R. Longnecker
Christopher L. Mills
Ignatius B. Tjandrasuwita
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Nvidia Corp
Original Assignee
Nvidia Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Nvidia Corp filed Critical Nvidia Corp
Publication of DE112007000359T5 publication Critical patent/DE112007000359T5/de
Application granted granted Critical
Publication of DE112007000359B4 publication Critical patent/DE112007000359B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/43Hardware specially adapted for motion estimation or compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • H04N19/463Embedding additional information in the video signal during the compression process by compressing encoding parameters before transmission
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/503Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving temporal prediction
    • H04N19/51Motion estimation or motion compensation
    • H04N19/513Processing of motion vectors
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/593Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial prediction techniques
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computing Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)

Abstract

System zum Verarbeiten von Videodaten, wobei das System aufweist: eine Bewegungsschätzvorrichtung, die betreibbar ist, einen Block eines Eingabe-Frames von Videodaten und einen Block eines Bezugs-Frames von Videodaten zum Erzeugen von Bewegungsvektoren gemäß einem ersten Codierschema unter Verwendung eines finiten Impulsantwort (FIR) Zwei-Abgriffs-Filters zu verwenden, einen ersten Codierer, der mit der Bewegungsschätzvorrichtung gekoppelt ist, wobei der erste Codierer betreibbar ist, die Bewegungsvektoren zu verwenden, um eine rekonstruierte erste Version des Blocks des Eingabe-Frames gemäß dem ersten Codierschema zu erzeugen, und einen zweiten Codierer, der mit der Bewegungsschätzvorrichtung gekoppelt ist, wobei der zweite Codierer eine Mehrzahl von Sechs-Abgriffs-FIR-Filtern zum Erzeugen von Halb-Pel-Interpoliert-Pixeln aufweist, wobei die Sechs-Abgriffs-FIR-Filter gesteuert sind, die Bewegungsvektoren zu verwenden, um eine rekonstruierte zweite Version des Blocks des Eingabe-Frames gemäß einem zweiten Codierschema zu erzeugen, das sich von dem ersten Codierschema unterscheidet.

Description

  • Technisches Gebiet
  • Ausführungsformen der vorliegenden Schrift betreffen allgemein die Datenverarbeitung. Genauer gesagt, betreffen Ausführungsformen des Vorliegenden das Codieren (Komprimieren) von Daten wie zum Beispiel Videodaten. Diese Schrift betrifft zumindest ein Anpassen eines Codierertyps an einen anderen Codierertyp.
  • Allgemeiner Stand der Technik
  • Mit dem Eingliedern von immer mehr Multimedia-Funktionen in tragbare verbraucherelektronische Produkte, hat die Fähigkeit des raschen und effizienten Verarbeitens von Videostreams an Bedeutung gewonnen. Zum Beispiel können Mobiltelefone dafür verwendet werden, multimediale Inhalte abzurufen, anzusehen und zu senden. Während die Fähigkeiten tragbarer Geräte jedoch weiter zunehmen, sind solche Geräte im Vergleich zu leistungsfähigeren Plattformen wie zum Beispiel Personalcomputern immer noch etwas eingeschränkt. Datenübertragungs- und -abrufraten können ebenfalls ein Faktor sein. Der Menge an Bilddaten (zum Beispiel Videodaten) kommt gewöhnlich mehr Aufmerksamkeit zu als der Menge an Audiodaten.
  • Die Daten werden oft codiert (komprimiert), um das Speichern und Streaming zu vereinfachen, und werden anschließend für die Wiedergabe (zum Beispiel Anzeige) decodiert (dekomprimiert). Videodaten können zum Beispiel unter Verwendung eines Moving Pictures Experts Group(MPEG)-Schemas komprimiert werden. Durch Codieren einer Videosequenz kann die Anzahl der Bits, die zum Darstellen der Videosequenz benötigt werden, deutlich verringert werden.
  • In einer typischen Videosequenz kann der Inhalt eines Frames, oder zumindest eines Teils dieses Frames, dem Inhalt eines anderen Frames sehr stark ähneln. Dies wird gemeinhin als ”zeitliche Redundanz” bezeichnet. Eine Kompressionstechnik, die gemeinhin als ”Bewegungskompensation” bezeichnet wird, wird verwendet, um zeitliche Redundanz auszunutzen. Wenn der Inhalt in einem Frame in enger Beziehung zum Inhalt eines anderen (Bezugs-)Frames steht, so ist es möglich, den Inhalt des Frames unter Verwendung des Bezugs-Frames präzise darzustellen oder vorherzusagen.
  • Die Frames werden zu Pixelblöcken (zum Beispiel zu einem Makroblock von 16×16 Pixeln) partitioniert. Die Bewegung eines Blocks, der – außer dass er an eine andere Position bewegt wird – ansonsten im Vergleich zu einem entsprechenden Block in dem Bezugs-Frame nicht signifikant verändert wird, kann unter Verwendung eines Bewegungsvektors dargestellt werden. Zum Beispiel kann ein Bewegungsvektor von (3, 4) bedeuten, dass sich der Block relativ zu der Position seines entsprechenden Blocks in dem Bezugs-Frame drei Pixel nach links und vier Pixel nach oben bewegt hat. Bewegungskompensation meint die Anwendung eines Bewegungsvektors an einen decodierten (dekomprimierten) Block, um einen neuen Block (oder einen neuen Frame oder ein neues Bild) aufzubauen.
  • Die Kompressionsstandards werden ständig weiterentwickelt, um höhere Kompressionsraten ohne Qualitätsverlust des rekonstruierten Videos zu erreichen. Ein Kompressionsstandard aus jüngerer Zeit, der an Verbreitung gewinnt, ist als H.264 oder MPEG-4 Part 10 bekannt und wird formaler als Advanced Video Coding (AVC) bezeichnet. Frühere Standards wie zum Beispiel MPEG-4 (der sich von MPEG-4 Part 10 unterscheidet) werden weiterhin verwendet.
  • US 2004/0013399 A1 offenbart eine Informationsverarbeitungsvorrichtung, in der komprimierten Bilddaten verschiedener Komprimierungscodierungsformate erzeugt und auf verschiedenen Aufzeichnungsmedien aufgezeichnet werden können, ohne die Vorrichtung zu vergrößern. Ein MPEG2-Codierer wird mit der Bildinformation versorgt und codiert die Eingabeinformationen in das MPEG-2-Format unter der Steuerung durch eine CPU, um ein MPEG-2 zu erzeugen. Ein Festplattenlaufwerk zeichnet den MPEG2-Bitstrom auf der Festplatte unter der Steuerung der CPU auf. Die CPU startet eine Software auf einem Speicher, um Transkodierungsverarbeitung durchzuführen, um einen MPEG-4-Bitstrom aus dem MPEG2-Bitstrom zu erzeugen. Der Bewegungsvektor, wie er beim vorübergehenden decodieren des MPEG2-Bitstroms in die Bildinformation gefunden wird, wird vererbt und als Bewegungsvektor für den MPEG-4 Bitstrom wiederverwendet. Ein Speicherkartenlaufwerk zeichnet den MPEG-4-Bitstrom auf der Speicherkarte unter Steuerung durch die CPU auf.
  • WO 95/29561 A1 offenbart einen Transcoder für die Umwandlung von Videosignalen zwischen einem ersten und einem zweiten Codierungsschema unter Verwendung von Bewegungskompensation. Der Transcoder weist einen Decodierer zum Decodieren eines empfangenen Datenstroms, der gemäß einem ersten Codierungsschema codiert ist, und einen Codierer zum Codieren eines Datenstroms von dem Decodierer in einen Datenstrom gemäß einem zweiten Codierungsschema auf. Der Decodierer extrahiert Bewegungsvektoren aus dem empfangenen Datenstrom und leitet sie zu dem Datenstrom des Codierers weiter, um erneute Berechnung der Bewegungsvektoren zu vermeiden. Driftkompensationsmittel können bereitgestellt werden, um irgendeine resultierende Drift nach einem Bildframe zu kompensieren.
  • Kurzdarstellung der Erfindung
  • Die fortgesetzte Verwendung älterer und immer noch akzeptabler Standards, wie zum Beispiel MPEG-4, und die Einführung neuerer oder verbesserter Standards, wie zum Beispiel H.264, können die Hersteller von verbraucherelektronischen Geräten in Schwierigkeiten bringen. Geräte, die für ein Kompressionsschema ausgelegt sind, sind möglicherweise nicht in der Lage, ein anderes Kompressionsschema zu implementieren. Das kann insbesondere für Geräte gelten, bei denen die Codierung durch Hardware erfolgt. Dementsprechend wären ein System und/oder ein Verfahren von Vorteil, das ohne Weiteres Aspekte eines Kompressionsschemas (zum Beispiel MPEG-4) an ein anderes (zum Beispiel H.264) anpassen können. Ausführungsformen gemäß der vorliegenden Erfindung bieten diese und weitere Vorteile.
  • In einer Ausführungsform wird ein H.264-Codierer implementiert, indem ein H.264-Interpolator, der ein Halbpixel(Halb-Pel)-Filter und ein Datenpackermodul enthält, in eine ansonsten MPEG-4-Codierer-Pipeline hinzugefügt wird. In einer Ausführungsform ist der H.264-Interpolator durch Hardware implementiert. Die MPEG-4-Pipeline wird zum Berechnen von Bewegungsvektoren verwendet, und der H.264-Interpolator wird zur Bewegungskompensation verwendet. Das Datenpackermodul arrangiert die Ausgabe der Bewegungskompensationsvorrichtung in einer Weise, die zur Verwendung durch eine nachgeschaltete (downstream) Medienprozessoreinheit (zum Beispiel einen digitalen Signalprozessor) geeignet ist, welche die Ausführung anderer Codierprozesse wie zum Beispiel Transformation, Quantisierung, Umkehrtransformation (invers transformation) und Umkehrquantisierung (inverse quantization) anweist.
  • Die Implementierung eines H.264-Interpolators durch Hardware in einer ansonsten MPEG-4-Pipeline wird ohne Erhöhung der Anzahl der Gatter erreicht und mag den Stromverbrauch senken. Diese Leistungsmerkmale sind besonders bei tragbaren handgehaltenen elektronischen Geräten, wie zum Beispiel tragbaren Telefonen, persönlichen digitalen Assistenten (PDAs), und handgehaltenen Spielegeräten von Vorteil.
  • Diese und weitere Aufgaben und Vorteile der verschiedenen Ausführungsformen der vorliegenden Erfindung werden für den Durchschnittsfachmann erkennbar, nachdem er die folgende detaillierte Beschreibung der Ausführungsformen gelesen hat, die in den verschiedenen Zeichnungsfiguren veranschaulicht sind.
  • Kurze Beschreibung der Zeichnungen
  • Die begleitenden Zeichnungen, die in diese Spezifikation eingebunden sind und einen Teil von ihr bilden, veranschaulichen Ausführungsformen der vorliegenden Erfindung und dienen zusammen mit der Beschreibung der Erläuterung der Prinzipien der Erfindung.
  • 1 ist ein Blockschaubild einer Ausführungsform eines Systems zum Codieren von Daten gemäß der vorliegenden Erfindung.
  • 2 ist ein Blockschaubild, das einen Datenfluss durch Elemente eines Prozesses zum Codieren von Daten gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 3 ist ein Blockschaubild eines Systems zum Codieren von Daten gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 4 ist ein Blockschaubild, das zusätzliche Details des Systems von 3 gemäß einer Ausführungsform der vorliegenden Erfindung zeigt.
  • 5 veranschaulicht ein Zustandsschaubild gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 6 veranschaulicht einen Ringpuffer zum Speichern von Frame-Informationen gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 7 veranschaulicht ein Signalprotokoll gemäß einer Ausführungsform der vorliegenden Erfindung.
  • 8 ist ein Flussdiagramm eines computerimplementierten Verfahrens zum Verarbeiten von Daten gemäß einer Ausführungsform der vorliegenden Erfindung.
  • Detaillierte Beschreibung
  • Es wird nun ausführlich auf die verschiedenen Ausführungsformen der vorliegenden Erfindung eingegangen, von denen Beispiele in den begleitenden Zeichnungen veranschaulicht sind. Obgleich die Erfindung in Verbindung mit diesen Ausführungsformen beschrieben wird, versteht es sich, dass sie nicht die Erfindung auf diese Ausführungsformen beschränken sollen. Im Gegenteil soll die Erfindung auch Alternativen, Modifikationen und Äquivalente abdecken, die unter den Geist und Geltungsbereich der Erfindung, wie durch die angehängten Ansprüche definiert, fallen können. Des Weiteren werden in der folgenden detaillierten Beschreibung der vorliegenden Erfindung zahlreiche konkrete Details dargelegt, um ein gründliches Verstehen der vorliegenden Erfindung zu ermöglichen. Es versteht sich jedoch, dass die vorliegende Erfindung auch ohne diese konkreten Details praktiziert werden kann. In anderen Fällen wurden allseits bekannte Verfahren, Vorgehensweisen, Komponenten und Schaltungen nicht im Detail beschrieben, um Aspekte der vorliegenden Erfindung nicht unnötig in den Hintergrund treten zu lassen.
  • Einige Teile der folgenden detaillierten Beschreibungen sind anhand von Prozeduren, Logikblöcken, Verarbeitungen und anderen symbolischen Darstellungen von Operationen an Datenbits innerhalb eines Computerspeichers dargestellt. Diese Beschreibungen und Darstellungen sind die Mittel, die der Fachmann auf dem Gebiet der Datenverarbeitung verwendet, um anderen Fachleuten den Wesensgehalt seiner Arbeit am effektivsten zu vermitteln. In der vorliegenden Anmeldung ist unter einer Prozedur, einem Logikblock, einem Prozess oder dergleichen eine selbstkonsitente Abfolge von Schritten oder Instruktionen zu verstehen, die zu einem gewünschten Resultat führt. Die Schritte sind solche, welche physikalische Manipulationen physikalischer Quantitäten verwenden. In der Regel, wenn auch nicht zwangsläufig, nehmen diese Quantitäten die Form elektrischer oder magnetischer Signale an, die gespeichert, übertragen, kombiniert, verglichen und auf sonstige Weise in einem Computersystem manipuliert werden können. Es hat sich zeitweise als zweckmäßig erwiesen, vor allem aus Gründen des gemeinsamen Sprachgebrauchs, diese Signale als Transaktionen, Bits, Werte, Elemente, Symbole, Zeichen, Abtastungen, Pixel oder dergleichen zu bezeichnen.
  • Es ist jedoch zu beachten, dass alle diese und ähnliche Begriffe den entsprechenden physikalischen Quantitäten zuzuordnen sind und lediglich zweckmäßige Etiketten sind, die diesen Quantitäten beigegeben werden. Sofern nicht, wie aus den folgenden Besprechungen zu erkennen, ausdrücklich etwas anderes angegeben ist, versteht es sich, dass im gesamten Verlauf der vorliegenden Erfindung Besprechungen, die Begriffe wie zum Beispiel ”ausführen”, ”empfangen”, ”zugreifen”, ”berechnen”, ”identifizieren”, ”decodieren”, ”codieren”, ”laden”, ”anwenden”, ”entfernen”, ”verschieben”, ”speichern”, ”auswählen”, ”anordnen”, ”anweisen”, ”erzeugen”, ”rekonstruieren”, ”vergleichen”, ”transformieren”, ”quantisieren”, ”holen” oder dergleichen verwenden, sich auf Aktionen und Prozesse eines Computersystems oder ähnlicher elektronischer Rechengeräte oder Prozessoren beziehen. Das Computersystem oder das ähnliche elektronische Rechengerät manipuliert und transformiert Daten, die als physikalische (elektronische) Quantitäten dargestellt sind, in den Speichern, Registern oder anderen derartigen Informationsspeicher-, Übertragungs- oder Anzeigeelementen eines Computersystems.
  • Die Beschreibungen und Beispiele, die im vorliegenden Text gegeben werden, werden im Kontext von Videodaten besprochen. Allerdings ist die vorliegende Erfindung nicht darauf beschränkt. Die Daten mögen Multimedia-Daten sein; zum Beispiel mögen den Videodaten Audiodaten zugeordnet sein.
  • 1 ist ein Blockschaubild eines Systems 10, auf dem ein Codierer gemäß der vorliegenden Erfindung implementiert sein kann. In dem Beispiel von 1 enthält das System 10 eine zentrale Host-Verarbeitungseinheit (CPU) 11, die über einen Bus 15 mit einer Medienprozessoreinheit (zum Beispiel Video- oder Grafikprozessoreinheit) (MPU) 12 verbunden ist. Sowohl die CPU 11 als auch die MPU 12 sind über Bus 15 mit einem Speicher 14 gekoppelt. In der Ausführungsform des Systems 10 ist der Speicher 14 ein gemeinsam genutzter Speicher, wodurch der Speicher 14 Instruktionen und Daten sowohl für die CPU 11 als auch für die MPU 12 speichert. Alternativ mögen separate Speicher eigens für die CPU 11 bzw. die MPU 12 vorhanden sein. Der Speicher 14 kann auch einen Videoframepuffer zum Speichern von Pixeldaten enthalten, der eine gekoppelte Anzeige 13 ansteuert.
  • Wie in 1 gezeigt, enthält das System 10 die Basiskomponenten einer Computersystemplattform, die Funktionen gemäß Ausführungsformen der vorliegenden Erfindung implementiert. Das System 10 kann zum Beispiel als eine Anzahl unterschiedlicher Arten tragbarer handgehaltener elektronischer Geräte implementiert sein. Zu solchen Geräten können zum Beispiel tragbare Telefone, persönliche digitale Assistenten (PDAs), handgehaltene Spielgeräte oder praktisch jede sonstige Art von Geräten mit Anzeigemöglichkeit gehören. In solchen Ausführungsformen können Komponenten enthalten sein, die dafür ausgelegt sind, Peripheriebusse, spezialisierte Kommunikationskomponenten, Unterstützung für spezialisierte Eingabe/Ausgabe(E/A)-Geräte und dergleichen hinzuzufügen.
  • Gemäß Ausführungsformen der vorliegenden Erfindung wird ein H.264-Codierer implementiert, indem ein H.264-Interpolator in eine ansonsten MPEG-4-Pipeline eingefügt wird. Die MPEG-4-Pipeline berechnet Bewegungsvektoren, die von dem H.264-Interpolator zur Bewegungskompensation verwendet werden. In einer Ausführungsform ist der H.264-Interpolator auf der MPU 12 implementiert. Die Ausgabe des H.264-Interpolators wird zum Beispiel in einen digitalen Signalprozessor (DSP) 16 eingespeist, der, in einer Ausführungsform, ein Teil der MPU 12 ist. Weitere Informationen zu dem H.264-Interpolator werden in Verbindung mit den 2, 3 und 4 unten gegeben.
  • 2 ist ein Blockschaubild, das einen Datenfluss durch Elemente eines Prozesses 20 zum Codieren von Videodaten gemäß einer Ausführungsform der vorliegenden Erfindung zeigt. Das Beispiel von 2 zeigt einige der bedeutenderen Verarbeitungsblöcke, die an der Codierung von Daten beteiligt sind. Es sind jedoch nicht alle Verarbeitungsblöcke gezeigt, und die Verarbeitungsblöcke mögen in einer anderen als der gezeigten Reihenfolge ausgeführt werden. Des Weiteren sind aus Gründen der Vereinfachung der Besprechung und Illustration nicht alle Datenflusspfade zwischen Verarbeitungsblöcken gezeigt.
  • Vor allem zeigt der Prozess 20 gemäß Ausführungsformen der vorliegenden Erfindung sowohl MPEG-4- als auch H.264-Verarbeitungsblöcke. Wie oben angesprochen, sind Elemente eines H.264-Codierers in eine MPEG-4-Pipeline eingesetzt. Allgemein ausgedrückt, wird die MPEG-4-Pipeline zum Erzeugen von Bewegungsvektoren verwendet, die wiederum entweder durch einen MPEG-4-Codierer oder einen H.264-Codierer verwendet werden. Das heißt, stromabwärts des Bewegungsschätzblocks 206 mögen die gemäß MPEG-4 erzeugten Bewegungsvektoren entweder in einem MPEG-4-Codierprozess oder in einem H.264-Codierprozess verwendet werden.
  • In dem Beispiel von 2 sind die Verarbeitungsblöcke, die gemäß MPEG-4 implementiert sind, als solche gekennzeichnet, und die Verarbeitungsblöcke, die gemäß H.264 implementiert sind, sind gleichermaßen gekennzeichnet. Obgleich es vorstellbar ist, dass die Verarbeitung von einem MPEG-4-Modus zu einem H.264-Modus und zurück umgeschaltet werden kann, wird der Prozess 20 in der Praxis entweder unter Verwendung eines MPEG-4-Codierers oder eines H.264-Codierers implementiert. Das heißt, das System 10 ist mit der Fähigkeit ausgestattet, ein MPEG-4-Codierschema und ein H.264-Codierschema zu implementieren. Wenn es jedoch in einem verbraucherelektronischen Gerät implementiert wird, so mag sich der Hersteller oder Händler entscheiden, nur eines der möglichen Codierschemen zu implementieren.
  • In der vorliegenden Ausführungsform wird ein Eingabe-Frame (aktueller Frame) 202 zum Codieren präsentiert. Der Frame wird in Einheiten eines Makroblocks (zum Beispiel eines 16×16-Pixelblocks) verarbeitet. Ein Vorhersage-Makroblock wird auf der Grundlage eines oder mehrerer Bezugs-Frames 204 gebildet. Der oder die Bezugs-Frames 204 mögen einen zuvor codierten Frame enthalten (den Frame, der unmittelbar vor dem aktuellen Frame 202 codiert wurde, wobei zu beachten ist, dass die Codierreihenfolge sich von der Reihenfolge unterscheiden kann, in der die Frames angezeigt werden sollen) und werden aus anderen Frames ausgewählt, die bereits codiert und rekonstruiert wurden (zum Beispiel der rekonstruiert Frame 216 für den MPEG-4-Modus oder der rekonstruiert Frame 224 für den H.264-Modus). In dem Bewegungsschätzblock 206 werden Bewegungsvektoren 208 durch Vergleichen des Eingabe-Frames 202 und des oder der Bezugs-Frames 204 abgeleitet.
  • In einer MPEG-4-Implementierung werden die Bewegungsvektoren 208 in dem Bewegungskompensationsblock 210 zum Bilden des Vorhersage-Makroblocks verwendet. Der Vorhersage-Makroblock wird von dem aktuellen Makroblock (Eingabe-Frame 202) subtrahiert, um einen Rest (residual) zu erzeugen, der zu einem Satz Koeffizienten (Block 212) transformiert (zum Beispiel diskret Kosinus-transformiert) und quantisiert wird. Die Koeffizienten können Entropie-codiert (zum Beispiel Huffman-codiert) und zusammen mit anderen Informationen, die zum Decodieren verwendet werden, aber nicht von zentraler Bedeutung für diese Besprechung sind, zu einem komprimiert Bitstrom gebildet werden, der übertragen oder gespeichert werden mag. Des Weiteren werden die Koeffizienten decodiert, um einen Frame zu rekonstruieren, der zum Codieren anderer Frames verwendet werden kann. In Block 214 werden die Koeffizienten umkehrquantisiert (invers quantized) und umkehrtransformiert (invers transformed), um einen weiteren Rest (der sich von dem zuvor angesprochenen Rest unterscheidet) zu erzeugen, der zu dem Vorhersage-Makroblock addiert wird, um einen rekonstruierten Makroblock und letztendlich einen rekonstruierten Frame 216 zu bilden.
  • In einer H.264-Implementierung werden die gemäß einem MPEG-4-Codierschema abgeleiteten Bewegungsvektoren 208 in dem H.264-Bewegungskompensationsblock 218 zum Erzeugen eines Vorhersageblocks verwendet, indem ein Sechs-Abgriffs-Filter (zum Beispiel ein sechs Abgriffs finites Impulsantwort-Filter) an sechs (6) benachbarten Pixeln für Halb-Pel-Bewegungsvektoren verwendet wird. Der H.264-Bewegungskompensationsblock 218 wird weiter in Verbindung mit den 3 und 4 unten beschrieben. In dem Datenpackblock 220 werden Daten aus dem Bewegungskompensationsblock 218 in einer Weise gepackt (angeordnet), die es ermöglicht, dass sie ohne Weiteres in der nächsten Verarbeitungsstufe (zum Beispiel stromabwärts des Datenverarbeitungsblocks 222) verwendet werden können. Der Datenpackblock 220 kann auch dazu dienen, den Datenfluss zum Block 222 zu steuern. In Block 222 werden die oben angesprochenen Transformations-, Quantisierungs-, Umkehrtransformations- und Umkehrquantisierungsprozesse unter Verwendung einer Kombination von Software und Hardware unter der Kontrolle der MPU 12 ausgeführt, wobei letztendlich ein rekonstruierter Frame 224 erzeugt wird, der zum Codieren anderer Frames verwendet werden kann.
  • Weiterhin bezugnehmend auf 2 mögen in dem Bewegungsschätzblock 206 die Bewegungsvektoren 208 bis auf eine Genauigkeit von einem Halbpixel (Halb-Pel) bestimmt werden. Ein Bewegungsvektor besteht aus einer x-Komponente und einer y-Komponente, von denen eine oder beide auf ein Halb-Pel genau sein mögen. Zum Beispiel bedeutet ein Vektor mit einer x-Komponente von 5,5, dass die Bewegung des Blocks (relativ zu einem entsprechenden Block in einem Bezugs-Frame gemessen) zwischen fünf (5) und 6 Pixeln in der x-Richtung liegt. Genauer gesagt, wird die Vektorkomponente bestimmt, indem der Durchschnitt von zwei (2) Pixeln genommen wird: das Pixel, das der 5-Pixel-Distanz zugeordnet ist, und das Pixel, das der 6-Pixel-Distanz zugeordnet ist. Dies wird als ein finites Impulsantwort (FIR) 2-Abgriffs-Filter (2-tap finite impulse response filter) bezeichnet, weil an 2 Pixeln operiert wird, um das Maß des dazwischenliegenden Pixels zu erhalten. Somit werden die Bewegungsvektoren 208 unter Verwendung eines 2-Abgriffs-Filters bestimmt und sind bis auf ein Halb-Pel genau. Obgleich die Genauigkeit bis zu einem Halb-Pel betragen kann, mag es Fälle geben, in denen die Bewegungsvektorkomponenten Voll-Pel-Werte sind. Des Weiteren kann der nachgeschaltete Verarbeitungsblock 222 verwendet werden, um Viertel-Pel-Bewegungsvektoren durch Mitteln der Halb-Pel-Werte zu bestimmen.
  • 3 ist ein Blockschaubild, das den Informationsfluss von dem Bewegungsschätzblock 206 zu dem H.264-Interpolator 32 (welche die Blöcke 218 und 220 von 2 repräsentieren) und dann zu dem nachgeschalteten Datenverarbeitungsblock 222 zur Weiterverarbeitung (zum Beispiel Transformation usw., wie zuvor im vorliegenden Text beschrieben) zeigt. Die Informationseingabe in den H.264-Interpolator 32 enthält Steuerungs- und Gültigkeitsbits, die zu den Daten 34 korrespondieren, die aus der MPEG-4-Pipeline fließen. Die Daten enthalten Makroblock-Daten für die Bezugs- und die aktuellen Frames. Die Steuerungsbits zum Beispiel markieren den Anfang und das Ende von Makroblöcken und Frames. Ein Gültigkeitsbit kann eingebunden werden, um Pipelines zu markieren, die gültige Daten enthalten. Die Steuerungs- und Gültigkeitsbits 33 werden außerdem dafür verwendet, die Luminanz-(luma) und Chrominanz-(chroma)Speicherlesemaschinen in der Bewegungskompensationsvorrichtung 218 des H.264-Interpolators 32 zu steuern. Des Weiteren werden die Steuerungs- und Gültigkeitsbits 33 durch den Datenpacker 220 verwendet, um die Ausgabedaten zu packen, die zu dem Block 222 gesendet werden.
  • In der vorliegenden Ausführungsform empfängt der H.264-Interpolator 32 außerdem ein Signal 38, das den Datentyp anzeigt (zum Beispiel aktueller Frame oder Bezugs-Frame).
  • Die Informationsausgabe aus dem H.264-Interpolator 32 enthält außerhalb des Bandes (out of band) liegende Signale 36 und Daten 37. Die Daten 37 enthalten einen Stream von bewegungskompensierten Pixelwerten, die zu den Pixeln auf dem Anzeigeschirm 13 (1) korrespondieren. Die Daten 37 enthalten außerdem die Bewegungsvektoren 208 von 2. Jeder Pixelwert stellt die gefilterten Werte der Pixel dar. Wenn die Bewegungsvektoren 208 ungleich null sind, so sind die Daten 37 eine Funktion der Bewegungsvektoren. Wenn die Bewegungsvektoren 208 null sind, so werden die Daten durch den H.264-Interpolator 32 geleitet.
  • Die außerhalb des Bandes liegenden Signale 36 von 3 kennzeichnen zum Beispiel den Anfang und das Ende von Blöcken und Makroblöcken, den Anfang eines Frames und den letzten Makroblock des Frames. Ein Datengültigkeitsbit kann ebenfalls versendet werden. 7 zeigt eine Ausführungsform eines Signalprotokolls für die außerhalb des Bandes liegenden Signale 36.
  • 4 ist ein Blockschaubild eines H.264-Interpolators 32 gemäß einer Ausführungsform der vorliegenden Erfindung. In der vorliegenden Ausführungsform enthält der H.264-Interpolator 32 den Bewegungskompensationsblock 218 und den Datenpackblock 220 von 2. Kurz gesagt, enthält der H.264-Interpolator 32 in einer Ausführungsform einen Ringdatencache mit Datenreplikationslogik, eine Zustandsmaschine 50, die den Betrieb des H.264-Interpolators 32 steuert, eine Hardwaresteuerungsstruktur, die dafür verwendet wird, Speicherwörter aus dem Systemspeicher 14 (1) zu holen, einen Datenpfad, der dafür verwendet wird, Interpolationsfilter auf die Daten anzuwenden, und eine Ausgabeeinheit (Ausgabeauswahllogik 450), welche die Daten packt und die Ergebnisse in die nächste Einheit (stromabwärts des Datenverarbeitungsblocks 222) schreibt. Die Ausgabeauswahllogik 450 ist analog dem Datenpacker 220 von 2. Die Zustandsmaschine 50 wird in Verbindung mit 5 unten besprochen.
  • In der folgenden Besprechung des H.264-Interpolators 32 von 4 wird auf Puffer, Cache-Speicher und dergleichen Bezug genommen. Diese Speicherelemente mögen sich in dem Systemspeicher 14 von 1, in einer separaten Speichereinheit, die mit dem H.264-Interpolator 32 gekoppelt ist, oder in dem Interpolator 32 befinden. Des Weiteren sind im Interesse der deutlicheren Veranschaulichung einige Details nicht in 4 enthalten (zum Beispiel mögen Multiplexer weggelassen sein). Des Weiteren wird 4 im Kontext zum Beispiel einer Anzahl von Bits, einer Anzahl von Filtern, einer Anzahl von Puffern und dergleichen besprochen. Obgleich die Besprechung im Kontext dieser konkreten Beispiele stattfindet, ist die vorliegende Erfindung nicht darauf beschränkt.
  • Der Datenpfad durch den H.264-Interpolator 32 hindurch enthält eine Daten-Pipeline und eine Steuerungs-Pipeline. Die Daten- und die Steuerungspipeline enthalten Umgehungsmultiplexer, die dafür verwendet werden, Daten aus der aktuellen Pipestufe an eine anschließende Pipestufe weiterzugeben. Das heißt, Daten können an einer Pipestufe vorbeispringen. Die Multiplexer, die den Fluss durch die Daten- und die Steuerungspipeline hindurch steuern, werden durch dieselben Multiplexerauswahlsignale gesteuert. Die Multiplexerumgehungsoperationen werden durch die Bewegungsvektoren 208 (2) und den Datentyp 38 (zum Beispiel aktueller Frame oder Bezugs-Frame, siehe 3) gesteuert.
  • Weiterhin bezugnehmend auf 4 korrespondieren die Steuerungs- und Gültigkeitsbits, die durch die Steuerungspipeline fließen, zu den Daten, die durch dieselbe Pipestufe in der Daten-Pipeline fließen. Die Steuerungsbits markieren den Anfang und das Ende von Makroblöcken und Frames. Ein Gültigkeitsbit wird eingebunden, um Pipelines zu markieren, die gültige Daten enthalten. Die Steuerungs- und Gültigkeitsbits dienen der Steuerung der Luminanz- und Chrominanz-Speicherlesemaschinen (zum Beispiel der Eingabeauswahllogik 403) und dem Packen der Daten, die zu dem nachgeschalteten Datenverarbeitungsblock 222 gesendet werden.
  • In einer Ausführungsform wird jede Ebene des Bezugs-Frames 204 (2) in einem Ringpuffer in dem Systemspeicher 14 (1) gespeichert. Für jeden 8×8-Quadranten eines 16×16-Pixel-Makroblocks gibt es einen bereits berechneten Bewegungsvektor. Für jeden Quadranten werden die oben-links- und unten-rechts-Koordinaten des Blocks mit dem Bewegungsvektor summiert, und das Ergebnis wird auf die Grenzen des Bezugs-Frames beschnitten. Die resultierenden Koordinaten werden dann auf die Ringpuffer im Systemspeicher 14 (1) projiziert. Wenn die Koordinaten den Puffer ”umhüllen” (siehe 6), so werden zwei Speicherabrufe je Farbkanal je Quadrant ausgeführt. Wenn die Koordinaten den Puffer nicht umhüllen, so ist nur ein einzelner Speicherabruf nötig. Die Größe jedes Abrufs liegt im Bereich von 1×1 bis 13×13 Pixeln, je nachdem, ob zum Beispiel der Abruf ein Luminanz- oder ein Chrominanzabruf ist, ob die Koordinaten den Ringpuffer umhüllen oder nicht und ob die Bewegungsvektoren Halb-Pel sind oder nicht.
  • Der H.264-Interpolatorblock 32 von 4 ist mit Cache-Speichern für aktuelle und Bezugsdaten gekoppelt, die 14-Bit-Pixelwerte enthalten. Der H.264-Interpolator 32 wird durch eine vorgeschaltete Einheit (zum Beispiel einen Bewegungsschätzblock 206) gesteuert, der signalisiert, wenn gültige Daten vorliegen. Der H.264-Interpolator 32 liest Daten gemäß der Eingabeauswahllogik 403. Wenn die abgerufenen Daten aus dem Speicher 14 zurückkehren, werden sie in verschiedenen Puffern cache-gespeichert. Es gibt vier Puffer je Kanal. Die Luminanz-Puffer haben jeweils 13×13 Pixel (acht Bits je Pixel), und die Chroma-Puffer haben jeweils 5×5 Pixel (acht Bits je Pixel). Daten für jeden Quadranten, die zwei Abrufe erforderten, werden in einen einzelnen Puffer hinein geheftet (stiched). Des Weiteren werden die Daten automatisch grenzerweitert (boundary-extended) (zum Beispiel unter Verwendung von Grenzspiegelung verfügbarer Pixel, wobei im Wesentlichen die Randpixel über die Grenze hinaus wiederholt werden), um um ein Beschneiden zu kompensieren, das während des Abrufens auftrat. Die Abrufe aus dem Systemspeicher 14 werden mit dem Interpolationsprozess des H.264-Interpolators 32 aufgereiht (”pipelined”).
  • Der H.264-Interpolator 32 liest Daten für den Bezugs-Frame (zum Beispiel Bezugs-Frame 204 von 2) aus den Puffern. Für den Luminanz-Kanal jedes 8×8-Quadranten in dem Bezugs-Frame liest der H.264-Interpolator 32 acht oder 13 Zeilen von acht oder 13 Acht-Bit-Pixeln aus einem Puffer. Für jeden Chrominanz-Kanal jedes 8×8-Quadranten in dem Bezugs-Frame liest der H.264-Interpolator 32 vier oder fünf Zeilen von vier oder fünf Acht-Bit-Pixeln aus einem Puffer. Für den H.264-Interpolator 32 ist transparent, ob die Puffer mit mehreren Abrufen befüllt wurden oder ob eine Grenzerweiterung verwendet wurde.
  • Der H.264-Interpolator 32 von 4 liest Daten für den aktuellen Frame (zum Beispiel Eingabe-Frame 202 von 2) aus den Puffern. Für den Luminanz-Kanal jedes 8×8-Quadranten des aktuellen Frames liest der H.264-Interpolator 32 acht Zeilen von acht Acht-Bit-Pixeln aus einem Puffer. Für jeden Chrominanz-Kanal jedes 8×8-Quadranten in dem aktuellen Frame liest der H.264-Interpolator 32 vier Zeilen von vier Acht-Bit-Pixeln aus einem Puffer.
  • Die Daten werden unter Verwendung der Luminanz-Zeilenfilter 404, 405, 406 und 407, der Luminanz-Spaltenfilter 421, 422, 423 und 424, der Chrominanz-Zeilenfilter 431, 432, 433 und 434 und der Chrominanz-Spaltenfilter 441, 442, 443 und 444 verarbeitet. Mit vier Filtern in jeder Stufe können vier Pixel auf einmal gehandhabt werden. Jedes dieser Filter ist ein Sechs-Abgriffs-FIR-Filter, das den Kernel [1 –5 20 20 –5 1]/32 implementiert und eine Acht-Bit-Ausgabe erzeugt. Die Luminanzfilter 404407 und 421424 haben jeweils sechs 14-Bit-Eingänge. Jedes jeweilige Paar Chrominanzfilter 431434 und 441444 hat zwei-mal-fünf 14-Bit-Eingänge. Das heißt, es gibt vier Chrominazfilter, von denen jedes ein Zeilenfilter und ein jeweiliges Spaltenfilter enthält. So enthält zum Beispiel ein Chrominazfilter ein Chrominaz-Zeilenfilter 431 und ein Chrominaz-Spaltenfilter 441, ein weiteres solches Paar enthält ein Chrominaz-Zeilenfilter 432 und ein Chrominaz-Spaltenfilter 442, und so weiter.
  • Jede Luminanz- und Chrominanzoperation wird durch die Bewegungsvektoren 208 (2), die den Makroblock-Daten zugeordnet sind, gesteuert. Wenn der Bewegungsvektor null ist, dann werden die Filteroperationen umgangen (Datenumgehung 460), anstatt die Daten mit null zu multiplizieren.
  • Die Operationen in der x-Richtung (zum Beispiel Zeile) und in der y-Richtung (zum Beispiel Spalte) können entkoppelt werden, so dass Operationen zuerst an den Zeilen und dann an den Spalten ausgeführt werden können. Die Luminanzfilteroperationen werden in eine x-Komponenten-Filteroperation vor dem Cache 411 und eine y-Komponenten-Filteroperation nach dem Cache 411 aufgeteilt. Wenn die x-Komponente des Bewegungsvektors null ist, dann umgehen die Luminanzdaten (Umgehung 412) die Luminanz-Zeilenfilter 404407 unter Verwendung einen Umgehungsmultiplexers (Routinglogik 410), anstatt mit null multipliziert zu werden. Wenn die x-Komponente des Bewegungsvektors ungleich null ist (zum Beispiel eins), dann werden die Daten durch die Luminanz-Zeilenfilter 404407 gefiltert. Die Ergebnisse werden durch die Routinglogik 410 ausgewählt und in Luminanz-Cache 414 abgelegt.
  • Der Cache 411 hat sechs Zeilen, die durch die Luminanz-Spaltenfilter 421424, die Chrominanz-Zeilenfilter 431434 und die Chrominanz-Spaltenfilter 441444 gemeinsam genutzt werden. Die ersten zwei Zeilen haben fünf 14-Bit-Pixel-Wörter und bilden den Chrominanz-Cache 412, der mit den Chrominanz-Zeilenfiltern 431434 und den Chrominanz-Spaltenfiltern 441444 gekoppelt ist. Die nächsten vier Zeilen haben vier 14-Bit-Pixel-Wörter und bilden den Luminanz-Cache 414, der mit den Luminanz-Spaltenfiltern 421424 gekoppelt sind.
  • Jede Zeile des Caches 411 ist mit der nächsten Zeile verbunden. Am Anfang eines Makroblocks ist der Daten-Cache 411 leer, wird aber gefüllt, wenn Daten durch die Luminanz-Zeilenfilter 404407 abgerufen und verarbeitet werden. Ergebnisse aus den Luminanz-Zeilenfilteroperationen werden in die erste Zeile des Caches 411 geladen. In jedem Taktzyklus, in dem der Cache 411 aktiviert wird, werden die Daten abwärts in die nächste Zeile des Caches 411 verschoben. Die Daten werden in die Luminanz-Spaltenfilter 421424, die Chrominanz-Zeilenfilter 431434 und die Chrominanz-Spaltenfilter 441444 eingespeist.
  • Die Luminanz-Spaltenfilter 421424 verwenden die y-Komponente der Bewegungsvektoren zum Filtern der Daten. Stromabwärts der Luminanz-Spaltenfilter 421424 befinden sich Luminanz-Beschneidungsblöcke, die in 4 mit ”C” bezeichnet sind.
  • Die Chrominanzfilter 431434 und 441444 verwenden die x-Komponente eines Bewegungsvektors zum Auswählen und Anwenden der ersten Stufe (zum Beispiel ein Zeilenfilter) der Chrominanzfilteroperation und verwenden dann die y-Komponente des Bewegungsvektors zum Auswählen und Anwenden der zweiten Stufe (zum Beispiel ein Spaltenfilter) der Chrominanzfilteroperation. Jedes Chrominanzfilter implementiert die Gleichung: Pixel-out = (a·E) + (b·F) + (c·G) + (d·H), wobei a = (4 – xfrac), b = xfrac, c = (4 – xfrac) und d = xfrac für die erste Stufe des Filters und wobei a = (4 – yfrac), b = (4 – yfrac), c = yfrac und d = yfrac für die zweite Stufe des Filters. E, F, G und H stellen die 4 Eingabe-Pixel dar, und xfrac und yfrac stellen die niedrigeren 2 Bits der x-Komponente bzw. y-Komponente des Bewegungsvektors dar. Das Ergebnis dieser Beziehung wird durch Addieren von 8 aufgerundet, und das Ergebnis wird in dem Block, der in 4 mit ”A” gekennzeichnet ist, um 4 Bits nach rechts verschoben.
  • Mit Bezug auf die 2 und 4 packt die Ausgabeeinheit (Ausgabeauswahllogik 450, die analog dem Datenpacker 220 ist) die Daten aus den Luminanz- und Chrominanzfiltern in einer Weise, die es gestattet, dass die Daten ohne Weiteres in der nächsten Stufe (zum Beispiel stromabwärts des Datenverarbeitungsblocks 222) verwendet werden können. In einer Ausführungsform folgt auf einen 4×4-Block aus Pixeldaten für den Bezugs-Frame (zum Beispiel den Bezugs-Frame 204) ein 4×4-Block aus Pixeldaten für den aktuellen Frame (zum Beispiel Eingabe-Frame 202). Auf diese Weise werden Daten für den Bezugs-Frame mit Daten für den aktuellen Frame verschachtelt. Dies kann die Verarbeitung der Daten durch den nachgeschalteten Datenverarbeitungsblock 222 vereinfachen, weil der Block 222 so zumindest einen Teil der beiden Datensätze hat, die benötigt werden, um einen korrespondierenden Teil des rekonstruierten Frames 224 zu erzeugen. Oder anders ausgedrückt: Anstatt den gesamten Bezugs-Frame auszugeben, gefolgt von dem gesamten aktuellen Frame, wird ein Teil von jedem ausgegeben, was es Block 222 erlaubt, an diesem Teil zu operieren.
  • 5 veranschaulicht eine Zustandsmaschine 50 zum Steuern des Betriebes des H.264-Interpolationsblocks 32 gemäß einer Ausführungsform der vorliegenden Erfindung. In der vorliegenden Ausführungsform enthält die Zustandsmaschine 50 eine Haupt-Zustandsmaschine 52 und zwei Zustands-Teilmaschinen: eine Zustandsmaschine 54 für aktuelle Daten und eine Zustandsmaschine 56 für Bezugsdaten. Der H.264-Interpolator 32 (4) mag entweder an den Daten für den aktuellen Frame 202 oder für einen Bezugs-Frame 204 (2) arbeiten gemäß dem Signal 38, und die entsprechende Zustands-Teilmaschine 54 oder 56 wird durch die Haupt-Zustandsmaschine 52 aktiviert (enabled = ”en”), um die Systemspeicherabrufe und die Speicherpufferlesungen zu steuern und auszuführen, die in Verbindung mit 4 besprochen wurden. Die Zustandsmaschinen 54 und 56 implementieren jeweils eine vorgeschriebene Logik für das ”Durchlaufen” der 8×8-Pixelblöcke in einem Makroblock und der 4×4-Pixelblöcke in jedem 8×8-Block.
  • 6 veranschaulicht die Verwendung eines Ringpuffers 60 zum Speichern von Frameinformationen gemäß einer Ausführungsform der vorliegenden Erfindung. In dieser Ausführungsform wird der Puffer 60 dafür verwendet, einen Teil eines Bezugs-Frames 61 und einen Teil eines rekonstruierten Frames 62 zu halten, der anschließend als ein Bezugs-Frame verwendet werden kann. Wenn der rekonstruierte Frame 62 in den Puffer 60 gelesen wird, so ersetzt er Daten für den Bezugs-Frame 61, die zuvor abgerufen wurden. Wenn, in dem Beispiel von 6, der rekonstruierte Frame 62 in den Puffer 60 gelesen wird, so erreicht er den Boden des Puffers, zu welchem Punkt begonnen wird, die Daten in den oberen Teil des Puffers zu lesen. Infolge dessen mögen, wenn der rekonstruierte Frame 62 anschließend abgerufen wird, in einigen Fällen zwei Abrufe nötig sein (wenn die abzurufenden Daten sowohl unten als auch oben in dem Puffer 60 gespeichert werden). Der Puffer 60 verringert die Menge der benötigten Speicherressourcen. Allerdings ist die vorliegende Erfindung nicht auf die Verwendung eines Ringpuffers beschränkt.
  • 7 zeigt ein Signalprotokoll für die außerhalb des Bandes liegenden Signale 36 (3) gemäß einer Ausführungsform der vorliegenden Erfindung. Zu den in 7 veranschaulichten Signalen gehören ”Frame_start”, was den Anfang eines Frames anzeigt, ”mb_v”, was anzeigt, dass der Makroblock gültig ist, ”mb_start”, was den Anfang eines Makroblocks anzeigt, ”mb_end”, was das Ende eines Makroblocks anzeigt, ”blk_start”, was den Anfang eines Blocks anzeigt, und ”blk_end”, was das Ende eines Blocks anzeigt.
  • 8 ist ein Flussdiagramm 80 eines Beispiels eines Verfahrens zum Verarbeiten von Daten gemäß einer Ausführungsform der vorliegenden Erfindung. Obgleich in dem Flussdiagramm 80 konkrete Schritte offenbart sind, sind solche Schritte beispielhaft. Das heißt, die vorliegende Erfindung eignet sich gut zum Durchführen verschiedener anderer Schritte oder Variationen der Schritte, die in dem Flussdiagramm 80 angegeben sind. Es versteht sich, dass die Schritte in dem Flussdiagramm 80 in einer anderen Reihenfolge ausgeführt werden mögen, die sich von der dargestellten Reihenfolge unterscheidet, und dass die Schritte in dem Flussdiagramm 80 nicht unbedingt in der dargelegten Abfolge ausgeführt werden. Im Allgemeinen sind die Schritte in dem Flussdiagramm 80 durch die MPU 12 von 1.
  • In Block 81 von 8 werden Bewegungsvektoren unter Verwendung eines finiten Impulsantwort (FIR) Zwei-Abgriffs-Filters ausgewählt. Die Bewegungsvektoren werden gemäß einem ersten Codierschema unter Verwendung eines Blocks eines Eingabe-Frames aus Videodaten und eines Blocks eines Bezugs-Frames aus Videodaten erzeugt. In einer Ausführungsform ist das erste Codierschema ein MPEG-4-Codierschema.
  • In Block 82 werden Sechs-Abgriffs-FIR-Filter auf die Bewegungsvektoren angewendet, um Halb-Pel-Interpoliert-Pixel gemäß einem zweiten Codierschema zu berechnen, das sich von dem ersten Codierschema unterscheidet. In einer Ausführungsform ist das zweite Codierschema ein H.264-Codierschema.
  • In einer Ausführungsform wird die x-Komponente eines Luminanz-Kanals der Videodaten unter Verwendung einer Mehrzahl von Luminanz-Zeilen-Sechs-Abgriffs-FIR-Filter bearbeitet. Ein Ergebnis aus der Mehrzahl von Luminanz-Zeilenfiltern wird in eine erste Zeile eines Caches geladen. Ein Ergebnis, das sich bereits in der ersten Zeile befindet, wird in eine zweite Zeile des Caches verschoben.
  • Des Weiteren wird in einer Ausführungsform die x-Komponente eines Chrominanz-Kanals der Videodaten unter Verwendung einer Mehrzahl von Chrominanz-Zeilen-Sechs-Abgriffs-FIR-Filter bearbeitet, die y-Komponente des Chrominanz-Kanals wird unter Verwendung einer Mehrzahl von Chrominanz-Spalten-Sechs-Abgriffs-FIR-Filter bearbeitet, und die y-Komponente des Luminanz-Kanals wird unter Verwendung einer Mehrzahl von Luminanz-Spalten-Sechs-Abgriffs-FIR-Filter bearbeitet.
  • In Block 83 verschachtelt (interleaves) ein Datenpacker Blöcke aus Videodaten für den Eingabe-Frame mit Blöcken aus Videodaten für den Bezugs-Frame.
  • Allgemein ausgedrückt, offenbart diese Schrift Verfahren und Systeme zum Verarbeiten von Daten. Eine Bewegungsschätzvorrichtung verwendet einen Block eines Eingabe-Frames aus Videodaten und einen Block eines Bezugs-Frames aus Videodaten zum Erzeugen von Bewegungsvektoren gemäß einem ersten Codierschema. Eine Bewegungskompensationsvorrichtung erzeugt Halb-Pel-Bewegungsvektoren aus den Bewegungsvektoren gemäß einem zweiten Codierschema, das sich von dem ersten Codierschema unterscheidet.
  • Es sind somit Ausführungsformen der vorliegenden Erfindung beschrieben worden. Obgleich die vorliegende Erfindung anhand konkreter Ausführungsformen beschrieben wurde, versteht es sich, dass die vorliegende Erfindung nicht so ausgelegt werden darf, als werde sie durch diese Ausführungsformen eingeschränkt.

Claims (11)

  1. System zum Verarbeiten von Videodaten, wobei das System aufweist: eine Bewegungsschätzvorrichtung, die betreibbar ist, einen Block eines Eingabe-Frames von Videodaten und einen Block eines Bezugs-Frames von Videodaten zum Erzeugen von Bewegungsvektoren gemäß einem ersten Codierschema unter Verwendung eines finiten Impulsantwort (FIR) Zwei-Abgriffs-Filters zu verwenden, einen ersten Codierer, der mit der Bewegungsschätzvorrichtung gekoppelt ist, wobei der erste Codierer betreibbar ist, die Bewegungsvektoren zu verwenden, um eine rekonstruierte erste Version des Blocks des Eingabe-Frames gemäß dem ersten Codierschema zu erzeugen, und einen zweiten Codierer, der mit der Bewegungsschätzvorrichtung gekoppelt ist, wobei der zweite Codierer eine Mehrzahl von Sechs-Abgriffs-FIR-Filtern zum Erzeugen von Halb-Pel-Interpoliert-Pixeln aufweist, wobei die Sechs-Abgriffs-FIR-Filter gesteuert sind, die Bewegungsvektoren zu verwenden, um eine rekonstruierte zweite Version des Blocks des Eingabe-Frames gemäß einem zweiten Codierschema zu erzeugen, das sich von dem ersten Codierschema unterscheidet.
  2. System gemäß Anspruch 1, wobei der zweite Codierer des Weiteren einen Ringpuffer aufweist, der betreibbar ist, gleichzeitig sowohl den Block des Bezugs-Frames als auch die rekonstruierte zweite Version des Blocks des Eingabe-Frames zu speichern, und/oder wobei der zweite Codierer des Weiteren einen Datenpacker aufweist, der betreibbar ist, Blöcke von Videodaten für den Eingabe-Frame und Blöcke von Videodaten für den Bezugs-Frame zu verschachteln, und/oder wobei der zweite Codierer des Weiteren einen digitalen Signalprozessor aufweist, der betreibbar ist, eine Mehrzahl von softwarebasierten Instruktionen auszuführen, die Codieroperationen implementieren, wobei die Codieroperationen Transformation und Quantisierung eines Rests aufweisen, der eine Differenz zwischen dem Eingabe-Frame und dem Bezugs-Frame aufweist, wobei die Codieroperationen des Weiteren Umkehrquantisierung und Umkehrtransformation des Rests aufweisen.
  3. System gemäß Anspruch 1, wobei der zweite Codierer eine Mehrzahl von Luminanz-Zeilenfilter zum Bearbeiten der x-Komponente eines Luminanz-Kanals der Videodaten aufweist, und/oder wobei der zweite Codierer des Weiteren einen Cache aufweist, der mit der Mehrzahl von Luminanz-Zeilenfiltern gekoppelt ist, wobei für jeden Taktzyklus, in dem der Cache aktiviert ist, ein Ergebnis aus der Mehrzahl von Luminanz-Zeilenfiltern in eine erste Zeile des Caches geladen wird und ein Ergebnis, das sich bereits in der ersten Zeile befindet, in eine zweite Zeile des Caches verschoben wird, und/oder wobei der zweite Codierer des Weiteren aufweist: eine Mehrzahl von Chrominanz-Zeilenfilter zum Bearbeiten der x-Komponente eines Chrominanz-Kanals der Videodaten, eine Mehrzahl von Chrominanz-Spaltenfilter zum Bearbeiten der y-Komponente des Chrominanz-Kanals, und eine Mehrzahl von Luminanz-Spaltenfilter zum Bearbeiten der y-Komponente des Luminanz-Kanals, wobei sowohl die Mehrzahl von Chrominanz-Zeilenfilter als auch die Mehrzahl von Chrominanz-Spaltenfilter sowohl mit der ersten Zeile als auch mit der zweiten Zeile des Caches gekoppelt sind und wobei jedes Luminanz-Spaltenfilter der Mehrzahl von Luminanz-Spaltenfilter mit jeder Zeile des Caches gekoppelt ist.
  4. System gemäß Anspruch 1, wobei das erste Codierschema ein Codierschema aufweist, das im Wesentlichen mit MPEG-4 kompatibel ist, und das zweite Codierschema ein Codierschema aufweist, das im Wesentlichen mit H.264 kompatibel ist.
  5. Verfahren zum Verarbeiten von Videodaten, wobei das Verfahren aufweist: Auswählen von Bewegungsvektoren unter Verwendung eines finiten Impulsantwort (FIR) Zwei-Abgriffs-Filters, wobei die Bewegungsvektoren gemäß einem ersten Codierschema unter Verwendung eines Block eines Eingabe-Frames von Videodaten und eines Blocks eines Bezugs-Frames von Videodaten erzeugt werden, Auswählen eines Codierers von einem ersten Codierer und einem zweiten Codierer, um eine rekonstruierte Version des Blocks des Eingabe-Frames zu erzeugen, wobei der erste Codierer betreibbar ist, die Bewegungsvektoren zu verwenden, um eine rekonstruierte erste Version des Blocks des Eingabe-Frames gemäß dem ersten Codierschema zu erzeugen, und wobei der zweite Codierer betreibbar ist, die Bewegungsvektoren zu verwenden, um eine rekonstruierte zweite Version des Blocks des Eingabe-Frames gemäß einem zweiten Codierschema zu erzeugen, das sich von dem ersten Codierschema unterscheidet, und Anwenden von Sechs-Abgriffs-FIR-Filtern auf die Bewegungsvektoren zum Berechnen von Halb-Pel-Interpoliert-Pixeln gemäß dem zweiten Codierschema.
  6. Verfahren gemäß Anspruch 5, das des Weiteren das gleichzeitige Speichern sowohl des Blocks des Bezugs-Frames als auch einer rekonstruierten Version des Blocks des Eingabe-Frames in einem Ringpuffer aufweist, und/oder das des Weiteren das Verschachteln von Blöcken von Videodaten für den Eingabe-Frame und von Blöcken von Videodaten für den Bezugs-Frame aufweist.
  7. Verfahren gemäß Anspruch 5, das des Weiteren aufweist: Bearbeiten der x-Komponente eines Luminanz-Kanals der Videodaten unter Verwendung einer Mehrzahl von Luminanz-Zeilen-Sechs-Abgriffs-FIR-Filter, Laden eines Ergebnisses von den Mehrzahl von Luminanz-Zeilenfiltern in eine erste Zeile eines Caches, und Verschieben eines Ergebnisses, das sich bereits in der ersten Zeile befindet, in eine zweite Zeile des Caches, und/oder das des Weiteren aufweist: Bearbeiten der x-Komponente eines Chrominanz-Kanals der Videodaten unter Verwendung einer Mehrzahl von Chrominanz-Zeilen-Sechs-Abgriffs-FIR-Filtern, Bearbeiten der y-Komponente des Chrominanz-Kanals unter Verwendung einer Mehrzahl von Chrominanz-Spalten-Sechs-Abgriffs-FIR-Filtern, und Bearbeiten der y-Komponente des Luminanz-Kanals unter Verwendung einer Mehrzahl von Luminanz-Spalten-Sechs-Abgriffs-FIR-Filtern.
  8. Verfahren gemäß Anspruch 5, wobei das erste Codierschema ein Codierschema aufweist, das im Wesentlichen mit MPEG-4 kompatibel ist, und das zweite Codierschema ein Codierschema aufweist, das im Wesentlichen mit H.264 kompatibel ist.
  9. System zum Verarbeiten von Videodaten, wobei das System aufweist: eine Bewegungsschätzvorrichtung, die betreibbar ist, einen Block eines Singabe-Frames von Videodaten und einen Block eines Bezugs-Frames von Videodaten zum Erzeugen von Bewegungsvektoren gemäß einem ersten Codierschema zu verwenden, wobei die Bewegungsvektoren unter Verwendung eines finiten Impulsantwort (FIR) Zwei-Abgriffs-Filters erzeugt werden, eine erste Bewegungskompensationsvorrichtung, die mit der Bewegungsschätzvorrichtung gekoppelt ist, wobei die erste Bewegungskompensationsvorrichtung betreibbar ist, interpolierte Pixel aus den Bewegungsvektoren gemäß dem ersten Codierschema zu erzeugen, eine zweite Bewegungskompensationsvorrichtung, die mit der Bewegungsschätzvorrichtung gekoppelt und parallel zu der ersten Bewegungskompensationsvorrichtung ist, wobei die zweite Bewegungskompensationsvorrichtung betreibbar ist, Halb-Pel-Interpoliert-Pixel aus den Bewegungsvektoren gemäß einem zweiten Codierschema zu erzeugen, das sich von dem ersten Codierschema unterscheidet, wobei die Halb-Pel-Interpoliert-Pixel unter Verwendung einer Mehrzahl von Sechs-Abgriffs-FIR-Filter erzeugt werden, und einen Datenpacker, der mit der zweiten Bewegungskompensationsvorrichtung in Serie mit der zweiten Bewegungskompensationsvorrichtung gekoppelt ist, wobei der Datenpacker betreibbar ist, Blöcke von Videodaten für den Eingabe-Frame mit Blöcken von Videodaten für den Bezugs-Frame zu verschachteln.
  10. System gemäß Anspruch 9, wobei die zweite Bewegungskompensationsvorrichtung des Weiteren einen Ringpuffer aufweist, der betreibbar ist, gleichzeitig sowohl den Block des Bezugs-Frames als auch eine rekonstruierte Version des Blocks des Eingabe-Frames zu speichern, und/oder des Weiteren einen digitalen Signalprozessor aufweist, der mit dem Datenpacker gekoppelt ist und betreibbar ist, eine Mehrzahl von softwarebasierten Instruktionen auszuführen, die Codieroperationen implementieren, wobei die Codieroperationen Transformation und Quantisierung eines Rests aufweisen, der eine Differenz zwischen dem Eingabe-Frame und dem Bezugs-Frame aufweist, wobei die Codieroperationen des Weiteren Umkehrquantisierung und Umkehrtransformation des Rests aufweisen.
  11. System gemäß Anspruch 9, das des Weiteren aufweist: eine Mehrzahl von Luminanz-Zeilenfilter zum Bearbeiten der x-Komponente eines Luminanz-Kanals der Videodaten, einen Cache, der mit der Mehrzahl von Luminanz-Zeilenfiltern gekoppelt ist, wobei für jeden Taktzyklus, in dem der Cache aktiviert ist, ein Ergebnis aus der Mehrzahl von Luminanz-Zeilenfiltern in eine erste Zeile des Caches geladen wird und ein Ergebnis, das sich bereits in der ersten Zeile befindet, in eine zweite Zeile des Caches verschoben wird, eine Mehrzahl von Chrominanz-Zeilenfilter zum Bearbeiten der x-Komponente eines Chrominanz-Kanals der Videodaten, eine Mehrzahl von Chrominanz-Spaltenfilter zum Bearbeiten der y-Komponente des Chrominanz-Kanals, und eine Mehrzahl von Luminanz-Spaltenfilter zum Bearbeiten der y-Komponente des Luminanz-Kanals, wobei sowohl die Mehrzahl von Chrominanz-Zeilenfilter und die Mehrzahl von Chrominanz-Spaltenfilter mit sowohl der ersten Zeile als auch der zweiten Zeile des Caches gekoppelt sind und wobei jedes Luminanz-Spaltenfilter der Mehrzahl von Luminanz-Spaltenfilter mit jeder Zeile des Caches gekoppelt ist.
DE112007000359T 2006-02-10 2007-02-09 Verarbeitung von Videodaten Active DE112007000359B4 (de)

Applications Claiming Priority (5)

Application Number Priority Date Filing Date Title
US77244006P 2006-02-10 2006-02-10
US60/772,440 2006-02-10
US11/636,104 2006-12-08
US11/636,104 US8705630B2 (en) 2006-02-10 2006-12-08 Adapting one type of encoder to another type of encoder
PCT/US2007/003457 WO2007095079A1 (en) 2006-02-10 2007-02-09 Processing video data

Publications (2)

Publication Number Publication Date
DE112007000359T5 DE112007000359T5 (de) 2008-11-27
DE112007000359B4 true DE112007000359B4 (de) 2013-04-11

Family

ID=38368425

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112007000359T Active DE112007000359B4 (de) 2006-02-10 2007-02-09 Verarbeitung von Videodaten

Country Status (8)

Country Link
US (1) US8705630B2 (de)
JP (1) JP4987884B2 (de)
KR (1) KR100995205B1 (de)
CN (1) CN101379832B (de)
DE (1) DE112007000359B4 (de)
GB (1) GB2447402B (de)
TW (1) TWI473500B (de)
WO (1) WO2007095079A1 (de)

Families Citing this family (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050111545A1 (en) 2003-11-25 2005-05-26 Ram Prabhakar Dynamic packet size control for MPEG-4 data partition mode
US8355782B2 (en) 2008-01-28 2013-01-15 St. Jude Medical Ab Implantable heart stimulator for measuring dyssynchrony using impedance
KR101031493B1 (ko) 2008-03-25 2011-04-29 숭실대학교산학협력단 에이치 닷 264 표준에 근거한 디코더용 움직임 보상기 및 그 보간 연산 방법
US8542732B1 (en) * 2008-12-23 2013-09-24 Elemental Technologies, Inc. Video encoder using GPU
KR101782661B1 (ko) * 2010-01-19 2017-10-23 톰슨 라이센싱 비디오 인코딩 및 디코딩을 위한 템플릿 매칭 예측의 복잡도를 감소시키는 방법 및 장치
CN103392338A (zh) * 2011-01-03 2013-11-13 联发科技股份有限公司 基于滤波单元的回路滤波方法
HUE064092T2 (hu) * 2011-06-24 2024-02-28 Ntt Docomo Inc Eljárás mozgáskompenzált predikcióhoz
DE102011119177A1 (de) * 2011-11-23 2013-05-23 Siemens Aktiengesellschaft Verfahren und Vorrichtung zum Verfahren zum Erstellen eines ersten Parametersatzes
CN106303533B (zh) * 2012-01-20 2019-09-10 维洛媒体国际有限公司 解码装置和解码方法
US9503732B2 (en) 2013-04-10 2016-11-22 Arris Enterprises, Inc. Re-sampling with phase offset adjustment for luma and chroma to select filters in scalable video coding
US9292899B2 (en) 2013-09-25 2016-03-22 Apple Inc. Reference frame data prefetching in block processing pipelines
US9224186B2 (en) 2013-09-27 2015-12-29 Apple Inc. Memory latency tolerance in block processing pipelines
WO2015103221A1 (en) 2014-01-03 2015-07-09 Arris Enterprises, Inc. Conditionally parsed extension syntax for hevc extension processing
CA2943121C (en) 2014-03-18 2020-09-08 Arris Enterprises Llc Scalable video coding using reference and scaled reference layer offsets
WO2015168581A1 (en) 2014-05-01 2015-11-05 Arris Enterprises, Inc. Reference layer and scaled reference layer offsets for scalable video coding
US10785492B2 (en) 2014-05-30 2020-09-22 Arris Enterprises Llc On reference layer and scaled reference layer offset parameters for inter-layer prediction in scalable video coding
US10757437B2 (en) 2014-07-17 2020-08-25 Apple Inc. Motion estimation in block processing pipelines
US9762919B2 (en) * 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
CN104853212B (zh) * 2015-05-05 2018-02-16 福州瑞芯微电子股份有限公司 一种视频解码器缓存高效率处理的装置及其方法
CN105516547A (zh) * 2015-12-10 2016-04-20 中国科学技术大学 一种基于dsp的视频去雾优化方法
CN106998437B (zh) * 2017-03-31 2020-07-31 武汉斗鱼网络科技有限公司 一种重建视频图像的方法及装置
KR102679839B1 (ko) 2019-04-17 2024-07-01 엘지전자 주식회사 영상 보정 방법 및 장치
US11785068B2 (en) * 2020-12-31 2023-10-10 Synaptics Incorporated Artificial intelligence image frame processing systems and methods

Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0638243A (ja) * 1992-07-15 1994-02-10 Fujitsu Ltd 色差信号の動きベクトル計算回路
WO1995029561A1 (en) * 1994-04-21 1995-11-02 British Telecommunications Public Limited Company A transcoder
US6097842A (en) * 1996-09-09 2000-08-01 Sony Corporation Picture encoding and/or decoding apparatus and method for providing scalability of a video object whose position changes with time and a recording medium having the same recorded thereon
US20040013399A1 (en) * 2001-10-02 2004-01-22 Masato Horiguchi Information processing method and apparatus
EP1575301A2 (de) * 2004-03-12 2005-09-14 Daeyang Foundation Verfahren und Gerät zur Transkodierung
EP1879388A1 (de) * 2005-04-22 2008-01-16 Matsushita Electric Industrial Co., Ltd. Videoinformations-aufzeichnungseinrichtung, videoinformations-aufzeichnungsverfahren, videoinformations-aufzeichnungsprogramm und das videoinformations-aufzeichnungsprogramm enthaltendes aufzeichnungsmedium

Family Cites Families (16)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3360942B2 (ja) 1994-06-20 2003-01-07 沖電気工業株式会社 動画像符号化装置
JPH0846971A (ja) 1994-07-29 1996-02-16 Sharp Corp 動画像符号化装置
JP4034380B2 (ja) * 1996-10-31 2008-01-16 株式会社東芝 画像符号化/復号化方法及び装置
US6192154B1 (en) * 1998-01-26 2001-02-20 International Business Machines Corporation Two-pass encoding method of digital motion video sequences for constant-or variable bit rate
US6434196B1 (en) * 1998-04-03 2002-08-13 Sarnoff Corporation Method and apparatus for encoding video information
US6519005B2 (en) * 1999-04-30 2003-02-11 Koninklijke Philips Electronics N.V. Method of concurrent multiple-mode motion estimation for digital video
JP2001016594A (ja) 1999-06-29 2001-01-19 Hitachi Ltd 動画像の動き補償方法
EP1404135B1 (de) * 2000-01-21 2016-12-14 Nokia Technologies Oy Bewegungsschätzungsverfahren und -system für einen Videokodierer
US7167520B2 (en) * 2002-10-15 2007-01-23 Matsushita Electric Industrial Co., Ltd. Transcoder
US7092442B2 (en) * 2002-12-19 2006-08-15 Mitsubishi Electric Research Laboratories, Inc. System and method for adaptive field and frame video encoding using motion activity
KR20040070490A (ko) 2003-02-03 2004-08-11 삼성전자주식회사 비월 주사 방식의 동영상 부호화/복호화 방법 및 그 장치
US7551671B2 (en) * 2003-04-16 2009-06-23 General Dynamics Decision Systems, Inc. System and method for transmission of video signals using multiple channels
CN1578477B (zh) * 2003-07-16 2011-05-04 三星电子株式会社 用于色彩图像的视频编码/解码装置和方法
US20060088104A1 (en) * 2004-10-27 2006-04-27 Stephen Molloy Non-integer pixel sharing for video encoding
US8705632B2 (en) * 2005-03-30 2014-04-22 Intel Corporation Decoder architecture systems, apparatus and methods
CN101322321A (zh) * 2005-12-09 2008-12-10 辉达公司 硬件多标准视频解码器装置

Patent Citations (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0638243A (ja) * 1992-07-15 1994-02-10 Fujitsu Ltd 色差信号の動きベクトル計算回路
WO1995029561A1 (en) * 1994-04-21 1995-11-02 British Telecommunications Public Limited Company A transcoder
US6097842A (en) * 1996-09-09 2000-08-01 Sony Corporation Picture encoding and/or decoding apparatus and method for providing scalability of a video object whose position changes with time and a recording medium having the same recorded thereon
US20040013399A1 (en) * 2001-10-02 2004-01-22 Masato Horiguchi Information processing method and apparatus
EP1575301A2 (de) * 2004-03-12 2005-09-14 Daeyang Foundation Verfahren und Gerät zur Transkodierung
EP1879388A1 (de) * 2005-04-22 2008-01-16 Matsushita Electric Industrial Co., Ltd. Videoinformations-aufzeichnungseinrichtung, videoinformations-aufzeichnungsverfahren, videoinformations-aufzeichnungsprogramm und das videoinformations-aufzeichnungsprogramm enthaltendes aufzeichnungsmedium

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Ad hoc group on MPEG-4 video VM editing: ISO/IEC JTC1/SC29/WG11 MPEG97/N1642: MPEG-4 Video Verification Model Version 7.0. Bristol, April 1997, S. 45-46, S. 45-46. INTERNET [online]. *
ITU-T Recommendation H.264: Advanced video coding for generic audiovisual services. 3/2005, S. 152-155. INTERNET [online]. *

Also Published As

Publication number Publication date
JP2009526485A (ja) 2009-07-16
GB2447402A (en) 2008-09-10
GB2447402B (en) 2011-03-02
US8705630B2 (en) 2014-04-22
JP4987884B2 (ja) 2012-07-25
TWI473500B (zh) 2015-02-11
TW200746836A (en) 2007-12-16
KR20090003179A (ko) 2009-01-09
US20070189390A1 (en) 2007-08-16
CN101379832B (zh) 2012-09-05
DE112007000359T5 (de) 2008-11-27
GB0813393D0 (en) 2008-08-27
KR100995205B1 (ko) 2010-11-17
WO2007095079A1 (en) 2007-08-23
CN101379832A (zh) 2009-03-04

Similar Documents

Publication Publication Date Title
DE112007000359B4 (de) Verarbeitung von Videodaten
DE69522861T2 (de) Verfahren und Einrichtung zur Codeumwandlung von codiertem Datenstrom
DE69529323T2 (de) Digitaler Videodekoder zum Dekodieren von digitalen hochauflösenden und/oder standardauflösenden Fernsehsignalen
DE69913990T2 (de) System zum editieren komprimierter bildsequenzen
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
US11051045B2 (en) High efficiency adaptive loop filter processing for video coding
DE112018000280T5 (de) Entblockungsfilterung für 360-video
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
GB2420929A (en) A pipelined deblocking filter
DE102019209067A1 (de) Adaptive in-loop filtering for video coding
DE112017003212T5 (de) Verfahren und System zur Videocodierung mit Kontextdecodierung und Rekonstruktionsumgehung
DE112006000270T5 (de) Arbeitspuffer zum Speichern von Schleifenfilterzwischendaten
DE102004021854A1 (de) Vorrichtung für sowohl eine Block-Matching Motion Compensation als auch eine Global Motion Compensation sowie Verfahren hierfür
DE102019201370A1 (de) Verarbeitung von multidirektionalen bildern in räumlich geordneten videokodieranwendungen
EP2368368B1 (de) Verfahren zum durchsuchen von videostreams
DE102018129344A1 (de) Bereichsadaptive, dateneffiziente Erzeugung von Partitionierungsentscheidungen und Modusentscheidungen zur Videocodierung
DE102005058508A1 (de) Verfahren zur Pixeldaten-Blockfilterung und Deblockingfilter
CN1947146B (zh) 下采样数据值的方法
DE69916662T2 (de) Verfahren und vorrichtung zur bewegungskompensation in einem texturabbildungssystem
Li et al. De-blocking filter design for HEVC and H. 264/AVC
CN100414959C (zh) 生成预览图像的方法
EP2429192A1 (de) Videosignalverarbeitung
RU2376638C2 (ru) Электронное устройство и способ в электронном устройстве для обработки данных изображения
DE69709293T2 (de) Verfahren und Vorrichtung zur Kodierung und Dekodierung von Bewegtbildern
US8588305B2 (en) Two-dimensional interpolation architecture for motion compensation in multiple video standards

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
R016 Response to examination communication
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final

Effective date: 20130712

R082 Change of representative

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