DE202016008214U1 - Kodierratensteuerung von Echtzeitvideos unter Verwendung einer dynamischen Auflösungsumschaltung - Google Patents

Kodierratensteuerung von Echtzeitvideos unter Verwendung einer dynamischen Auflösungsumschaltung Download PDF

Info

Publication number
DE202016008214U1
DE202016008214U1 DE202016008214.1U DE202016008214U DE202016008214U1 DE 202016008214 U1 DE202016008214 U1 DE 202016008214U1 DE 202016008214 U DE202016008214 U DE 202016008214U DE 202016008214 U1 DE202016008214 U1 DE 202016008214U1
Authority
DE
Germany
Prior art keywords
bit rate
frame
encoding
parameter
resolution
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
DE202016008214.1U
Other languages
English (en)
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.)
Google LLC
Original Assignee
Google LLC
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 Google LLC filed Critical Google LLC
Publication of DE202016008214U1 publication Critical patent/DE202016008214U1/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/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/124Quantisation
    • 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/146Data rate or code amount at the encoder output
    • 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/167Position within a video image, e.g. region of interest [ROI]
    • 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/17Methods 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 an image region, e.g. an object
    • H04N19/172Methods 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 an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/59Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding involving spatial sub-sampling or interpolation, e.g. alteration of picture size or resolution
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/90Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using coding techniques not provided for in groups H04N19/10-H04N19/85, e.g. fractals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/234363Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution
    • H04N21/234372Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements by altering the spatial resolution, e.g. for clients with a lower screen resolution for performing aspect ratio conversion
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/23Processing of content or additional data; Elementary server operations; Server middleware
    • H04N21/234Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs
    • H04N21/2343Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements
    • H04N21/23439Processing of video elementary streams, e.g. splicing of video streams or manipulating encoded video stream scene graphs involving reformatting operations of video signals for distribution or compliance with end-user requests or end-user device requirements for generating different versions
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N21/00Selective content distribution, e.g. interactive television or video on demand [VOD]
    • H04N21/20Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
    • H04N21/25Management operations performed by the server for facilitating the content distribution or administrating data related to end-users or client devices, e.g. end-user or client device authentication, learning user preferences for recommending movies
    • H04N21/266Channel or content management, e.g. generation and management of keys and entitlement messages in a conditional access system, merging a VOD unicast channel into a multicast channel
    • H04N21/2662Controlling the complexity of the video stream, e.g. by scaling the resolution or bitrate of the video stream based on the client capabilities

Landscapes

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

Abstract

Vorrichtung zur Kodierratensteuerung von Echtzeitvideos, umfassend: mindestens einen Prozessor, der konfiguriert ist, um für Folgendes Anweisungen, die auf einem nicht greifbaren Speichermedium gespeichert sind, auszuführen: das Identifizieren eines ersten Frames einer Vielzahl von Frames eines Videodatenstroms; das Kodieren des ersten Frames bei einer ersten Bitrate, die für einen Quantifizierungsparameter repräsentativ ist; das Identifizieren einer oder mehrerer kodierbedingter Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des ersten Frames; das Vergleichen der ersten Bitrate mit einer Ziel-Bitrate für den ersten Frame und das Vergleichen eines Quantifizierungsparameters mit sowohl einem Mindestquantifizierungsschwellenwert als auch einem Höchstquantifizierungsschwellenwert; das Anpassen mindestens eines Kodierparameters als Antwort auf das Vergleichen der ersten Bitrate mit einer Bitrate und das Vergleichen des Quantifizierungsparameters mit entweder dem Mindestquantifizierungsschwellenwert oder dem Höchstquantifizierungsschwellenwert; das Identifizieren eines zweiten Frames einer Vielzahl von Frames des Videodatenstroms; das Kodieren des zweiten Frames bei einer zweiten Bitrate unter Verwendung mindestens eines eingestellten Kodierparameters; und das Übertragen des kodierten ersten Frames und des kodierten zweiten Frames in einem Ausgabe-Bitstream.

