DE60029828T2 - Verfahren und vorrichtung zur dekodierung von videosignalen mittels eines multiprozessorsystems - Google Patents

Verfahren und vorrichtung zur dekodierung von videosignalen mittels eines multiprozessorsystems Download PDF

Info

Publication number
DE60029828T2
DE60029828T2 DE60029828T DE60029828T DE60029828T2 DE 60029828 T2 DE60029828 T2 DE 60029828T2 DE 60029828 T DE60029828 T DE 60029828T DE 60029828 T DE60029828 T DE 60029828T DE 60029828 T2 DE60029828 T2 DE 60029828T2
Authority
DE
Germany
Prior art keywords
processor
slices
processors
video
decoding
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.)
Expired - Lifetime
Application number
DE60029828T
Other languages
English (en)
Other versions
DE60029828D1 (de
Inventor
Boon-Lock Sunnyvale Yeo
Valery Kuriakin
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.)
Intel Corp
Original Assignee
Intel 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 Intel Corp filed Critical Intel Corp
Publication of DE60029828D1 publication Critical patent/DE60029828D1/de
Application granted granted Critical
Publication of DE60029828T2 publication Critical patent/DE60029828T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • H04N19/436Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation using parallelised computational arrangements
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/61Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding in combination with predictive coding

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)
  • Two-Way Televisions, Distribution Of Moving Picture Or The Like (AREA)
  • Image Processing (AREA)
  • Reverberation, Karaoke And Other Acoustics (AREA)

