DE112016002026B4 - Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung - Google Patents

Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung Download PDF

Info

Publication number
DE112016002026B4
DE112016002026B4 DE112016002026.0T DE112016002026T DE112016002026B4 DE 112016002026 B4 DE112016002026 B4 DE 112016002026B4 DE 112016002026 T DE112016002026 T DE 112016002026T DE 112016002026 B4 DE112016002026 B4 DE 112016002026B4
Authority
DE
Germany
Prior art keywords
binning
frames
frame
count
reference frames
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
DE112016002026.0T
Other languages
English (en)
Other versions
DE112016002026T5 (de
Inventor
Ramanathan Sethuraman
Sumit Mohan
Hong Jiang
Jean-Pierre Giacalone
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 DE112016002026T5 publication Critical patent/DE112016002026T5/de
Application granted granted Critical
Publication of DE112016002026B4 publication Critical patent/DE112016002026B4/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/423Methods 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 characterised by memory arrangements
    • 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/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/103Selection of coding mode or of prediction mode
    • H04N19/105Selection of the reference unit for prediction within a chosen coding or prediction mode, e.g. adaptive choice of position and number of pixels used for prediction
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/137Motion inside a coding unit, e.g. average field, frame or block difference
    • H04N19/139Analysis of motion vectors, e.g. their magnitude, direction, variance or reliability
    • 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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/179Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a scene or a shot
    • 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/58Motion compensation with long-term prediction, i.e. the reference frame for a current frame not being the temporally closest one
    • 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/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/142Detection of scene cut or scene change

Landscapes

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

Abstract

Computerimplementiertes Verfahren (300) zum adaptiven Referenz-Frame-Caching für eine Videocodierung mittels eines Cache-Speichers (930), welches Folgendes umfasst:Empfangen (302) von Bilddaten, welche Frames und Bewegungsvektordaten (918) umfassen,Verwenden (304) der Bewegungsvektordaten (918), um festzustellen, welche Frames Referenz-Frames für einen einzelnen Frame sind, der rekonstruiert wird,Modifizieren (306) eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames (916) verwendet werden, undGeben (308) eines oder mehrerer Referenz-Frames (916) in den Cache-Speicher (930), zumindest teilweise abhängig vom Binning-Zählwert; wobeidas Geben der Referenz-Frames (916) in den Cache-Speicher (930) entsprechend dem Binning-Zählwert abhängig davon ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt erfolgt, wobei das Geben der Referenz-Frames (916) in den Cache-Speicher (930) erfolgt, wenn der Cache-Treffer-Zählwert oberhalb oder gleich 50% ist und das Geben der Referenz-Frames (916) in den Cache-Speicher (930) nicht erfolgt, wenn der Cache-Treffer-Zählwert unterhalb von 50% ist.

Description

  • HINTERGRUND
  • Infolge immer weiter ansteigender Videoauflösungen und zunehmender Erwartungen an Videobilder hoher Qualität existiert ein hoher Bedarf an einer wirksamen Bilddatenkompression von Video, während die Leistungsfähigkeit für die Codierung mit existierenden Videocodiernormen in der Art von H.264, H.265/HEVC (High Efficiency Video Coding) usw. begrenzt ist. Die erwähnten Normen verwenden erweiterte Formen traditioneller Ansätze zum Angehen des Problems der unzureichenden Kompression/Qualität, die Ergebnisse sind jedoch noch immer unzureichend.
  • Jedes dieser typischen Videocodiersysteme verwendet einen Codierer, der Daten in Bezug auf Video-Frames erzeugt, die in einem Bitstream wirksam zu einem Decodierer übertragen werden können und dann für die Rekonstruktion der Video-Frames verwendet werden können. Diese Daten können die Bildluminanz- und Farbpixelwerte sowie Intra- und Inter-Vorhersagedaten, Filterdaten, Reste usw. aufweisen, welche eine verlustbehaftete Kompression bereitstellen, so dass die Luminanz- und Farbdaten nicht aller einzelnen Pixel in allen Frames in den Bitstream gegeben werden müssen. Sobald all diese verlustbehafteten Kompressionswerte von einem Codierer festgelegt wurden, können dann ein oder mehrere Entropiecodierverfahren, wobei es sich um eine verlustfreie Kompression handelt, angewendet werden. Der Decodierer, der den Bitstream empfängt, kehrt den Prozess dann um, um die Frames einer Videosequenz zu rekonstruieren.
  • Hier ist relevant, dass die Inter-Vorhersagedaten Daten für die Rekonstruktion von Referenz-Frames durch die Verwendung von Bewegungsvektoren, welche die Bewegung von Bildinhalt zwischen einem Referenz-Frame und einem anderen Frame, der rekonstruiert wird, und aus derselben Sequenz von Frames angeben, aufweisen können. Herkömmlich können Referenz-Frames während der Decodierung in den Cache gegeben werden, um die Bandbreite eines DRAMs oder Hauptspeichers zu verringern, den Stromverbrauch zu verringern und die Latenztoleranz zu verbessern. Wenn ein Gleitendes-Fenster-Zeilen-Cache implementiert wird, erfordert dies, dass ein L2-Cache mit einer verhältnismäßig überzogenen Größe eine ausreichende Anzahl der Referenz-Frames (wie etwa vier) erfasst, um eine erhebliche Verringerung von Speicherzugriffen zu erreichen. Alternativ kann ein Decodierer infolge von Kapazitätsbeschränkungen nur einen einzigen nächstgelegenen (in der Position in Bezug auf einen aktuellen Frame, der analysiert wird) Referenz-Frame im L2-Cache speichern, wenngleich mehrere Referenz-Frames zur Inter-Vorhersage eines Frames, der rekonstruiert wird, verwendet werden können, wodurch eine niedrigere Trefferrate hervorgerufen wird.
  • US 2010/0 0150 223 A1 offenbart ein System und ein Verfahren zum intelligenten Puffern von codierten Bildern. Gemäß dem Verfahren wird ein Videostream zunächst gepuffert und ein vorausschauender Parser scannt die zukünftigen Videoframes und registriert welche der zukünftigen Videoframes auf welche Referenzframes referenzieren. Die am häufigsten referenzierten Referenzframes werden daraufhin beispielsweise in einem Cache-Speicher gespeichert.
  • US 2008/0 279 280 A1 beschreibt eine Vorrichtung mit einem Cache-Speicher, der Referenzbilder speichert. Ein Referenzstrukturanalysator analysiert Referenzstrukturen der Bilder und speichert die Referenzbilder im Cache-Speicher, die am häufigsten referenziert werden.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Das hier beschriebene Material dient als Beispiel und in den anliegenden Figuren in keiner Weise der Einschränkung. Aus Gründen der Einfachheit und Klarheit der Darstellung sind in den Figuren dargestellte Elemente nicht notwendigerweise maßstabsgerecht gezeichnet. Beispielsweise können die Abmessungen einiger Elemente aus Gründen der Klarheit in Bezug auf andere Elemente übertrieben sein. Ferner wurden, wo dies als angemessen angesehen wurde, Bezugszeichen zwischen den Figuren wiederholt, um entsprechende oder analoge Elemente anzugeben.
  • Es zeigen:
    • 1 ein veranschaulichendes Diagramm eines als Beispiel dienenden Codierers für ein Videocodiersystem,
    • 2 ein veranschaulichendes Diagramm eines als Beispiel dienenden Decodierers für ein Videocodiersystem,
    • 3 ein Flussdiagramm eines als Beispiel dienenden Verfahrens zum adaptiven Referenz-Frame-Caching für die Videocodierung,
    • die 4A-B ein detailliertes Flussdiagramm eines als Beispiel dienenden Verfahrens zum adaptiven Referenz-Frame-Caching für die Videocodierung,
    • 5 ein schematisches Diagramm eines als Beispiel dienenden Systems zum adaptiven Referenz-Frame-Caching für die Videocodierung,
    • die 6A - 6B als Beispiel dienende Referenz-Frame-Binning-Listen,
    • 7 ein schematisches Diagramm eines als Beispiel dienenden Systems zum adaptiven Referenz-Frame-Caching für die Videocodierung,
    • 8 ein veranschaulichendes Diagramm eines als Beispiel dienenden Systems beim Betrieb für ein Verfahren zum adaptiven Referenz-Frame-Caching für die Videocodierung, 9 ein veranschaulichendes Diagramm eines als Beispiel dienenden Systems,
    • 10 ein veranschaulichendes Diagramm eines anderen als Beispiel dienenden Systems und
    • 11 eine andere als Beispiel dienende Vorrichtung, wobei alle gemäß zumindest einigen Implementationen der vorliegenden Offenbarung eingerichtet sind.
  • DETAILLIERTE BESCHREIBUNG
  • Eine oder mehrere Implementationen werden nun mit Bezug auf die anliegenden Figuren beschrieben. Wenngleich spezifische Konfigurationen und Anordnungen erörtert werden, ist zu verstehen, dass dies lediglich erläuternden Zwecken dient. Fachleute werden verstehen, dass andere Konfigurationen und Anordnungen verwendet werden können, ohne vom Gedanken und vom Geltungsbereich der Beschreibung abzuweichen. Fachleute auf dem relevanten Gebiet werden verstehen, dass hier beschriebene Techniken und/oder Anordnungen auch in einer Vielzahl anderer Systeme und Anwendungen als den hier beschriebenen eingesetzt werden können.
  • Wenngleich die folgende Beschreibung verschiedene Implementationen darlegt, die beispielsweise in Architekturen in der Art von System-auf-einem-Chip(SoC)-Architekturen manifestiert werden können, ist die Implementation der hier beschriebenen Techniken und/oder Anordnungen nicht auf bestimmte Architekturen und/oder Rechensysteme beschränkt, und sie können durch eine beliebige Architektur und/oder ein beliebiges Rechensystem für ähnliche Zwecke implementiert werden. Beispielsweise können verschiedene Architekturen, die beispielsweise mehrere Integrierte-Schaltung(IC)-Chips und/oder -Baugruppen verwenden, und/oder verschiedene Rechenvorrichtungen und/oder Endverbraucherelektronik(CE)-Vorrichtungen in der Art von Settop-Boxen, Fernsehgeräten, Smartphones usw. die hier beschriebenen Techniken und/oder Anordnungen implementieren. Wenngleich die folgende Beschreibung ferner zahlreiche spezifische Einzelheiten in der Art von Logikimplementationen, Typen und Beziehungen zwischen Systemkomponenten, Wahlmöglichkeiten einer logischen Partitionierung/Integration usw. darlegen kann, kann der beanspruchte Gegenstand ohne diese spezifischen Einzelheiten verwirklicht werden. In anderen Fällen können einige Materialien in der Art beispielsweise von Steuerstrukturen und vollständigen Softwarebefehlssequenzen nicht detailliert dargestellt werden, um das hier offenbarte Material nicht unverständlich zu machen.
  • Das hier offenbarte Material kann in Hardware, Firmware, Software oder einer Kombination davon implementiert werden. Das hier offenbarte Material kann auch als auf einem maschinenlesbaren Medium gespeicherte Befehle implementiert werden, die durch einen oder mehrere Prozessoren gelesen und ausgeführt werden können. Ein maschinenlesbares Medium kann ein beliebiges Medium und/oder einen beliebigen Mechanismus zum Speichern oder Übertragen von Informationen in einer durch eine Maschine (beispielsweise eine Rechenvorrichtung) lesbaren Form einschließen. Beispielsweise kann ein maschinenlesbares Medium einen Nurlesespeicher (ROM), einen Direktzugriffsspeicher (RAM) einschließlich eines dynamischen RAMs (DRAMs), Magnetplattenspeichermedien, optische Speichermedien, Flash-Speichervorrichtungen, elektrische, optische, akustische oder andere Formen übertragener Signale (beispielsweise Trägerwellen, Infrarotsignale, Digitalsignale usw.) und andere einschließen. In einer anderen Form kann ein nichtflüchtiger Artikel in der Art eines nichtflüchtigen computerlesbaren Mediums mit beliebigen der vorstehend erwähnten Beispiele oder anderen Beispielen verwendet werden, abgesehen davon, dass darin an sich kein flüchtiges Signal enthalten ist. Er schließt diese Elemente abgesehen von einem Signal an sich ein, welche Daten vorübergehend in einer „flüchtigen“ Weise in der Art eines DRAMs und dergleichen halten können.
  • In der Patentschrift auftretende Bezüge auf „eine einzige Implementation“, „eine Implementation“, „eine als Beispiel dienende Implementation“ usw. geben an, dass die beschriebene Implementation ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik aufweisen kann, wobei jedoch nicht notwendigerweise jede Implementation das bestimmte Merkmal, die bestimmte Struktur oder die bestimmte Charakteristik aufweisen kann. Überdies beziehen sich solche Ausdrücke nicht notwendigerweise auf dieselbe Implementation. Ferner wird, wenn ein bestimmtes Merkmal, eine bestimmte Struktur oder eine bestimmte Charakteristik in Zusammenhang mit einer Implementation beschrieben wird, angenommen, dass Fachleute in der Lage sein werden, dieses Merkmal, diese Struktur oder diese Charakteristik in Zusammenhang mit anderen Implementationen zu verwirklichen, unabhängig davon, ob dies hier explizit beschrieben wird.
  • Nachstehend werden Systeme, Artikel und Verfahren beschrieben, die sich auf ein adaptives Referenz-Frame-Caching für das Videocodieren beziehen.
  • Beim Videocodieren können mehrere Referenz-Frames für die Vorhersage verwendet werden, wie es durch Codecebenenunterstützung vorgeschrieben wird. Während der Inter-Vorhersage können zuvor decodierte Frames in einer Videosequenz von Frames als Referenz-Frames zum Rekonstruieren eines anderen Frames in der Videosequenz verwendet werden. Ein Codierer kann einen Gleitendes-Fenster-Zeilen-Cache (L2) für das Zwischenspeichern der Referenz-Frames verwenden, der zum Reduzieren der Speicherbandbreite eines externen Speichers in der Art eines Doppelte-Datenrate(DDR)-DRAMs sowie zum Verringern des damit einhergehenden Stromverbrauchs verwendet wird, und die Latenztoleranz verbessern. Wenn decodiert wird, können, falls ein ähnlicher Gleitendes-Fenster-Zeilen-Cache verwendet wird, die gleiche Speicherbandbreite und der gleiche Stromverbrauch verwirklicht werden. Insbesondere befindet sich ein Cache typischerweise an Bord mit dem Prozessor (oder hat eine direktere Verbindung damit) als ein anderer ferner Speicher in der Art eines externen DRAMs, so dass bei jeglichen Treffern in den im Cache gespeicherten Daten der kostspieligere strom- und zeitverbrauchende Speicherabruf am externen DRAM vermieden wird. Der Gleitendes-Fenster-Zeilen-Cache speichert Daten eines Frames Pixel für Pixel entlang einer Zeile, beispielsweise von links nach rechts und dann rasterartig Zeile für Zeile den Frame nach unten.
  • Diese herkömmliche Anordnung, die Daten auf der Grundlage der Codecebenenunterstützung im Gleitendes-Fenster-Zeilen-Cache speichert, ist jedoch noch verhältnismäßig ineffizient, weil sie es erforderlich macht, dass eine größere Anzahl von Frames in der Art von vier Frames im L2-Cache gespeichert wird, um eine ausreichende Trefferrate zu erhalten. Alternativ kann ein Decoder so festgelegt werden, dass er nur den nächstgelegenen einen oder die nächstgelegenen zwei Referenz-Frames in einer Videosequenz von Frames im L2-Cache speichert, um einen Cache mit einer geringeren Größe zu erhalten, dies würde jedoch eine geringere Cache-Trefferrate hervorrufen, was zu einer erforderlichen größeren Bandbreite des DRAMs und einem damit einhergehenden Anstieg des Strom- und Zeitverbrauchs führen würde.
  • Zum Lösen dieser Probleme verwendet der vorliegende adaptive Referenz-Frame-Caching-Prozess die Bewegungsvektoren, die angeben, wie Bildinhalt von Frame zu Frame bewegt wurde. Demgemäß können die Bewegungsvektoren verwendet werden, um anzugeben, welche Frames Referenz-Frames für einen anderen Frame sind, der in der Videosequenz zu rekonstruieren ist. Die Bewegungsvektoren können vor oder nach der Pixelcodierung (Bewegungskompensation) am Decoder erhalten werden und verwendet werden, um Hinweise festzulegen, die bewirken, dass Referenz-Frames wahrscheinlicher einen Cache-Treffer erhalten, der in den Cache und bei einer Form den L2-Cache zu geben ist. Bei einer als Beispiel dienenden Form werden die Bewegungsvektoren verwendet, um einen Binning-Zählwert zu erzeugen, der angibt, wie häufig ein Frame in einer oder mehreren Referenz-Frame-Binning-Tabellen oder -Listen (hier austauschbar auch als Bewegungsvektor-Binning-Tabellen, MV-Binning-Tabellen, Referenz-Frame-Tabellen, Binning-Tabellen usw. oder beliebige von diesen als Listen statt Tabellen bezeichnet) als ein Referenz-Frame verwendet wird, so dass es möglich ist, den oder die am häufigsten verwendeten Referenz-Frames als Hinweis zu bestimmen oder zu verfolgen. Das Speichern der am häufigsten verwendeten Referenz-Frames im L2-Cache, der besser eine höhere Trefferrate gewährleistet, ermöglicht dann eine Verringerung der Cache-Größe sowie der Bandbreite, des Strom- und des Zeitverbrauchs für Speicherabrufe in den externen Speicher in der Art eines DRAMs.
  • Mit Bezug auf die 1 - 2 sei bemerkt, dass, um das Verfahren und das System zum adaptiven Referenz-Frame-Caching hier in einen Zusammenhang zu stellen, ein als Beispiel dienendes vereinfachtes Videocodiersystem 100 mit zumindest einigen Implementationen der vorliegenden Offenbarung versehen ist und eine Inter-Vorhersage unter Verwendung von Referenz-Frames, die im Cache gespeichert werden können, ausführt. Bei verschiedenen Implementationen kann das Videocodiersystem 100 dafür ausgelegt sein, gemäß einer oder mehreren Normen eine Videocodierung auszuführen und/oder Video-Codecs zu implementieren. Ferner kann das Videocodiersystem 100 bei verschiedenen Formen als Teil eines Bildprozessors, eines Videoprozessors und/oder eines Medienprozessors implementiert sein und führt eine Inter-Vorhersage, eine Intra-Vorhersage, eine Vorhersagecodierung und eine Restvorhersage aus. Bei verschiedenen Implementationen kann das System 100 gemäß einer oder mehreren Normen oder Spezifikationen in der Art beispielsweise von H.264 (MPEG-4), H.265 (High Efficiency Video Coding oder HEVC) eine Videokompression und -dekompression ausführen und/oder Video-Codecs implementieren, jedoch auch auf VP9 oder andere VP#-basierte Normen angewendet werden. Wenngleich das System 100 und/oder andere Systeme, Schemata oder Prozesse hier beschrieben werden können, sind die Merkmale der vorliegenden Offenbarung nicht notwendigerweise alle immer auf eine bestimmte Videocodiernorm oder -spezifikation oder Erweiterungen davon beschränkt.
  • Hier kann sich der Begriff „Coder“ auf einen Codierer und/oder einen Decodierer beziehen. Ähnlich kann sich der Begriff „Codieren“ hier auf das Codieren über einen Codierer und/oder das Decodieren über einen Decodierer beziehen. Ein Coder, Codierer oder Decodierer kann Komponenten sowohl eines Codierers als auch eines Decodierers aufweisen.
  • Bei einigen Beispielen kann das Videocodiersystem 100 zusätzliche Bestandteile aufweisen, die aus Gründen der Klarheit in 1 nicht dargestellt worden sein können. Beispielsweise kann das Videocodiersystem 100 einen Prozessor, einen Hochfrequenz(HF)-Transceiver, einen Teiler und/oder einen Multiplexer, eine Anzeige und/oder eine Antenne aufweisen. Ferner kann das Videocodiersystem 100 zusätzliche Bestandteile in der Art eines Lautsprechers, eines Mikrofons, eines Beschleunigungsmessers, eines Speichers, eines Routers, einer Netzschnittstellenlogik usw. aufweisen.
  • Für das als Beispiel dienende Videocodiersystem 100 kann das System ein Codierer sein, bei dem aktuelle Videoinformationen in Form von Daten, die sich auf eine Sequenz von Video-Frames beziehen, zur Kompression empfangen werden können. Das System 100 kann jeden Frame in kleinere besser behandelbare Einheiten zerlegen und die Frames dann vergleichen, um eine Vorhersage zu berechnen. Falls zwischen einem ursprünglichen Block und einer Vorhersage eine Differenz oder ein Rest bestimmt wird, wird dieser sich ergebende Rest transformiert und quantisiert und dann Entropie-codiert und in einem Bitstream zu Decodierern oder zur Speicherung herausgesendet. Zum Ausführen dieser Operationen kann das System 100 eine Frame-Organisier- und -Zerlegungseinheit 102, eine Substraktionseinheit 104, eine Transformations- und Quantisiereinheit 106, eine Entropiecodiereinheit 110 und eine Codierersteuereinrichtung 108, die mit den verschiedenen Einheiten kommuniziert und/oder diese steuert, aufweisen. Die Steuereinrichtung 108 steuert viele Aspekte der Codierung, einschließlich der Ratenverzerrung, der Auswahl oder der Codierung von Zerlegungsgrößen, von Vorhersagereferenztypen, der Auswahl von Vorhersage- und anderen Modi und des Steuerns der Gesamtbitrate sowie anderer.
  • Die Ausgabe der Transformations- und Quantisiereinheit 106 kann auch einer Decodierschleife 120 bereitgestellt werden, die am Codierer bereitgestellt ist, um die gleichen Referenz- oder rekonstruierten Blöcke, Frames oder andere Frame-Zerlegungen, wie sie am Decodierer erzeugt werden würden, zu erzeugen. Demgemäß verwendet die Decodierschleife 120 eine Umkehrquantisier- und Transformationseinheit 112 zum Rekonstruieren der Frames und einen Addierer 114 zusammen mit anderen nicht dargestellten Zusammenstellungseinheiten zum Rekonstruieren der Blöcke innerhalb jedes Frames. Die Decodierschleife 120 stellt dann eine Filterschleifeneinheit 116 zum Erhöhen der Qualität der rekonstruierten Bilder bereit, damit sie besser mit dem entsprechenden ursprünglichen Frame übereinstimmen. Diese kann ein Deblocking-Filter, ein Sample-Adaptive-Offset(SAO)-Filter und ein Qualitätswiederherstellungs(QR)-Filter aufweisen. Die Decodierschleife 120 kann auch eine Vorhersageeinheit 118 mit einem Decodiertes-Bild-Puffer zum Halten eines oder mehrerer Referenz-Frames und eine Bewegungsschätzeinheit 119 und eine Bewegungskompensationseinheit 117, worin Bewegungsvektoren zur Inter-Vorhersage verwendet werden, und ein Intra-Frame-Vorhersagemodul 121 aufweisen. Die Intra-Vorhersage oder räumliche Vorhersage wird an einem einzigen I-Frame ohne Bezugnahme auf andere Frames ausgeführt. Das Ergebnis sind die Bewegungsvektoren und vorhergesagten Blöcke (oder Koeffizienten).
  • In weiteren Einzelheiten und hier relevant sei bemerkt, dass die Bewegungsschätzeinheit 119 Pixeldatenvergleichsalgorithmen zum Erzeugen von Bewegungsvektoren, welche die Bewegung von Bildinhalt zwischen einem oder mehreren Referenz-Frames und dem aktuellen Frame, der rekonstruiert wird, angeben, verwendet. Die Bewegungsvektoren werden dann von der Bewegungskompensationseinheit 117 verwendet, um den neuen Frame zu rekonstruieren. Die nachstehend beschriebene adaptive Referenz-Frame-Caching-Technik könnte verwendet werden, um die Frames hier am Codierer sowie am Decodierer zu rekonstruieren. Im Fall des Codierers kann die Identifikation der Referenz-Frames anhand der Bewegungsvektoren bestimmt werden, nachdem die Bewegungsvektoren von der Bewegungsschätzeinheit 119 erzeugt werden und bevor sie von der Bewegungskompensationseinheit 117 verwendet wurden. Demgemäß wird, wenngleich viele der nachstehenden Operationen die mit dem Decodierer verwendete Technik beschreiben, verständlich sein, dass der Codierer auch die hier beschriebenen Referenz-Frame-Caching-Techniken für die Bewegungskompensation an der Vorhersageschleife des Codierers implementieren könnte. Dann kann die Vorhersageeinheit 118 einen Beste-Vorhersage-Block sowohl der Subtraktionseinheit 104 zur Erzeugung eines Rests als auch in der Decodierschleife dem Addierer 114 bereitstellen, um die Vorhersage zum Rest von der Umkehrtransformation zu addieren, um einen Frame zu rekonstruieren. Andere Module oder Einheiten können für die Codierung bereitgestellt werden, werden hier aus Gründen der Klarheit jedoch nicht beschrieben.
  • Genauer gesagt können die Videodaten in Form von Frames von Pixeldaten der Frame-Organisier- und -Zerlegungseinheit 102 bereitgestellt werden. Diese Einheit hält Frames in einer Eingangsvideosequenzreihenfolge, und die Frames können in der Reihenfolge abgerufen werden, in der sie codiert werden müssen. Beispielsweise werden Rückwärts-Referenz-Frames vor dem Frame, für den sie eine Referenz sind, codiert, jedoch danach angezeigt. Der Eingangsbildpuffer kann Frames auch eine Klassifikation in der Art von I-Frame (intra-codiert), P-Frame (intercodiert, anhand eines vorhergehenden Referenz-Frames vorhergesagt) und B-Frame (intercodierter Frame, der anhand vorhergehender Frames, anschließender Frames oder beider bidirektional vorhergesagt werden kann) zuweisen. In jedem Fall kann ein gesamter Frame in gleicher Weise klassifiziert werden, oder bei ihm können Slices unterschiedlich klassifiziert werden (demgemäß kann ein I-Frame nur I-Slices aufweisen, kann ein P-Frame I- und P-Slices aufweisen usw.). Bei I-Slices kann eine räumliche Vorhersage verwendet werden, wobei dies bei einer Form nur anhand Daten im Frame selbst geschehen kann. Bei P-Slices kann eine zeitliche (statt räumliche) Vorhersage durch Schätzen der Bewegung zwischen Frames ausgeführt werden. Bei B-Slices und für HEVC können zwei Bewegungsvektoren, welche zwei Bewegungsschätzungen pro Zerlegungseinheit (PU) (nachstehend erklärt) repräsentieren, für die zeitliche Vorhersage oder Bewegungsschätzung verwendet werden. Mit anderen Worten kann beispielsweise ein B-Slice anhand Slices auf Frames entweder aus der Vergangenheit, der Zukunft oder beides in Bezug auf den B-Slice vorhergesagt werden. Zusätzlich kann die Bewegung anhand mehrerer Bilder geschätzt werden, die in Bezug auf die Anzeigereihenfolge entweder in der Vergangenheit oder in der Zukunft auftreten. Bei verschiedenen Implementationen kann eine Bewegung an den verschiedenen Codiereinheits(CU)- oder PU-Ebenen entsprechend den nachstehend erwähnten Größen geschätzt werden. Für ältere Normen können Makroblöcke oder eine andere Blockbasis die verwendete Zerlegungseinheit sein.
  • Insbesondere kann, wenn eine HEVC-Norm verwendet wird, die Vorhersagezerlegungseinheit 104 die Frames in Vorhersageeinheiten unterteilen. Hierbei können Codiereinheiten (CU) oder große Codiereinheiten (LCU) verwendet werden. Für diese Norm kann ein aktueller Frame durch einen Codierzerleger durch Unterteilung in einen oder mehrere Slices von Codier-Baumblöcken (beispielsweise 64 x 64 Luma-Abtastwerte mit entsprechenden Chroma-Abtastwerten) zur Kompession zerlegt werden. Jeder Codier-Baumblock kann auch in einem Quad-Tree-Zerlegungsschema in Codiereinheiten (CU) unterteilt werden. Ferner kann jede Blatt-CU am Quad-Tree für eine bewegungskompensierte Vorhersage entweder wieder in 4 CU zerlegt werden oder in Zerlegungseinheiten (PU) unterteilt werden. Bei verschiedenen Implementationen gemäß der vorliegenden Offenbarung können CU unterschiedliche Größen aufweisen, einschließlich 64 x 64, 32 x 32, 16 x 16 und 8 x 8, jedoch ohne Einschränkung darauf, während für eine 2N x 2N-CU die entsprechenden PU auch unterschiedliche Größen aufweisen können, einschließlich 2N x 2N, 2N x N, N x 2N, N x N, 2N x 0,5N, 2N x 1,5N, 0,5N x 2N und 1,5N x 2N, jedoch ohne Einschränkung darauf. Es ist jedoch zu verstehen, dass die vorstehend Erwähnten nur als Beispiel dienende CU-Zerlegungs- und PU-Zerlegungsformen und -größen sind, wobei die vorliegende Offenbarung nicht auf bestimmte CU-Zerlegungs- und PU-Zerlegungsformen und/oder -größen beschränkt ist.
  • Hier kann sich der Begriff „Block“ auf eine CU oder eine PU von Videodaten für HEVC und dergleichen oder andernfalls einen 4 x 4- oder 8 x 8- oder anderen rechteckig geformten Block beziehen. Bei einigen Alternativen kann dies einschließen, dass der Block als eine Unterteilung eines Makroblocks von Video- oder Pixeldaten für H.264/AVC und dergleichen betrachtet werden kann, sofern nichts anderes definiert ist.
  • Die aktuellen Blöcke können von vorhergesagten Blöcken von der Vorhersageeinheit 118 subtrahiert werden, und die sich ergebende Differenz oder der sich ergebende Rest wird wie vorstehend erwähnt zerlegt und einer Transformations- und Quantisiereinheit 106 bereitgestellt. Der relevante Block oder die relevante Einheit wird unter Verwendung einer diskreten Kosinustransformation (DCT) und/oder einer diskreten Sinustransformation (DST), um einige Beispiele zu nennen, in Koeffizienten transformiert. Die Quantisierung verwendet dann eine verlustbehaftete Neuabtastung oder Quantisierung an den Koeffizienten. Der erzeugte Satz quantisierter Transformationskoeffizienten kann umgeordnet werden, und sie sind dann für die Entropiecodierung bereit. Die Koeffizienten werden zusammen mit Bewegungsvektoren und anderen Header-Daten durch die Einheit 110 entropiecodiert und zur Übertragung zu einem Decodierer in einen Bitstream gegeben.
  • Mit Bezug auf 2 sei bemerkt, dass ein als Beispiel dienendes vereinfachtes System 200 einen Decodierer aufweisen kann oder ein Decodierer sein kann und codierte Videodaten in Form eines Bitstreams empfangen kann. Das System 200 kann den Bitstream mit einer Entropiedecodiereinheit 202 verarbeiten, um quantisierte Restkoeffizienten sowie die Bewegungsvektoren, Vorhersagemodi, Zerlegungen, Quantisierungsparameter, Filterinformationen usw. zu extrahieren. Hier ist relevant, dass der Bitstream die Bewegungsvektoren, Koeffizienten und andere Header-Daten zur Inter-Vorhersage und für die Entropiedecodierung aufweist.
  • Das System 200 kann dann ein Umkehrquantisierungsmodul 204 und ein Umkehrtransformationsmodul 206 verwenden, um die restlichen Pixeldaten zu rekonstruieren. Anschließend kann das System 200 einen Addierer 208 verwenden, um zusammengesetzte Reste vorhergesagten Blöcken hinzuzufügen, um das Wiederaufbauen von Vorhersageblöcken zu ermöglichen. Diese Blöcke können zur Intra-Vorhersage an die Vorhersageeinheit 212 übergeben werden oder zuerst an eine Filtereinheit 210 übergeben werden, um die Qualität der Blöcke und dementsprechend der Frames zu erhöhen, bevor die Blöcke zur Inter-Vorhersage an die Vorhersageeinheit 212 übergeben werden. Für diesen Zweck kann die Vorhersageeinheit 212 eine Bewegungskompensationseinheit 213 zur Anwendung der Bewegungsvektoren aufweisen. Wie nachstehend detailliert erklärt wird, können die Bewegungsvektoren verwendet werden, um Referenz-Frames zu identifizieren, entweder bevor die Bewegungskompensationseinheit 213 die Bewegungsvektoren anwendet, um einen Frame zu rekonstruieren, oder danach und abhängig davon, ob das System Bewegungsvektoren vor der Frame-Rekonstruktion extrahieren kann (oder mit anderen Worten direkt aus dem Entropie-decodierten Stream), oder die Bewegungsvektoren werden von der Bewegungskompensationseinheit 213 erhalten, nachdem ein Frame rekonstruiert wurde, wie nachstehend erklärt wird. Die Bewegungskompensationseinheit 213 kann zumindest einen L1-Cache zum Speichern einzelner Frame-Abschnitte und/oder zum Ausführen von Kompensationsalgorithmen mit den Bewegungsvektoren verwenden und zumindest einen L2-Cache zum Speichern der am häufigsten verwendeten Referenz-Frames verwenden, wie auch nachstehend detailliert beschrieben wird. Die Vorhersageeinheit 212 kann den korrekten Modus für jeden Block oder Frame festlegen, bevor die Blöcke oder Frames dem Addierer 208 bereitgestellt werden. Ansonsten ist die Funktionalität der hier für die Systeme 100 und 200 beschriebenen Einheiten auf dem Fachgebiet wohlbekannt und wird hier nicht in größeren Einzelheiten beschrieben.
  • Für eine als Beispiel dienende Implementation wird ein wirksamer adaptiver Referenz-Frame-Caching-Prozess nachfolgend beschrieben.
  • In 3 zeigt ein Flussdiagramm einen als Beispiel dienenden Prozess 300, der gemäß zumindest einigen Implementationen der vorliegenden Offenbarung eingerichtet ist. Im Allgemeinen kann der Prozess 300 ein computerimplementiertes Verfahren zum adaptiven Referenz-Frame-Caching für eine Videocodierung bereitstellen. Bei der erläuterten Implementation kann der Prozess 300 eine oder mehrere Operationen, Funktionen oder Aktionen aufweisen, wie durch eine oder mehrere geradzahlig nummerierte Operationen 302 bis 308 dargestellt ist. Anhand eines nicht einschränkenden Beispiels kann der Prozess 300 hier mit Bezug auf anhand der 1 - 2, 5 - 7 und 9 in Bezug auf als Beispiel dienende Systeme 100, 200, 500, 600, 700 oder 900, die hier erörtert sind, erörterte Operationen beschrieben werden.
  • Der Prozess 300 kann das „Empfangen von Bilddaten, welche Referenz-Frames und Bewegungsvektordaten umfassen“ 302 umfassen, und wie verständlich sein wird, können die Bilddaten beliebige Daten sein, die erforderlich sein können, um Video-Frames unter Verwendung einer Inter-Vorhersage zu rekonstruieren, zumindest einschließlich Daten von Frames, die als Referenz-Frames zu verwenden sind, und Bewegungskompensationsdaten zum Rekonstruieren der Frames unter Verwendung von Bewegungsvektoren. Am Decodierer kann der Bitstream in einem eine Entropiedecodierung erforderlich machenden Zustand, wie vorstehend erklärt wurde, empfangen werden.
  • Der Prozess 300 kann auch das „Verwenden der Bewegungsvektordaten zum Bestimmen, welche Frames Referenz-Frames für einen einzelnen rekonstruierten Frame sind“ 304 aufweisen. Auch gibt der Bewegungsvektor wie erwähnt, weil ein Bewegungsvektor die Änderung der Position von Bildinhalt (oder Chroma- oder Luminanzpixeldaten) von einem Frame zu einem anderen Frame in einer Videosequenz von Frames angibt, an, welche Frames die Referenz-Frames für einen anderen Frame sind. Wenn Bewegungsvektoren anhand des entropiedecodierten Bitstreams und vor der Pixeldecodierung zugänglich sind, können die Bewegungsvektoren verwendet werden, um zu bestimmen, welche Frames in der Videosequenz, die decodiert wird, für einen aktuellen Frame, der in Kürze zu rekonstruieren ist, Referenz-Frames sind. Wenn die Bewegungsvektoren nicht direkt anhand der entropiedecodierten Daten verfügbar sind und nur nach der Pixeldecodierung verfügbar sind, können die Bewegungsvektoren verwendet werden, um zu bestimmen, welche Frames in der Videosequenz, die decodiert wird, Referenz-Frames für einen nächsten Frame sind, der in Kürze zu rekonstruieren ist.
  • Der Prozess 300 kann auch das „Modifizieren eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames verwendet werden“ 306 aufweisen. Wie nachstehend detailliert beschrieben wird, kann dies die Verwendung eines oder mehrerer Referenz-Frames oder Bewegungsvektor-Binning-Listen oder -Tabellen einschließen. Bei einer Form weist die Binning-Tabelle oder weisen die Binning-Tabellen Bins für eine bestimmte Anzahl aufeinander folgender Frames, sowohl vor als auch nach einem aktuellen Frame, der gerade rekonstruiert wird, und innerhalb der Videosequenz auf. Jedes Mal dann, wenn ein Frame durch Bewegungsvektoren als ein Referenz-Frame identifiziert wird, wird der Zählwert des Bins in Zusammenhang mit diesem Frame um eins inkrementiert. Bei einem Beispiel gibt es zwei Binning-Tabellen, nämlich eine Tabelle für Frames vor dem aktuellen Frame und eine andere Tabelle für Frames nach dem aktuellen Frame. Bei einem Beispiel gibt es in jeder Tabelle 16 Frames, wenngleich es mehr oder weniger geben kann.
  • Der Prozess 300 kann auch das „Geben eines oder mehrerer Referenz-Frames in den Cache-Speicher, zumindest teilweise abhängig vom Binning-Zählwert“ 308 aufweisen, und hierbei kann eine vorgegebene Anzahl von Referenz-Frames in der Art eines oder zweier Referenz-Frames, welche den größten Zählwert in der einen oder den mehreren Tabellen aufweisen, in den L2-Cache gegeben werden. Demgemäß wird bei einem Beispiel eine genaue Referenz-Frame-Identifikation für einen einzigen aktuellen Frame für das verhältnismäßig langfristige und wirksamere Geben der am häufigsten verwendeten Referenz-Frames in den L2-Cache geopfert.
  • Es wird verständlich sein, dass die Bewegungskompensationseinheit, sobald ein Referenz-Frame in den Cache gegeben wurde, die Daten des Referenz-Frames zusammen mit den Bewegungsvektoren verwenden kann, um den aktuellen Frame zu rekonstruieren. Es wird auch verständlich sein, dass, wenn die Bewegungsvektoren und die Referenz-Frame-Identifikation bis nach der Rekonstruktion des zugeordneten aktuellen Frames nicht erhalten werden konnten, die identifizierten Referenz-Frames verwendet werden, um die am häufigsten verwendeten Referenz-Frames für die Rekonstruktion des nächsten Frames in den Cache zu geben, wobei sich auf die Annahme verlassen wird, dass zwei aufeinander folgende Frames typischerweise verhältnismäßig geringe Differenzen in den Pixeldaten aufweisen. Für verhältnismäßig große Änderungen in Frame-Daten wie im ersten Frame in einer neuen Szene oder in anderen I-Frames werden die Frames anders behandelt, wie nachstehend erklärt wird.
  • Mit Bezug auf die 4A - 4B sei bemerkt, dass ein detaillierter als Beispiel dienender adaptiver Referenz-Frame-Caching-Prozess 400 gemäß zumindest einigen Implementationen der vorliegenden Offenbarung eingerichtet ist. Bei der erläuterten Implementation kann der Prozess 400 eine oder mehrere Operationen, Funktionen oder Aktionen aufweisen, wie durch eine oder mehrere geradzahlig nummerierte Operationen 402 bis 436 dargestellt ist. Anhand eines nicht einschränkenden Beispiels wird der Prozess 400 hier mit Bezug auf anhand der 1 - 2, 5 - 7 und 9 erörterte Operationen beschrieben und kann in Bezug auf hier erörterte als Beispiel dienende Systeme 100, 200, 500, 600, 700 und/oder 900 erörtert werden.
  • Der Prozess 400 kann das „Empfangen von Bilddaten, welche Referenz-Frames und mv-Daten umfassen“ 402 aufweisen, und wie vorstehend erklärt wurde, schließt dies Pixeldaten von Frames in einer Videosequenz ein, die als Referenz-Frames verwendet werden können, und insbesondere die Luminanz- und Chroma-Daten sowie Bewegungsvektoren, welche die Bewegung des Bildinhalts zwischen Frames angeben. Es sei bemerkt, dass die Bewegungsvektordaten auf der Decodiererseite nach der Entropiedecodierung und vor der Pixeldecodierung oder nach der Pixeldecodierung erhalten werden können, wobei dies von der Verfügbarkeit von (Hardware-) Hooks abhängt. Alternativ können die Bewegungsvektoren auf der Codiererseite direkt von einer Bewegungsschätzeinheit erhalten werden, welche die Bewegungsvektoren in der Codierschleife erzeugt. Die Bewegungsvektoren können ein Quellpixel, einen Block oder einen anderen Datenbereich an einer Stelle auf einem Frame und eine Entfernung und eine Richtung einer Verschiebung für eine Anordnung der Daten auf einem anderen Frame aufweisen. Das Format der Bewegungsvektordaten ist nicht besonders beschränkt, solange es einen Quell-Frame als einen Referenz-Frame und einen zu rekonstruierenden Ziel-Frame angibt.
  • Der Prozess 400 kann „mv-Daten anhand entropiedecodierter Daten zugänglich?“ 404 aufweisen, wobei es sich um einen Test handelt, um zu bestimmen, ob die Bewegungsvektoren direkt nach der Entropiedecodierung der Bilddaten verfügbar sind. Falls dies der Fall ist, können dann Referenz-Frames für den aktuellen Frame, der in Kürze von einer Bewegungskompensationseinheit zu rekonstruieren ist, auf der Grundlage des aktualisierten Binning-Zählwerts für einen aktuellen Frame in den L2-Cache gegeben werden. Falls dies nicht der Fall ist, kann die Referenz-Frame-Identifikation nach der Bewegungskompensation eines aktuellen oder individuellen Frames erhalten werden und wird der Binning-Zählwert modifiziert, um zu bestimmen, welche Referenz-Frames für den nächsten zu rekonstruierenden Frame in den Cache zu geben sind, wie nachstehend in weiteren Einzelheiten erklärt wird.
  • Aus Gründen in der Art eines Fehlens von (Hardware-) Hooks für das Extrahieren von Bewegungsvektoren nach der Entropiedecodierung und vor der Pixeldecodierung können Bewegungsvektoren nicht für Binning-Zwecke für das Caching des aktuellen Rahmens verfügbar sein. In diesem Fall kann die Referenz-Frame-Identifikation nach der Bewegungskompensation eines aktuellen oder individuellen Frames erhalten werden und wird der Binning-Zählwert modifiziert, um zu bestimmen, welche Referenz-Frames für die Decodierung des nächsten Frames in den Cache zu geben sind. Dagegen ermöglicht es die Verfügbarkeit von (Hardware-) Hooks für das Extrahieren von Bewegungsvektoren nach der Entropiedecodierung und vor der Pixeldecodierung, dass die Referenz-Frames für den aktuellen Frame, der in Kürze durch eine Bewegungskompensationseinheit zu rekonstruieren ist, auf der Grundlage des aktuellen Binning-Zählwerts für den aktuellen Frame im L2-Cache gespeichert werden.
  • Wenn die Bewegungsvektoren nicht anhand der entropiedecodierten Daten und vor der Anwendung der Bewegungskompensation erhalten werden können, kann der Prozess 400 das „Identifizieren des aktuellen zu codierenden Frames“ 406 aufweisen und insbesondere identifizieren, welcher Frame nun der zu rekonstruierende aktuelle Frame ist.
  • Der Prozess 400 kann dann „anfänglicher Frame einer Szene?“ 408 aufweisen, und es wird festgestellt, ob der aktuelle Frame der erste Frame in einer Szene ist. Wenn dies der Fall ist, kann der Prozess 400 „Intra-Codieren des ersten Frames“ 410 aufweisen. Falls der aktuelle Frame der erste Frame in einer Szene ist oder andernfalls ein intra-codierter I-Frame ist, werden die Binning-Operationen übersprungen, und der aktuelle Frame wird ohne die Verwendung von Referenz-Frames intra-codiert.
  • Bei einer anderen Alternative kann das System so anpassbar sein, dass, falls die L2-Cache-Treffer bis unter einen vorgegebenen Prozentsatz oder ein anderes Kriterium fallen oder falls viel mehr Referenz-Frames zum Rekonstruieren eines einzigen Frames verwendet werden, so dass der Cache-Trefferwert in jedem Fall niedrig ist (beispielsweise wenn vier oder mehr Referenz-Frames für einen einzigen Frame verwendet werden, wenn der L2-Cache nur einen Referenz-Frame enthält), können in diesen Fällen auch das Binning und die Hinweise fortgelassen werden. Bei einem Beispiel werden die Referenz-Frame-Binning-Tabellen nicht verwendet, wenn die Cache-Treffer bis unter 50 % abfallen.
  • Falls der aktuelle Frame nicht der erste Frame in einer Szene ist (oder andernfalls das MV-Binning und -Hinweisen eingeleitet wurde), kann der Prozess 400 das „Modifizieren des Binning-Zählwerts an der einen oder den mehreren Referenz-Frame-Binning-Tabellen abhängig von der tatsächlichen Verwendung des einen oder der mehreren Frames als Referenz-Frames“ 412 aufweisen. Mit anderen Worten verfolgt der Decodierer die Referenz-Frame-Verwendung während der Bewegungskompensation, indem er festhält, welcher Frame oder welche Frames als Referenz-Frames für den vorhergehenden Frame, der rekonstruiert wird, verwendet werden. Wenn ein Referenz-Frame verwendet wurde, wird der Frame-Zählwert in einer Binning-Tabelle um eins und demgemäß um eine MV-Binning-Einheit inkrementiert.
  • Mit Bezug auf 5 als ein Decodiererbeispiel sei bemerkt, dass ein System 500 einen oder mehrere Speicher 502 in der Art von RAM, DRAM oder DDR DRAM oder einen anderen flüchtigen oder permanenten Speicher aufweist, der entropiecodierte Bilddaten sowie decodierte Frames empfängt und speichert. Das System 500 kann auch ein Speicheruntersystem 504 mit einem L2-Cache und einen Decodierer 506 mit einem Entropiedecodierer 508, einem MV- und Header-Decodierer 510, einem Pixeldecodierer (oder einer Bewegungskompensationseinheit) 512, der einen Cache L1 514 aufweist, und einer MV-Binning-Einheit 516 aufweisen. Die Bilddaten werden entropiedecodiert, und MV können dann durch die Einheit 510 decodiert werden. Bei diesem Beispiel können die MV jedoch nicht leicht aus den Daten extrahiert werden und sind auf eine Verwendung durch den Pixeldecodierer 512 beschränkt. Der Pixeldecodierer 512 verwendet die Bewegungsvektoren und einen zuvor decodierten Frame oder Frames, die nun als Referenz-Frames verwendet werden, um die Bewegung der Bilddaten von den Referenz-Frames zu dem neuen Frame, der rekonstruiert wird, zu bestimmen. Auf diese Weise verwendet der Pixeldecodierer 512 die Bewegungsvektoren zum Identifizieren der Referenz-Frames und ruft dann die Referenz-Frames nach Bedarf aus dem L2-Cache oder einem anderen Speicher ab. Dies ist durch Referenz-Frames (1) bis (N) in 5 dargestellt, wobei Referenz-Frames (1) und (N) aus dem Speicher 502 erhalten werden und der Referenz-Frame (2) auf der Grundlage eines Decodierer-Hinweises anhand der vorhergehenden Frame-Analyse in den L2-Cache gegeben wird und dann vom Pixeldecodierer 512 aus dem L2-Cache erhalten wird. Der Pixeldecodierer 512 kann auch wenigstens einen L1-Cache zum Speichern einzelner Referenz-Frame-Abschnitte aufweisen, um zu versuchen, einen ersten Cache-Treffer auf einem Referenz-Frame zu erhalten, und/oder den L1-Cache verwenden, um Kompensationsalgorithmen mit den Bewegungsvektoren auszuführen. Sobald ein Frame rekonstruiert wurde, wird er wieder im Speicher 502 oder einem anderen Speicher gespeichert, und die Bewegungsvektoren, die für die Rekonstruktion verwendet wurden, sind nun zugänglich (oder können bestimmt werden), was wiederum angibt, welche Frames als Referenz-Frames für die Rekonstruktion verwendet wurden. Diese Bewegungsvektoren, welche die Quell-Referenz-Frames angeben, werden dann der MV-Binning-Einheit 516 bereitgestellt, die dann den Decodierer-Hinweis für den nächsten von L2 zu speichernden Frame bestimmt.
  • Mit Bezug auf die 6A - 6B sei bemerkt, dass die MV-Binning-Einheit 516 die MV verwendet, um die Referenz-Frame-Identifikationen zu bestimmen, und dann den Bin für jeden Referenz-Frame in den Referenz-Frame- oder Bewegungsvektor-Binning-Tabellen um eins inkrementiert. Beim dargestellten Beispiel kann es eine Liste oder Tabelle 600 zum Halten von Bins für die Zählwerte aufeinander folgender Frames geben, die als Referenz-Frames verwendet werden können und entlang der Videosequenz vor einem aktuellen Frame, der rekonstruiert wird, positioniert sind (Rückwärtsvorhersage), und eine andere Tabelle 602 zum Halten der Bins für aufeinander folgende Frames geben, die hinter der Position des aktuellen Frames, der rekonstruiert wird, als Referenz-Frames verwendet werden können (Vorwärtsvorhersage). Wenngleich diese wie erwähnt aufeinander folgende Frame-Positionen sein können, muss dies nicht immer der Fall sein. Auch in diesem Beispiel kann es 16 Bins für 16 Frames in jeder Liste geben, wenngleich eine beliebige andere Anzahl von Bins, die als wirksam herausgefunden wurde, verwendet werden kann. Zufällige als Beispiel dienende Zahlen repräsentieren in den Bins dargestellte Binning-Zählwerte, es wird jedoch verstanden werden, dass die Zählwerte in einer binären oder anderen Form an Stelle von Dezimalzahlen bleiben. Es wird auch verstanden werden, dass das System für jede Liste Bin-Nummernetiketten (1 bis 16) für jede Liste verwenden kann, um den korrekten Bin zu finden, dass diese Etikettnummern jedoch nicht codiert zu werden brauchen und an der Position des Bins entlang der Tabelle inhärent sind. Die Tabellen können auch im Speicher 502 oder einem anderen Speicher, der die Kapazität zum Halten der Tabelle über eine Szene aufweist, gespeichert werden.
  • Die MV-Binning-Einheit 516 modifiziert die Tabellen 600 und 602 auf der Grundlage der MV pro Makro-Block für die Rückwärtsvorhersage (600) und die Vorwärtsvorhersage (602). Beispielsweise könnten sich die Bewegungsvektoren pro Makro-Block für die Rückwärtsvorhersage häufiger auf die Frame-Nummer 4 vom aktuellen Frame, der rekonstruiert wird, beziehen und einen hohen Binning-Zählwert (Bin-Zählwert 4) erzeugen, während sich die Bewegungsvektoren pro Makro-Block für die Vorwärtsvorhersage häufiger auf die Frame-Nummern 4 und 15 vom aktuellen Frame, der rekonstruiert wird, beziehen könnten und einen hohen Binning-Zählwert (Bin-Zählwert 3) erzeugen können.
  • Für jeden verarbeiteten Frame ordnet die MV-Binning-Einheit 516 unter Verwendung der MV pro Makro-Block Bins, immer beginnend mit dem reinitialisierten Bin-Zählwert von null für alle Positionen in den Bin-Tabellen, in Rückwärtsvorhersage(600)- und Vorwärtsvorhersage(602)-Tabellen ein.
  • In der Nähe des Anfangs der Szene kann das System, wenn es wenige Referenz-Frames mit Bin-Zählwerten gibt, anfänglich den nächsten Referenz-Frame zu dem Frame, der in der Videosequenz rekonstruiert wird, und in den L2-Cache geben. Dies kann für lediglich den zweiten Frame in einer Szene oder für mehr Frames geschehen.
  • Ansonsten kann der Prozess 400 das „Identifizieren der X am häufigsten verwendeten Referenz-Frames anhand Bin-Zählwerten in einer oder mehreren Referenz-Frame-Binning-Tabellen“ 414 aufweisen. Nach der Frame-Decodierung wird die Referenz-Frame-Verwendung analysiert, indem die Bins auf die am häufigsten verwendeten Frames durchsucht werden, wobei es sich um die Maximalwerte in den Bins handeln kann. Dies kann ein einziger Referenz-Frame für alle Bins bei allen Tabellen sein. Bei einem anderen Beispiel wird der am häufigsten verwendete Frame in jeder Tabelle (die vorhergehenden oder früheren Referenz-Frames in einer Tabelle 600, die zur Rückwärtsvorhersage gehört, und die nachfolgenden oder künftigen Referenz-Frames in einer anderen Tabelle 602, die zur Vorwärtsvorhersage gehört) beispielsweise für B-Frames ausgewählt. Ansonsten wird eine vorgegebene Anzahl von Referenz-Frames (beispielsweise 2 bis 4) ausgewählt und kann gleichmäßig auf die zwei oder mehr Tabellen verteilt werden oder kann ausgewählt werden, unabhängig davon, in welcher Tabelle sich die am häufigsten verwendeten Referenz-Frames befinden. Andererseits können P-Frames auf die vorhergehenden Referenz-Frame-Tabellen-Bins beschränkt werden.
  • Der Prozess 400 kann das „Geben eines oder mehrerer identifizierter Referenz-Frames in den L2-Cache, damit sie für die Vorhersagecodierung des aktuellen Frames auf der Grundlage eines Decodierer-Hinweises von der vorhergehenden Frame-Analyse verfügbar sind“ 416 aufweisen. Demgemäß werden die Bilddaten von dem einen oder den beiden Referenz-Frames, die als die am häufigsten verwendeten Referenz-Frames identifiziert wurden, in den L2-Cache gegeben. Für eine IBBP-Bildgruppen(GOP)-Sequenz kann der L2-Cache die am häufigsten verwendeten beiden Referenz-Frames aufweisen. Selbst wenn vier Referenz-Frames gleichermaßen verwendet werden, kann der L2-Cache lediglich Pixel von zwei Referenz-Frames speichern. Dies kann von der Szene abhängen.
  • Der Pixeldecodierer kann dann die Bewegungsvektoren anwenden und die Referenz-Frames im L2-Cache verwenden, um den aktuellen Frame auf der Grundlage eines Decodierer-Hinweises von der vorhergehenden Frame-Analyse zu rekonstruieren. Mit anderen Worten werden Referenz-Frames für einen vorhergehenden rekonstruierten Frame bestimmt, und diese identifizierten Frames werden dann verwendet, um den Bin-Zählwert zu modifizieren und die am häufigsten verwendeten Referenz-Frames in den Binning-Tabellen zu bestimmen. Dann werden die am häufigsten verwendeten Referenz-Frames in den L2-Cache gegeben, um sie bei der Rekonstruktion des aktuellen Frames in der Videosequenz zu verwenden.
  • Der Pixeldecodierer kann im L2-Cache nach den Referenz-Frames suchen, falls das Abrufen im L2-Cache jedoch zu einem Fehltreffer führt oder wenn es mehr Referenz-Frames für einen aktuellen Frame gibt als Referenz-Frames im L2-Cache, kann der Prozess 400 das „Identifizieren und Abrufen von Referenz-Frames aus einem oder mehreren anderen Speichern, wenn ein L2-Cache-Fehltreffer für die Codierung des aktuellen Frames auftritt“ 418 aufweisen. Demgemäß kann der Pixeldecodierer versuchen, Referenz-Frames aus dem DRAM oder einem anderen Speicher abzurufen.
  • Der Prozess 400 kann „Ende von Bilddaten?" 420 und insbesondere das Feststellen, ob es weitere zu rekonstruierende Bilddaten-Frames gibt, aufweisen. Falls dies der Fall ist, verzweigt der Prozess zur Operation 406, um den nächsten zu codierenden aktuellen Frame zu identifizieren. Falls dies nicht der Fall ist, endet der Prozess, und die decodierten Frames können im Speicher abgelegt oder für die Anzeige verwendet werden.
  • Falls die Bewegungsvektoren anhand der entropiedecodierten Daten verfügbar sind, beispielsweise wenn eine Frame-Ebenen-Entropiecodierung verwendet wird, können die Bewegungsvektoren anhand der Daten, bevor die Pixeldecodierung (oder Bewegungskompensation) auftritt, geparst werden, und die Bewegungsvektoren können verwendet werden, um Referenz-Frames für einen aktuellen Frame, der in Kürze zu rekonstruieren ist, zu bestimmen. In diesem Fall kann der Prozess 400 das „Identifizieren eines aktuellen zu codierenden Frames“ 422, einen Test zum Feststellen, ob der aktuelle Frame der „anfängliche Frame der Szene?“ ist 424, und, falls dies der Fall ist, das „Intra-Codieren des ersten Frames“ 426 aufweisen, was alles den Operationen 406, 408 und 410 des Prozesses 400 ähnelt, wenn die Bewegungsvektoren nach der Pixeldecodierung erhalten werden.
  • Hier kann der Prozess 400 dann jedoch das „Verwenden von MV, um zu identifizieren, welche Frames Referenz-Frames für den aktuellen Frame sind“ 428 aufweisen. Mit Bezug auf 7 als ein Beispiel, um die Erklärung dieses Abschnitts des Prozesses 400 zu erklären, sei bemerkt, dass ein System 700 dem System 500 (5) ähneln kann, wobei ähnliche Komponenten ähnlich nummeriert sind und keine getrennte Erklärung erfordern, abgesehen davon, dass in diesem Fall die MV-Binning-Einheit 716 aus den Bilddaten extrahierte Bewegungsvektoren empfängt, nachdem der MV&Header-Decodierer 710 die Bewegungskompensationsdaten decodiert hat, jedoch bevor der aktuelle Frame in Zusammenhang mit den Bewegungskompensationsdaten einschließlich der Bewegungsvektoren durch den Pixeldecodierer 712 rekonstruiert wird. Wie vorstehend erklärt wurde, geben die Bewegungsvektoren an, welche Frames Referenz-Frames für den aktuellen Frame sind, abgesehen davon, dass der aktuelle Frame hier noch zu rekonstruieren ist.
  • Anschließend kann der Prozess 400 das „Modifizieren des Binning-Zählwerts in der einen oder den mehreren Referenz-Frame-Binning-Tabellen abhängig von MV-identifizierten Referenz-Frames“ 430 aufweisen. Demgemäß wird der Zählwert in den Bins der Referenz-Frame-Tabellen 600 und 602 für jeden Bin in Zusammenhang mit einem Frame, der durch die Bewegungsvektoren für den aktuellen Frame, der zu rekonstruieren ist, als ein Referenz-Frame angegeben wird, um eins inkrementiert.
  • Der Prozess 400 kann das „Geben der X am häufigsten verwendeten Referenz-Frames in den L2-Cache, damit sie für die Vorhersagecodierung des aktuellen Frames verfügbar sind“ 432 aufweisen und, wie bereits vorstehend für ähnliche Operationen 414 und 416 erklärt abgesehen davon, dass hier der L2-Cache nun die am häufigsten verwendeten Referenz-Frames für den aktuellen Frame, der in Kürze zu rekonstruieren ist, an Stelle der Referenz-Frames für den vorhergehenden Frame, der bereits rekonstruiert wurde, aufweist.
  • Der Prozess 400 kann das „Identifizieren von Referenz-Frames aus einem oder mehreren anderen Speichern, wenn ein L2-Cache-Fehltreffer für die Codierung des aktuellen Frames auftritt“ 434 und „Ende der Bilddaten?“ 436 aufweisen, die beide bereits vorstehend mit ähnlichen Operationen 418 und 420 erklärt wurden. Beim vorliegenden Beispiel verzweigt der Prozess 400, falls die Videosequenz nicht abgeschlossen ist, zur Operation 422 zurück, um den nächsten aktuellen Frame, der zu rekonstruieren ist, zu identifizieren.
  • Die folgenden Ergebnisse werden durch die Verwendung der hier beschriebenen adaptiven Referenz-Frame-Caching-Prozesse erhalten. Eine Durchschnittsverteilung codierter Blöcke wird folgendermaßen gefunden: Tabelle 1
    I-Frame P-Frame B-Frame
    Intra 100 % 15 % 15 %
    Übersprungen 0% 15% 15%
    P 1-Ref. 0% 70% 30%
    Bi oder P 2-Ref. 0% 0% 40%
  • Tabelle 1 zeigt das typische Vorhersageverfahren, das für die Rekonstruktion verwendet wird, und die Referenz-Frame-Verteilung nach dem Frame-Typ. Demgemäß werden beispielsweise 15 % der P-Frames und B-Frames intra-codiert, werden 15 % der Frames ganz übersprungen, während 70 % der P-Frames unter Verwendung eines einzigen Referenz-Frames rekonstruiert werden, während nur 30 % der B-Frames mit einem einzigen Referenz-Frame rekonstruiert werden und 40 % der B-Frames unter Verwendung zweier Referenz-Frames rekonstruiert werden. Mit der bekannten Rekonstruktionsverteilung ist es möglich, die Verwendung der Referenz-Frame-Tabellen zu bestimmen. Insbesondere ist die durchschnittliche Verteilung der Auswahl von Referenz-Frames anhand der Tabelle 600 oder 602 (hier auch als Liste 0 und 1 bezeichnet) oder anhand beider Tabellen (Bi) die Folgende: Tabelle 2
    Liste 0 57 %
    Liste 1 10 %
    Bi 33 %
    Insgesamt 100 %
    wobei jede Liste 0 und 116 Bins aufweist und die Liste 0 16 aufeinander folgende Frames vor dem aktuellen Frame, der rekonstruiert wird (vorhergehend oder früher), aufweist und die Liste 1 16 aufeinander folgende Frames nach dem aktuellen Frame (nachfolgend oder künftig) und entlang der Videosequenz in der Anzeigereihenfolge aufweist. Mit diesen Daten war es möglich, anhand gemessener Daten festzustellen, dass der durchschnittliche Streifen-Cache(L2)-Trefferprozentsatz Folgender ist: Tabelle 3
    Decodierer-Hinweis Liste 0/1 Bester 1-Ref-Hinweis Liste 0/1 Bester 2-Ref-Hinweis
    TREFFER-Prozentsatz 74% 95 %
    wobei der Streifen-Cache eine Suche im Cache unter Verwendung eines Fensters verwendet, das über die gesamte Zeile eines Frames passt und eine Anzahl von Zeilen in der Art von 16 oder mehr Zeilen aufweist und der Streifen oder das Fenster den Frame abwärts durchquert, um im Frame beispielsweise von oben nach unten verschiedene Zeilen zu suchen.
  • Andere Vorteile des Erhaltens dieses verhältnismäßig hohen L2-Cache-Treffers unter Verwendung von Decodierer-Hinweisen, um die korrekten Referenz-Frames aus den Listen 0 und 1 zu speichern, werden nachfolgend angegeben.
  • Erstens sind Decodiererbandbreiteneinsparungen für eine 4k60-Bildschirmgröße Folgende: Tabelle 4
    Referenz-Frame-Hinweisverwendung Erwartete resultierende Bandbreite (als Referenz-Frame-Abrufe aus DDR DRAM in GB/s gemessen)
    Herkömmliches Verfahren ohne Hinweise (kein L2-Cache (0 Referenzhinweise)) 1,38 GB/s
    L2-Cache, wobei nur 1-Referenz-Decodierer-Hinweise verwendet werden 0,98 GB/s
    L2-Cache, wobei nur 2-Referenz- 0,88 GB/s
    Decodierer-Hinweise verwendet werden
  • Demgemäß sind die erwarteten Gesamtdecodierbandbreiteneinsparungen eine Bandbreitenverringerung um 29 % bei Nur-L2-Caching 1-Ref. und eine Bandbreitenverringerung um 36 % bei L2-Caching 2-Ref. Es sei bemerkt, dass der herkömmliche für den Vergleich verwendete 0-Ref-Hinweis aus den besten Codec-Daten für Medien-IP mit einem internen L1-Cache besteht.
  • Zusammenfassend sei bemerkt, dass die vorstehenden Tabellen den Vorteil der vorgeschlagenen Lösung mit Decodierer-Hinweisen verglichen mit der Lösung ohne Decodierer-Hinweise hervorheben. Die vorgeschlagene Lösung bietet eine reduzierte Bandbreite für DDR DRAM (bis zu etwa 36 % weniger Bandbreite).
  • In Bezug auf die sich ergebende Verringerung der L2-Cache-Größe für eine 4kp60-HEVC 32 x 32-LCU mit +/- 48 Pixeln Suchbereich codierten Videoinhalts ist Folgendes ein Beispiel für den erforderlichen Speicher, um eine ausreichende Cache-Trefferrate aufrechtzuerhalten: Tabelle 5
    4k60 ohne Decodierer-Hinweis mit Decodierer-Hinweis
    L2- (48*2 + 32)*4k*1,5*4 = 3 (48*2+32)*4k*1,5*1 = 0,75 MB
    Cache- MB (1 im L2-Cache gespeicherter
    Größe (4 im L2-Cache gespeicherte Referenz-Frames) Referenz-Frame)
    (48*2+32)*4k*1,5*2 = 1,5 MB
    (2 im L2-Cache gespeicherte
    Referenz-Frames)
    woraus sich eine Verringerung der erforderlichen L2-Cache-Größe um 50 % oder sogar 75 % ergibt.
  • Zusätzlich zu DDR-DRAM-Bandbreiteneinsparungen und der Größenverringerung des L2-Caches führt der Decodierer-Hinweis-Lösungsansatz zu einer höheren Latenztoleranz, weil ein erheblich größerer Anteil der Anforderungen vom Videodecodierer-IP (mit L1) infolge eines hohen Streifen-Cache-Treffers durch L2 erfüllt wird. Mit anderen Worten können, weil die L2-Cache-Treffer erheblich häufiger sind, was infolge von weniger DRAM-Abrufen zu sehr erheblichen Zeiteinsparungen führt, die Zeiteinsparungen für andere Abrufe von Referenz-Frames aus dem DDR DRAM oder für andere Aufgaben verwendet werden. Hierdurch wird daher der Latenzeinfluss des Zugriffs auf den DDR erheblich verringert.
  • Mit Bezug auf 8 sei nun bemerkt, dass das System 900 für einen als Beispiel dienenden adaptiven Referenz-Frame-Caching-Prozess 800 zur Videocodierung, wie im Betrieb dargestellt ist, verwendet werden kann und gemäß zumindest einigen Implementationen der vorliegenden Offenbarung eingerichtet ist. Bei der erläuterten Implementation kann der Prozess 800 eine oder mehrere Operationen, Funktionen oder Aktionen aufweisen, wie durch eine oder mehrere der geradzahlig nummerierten Aktionen 802 bis 822 dargestellt ist, und alternativ oder in einer Kombination verwendet werden. Anhand eines nicht einschränkenden Beispiels wird der Prozess 800 hier mit Bezug auf Operationen beschrieben, die in Bezug auf beliebige der hier beschriebenen Implementationen erörtert werden.
  • Bei der erläuterten Implementation kann das System 900 eine Verarbeitungseinheit 902 mit Logikeinheiten oder Logikschaltungen oder -modulen 904, dergleichen und/oder Kombinationen davon aufweisen. Bei einem Beispiel können die Logikschaltungen oder -module 904 den Videodecodierer 200 und/oder den Videocodierer 100 beide mit Inter-Vorhersagefunktionalität aufweisen. Auch kann das System 900 eine Zentralverarbeitungseinheit oder Graphikverarbeitungseinheit aufweisen, wie hier mit einem Graphikdatenkompressions- und/oder -dekompressions(Codec)-Modul 926 dargestellt ist. Hier ist relevant, dass das Graphikmodul 926 eine MV-Binning-Einheit 935 mit einem Hinweismodul 936 und eine Referenz-Frame-Binning-Einheit 938 aufweisen kann. Eine oder mehrere Referenz-Frame-Binning-Listen oder -Tabellen 912 können an Bord der Graphikverarbeitungseinheit 908 gehalten werden oder anderswo im System gespeichert werden. Das System kann auch einen anderen Speicher 910 in der Art eines DRAMs oder andere Typen von RAM oder eines flüchtigen Speichers verwenden, um zumindest einen Graphikpuffer 914 zu speichern, der Referenz-Frames 916, Bewegungsvektordaten 918 und andere Graphikdaten 920 einschließlich Koeffizienten und/oder andere Overhead-Daten hält. Die Graphikeinheit 908 kann auch einen Cache-Manager 928 und zumindest L1- und L2-Cache-Speicherstellen 932 und 934 aufweisen, wobei der L2-Cache durch die Verwendung der MV-Binning-Einheit 935 hochgeladen werden kann. Wenngleich das System 900, wie in 9 dargestellt ist, einen bestimmten Satz von Operationen oder Aktionen in Zusammenhang mit bestimmten Modulen oder Einheiten aufweisen kann, können diese Operationen oder Aktionen anderen Modulen als dem bestimmten Modul oder der bestimmten Einheit, wie hier erläutert, zugeordnet sein.
  • Der Prozess 800 kann das „Empfangen von Bilddaten, welche Referenz-Frames und mv-Daten umfassen“ 802 und das „Identifizieren des aktuellen zu codierenden Frames“ 804 aufweisen, wie vorstehend bereits anhand Prozess 400 erklärt wurde.
  • Der Prozess 800 kann das „Verwenden von MV, um Referenz-Frames für den aktuellen Frame zu identifizieren“ 806 aufweisen, wobei die Entropiecodierung auf einer Frame-Ebene ausgeführt wird oder auf andere Weise zugänglich ist und die Bewegungsvektoren vor der Pixelcodierung (oder mit anderen Worten der Bewegungskompensation) anhand des entropiedecodierten Bitstreams geparst werden (wenn dies am Decodierer statt an der Decodierschleife des Codierers geschieht). Alternativ wird die Pixelcodierung, wenn die Entropiecodierung auf einer Codec-Ebene ausgeführt wird, zuerst an einem aktuellen Frame ausgeführt, und es werden dann die Bewegungsvektoren erhalten, die tatsächlich für das Rekonstruieren des aktuellen Frames verwendet wurden.
  • Der Prozess 800 kann das „Modifizieren des Binning-Zählwerts in der einen oder den mehreren Referenz-Frame-Binning-Tabellen abhängig von der tatsächlichen Verwendung eines oder mehrerer Frames als Referenz-Frames“ 808 aufweisen. Insbesondere werden, wenn die Bewegungsvektoren nach der Pixelcodierung erhalten werden, die Zählwerte in den Bins der Referenz-Frame-Binning-Tabellen, wie vorstehend beschrieben, abhängig davon modifiziert, welche Referenz-Frames für das Rekonstruieren des aktuellen (oder nun tatsächlich des vorhergehenden) Frames verwendet wurden. Dies schließt durch die Bewegungsvektoren angegebene Referenz-Frames ein, unabhängig davon, wo diese Referenz-Frames gespeichert wurden und von wo sie abgerufen wurden. Die Referenz-Frames werden demgemäß unabhängig davon gezählt, ob der Referenz-Frame im L2-Cache, im RAM oder im anderen Speicher gefunden wurde.
  • Alternativ kann der Prozess 800 das „Modifizieren des Binning-Zählwerts in der einen oder den mehreren Referenz-Frame-Binning-Tabellen abhängig von MV-identifizierten Referenz-Frames“ 810 aufweisen. Demgemäß geben für Bewegungsvektoren, die vor der Pixelcodierung erhalten werden, die Bewegungsvektoren die Referenz-Frames an, die für die Rekonstruktion des aktuellen Frames zu verwenden sind. In diesem Fall werden die Zählwerte in den Bins der einen oder der mehreren Referenz-Frame-Binning-Tabellen wie vorstehend beschrieben und entsprechend den angegebenen Referenz-Frames modifiziert. Wiederum ist es unerheblich, wo die Referenz-Frames gespeichert wurden, um sie in den Zählwert in den Referenz-Frame-Binning-Tabellen aufzunehmen, wobei hier nur wichtig ist, dass die Referenz-Frames für die Verwendung durch die Bewegungsvektoren angegeben wurden.
  • Der Prozess 800 kann das „Identifizieren der X am häufigsten verwendeten Referenz-Frames anhand Bin-Zählwerten in einer oder mehreren Referenz-Frame-Binning-Tabellen“ 812 aufweisen. Demgemäß wählt diese Operation bei einer als Beispiel dienenden Form unabhängig davon, ob die Bewegungsvektoren die tatsächlichen Referenz-Frames identifizieren, die noch für das Rekonstruieren eines aktuellen Frames zu verwenden sind, noch die am häufigsten verwendeten Referenz-Frames aus der einen oder den mehreren Binning-Tabellen aus, die in den L2-Cache zu geben sind. Wie vorstehend erwähnt wurde, dient dies dazu, die langfristige L2-Cache-Treffergenauigkeit und -effizienz während einer Videosequenz oder -szene besser zu gewährleisten, selbst wenn dabei die L2-Cache-Treffergenauigkeit für eine Anzahl einzelner Frames in der Videosequenz geopfert werden kann.
  • Der Prozess 800 kann das „Geben des einen oder der mehreren identifizierten Referenz-Frames in den L2-Cache, damit sie für die Vorhersagecodierung des aktuellen Frames verfügbar sind“ 814 aufweisen. Dementsprechend werden bei einer Form der eine, die zwei oder eine andere spezifizierte Anzahl X der am häufigsten verwendeten Referenz-Frames in den L2-Cache gegeben.
  • Der Prozess 800 kann das „Identifizieren und Verwenden von Referenz-Frames aus einem oder mehreren anderen Speichern, wenn ein L2-Cache-Fehltreffer geschieht, für die Codierung des aktuellen Frames“ 816 aufweisen. Diese Operation beinhaltet die Ausführung der Rekonstruktionscodierung eines aktuellen Frames durch die Bewegungskompensationseinheit (oder den Pixeldecodierer), wobei dies das Abrufen der Referenz-Frames aus dem L2-Cache, wenn dies erforderlich ist, wobei diese durch die Bewegungsvektoren identifiziert werden, einschließt. Falls ein Fehltreffer auftritt, sucht das System dann an anderer Stelle nach den Referenz-Frames, beispielsweise im DDR DRAM oder in einem anderen Speicher.
  • Der Prozess 800 kann dann das „Bereitstellen des decodierten Frames“ 818 aufweisen, wenn die Decodierung des aktuellen Frames abgeschlossen ist. Der Prozess 800 kann dann das Verzweigen 820 zurück zu Operation 804, um den nächsten aktuellen Frame zu rekonstruieren, aufweisen. Andernfalls kann der Prozess 800, falls das Ende des Bilds erreicht wird, „Beenden oder Erhalten weiterer Bilddaten“ 822 aufweisen.
  • Wenngleich bei der Implementation des als Beispiel dienenden Prozesses 300, 400 und/oder 800 alle Operationen in der dargestellten Reihenfolge ausgeführt werden können, ist die vorliegende Offenbarung nicht in dieser Hinsicht beschränkt, und bei verschiedenen Beispielen kann die Implementation beliebiger der hier angegebenen Prozesse die Ausführung nur einer Untermenge der dargestellten Operationen und/oder in einer anderen Reihenfolge als dargestellt aufweisen.
  • Bei Implementationen können hier beschriebene Merkmale ansprechend auf Befehle, die von einem oder mehreren Computerprogrammprodukten bereitgestellt werden, ausgeführt werden. Solche Programmprodukte können signaltragende Medien aufweisen, die Befehle bereitstellen, welche, wenn sie beispielsweise durch einen Prozessor ausgeführt werden, die hier beschriebene Funktionalität bereitstellen können. Die Computerprogrammprodukte können in einer beliebigen Form eines oder mehrerer maschinenlesbarer Medien bereitgestellt werden. Demgemäß kann beispielsweise ein Prozessor, der einen oder mehrere Prozessorkerne aufweist, eines oder mehrere hier beschriebene Merkmale ansprechend auf Programmcode und/oder Befehle oder Befehlssätze, die dem Prozessor durch ein oder mehrere maschinenlesbare Medien zugeführt werden, ausführen. Im Allgemeinen kann ein maschinenlesbares Medium Software in Form von Programmcode und/oder Befehlen oder Befehlssätzen zuführen, welche beliebige der hier beschriebenen Vorrichtungen und/oder Systeme veranlassen können, zumindest Teile der hier beschriebenen Merkmale zu implementieren. Wie zuvor erwähnt wurde, kann bei einer anderen Form ein nichtflüchtiger Artikel in der Art eines nichtflüchtigen computerlesbaren Mediums mit beliebigen der vorstehend erwähnten Beispiele oder anderen Beispielen, abgesehen davon, dass es kein flüchtiges Signal an sich aufweist, verwendet werden. Er schließt diese Elemente abgesehen von einem Signal an sich ein, welche Daten vorübergehend in einer „flüchtigen“ Weise in der Art eines DRAMs und dergleichen halten können.
  • Wie in einer hier beschriebenen Implementation verwendet, bezieht sich der Begriff „Modul“ auf eine Kombination von Softwarelogik, Firmwarelogik und/oder Hardwarelogik, die dafür ausgelegt ist, die hier beschriebene Funktionalität bereitzustellen. Die Software kann als ein Softwarepaket, Code und/oder ein Befehlssatz oder Befehle verwirklicht werden, und „Hardware“, wie in einer hier beschriebenen Implementation verwendet, kann beispielsweise einzeln oder in einer Kombination festverdrahtete Schaltungen, programmierbare Schaltungen, Zustandsmaschinenschaltungen und/oder Firmware, welche von programmierbaren Schaltungen ausgeführte Befehle speichert, einschließen. Die Module können gemeinsam oder einzeln als Schaltungen verwirklicht werden, die Teil eines größeren Systems, beispielsweise einer integrierten Schaltung (IC), eines Systems auf einem Chip (SoC) usw. sind. Beispielsweise kann ein Modul in Logikschaltungen für die Implementation durch Software, Firmware oder Hardware der hier erörterten Codiersysteme verwirklicht werden.
  • Wie in einer hier beschriebenen Implementation verwendet, bezieht sich der Begriff „Logikeinheit“ auf eine Kombination von Firmwarelogik und/oder Hardwarelogik, die dafür ausgelegt ist, die hier beschriebene Funktionalität bereitzustellen. Die Logikeinheiten können gemeinsam oder einzeln als Schaltungen verwirklicht werden, die Teil eines größeren Systems, beispielsweise einer integrierten Schaltung (IC), eines Systems auf einem Chip (SoC) usw. sind. Beispielsweise kann eine Logikeinheit in Logikschaltungen für die Implementation von Firmware oder Hardware der hier erörterten Codiersysteme verwirklicht werden. Durchschnittsfachleute auf dem Gebiet werden verstehen, dass durch Hardware und/oder Firmware ausgeführte Operationen alternativ durch Software implementiert werden können, die als ein Softwarepaket, Code und/oder Befehlssatz oder Befehle verwirklicht werden kann, und sie werden auch verstehen, dass die Logikeinheit auch einen Teil der Software verwenden kann, um ihre Funktionalität zu implementieren.
  • Wie in einer hier beschriebenen Implementation verwendet, kann sich der Begriff „Komponente“ auf ein Modul oder eine Logikeinheit, wie diese Begriffe vorstehend beschrieben wurden, beziehen. Dementsprechend kann sich der Begriff „Komponente“ auf eine Kombination von Softwarelogik, Firmwarelogik und/oder Hardwarelogik, die dafür ausgelegt ist, die hier beschriebene Funktionalität bereitzustellen, beziehen. Beispielsweise werden Durchschnittsfachleute auf dem Gebiet verstehen, dass durch Hardware und/oder Firmware ausgeführte Operationen alternativ durch ein Softwaremodul implementiert werden können, das als ein Softwarepaket, Code und/oder Befehlssatz verwirklicht werden kann, und sie werden auch verstehen, dass die Logikeinheit auch einen Teil der Software verwenden kann, um ihre Funktionalität zu implementieren.
  • Mit Bezug auf 9 sei bemerkt, dass ein als Beispiel dienendes Videocodiersystem 900 zum adaptiven Referenz-Frame-Caching gemäß zumindest einigen Implementationen der vorliegenden Offenbarung eingerichtet werden kann. Bei der erläuterten Implementation kann das System 900 eine oder mehrere Zentralverarbeitungseinheiten oder Prozessoren 906, eine oder mehrere Bildaufnahmevorrichtungen 901 zum Erfassen von Bildern, eine Antenne 903, eine Anzeigevorrichtung 950 und einen oder mehrere Speicher 910 aufweisen. Die Zentralverarbeitungseinheiten 906, der Speicher 910 und/oder die Anzeigevorrichtung 950 können in der Lage sein, beispielsweise über einen Bus, Drähte oder einen anderen Zugang miteinander zu kommunizieren. Bei verschiedenen Implementationen kann die Anzeigevorrichtung 950 in das System 900 integriert sein oder getrennt vom System 900 implementiert sein.
  • Wie in 9 dargestellt und vorstehend erörtert wurde, kann die Verarbeitungseinheit 902 Logikschaltungen 904 mit einem Codierer 100 und/oder einem Decodierer 200 aufweisen. Der Videocodierer 100 kann eine Decodierschleife mit einem Pixeldecodierer oder einer Bewegungskompensationseinheit aufweisen, und der Decodierer 200 kann einen Pixeldecodierer oder eine Bewegungskompensationseinheit sowie andere Komponenten, wie vorstehend beschrieben, aufweisen. Ferner kann entweder die CPU 906 oder eine Graphikverarbeitungseinheit 908 ein Graphikdatenkompressions- und/oder -dekompressions(Codec)-Modul 926 aufweisen. Dieses Modul 926 kann eine MV-Binning-Einheit 935 mit einer Referenz-Frame-Binning-Einheit 938 und ein Hinweismodul 936 aufweisen. Das Graphikmodul 935 kann auch eine oder mehrere Referenz-Frame-Binning-Listen 912 speichern. Die Graphikverarbeitungseinheit, die CPU oder eine andere Einheit kann auch einen Cache-Manager 928, einen L1-Cache 930, einen L2-Cache 932 und andere Caches L# 934 aufweisen. Diese Komponenten stellen viele der hier beschriebenen und mit den hier beschriebenen Prozessen erklärten Funktionen bereit.
  • Wie verständlich sein wird, können die in 9 dargestellten Module eine Vielzahl von Software- und/oder Hardwaremodulen und/oder Module, die durch Software oder Hardware oder Kombinationen davon implementiert werden können, aufweisen. Beispielsweise können die Module über Verarbeitungseinheiten 902 als Software implementiert sein, oder die Module können über einen zweckgebundenen Hardwareabschnitt auf einer oder mehreren CPU 906 oder GPU 908 implementiert sein. Ferner können die Speicher 910 ein geteilter Speicher beispielsweise für Verarbeitungseinheiten 902 sein. Der Graphikpuffer 914 kann Referenz-Frames 916, Bewegungsvektordaten 918 und andere Graphikdaten 920 aufweisen, die beispielsweise auf einem DDR DRAM fern vom L2-Cache auf den Prozessoren 906 oder 908 gespeichert sind oder an anderer Stelle gespeichert sein können. Auch kann das System 900 auf eine Vielzahl von Arten implementiert werden. Beispielsweise kann das System 900 (mit Ausnahme der Anzeigevorrichtung 950) als ein einzelner Chip oder eine einzelne Vorrichtung mit einem Graphikprozessor, einer Vierkern-Zentralverarbeitungseinheit und/oder einem Speichersteuereinrichtungs-Ein-/Ausgabe(E/A)-Modul implementiert werden. Bei anderen Beispielen kann das System 900 (wiederum mit Ausnahme der Anzeigevorrichtung 950) als ein Chipsatz implementiert werden.
  • Der eine oder die mehreren Prozessoren 906 können eine geeignete Implementation aufweisen, einschließlich beispielsweise eines oder mehrerer Mikroprozessoren, Mehrkernprozessoren, anwendungsspezifischer integrierter Schaltungen, eines oder mehrerer Chips, Chipsätze, programmierbarer Logikvorrichtungen, Graphikkarten, integrierter Graphik, einer oder mehrerer Graphikverarbeitungseinheiten für allgemeine Zwecke oder dergleichen. Zusätzlich kann der Speicher 910 ein beliebiger Speichertyp in der Art eines flüchtigen Speichers (beispielsweise ein statischer Direktzugriffsspeicher (SRAM), ein dynamischer Direktzugriffsspeicher (DRAM) usw.) oder eines nichtflüchtigen Speichers (beispielsweise Flash-Speicher usw.) und dergleichen sein. Bei einem nicht einschränkenden Beispiel kann der Speicher 910 auch durch einen Cache-Speicher zusätzlich zum L2-Cache 932 implementiert sein. Bei verschiedenen Beispielen kann das System 900 als ein Chipsatz oder als ein System auf einem Chip implementiert sein.
  • Mit Bezug auf 10 sei bemerkt, dass ein als Beispiel dienendes System 1000 gemäß der vorliegenden Offenbarung und verschiedenen Implementationen ein Mediensystem sein kann, wenngleich das System 1000 nicht auf diesen Zusammenhang beschränkt ist. Beispielsweise kann das System 1000 in einen Personalcomputer (PC), Laptopcomputer, Ultralaptopcomputer, ein Tablet, ein Touchpad, einen tragbaren Computer, einen handgehaltenen Computer, einen Palmtopcomputer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus einem Mobiltelefon und einem PDA, ein Fernsehgerät, eine Smart-Vorrichtung (beispielsweise ein Smartphone, ein Smarttablet oder ein Smart-Fernsehgerät), eine mobile Internetvorrichtung (MID), eine Nachrichtenaustauschvorrichtung, eine Datenkommunikationsvorrichtung und dergleichen aufgenommen sein.
  • Bei verschiedenen Implementationen kann das System 1000 eine Plattform 1002 aufweisen, die kommunikativ mit einer Anzeige 1020 gekoppelt ist. Die Plattform 1002 kann Inhalt von einer Inhaltsvorrichtung in der Art einer oder mehrerer Inhaltsdienstvorrichtungen 1030 oder Inhaltsliefervorrichtungen 1040 oder anderer ähnlicher Inhaltsquellen empfangen. Eine Navigationssteuereinrichtung 1050, die ein oder mehrere Navigationsmerkmale aufweist, kann verwendet werden, um beispielsweise mit der Plattform 1002 und/oder der Anzeige 1020 zu interagieren. Jede dieser Komponenten wird nachstehend in weiteren Einzelheiten beschrieben.
  • Bei verschiedenen Implementationen kann die Plattform 1002 eine beliebige Kombination eines Chipsatzes 1005, eines Prozessors 1014, eines Speichers 1012, einer Speichervorrichtung 1011, eines Graphikuntersystems 1015, von Anwendungen 1016 und/oder eines Radios 1018 sowie einer oder mehrerer Antennen 1010 aufweisen. Der Chipsatz 1005 kann eine Kommunikation zwischen dem Prozessor 1014, dem Speicher 1012, der Speichervorrichtung 1011, dem Graphikuntersystem 1015, Anwendungen 1016 und/oder dem Radio 1018 bereitstellen. Beispielsweise kann der Chipsatz 1005 einen Speichervorrichtungsadapter (nicht dargestellt) aufweisen, der eine Kommunikation mit der Speichervorrichtung 1011 bereitstellen kann.
  • Der Prozessor 1014 kann als Computerprozessor mit einem komplexen Befehlssatz (CISC) oder Computerprozessor mit einem reduzierten Befehlssatz (RISC), mit dem x86-Befehlssatz kompatible Prozessoren, Mehrkernprozessoren oder als irgendein anderer Mikroprozessor oder irgendeine andere Zentralverarbeitungseinheit (CPU) implementiert sein. Bei verschiedenen Implementationen kann der Prozessor 1014 aus einem oder mehreren Zweikernprozessoren, Zweikern-Mobilprozessoren usw. bestehen.
  • Der Speicher 1012 kann als eine flüchtige Speichervorrichtung in der Art eines Direktzugriffsspeichers (RAM), eines dynamischen Direktzugriffsspeichers (DRAM) oder eines statischen RAM (SRAM) implementiert sein, ist jedoch nicht auf diese beschränkt.
  • Die Speichervorrichtung 1011 kann als eine nichtflüchtige Speichervorrichtung in der Art eines Magnetplattenlaufwerks, eines optischen Plattenlaufwerks, eines Bandlaufwerks, einer internen Speichervorrichtung, einer angebrachten Speichervorrichtung, eines Flash-Speichers, eines batteriegestützten SDRAM (synchronen DRAM) und/oder einer über ein Netz zugänglichen Speichervorrichtung implementiert sein, ist jedoch nicht darauf beschränkt. Bei verschiedenen Implementationen kann die Speichervorrichtung 1014 eine Technologie zum Erhöhen der Speicherleistungsfähigkeit mit verbessertem Schutz für wertvolle digitale Medien aufweisen, wenn beispielsweise mehrere Festplattenlaufwerke aufgenommen sind.
  • Das Graphikuntersystem 1015 kann eine Verarbeitung von Bildern in der Art stehender Bilder oder von Video für die Anzeige ausführen. Das Graphikuntersystem 1015 kann beispielsweise eine Graphikverarbeitungseinheit (GPU) oder eine visuelle Verarbeitungseinheit (VPU) sein. Eine analoge oder digitale Schnittstelle kann verwendet werden, um das Graphikuntersystem 1015 und die Anzeige 1020 kommunikativ zu koppeln. Beispielsweise kann die Schnittstelle eine Multimediaschnittstelle hoher Definition, ein Displayport, eine drahtlose HDMI-Schnittstelle sein und/oder durch drahtlose HD-kompatible Techniken gegeben sein. Das Graphikuntersystem 1015 kann in den Prozessor 1014 oder den Chipsatz 1005 integriert sein. Bei einigen Implementationen kann das Graphikuntersystem 1015 eine autonome Karte sein, die mit dem Chipsatz 1005 kommunikativ gekoppelt ist.
  • Die hier beschriebenen Graphik- und/oder Videoverarbeitungstechniken können in verschiedenen Hardwarearchitekturen implementiert werden. Beispielsweise kann Graphik- und/oder Videofunktionalität in einen Chipsatz integriert werden. Alternativ kann ein diskreter Graphik- und/oder Videoprozessor verwendet werden. Bei einer anderen Implementation können die Graphik- und/oder Videofunktionen durch einen Prozessor für allgemeine Zwecke, einschließlich eines Mehrkernprozessors, bereitgestellt sein. Bei anderen Implementationen können die Funktionen in einer Endkundenelektronikvorrichtung implementiert sein.
  • Das Radio 1018 kann ein oder mehrere Radios einschließen, die in der Lage sind, Signale unter Verwendung verschiedener geeigneter Drahtloskommunikationstechniken zu senden und zu empfangen. Solche Techniken können Kommunikationen über ein oder mehrere Drahtlosnetze einschließen. Als Beispiel dienende Drahtlosnetze umfassen (sind jedoch nicht darauf beschränkt) drahtlose lokale Netze (WLAN), drahtlose persönliche Netze (WPAN), drahtlose Großstadtnetze (WMAN), Mobilfunknetze und Satellitennetze. Bei der Kommunikation über solche Netze kann das Radio 1018 nach einem oder mehreren anwendbaren Standards in einer beliebigen Version arbeiten.
  • Bei verschiedenen Implementationen kann die Anzeige 1020 einen beliebigen Fernsehbildschirm oder eine beliebige Fernsehanzeige umfassen. Die Anzeige 1020 kann beispielsweise einen Computeranzeigebildschirm, eine Berührungsbildschirmanzeige, einen Videobildschirm, eine fernsehartige Vorrichtung und/oder ein Fernsehgerät umfassen. Die Anzeige 1020 kann digital und/oder analog sein. Bei verschiedenen Implementationen kann die Anzeige 1020 eine holographische Anzeige sein. Auch kann die Anzeige 1020 eine transparente Oberfläche sein, die eine visuelle Projektion empfangen kann. Solche Projektionen können verschiedene Informationsformen, Bilder und/oder Objekte übermitteln. Beispielsweise können diese Projektionen eine sichtbare Überlagerung für eine mobile Erweiterte-Realität(MAR)-Anwendung sein. Unter der Kontrolle einer oder mehrerer Softwareanwendungen 1016 kann die Plattform 1002 eine Benutzerschnittstelle 1022 auf der Anzeige 1020 anzeigen.
  • Bei verschiedenen Implementationen können eine oder mehrere Inhaltsdienstvorrichtungen 1030 durch einen nationalen, internationalen und/oder unabhängigen Dienst, der demgemäß beispielsweise über das Internet für die Plattform 1002 zugänglich ist, gehostet sein. Die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 1030 kann (können) mit der Plattform 1002 und/oder der Anzeige 1020 gekoppelt sein. Die Plattform 1002 und/oder die Inhaltsdienstvorrichtung (Inhaltsdienstvorrichtungen) 1030 können mit einem Netz 1060 gekoppelt sein, um Medieninformatioinen zum Netz 1060 und von diesem zu übermitteln (beispielsweise zu senden und/oder zu empfangen). Die eine oder die mehreren Inhaltsliefervorrichtungen 1040 können auch mit der Plattform 1002 und/oder der Anzeige 1020 gekoppelt sein.
  • Bei verschiedenen Implementationen können die eine oder die mehreren Inhaltsdienstvorrichtungen 1030 einen Kabelfernsehkasten, einen Personalcomputer, ein Netz, ein Telefon, internetfähige Vorrichtungen oder ein Gerät, das in der Lage ist, digitale Informationen und/oder digitalen Inhalt auszuliefern, und eine beliebige andere ähnliche Vorrichtung, die in der Lage ist, Inhalt zwischen Inhaltsanbietern und der Plattform 1002 und der Anzeige 1020 über das Netz 1060 oder direkt unidirektional oder bidirektional zu übermitteln, umfassen. Es sei bemerkt, dass der Inhalt unidirektional und/oder bidirektional zu einer der Komponenten im System 1000 und einem Inhaltsanbieter und von diesen über das Netz 1060 übermittelt werden kann. Beispiele von Inhalt können beliebige Medieninformationen einschließen, einschließlich beispielsweise Video-, Musik-, medizinischer und Spielinformationen usw.
  • Die eine oder die mehreren Inhaltsdienstvorrichtungen 1030 können Inhalt in der Art eines Kabelfernsehprogramms, einschließlich Medieninformationen, digitaler Informationen und/oder anderen Inhalt, empfangen. Beispiele von Inhaltsanbietern können beliebige Kabel- oder Satellitenfernseh- oder Radio- oder Internetinhaltsanbieter einschließen. Die bereitgestellten Beispiele sollen Implementationen gemäß der vorliegenden Offenbarung in keiner Weise einschränken.
  • Bei verschiedenen Implementationen kann die Plattform 1002 Steuersignale von der Navigationssteuereinrichtung 1050 mit einem oder mehreren Navigationsmerkmalen empfangen. Die Navigationsmerkmale der Steuereinrichtung 1050 können beispielsweise verwendet werden, um mit der Benutzerschnittstelle 1022 zu interagieren. Bei Implementationen kann die Navigationssteuereinrichtung 1050 eine Zeigevorrichtung sein, die eine Computerhardwarekomponente (insbesondere eine Human-Interface-Vorrichtung) sein kann, die es einem Benutzer ermöglicht, räumliche (beispielsweise kontinuierliche und mehrdimensionale) Daten in einen Computer einzugeben. Viele Systeme, wie graphische Benutzerschnittstellen (GUI) und Fernsehgeräte und Bildschirme, ermöglichen es dem Benutzer, den Computer oder das Fernsehgerät unter Verwendung physikalischer Gesten zu steuern und ihm dadurch Daten bereitzustellen.
  • Bewegungen der Navigationsmerkmale der Steuereinrichtung 1050 können auf einer Anzeige (beispielsweise der Anzeige 1020) durch Bewegungen eines Zeigers, eines Cursors, eines Fokusrings oder anderer Sichtindikatoren, die auf der Anzeige angezeigt werden, repliziert werden. Beispielsweise können, durch Softwareanwendungen 1016 gesteuert, die Navigationsmerkmale, die sich auf der Navigationssteuereinrichtung 1050 befinden, auf virtuelle Navigationsmerkmale abgebildet werden, die beispielsweise auf der Benutzerschnittstelle 1022 angezeigt werden. Bei Implementationen kann die Steuereinrichtung 1050 keine getrennte Komponente sein, sondern in die Plattform 1002 und/oder die Anzeige 1020 integriert sein. Die vorliegende Offenbarung ist jedoch nicht auf die Elemente oder auf den Zusammenhang, die hier dargestellt oder beschrieben sind, beschränkt.
  • Bei verschiedenen Implementationen können Treiber (nicht dargestellt) eine Technologie aufweisen, um es Benutzern zu ermöglichen, die Plattform 1002 beispielsweise in der Art eines Fernsehgeräts mit der Berührung einer Taste nach dem anfänglichen Hochfahren, sofern dies ermöglicht es, sofort ein- und auszuschalten. Eine Programmlogik kann es der Plattform 1002 ermöglichen, Inhalt zu Medienadaptern oder einer oder mehreren anderen Inhaltsdienstvorrichtungen 1030 oder Inhaltsliefervorrichtungen 1040 zu streamen, wenn die Plattform „ausgeschaltet“ ist. Zusätzlich kann der Chipsatz 1005 eine Hardware- und/oder Softwareunterstützung beispielsweise für 7.1-Surround-Sound-Audio und/oder High-Definition(7.1)-Surround-Sound-Audio aufweisen. Treiber können einen Graphiktreiber für integrierte Graphikplattformen einschließen. Bei Implementationen kann der Graphiktreiber eine Peripheriekomponentenverbindungs(PCI)-Express-Graphikkarte umfassen.
  • Bei verschiedenen Implementationen können eine oder mehrere der im System 1000 dargestellten Komponenten integriert sein. Beispielsweise können die Plattform 1002 und die eine oder die mehreren Inhaltsdienstvorrichtungen 1030 integriert sein oder können die Plattform 1002 und die eine oder die mehreren Inhaltsliefervorrichtungen 1040 integriert sein oder können beispielsweise die Plattform 1002, die eine oder die mehreren Inhaltsdienstvorrichtungen 1030 und die eine oder die mehreren Inhaltsliefervorrichtungen 1040 integriert sein. Bei verschiedenen Implementationen können die Plattform 1002 und die Anzeige 1020 eine integrierte Einheit sein. Die Anzeige 1020 und die eine oder die mehreren Inhaltsdienstvorrichtungen 1030 können integriert sein, oder die Anzeige 1020 und die eine oder die mehreren Inhaltsliefervorrichtungen 1040 können beispielsweise integriert sein. Diese Beispiele sollen die vorliegende Offenbarung nicht einschränken.
  • Bei verschiedenen Implementationen kann das System 1000 als ein drahtloses System, ein verdrahtetes System oder eine Kombination von beiden implementiert sein. Wenn es als ein drahtloses System implementiert wird, kann das System 1000 Komponenten oder Schnittstellen aufweisen, die für die Kommunikation über ein drahtloses geteiltes Medium geeignet sind, wie eine oder mehrere Antennen, Sender, Empfänger, Transceiver, Verstärker, Filter, Steuerlogik und dergleichen. Ein Beispiel eines drahtlosen geteilten Mediums kann Abschnitte eines Drahtlosspektrums in der Art des HF-Spektrums usw. einschließen. Wenn es als ein verdrahtetes System implementiert wird, kann das System 1000 Komponenten und Schnittstellen aufweisen, die für die Kommunikation über verdrahtete Kommunikationsmedien geeignet sind, wie Ein-/Ausgabe(E/A)-Adapter, physikalische Verbinder zum Verbinden des E/A-Adapters mit einem entsprechenden verdrahteten Kommunikationsmedium, eine Netzschnittstellenkarte (NIC), eine Plattensteuereinrichtung, eine Videosteuereinrichtung, eine Audiosteuereinrichtung usw. Beispiele verdrahteter Kommunikationsmedien können einen Draht, ein Kabel, Metallleitungen, eine gedruckte Leiterplatte (PCB), eine rückseitige Ebene, ein Schaltnetz, ein Halbleitermaterial, einen Twisted-Pair-Draht, ein Koaxialkabel, eine Faseroptik usw. einschließen.
  • Die Plattform 1002 kann einen oder mehrere logische oder physikalische Kanäle zur Übermittlung von Informationen einrichten. Die Informationen können Medieninformationen und Steuerinformationen einschließen. Medieninformationen können sich auf beliebige Daten beziehen, die Inhalt darstellen, der für einen Benutzer bestimmt ist. Beispiele von Inhalt können beispielsweise Daten von einem Gespräch, einer Videokonferenz, Streaming-Video, einer elektronischen Nachricht („E-Mail“), einer Sprachnachricht, alphanumerische Symbole, Graphiken, Bilddaten, Videodaten, Textdaten usw. einschließen. Daten von einem Gespräch können beispielsweise Sprachinformationen, Ruheperioden, Hintergrundgeräusche, Annehmlichkeitsgeräusche, Töne usw. einschließen. Steuerinformationen können sich auf jegliche Daten beziehen, die Befehle, Anweisungen oder Steuerwörter darstellen, die für ein automatisches System bestimmt sind. Beispielsweise können Steuerinformationen verwendet werden, um Medieninformationen durch ein System zu leiten oder einen Knoten anzuweisen, die Medieninformationen in einer vorgegebenen Weise zu verarbeiten. Die Implementationen sind jedoch nicht auf die Elemente oder den Zusammenhang beschränkt, die oder der in 10 dargestellt oder beschrieben sind.
  • Wie vorstehend beschrieben wurde, kann das System 900 oder 1000 in verschiedenen physikalischen Stilen oder Formfaktoren implementiert werden. 11 zeigt Implementationen einer Vorrichtung 1100 mit einem kleinen Formfaktor, worin das System 900 oder 1000 implementiert werden kann. Bei Implementationen kann beispielsweise die Vorrichtung 1100 als eine mobile Rechenvorrichtung implementiert werden, welche drahtlose Fähigkeiten aufweist. Eine mobile Rechenvorrichtung kann sich auf eine beliebige Vorrichtung beziehen, die ein Verarbeitungssystem und eine mobile Leistungsquelle oder -versorgung, beispielsweise in der Art einer oder mehrerer Batterien, aufweist.
  • Wie vorstehend beschrieben, können Beispiele einer mobilen Rechenvorrichtung einen Personalcomputer (PC), einen Laptopcomputer, einen Ultralaptopcomputer, ein Tablet, einen Touchpad, einen tragbaren Computer, einen handgehaltenen Computer, einen Palmtopcomputer, einen persönlichen digitalen Assistenten (PDA), ein Mobiltelefon, eine Kombination aus einem Mobiltelefon und einem PDA, ein Fernsehgerät, eine Smart-Vorrichtung (beispielsweise ein Smartphone, ein Smarttablet oder ein Smart-Fernsehgerät), eine mobile Internetvorrichtung (MID), eine Nachrichtenaustauschvorrichtung, eine Datenkommunikationsvorrichtung usw. einschließen.
  • Beispiele einer mobilen Rechenvorrichtung können auch Computer einschließen, die dafür eingerichtet sind, von einer Person getragen zu werden, wie einen Armbandcomputer, einen Fingercomputer, einen Ringcomputer, einen Brillencomputer, einen Gürtelklammercomputer, einen Armbandcomputer, einen Schuhcomputer, einen Kleidungscomputer und andere tragbare Computer. Bei verschiedenen Implementationen kann eine mobile Rechenvorrichtung beispielsweise als ein Smartphone implementiert werden, das in der Lage ist, Computeranwendungen sowie Sprachkommunikationen und/oder Datenkommunikationen auszuführen. Wenngleich einige Implementationen als Beispiel mit einer als Smartphone implementierten mobilen Rechenvorrichtung beschrieben werden können, ist zu verstehen, dass andere Ausführungsformen auch unter Verwendung anderer drahtloser mobiler Rechenvorrichtungen implementiert werden können. Die Implementationen sind in dieser Hinsicht jedoch nicht beschränkt.
  • Wie in 11 dargestellt ist, kann die Vorrichtung 1100 ein Gehäuse 1102, eine Anzeige 1104, eine Ein-/Ausgabe(E/A)-Vorrichtung 1106 und eine Antenne 1108 aufweisen. Die Vorrichtung 1100 kann auch Navigationsmerkmale 1112 aufweisen. Die Anzeige 1104 kann einen beliebigen geeigneten Bildschirm 1110 auf einer Anzeigeeinheit für das Anzeigen von Informationen, die für eine mobile Rechenvorrichtung geeignet ist, aufweisen. Die E/A-Vorrichtung 1106 kann eine beliebige geeignete E/A-Vorrichtung zum Eingeben von Informationen in eine mobile Rechenvorrichtung aufweisen. Beispiele für die E/A-Vorrichtung 1106 können eine alphanumerische Tastatur, eine numerische Tastatur, ein Berührungsfeld, Eingabetasten, Tastenknöpfe, Schalter, Wippschalter, Mikrofone, Lautsprecher, eine Spracherkennungsvorrichtung und -software usw. einschließen. Informationen können auch durch ein Mikrofon (nicht dargestellt) in die Vorrichtung 1100 eingegeben werden. Solche Informationen können durch eine Spracherkennungsvorrichtung (nicht dargestellt) digitalisiert werden. Die Implementationen sind in dieser Hinsicht jedoch nicht beschränkt.
  • Verschiedene Implementationen können unter Verwendung von Hardwareelementen, Softwareelementen oder einer Kombination von beiden implementiert werden. Beispiele von Hardwareelementen können Prozessoren, Mikroprozessoren, Schaltungen, Schaltungselemente (beispielsweise Transistoren, Widerstände, Kondensatoren, Induktoren usw.), integrierte Schaltungen, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare Logikvorrichtungen (PLD), digitale Signalprozessoren (DSP), ein feldprogrammierbares Gate-Array (FPGA), Logikgatter, Register, eine Halbleitervorrichtung, Chips, Mikrochips, Chipsätze usw. einschließen. Beispiele von Software können Softwarekomponenten, Programme, Anwendungen, Computerprogramme, Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystemsoftware, Middleware, Firmware, Softwaremodule, Routinen, Unterroutinen, Funktionen, Methoden, Prozeduren, Softwareschnittstellen, Anwendungsprogrammschnittstellen (API), Befehlssätze, Rechencode, Computercode, Codesegmente, Computercodesegmente, Wörter, Werte, Symbole oder eine Kombination davon einschließen. Die Bestimmung, ob eine Implementation unter Verwendung von Hardwareelementen und/oder Softwareelementen implementiert wird, kann von einer Anzahl von Faktoren in der Art der gewünschten Rechengeschwindigkeit, Leistungsniveaus, Wärmetoleranzen, des Verarbeitungszyklusbudgets, Dateneingaberaten, Datenausgaberaten, Speicherressourcen, Datenbusgeschwindigkeiten und anderer Entwurfs- und Leistungsrandbedingungen abhängen.
  • Ein oder mehrere vorstehend beschriebene Aspekte können durch repräsentative Befehle implementiert werden, die auf einem maschinenlesbaren Medium gespeichert sind, wodurch verschiedene Logik innerhalb des Prozessors repräsentiert wird, wodurch, wenn sie von einer Maschine gelesen werden, die Maschine veranlasst wird, Logik zur Ausführung der hier beschriebenen Techniken zu bilden. Diese als „IP-Kerne“ bekannten Repräsentationen können auf einem physischen maschinenlesbaren Medium gespeichert werden und verschiedenen Kunden oder Herstellungseinrichtungen zugeführt werden, um sie in die Herstellungsmaschinen zu laden, welche tatsächlich die Logik oder den Prozessor bilden.
  • Wenngleich bestimmte hier dargelegte Merkmale mit Bezug auf verschiedene Implementationen beschrieben wurden, sollte diese Beschreibung nicht in einem einschränkenden Sinne ausgelegt werden. Daher wird davon ausgegangen, dass verschiedene Modifikationen der hier beschriebenen Implementationen sowie andere Implementationen, die Fachleuten auf dem Gebiet, auf das sich die vorliegende Offenbarung bezieht, einfallen werden, innerhalb des Gedankens und des Schutzumfangs der vorliegenden Offenbarung liegen.
  • Die folgenden Beispiele betreffen zusätzliche Implementationen.
  • Bei einem Beispiel umfasst ein computerimplementiertes Verfahren zum adaptiven Referenz-Frame-Caching für eine Videocodierung Folgendes: Empfangen von Bilddaten, welche Frames und Bewegungsvektordaten umfassen, Verwenden der Bewegungsvektordaten, um festzustellen, welche Frames Referenz-Frames für einen einzelnen Frame sind, der rekonstruiert wird, Modifizieren eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames verwendet werden, und Geben eines oder mehrerer Referenz-Frames in den Cache-Speicher, zumindest teilweise abhängig vom Binning-Zählwert.
  • Bei einer anderen Implementation wird beim Verfahren beim Modifizieren des Binning-Zählwerts ein Zählwert in Bins in zumindest einer Referenz-Frame-Binning-Tabelle modifiziert, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame für einen anderen Frame in der Videosequenz verwendet wird, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen, wobei das Modifizieren des Binning-Zählwerts das Verwenden von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst.
  • Das Verfahren kann auch Folgendes umfassen: Erhalten der Bewegungsvektoren, bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind, Erhalten der Bewegungsvektoren nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames im Cache bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind, und Identifizieren der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames, um die identifizierten Referenz-Frames in den Cache zu geben, wobei ein oder zwei am häufigsten verwendete Referenz-Frames in den Cache gegeben werden.
  • Das Verfahren umfasst auch, dass beim Geben die Referenz-Frames in den L2-Cache gegeben werden, wobei das Modifizieren des Binning-Zählwerts das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames durch den Bewegungsvektor unabhängig davon, von welchem Speicher der Referenz-Frame erhalten wurde, umfasst, und wobei das Verfahren Folgendes umfasst: Geben der Referenz-Frames in den Cache entsprechend dem Binning-Zählwert abhängig von: (1) der Anzahl der Referenz-Frames, die für eine Rekonstruktion eines einzigen Frames zu verwenden sind, oder (2) ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt, oder von beiden.
  • Bei einer anderen Implementation weist ein computerimplementiertes System Folgendes auf: wenigstens eine Anzeige, wenigstens einen Cache-Speicher, wenigstens einen anderen Speicher zum Empfangen von Bilddaten, welche Frames und Bewegungsvektordaten umfassen, wenigstens einen Prozessor, der kommunikativ mit den Speichern und der Anzeige gekoppelt ist, und wenigstens eine Bewegungsvektor-Binning-Einheit, die durch den wenigstens einen Prozessor betrieben wird und dafür eingerichtet ist, Folgendes auszuführen: Verwenden der Bewegungsvektordaten, um festzustellen, welche Frames Referenz-Frames für einen einzelnen Frame sind, der rekonstruiert wird, Modifizieren eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames verwendet werden, und Angeben, welcher Referenz-Frame (welche Referenz-Frames) zumindest teilweise abhängig vom Binning-Zählwert in den Cache-Speicher zu geben ist (sind).
  • Bei einer anderen Implementation wird beim System beim Modifizieren des Binning-Zählwerts auch ein Zählwert in Bins in zumindest einer Referenz-Frame-Binning-Tabelle modifiziert, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame für einen anderen Frame in der Videosequenz verwendet wird, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen, wobei das Modifizieren des Binning-Zählwerts das Verwenden von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst.
  • Die wenigstens eine Bewegungsvektor-Binning-Einheit kann dafür eingerichtet sein, Folgendes auszuführen: Erhalten der Bewegungsvektoren, bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind, Erhalten der Bewegungsvektoren nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames im Cache bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind, und Identifizieren der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames, um die identifizierten Referenz-Frames in den Cache zu geben, wobei ein oder zwei am häufigsten verwendete Referenz-Frames in den Cache gegeben werden, wobei die Referenz-Frames in den L2-Cache zu geben sind und wobei das Modifizieren eines Binning-Zählwerts das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames durch den Bewegungsvektor unabhängig davon, von welchem Speicher der Referenz-Frame erhalten wurde, umfasst. Die wenigstens eine Bewegungsvektor-Binning-Einheit kann dafür eingerichtet sein, die Referenz-Frames entsprechend dem Binning-Zählwert abhängig von Folgendem in den Cache zu geben: (1) der Anzahl der Referenz-Frames, die für eine Rekonstruktion eines einzigen Frames zu verwenden sind, oder (2) ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt, oder von beiden.
  • Bei einem Ansatz sind auf wenigstens einem computerlesbaren Medium Befehle gespeichert, die, wenn sie ausgeführt werden, eine Rechenvorrichtung veranlassen, Folgendes auszuführen: Empfangen von Bilddaten, welche Frames und Bewegungsvektordaten umfassen, Verwenden der Bewegungsvektordaten, um festzustellen, welche Frames Referenz-Frames für einen einzelnen Frame sind, der rekonstruiert wird, Modifizieren eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames verwendet werden, und Geben eines oder mehrerer Referenz-Frames in den Cache-Speicher, zumindest teilweise abhängig vom Binning-Zählwert.
  • Bei einer anderen Implementation wird durch die Befehle beim Modifizieren eines Binning-Zählwerts ein Zählwert in Bins in zumindest einer Referenz-Frame-Binning-Tabelle modifiziert, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame für einen anderen Frame in der Videosequenz verwendet wird, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen, wobei das Modifizieren des Binning-Zählwerts das Verwenden von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst.
  • Die Befehle veranlassen die Rechenvorrichtung, Folgendes auszuführen: Erhalten der Bewegungsvektoren, bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind, Erhalten der Bewegungsvektoren nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames im Cache bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind, und Identifizieren der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames, um die identifizierten Referenz-Frames in den Cache zu geben, wobei ein oder zwei am häufigsten verwendete Referenz-Frames in den Cache gegeben werden, wobei die Referenz-Frames in den L2-Cache zu geben sind und wobei das Modifizieren eines Binning-Zählwerts das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames durch den Bewegungsvektor unabhängig davon, von welchem Speicher der Referenz-Frame erhalten wurde, umfasst. Die Befehle veranlassen die Rechenvorrichtung, die Referenz-Frames entsprechend dem Binning-Zählwert abhängig von Folgendem in den Cache zu geben: (1) der Anzahl der Referenz-Frames, die für eine Rekonstruktion eines einzigen Frames zu verwenden sind, oder (2) ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt, oder beiden.
  • Bei einem anderen Beispiel kann wenigstens ein maschinenlesbares Medium mehrere Befehle aufweisen, die ansprechend darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen, das Verfahren nach einem der vorstehenden Beispiele auszuführen.
  • Bei einem anderen Beispiel kann eine Vorrichtung Mittel zum Ausführen der Verfahren nach einem der vorstehenden Beispiele aufweisen.
  • Die vorstehenden Beispiele können spezifische Kombinationen von Merkmalen aufweisen. Die vorstehenden Beispiele sind jedoch nicht in dieser Hinsicht beschränkt, und es können dabei bei verschiedenen Implementationen lediglich eine Untermenge dieser Merkmale, eine andere Reihenfolge dieser Merkmale, eine andere Kombination dieser Merkmale und/oder zusätzliche Merkmale zu den explizit aufgelisteten Merkmalen verwirklicht werden. Beispielsweise können alle mit Bezug auf die als Beispiel dienenden Verfahren beschriebenen Merkmale in Bezug auf die als Beispiel dienenden Vorrichtungen, Systeme und/oder Artikel implementiert werden und umgekehrt.

Claims (25)

  1. Computerimplementiertes Verfahren (300) zum adaptiven Referenz-Frame-Caching für eine Videocodierung mittels eines Cache-Speichers (930), welches Folgendes umfasst: Empfangen (302) von Bilddaten, welche Frames und Bewegungsvektordaten (918) umfassen, Verwenden (304) der Bewegungsvektordaten (918), um festzustellen, welche Frames Referenz-Frames für einen einzelnen Frame sind, der rekonstruiert wird, Modifizieren (306) eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames (916) verwendet werden, und Geben (308) eines oder mehrerer Referenz-Frames (916) in den Cache-Speicher (930), zumindest teilweise abhängig vom Binning-Zählwert; wobei das Geben der Referenz-Frames (916) in den Cache-Speicher (930) entsprechend dem Binning-Zählwert abhängig davon ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt erfolgt, wobei das Geben der Referenz-Frames (916) in den Cache-Speicher (930) erfolgt, wenn der Cache-Treffer-Zählwert oberhalb oder gleich 50% ist und das Geben der Referenz-Frames (916) in den Cache-Speicher (930) nicht erfolgt, wenn der Cache-Treffer-Zählwert unterhalb von 50% ist.
  2. Verfahren (300) nach Anspruch 1, wobei das Modifizieren des Binning-Zählwerts (306) das Modifizieren eines Zählwerts in Bins in zumindest einer Referenz-Frame-Binning-Tabelle umfasst, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame (916) für einen anderen Frame in der Videosequenz verwendet wird.
  3. Verfahren (300) nach Anspruch 2, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen.
  4. Verfahren (300) nach Anspruch 3, wobei beim Modifizieren des Binning-Zählwerts (306) eine Binning-Tabelle mit 32 Feldern verwendet wird oder zwei Binning-Tabellen verwendet werden, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen.
  5. Verfahren (300) nach Anspruch 1, welches Folgendes umfasst: Erhalten der Bewegungsvektoren (918), bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames (916) im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind.
  6. Verfahren (300) nach Anspruch 1, welches Folgendes umfasst: Erhalten der Bewegungsvektoren (918) nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames (916) im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind.
  7. Verfahren (300) nach Anspruch 1, welches Folgendes umfasst: Identifizieren (414) der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames, um die identifizierten Referenz-Frames (916) in den Cache-Speicher (930) zu geben.
  8. Verfahren (300) nach Anspruch 7, wobei ein oder zwei am häufigsten verwendete Referenz-Frames (916) in den Cache-Speicher (930) gegeben werden.
  9. Verfahren (300) nach Anspruch 1, wobei beim Geben (308) die Referenz-Frames (916) in einen L2-Cache (932) gegeben werden.
  10. Verfahren (300) nach Anspruch 1, wobei das Modifizieren des Binning-Zählwerts (306) das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames (916) durch den Bewegungsvektor (918) unabhängig davon, von welchem Speicher der Referenz-Frame (916) erhalten wurde, umfasst.
  11. Verfahren (300) nach Anspruch 1, welches Folgendes umfasst: Geben der Referenz-Frames (916) in den Cache-Speicher (930) entsprechend dem Binning-Zählwert zusätzlich abhängig von der Anzahl der Referenz-Frames (916), die für eine Rekonstruktion eines einzigen Frames zu verwenden sind.
  12. Verfahren (300) nach Anspruch 1, wobei das Modifizieren des Binning-Zählwerts (306) das Modifizieren eines Zählwerts in Bins in zumindest einer Referenz-Frame-Binning-Tabelle umfasst, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame (916) für einen anderen Frame in der Videosequenz verwendet wird, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen, wobei das Modifizieren des Binning-Zählwerts (306) das Verwenden einer Binning-Tabelle mit 32 Feldern oder von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst, wobei das Verfahren Folgendes umfasst: Erhalten der Bewegungsvektoren (918), bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind, Erhalten der Bewegungsvektoren (918) nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind, Identifizieren (414) der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames (916), um die identifizierten Referenz-Frames in den Cache-Speicher (930) zu geben, wobei ein oder zwei am häufigsten verwendete Referenz-Frames (916) in den Cache-Speicher (930) gegeben werden, wobei beim Geben die Referenz-Frames (916) in den L2-Cache (932) gegeben werden, wobei das Modifizieren des Binning-Zählwerts das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames (916) durch den Bewegungsvektor (918) unabhängig davon, von welchem Speicher der Referenz-Frame erhalten wurde, umfasst, wobei die Referenz-Frames (916) abhängig von Folgendem entsprechend dem Binning-Zählwert in den Cache-Speicher (930) gegeben werden: (1) der Anzahl der Referenz-Frames, die für eine Rekonstruktion eines einzigen Frames zu verwenden sind, oder davon (2) ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt, oder von beiden.
  13. Computerimplementiertes System (900, 1000), welches Folgendes umfasst: wenigstens eine Anzeige (1020), wenigstens einen Cache-Speicher (930), wenigstens einen anderen Speicher (910) zum Empfangen von Bilddaten, welche Frames und Bewegungsvektordaten (918) umfassen, wenigstens einen Prozessor (906), der kommunikativ mit den Speichern (920, 930) und der Anzeige (1020) gekoppelt ist, und wenigstens eine Bewegungsvektor-Binning-Einheit (935), die durch den wenigstens einen Prozessor betrieben wird und dafür eingerichtet ist, Folgendes auszuführen: Verwenden der Bewegungsvektordaten (918), um festzustellen, welche Frames Referenz-Frames (916) für einen einzelnen Frame sind, der rekonstruiert wird, Modifizieren eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames (916) verwendet werden, und Angeben, welcher Referenz-Frame (welche Referenz-Frames) zumindest teilweise abhängig vom Binning-Zählwert in den Cache-Speicher (930) zu geben ist (sind); wobei die wenigstens eine Bewegungsvektor-Binning-Einheit dafür eingerichtet ist, die Referenz-Frames entsprechend dem Binning-Zählwert abhängig davon ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt in den Cache-Speicher (930) zu geben: die Bewegungsvektor-Binning-Einheit dazu eingerichtet ist die Referenz-Frames in den Cache-Speicher (930) zu geben, wenn der Cache-Treffer-Zählwert oberhalb oder gleich 50% ist und die Bewegungsvektor-Binning-Einheit dazu eingerichtet ist die Referenz-Frames nicht in den Cache-Speicher (930) zu geben, wenn der Cache-Treffer-Zählwert unterhalb von 50% ist.
  14. System (900, 1000) nach Anspruch 13, wobei das Modifizieren des Binning-Zählwerts das Modifizieren eines Zählwerts in Bins in zumindest einer Referenz-Frame-Binning-Tabelle umfasst, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame für einen anderen Frame in der Videosequenz verwendet wird.
  15. System (900, 1000) nach Anspruch 14, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen.
  16. System (900, 1000) nach Anspruch 15, wobei das Modifizieren des Binning-Zählwerts das Verwenden einer Binning-Tabelle mit 32 Feldern oder von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst.
  17. System (900, 1000) nach Anspruch 13, wobei die Bewegungsvektor-Binning-Einheit dazu dient, die Bewegungsvektoren zu erhalten, bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind.
  18. System (900, 1000) nach Anspruch 13, wobei die Bewegungsvektor-Binning-Einheit dazu dient, die Bewegungsvektoren nach der Pixelcodierung des einzelnen Frames zu erhalten, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind.
  19. System (900, 1000) nach Anspruch 13, wobei die Bewegungsvektor-Binning-Einheit dazu dient, die Anzahl der am häufigsten verwendeten Frames und den Binning-Zählwert als Referenz-Frames zu identifizieren, um die identifizierten Referenz-Frames in den Cache-Speicher (930) zu geben.
  20. System (900, 1000) nach Anspruch 19, wobei ein oder zwei am häufigsten verwendete Referenz-Frames in den Cache-Speicher (930) gegeben werden.
  21. System (900, 1000) nach Anspruch 13, wobei das Modifizieren eines Binning-Zählwerts das Modifizieren eines Zählwerts in Bins in zumindest einer Referenz-Frame-Binning-Tabelle umfasst, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame für einen anderen Frame in der Videosequenz verwendet wird, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen, wobei das Modifizieren eines Binning-Zählwerts das Verwenden einer Binning-Tabelle mit 32 Feldern oder von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst, wobei die wenigstens eine Bewegungsvektor-Binning-Einheit dafür eingerichtet ist, Folgendes auszuführen: Erhalten der Bewegungsvektoren, bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind, Erhalten der Bewegungsvektoren nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher (930) bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind, Identifizieren der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames, um die identifizierten Referenz-Frames in den Cache-Speicher (930) zu geben, wobei ein oder zwei am häufigsten verwendete Referenz-Frames in den Cache-Speicher (930) gegeben werden, wobei die Referenz-Frames in einen L2-Cache zu geben sind, wobei das Modifizieren eines Binning-Zählwerts das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames durch den Bewegungsvektor unabhängig davon, von welchem Speicher der Referenz-Frame erhalten wurde, umfasst, wobei die wenigstens eine Bewegungsvektor-Binning-Einheit dafür eingerichtet ist, die Referenz-Frames entsprechend dem Binning-Zählwert abhängig von Folgendem in den Cache-Speicher (930) zu geben: (1) der Anzahl der Referenz-Frames, die für eine Rekonstruktion eines einzigen Frames zu verwenden sind, oder davon (2) ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt, oder von beiden.
  22. Computerlesbares Medium bzw. mehrere computerlesbare Medien, worauf Befehle gespeichert sind, die, wenn sie ausgeführt werden, eine Rechenvorrichtung mit Cache-Speicher veranlassen, Folgendes auszuführen: Empfangen von Bilddaten, welche Frames und Bewegungsvektordaten umfassen, Verwenden der Bewegungsvektordaten, um festzustellen, welche Frames Referenz-Frames für einen einzelnen Frame sind, der rekonstruiert wird, Modifizieren eines Binning-Zählwerts der Häufigkeit, mit der einzelne Frames als Referenz-Frames verwendet werden, und Geben eines oder mehrerer Referenz-Frames in den Cache-Speicher, zumindest teilweise abhängig vom Binning-Zählwert; wobei das Geben der Referenz-Frames in den Cache-Speicher entsprechend dem Binning-Zählwert abhängig davon ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt erfolgt, wobei das Geben der Referenz-Frames in den Cache-Speicher erfolgt, wenn der Cache-Treffer-Zählwert oberhalb oder gleich 50% ist und das Geben der Referenz-Frames in den Cache-Speicher nicht erfolgt, wenn der Cache-Treffer-Zählwert unterhalb von 50% ist.
  23. Computerlesbares Medium nach Anspruch 22, wobei das Modifizieren eines Binning-Zählwerts das Modifizieren eines Zählwerts in Bins in zumindest einer Referenz-Frame-Binning-Tabelle umfasst, wobei jeder Bin einen Zählwert der Anzahl der Male umfasst, womit ein Frame in einer durch die Frames gebildeten Videosequenz als ein Referenz-Frame für einen anderen Frame in der Videosequenz verwendet wird, wobei die eine oder die mehreren Binning-Tabellen Bins für eine Anzahl von Frames vor dem einzelnen Frame, der rekonstruiert wird, nach dem einzelnen Frame, der rekonstruiert wird, oder beides umfassen, wobei das Modifizieren eines Binning-Zählwerts das Verwenden einer Binning-Tabelle mit 32 Feldern oder von zwei Binning-Tabellen, die eine erste Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames vor dem einzelnen Frame in der Videosequenz und eine zweite Binning-Tabelle aus 16 Bins in Zusammenhang mit 16 Frames nach dem einzelnen Frame in der Videosequenz umfassen, umfasst, wobei die Befehle die Rechenvorrichtung veranlassen, Folgendes auszuführen: Erhalten der Bewegungsvektoren, bevor die Pixelcodierung eines aktuellen Frames geschieht, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher bereitzustellen, die für die Rekonstruktion des aktuellen Frames zu verwenden sind, Erhalten der Bewegungsvektoren nach der Pixelcodierung des einzelnen Frames, um einen Binning-Zählwert und Referenz-Frames im Cache-Speicher bereitzustellen, die für die Rekonstruktion eines nächsten Frames zu verwenden sind, Identifizieren der Anzahl der am häufigsten verwendeten Frames und des Binning-Zählwerts als Referenz-Frames, um die identifizierten Referenz-Frames in den Cache-Speicher zu geben, wobei ein oder zwei am häufigsten verwendete Referenz-Frames in den Cache gegeben werden, wobei die Referenz-Frames in einen L2-Cache zu geben sind, wobei das Modifizieren eines Binning-Zählwerts das Modifizieren des Zählwerts auf der Grundlage der Identifikation der Referenz-Frames durch den Bewegungsvektor unabhängig davon, von welchem Speicher der Referenz-Frame erhalten wurde, umfasst, wobei die Befehle die Rechenvorrichtung veranlassen, die Referenz-Frames abhängig von Folgendem entsprechend dem Binning-Zählwert in den Cache-Speicher zu geben: (1) der Anzahl der Referenz-Frames, die für eine Rekonstruktion eines einzigen Frames zu verwenden sind, oder davon (2) ob ein Cache-Treffer-Zählwert ein Kriterium erfüllt, oder von beiden.
  24. Maschinenlesbares Medium bzw. mehrere maschinenlesbare Medien, umfassend mehrere Befehle, die ansprechend darauf, dass sie auf einer Rechenvorrichtung ausgeführt werden, die Rechenvorrichtung veranlassen, das Verfahren nach einem der Ansprüche 1 bis 12 auszuführen.
  25. Vorrichtung, welche Mittel zum Ausführen des Verfahrens nach einem der Ansprüche 1 bis 12 umfasst.
DE112016002026.0T 2015-06-30 2016-05-25 Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung Active DE112016002026B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US14/788,630 2015-06-30
US14/788,630 US20170006303A1 (en) 2015-06-30 2015-06-30 Method and system of adaptive reference frame caching for video coding
PCT/US2016/034068 WO2017003594A1 (en) 2015-06-30 2016-05-25 Method and system of adaptive reference frame caching for video coding

Publications (2)

Publication Number Publication Date
DE112016002026T5 DE112016002026T5 (de) 2018-01-25
DE112016002026B4 true DE112016002026B4 (de) 2023-09-28

Family

ID=57608777

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112016002026.0T Active DE112016002026B4 (de) 2015-06-30 2016-05-25 Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung

Country Status (4)

Country Link
US (1) US20170006303A1 (de)
CN (1) CN107667528A (de)
DE (1) DE112016002026B4 (de)
WO (1) WO2017003594A1 (de)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11595652B2 (en) 2019-01-28 2023-02-28 Op Solutions, Llc Explicit signaling of extended long term reference picture retention
CN107846597B (zh) * 2016-09-20 2019-12-10 上海澜至半导体有限公司 用于视频解码器的数据缓存方法和装置
US11496747B2 (en) 2017-03-22 2022-11-08 Qualcomm Incorporated Intra-prediction mode propagation
US10879821B2 (en) * 2018-07-10 2020-12-29 Texas Instruments Incorporated Rotor position estimation
CN109151476B (zh) * 2018-09-21 2020-08-25 北京大学 一种基于双向预测的b帧图像的参考帧生成方法及装置
US10797629B2 (en) 2018-11-23 2020-10-06 Texas Instruments Incorporated Low speed sensorless rotor angle estimation
CN111372085B (zh) * 2018-12-25 2021-07-09 厦门星宸科技有限公司 影像解码装置与方法
US11251703B2 (en) 2019-01-14 2022-02-15 Texas Instruments Incorporated Methods and apparatus to facilitate multiple modes of converter operation
EP3918801A4 (de) * 2019-01-28 2022-06-15 OP Solutions, LLC Online- und offline-auswahl von erweiterter langfristiger referenzbildspeicherung
US11144466B2 (en) * 2019-06-06 2021-10-12 Intel Corporation Memory device with local cache array
CN110830808A (zh) * 2019-11-29 2020-02-21 合肥图鸭信息科技有限公司 一种视频帧重构方法、装置及终端设备
US11705834B2 (en) 2019-12-27 2023-07-18 Texas Instruments Incorporated Sensorless angle estimation for trapezoidal control
WO2024000463A1 (zh) * 2022-06-30 2024-01-04 华为技术有限公司 处理视频的方法、装置和计算机可读存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279280A1 (en) 2007-05-07 2008-11-13 Masayasu Iguchi Moving picture decoding integrated circuit
US20100150223A1 (en) 2008-12-12 2010-06-17 Qualcomm Incorporated Intelligent decoded picture buffering

Family Cites Families (15)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2274182B (en) * 1993-01-09 1996-09-25 Digital Equipment Int Database co-processor
US5682514A (en) * 1995-11-30 1997-10-28 Stampede Technologies, Inc. Apparatus and method for increased data access in a network file oriented caching system
US7253831B2 (en) * 2000-05-10 2007-08-07 Polycom, Inc. Video coding using multiple buffers
US7606314B2 (en) * 2002-08-29 2009-10-20 Raritan America, Inc. Method and apparatus for caching, compressing and transmitting video signals
TWI249356B (en) * 2002-11-06 2006-02-11 Nokia Corp Picture buffering for prediction references and display
KR20090085581A (ko) * 2006-10-24 2009-08-07 톰슨 라이센싱 다중-뷰 비디오 코딩을 위한 화상 관리
US8160149B2 (en) * 2007-04-03 2012-04-17 Gary Demos Flowfield motion compensation for video compression
US20080260023A1 (en) * 2007-04-18 2008-10-23 Chih-Ta Star Sung Digital video encoding and decoding with refernecing frame buffer compression
EP2375680A1 (de) * 2010-04-01 2011-10-12 Thomson Licensing Verfahren zur Rückgewinnung von in einen Block gestreamten Inhalt
US8510510B1 (en) * 2011-01-31 2013-08-13 Symantec Corporation File cache optimization using element prioritization
JP6017574B2 (ja) * 2011-10-24 2016-11-02 テレフオンアクチーボラゲット エルエム エリクソン(パブル) 参照ピクチャマーキング
US9313500B2 (en) * 2012-09-30 2016-04-12 Microsoft Technology Licensing, Llc Conditional signalling of reference picture list modification information
US20140153635A1 (en) * 2012-12-05 2014-06-05 Nvidia Corporation Method, computer program product, and system for multi-threaded video encoding
US20140192895A1 (en) * 2013-01-04 2014-07-10 Qualcomm Incorporated Multi-resolution decoded picture buffer management for multi-layer video coding
US9720842B2 (en) * 2013-02-20 2017-08-01 Nvidia Corporation Adaptive multilevel binning to improve hierarchical caching

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20080279280A1 (en) 2007-05-07 2008-11-13 Masayasu Iguchi Moving picture decoding integrated circuit
US20100150223A1 (en) 2008-12-12 2010-06-17 Qualcomm Incorporated Intelligent decoded picture buffering

Also Published As

Publication number Publication date
US20170006303A1 (en) 2017-01-05
WO2017003594A1 (en) 2017-01-05
CN107667528A (zh) 2018-02-06
DE112016002026T5 (de) 2018-01-25

Similar Documents

Publication Publication Date Title
DE112016002026B4 (de) Verfahren und System zum adaptiven Referenz-Frame-Caching für die Videocodierung
DE102020127627A1 (de) Verfahren und System zum Videocodieren mit Intra-Block-Kopieren
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE112017003212T5 (de) Verfahren und System zur Videocodierung mit Kontextdecodierung und Rekonstruktionsumgehung
DE102019218837A1 (de) VERFAHREN UND SYSTE M ZUR NEURONALNETZ WERK-SCHLEIFENFILTERUNG ZUR VlDEOCODIERUNG
DE102016225270A1 (de) Verfahren, anwendungsprozessor, und mobiles endgerät zum verarbeiten eines referenzbildes
TW202007166A (zh) 解碼器的視訊解碼方法及裝置
DE202016008192U1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE102019209067A1 (de) Adaptive in-loop filtering for video coding
DE60309375T2 (de) Parametrisierung für verlauf-kompensation
JP2008543183A (ja) 複数の映像規格に従った映像符号化の際のブロックノイズ除去フィルタリング技術
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE102004021854A1 (de) Vorrichtung für sowohl eine Block-Matching Motion Compensation als auch eine Global Motion Compensation sowie Verfahren hierfür
DE202016008177U1 (de) Bewegungsvektoraufteilung des letzten Frames
CN108810552B (zh) 图像预测方法和相关产品
DE102020125206A1 (de) Verfahren und system zur mehrkanalvideocodierung mit frameratenänderung und kanalübergreifender referenzierung
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
US10009622B1 (en) Video coding with degradation of residuals
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE102019218316A1 (de) 3d-renderer-zu-videocodierer-pipeline für verbesserte visuelle qualität und geringe latenz
DE102019215911A1 (de) Adaptive inhaltsquantisierung zur videocodierung
CN107409212A (zh) 用于编码和解码的使用变换系数的逐渐更新
US20140098854A1 (en) Lossless intra-prediction video coding
DE112017005664T5 (de) Umwandlungspuffer zum entkoppeln von normativem und umsetzungsdatenpfadinterleaving von videokoeffizienten

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R082 Change of representative

Representative=s name: HGF EUROPE LLP, DE

Representative=s name: HGF EUROPE LP, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division