Description

  • HINTERGRUND
  • Digitale Videodatenströme stellen in der Regel Videos unter Verwendung einer Sequenz von Frames oder Standbilddateien dar. Jeder Frame kann eine Anzahl an Blöcken beinhalten, die wiederum Informationen umfassen können, die den Wert der Farbe, der Helligkeit oder sonstiger Pixelattribute beschreiben. Die Datenmenge eines typischen Videodatenstroms ist hoch und die Übertragung und Speicherung von Video kann dementsprechend hohe Rechen- und Kommunikationskapazitäten in Anspruch nehmen. Aufgrund der großen Datenmenge, die in Verbindung mit Videodaten in Anspruch genommen wird, ist ein leistungsstarkes Komprimierungsverfahren für sowohl deren Übertragung als auch deren Speicherung erforderlich. Ferner ist es wünschenswert, in der Lage zu sein, Videodaten von hoher Qualität bei einer, auf Basis der zur Verfügung stehenden Verbindungen, optimierten Auflösung, zu streamen.
  • ZUSAMMENFASSUNG
  • Unter Schutz gestellt werden und Gegenstand des Gebrauchsmusters sind dabei, entsprechend den Vorschriften des Gebrauchsmustergesetzes, lediglich Vorrichtungen wie in den beigefügten Schutzansprüchen definiert, jedoch keine Verfahren. Soweit nachfolgend in der Beschreibung gegebenenfalls auf Verfahren Bezug genommen wird, dienen diese Bezugnahmen lediglich der beispielhaften Erläuterung der in den beigefügten Schutzansprüchen unter Schutz gestellten Vorrichtung oder Vorrichtungen. Hierin offenbart sind Aspekte von Systemen und Vorrichtungen zum Einsatz einer dynamischen Auflösungsumschaltung, um eine Ziel-Bitrate zur Kodierung eines Videodatenstroms zu erreichen. Eine Vorrichtung gemäß einem Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen auszuführen, die auf einem nicht-greifbaren Speichermedium gespeichert sind, um einen ersten Frame einer Vielzahl von Frames eines Videodatenstroms zu identifizieren, die einen ersten Frame bei einer ersten Bitrate kodieren, die für einen Quantifizierungsparameter repräsentativ ist, die eine oder mehrere kodierbedingte Einschränkungen mit Bezug auf einen Bewegungssuchbereich des ersten Frames identifizieren, die eine erste Bitrate mit einer Zielbitrate für den ersten Frame vergleichen und die einen Quantifizierungsparameter mit sowohl einem Mindestquantifizierungsschwellenwert als auch einem Höchstquantifizierungsschwellenwert vergleichen, die mindestens einen Kodierparameter als Antwort auf das Vergleichen einer ersten Bitrate mit einer Zielbitrate anpassen, und die den Quantifizierungsparameter mit entweder dem Mindestquantifizierungsschwellenwert oder dem Höchstquantifizierungsschwellenwert vergleichen, die einen zweiten Frame des Videodatenstroms identifizieren, die einen zweiten Frame bei einer zweiten Bitrate unter Verwendung mindestens eines eingestellten Kodierparameters kodieren und die den kodierten ersten Frame und den kodierten zweiten Frame in einem Ausgabe-Bitstream übertragen.
  • Eine Vorrichtung gemäß einem anderen Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen, die auf einem nicht-greifbaren Speichermedium gespeichert sind, auszuführen, um einen Eingaberahmen der Vielzahl von Frames zu identifizieren, um den Eingaberahmen unter Verwendung eines Eingabe-Quantifizierungsparameters zu kodieren, um eine oder mehrere kodierte Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des Eingaberahmens zu identifizieren, um eine Anzahl an Bits als Antwort auf das Kodieren des Eingaberahmens zu generieren, um mindestens einen Kodierparameter auf Basis der Anzahl an Bits und einer Ziel-Bitrate zur Kodierung des Eingaberahmen anzupassen, um einen kodierten Frame durch das Kodieren des Eingaberahmens unter Verwendung mindestens eines Kodierparameters zu generieren und um den kodierten Frame in einem Ausgabe-Bitstream zu übertragen.
  • Eine Vorrichtung gemäß einem anderen Aspekt der Offenbarung umfasst mindestens einen Prozessor, der konfiguriert ist, um Anweisungen, die auf einem nicht-greifbaren Speichermedium gespeichert sind, auszuführen, um einen Eingaberahmen der Vielzahl von Frames zu identifizieren, um den Eingaberahmen bei einer ersten Bitrate, die für einen konstanten Quantifizierungsparameter repräsentativ ist, zu kodieren, um eine oder mehrere codierte Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des Eingaberahmens zu identifizieren, um die erste Bitrate einer Mindestzielbitrate und einer Höchstzielbitrate für den Eingaberahmen zu vergleichen, um mindestens einen Kodierparameter als Antwort auf das Vergleichen der ersten Bitrate zur Mindestzielbitrate und zur Höchstzielbitrate anzupassen, um einen kodierten Frame durch das Kodieren des Eingaberahmens unter Verwendung mindestens eines Kodierparameters zu generieren und um den kodierten Frame in einem Ausgabe-Bitstream zu übertragen.
  • Diese und sonstige Aspekte der vorliegenden Offenbarung werden in der folgenden detaillierten Beschreibung der Ausführungsformen, der beiliegenden Ansprüche und der begleitenden Figuren offenbart.
  • KURZBESCHREIBUNG DER ZEICHNUNGEN
  • Die Erfindung wird am besten anhand der folgenden detaillierten Beschreibung am besten verständlich, wenn sie in Verbindung mit den beigefügten Zeichnungen gelesen wird. Sofern dies nicht anders angegeben ist, beziehen sich gleiche Bezugsnummern innerhalb der verschiedenen Figuren auf gleiche Elemente.
  • 1A ist ein Graph, der eine Ziel-Bitrate für das Kodieren eines Videodatenstroms anzeigt, die aufgrund eines Höchstquantifizierungsparameters überschritten wird.
  • 1B ist ein Graph, der eine Ziel-Bitrate für das Kodieren eines Videodatenstroms anzeigt, die aufgrund eines Mindestquantifizierungsparameters unterschritten wird.
  • 2 ist ein Schaltplan eines Videokodierungs- und -dekodierungssystems.
  • 3 ist ein Blockdiagramm eines Beispiels eines Computergeräts, das eine Übertragungsstation oder eine Empfangsstation implementieren kann.
  • 4 ist ein Diagramm eines typischen Videodatenstroms, der kodiert, und dann im Anschluss daran, dekodiert werden soll.
  • 5 ist ein Blockdiagramm eines Videokomprimierungssystems gemäß einem Aspekt der sich hierin befindlichen Lehren.
  • 6 ist ein Blockdiagramm eines Videodekomprimierungssystems gemäß einem anderen Aspekt der sich hierin befindlichen Lehren.
  • 7 ist ein Flussdiagramm eines Beispiels eines Prozesses für das Erreichen einer Zielkodierbitrate anhand einer Einzeldurchlaufkodierung.
  • 8 ist ein Flussdiagramm eines Beispiels eines Prozesses für das Erreichen einer Zielkodierbitrate anhand einer Zwei-Durchlauf-Kodierung.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Ratensteueralgorithmen in Videokodiervorrichtungen verfolgen das Ziel, die kodierungserzeugende konstante Bitrate beizubehalten, wenn die Komplexität der Eingabedaten im Laufe der Zeit variiert. Eine konstante Bitrate kann durch das Anpassen eines Quantifizierungsparameters (QP) für jeden Frame auf Basis der Bitmenge, die vom (von) vorhergehenden Frame(s) generiert worden ist, erzielt werden. Im Allgemeinen reduziert eine höhere Quantifizierung die Bitrate und eine niedrigere Quantifizierung erhöht sie. Der Quantifizierungsparameter lässt auf eine Größenordnung schließen, bei der Daten eines Videodatenstroms von einer Kodiervorrichtung quantifiziert werden. In denjenigen Fällen, in denen ein höherer Quantifizierungsparameter von einer Kodiervorrichtung verwendet wird, umfasst das Quantifizierungsstadium bei höheren Quantifizierungsparametern folglich eine höhere Reduktion der Videodaten und bei niedrigeren Quantifizierungsparametern eine niedrigere Reduktion der Videodaten. Die sich daraus ergebenden quantifizierten Videodaten lassen auf eine Bitrate schließen, bei der ein Frame eines Videodatenstroms, welcher die Daten umfasst, kodiert wird. Im Allgemeinen würde die Verwendung eines höheren Quantifizierungsparameters für den jeweiligen Frame eines Videodatenstroms zu einer geringeren Frame-Bitrate führen und die Verwendung eines niedrigeren Quantifizierungsparameters zu einer höheren Frame-Bitrate führen.
  • Nichtsdestotrotz kann es, je nach der Komplexität der Videosequenz und der unterschiedlichen Fähigkeiten der Kodiervorrichtung, Fälle geben, in denen eine Ziel-Bitrate für das Kodieren eines gegebenen Videodatenstroms nicht erzielt werden kann. Dies hängt möglicherweise damit zusammen, dass der QP bereits auf einen Höchstgrenzwert begrenzt worden ist (z. B. ein Wert für den QP, dessen Erhöhung eine Verringerung der Videoqualität in Relation zur Auflösung durch die Produktion offensichtlicher visueller Artefakte bedingt) und dennoch über eine Bitrate verfügt, die nicht niedrig genug ist, und somit eine Überschreitung der Bitrate zur Folge hat. Alternativ dazu kann die Verwendung eines großen QPs zu Kodierartefakten führen, die eine nachteilige Auswirkung auf die Videoqualität haben. Falls der Wunsch auf ähnliche Weise darin besteht, die Videoqualität für einen Benutzer bei einer gegebenen Bandbreite zu optimieren und der QP einen Mindestschwellenwert erreicht hat (z. B. einen Wert für den QP, für den weitere Senkungen keinerlei Auswirkungen auf die Verbesserung der Videoqualität relativ zur Auflösung haben), gibt es möglicherweise keinen anderen Weg, um die Videoqualität noch weiter zu verbessern. Demzufolge leidet das Benutzererlebnis darunter.
  • 1A und 1B sind Graphen, die je eine Ziel-Bitrate für das Kodieren eines Videodatenstroms darstellen, die jeweils aufgrund eines Höchstquantifizierungsparameters überschritten und aufgrund eines Mindestquantifizierungsparameters unterschritten worden ist. Die horizontalen Achsen geben die aufeinanderfolgende Progression der Frames eines Videodatenstroms an. der von einer Kodiervorrichtung kodiert worden ist und die vertikalen Achsen geben einen Quantifizierungsparameter an, der in einem Stadium der Kodiervorrichtung für den jeweiligen Frame verwendet wird. Der Schwellenwert des Mindest-QP 100 und der Schwellenwert des Höchst-QP 102 für die kodierenden Frames des Videodatenstroms werden als konstante Werte relativ zur Ziel-Bitrate 104 dargestellt. Die Figuren geben ferner an, dass je nach den Daten, die codiert werden, die Ziel-Bitrate 104 möglicherweise nicht allein mittels der Erhöhung oder der Senkung des QP 106 erzielt werden kann. Die Frame-Bitrate 108 kann schwanken, zum Beispiel aufgrund der Komplexität der Kodierung der Eingabedaten, die einen gegebenen Frame umfassen.
  • Wie in 1A ersichtlich, steigt die Frame-Bitrate 108 an, sobald die Daten des Videodatenstroms komplexer werden. Als Antwort auf einen Anstieg der Frame-Bitrate 108 erhöht die Kodiervorrichtung den QP 106 und versucht dabei, die Ziel-Bitrate 104 für den Video Datenstrom aufrechtzuerhalten. Schließlich erreicht der QP 106 jedoch den Höchst-QP-Schwellenwert 102 und kann somit nicht weiter erhöht werden, obwohl die Frame-Bitrate 108 immer noch nicht die Ziel-Bitrate 104 erreicht hat, da die kodierten Daten nach wie vor zu umfangreich sind, um die Ziel-Bitrate 104 zu erreichen. Dies wird als eine Bitrate-Überschreitung bezeichnet, da die Frame-Bitrate 108 sich immer noch oberhalb der Ziel-Bitrate 104 befindet, trotz der Tatsache, dass der Höchst-QP-Schwellenwert 102 begrenzt wird. Wie in ähnlicher Weise aus 1B ersichtlich, ist die Kodiervorrichtung in der Lage, den QP 106 zu senken, sofern u. U. ermittelt wird, dass Ziel-Bitrate 104 aufgrund der Tatsache, dass die Frame-Bitrate 108 zu niedrig liegt, nicht erzielt werden konnte. Falls die Frame-Bitrate 108 trotz der Tatsache, dass der Mindest-QP-Schwellenwert 100 erzielt worden ist, unterhalb der Ziel-Bitrate 104 verbleibt, führt dies zu einer Unterschreitung der Bitrate.
  • Dementsprechend sind herkömmliche Kodiervorrichtungen durch eine einfache Anpassung eines QP nicht in der Lage, eine konstante Bitrate für das Kodieren von Videodaten zu erzielen. Während einige Kodiervorrichtungen ferner in der Lage sind, einen Schlüsselrahmen für das Kodieren einzufügen, ist diese Lösung nicht optimal, zumindest aufgrund der Tatsache, dass sie notwendigerweise zu einer Bitraten-Spitze führt, wenn der Schlüsselrahmen kodiert wird. Im Gegensatz dazu beschreibt die vorliegende Offenbarung eine dynamische Skalierung des Referenzframes, um die Durchführung der Ratensteuerung zu verbessern, indem die Auflösung während der Kodierung umgeschaltet wird. Die Ratensteuerung wird demnach zum Beispiel von der Kodiervorrichtung mittels einer internen Skalierung des Referenzframes vor der Ausbildung des dafür vorgesehenen Vorhersagesignals, erzielt. Einzeldurchlauf- und Zwei-Durchlauf-Kodiervorrichtungen für das Kodieren eines Videodatenstroms werden beschrieben. In einer Zwei-Durchlauf-Kodiervorrichtung kodiert ein erster Durchlauf Frames eines Videodatenstroms unter Verwendung einer konstanten Quantifiziervorrichtung und ein zweiter Durchlauf weist jedem Frame Bits auf optimale Weise zu, da ihm im Voraus bekannt ist, welche Frames komplex und welche Frames einfach sind. Weitere Details der dynamischen Skalierung des Referenzframes werden hierin mit dem anfänglichen Verweis auf ein System beschrieben, in dem sie implementiert werden kann.
  • 2 ist ein Schaltplan eines Videokodierungs- und -dekodierungssystems 200. Bei einer Übertragungsstation 202 kann es sich zum Beispiel um einen Computer handeln, der über eine interne Konfiguration von Hardware, wie diejenige, die in 3 beschrieben wird, verfügt. Sonstige geeignete Implementierungen der Übertragungsstation 202 sind jedoch möglich. Zum Beispiel kann die Verarbeitung der Daten von der Übertragungsstation 202 auf mehrere Geräte verteilt werden.
  • Ein Netzwerk 204 kann die Übertragungsstation 202 mit einer Empfangsstation 206 zur Kodierung und Dekodierung des Videodatenstroms verbinden. Insbesondere kann der Videodatenstrom in der Übertragungsstation 202 kodiert werden und der kodierte Videodatenstrom kann in der Empfangsstation 206 dekodiert werden. Bei Netzwerk 204 kann es sich zum Beispiel um das Internet handeln. Bei Netzwerk 204 kann es sich auch um ein lokales Netzwerk (LAN), ein Weitverkehrsnetzwerk (WAN), ein virtuelles privates Netzwerk (VPN), ein Mobilfunknetz oder um jedes andere Mittel für das Übertragen des Videodatenstroms von der Übertragungsstation 202 auf die Empfangsstation 206, wie in diesem spezifischen Beispiel dargestellt, handeln.
  • Bei der Empfangsstation 206 kann sich in einem Beispiel um einen Computer handeln, der über eine interne Konfiguration von Hardware verfügt, wie etwa derjenigen, die in 3 beschrieben wird. Dennoch sind sonstige geeignete Implementierungen der Empfangsstation 206 möglich. Zum Beispiel kann die Verarbeitung der Daten von der Empfangsstation 206 auf mehrere Geräte verteilt werden.
  • Sonstige Implementierungen des Videokodierungs- und Dekodierungssystems 200 sind möglich. Zum Beispiel kann eine Implementierung das Netzwerk 204 auslassen. In einer anderen Implementierung kann ein Videodatenstrom kodiert werden und dann zum Zwecke einer zu einem späteren Zeitpunkt stattfindenden Übertragung auf die Empfangsstation 206 oder auf jedes andere Gerät, das über einen Speicher verfügt, gespeichert werden. In einer Implementierung erhält die Empfangsstation 206 (z. B. über das Netzwerk 204, einen Computerbus und/oder einige Kommunikationspfade) den kodierten Videodatenstrom und speichert den Videodatenstrom für ein späteres Dekodieren. In einer exemplarischen Implementierung wird ein Echtzeit-Transportprotokoll (RTP) zur Übertragung des kodierten Videos über das Netzwerk 204 verwendet. In einer anderen Implementierung kann ein Transportprotokoll, zu dem das RTP nicht gehört, verwendet werden z. B. ein HTTP-basiertes Videostreaming-Protokoll.
  • Wenn die Übertragungsstation 202 und/oder die Empfangsstation 206 beispielsweise in einem Videokonferenzsystem verwendet werden, können sie über die Fähigkeit verfügen, einen Videodatenstrom, wie unten beschrieben, sowohl zu kodieren als auch zu dekodieren. Zum Beispiel kann es sich bei der Empfangsstation 206 um einen Videokonferenzteilnehmer handeln, der einen kodierten Videobitstream von einem Videokonferenz-Server erhält (z. B. die Übertragungsstation 202), um diesen zu dekodieren und ihn sich anzusehen und ferner sein eigenes Videobitstream an den Videokonferenz-Server übermittelt, um von anderen Teilnehmern dekodiert und angesehen zu werden.
  • 3 ist ein Blockdiagramm eines Beispiels eines Computergeräts 300, das eine Übertragungsstation oder eine Empfangsstation implementieren kann. Zum Beispiel kann das Computergerät 300 sowohl die Übertragungsstation 202 als auch die Empfangsstation 206 aus 2 implementieren. Das Computergerät 300 kann in Form eines Computersystems, einschließlich mehreren Computergeräten, oder in Form eines einzelnen Computergeräts, zum Beispiel eines mobilen Telefons, eines Tablet-Computers, eines Laptop-Computers, eines Notebook-Computers, eines Desktop-Computers usw. zur Verfügung stehen.
  • Bei einer CPU 302 in Computergerät 300 kann es sich um eine herkömmliche zentrale Verarbeitungseinheit handeln. Alternativ dazu, kann es sich bei der CPU 302 um jede andere Art von Gerät handeln, oder um mehrere Geräte, die in der Lage sind, Informationen, die noch nicht existieren, oder erst zu einem späteren Zeitpunkt entwickelt werden, zu manipulieren und zu verarbeiten. Obwohl die offengelegten Implementierungen mit einem einzelnen Prozessor, wie ersichtlich, durchgeführt werden können, z. B. die CPU 302, können Vorteile hinsichtlich der Geschwindigkeit und des Wirkungsgrads unter Verwendung von mehr als einem Prozessor erzielt werden.
  • Bei einem Speicher 304 in Computergerät 300 kann es sich um ein Nur-Lese-Speicher-(ROM)-Gerät oder um ein Direktzugriff-Speicher-(RAM)-Gerät in einer Implementierung handeln. Jede andere geeignete Art von Speichergerät kann als der Speicher 304 verwendet werden. Der Speicher 304 kann Code und Daten 306 beinhalten, auf die, die CPU 302 unter Verwendung eines Busses 312 zugreifen kann. Der Speicher 304 kann ferner ein Betriebssystem 308 und Anwendungsprogramme 310 beinhalten, wobei die Anwendungsprogramme 310 das mindestens eine Programm beinhalten, welches der CPU 302 die Erlaubnis erteilt, die hier beschriebenen Verfahren durchzuführen. Zum Beispiel können Anwendungsprogramme 310 Anwendungen 1 bis N beinhalten, die ferner eine Videokodierungsanwendung beinhalten, welche dich hier beschriebenen Verfahren durchführt. Das Computergerät 300 kann auch eine zweite Speichervorrichtung 314 beinhalten, bei der es sich zum Beispiel um eine Speicherkarte handeln kann, die mit einem mobilen Computergerät verwendet wird. Da die Videokommunikationssitzungen unter Umständen eine beträchtliche Informationsmenge beinhalten können, können sie vollständig oder teilweise im sekundären Speicher 314 gespeichert werden und wenn sie zur Weiterverarbeitung erforderlich sind, auf den Speicher 304 geladen werden.
  • Das Computergerät 300 kann auch ein oder mehrere Ausgabegeräte, wie etwa ein Display 318, beinhalten. Bei Display 318 kann es sich in einem Beispiel um ein berührungsempfindliches Display handeln, das ein Display mit einem berührungsempfindlichen Element kombiniert, das während seines Betriebs in der Lage ist, Berührungseingaben wahrzunehmen. Das Display 318 kann an die CPU 302 über den Bus 312 gekoppelt sein. Sonstige Ausgabegeräte, die es einem Benutzer erlauben, das Computergerät 300 zu programmieren und auf sonstige Weise zu verwenden, können zusätzlich zum Display 318 oder als Alternative dazu, bereitgestellt werden. Wenn es sich bei dem Ausgabegerät um ein Display handelt oder dieses ein Display beinhaltet, kann das Display auf verschiedene Arten, einschließlich anhand einer Flüssigkristallanzeige (LCD), eines Kathodenstrahlröhren-(CRT)-Displays, oder eines Leuchtdioden-(LED)-Displays, wie etwa eines OLED Displays, implementiert werden.
  • Das Computergerät 300 kann auch eine Bildwahrnehmungsvorrichtung 320, wie zum Beispiel eine Kamera, oder jede andere Bildwahrnehmungsvorrichtung 320, die bereits existiert oder zu einem späteren Zeitpunkt entwickelt werden wird, die ein Bild, wie etwa ein Bild eines Benutzers, der das Computergerät 300 betreibt, wahrnehmen kann, beinhalten oder sich in Kommunikation damit befinden. Die Bildwahrnehmungsvorrichtung 320 kann so positioniert werden, dass sie dem Benutzer, der das Computergerät 300 betreibt, direkt zugewandt ist. In einem Beispiel kann die Position und die optische Achse der Bildwahrnehmungsvorrichtung 320 so konfiguriert werden, dass das Sichtfeld einen Bereich, der direkt an das Display 318 angrenzt, und von dem aus, das Display 318 sichtbar ist, beinhaltet.
  • Das Computergerät 300 kann auch eine Lautewahrnehmungsvorrichtung 322, wie zum Beispiel ein Mikrofon oder jede andere Lautewahrnehmungsvorrichtung, die bereits existiert, oder zu einem späteren Zeitpunkt entwickelt werden wird, und die in der Lage ist, Laute in der Nähe eines Computergeräts 300 wahrzunehmen, miteinbeziehen oder sich damit in Kommunikation befinden. Die Lautewahrnehmungsvorrichtung 322 kann so positioniert werden, dass sie dem Benutzer, der das Computergerät 300 betreibt, zugewendet ist, und kann konfiguriert werden, um Laute, wie zum Beispiel Sprechlaute oder sonstige von Äußerungen ausgehende Laute, zu empfangen, die vom Benutzer gemacht werden, während der Benutzer das Computergerät 300 betreibt.
  • Obwohl die CPU 302 und der Speicher 304 des Computergeräts 300 in 3, als innerhalb einer einzelnen Einheit integriert, abbildet werden, können auch andere Konfigurationen verwendet werden. Die Operationen der CPU 302 können über mehrere Maschinen (wobei jede Maschine über einen oder mehrere Prozessoren verfügt) verteilt werden, die direkt bzw. über ein lokales Netzwerk oder ein sonstiges Netzwerk aneinandergekoppelt werden können. Der Speicher 304 kann über mehrere Maschinen, wie etwa netzwerkbasierte Speicher oder Speicher innerhalb mehrerer Maschinen, welche die Operationen des Computergeräts 300 durchführen, verteilt werden. Obwohl der Bus 312 des Computergeräts 300 hier als ein einzelner Bus abgebildet wird, kann er aus mehreren Bussen bestehen. Ferner kann der sekundäre Speicher 314 direkt an die anderen Komponenten des Computergeräts 300 gekoppelt werden oder kann über ein Netzwerk zugänglich gemacht werden und kann eine einzelne integrierte Einheit, wie etwa eine Speicherkarte oder mehrere Einheiten, wie etwa mehrere Speicherkarten umfassen. Das Computergerät 300 kann somit in einer breiten Vielfalt von Konfigurationen implementiert werden.
  • 4 ist ein Diagramm eines Beispiels eines Videodatenstroms 400, der kodiert und dann im Anschluss daran, dekodiert werden soll. Der Videodatenstrom 400 beinhaltet eine Videosequenz 402. Auf der nächsten Ebene beinhaltet die Videosequenz 402 eine Anzahl an angrenzenden Frames 404. Während drei Frames als die angrenzenden Frames 404 abgebildet werden, kann die Videosequenz 402 jede Anzahl an angrenzenden Frames 404 beinhalten. Die angrenzenden Frames 404 können dann weiter in einzelne Frames, z. B. ein Frame 406, unterteilt werden. Auf der nächsten Ebene kann der Frame 406 in eine Serie von Segmenten oder Ebenen 408 unterteilt werden. Die Segmente 408 können Teilmengen von Frames sein, die zum Beispiel eine Parallelverarbeitung erlauben. Die Segmente 408 können auch Teilmengen von Frames sein, welche die Videodaten in unterschiedliche Farben trennen können. Zum Beispiel kann ein Frame 406 von Farbvideodaten eine Leuchtdicke-Ebene und zwei Chrominanz-Ebenen beinhalten. Die Segmente 408 können bei verschiedenen Auflösungen abgetastet werden.
  • Unabhängig davon, ob der Frame 406 in Segmente 408 unterteilt ist oder nicht, kann der Frame 406 ferner in Blöcke 410 unterteilt werden, welche Daten umfassen, die zum Beispiel 16×16 Pixel im Frame 406 entsprechen. Die Blöcke 410 können auch angeordnet werden, um Daten von einer oder mehreren Ebenen 408 an Pixeldaten zu enthalten. Die Blöcke 410 können auch über jede andere geeignete Größe, wie etwa 4×4 Pixel, 8×8 Pixel, 16×8 Pixel, 8×16 Pixel, 16×16 Pixel oder größer, verfügen. Sofern nichts anderes angegeben ist, werden die Begriffe Block und Makroblock hierin austauschbar verwendet.
  • 5 ist ein Blockdiagramm einer Kodiervorrichtung 500 gemäß einer Implementierung. Die Kodiervorrichtung 500 kann, wie vorstehend beschrieben, in der Übertragungsstation 202 implementiert werden, wie etwa durch das Bereitstellen eines Computersoftwareprogramms, das im Speicher, wie zum Beispiel dem Speicher 304, gespeichert ist. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die, wenn sie von einem Prozessor, wie etwa der CPU 302, ausgeführt werden, die Übertragungsstation 202 dazu veranlassen, Videodaten auf die in 5 beschriebene Weise zu kodieren. Die Kodiervorrichtung 500 kann auch als eine spezialisierte Hardware implementiert werden, die zum Beispiel Teil der Übertragungsstation 202 darstellt. In einer besonders wünschenswerten Implementierung handelt es sich bei der Kodiervorrichtung 500 um eine Hardware-Kodiervorrichtung. Die Kodiervorrichtung 500 verfügt über die folgenden Stadien, um die verschiedenen Funktionen in einem Vorwärtspfad (anhand der durchgezogenen Verbindungslinien dargestellt) durchzuführen, um einen kodierten oder komprimierten Bitstream 520 unter Verwendung des Videodatenstroms 400 als Eingabe zu erstellen: ein Intra/Inter-Prädiktionsstadium 502, ein Transformationsstadium 504, ein Quantifizierungsstadium 506, und ein Entropiekodierungs-Stadium 508. Die Kodiervorrichtung 500 kann auch einen Rekonstruktionspfad (von der punktierten Verbindungslinie dargestellt) beinhalten, um einen Frame für das Kodieren von zukünftigen Blöcken zu rekonstruieren. In 5 verfügt die Kodiervorrichtung 500 über die folgenden Stadien, um die verschiedenen Funktionen im Rekonstruktionspfad durchzuführen: ein Dequantifizierungsstadium 510, ein inverses Transformationsstadium 512, ein Rekonstruktionsstadium 514, ein Loopfiltering-Stadium 516. Sonstige strukturelle Variationen der Kodiervorrichtung 500 können verwendet werden, um den Videodatenstrom 400 zu kodieren.
  • Wenn der Videodatenstrom 400 zur Kodierung präsentiert wird, kann jeder Frame 406 in Blockeinheiten verarbeitet werden. Im Intra/Inter-Prädiktionsstadium 502 kann jeder Block unter Verwendung einer Intra-Frameprädiktion (auch Intra-Prädiktion genannt) oder einer Inter-Frameprädiktion (auch Inter-Prädiktion genannt) kodiert werden. In jedem Fall kann ein Prädiktionsblock ausgebildet werden. Im Falle einer Intra-Prädiktion kann ein Prädiktionsblock aus Proben des gegenwärtigen Frames ausgebildet werden, die zuvor schon kodiert und rekonstruiert worden sind. Im Falle einer Intra-Prädiktion kann ein Prädiktionsblock aus Proben ausgebildet werden, die sich in einem oder mehreren der zuvor schon konstruierten Referenzframe befinden.
  • Danach, und immer noch unter Bezugnahme auf 5, kann der Prädiktionsblock vom gegenwärtigen Block im Intra/Inter-Prädiktionsstadium 502 subtrahiert werden, um einen Restblock zu erzeugen (auch Rest genannt). Das Transformationsstadium 504 wandelt den Rest in Transformationskoeffizienten um – zum Beispiel in die Frequenz-Domain unter der Verwendung blockbasierter Transformationen. Das Quantifizierungsstadium 506 wandelt die Transformationskoeffizienten unter Verwendung eines vom Quantisierer ausgegebenen Wertes oder einer Quantisierungsstufe in diskrete Quantum-Werte, die als quantifizierte Transformationskoeffizienten bezeichnet werden, um. Zum Beispiel können die Transformationskoeffizienten durch den vom Quantisierer ausgegebenen Wert geteilt werden und trunkiert werden. Die quantifizierten Transformationskoeffizienten werden dann im Entropiekodierungsstadium 508 entropiekodiert. Die entropiekodierten Koeffizienten werden dann zusammen mit sonstigen Informationen, die verwendet werden, um den Block zu dekodieren, und die zum Beispiel die Art der Prädiktion, die verwendet wird, die Transformationsart, Bewegungsvektoren und den vom Quantisierer ausgegebenen Wert beinhalten, am komprimierten Bitstream 520 ausgegeben. Der komprimierte Bitstream 520 kann unter Verwendung verschiedener Techniken formatiert werden, wie etwa dem Kodierverfahren mit variabler Länge (VLC) oder dem arithmetischen Kodieren. Der komprimierte Bitstream 520 kann auch als ein kodierter Videodatenstrom oder ein kodierter Video-Bitstream bezeichnet werden, und die Begriffe können hierin austauschbar verwendet werden.
  • Der Rekonstruktionspfad in 5 (dargestellt mittels der punktierten Verbindungslinie) kann verwendet werden, um sicherzustellen, dass sowohl die Kodiervorrichtung 500 als auch die Dekodiervorrichtung 600 (im Folgenden beschrieben) denselben Referenzframe verwenden, um den komprimierten Bitstream 520 zu dekodieren. Der Rekonstruktionspfad führt Funktionen durch, die über ähnliche Eigenschaften wie Funktionen verfügen, die während des Dekodierverfahrens stattfinden, und auf die im Folgenden näher eingegangen wird, einschließlich der Dequantifizierung der quantifizierten Transformationskoeffizienten im Dequantifizierungsstadium 510 und der inversen Transformation der dequantifizierten Transformationskoeffizienten im inversen Transformationsstadium 512, um einen derivativen restlichen Block zu erzeugen (auch als ein derivativer Rest bezeichnet). Im Rekonstruktionsstadium 414 kann der Prädiktionsblock, der im Intra/Inter-Prädiktionsstadium 502 prognostiziert wurde, zum derivativen Rest zugefügt werden, um einen rekonstruierten Block zu erzeugen. Das Loopfiltering-Stadium 516 kann auf den rekonstruierten Block angewendet werden, um eine Verzerrung, wie etwa Sperrartefakte, zu reduzieren.
  • Andere Variationen der Kodiervorrichtung 500 können verwendet werden, um den komprimierten Bitstream 520 zu kodieren. Zum Beispiel kann eine nicht transformbasierte Kodiervorrichtung das restliche Signal direkt und ohne das Transformationsstadium 504 für bestimmte Blöcke oder Frames quantisieren. In einer anderen Implementierung kann die Kodiervorrichtung über ein Quantifizierstadium 506 und ein Dequantifizierstadium 510 verfügen, die in einem einzigen Stadium kombiniert sind.
  • 6 ist ein Blockdiagramm einer Dekodiervorrichtung 600 in Übereinstimmung mit einer anderen Implementierung. Die Dekodiervorrichtung 600 kann in der Empfangsstation 206 implementiert werden, zum Beispiel durch das Bereitstellen eines Computersoftwareprogramms, das in Speicher 304 gespeichert ist. Das Computersoftwareprogramm kann Maschinenanweisungen beinhalten, die, wenn sie von einem Prozessor, wie etwa einer CPU 302, ausgeführt werden, die Empfangsstation 206 dazu veranlassen, Videodaten auf diejenige Weise, die in 6 beschrieben wird, zu dekodieren. Die Dekodiervorrichtung 600 kann auch in Hardware implementiert werden, die zum Beispiel in der Übertragungsstation 202 oder der Empfangsstation 206 enthalten ist.
  • Die Dekodiervorrichtung 600, die über ähnliche Eigenschaften wie der Rekonstruktionspfad der Kodiervorrichtung 500, die vorstehend besprochen wird, verfügt, beinhaltet ein Beispiel der folgenden Stadien, um verschiedene Funktionen durchzuführen, um einen Ausgabe-Videodatenstrom 616 vom komprimierten Bitstream 520 zu erzeugen: ein Entropie-Dekodierstadium 602, ein Dequantifizierungsstadium 604, ein inverses Transformationsstadium 606, eine Intra/Inter-Prädiktionsstadium 608, ein Rekonstruktionsstadium 610, ein Loopfiltering-Stadium 612, und ein Deblockier-Filtering-Stadium 614. Sonstige strukturelle Variationen der Dekodiervorrichtung 600 können verwendet werden, um den komprimierten Bitstream 520 zu dekodieren.
  • Wenn der komprimierte Bitstream 520 zur Dekodierung präsentiert wird, können Datenelemente innerhalb des komprimierten Bitstreams 520 vom Entropie-Dekodierstadium 602 dekodiert werden, um einen Satz quantisierter Transformationskoeffizienten zu erzeugen. Im Dequantifizierungsstadium 604 werden die quantifizierten Transformationskoeffizienten (z. B. durch das Multiplizieren der quantifizierten Transformationskoeffizienten mit dem vom Quantisierer ausgegebenen Wert) dequantifiziert und im inversen Transformationsstadium 606 werden die dequantifizierten Transformationskoeffizienten invers transformiert, um einen derivativen Rest zu erzeugen, der mit demjenigen Rest, der im inversen Transformationsstadium 512 in der Kodiervorrichtung 500 erzeugt wurde, identisch ist. Unter Verwendung der Header-Informationen, die vom komprimierten Bitstream 520 dekodiert worden sind, kann die Dekodiervorrichtung 600 das Intra/Inter-Prädiktionsstadium 608 verwenden, um denselben Prädiktionsblock, der in der Kodiervorrichtung 500 erzeugt worden ist, z. B. im Intra/Inter-Prädiktionsstadium 502, zu erzeugen. Im Rekonstruktionsstadium 610 kann der Prädiktionsblock zum derivaten Rest hinzugefügt werden, um einen rekonstruierten Block zu erzeugen. Das Loopfiltering Stadium 612 kann auf den rekonstruierten Block angewendet werden, um blockierende Artefakte zu reduzieren. Sonstige Filtervorgänge können auf den rekonstruierten Block angewendet werden. In diesem Beispiel wird das Deblockier-Filtering-Stadium 614 auf den rekonstruierten Block angewendet, um die Blockierverzerrung zu reduzieren, und das Ergebnis wird als der Ausgabe-Videodatenstrom 616 ausgegeben. Der Ausgabe-Videodatenstrom 616 kann auch als ein dekodierter Videostream bezeichnet werden, und die Begriffe können austauschbar verwendet werden. Sonstige Variationen der Dekodiervorrichtung 600 können verwendet werden, um den komprimierten Bitstream 520 zu dekodieren. Zum Beispiel kann die Dekodiervorrichtung 600 den Ausgabe-Videodatenstrom 616 ohne das Deblockier-Filtering-Stadium 614 erzeugen.
  • Bei den 7 und 8 handelt es sich um Flussdiagramme der Verfahren 700 und 800 für das Verwenden der Auflösungs-Skalierung, um bei der Einzeldurchlauf- und Zwei-Durchlauf-Kodierung eine jeweils konstante Ziel-Bitrate zu erzielen. Die Verfahren 700 und 800 können in einem System, wie etwa dem Computergerät 300, implementiert werden, um die Kodierung eines Videodatenstroms zu unterstützen. Die Prozesse 700 und 800 können zum Beispiel als ein Softwareprogramm implementiert werden, das von einem Computergerät, wie etwa der Übertragungsstation 202 oder der Empfangsstation 206, ausgeführt wird. Das Softwareprogramm kann maschinenlesbare Anweisungen beinhalten, die in einem Speicher, wie etwa dem Speicher 304 gespeichert werden, der, wenn er von einem Prozessor, wie etwa der CPU 302 ausgeführt wird, das Computergerät dazu veranlasst, entweder Verfahren 700 oder Verfahren 800 durchzuführen. Die Verfahren 700 und 800 können auch unter Verwendung von Hardware vollständig oder teilweise implementiert werden. Wie oben erklärt, können einige Computergeräte über mehrere Speicher und mehrere Prozessoren verfügen und die Schritte oder die Operationen jedes der Verfahren 700 und 800 können in derartigen Fällen unter der Verwendung verschiedener Prozessoren und Speicher verteilt werden. Die Verwendung der Begriffe „Prozessor” und „Speicher” im Singular, umfasst hierin sowohl Computergeräte, die lediglich über einen Prozessor oder einen Speicher verfügen, als auch Computergeräte, die über mehrere Prozessoren oder Speicher verfügen, die jeweils bei der Durchführung einiger aber nicht notwendigerweise aller angegebenen Schritte verwendet werden.
  • Zur Vereinfachung der Erklärung wird sowohl Verfahren 700 als auch Verfahren 800 in einer Serie von Schritten oder Operationen abgebildet und beschrieben. Schritte und Operationen in Übereinstimmung mit dieser Offenbarung können jedoch in verschiedenen Reihenfolgen und/oder gleichzeitig erfolgen. Darüber hinaus können Schritte oder Operationen, in Übereinstimmung mit dieser Offenbarung, zusammen mit anderen Schritten oder Operationen, die hierin weder präsentiert noch beschrieben werden, erfolgen. Des Weiteren sind nicht alle veranschaulichten Schritte oder Operationen unbedingt notwendig, um ein Verfahren gemäß dem offenbarten Gegenstand zu implementieren. Eines der Verfahren 700 oder 800 kann für jeden Frame des Eingabesignals wiederholt werden.
  • Unter Bezugnahme auf 7, wird das Verfahren 700 zur Verwendung der Auflösungs-Skalierung im Frame einer Einzeldurchlaufkodierung, um eine relativ konstante Ziel-Bitrate zu erzielen, in Gang gesetzt, indem bei Operation 702, Werte für eine Ziel-Bitrate, ein anfänglicher QP, ein Mindest-QP-Schwellenwert und ein Höchst-QP-Schwellenwert eingestellt werden. Diese Werte können auf eine anfängliche Auflösung schließen lassen, bei der, der Videodatenstrom kodiert wird. Bei Operation 704 kodiert eine Kodiervorrichtung einen ersten Frame eines Videodatenstroms unter Verwendung des anfänglichen QP. Falls das in einer Frame-Bitrate durchgeführte Kodieren der ersten Frameergebnisse mit der Ziel-Bitrate übereinstimmt, bereitet Operation 706 die Kodiervorrichtung für das Kodieren des nächsten Frames des Videodatenstroms über die Rückkehr zu Operation 704 vor. Andernfalls geht das Verfahren 700 zu einer Auslöse-Anpassungsphase der Operation 708 über, die eine Filtering-Logik verwendet, um zu ermitteln, ob Oszillationen in den Videodaten vorhanden sind. Falls keine Oszillationen vorhanden sind, bereitet Operation 708 die Kodiervorrichtung auf das Kodieren des nächsten Frames des Videostreams über die Rückkehr zu Operation 704 vor. Andernfalls geht das Verfahren 700 zu einer Anpassungsphase über, die bei Operation 710 in Gang gesetzt wird.
  • Bei Operation 710 wird ermittelt, ob eine Überschreitung oder eine Unterschreitung der Grund, dafür ist, dass die Frame-Bitrate, nicht mit der Ziel-Bitrate übereinstimmt. Eine Überschreitung findet in denjenigen Fällen statt, in denen die Frame-Bitrate die Ziel-Bitrate übersteigt (überschreitet), zum Beispiel, da der QP zu niedrig für die Auflösung ist, bei der der Videostream kodiert worden ist. Eine Unterschreitung findet in denjenigen Fällen statt, in denen die Frame-Bitrate die Ziel-Bitrate untersteigt (unterschreitet), zum Beispiel, da der QP zu hoch für die Auflösung ist, bei der der Videostream kodiert worden ist. Gleichgültig, ob eine Überschreitung oder eine Unterschreitung ermittelt wird, werden ein oder mehrere Kodierparameter des Videodatenstroms im Folgenden angepasst, um die Qualität des Videodatenstroms zu verbessern. Kodierparameter können jegliche Werte beinhalten, die, wenn sie angepasst werden, eine Wirkung auf die Qualität oder die visuelle Darstellung des Videodatenstroms haben. In einer Implementierung beinhalten Kodierparameter ohne Begrenzung den QP, die Video-Auflösung, den Höchst-QP-Schwellenwert und den Mindest-QP-Schwellenwert. Die im Folgenden von der Kodiervorrichtung gemachten Anpassungen hängen davon ab, ob die Bitrate-Angelegenheit aufgrund einer Überschreitung oder einer Unterschreitung vorliegt.
  • Falls Operation 710 ermittelt, dass eine Bitrate-Überschreitung vorliegt, geht das Verfahren 700 zu Operation 712 über, wobei ermittelt wird, ob der Wert, der gegenwärtig für den QP eingestellt ist (bei dem es sich möglicherweise um den anfänglichen QP handelt, der bei Operation 702 in denjenigen Fällen eingestellt worden ist, in denen Operation 710 nur ein einziges Mal durchgeführt worden ist), demjenigen Wert entspricht, der gegenwärtig für den Höchst-QP-Schwellenwert eingestellt ist. Ist dies nicht der Fall, wird der QP bei Operation 714 erhöht, und diese Operation bereitet die Kodiervorrichtung auf das Kodieren des nächsten Frames des Videodatenstroms unter Verwendung des erhöhten QP mittels der Rückkehr zu Operation 704 vor. Falls der Wert des QP jedoch dem Wert für den Höchst-QP-Schwellenwert entspricht, kann der QP nicht weiter erhöht werden, da er den wirksamsten Wert in Relation zur Auflösung des Videodatenstroms bereits erreicht hat. Demzufolge senkt das Verfahren 700 die Auflösung des Videodatenstroms bei Operation 716, und dies beinhaltet die Neueinstellung der Werte des Mindest-QP-Schwellenwerts und des Höchst-QP-Schwellenwerts. Operation 716 senkt auch den Wert des QP auf Basis der Herabsetzung der Auflösung herab. Operation 716 bereitet dann die Kodiervorrichtung mittels der Rückkehr zu Operation 704 auf das Kodieren des nächsten Frames unter Verwendung der neuen Werte hinsichtlich der Auflösung und des neuen QP, des Mindest-QP-Schwellenwerts, und des Höchst-QP-Schwellenwerts.
  • Falls Operation 710 stattdessen ermittelt, dass eine Bitrate-Unterschreitung vorliegt, geht das Verfahren 700 zu Operation 718 über, wobei ermittelt wird, dass der Wert, der gegenwärtig für den QP eingestellt ist (bei dem es sich möglicherweise um den anfänglichen QP handelt, der bei Operation 702 in denjenigen Fällen eingestellt worden ist, in denen Operation 710 nur ein einziges Mal durchgeführt worden ist) demjenigen Wert entspricht, der gegenwärtig für den Mindest-QP-Schwellenwert eingestellt ist. Ist dies nicht der Fall, wird der QP bei Operation 720 herabgesetzt, und diese Operation bereitet die Kodiervorrichtung auf das Kodieren des nächsten Frames des Videodatenstroms unter Verwendung des herabgesetzten QP mittels der Rückkehr zu Operation 704 vor. Falls der Wert des QP jedoch dem Wert für den Mindest-QP-Schwellenwert entspricht, kann der QP nicht weiter herabgesetzt werden, da er den am wenigsten wirksamsten Wert in Relation zur Auflösung des Videodatenstroms bereits erreicht hat. Demzufolge erhöht das Verfahren 700 die Auflösung des Videodatenstroms bei Operation 722, und dies beinhaltet die Neueinstellung der Werte des Mindest-QP-Schwellenwerts und des Höchst-QP-Schwellenwerts. Operation 722 erhöht auch den Wert des QP auf Basis der Erhöhung der Auflösung. Operation 722 bereitet dann die Kodiervorrichtung mittels der Rückkehr zu Operation 704 auf das Kodieren des nächsten Frames unter Verwendung der neuen Werte hinsichtlich der Auflösung und des neuen QP, des Mindest-QP-Schwellenwerts, und des Höchst-QP-Schwellenwerts.
  • Sofern eine Quelle mit höherer Auflösung zur Verfügung steht, besteht eine andere Option darin, die Videoauflösung zu erhöhen, wo die Kodierungs-Bitrate die Ziel-Bitrate durchgängig unterschreitet oder wo die Kodierungs-Bitrate die Ziel-Bitrate oberhalb einer bestimmten Schwellenanzahl von Malen überschreitet. In den Fällen, in denen ein Benutzer zum Beispiel die Auswahl trifft, um sich ein Video bei einer Auflösung von 360p anzusehen, aber seine Bandbreite die Ansicht einer höheren Auflösung ermöglicht, kann die Auflösung des Videos auf eine maximale Auflösung erhöht werden, bei der, der Benutzer das Video über seine Verbindung streamen kann.
  • Bei einer Zwei-Durchlauf-Kodierung beinhaltet ein erster Durchlauf zur Kodierung von Frames eines Videodatenstroms das Ermitteln, welche Frames auf Basis eines Quantifizierungsparameters zu schwierig oder zu einfach zu kodieren sind, zum Beispiel durch das Erfassen einer Anzahl an Bits, die mittels einer Kodierung eines Eingaberahmens, der einem ersten Frame des Videodatenstroms entspricht, generiert werden. Falls die generierte Anzahl an Bits angibt, dass der Eingaberahmen zu schwer oder zu einfach zu kodieren ist, kann die Kodiervorrichtung die Auflösung des Videodatenstroms nach einem zweiten Durchlauf der Kodierung des entsprechenden Frames anpassen. Auf diese Weise kann die Zwei-Durchlauf-Kodierung die meisten Unterschreitungen und Überschreitungen verhindern, indem sie die potentiellen Instanzen desselben während eines ersten Durchlaufs identifizieren und die erforderlichen Anpassungen vornehmen, um den Videodatenstrom auf effektive Weise in einem zweiten Durchlauf zu kodieren. Die Menge der Unterschreitung und der Überschreitung kann den Grad, um den die Auflösung pro Dimension angepasst werden muss, angeben.
  • Bezieht man sich nun auf 8, startet das Verfahren 800 für das Verwenden der Auflösungs-Skalierung in der Zwei-Durchlauf-Kodierung, um eine relativ konstante Ziel-Bitrate zu erreichen, bei Operation 802, indem anfängliche Werte für eine Ziel-Bitrate und einen QP eingestellt werden. Bei Operation 804 wird ein Eingaberahmen empfangen und unter Verwendung einer eingestellten Ziel-Bitrate und QP-Werten kodiert. Als Antwort auf das Kodieren des Eingaberahmens wird eine Anzahl an Bits bei Operation 806 generiert. Die Anzahl an Bits lässt auf eine Bitrate schließen, bei der der Eingaberahmen kodiert wird. Je nach der Größe der generierten Bits kann das Verfahren 800 zu einer Anpassungsphase für das Anpassen der Kodierparameter des Videodatenstroms, wie etwa der Auflösung eines Videos, übergehen. In einer Implementierung kann die Entscheidung darüber, ob zur nächsten Einstellungsphase übergegangen werden soll, darauf basieren, ob die Frame-Bitrate außerhalb einer spezifizierten Reichweite fällt, innerhalb der QP-Ergebnisse hinsichtlich der wünschenswerten Videoqualität variieren (z. B. Videostreaming ohne sichtbare Kodierungsartefakte in Relation zur Auflösung). Falls die Frame-Bitrate sich zum Beispiel innerhalb von 100 bis 200 kbps der Ziel-Bitrate befindet, kann die Operation 808 die Entscheidung treffen, nicht zur Anpassungsphase überzugehen. Für den Fall, dass keine Anpassungen vorgenommen werden müssen, geht das Verfahren 800 zu Operation 816 über, wobei ein kodierter Frame auf Basis des zuvor eingestellten OP-Werts basiert, und dieser kodierte Frame wird dann als Teil des Ausgabe-Videodatenstroms bei Operation 818 übermittelt. In einer Implementierung kann die Festsetzung bei Operation 808 unter Verwendung einer Flagge kodiert werden.
  • Falls bei Operation 808 ermittelt wird, dass eine Anpassung der Auflösung des Videos gemacht werden muss, geht das Verfahren 800 zu Operation 810 über, die ermittelt, ob die Notwendigkeit für die Anpassung aufgrund der Tatsache besteht, dass die Eingaberahmen-Kodierungs-Bitrate die Ziel-Bitrate entweder unterschreitet oder überschreitet. Im Falle einer Überschreitung werden ein oder mehrere Kodierungs-Parameter bei Operation 812 angepasst, zum Beispiel durch die Verringerung der Auflösung des Videodatenstroms. Im Falle einer Unterschreitung werden ein oder mehrere Kodierparameter bei Operation 814 angepasst, zum Beispiel durch das Erhöhen der Auflösung im Videodatenstrom.
  • In einer Implementierung kann die Anpassung der Auflösung des Videos unter Verwendung einer Quadratwurzel des gewichteten Kehrwerts der prozentualen Bitraten-Abweichung, wie etwa Snew = √(1/(α·Bdev)), wobei Snew das neue Skalierung pro Dimension Verhältnis der Auflösung darstellt, a einen a-Gewichtungsparameter darstellt und Bdev eine Abweichung von der Bitrate-Reichweite repräsentiert. In denjenigen Fällen, in denen das Kodieren des Eingabe-Frames zum Beispiel zu einer weniger als 20%igen Überschreitung führt und das gewichtete Parameter auf 1 eingestellt ist, verfügt der Eingabe-Frame des Videodatenstroms über eine Auflösung von 1280×720, vielleicht um Snew = √(1/(1·1,2)) = 0,913 skaliert, infolgedessen sich ein neue Streaming-Auflösung von 1168×657 ergibt. Auf ähnliche Weise kann das Skalierungsverhältnis in denjenigen Fällen, in denen das Kodieren eines Eingaberahmens zu einer schwerwiegenden Unterschreitung von 50% führt, Snew = √(1/(1·0,5)) = 1,414 sein. Auf diese Weise kann die Auflösung des Videodatenstroms so eingestellt werden, dass er bei 1810×1018 kodiert ist. Das Anpassen des Gewichtungsparameters a oberhalb von 1 kann dazu führen, dass eine neue Frame-Bitrate näher an einen mittleren Wert hinsichtlich des annehmbaren Spektrums liegt, (z. B. 150 kbps für ein Spektrum von 100 bis 200 kbps).
  • Nachdem eine Anpassung der Auflösung des Videos vorgenommen worden ist, geht das Verfahren 800 zu Operation 816 über, wobei ein kodierter Frame, der einem Eingabe-Frame entspricht, als Teil eines zweiten Durchlaufs eines Videodatenstroms kodiert wird. Der kodierte Frame wird daher als Teil des Ausgabe-Videodatenstroms bei Operation 818 übermittelt.
  • Die Auflösungs-Skalierung kann weitere Vorzüge, die über die vorstehend beschriebenen hinausgehen, bereitstellen. Zum Beispiel kann die Auflösungs-Skalierung die Leistung der Kodiervorrichtungen verbessern, die keinen annehmbaren Bewegungsvektor für eine Interprognose mit etabliertem Fensterbereich zur Bewegungssuche gefunden haben. Dies führt in der Regel zu einer schlechten Komprimierung aufgrund einer übermäßigen Verwendung der Intra-Vorhersage. Durch das Herunterskalieren des Videodatenstroms in einer derartigen Situation, wird die Bitrate verringert, da es weniger Pixel gibt, die kodiert werden können, und da die Menge der absoluten Bewegung im Videodatenstrom auch verringert wird. Dies kann die Verwendung des Suchfensters verbessern.
  • In einer Implementierung und als Antwort auf das Ermitteln einer Unterschreitung bei Operation 810, beinhaltet Operation 814 das Verringern der Größe des Bewegungssuchbereichs, welches auch anstelle oder zusätzlich zur Verringerung der Auflösung des Videos vorgenommen werden kann. Auf ähnliche Weise beinhaltet Operation 812 als Antwort auf das Ermitteln einer Überschreitung bei Operation 810, das Erhöhen der Größe des Bewegungssuchbereichs anstelle von oder zusätzlich zur Erhöhung der Auflösung des Videos. In einer Implementierung werden Änderungen der Größe des Bewegungssuchbereichs nur für bestimmte Farbkomponenten des Eingaberahmens gemacht, zum Beispiel die Leuchtdicke- und/oder Chrominanz-Pixelwerte davon.
  • In einer Implementierung können ein oder mehrere Kodiervorrichtungs-Einschränkungen mit Bezug auf den Bewegungssuchbereich identifiziert werden, zum Beispiel als Antwort auf das Kodieren des Eingaberahmens bei Operation 804. Die Kodiervorrichtungs-Einschränkungen können Instanzen angeben, in denen ein Bewegungsvektor, der von Kodiervorrichtung 500 gefunden wird, einen Schwellenwert überschreitet, zum Beispiel, in denjenigen Fällen in denen der Videodatenstrom Szenen mit schneller Bewegung beinhaltet, einschließlich einer Menge von Bewegungen, welche das Vermögen der Kodiervorrichtung 500 überschreitet, die Szenen bei einer gegebenen Auflösung auf adäquate Art und Weise darzustellen. In einer Implementierung kann die Auflösung des Videodatenstroms als Antwort auf die Kodiervorrichtungs-Einschränkungen, die angeben, dass der Bewegungsvektor den Schwellenwert überschreitet, verringert werden.
  • In einer Implementierung unterliegt die Größe des Bewegungssuchbereichs keinerlei Änderungen. In denjenigen Fällen, in denen die Kodiervorrichtung 500 beispielsweise als eine Hardware-Kodiervorrichtung implementiert wird, kann der Bewegungssuchbereich statistisch auf eine Größe von N × M eingestellt werden, wobei N und M entweder über denselben Wert oder über verschiedene Werte verfügen. Der Bewegungssuchbereich kann daher nur einen Abschnitt eines Eingaberahmens abdecken, falls die Auflösung des Videodatenstroms höher als N × M ausfällt. Ein Mittelpunkt-Standort des Bewegungssuchbereichs kann beispielsweise mit Bezug auf einen anfänglichen Referenzstandort eines anfänglichen Abschnitts des Eingaberahmens, der abgedeckt werden soll, definiert werden (z. B. ein Mittelpunkt-Standort eines gegenwärtigen Blocks oder eines Stücks, das kodiert werden soll). In einer Implementierung kann die Auflösung des Videodatenstroms jedoch verringert werden, um zum Beispiel das Vermögen der Kodiervorrichtung 500, Bewegungen innerhalb des Bewegungssuchbereichs zu erfassen, zu verbessern, indem diese den Bewegungssuchbereich dazu veranlasst, einen größeren Abschnitt des Eingaberahmens abzudecken. Die Entscheidung die Auflösung auf diese Art und Weise zu verringern (z. B. als Teil der Feststellung, ob die Kodierungs-Parameter bei Operation 808 angepasst werden sollen) kann, wie vorstehend beschrieben, zum Beispiel auf Basis eines Schwellenwerts oder einer sonstigen Kodierungsvorrichtung-Einschränkung in Relation zum Bewegungssuchbereich, getroffen werden. Die Verringerung der Auflösung veranlasst den Mittelpunkt-Standort des Bewegungssuchbereichs dazu, auf Basis eines Referenzstandorts des Abschnitts des Eingaberahmens, der infolgedessen vom Bewegungssuchbereich abgedeckt wird, erneut eingestellt zu werden. Auf ähnliche Weise kann die Auflösung des Videodatenstroms in einer Implementierung auf Basis eines Schwellenwerts oder einer sonstigen Kodiervorrichtungs-Einschränkung erhöht werden. In denjenigen Fällen, in denen die Auflösung zum Beispiel geringer als die Größe des Bewegungssuchbereichs ausfällt (z. B. in denjenigen Fällen, in denen der Bewegungsbereich mehr als einen gesamten Eingaberahmen abdeckt), kann die Kodiervorrichtung 500 die Auflösung des Datenstroms erhöhen, um sie der Größe des Bewegungssuchbereichs anzupassen. Der Mittelpunkt-Standort des Bewegungssuchbereichs könnte sich daher gegebenenfalls am Referenz-Standort des Eingaberahmens befinden oder dortbleiben. Wie hierin verwendet, bezeichnet der Begriff „Mittelpunkt” eine zentrale Position in Relation zu dementsprechenden Dimensionen.
  • Obwohl der eine oder die mehreren Kodiervorrichtung-Einschränkungen hinsichtlich des Bewegungssuchbereichs hierin mit Bezug auf die Zwei-Durchlauf-Kodierung aus 8 besprochen werden, finden sie auch im Kontext einer Einzeldurchlaufkodierung, wie etwa derjenigen, die mit Bezug auf 7 besprochen worden ist, Anwendung. Zum Beispiel kann das Anpassen der Kodierungs-Parameter eines ersten Frames des Videodatenstroms das Identifizieren von Kodiervorrichtungs-Einschränkungen mit Bezug auf einen Bewegungssuchbereich (z. B. als Teil der Ermittlung einer Trigger-Anpassung bei Operation 708) oder das Verringern (oder das Erhöhen) der Auflösung des Videodatenstroms auf Basis der Kodiervorrichtungs-Einschränkungen beinhalten. In einer Implementierung führt das Ändern der Auflösung auf diese Weise dazu, dass ein Mittelpunkt-Standort des Bewegungssuchbereichs mit Bezug auf einen Referenzstandort des Abschnitts des ersten Frames, der infolgedessen vom Bewegungssuchbereich abgedeckt wird, erneut eingestellt wird.
  • In einer anderen Implementierung, in der es sich bei der Kodiervorrichtung 500 um eine Hardware-Kodiervorrichtung handelt, verbleiben die Parameter der Bewegungssuche von Block zu Block und von Frame zu Frame dieselben, mit der Ausnahme, dass der Mittelpunkt-Standort des Bewegungssuchbereichs sich aufgrund des Blocks des Frames, der kodiert wird, ändert. Deswegen kann mehr oder weniger Bewegung von einer Änderung der Auflösung erfasst werden, wenn die Auflösung geändert wird. Zum Beispiel kann das Ändern der Auflösung für bestimmte Blöcke innerhalb des Frames eine bessere Übereinstimmung und somit auch niedrigere Reste bereitstellen, wenn schnelle Bewegungen vorliegen, da die geringere Auflösung mehr Bewegungen innerhalb desselben Suchbereichs erfasst.
  • Bei der Ziel-Bitrate, die im Frame der anfänglichen Operationen des Prozesses 700 und 800 eingestellt wurde, kann es sich um eine variable Bitrate handeln, die Schwankungen unterliegt. Diese Schwankungen können infolge einer Änderung der Verbindungsgeschwindigkeit oder der Netzwerkverbindungsart eines Benutzers, der ein Video streamt, erfolgen. In denjenigen Fällen, in denen ein Benutzer zum Beispiel anfänglich ein Video über eine Wi-Fi-Verbindung streamt, die plötzlich nicht mehr zur Verfügung steht, kann der Videodatenstrom auf eine LTE-Verbindung umgeschaltet werden. Aufgrund der Tatsache, dass jede Netzwerkverbindungsart auf ihre eigene Ziel-Bitrate für die optimale Ansicht eines gegebenen Videodatenstroms bei einer gegebenen Auflösung schließen lassen kann, kann es wünschenswert sein, Implementierungen zu verwenden, welche die offengelegte Ratensteuerung im Frame einer Einzeldurchlaufkodierung und einer Zwei-Durchlauf-Kodierung für variable Ziel-Bitraten verarbeitet.
  • Die Aspekte der Kodierung und Dekodierung, die vorstehend beschrieben werden, veranschaulichen einige Beispiele von Kodierungs- und Dekodierungstechniken. Es ist jedoch selbstverständlich, dass das Kodieren und das Dekodieren, gemäß der Verwendung dieser Begriffe in den Ansprüchen, Komprimierung, Dekomprimierung, Transformation oder jede andere Verarbeitung oder Änderung von Daten bedeuten könnte.
  • So wie es hierin verwendet ist, bedeutet das Wort „Beispiel” als ein Beispiel, eine Konkretisierung oder Darstellung dienend”. Jeglicher Gesichtspunkt oder Entwurf, der hierin als „Beispiel” beschrieben ist, ist nicht notwendigerweise als vorzugsweise oder vorteilhaft gegenüber sonstigen Gesichtspunkten oder Entwürfen aufzufassen. Das Ziel der Verwendung des Wortes „Beispiel” besteht darin, Konzepte auf eine konkrete Art und Weise präsentieren. Wie in dieser Anmeldung benutzt, soll der Begriff „oder” ein einschließendes „oder” und nicht ein ausschließendes „oder” bedeuten. Das heißt, wenn nicht anders angegeben oder aus dem Zusammenhang deutlich hervorgehend, soll der Ausdruck „X beinhaltet A oder B” alle der natürlichen einschließenden Permutationen bedeuten. Das heißt, wenn X A beinhaltet; X B beinhaltet; oder X sowohl A als auch B beinhaltet, dann ist unter allen der vorherigen Instanzen „X beinhaltet A oder B” erfüllt. Darüber hinaus kann die Verwendung des Artikels „ein” in dieser Anmeldung und den beigefügten Ansprüchen generell so interpretiert werden, dass wenn nicht anders angegeben oder aus dem Zusammenhang deutlich „ein oder mehrere” gemeint ist, was in einer Singular-Form ausgedrückt wird. Außerdem soll die durchgängige Verwendung des Begriffs „eine Implementierung” oder „die Implementierung” nicht dasselbe wie Ausführungsform oder Implementierung bedeuten, es sei denn er wird ausdrücklich als eine solche bezeichnet.
  • Implementierungen der Übertragungsstation 202 und/oder der Empfangsstation 206 (und die Algorithmen, Verfahren, Anweisungen, usw., die darauf gespeichert sind und/oder davon ausgeführt werden, einschließlich von der Kodiervorrichtung 500 und der Dekodiervorrichtung 600) können mittels Hardware, Software oder einer Kombination davon realisiert werden. Die Hardware kann zum Beispiel Computer, Intellectual Property(IP)-Kerne, anwendungsspezifische integrierte Schaltungen (ASIC), programmierbare logische Anordnungen, optische Prozessoren, programmierbare logische Steuerungen, Mikrocode. Microcontroller, Server, Mikroprozessoren, digitale Signalprozessoren und alle sonstigen geeigneten Schaltungen beinhalten. In den Ansprüchen sollte der Begriff „Prozessor” als jede der vorstehend genannten Hardware umfassend, und zwar unabhängig davon, ob einzeln oder in Kombination, verstanden werden. Die Begriffe „Signal” und „Daten” werden austauschbar verwendet. Ferner müssen die Abschnitte der Übertragungsstation 202 und der Empfangsstation 206 nicht notwendigerweise auf dieselbe Weise implementiert werden.
  • Ferner können die Übertragungsstation 202 oder die Empfangsstation 206, zum Beispiel, gemäß einem Aspekt, unter Verwendung eines Allzweck-Computers oder eines Allzweck-Prozessors mit einem Computerprogramm implementiert werden, das, sofern es ausgeführt wird, alle entsprechenden Verfahren. Algorithmen und/oder Anwendungen, die hierin beschrieben werden, ausführt. Darüber hinaus oder alternativ dazu, kann zum Beispiel ein für einen bestimmten Zweck vorgesehener Computer/Prozessor verwendet werden, der eine andere Hardware umfassen kann, um jegliche der hierin beschriebenen Verfahren, Algorithmen oder Anweisungen auszuführen.
  • Die Übertragungsstation 202 und die Empfangsstation 206 können zum Beispiel auf Computern in einem Videokonferenzsystem implementiert werden. Alternativ dazu kann die Übertragungsstation 202 auf einem Server implementiert werden und die Empfangsstation 206 kann auf einem vom Server separaten Gerät, wie etwa einem handgehaltenen Kommunikationsgerät, implementiert werden. Im vorliegenden Fall kann die Übertragungsstation 202 Inhalte, die eine Kodiervorrichtung 500 verwenden, in ein kodiertes Videosignal kodieren und das kodierte Videosignal zum Kommunikationsgerät übermitteln. Im Gegenzug kann das Kommunikationsgerät dann das kodierte Videosignal unter Verwendung einer Dekodiervorrichtung 600 dekodieren. Alternativ dazu kann das Kommunikationsgerät Inhalte, die lokal auf dem Kommunikationsgerät gespeichert werden, wie zum Beispiel Inhalte, die nicht von der Übertragungsstation 202 übermittelt worden sind, dekodieren. Andere geeignete übertragende oder empfangende Implementierungsschemas stehen zur Verfügung. Zum Beispiel kann es sich bei der Empfangsstation 206 im Allgemeinen eher um einen stationären Personal Computer als um ein tragbares Kommunikationsgerät handeln und/oder ein Gerät, einschließlich einer Kodiervorrichtung 500 kann auch eine Dekodiervorrichtung 600 beinhalten.
  • Ferner können sämtliche oder ein Abschnitt der Implementierungen der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, auf das zum Beispiel von einem physisch greifbaren computerverwendbaren oder computerlesbaren Medium zugegriffen werden kann. Bei einem computerverwendbaren oder computerlesbaren Medium kann es sich um jedes Gerät handeln, welches das Programm zum Beispiel auf physisch greifbare Weise enthalten, speichern, kommunizieren oder transportieren kann, damit es von jedem beliebigen Prozessor oder in Verbindung mit jedem beliebigen Prozessor verwendet werden kann. Bei dem Medium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches oder ein Halbleitergerät handeln. Andere geeignete Medien stehen ebenfalls zur Verfügung.
  • Gemäß Ausführungsformen erreicht die dynamische Auflösungsumschaltung eine Ziel-Bitrate für die Einzeldurchlauf- und Zwei-Durchlauf-Kodierung eines Videodatenstroms. Eine Einzeldurchlaufkodierung ermittelt, ob eine Kodierungs-Bitrate für einen Frame eine Ziel-Bitrate erfüllt. Falls dies nicht der Fall ist, wird ein Quantifizierungsparameter, der verwendet wird, um den Frame zu kodieren, mit Mindest- und Höchstschwellenwerten verglichen, um zu ermitteln, ob die Auflösung des Videos angepasst werden muss. Eine Zwei-Durchlauf-Kodierung kodiert einen Eingaberahmen unter Verwendung eines Quantifizierungsparameters und ermittelt, ob die Auflösung des Videos für das Kodieren des Frames während eines zweiten Durchlaufs auf Basis der Bitrate, mit der der Eingaberahmen kodiert wird, angepasst werden muss. Die Auflösung kann auf Basis der Kodierungsvorrichtungs-Einschränkungen mit Bezugnahme auf einen Bewegungssuchbereich, der verwendet wird, um einen Frame zu kodieren, angepasst werden.
  • Die vorstehend beschriebenen Ausführungsformen, Implementierungen und Aspekte wurden beschrieben, um ein einfaches Verständnis der vorliegenden Erfindung zu ermöglichen und schränken die vorliegende Erfindung nicht ein. Die Erfindung soll im Gegenteil verschiedene Modifizierungen und äquivalente Anordnungen innerhalb des Umfangs der angehängten Ansprüche abdecken, deren Schutzbereich die breiteste Interpretation erfahren soll, um so alle solche Modifikationen und äquivalenten Aufbauten zu umfassen, wie es unter dem Gesetz vorgesehen ist.