Description

  • GEBIET DER ERFINDUNG
  • Die vorliegende Erfindung betrifft Computer und die multimediale Verarbeitung, und im Besonderen betrifft sie die Decodierung von komprimiertem Video in einem Mehrprozessorsystem.
  • STAND DER TECHNIK
  • Neuere Fortschritte auf dem Gebiet der Computertechnologie haben Videoanwendungen zu immer häufiger verwendeten Anwendungen gemacht. Zum Beispiel zählen zu den heute umgesetzten Videoanwendungen das hochauflösende Fernsehen, der Fernmeldesatelliten-Funkdienst, Kabelfernsehen über optische Netze, Electron Cinema, interaktive Speichermedien, multimedialer Postversand, vernetzte Datenbankdienste, Firmenschulungen und Konferenzen über das Internet, Videoüberwachung aus der Ferne und andere Anwendungen.
  • Die großen Datenmengen, die erforderlich sind, um Video in all diesen Fällen verfügbar zu machen bzw. bereitzustellen, hat zu der Anwendung der Standards Motion Pictures Experts Group 1 (MPEG) und MPEG-2 für die Komprimierung und Entkomprimierung von Bewegtbildaufnahmen geführt. Diese Standards reduzieren die Bandbreiten- und Speicherplatzanforderungen erheblich. Folglich werden MPEG-1 und MPEG-2 in vielen Videoanwendungen eingesetzt und nehmen weiter an Beliebtheit zu.
  • Ein Merkmal, dass den weit verbreiteten Einsatz des MPEG-Standards jedoch beschränkt, ist die hohe Rechenkomplexität. Die Videocodierung und -decodierung gemäß MPEG ist aufwändig, häufig zu aufwändig für einzelne Prozessoren, um eine Echtzeit-Ausführung in Software für Anzeigen in akzeptabler Auflösung und Größe zu erreichen. Die Anforderungen in Bezug auf die Rechenkomplexität steigen weiter an im Zuge des Wunschs nach höherwertigem Video seitens der Anwender.
  • Die Codierung ist teurer bzw. aufwändiger als die Decodierung, wobei sie für gewöhnlich aber auch offline vorgenommen werden kann und somit nicht in Echtzeit ausgeführt werden muss. Die Decodierung setzt für gewöhnlich jedoch eine Ausführung in Echtzeit voraus.
  • Als ein Beispiel für eine dem Stand der Technik entsprechende Vorrichtung zum Dekomprimieren von Video wird auf WO98/44745A und US-A-5.212.742 verwiesen, wobei ein komprimiertes Videobild an mehrere Videodecodierungschips empfangen wird, welche durch eine Systemsteuereinheit gesteuert werden. Das Videobild wird in einzelne Bestandteile, so genannte Slices aufgeteilt, und jeder Slice wird durch einen entsprechenden Chip der Videodecodierungschips decodiert. In diesen Bezugsdokumenten unterstützt die Steuereinheit die Aufteilung des Videobilds in Slices und steuert den Betrieb der Videodecodierungschips. Der Einsatz einer derartigen separaten Steuereinheit ist ineffizient.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Vorgesehen ist gemäß einem ersten Aspekt der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen Anspruch 1.
  • Vorgesehen ist gemäß einem zweiten Aspekt der vorliegenden Erfindung ein computerlesbares Medium gemäß dem gegenständlichen Anspruch 3.
  • Vorgesehen ist gemäß einem dritten Aspekt der vorliegenden Erfindung ein Computersystem gemäß dem gegenständlichen Anspruch 6.
  • Vorgesehen ist gemäß einem vierten Aspekt der vorliegenden Erfindung ein Computerprogramm gemäß dem gegenständlichen Anspruch 8.
  • Bevorzugte Merkmale der Erfindung sind in den Unteransprüchen definiert.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Es zeigen:
  • 1 eine Hierarchie von Schichten in einem MPEG-Bitstrom;
  • 2 ein Blockdiagramm der Codierung und Decodierung von Videodaten gemäß einem Ausführungsbeispiel der Erfindung;
  • 3 ein Blockdiagramm einer Bild-Slice-Struktur;
  • 4 ein Ablaufdiagramm der Schritte der Decodierung von Videodaten mit mehreren parallelen Prozessoren gemäß einem Ausführungsbeispiel der Erfindung; und
  • 5 ein Mehrprozessoren-Computersystem mit einem computerlesbaren Medium mit darauf gespeicherten Anweisungen bzw. Befehlen gemäß einem Ausführungsbeispiel der Erfindung.
  • GENAUE BESCHREIBUNG
  • Offenbart werden ein Verfahren und eine Vorrichtung zum Decodieren von komprimiertem Video in einem Mehrprozessorensystem. In der folgenden Beschreibung werden zu Erläuterungszwecken spezielle Einzelheiten ausgeführt, um ein umfassendes Verständnis der vorliegenden Erfindung zu vermitteln. Für den Fachmann auf dem Gebiet ist es jedoch offensichtlich, dass diese besonderen Einzelheiten für die Ausführung der vorliegenden Erfindung nicht erforderlich sind. In den nachstehend beschriebenen Ausführungsbeispielen wird die vorliegende Erfindung zwar in Bezug auf den Einsatz zum Decodieren von gemäß dem MPEG-Standard codierten Videodaten beschrieben, wobei aber auch alternative Videocodierungs/Videodecodierungs-Standards eingesetzt werden können, ohne dabei vom Umfang der vorliegenden Erfindung abzuweichen.
  • MPEG-Decodierung
  • In der allgemein Ausführung besteht ein MPEG-Systemstrom aus zwei Schichten: die Systemschicht enthält Zeitsteuerungs- und andere Informationen, die erforderlich sind, um die Audio- und Videoströme zu demultiplexieren und um Audio und Video während der Wiedergabe zu synchronisieren; und die Kompressionsschicht, welche die Audio- und Videodatenstöme aufweist.
  • Ein Ausführungsbeispiel der Hierarchie der Schichten in einem MPEG-Bitstrom ist wie folgt angeordnet, wie dies in der Abbildung aus 1 dargestellt ist: Sequenz, Bildergruppe (GOP), Bild-Slice, Makroblock und Block. Die verschiedenen Bestandteile des Stroms sind mit eindeutigen, Byte-ausgerichteten Codes gekennzeichnet, so genannten Startcodes. Die Startcodes werden sowohl zum Identifizieren bestimmter Bestandteile des Stroms verwendet als auch, um einen wahlfreien Zugriff auf den Videostrom zu ermöglichen.
  • Die höchste Ebene in der Schichtanordnung ist die Sequenzebene. Eine Sequenz besteht aus Gruppen von Bildern (GOPs). Jede GOP fasst eine Reihe benachbarter Bilder zu einer Gruppe zusammen. Ein Zweck der Erzeugung einer derartigen identifizierbaren Gruppierung ist es, einen Punkt des wahlfreien Zugriffs in dem Videostrom für Wiedergabesteuerungsfunktionen (Schnelles Vorspielen, Rückwärts, etc.) bereitzustellen.
  • In jeder GOP gibt es eine Reihe von Bildern. Gemäß MPEG-2 wird Zeilensprung-Video unterstützt, so dass jedes Bild entweder einem Vollbild bzw. Einzelbild (für progressive oder verschachtelte Videoströme) oder einem Halbbild (für verschachtelte Videoströme) in dem ursprünglichen Strom entspricht.
  • Die Bilder werden weiter in Slices unterteilt, die jeweils ein Fragment einer Zeile in dem Bild definieren. Slices umfassen eine Reihe von Makroblöcken, bei denen es sich in einem Ausführungsbeispiel um 16 × 16 Pixelgruppen handelt, welche die Luminanz- und Chrominanzdaten für diese Pixel in dem decodierten Bild aufweisen. Makroblöcke werden in Blöcke unterteilt. In einem Ausführungsbeispiel entspricht ein Block einer 8 × 8 Pixelgruppe, welche die Luminanz oder Chrominanz für diese Pixelgruppe näher beschreibt. Blöcke sind die Grunddateneinheit, mit welcher der Decodierer den codierten Videostrom verarbeitet. Makroblöcke und Blöcke weisen keine ihnen zugeordneten Startcodes auf; ihre Begrenzungen werden während der Decodierung implizit ermittelt.
  • Codierung
  • Wie dies vorstehend im Text beschrieben ist, handelt es sich bei dem Block um die Grundeinheit der Datenverarbeitung. Wie dies in der Abbildung aus 2 veranschaulicht ist, führt der Codierer in einem Ausführungsbeispiel für jeden Datenblock in der Videosequenz für gewöhnlich die folgenden Schritte aus, um einen codierten Block zu erzeugen: Bewegungsvorhersage (Motion Estimation), diskrete Kosinustransformation (DCT), Quantisierung und Lauflängen und Huffman-Codierung.
  • Auf der ersten Stufe der Bewegungsvorhersage versucht der Codierer temporäre Redundanzen unter den Bildern vorteilhaft zu nutzen. Die nächsten vier Stufen des Codierers nutzen die räumliche Korrelation bei der Kompression bzw. Komprimierung der Videosequenz. Das Ergebnis der Ausführung dieser fünf Codierungsstufen an allen Blöcken in einer Videosequenz ist ein MPEG-codierter Videostrom. Ein Strom kann einmal codiert werden und danach nach Bedarf über ein Übertragungsmedium übermittelt und/oder gespeichert werden. Eine Decodierung ist jedoch für gewöhnlich jedes Mal erforderlich, wenn der Strom betrachtet wird.
  • Decodierung
  • Das Decodierungsverfahren für einen MPEG-codierten Strom führt für gewöhnlich die fünf Codierungsstufen in umgekehrter Reihenfolge aus. Zuerst werden die Huffman- und Lauflängen-Decodierung eingesetzt, um den quantisierten Block zu erzeugen. Die umgekehrte Quantisierung wird ausgeführt, um das Frequenzspektrum des Blocks zu erhalten. Daraus wird die umgekehrte diskrete Kosinustransformation vorgenommen. Sofern erforderlich, wird danach die Bewegtbildkompensation eingesetzt, um den fertigen Daten-Makroblock aus dem Prädiktionsfehler, den Bewegungsvektoren und dem Referenzbild zu erzeugen.
  • Ein signifikanter Unterschied zwischen den Codierungs- und Decodierungsverfahren ist es, dass für das erstgenannte Verfahren deutlich mehr Zeit für die Bewegungsvorhersage als erforderlich aufgebracht wird, um nach dem ähnlichsten Makroblock in dem bzw. den Referenzbild(ern) zu suchen, während in dem letztgenannten Verfahren die Bewegungsvektoren allgemein verfügbar sind, was die Bewegungskompensation deutlich weniger kompliziert gestaltet als die Bewegungsvorhersage.
  • Decodierung von Videodaten mit mehreren parallelen Prozessoren
  • Zur Erhöhung der Geschwindigkeit des Decodierens von MPEG-Videodaten, um die Videodaten für mehrere Anwendungen bereitzustellen, stellt ein Ausführungsbeispiel eine parallele Decodierung der Videodaten unter mehreren Prozessoren in einem System bereit, wobei ein Speicher gemeinsam genutzt wird. Im Besondern wird in einem Ausführungsbeispiel die Arbeitslast der Decodierung der Videodaten auf die Gruppe der Prozessoren auf der Slice-Ebene verteilt. In alternativen Ausführungsbeispielen kann die Arbeitslast der Decodierung der Videodaten auf die Gruppe von Prozessoren auf anderer Ebene als der Slice-Ebene verteilt werden, ohne dabei von der vorliegenden Erfindung abzuweichen.
  • Gemäß der Definition durch den Standard handelt es sich bei einem Slice in MPEG im Besonderen um eine Reihe einer willkürlichen Anzahl von Makroblöcken in einer Zeile des Bilds. Die Abbildung aus 3 veranschaulicht eine allgemeine Slice-Struktur. Jeder Slice weist mindestens einen Makroblock auf, und aufeinander folgende Slices überschneiden sich nicht. Slices treten in dem Bitstrom in der Reihenfolge auf, in der sie aufgetreten sind, beginnend oben links in dem Bild und mittels Rasterabtastung von links nach rechts und von oben nach unten fortschreitend. Slices müssen jedoch nicht von Bild zu Bild die gleiche Struktur beibehalten; es kann eine unterschiedliche Anzahl von Slices geben und/oder Slices mit unterschiedlichen Größen.
  • Die Abbildung aus 4 zeigt ein Flussdiagramm, das die Schritte des parallelen Decodierens der Videodaten durch die Mehrzahl von Prozessoren gemäß einem Ausführungsbeispiel beschreibt. In dem Schritt 402 führt ein erster Prozessor einen ersten Prozess aus, tastet eine Videosequenz von einer Disk oder einer anderen Quelle für komprimiertes Video ab bzw. liest dies in einen Speicher ein.
  • In dem Schritt 404 liest der erste Prozessor ferner die Videosequenz, um Slice-Startcodes zu identifizieren, die den Anfang der Slices in der Videosequenz identifizieren. In dem Schritt 406 liest der erste Prozessor ferner die Makroblöcke in jedem Slice, um die Arbeitslast vorherzusagen, die dem Decodieren eines entsprechenden Slices zugeordnet ist.
  • In dem Schritt 408 weist der erste Prozessor ein oder mehrere zu decodierende Slices an jeden Prozessor in einer Gruppe von Prozessoren in einem System zu. In einem Ausführungsbeispiel werden die Slices den verschiedenen Prozessoren so zugeordnet, dass die Arbeitslast auf die Prozessoren verteilt wird. Wenn zum Beispiel ein erstes Slice viele Makroblöcke aufweist, benötigt es voraussichtlich länger für die Decodierung. Einem zweiten Prozessor würden somit weniger Slices für die Decodierung zugeordnet werden, da mindestens ein Slice länger für die Decodierung benötigt. Folgende benachbarte Slices können deutlich weniger Makroblöcke aufweisen. Somit können einem dritten Prozessor mehr Slices für die Decodierung zugeordnet werden, wobei jedes Slice weniger Makroblöcke aufweist. Letztlich empfängt in einem Ausführungsbeispiel jeder Prozessor eine vergleichbare Arbeitslast der zu decodierenden Slices.
  • In dem Schritt 410 schreibt der erste Prozessor in einen gemeinsam genutzten Speicher, mit den ersten und letzten zugeordneten Slices als lokale Variablen für jeden der Prozessoren, die für die Decodierung der Slices bereitgestellt sind. Wenn der zweite Prozessor zum Beispiel die Slices 1 bis 3 decodiert, decodiert ein dritter Prozessor die Slices 4 bis 8, und ein vierter Prozessor decodiert die Slices 9 bis 1, wobei die Anzahl der Slices als lokale Variablen für jeden der entsprechenden Prozessoren in den Speicher geschrieben wird. Ein Vorteil der Zuordnung der Slices durch Identifikation der Slices als lokale Variablen für die entsprechenden Prozessoren im Gegensatz zu der Bereitstellung der Slices in einer gemeinsam zugreifbaren Aufgaben-/Slice-Warteschlange ist es, dass Konflikte zwischen Prozessoren beim Zugriff auf die Warteschlange zum Identifizieren der zu decodierenden Slices vermieden werden.
  • Wenn zum Beispiel eine Slice-Warteschlange verwendet wird und der Prozessor das Decodieren eines Slices abgeschlossen hat, so würde er zu der Warteschlange zurückkehren, um das nächste zu decodierende Slice zu bestimmen. Darüber hinaus würde der Prozessor auch einen Zeiger heraufsetzen, der das nächste zu decodierende Slice identifiziert, so dass bei dem nächsten Zugriff eines Prozessors auf die Warteschlange, dieser das folgende zu decodierende Slice empfängt. Ferner würde verhältnismäßig häufig auf die Warteschlange zugegriffen. Folglich würden auch häufig Konflikte zwischen den auf die Warteschlange zugreifenden Prozessoren auftreten. Durch die Zuordnung bzw. Zuweisung der zu decodierenden Slices als lokale Variablen für jeden der entsprechenden Prozessoren können Konflikte zwischen den Prozessoren beim Zugriff auf den Speicher jedoch deutlich reduziert werden.
  • In dem Schritt 412 lesen die entsprechenden Prozessoren ihre entsprechenden lokalen Variablen, um zu bestimmen, welche Slices decodiert werden sollen, und wobei sie danach die Slices aus dem Speicher lesen und die Slices gemäß den vorstehend beschriebenen Decodierungsabläufen decodieren. In einem Ausführungsbeispiel weist der Prozessor, der die zu decodierenden Slices zuweist, sich selbst auch eines oder mehrere zu decodierende Slices zu, wobei der Prozessor danach gemeinsam mit den anderen Prozessoren mit der Decodierung fortfährt. In einem Ausführungsbeispiel führen die entsprechenden Prozessoren die Schritte des Decodierens der Slices aus, indem im Speicher gespeicherte Softwareroutinen ausgeführt werden, die zur Ausführung der vorstehend beschriebenen Decodierungsschritte vorgesehen sind (z.B. Huffman-Decodierung, Lauflängen-Decodierung, etc.).
  • Danach fährt der erste Prozessor damit fort, die Videodaten abzutasten/zu lesen und zusammenhängende Slices den Prozessoren zur Decodierung zuzuordnen, und zwar für die gewünschte zu decodierende Videogröße. Ferner kann das Verfahren zum Decodieren der Videodaten durch Verteilen der Arbeitslast auf mehrere Prozessoren, wie dies vorstehend im Text beschrieben worden ist, in Echtzeit ausgeführt werden.
  • Die Abbildung aus 5 veranschaulicht ein System gemäß einem Ausführungsbeispiel, das mehrere Slices parallel durch mehrere Prozessoren decodieren kann. Wie dies dargestellt ist, weist das System mehrere Prozessoren auf, die einen Speicher gemeinsam nutzen (z.B. eine symmetrische Mehrprozessorenarchitektur). In einem alternativen Ausführungsbeispiel können mehrere Prozessoren auf separate Speicher zugreifen an Stelle den gleichen Speicher gemeinsam zu nutzen, ohne dabei vom Umfang der vorliegenden Erfindung abzuweichen.
  • Wie dies in dem Speicher des Systems aus 5 dargestellt ist, kann die Logikeinheit zum Ausführen des Verfahrens des Decodierens der Videodaten unter Verwendung mehrerer paralleler Prozessoren gemäß der vorstehenden Beschreibung als eine Reihe von Computerbefehlen bereitgestellt werden, die von einem oder mehreren Prozessoren ausgeführt werden. Darüber hinaus kann die Logik zur Ausführung der Schritte des Decodierens der Videodaten auch als eine Reihe von Computerbefehlen (z.B. MPEG-Decodierer) in einem Speicher bereitgestellt bzw. gespeichert werden. Die Befehle zum Ausführen der Verfahren gemäß der vorstehenden Beschreibung können alternativ auf andersartigen computermaschinenlesbaren Medien gespeichert werde, zu denen etwa magnetische und optische Plattenspeicher zählen. Das Verfahren gemäß der vorliegenden Erfindung kann zum Beispiel auf computer-/maschinenlesbaren Medien gespeichert werden, wie etwa magnetischen oder optischen Plattenspeichern, auf die über ein Plattenlaufwerk (oder ein Laufwerk für ein computerlesbares Medium), wie etwa das in der Abbildung aus 5 dargestellte Laufwerk, zugegriffen werden kann.
  • Alternativ kann die Logik zur Ausführung der vorstehend beschriebenen Verfahren, einschließlich des Verfahrens zum Decodieren der Videodaten über mehrere parallele Prozessoren in zusätzlichen computer- und/oder maschinenlesbaren Medien implementiert werden, wie etwa diskreten Hardware-Komponenten, wie etwa großintegrierten bzw. LSI-Schaltkreisen, anwendungsspezifischen Schaltkreisen (ASICs), Firmware wie etwa elektrisch löschbaren, programmierbaren Nur-Lesespeichern (EEPROMs) und elektrischen, optischen, akustischen oder anders verteilten Signalen (z.B. Trägerwellen, Infrarotsignale, digitale Signale, etc.).