Claims (20)

  1. Vorrichtung zur Kodierratensteuerung von Echtzeitvideos, umfassend: mindestens einen Prozessor, der konfiguriert ist, um für Folgendes Anweisungen, die auf einem nicht greifbaren Speichermedium gespeichert sind, auszuführen: das Identifizieren eines ersten Frames einer Vielzahl von Frames eines Videodatenstroms; das Kodieren des ersten Frames bei einer ersten Bitrate, die für einen Quantifizierungsparameter repräsentativ ist; das Identifizieren einer oder mehrerer kodierbedingter Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des ersten Frames; das Vergleichen der ersten Bitrate mit einer Ziel-Bitrate für den ersten Frame und das Vergleichen eines Quantifizierungsparameters mit sowohl einem Mindestquantifizierungsschwellenwert als auch einem Höchstquantifizierungsschwellenwert; das Anpassen mindestens eines Kodierparameters als Antwort auf das Vergleichen der ersten Bitrate mit einer Bitrate und das Vergleichen des Quantifizierungsparameters mit entweder dem Mindestquantifizierungsschwellenwert oder dem Höchstquantifizierungsschwellenwert; das Identifizieren eines zweiten Frames einer Vielzahl von Frames des Videodatenstroms; das Kodieren des zweiten Frames bei einer zweiten Bitrate unter Verwendung mindestens eines eingestellten Kodierparameters; und das Übertragen des kodierten ersten Frames und des kodierten zweiten Frames in einem Ausgabe-Bitstream.
  2. Vorrichtung nach Anspruch 1, wobei, falls die erste Bitrate geringer als die Ziel-Bitrate ausfällt und der Quantifizierungsparameter größer als der Mindestquantifizierungsschwellenwert ausfällt, das Anpassen des mindestens einen Kodierungs-Parameters Folgendes umfasst: das Absenken des Quantifizierungsparameters.
  3. Vorrichtung nach Anspruch 1 oder 2, wobei, falls die erste Bitrate geringer als die Ziel-Bitrate ausfällt und der Quantifizierungsparameter höchstens genauso groß wie der Mindestquantifizierungsschwellenwert ausfällt, das Anpassen des mindestens einen Kodierungs-Parameters Folgendes umfasst: das Erhöhen einer Auflösung des Videodatenstroms; das Erhöhen des Quantifizierungsparameters; und das Anpassen des Mindestquantifizierungsschwellenwerts und des Höchstquantifizierungsschwellenwerts auf Basis der erhöhten Auflösung.
  4. Vorrichtung nach irgendeinem der Ansprüche 1 bis 3, wobei, falls die erste Bitrate größer als die Ziel-Bitrate und der Quantifizierungsparameter kleiner als der Mindestquantifizierungsschwellenwert ausfällt, das Anpassen des mindestens einen Kodierungs-Parameters Folgendes umfasst: das Erhöhen des Quantifizierungsparameters.
  5. Vorrichtung nach irgendeinem der Ansprüche 1 bis 4, wobei, falls die erste Bitrate größer als die Ziel-Bitrate ausfällt und der Quantifizierungsparameter mindestens genauso groß wie der Höchstquantifizierungsschwellenwert ausfällt, das Anpassen des mindestens einen Kodierungs-Parameters Folgendes umfasst: das Verringern einer Auflösung des Videodatenstroms; das Absenken des Quantifizierungsparameters; und das Anpassen des Mindestquantifizierungsschwellenwerts und des Höchstquantifizierungsschwellenwerts auf Basis der verringerten Auflösung.
  6. Vorrichtung nach irgendeinem der Ansprüche 1 bis 5, wobei das Anpassen des mindestens einen Kodierungs-Parameters umfasst: das Verringern einer Auflösung des Videodatenstroms auf Basis der einen oder der mehreren Kodierungsvorrichtungs-Einschränkungen; das Ermitteln eines Referenz-Standorts des ersten Frames an der verringerten Auflösung; und das erneute Einstellen eines Mittelpunkt-Standorts des Bewegungssuchbereichs auf Basis des Referenz-Standorts des ersten Frames.
  7. Vorrichtung nach irgendeinem der Ansprüche 1 bis 6, wobei der mindestens eine Kodierungs-Parameter mindestens einen der im Folgenden aufgeführten Werte umfasst: eine Auflösung des Videodatenstroms, den Quantifizierungsparameter, den Mindestquantifizierungsschwellenwert, oder den Höchstquantifizierungsschwellenwert.
  8. Vorrichtung zur Kodierratensteuerung von Echtzeitvideos, umfassend: mindestens einen Prozessor, der konfiguriert ist, um für Folgendes Anweisungen, die auf einem nicht greifbaren Speichermedium gespeichert sind, auszuführen: das Identifizieren eines Eingaberahmens einer Vielzahl von Frames eines Videodatenstroms; das Kodieren des Eingaberahmens unter Verwendung eines Eingabe-Quantifizierungsparameters; das Identifizieren einer oder mehrerer kodierbedingter Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des Eingaberahmens; das Generieren einer Anzahl an Bits als Antwort auf das Kodieren des Eingaberahmens; das Anpassen mindestens eines Kodierungs-Parameters auf Basis der Anzahl der Bits und einer Ziel-Bitrate für das Kodieren des Eingaberahmens; das Generieren eines kodierten Frames mittels des Kodierens des Eingaberahmens unter Verwendung des mindestens einen Kodierungs-Parameters; und das Übermitteln des kodierten Frames in einem Ausgabe-Bitstream.
  9. Vorrichtung nach Anspruch 8, wobei, falls die Anzahl der Bits, die als Antwort auf das Kodieren des Eingaberahmens generiert worden ist, auf eine Frame-Bitrate schließen lässt, die geringer als die Ziel-Bitrate ausfällt, umfasst das Anpassen des mindestens einen Kodierungs-Parameters das Erhöhen einer Auflösung des Videodatenstroms und das Generieren des kodierten Frames umfasst das Kodieren des Eingabe-Frames bei der erhöhten Auflösung.
  10. Vorrichtung nach Anspruch 8 oder 9, wobei, falls die Anzahl der Bits, die als Antwort auf das Kodieren des Eingaberahmens generiert worden ist, auf eine Frame-Bitrate schließen lässt, die größer als die Ziel-Bitrate ausfällt, umfasst das Anpassen des mindestens einen Kodierungs-Parameters das Verringern einer Auflösung des Videodatenstroms und das Generieren des kodierten Frames umfasst das Kodieren des Eingabe-Frames bei der verringerten Auflösung.
  11. Vorrichtung nach irgendeinem der Ansprüche 8 bis 10, wobei das Anpassen des mindestens einen Kodierungs-Parameters umfasst: das unter Verwendung einer Flagge durchgeführte Angeben, ob der mindestens eine Kodierungs-Parameter einer Anpassung auf Basis der Anzahl der Bits und der Target-Bitrate unterliegt.
  12. Vorrichtung nach irgendeinem der Ansprüche 8 bis 11, wobei das Anpassen des mindestens einen Kodierungs-Parameters umfasst: das Verringern einer Auflösung des Videodatenstroms auf Basis der einen oder der mehreren Kodierungsvorrichtungs-Einschränkungen; das Ermitteln eines Referenz-Standorts des Eingaberahmens an der verringerten Auflösung; und das erneute Einstellen eines Mittelpunkt-Standorts des Bewegungssuchbereichs auf Basis des Referenz-Standorts des Eingaberahmens.
  13. Vorrichtung nach irgendeinem der Ansprüche 8 bis 12, wobei der mindestens eine Kodierungs-Parameter mindestens einen der im Folgenden aufgeführten Werte umfasst: den Eingabe-Quantifizierungsparameter, einen Kodierungs-Quantifizierungsparameter und eine Auflösung des Videodatenstroms.
  14. Vorrichtung nach irgendeinem der Ansprüche 8 bis 13, wobei es sich bei dem Quantifizierungsparameter um eine Konstante handelt.
  15. Vorrichtung zur Kodierratensteuerung von Echtzeitvideos, Folgendes umfassend: mindestens einen Prozessor, der konfiguriert ist, um für Folgendes Anweisungen, die auf einem nicht greifbaren Speichermedium gespeichert sind, auszuführen: das Identifizieren eines Eingaberahmens einer Vielzahl von Frames eines Videodatenstroms; das Kodieren des Eingaberahmens bei einer ersten Bitrate, die für einen konstanten Quantifizierungsparameter repräsentativ ist; das Identifizieren einer oder mehrerer kodierbedingter Einschränkungen mit Bezug auf einen Bewegungssuchbereich als Antwort auf das Kodieren des Eingaberahmens; das Vergleichen der ersten Bitrate mit einem der im Folgenden aufgeführten Werte: einer Mindest-Ziel-Bitrate und einer Höchst-Ziel-Bitrate für den Eingaberahmen; das Anpassen mindestens eines Kodierungs-Parameters als Antwort auf das Vergleichen der ersten Bitrate mit entweder der Mindest-Ziel-Bitrate oder der Höchst-Ziel-Bitrate; das Generieren eines kodierten Frames mittels des Kodierens des Eingaberahmens unter Verwendung des mindestens einen Kodierungs-Parameters; und das Übermitteln des kodierten Frames in einem Ausgabe-Bitstream.
  16. Vorrichtung nach Anspruch 15, wobei, falls die erste Bitrate geringer als die Mindest-Ziel-Bitrate ausfällt, das Anpassen des mindestens einen Kodierungs-Parameters das Erhöhen einer Auflösung des Videodatenstroms umfasst, und das Generieren des kodierten Frames, das Kodieren des Eingabe-Frames bei der erhöhten Auflösung umfasst.
  17. Vorrichtung nach Anspruch 15 oder 16, wobei, falls die erste Bitrate größer als die Höchst-Ziel-Bitrate ausfällt, das Anpassen des mindestens einen Kodierungs-Parameters das Verringern einer Auflösung des Videodatenstroms umfasst, und das Generieren des kodierten Frames, das Kodieren des Eingabe-Frames bei der verringerten Auflösung umfasst.
  18. Vorrichtung nach irgendeinem der Ansprüche 15 bis 17, wobei das Anpassen des mindestens einen Kodierungs-Parameters umfasst: das Angeben, unter Verwendung einer Flagge, ob der mindestens eine Kodierungs-Parameter einer Anpassung auf Basis einer Anzahl an Bits unterliegt, die eine erste Bitrate, bei der der Eingaberahmen kodiert ist und eine Ziel-Bitrate, zwischen der Mindest-Bitrate und der Höchst-Ziel-Bitrate, angibt.
  19. Vorrichtung nach irgendeinem der Ansprüche 15 bis 18, wobei das Anpassen des mindestens einen Kodierungs-Parameters umfasst: das Verringern einer Auflösung des Videodatenstroms auf Basis der einen oder der mehreren Kodierungsvorrichtungs-Einschränkungen; das Ermitteln eines Referenz-Standorts des Eingaberahmens an der verringerten Auflösung; und das erneute Einstellen eines Mittelpunkt-Standorts des Bewegungssuchbereichs auf Basis des Referenz-Standorts des Eingaberahmens.
  20. Vorrichtung nach irgendeinem der Ansprüche 15 bis 19, wobei der mindestens eine Kodierungs-Parameter mindestens einen der im Folgenden aufgeführten Werte umfasst: den konstanten Quantifizierungsparameter, die Mindest-Ziel-Bitrate, die Höchst-Ziel-Bitrate, einen Kodierungs-Quantifizierungsparameter, oder eine Auflösung des Videodatenstroms.
DE202016008214.1U 2016-01-19 2016-12-22 Kodierratensteuerung von Echtzeitvideos unter Verwendung einer dynamischen Auflösungsumschaltung Active DE202016008214U1 (de)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US15/000,097 US10356406B2 (en) 2016-01-19 2016-01-19 Real-time video encoder rate control using dynamic resolution switching
US15/000,097 2016-01-19

Publications (1)

Publication Number Publication Date
DE202016008214U1 true DE202016008214U1 (de) 2017-04-28

Family

ID=57822055

Family Applications (2)

Application Number Title Priority Date Filing Date
DE202016008214.1U Active DE202016008214U1 (de) 2016-01-19 2016-12-22 Kodierratensteuerung von Echtzeitvideos unter Verwendung einer dynamischen Auflösungsumschaltung
DE102016125353.7A Pending DE102016125353A1 (de) 2016-01-19 2016-12-22 Kodierratensteuerung von echtzeitvideos unter verwendung einer dynamischen auflösungsumschaltung

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE102016125353.7A Pending DE102016125353A1 (de) 2016-01-19 2016-12-22 Kodierratensteuerung von echtzeitvideos unter verwendung einer dynamischen auflösungsumschaltung

Country Status (9)

Country Link
US (1) US10356406B2 (de)
JP (1) JP6714695B2 (de)
KR (1) KR102118573B1 (de)
CN (1) CN107040781B (de)
AU (1) AU2016388357B2 (de)
CA (1) CA3001672C (de)
DE (2) DE202016008214U1 (de)
GB (1) GB2546887B (de)
WO (1) WO2017127213A1 (de)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019001283A1 (zh) * 2017-06-28 2019-01-03 腾讯科技(深圳)有限公司 编码分辨率控制方法及装置