Claims (8)

  1. Verfahren zum Decodieren von komprimiertem Video, wobei das Verfahren folgendes umfasst: das Lesen (402) eines Stroms von komprimiertem Video in einen Speicher, wobei das genannte Video mehrere Bilder aufweist, wobei jedes Bild eine oder mehrere Slices aufweisen kann, die voneinander unabhängig sind; gekennzeichnet durch: einen ersten Prozessor einer Gruppe von Prozessoren, die sich den genannten Speicher teilen, wobei dieser eine Arbeitslast der Decodierung jedes dieser Slices bestimmt (406); das Zuordnen (408) mindestens eines Slices je Prozessor zur parallelen Decodierung durch die Prozessoren über den ersten Prozessor einer Gruppe von Prozessoren, wobei eine unterschiedliche Anzahl von Slices den einzelnen Prozessoren zugeordnet wird, so dass jedem Prozessor eine vergleichbare Arbeitslast zugewiesen wird; und das parallele Decodieren (412) der Slices des Videos.
  2. Verfahren nach Anspruch 1, wobei die Zuweisung der durch einen entsprechenden Prozessor zu decodierenden Slices das Platzieren (410) in dem Speicher als eine lokale Variable für jeden Prozessor aufweist.
  3. Computerlesbares Medium, auf dem ein Befehlssatz gespeichert ist, wobei der genannte Befehlssatz zum Decodieren von komprimiertem Video dient, die bei einer Ausführung durch einen Prozessor bewirken, dass der genannte Prozessor ein Verfahren ausführt, das folgendes umfasst: das Lesen (402) eines Stroms von komprimiertem Video in einen Speicher, wobei das genannte Video mehrere Bilder aufweist, wobei jedes Bild ein Slice oder mehrere Slices aufweisen kann, die voneinander unabhängig sind; gekennzeichnet durch: einen ersten Prozessor einer Gruppe von Prozessoren, die sich den genannten Speicher teilen, wobei dieser eine Arbeitslast der Decodierung jedes dieser Slices bestimmt (406); das Zuordnen (408) mindestens eines Slices je Prozessor zur parallelen Decodierung durch die Prozessoren über den ersten Prozessor einer Gruppe von Prozessoren, wobei eine unterschiedliche Anzahl von Slices den einzelnen Prozessoren zugeordnet wird, so dass jedem Prozessor eine vergleichbare Arbeitslast zugewiesen wird; und das parallele Decodieren (412) der Slices des Videos.
  4. Computerlesbares Medium nach Anspruch 3, wobei jeder Slice mindestens einen Makroblock aufweist.
  5. Computerlesbares Medium nach Anspruch 4, wobei das genannte Video gemäß dem MPEG-Standard codiert ist.
  6. Computersystem, das folgendes umfasst: eine Mehrzahl von Prozessoren; einen mit der genannten Mehrzahl von Prozessoren gekoppelten Speicher; eine erste Logikeinheit zum Lesen (402) eines Stroms von komprimiertem Video in den genannten Speicher, wobei das genannte Video mehrere Bilder aufweist, wobei jedes Bild einen Slice oder mehrere Slices aufweist, die voneinander unabhängig sind, dadurch gekennzeichnet, dass: die genante erste Logikeinheit so angeordnet ist, dass sie ferner eine Arbeitslast zum Decodieren jedes der Slices bestimmt (406); über einen ersten Prozessor der genannten Gruppe von Prozessoren, welche den genannten Speicher gemeinsam nutzen, mindestens einen durch die Prozessoren parallel zu decodierenden Slice je Prozessor zuweist (404408), wobei eine veränderliche Anzahl von Slices den einzelnen Prozessoren zugeordnet ist, und wobei die genannte erste Logikeinheit so angeordnet ist, dass sie jedem der Prozessoren eine vergleichbare Arbeitslast zuweist.
  7. Computersystem nach Anspruch 6, wobei die genannte erste Logikeinheit so angeordnet ist, dass sie für jeden Prozessor die durch den entsprechenden Prozessor zu decodierenden Slices als eine lokale Variable in dem Speicher platziert (410).
  8. Computerprogramm, das alle Schritte der Ansprüche 1 oder 2 ausführen kann, wenn das Programm auf einem Computer ausgeführt wird.