Families Citing this family (26)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109076062B (zh) * 2016-02-26 2022-01-11 网络洞察力有限公司 边缘节点控制
US10162936B2 (en) * 2016-03-10 2018-12-25 Ricoh Company, Ltd. Secure real-time healthcare information streaming
US10362307B2 (en) * 2016-09-09 2019-07-23 Hanwha Techwin Co., Ltd. Quantization parameter determination method and image capture apparatus
EP3720130B1 (de) 2017-04-21 2022-09-28 Zenimax Media Inc. System und verfahren zum rendern und zur erzeugung von kodierungs-hinweisen durch präkodierungs-lastenabschätzung
KR102315524B1 (ko) * 2017-06-16 2021-10-21 한화테크윈 주식회사 영상의 비트레이트 조절 방법 및 영상 획득 장치
CN109151481B (zh) * 2017-06-28 2022-03-15 腾讯科技(深圳)有限公司 图片的传输和接收的方法、装置、系统、设备和介质
US11146608B2 (en) * 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
US10412410B2 (en) * 2017-08-14 2019-09-10 Google Llc Compound motion-compensated prediction
CN109413427B (zh) * 2017-08-17 2022-04-08 腾讯科技(深圳)有限公司 一种视频帧编码方法及终端
US11539908B2 (en) * 2017-09-29 2022-12-27 Advanced Micro Devices, Inc. Adjustable modulation coding scheme to increase video stream robustness
CN109819263B (zh) * 2017-11-22 2022-08-19 腾讯科技(深圳)有限公司 视频编码方法、装置、计算机设备及存储介质
US10659514B2 (en) 2018-03-28 2020-05-19 Arlo Technologies, Inc. System for video monitoring with adaptive bitrate to sustain image quality
WO2019191983A1 (zh) * 2018-04-04 2019-10-10 深圳市大疆创新科技有限公司 编码方法、装置、图像处理系统和计算机可读存储介质
CN108391127B (zh) * 2018-04-27 2021-08-10 腾讯科技(深圳)有限公司 视频编码方法、装置、存储介质及设备
CN108769681B (zh) * 2018-06-20 2022-06-10 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、计算机设备和存储介质
CN108924553B (zh) * 2018-06-20 2021-10-08 腾讯科技(深圳)有限公司 视频编码、解码方法、装置、计算机设备和存储介质
US10554975B1 (en) 2018-09-30 2020-02-04 Tencent America LLC Method and apparatus for video coding
CN111819846B (zh) * 2018-11-26 2024-04-16 谷歌有限责任公司 安全和跨设备一致的视频压缩的方法、系统及计算机可读介质
CN110572654B (zh) * 2019-09-27 2024-03-15 腾讯科技(深圳)有限公司 视频编码、解码方法和装置、存储介质及电子装置
CN113038136B (zh) * 2019-12-25 2022-10-11 成都鼎桥通信技术有限公司 一种视频自适应调整方法和装置
FR3105904B1 (fr) 2019-12-26 2023-03-10 Thales Sa Procédé d'allocation pour liaison bas-débit
CN111601109A (zh) * 2020-05-13 2020-08-28 西安万像电子科技有限公司 图像数据的处理方法、装置和系统
US20220312018A1 (en) * 2021-03-23 2022-09-29 Samsung Electronics Co., Ltd. Electronic device to encode video with max quantum parameter control and the method thereof
CN113115107B (zh) * 2021-04-15 2021-12-28 深圳鸿祥源科技有限公司 一种基于5g网络的手持视频采集终端系统
CN114650437B (zh) * 2022-03-14 2024-04-16 百果园技术(新加坡)有限公司 一种视频发布方法、装置、设备及存储介质
CN114827669B (zh) * 2022-03-31 2023-08-18 杭州网易智企科技有限公司 一种视频数据的传输方法、装置、介质及设备

Family Cites Families (39)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3773585B2 (ja) * 1996-03-29 2006-05-10 富士通株式会社 画像符号化装置
AU2003248178B2 (en) 1997-12-23 2006-07-06 Thomson Licensing S.A. Low noise encoding and decoding apparatus and method
US6192154B1 (en) 1998-01-26 2001-02-20 International Business Machines Corporation Two-pass encoding method of digital motion video sequences for constant-or variable bit rate
US6343098B1 (en) * 1998-02-26 2002-01-29 Lucent Technologies Inc. Efficient rate control for multi-resolution video encoding
US6650704B1 (en) 1999-10-25 2003-11-18 Irvine Sensors Corporation Method of producing a high quality, high resolution image from a sequence of low quality, low resolution images that are undersampled and subject to jitter
US6674796B1 (en) 2000-02-14 2004-01-06 Harmonic, Inc. Statistical multiplexed video encoding for diverse video formats
EP1139669A1 (de) * 2000-03-28 2001-10-04 STMicroelectronics S.r.l. Koprozessor zur bewegungsschätzung in codierern für digitalisierte videosequenzen
JP4258694B2 (ja) * 2000-10-06 2009-04-30 日本電気株式会社 動画像符号化方法、動画像符号化装置、動画像復号化装置及びそれらを備えた動画像通信システム
US20020071052A1 (en) 2000-12-07 2002-06-13 Tomoaki Itoh Transmission rate control method
US6785334B2 (en) 2001-08-15 2004-08-31 Koninklijke Philips Electronics N.V. Method for transmission control in hybrid temporal-SNR fine granular video coding
US7050502B2 (en) * 2001-09-18 2006-05-23 Matsushita Electric Industrial Co., Ltd. Method and apparatus for motion vector detection and medium storing method program directed to the same
GB2387058A (en) 2002-03-28 2003-10-01 Sony Uk Ltd Method of selecting a quantisation parameter using trial parameters
GB2387055A (en) 2002-03-28 2003-10-01 Sony Uk Ltd Data compression method including target data quantity allocation
US6728315B2 (en) 2002-07-24 2004-04-27 Apple Computer, Inc. Method and apparatus for variable accuracy inter-picture timing specification for digital video encoding with reduced requirements for division operations
US7519115B2 (en) * 2003-03-31 2009-04-14 Duma Video, Inc. Video compression method and apparatus
US7352808B2 (en) * 2004-01-29 2008-04-01 International Business Machines Corporation System and method for the dynamic resolution change for video encoding
US7697608B2 (en) * 2004-02-03 2010-04-13 Sony Corporation Scalable MPEG video/macro block rate control
US20060056511A1 (en) * 2004-08-27 2006-03-16 University Of Victoria Innovation And Development Corporation Flexible polygon motion estimating method and system
KR100631743B1 (ko) 2004-11-26 2006-10-11 삼성전자주식회사 스케일러블 비트스트림의 효율적 전송 방법 및 장치
JP4251291B2 (ja) 2004-12-22 2009-04-08 日本ビクター株式会社 動画像符号化装置、動画像符号化方法
US7602997B2 (en) 2005-01-19 2009-10-13 The United States Of America As Represented By The Secretary Of The Army Method of super-resolving images
US7983341B2 (en) * 2005-02-24 2011-07-19 Ericsson Television Inc. Statistical content block matching scheme for pre-processing in encoding and transcoding
WO2006098226A1 (ja) * 2005-03-14 2006-09-21 Matsushita Electric Industrial Co., Ltd. 符号化装置および符号化装置を備えた動画像記録システム
US8077775B2 (en) 2006-05-12 2011-12-13 Freescale Semiconductor, Inc. System and method of adaptive rate control for a video encoder
US8250618B2 (en) 2006-09-18 2012-08-21 Elemental Technologies, Inc. Real-time network adaptive digital video encoding/decoding
US20090110062A1 (en) * 2007-10-30 2009-04-30 The Hong Kong University Of Science And Technology Optimal heegard-berger coding schemes
US8077772B2 (en) * 2007-11-09 2011-12-13 Cisco Technology, Inc. Coding background blocks in video coding that includes coding as skipped
US8139607B2 (en) 2008-01-21 2012-03-20 At&T Intellectual Property I, L.P. Subscriber controllable bandwidth allocation
US8837918B2 (en) 2008-05-16 2014-09-16 Sharp Kabushiki Kaisha Video recording apparatus
US8396114B2 (en) * 2009-01-29 2013-03-12 Microsoft Corporation Multiple bit rate video encoding using variable bit rate and dynamic resolution for adaptive video streaming
US8270473B2 (en) * 2009-06-12 2012-09-18 Microsoft Corporation Motion based dynamic resolution multiple bit rate video encoding
US8879623B2 (en) * 2009-09-02 2014-11-04 Sony Computer Entertainment Inc. Picture-level rate control for video encoding a scene-change I picture
JP2014510294A (ja) 2010-12-21 2014-04-24 シンディアント, インコーポレイテッド 記憶容量低減器を有する空間光変調器
US9071841B2 (en) * 2011-05-17 2015-06-30 Microsoft Technology Licensing, Llc Video transcoding with dynamically modifiable spatial resolution
US9955195B2 (en) * 2011-08-30 2018-04-24 Divx, Llc Systems and methods for encoding and streaming video encoded using a plurality of maximum bitrate levels
EP2579593A1 (de) * 2011-10-04 2013-04-10 Thomson Licensing Adaptive Quantisierung intracodierter Bildblöcke
US9094684B2 (en) 2011-12-19 2015-07-28 Google Technology Holdings LLC Method for dual pass rate control video encoding
US9578342B2 (en) * 2013-06-24 2017-02-21 Dialogic Corporation Rate control algorithm for scalable video encoding with disposable P-frames
CN103686172B (zh) * 2013-12-20 2016-08-17 电子科技大学 低延迟视频编码可变比特率码率控制方法