DE60029828T 1999-12-22 2000-11-20 Verfahren und vorrichtung zur dekodierung von videosignalen mittels eines multiprozessorsystems Expired - Lifetime DE60029828T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US470299 1999-12-22
US09/470,299 US7227589B1 (en) 1999-12-22 1999-12-22 Method and apparatus for video decoding on a multiprocessor system
PCT/US2000/031912 WO2001047284A1 (en) 1999-12-22 2000-11-20 Method and apparatus for video decoding on a multiprocessor system

Publications (2)

Publication Number Publication Date
DE60029828D1 DE60029828D1 (de) 2006-09-14
DE60029828T2 true DE60029828T2 (de) 2007-02-15

Family

ID=23867036

Family Applications (1)

Application Number Title Priority Date Filing Date
DE60029828T Expired - Lifetime DE60029828T2 (de) 1999-12-22 2000-11-20 Verfahren und vorrichtung zur dekodierung von videosignalen mittels eines multiprozessorsystems

Country Status (8)

Country Link
US (1) US7227589B1 (de)
EP (1) EP1245119B1 (de)
AT (1) ATE335363T1 (de)
AU (1) AU2724901A (de)
DE (1) DE60029828T2 (de)
HK (1) HK1046799B (de)
TW (1) TW521526B (de)
WO (1) WO2001047284A1 (de)