Cited By (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2019001283A1 (zh) * 2017-06-28 2019-01-03 腾讯科技(深圳)有限公司 编码分辨率控制方法及装置
CN109151470A (zh) * 2017-06-28 2019-01-04 腾讯科技(深圳)有限公司 编码分辨率控制方法及终端
EP3648460A4 (de) * 2017-06-28 2020-05-13 Tencent Technology (Shenzhen) Company Limited Verfahren und vorrichtung zur steuerung des codierungsauflösungsverhältnisses
CN109151470B (zh) * 2017-06-28 2021-03-16 腾讯科技(深圳)有限公司 编码分辨率控制方法及终端
US11197021B2 (en) 2017-06-28 2021-12-07 Tencent Technology (Shenzhen) Company Limited Coding resolution control method and terminal

Also Published As

Publication number Publication date
CN107040781B (zh) 2020-11-03
CA3001672C (en) 2020-07-14
US10356406B2 (en) 2019-07-16
GB201621731D0 (en) 2017-02-01
AU2016388357B2 (en) 2020-02-13
AU2016388357A1 (en) 2018-04-12
GB2546887A (en) 2017-08-02
CN107040781A (zh) 2017-08-11
JP2019501554A (ja) 2019-01-17
JP6714695B2 (ja) 2020-06-24
US20170208328A1 (en) 2017-07-20
KR20180054717A (ko) 2018-05-24
GB2546887B (en) 2020-04-15
WO2017127213A1 (en) 2017-07-27
CA3001672A1 (en) 2017-07-27
KR102118573B1 (ko) 2020-06-03
DE102016125353A1 (de) 2017-07-20

Similar Documents

Publication Publication Date Title
DE202016008214U1 (de) Kodierratensteuerung von Echtzeitvideos unter Verwendung einer dynamischen Auflösungsumschaltung
DE102016125379B4 (de) Bewegungsvektoraufteilung des letzten Frames
DE102016125117B4 (de) Bewegungsvektorkodierung mit dynamischen Referenzbewegungsvektoren
DE60305325T2 (de) System und verfahren zur ratenverzerrungsoptimierten datenpartitionierung zur videocodierung unter verwendung von rückwärtsadaption
DE202016008175U1 (de) Adaptive gerichtete Intra-Prädiktion mit Blockgröße
DE102019103346A1 (de) Ssim-basierte rate-distortion-optimierung für eine verbesserte wahrnehmbare qualität bei videos
DE102016125125B4 (de) Tile-Copying für Videokompression
DE102016125094A1 (de) Auswahl des Referenz-Bewegungsvektors über Referenzeinzelbild Puffer-Nachverfolgung
DE202016008155U1 (de) Hybrid-Prädiktionsmodi zur Kodierung von Videos
DE202016008178U1 (de) Bewegungsvektorvorhersage mittels eines vorhergehenden Einzelbildresiduums
DE102016125086A1 (de) Adaptiver direktionaler Schleifenfilter
EP1774790B1 (de) Verfahren und vorrichtung zum codieren und decodieren
DE202016008164U1 (de) Intelligente Sortierung der rekursiven Blockaufteilung für die erweiterte Intra-Prädiktion bei der Videocodierung
DE202016008194U1 (de) Bewegungsvektorvorhersage durch Skalierung
DE102016124917B4 (de) Anpassungsfähige Kachel-Daten-Grössenkodierung für Video- und Bildkompression
DE102020128902A1 (de) Bewegungsadaptive video-codierung
DE202016008191U1 (de) Adaptive Überlappungsblockprädiktion bei Videokodierung mit variabler Blockgröße
DE102016125539A1 (de) Adaptive überlappungsblockprädiktion bei videokodierung mit variabler blockgrösse
DE102006003168B4 (de) Kodiervorrichtung, Verfahren zum Anpassen einer Dekodierberechnung und Computerprogrammprodukt hierfür
EP1285537B1 (de) Verfahren und eine anordnung zur codierung bzw. decodierung einer folge von bildern
DE112021003232T5 (de) Verfahren und vorrichtung für adaptives ki-downscaling für das upscalingwährend eines videotelefonates
DE102016125449A1 (de) Abschätzung einer Bewegung in einem superweiten Bereich zur Kodierung eines Videos
EP1869890B1 (de) Verfahren und vorrichtung zur reduktion eines quantisierungsfehlers
DE102020207711B3 (de) Verfahren und vorrichtungen zur codierung von bilddaten
DE102004011422B4 (de) Vorrichtung und Verfahren zum Verarbeiten einer Gruppe von Bildern und Vorrichtung und Verfahren zum Verarbeiten eines Basisbildes und eines oder mehrerer Erweiterungsbilder

Legal Events

Date Code Title Description
R207 Utility model specification
R081 Change of applicant/patentee

Owner name: GOOGLE LLC (N.D.GES.D. STAATES DELAWARE), MOUN, US

Free format text: FORMER OWNER: GOOGLE INC., MOUNTAIN VIEW, CALIF., US

R082 Change of representative

Representative=s name: BETTEN & RESCH PATENT- UND RECHTSANWAELTE PART, DE

R150 Utility model maintained after payment of first maintenance fee after three years
R151 Utility model maintained after payment of second maintenance fee after six years