Families Citing this family (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN100362868C (zh) * 2001-07-04 2008-01-16 矽统科技股份有限公司 分散式视频数据流解码系统与方法
US8401084B2 (en) * 2002-04-01 2013-03-19 Broadcom Corporation System and method for multi-row decoding of video with dependent rows
US7412703B2 (en) * 2002-09-19 2008-08-12 Sedna Patent Services, Llc Low cost, highly accurate video server bit-rate compensation
JP5296535B2 (ja) * 2006-05-24 2013-09-25 パナソニック株式会社 画像復号装置
GB0617758D0 (en) * 2006-09-08 2006-10-18 Taylor Nelson Sofres Plc Highly distributed audio/video conversion
US20090010326A1 (en) * 2007-07-05 2009-01-08 Andreas Rossholm Method and apparatus for parallel video decoding
US8665996B2 (en) * 2008-04-01 2014-03-04 Qualcomm Incorporated Efficient parallel sub-packet decoding using multiple decoders
US8311111B2 (en) * 2008-09-11 2012-11-13 Google Inc. System and method for decoding using parallel processing
US8611435B2 (en) * 2008-12-22 2013-12-17 Qualcomm, Incorporated Combined scheme for interpolation filtering, in-loop filtering and post-loop filtering in video coding
US20100246679A1 (en) * 2009-03-24 2010-09-30 Aricent Inc. Video decoding in a symmetric multiprocessor system
US8615039B2 (en) * 2009-05-21 2013-12-24 Microsoft Corporation Optimized allocation of multi-core computation for video encoding
KR101698797B1 (ko) 2010-07-27 2017-01-23 삼성전자주식회사 영상 데이터를 분할하여 부호화 및 복호화를 병렬 처리하는 장치 및 상기 장치의 동작 방법
US9100657B1 (en) 2011-12-07 2015-08-04 Google Inc. Encoding time management in parallel real-time video encoding
US9621905B2 (en) 2012-06-29 2017-04-11 Qualcomm Incorporated Tiles and wavefront parallel processing
US11425395B2 (en) 2013-08-20 2022-08-23 Google Llc Encoding and decoding using tiling
US9794574B2 (en) 2016-01-11 2017-10-17 Google Inc. Adaptive tile data size coding for video and image compression
US10542258B2 (en) 2016-01-25 2020-01-21 Google Llc Tile copying for video compression
TWI605416B (zh) * 2016-10-25 2017-11-11 晨星半導體股份有限公司 影像處理裝置、影像處理方法及其非暫態電腦可讀取儲存媒體
WO2020072676A1 (en) * 2018-10-02 2020-04-09 Brainworks Foundry, Inc. Efficient high bandwidth shared memory architectures for parallel machine learning and ai processing of large data sets and streams
CN112637634B (zh) * 2020-12-24 2022-08-05 北京睿芯高通量科技有限公司 一种多进程共享数据的高并发视频处理方法及系统

Family Cites Families (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5212742A (en) 1991-05-24 1993-05-18 Apple Computer, Inc. Method and apparatus for encoding/decoding image data
CA2079434A1 (en) * 1991-09-30 1993-03-31 Derek Andrew Motion vector estimation, motion picture encoding and storage
US5467131A (en) * 1993-12-30 1995-11-14 Hewlett-Packard Company Method and apparatus for fast digital signal decoding
US5532744A (en) * 1994-08-22 1996-07-02 Philips Electronics North America Corporation Method and apparatus for decoding digital video using parallel processing
EP0720372A1 (de) 1994-12-30 1996-07-03 Daewoo Electronics Co., Ltd Vorrichtung zur parallelen Kodierung/Dekodierung von digitalen Bildsignalen
DE69601599T2 (de) * 1995-06-07 1999-10-14 Ibm Videoverarbeitungseinheit mit Steuerung des Adressierungsmodus
WO1998044745A1 (en) 1997-03-31 1998-10-08 Sharp Kabushiki Kaisha Apparatus and method for simultaneous video decompression

Also Published As

Publication number Publication date
ATE335363T1 (de) 2006-08-15
AU2724901A (en) 2001-07-03
EP1245119B1 (de) 2006-08-02
DE60029828D1 (de) 2006-09-14
WO2001047284A1 (en) 2001-06-28
TW521526B (en) 2003-02-21
US7227589B1 (en) 2007-06-05
HK1046799B (zh) 2006-11-10
HK1046799A1 (en) 2003-01-24
EP1245119A1 (de) 2002-10-02

Similar Documents

Publication Publication Date Title
DE60029828T2 (de) Verfahren und vorrichtung zur dekodierung von videosignalen mittels eines multiprozessorsystems
DE69735402T2 (de) System und Methode zur Bewegungskompensation mit Hilfe eines Schrägziegelspeicherformats für verbesserte Effizienz
DE69433272T2 (de) Vorrichtung zum Vermeiden von Rundungsfehlern bei der inversen Transformation von Transformationskoeffizienten eines Bewegtbildsignales
DE69838729T2 (de) Verfahren und vorrichtung zur verringerung des benötigten speicherplatzes zur speicherung von referenzbildern in einem videodekoder
DE112006002148B4 (de) Austauschpuffer zur Videoverarbeitung
DE69434862T2 (de) Segmentierungs-basiertes entfernen von artefakten aus einem jpeg-bild
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
EP0687111A2 (de) Verfahren zur Codierung/Decodierung eines Datenstroms
DE102016125094A1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE10113880B4 (de) Verfahren zur Komprimierung und Dekomprimierung von Videodaten
DE102010030973B4 (de) Videocodierer und Verfahren zum Decodieren einer Sequenz von Bildern
DE102016125604A1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
EP0752789A2 (de) Verfahren, Encoder und Decoder zur Resynchronisierung auf einen fehlerbehafteten Videodatenstrom
DE4408522C2 (de) Vorrichtung zur Bilddatenverarbeitung und Verfahren zur Verarbeitung von Bilddaten
DE102005051723A1 (de) Vorrichtung und Verfahren zur Bildverarbeitung
DE10204617A1 (de) Verfahren und Vorrichtungen zur Kompression und Dekompression eines Videodatenstroms
DE60207756T2 (de) Bilddatenzugriff
DE19860652B4 (de) Videodecoder für hohe Bildqualität
EP0836785A1 (de) Verfahren zur dekodierung und kodierung eines komprimierten videodatenstroms mit reduziertem speicherbedarf
EP0336510B1 (de) Prädiktiver Standbildcodierer
EP0752788A2 (de) Videocoder und -decoder
DE102016125593B4 (de) Dynamischer Kodiermodus für Referenz-Bewegungsvektoren
DE69828019T2 (de) Verfahren und Vorrichtung zur iterativen Bildtransformation und -dekodierung
EP0981909B1 (de) Verfahren und vorrichtung zur codierung und decodierung eines digitalisierten bildes

Legal Events

Date Code Title Description
8364 No opposition during term of opposition
8328 Change in the person/name/address of the agent

Representative=s name: HEYER, V., DIPL.-PHYS. DR.RER.NAT., PAT.-ANW., 806