DE112016004532T5 - Ressourcenbewusster Videoprozessor - Google Patents
Ressourcenbewusster Videoprozessor Download PDFInfo
- Publication number
- DE112016004532T5 DE112016004532T5 DE112016004532.8T DE112016004532T DE112016004532T5 DE 112016004532 T5 DE112016004532 T5 DE 112016004532T5 DE 112016004532 T DE112016004532 T DE 112016004532T DE 112016004532 T5 DE112016004532 T5 DE 112016004532T5
- Authority
- DE
- Germany
- Prior art keywords
- video
- cycle
- modules
- resources
- assigned
- 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.)
- Pending
Links
Images
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/238—Interfacing the downstream path of the transmission network, e.g. adapting the transmission rate of a video stream to network bandwidth; Processing of multiplex streams
- H04N21/2385—Channel allocation; Bandwidth allocation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/156—Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/136—Incoming video signal characteristics or properties
- H04N19/14—Coding unit complexity, e.g. amount of activity or edge presence estimation
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/134—Methods 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/146—Data rate or code amount at the encoder output
- H04N19/149—Data rate or code amount at the encoder output by estimating the code amount by means of a model, e.g. mathematical model or statistical model
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/188—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N19/00—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
- H04N19/10—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
- H04N19/169—Methods 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/1887—Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a variable length codeword
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/21—Server components or server architectures
- H04N21/218—Source of audio or video content, e.g. local disk arrays
- H04N21/21815—Source of audio or video content, e.g. local disk arrays comprising local storage units
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N21/00—Selective content distribution, e.g. interactive television or video on demand [VOD]
- H04N21/20—Servers specifically adapted for the distribution of content, e.g. VOD servers; Operations thereof
- H04N21/23—Processing of content or additional data; Elementary server operations; Server middleware
- H04N21/234—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs
- H04N21/23418—Processing of video elementary streams, e.g. splicing of video streams, manipulating MPEG-4 scene graphs involving operations for analysing video streams, e.g. detecting features or characteristics
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04N—PICTORIAL COMMUNICATION, e.g. TELEVISION
- H04N7/00—Television systems
- H04N7/06—Systems for the simultaneous transmission of one television signal, i.e. both picture and sound, by more than one carrier
Abstract
Lösungsansätze für ein dynamisches Zuordnen von CPU-Zyklusressourcen zu einem Video-Encoder. Eine Ressourcenzuordnungseinrichtung führt ein Einschätzen einer Menge an verfügbaren CPU-Zyklusressourcen auf der Hardwareeinheit durch, auf der sie ausgeführt wird. Die Ressourcenzuordnungseinrichtung bestimmt, dass eine Änderung bei der Menge an verfügbaren CPU-Zyklusressourcen aufgetreten ist. Durch die Ressourcenzuordnungseinrichtung erfolgt ein Anpassen, in Echtzeit, welches spezielle Zyklusprofil einer Mehrzahl von Zyklusprofilen mindestens einem von einer Mehrzahl von Videomodulen zugewiesen ist. Durch die Mehrzahl von Zyklusprofilen erfolgt jeweils ein Zuordnen, zu Videomodulen, einer speziellen Menge an CPU-Zyklusressourcen für ein Verarbeiten eines digitalen Videos. Die Mehrzahl von Zyklusprofilen spezifiziert jeweils auch einen Satz von Konfigurationseinstellungen und ist in einer Abfolge angeordnet, die auf der Videoqualität und -dichte basiert, welche durch Videomodule unter Verwendung von Konfigurationseinstellungen, die einem jeweiligen Zyklusprofil zugehörig sind, beim Verarbeiten eines digitalen Videos erzielt werden können.
Description
- GEBIET DER ERFINDUNG
- Ausführungsformen der Erfindung betreffen ein Optimieren der Zuweisung von Hardwareressourcen zu Software, die für eine Verarbeitung von digitalem Video zuständig ist.
- HINTERGRUND
- Bei statistischem Multiplexen wird die Anzahl von Bits, die einem jeweiligen von einer Mehrzahl von Digitalvideokanälen zugewiesen ist, mehrmals pro Sekunde dynamisch angepasst, basierend auf der Komplexität des durch einen jeweiligen Kanal transportierten digitalen Videos. Die Komplexität von digitalem Video ist ein Maß dafür, wie viele Daten (oder „Bits“) erforderlich sind, um zu beschreiben, wie das digitale Video anzuzeigen ist. Wenn ein spezieller Kanal eine Erhöhung der Bitanzahl erfordert, um die Komplexität des durch diesen transportierten digitalen Videos ausreichend zu beschreiben, können diesem Kanal zusätzliche Bits zugewiesen werden, und zwar von einem anderen Kanal, der zu diesem Zeitpunkt nicht alle ihm zugewiesenen Bits ausnützt.
- Figurenliste
- Ausführungsformen der Erfindung werden beispielhaft und nicht-einschränkend in den Figuren der anliegenden Zeichnungen dargestellt, in denen gleiche Bezugszeichen ähnliche Elemente bezeichnen; in den Zeichnungen:
-
1 ist ein Blockdiagramm eines Systems, das eine Ressourcenzuordnungseinrichtung gemäß einer Ausführungsform der Erfindung beinhaltet; -
2 zeigt einen Auslieferungspuffer in einem Codier-/Transcodiersystem, gemäß einer Ausführungsform der Erfindung; -
3 ist eine Darstellung der Werte von ActualVbvDelay, Delta, ActualVbvDelay, und TSMOB, gemäß einer Ausführungsform der Erfindung; -
4 ist eine Darstellung, die eine Anordnung von Zyklusprofilen 150 zeigt, gemäß einer Ausführungsform der Erfindung; und -
5 ist ein Blockdiagramm, das ein Computersystem darstellt, auf dem eine Ausführungsform der Erfindung implementiert sein kann. - DETAILLIERTE BESCHREIBUNG DER ERFINDUNG
- Lösungsansätze für ein dynamisches Zuweisen von CPU-Zyklen zur Verwendung bei der Verarbeitung von digitalem Video werden hier dargelegt. In der folgenden Beschreibung sind zu Erläuterungszwecken zahlreiche spezifische Details dargelegt, um für ein grundlegendes Verständnis der Ausführungsformen der hier beschriebenen Erfindung zu sorgen. Es versteht sich jedoch, dass die hier beschriebenen Ausführungsformen der Erfindung ohne diese spezifischen Details ausgeführt sein können. In anderen Fällen sind allgemein bekannte Strukturen und Vorrichtungen in Form eines Blockdiagramms dargestellt oder werden auf einer höheren Ebene erörtert, um zu vermeiden, dass die Lehren der Ausführungsformen der Erfindung unnötigerweise unklar werden.
- FUNKTIONSÜBERBLICK
- Ein Digitalvideo-Encoder ist ein mit Software konfiguriertes Hardware-Bauelement, das ein digitales Video von dem einen Format in ein anderes umwandelt. Ein Digitalvideo-Encoder kann ein Codieren von mehr als einem einzigen Digitalvideodatenstrom gleichzeitig unterstützen. Ein Beispiel für einen Digitalvideo-Encoder ist die Electra
8100 , bei der es sich um einen in einer Einzel-Rack-Einheit (1-RU) untergebrachten Codierer mit Multi-Standard-, Multi-Dienst- und Multi-Kanal-Fähigkeit handelt, der von Harmonic Inc., San Jose, Kalifornien bezogen werden kann. Die Electra8100 unterstützt je Gehäuse (1-RU) ein Codieren von 4 Kanälen gleichzeitig. - Ein Digitalvideo-Encoder kann mehrere Zentralrecheneinheiten (CPUs oder Kerne) aufweisen. Der Codierer Electra
8100 beinhaltet beispielsweise vier CPUs. Software, die für eine Codierfunktionalität zuständig ist, ist typischerweise zur Ausführung auf einer einzigen CPU geschrieben. Daher können vier unterschiedliche Instanzen der Codiersoftware (die einzeln jeweils als „Codiermodul“ bezeichnet werden) auf der Electra8100 ausgeführt werden, wobei jede von diesen ausgelegt ist, um auf einer separaten CPU ausgeführt zu werden. Demgemäß ist beim Stand der Technik jedes Codiermodul ausgelegt, Anweisungen unter Verwendung einer einzigen CPU auszuführen. - Ausführungsformen der Erfindung ermöglichen, dass die Zyklen einer jeweiligen CPU eines Digitalvideo-Encoders durch darauf ausgeführte Softwaremodule effizienter genutzt werden können. Durch Ausführungsformen der Erfindung wird die Nutzung von Computerressourcen optimiert, und zwar ohne erhebliche Eingriffe und Konfiguration eines Benutzers, um die beste Videoqualität für einen Kanal bei einer gegebenen Konfiguration in adaptiver Weise zu erzielen, wobei dadurch danach gestrebt wird, jeglichen Verlust von Frames (Vollbildern) zu minimieren oder zu eliminieren, wenn eine CPU-Zyklusnutzung vorübergehend einen Höchststand erreicht. Falls verfügbare CPU-Zyklen im Überfluss vorhanden sind, können Ausführungsformen einem Codiermodul weitere CPU-Zyklen zusätzlich zu denen zuordnen, die im Allgemeinen standardmäßig zugewiesen werden, um einen hohe Videoqualität aufweisenden Echtzeitmodus zu unterstützen, um die Videoqualität weiter zu erhöhen und zu verbessern.
- Man beachte, dass Ausführungsformen zwar hier hauptsächlich mit Bezug auf Codiermodule beschrieben werden, die hier erörterten Techniken jedoch auch in Verbindung mit anderen Typen von Videoverarbeitungssoftwarekomponenten verwendet werden können, beispielsweise, jedoch nicht eingeschränkt auf, Digitalvideotranscodermodule, die zur Durchführung einer Transcodierfunktionalität zuständig sind, und Digitalvideodecodermodule, die zur Durchführung einer Decodierfunktionalität zuständig sind. Tatsächlich können Ausführungsformen der Erfindung mit einem beliebigen Typ von Software zur Verarbeitung von digitalem Video verwendet werden.
- SYSTEMÜBERBLICK
-
1 ist ein Blockdiagramm eines Systems100 , das eine Ressourcenzuordnungseinrichtung110 gemäß einer Ausführungsform der Erfindung beinhaltet. Die Ressourcenzuordnungseinrichtung110 , wie in allgemeiner Weise hier verwendet, bezeichnet eine einzelne Softwarekomponente von zwei oder mehr hintereinandergeschaltet arbeitenden Softwarekomponenten, die zuständig sind für ein Zuweisen der Nutzung von Zyklen von einer oder mehreren CPUs130 einer Hardwareeinheit 120 zu einem jeweiligen von einer Mehrzahl von Videoverarbeitungs-Softwaremodulen140 , welche eine Bearbeitung eines digitalen Videos durchführen. Nicht-einschränkende, veranschaulichende Beispiele von Videoverarbeitungs-Softwaremodulen140 (oder einfachen Videomodulen140 ) beinhalten Digitalvideo-Encodermodule, Digitalvideo-Decodermodule und Digitalvideo-Transcodermodule. - Die Hardwareeinheit
120 kann einer beliebigen physischen Vorrichtung entsprechen, auf der Videoverarbeitungs-Softwaremodule130 ausgeführt werden. Beispielsweise kann die Hardwareeinheit120 der Electra8100 entsprechen, die von Harmonic Inc., San Jose, Kalifornien bezogen werden kann. Die Hardwareeinheit120 empfängt eine Mehrzahl von eingehenden Kanälen160 , die separat ein digitales Video transportieren. Die Videomodule140 , die auf der Hardwareeinheit ausgeführt werden, führen eine Bearbeitung der eingehenden Kanäle durch, wie beispielsweise Codieren, Decodieren, oder Transcodieren des durch die eingehenden Kanäle160 transportierten digitalen Videos. Die Videomodule140 können eine Vielfalt von unterschiedlichen Videoprotokollen unterstützen, einschließlich, jedoch nicht eingeschränkt auf H.264/AVC, H.265/HEVC, H.262/MPEG2, und VP9. Der Digitalvideoinhalt, der durch die Videomodule140 verarbeitet wurde, wird durch den abgehenden Datenstrom170 transportiert. - Die Ressourcenzuordnungseinrichtung
110 hält einen Satz von Zyklusprofilen150 vor. Ein jeweiliges von dem Satz von Zyklusprofilen150 kann durch die Ressourcenzuordnungseinrichtung110 einem jeweiligen Videomodul130 zugewiesen werden, das auf der Hardwareeinheit120 ausgeführt wird. Ein Zyklusprofil150 gibt an, wie viele Zyklen der CPUs130 für ein spezielles Videomodul 140 benötigt werden, um eine Bearbeitung zur Erzeugung von verschiedenen Videoqualitätsniveaus durchzuführen. Ein Zyklusprofil150 kann auch einen Satz von Hardware- und Software-Ressourcen, die einer Verarbeitung eines digitalen Videos zugehörig sind, bezeichnen oder implizit anfordern, um ein spezifiziertes Niveau einer Videoqualität und/oder -Dichte zu erzielen. Das spezielle Zyklusprofil150 , das durch die Ressourcenzuordnungseinrichtung110 einem speziellen Videomodul140 zugewiesen wird, kann über die Zeit in Abhängigkeit vom Inhaltstyp in einem jeweiligen Dienst und Änderungen der Menge an verfügbaren CPU-Zyklusressourcen variieren. Die Ressourcenzuordnungseinrichtung110 überwacht auch die Menge an verfügbaren CPU-Zyklusressourcen der Hardwareeinheit, auf der sie ausgeführt wird. - RESSOURCENZUORDNUNGSEINRICHTUNG UND REGELKREIS
- Die Ressourcenzuordnungseinrichtung
110 regelt, wie viele CPU-Zyklusressourcen einem speziellen Videomodul140 zugewiesen werden, das für die Verarbeitung eines Kanals von eingehenden Kanälen160 zuständig ist. Bei einer Ausführungsform verbessert die Ressourcenzuordnungseinrichtung110 die Qualität eines durch eingehende Kanäle160 transportierten digitalen Videos, wenn Zyklen der CPUs130 (d. h. „Zyklusressourcen“) einem gegebenen Videomodul140 zur Verfügung gestellt werden. Die Ressourcenzuordnungseinrichtung110 und ein jeweiliges Videomodul 140 bleiben in konstanter Kommunikation miteinander in einem Regelkreis, da sowohl die Zyklusressourcen als auch die Videokomplexität über die Zeit rasch schwanken. Demzufolge kann die Ressourcenzuordnungseinrichtung110 , basierend auf von den Videomodulen140 empfangener Information, Anpassungen vornehmen, wie Zyklusressourcen einem jeweiligen Videomodul140 zugeordnet werden. Auch können die Videomodule140 , basierend auf von der Ressourcenzuordnungseinrichtung110 empfangener Information, Anpassungen vornehmen, wie ein digitales Video verarbeitet wird (beispielsweise kann, wenn zusätzliche Zyklusressourcen einem speziellen Videomodul140 zur Verfügung stehen, ein digitales Video in unterschiedlicher Weise durch dieses Videomodul140 verarbeitet werden, um die zusätzlichen Zyklusressourcen im Vergleich zu einem Fall auszunützen, bei dem eine geringere Anzahl von Zyklusressourcen zur Verfügung steht). - Jedes Videomodul
140 kann konfiguriert werden, um in einem von einer Mehrzahl von unterschiedlichen Modi zu arbeiten. Beispiele von zwei derartigen Modi sind ein Hochdichtemodus (HD-Modus) und ein Hochqualitätsmodus (VQ-Modus). Der HD-Modus kann einer Konfiguration entsprechen, die eine Verwendung einer geringeren Menge an Daten (oder Bits) zur Darstellung eines Frame (Vollbilds) eines digitalen Videos favorisiert, um die zum Transportieren des resultierenden Videodatenstroms erforderliche Bandbreite zu minimieren, und der HQ-Modus kann einer Konfiguration entsprechen, die eine Verwendung von mehr Daten (oder Bits) zur Darstellung eines Frame eines digitalen Videos favorisiert, um die Videoqualität zu maximieren. Weitere Modi können unterschiedlichen Präferenzen entsprechen, wie ein digitales Video codiert oder verarbeitet werden sollte. Der Modus, in dem ein spezielles Videomodul140 betrieben wird, kann durch einen Benutzer unter Verwendung einer Benutzerschnittstelle (UI) konfiguriert werden, die durch das Videomodul140 dargeboten wird. Bei Ausführungsformen der Erfindung sind typischerweise derartige Modi statisch, insofern, dass, sobald ein Benutzer ein spezielles Videomodul140 für einen Betrieb in einem speziellen Modus konfiguriert, dieses Videomodul140 fortfährt, in diesem Modus zu arbeiten, es sei denn, es erfolgt eine erneute Konfigurierung durch einen Benutzer. - Gemäß einer Ausführungsform besteht das Ziel einer Ressourcenzuordnungseinrichtung
110 darin, zu gewährleisten, dass die Videoqualität eines durch einen abgehenden Datenstrom170 transportierten digitalen Videos vergleichbar zu, oder besser als die Videoqualität ist, die herkömmlicherweise im einem HD-Modus assoziiert ist. Zuvor gab es beim Stand der Technik, wenn ein Video-Encoder angewiesen wurde, ein Video gemäß einem speziellen Modus zu codieren, bei der speziellen Art und Weise, in welcher der Video-Encoder arbeitete, keine Abweichung oder Änderung von dem gewählten Modus. Im Gegensatz dazu reagiert die Ressourcenzuordnungseinrichtung110 einer Ausführungsform auf die Verfügbarkeit von Zyklusressourcen und passt demgemäß den Betriebsablauf von Videomodulen 140 basierend auf den verfügbaren Zyklusressourcen an. Dazu führt die Ressourcenzuordnungseinrichtung110 eine dynamische Anpassung der Konfigurationseinstellungen von Videomodulen140 in Echtzeit ansprechend auf Änderungen bei den Zyklusressourcen durch. Dadurch kann die SBR-Dichte (SBR = Single Bit Rate) verbessert werden, ohne die Videoqualität übermäßig zu beeinträchtigen, da die Videoqualität vergleichbar einem Modus hoher Videoqualität (VQ-Modus) sein kann, wobei dabei ein Betrieb im Hochdichte-Modus (HD-Modus) erfolgt. Bei Ausführungsformen kann eine dynamische Anpassung des Betriebs eines jeweiligen Videomoduls140 erfolgen, so dass das Videomodul140 sein Betriebsverhalten dynamisch in Echtzeit ändert, z. B. kann ein spezielles Videomodul 140 sein Verhalten so ändern, dass es beispielsweise zwischen einem Betrieb in einem HD-Modus und einem VQ-Modus fluktuiert. - Bei Ausführungsformen der Erfindung kann eine dynamische Anpassung des Betriebs eines Videomoduls
140 ansprechend auf Änderungen bei verfügbaren Zyklusressourcen auf unterschiedliche Weisen erfolgen. Der Betrieb eines Videomoduls140 kann durch Ausführungsformen in seiner Gesamtheit angepasst oder geregelt werden, oder lediglich darin, wie das Videomodul einen speziellen Digitalvideo-Frame oder Makroblock (MB) verarbeitet. Eine Veränderung des Betriebsverhaltens auf einer auf ein Videomodul140 bezogenen Basis oder auf einer auf einen MB bezogenen Basis repräsentieren die äußeren Endpunkte auf jeder Seite einer Regelung, hingegen stellt eine Änderung des Verhaltens, wie das Videomodul140 einen einzelnen Frame eines digitalen Videos verarbeitet, einen mittleren Bereich in Bezug auf Kontrolle und Stabilität dar. Auch ermöglicht eine Anpassung des Verhaltens, wie das Videomodul140 einen einzelnen Frame eines digitalen Videos verarbeitet, eine einfache Steuerung der meisten Einstellungen, die angepasst werden können, um einen Kompromiss zwischen VQ und Zyklen zu erzielen, der problemlos und mit einer Granularität erfolgen kann, die weder zu grob noch zu feinkörnig ist. - MASSZAHLEN
- Die Ressourcenzuordnungseinrichtung
110 kann eine oder mehrere Maßzahlen verwenden, um zu bestimmen, wie Zyklusressourcen einem jeweiligen der Videomodule140 zugewiesen werden. Die Ressourcenzuordnungseinrichtung110 kann derartige Maßzahlen zur Anpassung der Dichte, mit der ein Videomodul140 ein Video verarbeitet, oder zur Anpassung der Qualität eines digitalen Videos verwenden, das durch ein Videomodul140 verarbeitet wird. Die Dichte oder Qualität eines durch ein Videomodul140 verarbeiteten Videos kann verbessert oder erhöht werden, wenn dem Videomodul140 zusätzliche Zyklusressourcen zur Verfügung stehen, oder reduziert werden, wenn keine zusätzlichen Zyklusressourcen verfügbar sind. Man beachte, dass eine Verbesserung der Geschwindigkeit eines Videomoduls 140, die zu einer Verringerung der Dichte führen würde, mit der ein digitales Video verarbeitet wird, lediglich beibehalten werden braucht, solange Zyklusressourcen als Problem erachtet werden, bedingt durch eine Gefahr eines Qualitätsverlustes beim Ausgabedatenstrom dieses Videomoduls140 . - Maßzahlen sind von Nutzen, da sie ein frühestmögliches Identifizieren von möglichen Problemen ermöglichen. Je ausgeglichener eine Maßzahl ist, desto zuverlässiger ist die Maßzahl im Hinblick auf Steuerung und Stabilität. Man kann dadurch transiente Probleme identifizieren und auf diese eingehen, dass eine zugrundeliegende Maßzahl herausgefiltert wird, obschon dies zu Kosten der Zuverlässigkeit geht. Gleichzeitig sollte eine von einer Ausführungsform verwendete Maßzahl nicht zu transient oder unzuverlässig sein. Einige Maßzahlen, die von Ausführungsformen verwendet werden können, um zu bestimmen, wie eine Zuordnung von Zyklusressourcen zu einem jeweiligen der Videomodule
140 erfolgen soll, werden nachfolgend erläutert. - DELTA-MASSZAHL DES SENDERS
- Die Hardwareeinheit
120 muss ein Übertragen eines bearbeiteten digitalen Videos auf einen abgehenden Datenstrom170 zeitgerecht durchführen. Wenn ein spezielles Videomodul140 überlastet ist (d. h. das spezielle Videomodul140 kann nicht in Echtzeit oder in dem für die vorliegende Arbeitslast erforderlichen Zeitrahmen arbeiten), dann passieren in diesem Videomodul140 Fehler, wie beispielsweise ein Unterlauf in dem abgehenden Datenstrom170 . - Die Delta-Maßzahl des Senders beruht auf dem VBV-Modell (VBV = Video Buffering Verifier). Der Codierer kann dieses Modell verwenden, um zu gewährleisten, dass am Codierer keine Unterläufe oder Überläufe auftreten. Das VBV-Modell definiert typischerweise das Verhalten des Decoders in Bezug auf drei Parameter: (
1 ) DTS - den Decodierzeitstempel, (2 ) PTS - den Präsentationszeitstempel, und (3 ) MaxVbvDelay - die maximale Vbv-Verzögerung. Der Füllungsgrad des Ausgangspuffers des Multiplexers (TSMOB) entspricht MaxVbvDelay - ActuaIVbvDelay + Delta. Es sollte TSMOB idealerweise den Wert0 haben, wenn es keine Verarbeitungsverzögerung gibt und Delta den Wert0 hat. - Wenn ein Codierer eines speziellen Videomoduls
140 in Rückstand gerät, tritt bei einem Puffer (als „Senderpuffer“ bezeichnet), der sich physisch auf einer Hardwareeinheit120 befindet und der Frames eines digitalen Videos speichert, die durch den abgehenden Datenstrom170 transportiert werden sollen, ein Unterlauf auf.2 zeigt einen Senderpuffer210 in einem Codier-/Transcodiersystem gemäß einer Ausführungsform der Erfindung. Wie in2 dargestellt, speichert der Senderpuffer210 Inhalt, der von einem Multiplexer ausgegeben wurde, jedoch nicht über den abgehenden Datenstrom170 übertragen wurde. Somit tritt, wenn ein Codierer eines speziellen Videomoduls140 in Rückstand gerät, beim Senderpuffer 210 ein Unterlauf bezüglich des Inhalts auf, der durch dieses Videomodul140 erzeugt wurde. - Zu dem Zeitpunkt, bei dem die Hardwareeinheit
120 mit dem Übertragen von Bild (N) auf den abgehenden Datenstrom170 beginnt, sollte die Menge an Inhalt, die im Senderpuffer210 gespeichert ist, MaxVbvDelay - ActuaIVbvDelay + Delta betragen, wobei MaxVbvDelay die maximale VBV-Verzögerung (VBV= Video Buffering Verifier) ist, ActuaIVbvDelay die tatsächliche VBV-Verzögerung ist, und Delta die Menge an Zeit ist, die wir zur Ende-zu-Ende-Verzögerung hinzufügen, um Schwankungen der Verarbeitungszeit in unserem Softwaresystem zu neutralisieren. Bei einer praktischen Implementierung kann Delta genau oder ungefähr 0,6 Sekunden betragen. Typischerweise ist ActuaIVbvDelay kleiner oder gleich 1 Sekunde.3 ist eine Darstellung der Werte von ActualVbvDelay, Delta, und ActuaIVbvDelay gemäß einer Ausführungsform der Erfindung. - Man beachte, dass die gewünschte Menge an im Senderpuffer
210 zu speichernden Inhalt in Sekunden und nicht in Bits gemessen wird. Um zu berechnen, wieviel Inhalt im Senderpuffer210 in Bits gespeichert werden sollte, für eine Nutzung in einem CBR-Betriebsmodus (CBR = konstante Bitrate), wird der im Senderpuffer210 zu speichernde Inhalt, wie über die Zeit gemessen, mit der Bitrate multipliziert. Für einen VBR-Betriebsmodus (VBR = variable Bitrate) kann die gewünschte Menge an im Senderpuffer210 gespeicherten Inhalt wie folgt berechnet werden: - ActualVbvDelay(Bild(N)) = DTS(N) - PCR(Start der Übertragung von Bild(N)), wobei DTS der Decodier-Zeitstempel und PCR der Echtzeit-Takt ist.
- Delta(Start der Übertragung von Bild(N)) = TSMOBFüllungsgrad(Start Bild(N)) + DTS(N) - PCR (N) - MaxVbvDelay,
wobei Delta (N) die tatsächliche Menge an „Extra-Zeit“ ist, die zur Übertragung von Bild (N) hinzuaddiert wird, um Verarbeitungszeitschwankungen zu neutralisieren. Der Wert von Delta (N) ist eine Maßzahl, die für den Regelkreis einer Ausführungsform verwendet werden kann. Typischerweise ist der Wert von Delta größer als 0,6 Sekunden in Fällen, bei denen Zyklen kein Problem darstellen. Der Wert von Delta beginnt in solchen Fällen unter 0,6 Sekunden zu fallen, bei denen Zyklusressourcen für ein Videomodul140 ein potentielles Problem darstellen. Wenn kein Inhalt mehr im Auslieferungspuffer gespeichert ist (d. h. TSMOB = 0), hört das spezielle Videomodul 140 mit dem Senden von Paketen auf. Jedoch ist diese Bedingung nicht an einen speziellen negativen Wert von Delta gebunden, da er von VBV abhängig ist. - LEAKY-BUCKET-ZEITRÜCKSTANDSAKKUMULATION
- Die „Leaky-bucket“-Zeitrückstands-Maßgröße akkumuliert die Differenzen zwischen einer Codierzeit je Bild bezogen auf die erwartete Codierzeit je Bild. Die erwartete Codierzeit je Bild ist durch die Differenz des Decodierzeitstempels (DTS) zwischen zwei Bildern definiert, in Tickereinheiten des 27-MHz-Taktgebers. Die tatsächliche Codierzeit wird als die Codierzeit unter Verwendung eines Präzisionstaktgebers gemessen, und zwar dadurch, dass ein Schnappschuss am Ort (einzelner Punkt auf einem Kreis, um die Roundtrip-Zeit zu messen) genommen wird, um die Differenz in Zyklen zu messen, die ab dem Zeitpunkt, zu dem mit dem Codieren des letzten Bildes begonnen wird, bis zu dem Zeitpunkt verbraucht wurden, bei dem mit dem Codieren des nächsten Bildes begonnen wird oder das Codieren des vorhergehenden Bildes geendet hat.
- CTS(N) = Codier-Zeitstempel von Bild N als Schnappschuss bei clock_gettime()
- DTS(N) = Decodier-Zeitstempel von Bild N
- DTS(N) = DTS(N-1) + 27×106 / picture_rate mit DTS(0) = 0
- Bei einer Ausführungsform kann die Variable ,Bildrate‘ (picture_rate) basierend auf verschiedenen Formaten definiert sein, wie in der nachfolgenden Tabelle 1 dargestellt. Tabelle 1
Format Bildcodierung Bildrate 1080i29.97 Field-codiertes Bild 59,94 1080i29.97 Frame-codiertes Bild 29,97 1080p59.94, 720p59.94 Frame-codiertes Bild 59,94 1080p23.97 Frame-codiertes Bild 23,97 -
-
-
- Ein Berechnen des Wertes von ΔCTS für ein gegebenes Bild repräsentiert die Zeit, die für ein Codieren dieses Bildes verbraucht wird. Man beachte, dass fb_ticks andauernd monoton zunehmen, wenn ein Videomodul
140 langsamer als in Echtzeit arbeitet (d. h. ein Zeitrückstand wird akkumuliert), und wieder aufholt, wenn es keinen Zeitrückstand gibt. Typischerweise beträgt fb_ticks weniger als 0,1 Sekunden für Fälle ohne Zeitrückstand. Für Fälle mit Zeitrückstand beginnt fb_ticks, bis über 0,1 Sekunden zuzunehmen. - In Tabelle 2 wird ausgearbeitet, wie die „Leaky-bucket-Zeitrückstand“-Maßgröße verwendet werden kann, um zu messen, wie ein spezielles Videomodul
140 bei zugewiesener Arbeitslast in Zeitrückstand kommen kann. Tabelle 2Alle Zeitstempel beziehen sich, oder sind normalisiert auf ein 27-MHz-Taktsignal. CTS Codierzeitstempel - Zeitstempel für den Beginn eines Codierens des Bildes. Dieser muss an ein und demselben Ort aufgenommen werden, entweder vor einem Beginn eines Codierens des Bildes oder vor einem Ausgeben des Bitstroms des Bildes. FB Zeitrückstand in 27-MHz-Taktgeber-Tickereinheiten ... ... Decoder-Reihenfolge N-10 N-9 N-8 N-1 N N+1 DTS(N) DTS((N-10) DTS((N-9) ... ... DTS((N) ... CT(N) CT(N-10) CT(N-9) ... ... ... CT(N) ... Delta(CT(N)) CT(N-10)-CT(N-11) CT(N-9)-CT(N-10) ... ... CT(N)-CT(N-1) ... Delta(DTS(N)) DTS(N-10)-DTS(N-11) DTS(N-9)-DTS(N-10) ... ... DTS(N)-DTS(N-1) ... FB(N) = FB(N-1) + Delta(CT(N))-Delta(DTS(N)) FB(N-11) + Delta(CT(N-10))-Delta (DTS(N-10)) FB(N-10) + Delta(CT(N-9)) - Delta (DTS(N-9)) ... ... FB(N-1) + Delta(CT(N))-Delta (DTS(N)) ... - ZEITRÜCKSTAND-KOMPENSIERTES DELTA
- Ausführungsformen der Erfindung können auch eine weitere Maßgröße verwenden, um zu messen, um wie viel ein spezielles Videomodul
140 (der ein Codierer sein kann, jedoch nicht notwendigerweise sein muss) in Zeitrückstand gerät. Diese Maßgröße, die als „Zeitrückstand-kompensiertes Delta“ bezeichnet wird, kann berechnet werden als: Delta_minus_fb_ticks[n] = Delta[n] - fb_ticks[n]. Typischerweise erfolgt, wenn der Codierer beginnt, in Zeitrückstand zu geraten, bei fb_ticks und Delta eine gegenläufige Bewegung; jedoch erfolgt bei fb_ticks und Delta keine exakt proportionale gegenläufige Bewegung. Fb_ticks bewegt sich ein wenig früher als Delta, was für etwas mehr Vorsprung sorgt. Fb_ticks ist nicht an eine Erholung gebunden, für den Fall, dass etwas schiefläuft beim Delta-Erholungsmechanismus. - „Zeitrückstand-kompensiertes Delta“ liefert eine kompensierte Maßgröße, wenn aufgrund des Zeitrückstands des Codierers Delta zu sinken beginnt.
- VORNEHMEN VON ANPASSUNGEN BASIEREND AUF VERFÜGBAREN CPU-RESSOURCEN
- Bei Ausführungsformen der Erfindung wird Videomodulen
140 ermöglicht, Anpassungen darin vorzunehmen, wie ein digitales Video verarbeitet wird, wenn die Menge an verfügbaren CPU-Zyklusressourcen sich ändert. Beispielsweise können Ausführungsformen eine Mehrzahl von unterschiedlichen Zyklusprofilen150 unterstützen. Ein jeweiliges Zyklusprofil kann ein unterschiedliches Niveau von Qualität und Dichte ausdrücken, bei dem ein digitales Video verarbeitet werden sollte. - Zyklusprofile
150 können in einer logischen Abfolge angeordnet sein, basierend auf den Konsequenzen von deren Anwendung auf eine Verarbeitung eines digitalen Videos.4 ist eine Darstellung, die eine Anordnung von Zyklusprofilen150 gemäß einer Ausführungsform der Erfindung darstellt. In4 ist eine Abfolge von Zahlen dargestellt, die im Bereich von -9 bis 9 liegen. Jede Zahl gehört zu einem anderen Zyklusprofil (wobei dessen genaue Beschreibung nicht in4 dargestellt ist). Wie in4 dargestellt, gehört zur kleinsten Zahl in der Anordnung (d. h. -9) das Zyklusprofil, das die höchste Qualität und die niedrigste Dichte eines digitalen Videos erzeugt, hingegen gehört die höchste Zahl in der Anordnung (d. h. 9) zu dem Zyklusprofil, das die niedrigste Qualität und die höchste Dichte eines digitalen Videos erzeugt. Jedes Zyklusprofil, das zu einer Ganzzahl zwischen den zwei an den äußeren Endpunkten befindlichen Werten (-9 und 9) gehört, ist basierend auf seiner relativen Wirkung angeordnet. Beispielsweise ergeben die Einstellungen des Zyklusprofils, das zu 2 gehört, bei Anwendung auf ein spezielles Videomodul140 ein digitales Video, das von geringfügig niedrigerer Qualität, jedoch höherer Dichte ist als die Einstellungen des Zyklusprofils, das zu 1 gehört, und zwar bei Anwendung auf ein spezielles Videomodul140 . Als weiteres Beispiel ergeben die Einstellungen des zu -5 gehörenden Zyklusprofils, wenn es auf ein spezielles Videomodul140 angewendet wird, ein digitales Video, das geringfügig geringere Qualität, jedoch höhere Dichte hat, als die Einstellungen des zu -6 gehörenden Zyklusprofils, bei Anwendung auf ein spezielles Videomodul140 . - Bei Ausführungsformen der Erfindung wird versucht, ein spezielles Zyklusprofil
150 zur Verwendung durch ein spezielles Videomodul150 derart auszuwählen, das sie so viele CPU-Zyklen so schnell wie möglich liefern, und dabei die Auswirkung auf die Videoqualität soweit wie möglich minimieren. Als Ergebnis wird der beste Kompromiss für alle Videomodule140 vorgenommen. Falls die Menge an verfügbaren Zyklusressourcen ausreicht, dann wird die Qualität eines digitalen Videos für alle Videomodule140 innerhalb des Zyklus-Budgets maximiert. Falls jedoch die Menge an verfügbaren Zyklusressourcen derart ist, dass zwei oder mehr Videomodule140 dieselben Zyklusressourcen anfordern, um diesen Videomodulen 140 zu ermöglichen, die höchste Videoqualität zu erzeugen, dann nimmt die Ressourcenzuordnungseinrichtung110 ein Auswählen und Zuweisen der den besten Kompromiss darstellenden Zyklusprofile vor, um die Videoqualität soweit wie möglich für diese Videomodule140 zu maximieren. - Bei Ausführungsformen wird auch danach gestrebt, die Geschwindigkeit zu minimieren, mit der eine Abnahme der Videoqualität erfolgt, derart, dass die Beeinträchtigung der Videoqualität nicht so stark bzw. für den Betrachter wahrnehmbar ist, wenn eine Abstimmung oder Anpassung um einen oder mehrere Inkrementschritte des Zyklusprofils für ein spezielles Videomodul
140 vorgenommen wird, z. B., wie in4 dargestellt, ein Umschalten von dem Zyklusprofil150 , das zu einer 2 gehört, zu dem Zyklusprofil150 erfolgt, das zu einer 3 gehört, und danach ein Umschalten auf das Zyklusprofil vorgenommen wird, das zu einer 4 gehört. - Man beachte, dass zwar in
4 19 Zyklusprofile dargestellt sind, die zwischen -9 und 9 angeordnet sind, jedoch können die spezielle Anzahl von einzelnen Zyklusprofilen150 und die Kennungen, die zur Bezeichnung von speziellen Zyklusprofilen150 verwendet werden (beispielsweise werden in4 Zahlen im Bereich von -9 bis 9 verwendet, um einzelne Profile zu bezeichnen), von Implementierung zu Implementierung variieren. - Um ein konkretes Beispiel anzuführen, sind in der nachfolgenden Tabelle 3 gewisse Einstellungen und Eigenschaften von Zyklusprofilen einer Ausführungsform dargestellt. Die spezifischen Zyklusprofile, die in Tabelle 3 dargestellt sind, sind von der höchsten Videoqualität/niedrigsten Dichte (Zyklusprofil
1 ) bis zur niedrigsten Videoqualität/höchsten Dichte (Zyklusprofil7 ) angeordnet. Tabelle 3Zyklusprofil Einstellungen Kommentare 1 Deaktivieren von Vorverarbeitungsfiltern deaktiviert Vorverarbeitungsfilter 2 rdo_params.fast_inter = AVC_FastInter_EnhancedHighDensity AVC_FastInter_EnhancedHighDensity 3 me_params.subpel_mode = AVC_HalfPel AVC_HalfPel 4 ip_params.use_inter_4×4 = False kein Intra in P/B Bildern ip_params.use_inter_8×8 = False ip_params.use_inter_big = False 5 ip_params.use_intra_4×4 = False kein Intra 4×4, 8×8 in I Bildern, ip_params.use_intra_8×8 = False kein tr8×8 transform = AVC_Transform_4×4_only 6 me_params.subblock_mode = AVC_Blocks_16×16 AVC_Blocks_16×16 7 me_params.subpel_mode = AVC_FullPel AVC_FullPel 8 me_params.weighted_pred = face/edge/logo/defilicker AVC_WeightedPred_Off use_adap_quant_offset = 0 use_face_detection = 0; use_edge_detection = 0; use_logo_detection = 0; memset(rc_params.masking_strength, 0, sizeof(rc_params.masking_strength)) i_deflicker_strength = 0 9 deblock_params.mode = Deblocking AVC_DeblockDisable - Als weiteres konkretes Beispiel sind in der nachfolgenden Tabelle 4 gewisse Einstellungen und Eigenschaften von Zyklusprofilen einer Ausführungsform dargestellt. Die spezifischen Zyklusprofile, die in Tabelle 4 dargestellt sind, sind von der niedrigsten Videoqualität/höchsten Dichte (Zyklusprofil -1) bis zur höchsten Videoqualität/niedrigsten Dichte (Zyklusprofil -7) angeordnet. Tabelle 4
Zyklus profil Einstellungen Kommentare -1 Aktivieren von Vor-Verarbeitungsfiltern / Zeilenentflechtungsfiltern (De-Interlacing-Filter) hohe Qualität Aktiviert Vor-Verarbeitungsfilter. Verwendet höhere Qualität bedingende Zeilenentflechtungsfilter für Fälle, bei denen die Quelle im Zeilensprungverfahren vorliegt und der Ausgabedatenstrom progressiv ist -2 rdo_params.fast_inter = AVC_FastInter_EnhancedHighDensity rdo_params.fast_sb_me= Verwendung der am wenigsten aggressiven EE-Schwellenwerte (EE = Early Exit) bei einer Inter-Vorhersage AVC_FastSubBlock_Lev1 (Inter-Prediction), was zu einer geringeren Anzahl von „Early Exits“ je Bild führt. ME bezogen: Verwenden von stärker erweiterten MV-Kandidaten, z.B. globaler/regionaler MV von PA. Verwenden eines schnellen Mittel-Level Subblock ME. -3 rdo_params.fast_inter = AVC_FastInter_Plus MD bezogen: mit Skip-Modus, und erschöpfenderer Inter-Modus-Entscheidung. -4 rdo_params.fast_inter = AVC_Fastlnter Immer Durchführen einer Sub-MB-ME and MD für jeden Block. MD bezogen: sogar noch erschöpfendere Inter-Modus-Entscheidung, z.B. ME-Vorhersager, kein intra_likely-Flag -5 rdo_prams.rdo_mode = AVC_RDO_Accurate RDO bezogen: mit genauerem RDO, z.B. „Real Rate“ -6 rdo_prams.use_satd_in_intra_md = AVC_SatdIntra_on aktiviert Verwendung von SATD für Intra-MD -7 rdo_prams.use_satd_in_intra_md = AVC_Satd_SubPeIME_Ref_on aktiviert Verwendung von SATD für Inter-MD für Referenz-MB -8 rdo_prams .use_satd_in_intra_md = AVC_Satd_SubPeIME_Ref_on rdo_prams.fast_intra = 0 aktiviert Verwendung von SATD für Inter-MD für alle MB, und erschöpfendere Intra-MD - Bei einer Ausführungsform können zwei oder mehr Konfigurationsänderungen, die für ein spezielles Videomodul
140 vorgenommen werden können, dynamisch in eine Reihenfolge gebracht werden, und zwar basierend auf Faktoren wie beispielsweise Bildtyp, Auflösung, Frame-Rate, zeitliche Hierarchieebenen, und eine Vorab-Kenntnis des Systems, z. B. Status der Filter. Zur Verdeutlichung: der aktuelle Bildtyp kann die Reihenfolge bestimmen, in welcher Änderungen bei einem speziellen Videomodul140 vorgenommen werden. Ein jeweiliger Typ einer Konfigurationsänderung kann einem speziellen Bildtyp zugehörig sein, für welchen diese Konfigurationsänderung am effektivsten ist. Tatsächlich sind gewisse Konfigurationsänderungen möglicherweise nur für gewisse Bildtypen effektiv, z. B. ist ein Ändern, wie eine Bewegungsschätzung durchgeführt wird, nicht bei einer Verarbeitung von Intra-Bildern von Nutzen. Falls der aktuelle Bildtyp P oder B ist, dann sind die meisten Konfigurationsänderungen in Bezug darauf, wie eine Codierung durch ein spezielles Videomodul140 durchgeführt wird, von Nutzen. Falls jedoch das aktuelle Bild ein I-Bild ist, kann eine Ausführungsform der Erfindung eine Änderung der Reihenfolge vornehmen, in der Konfigurationsänderungen angewendet werden, bezogen auf einen P- oder B-Bildtyp, derart, dass Konfigurationsänderungen, die für ein Bild vom I-Typ am effektivsten sind, bei dem Videomodul140 , welches das Bild vom I-Typ verarbeitet, als Erstes vorgenommen werden. - Bei einer Ausführungsform wird eine Vorab-Kenntnis des aktuellen Konfigurationszustands eines speziellen Videomoduls
140 und des Bildtyps, welches das spezielle Videomodul140 aktuell verarbeitet, verwendet, um zu bestimmen, wie eine Anpassung der Konfiguration dieses Videomoduls140 in Anbetracht der verfügbaren CPU-Ressourcen vorzunehmen ist. Zur Verdeutlichung: falls die Basisband-Filter für ein spezielles Videomodul140 abgeschaltet wurden, dann ist bei einer Ausführungsform in jeglicher Abfolgeanordnung von Konfigurationsänderungen, die diesem Videomodul140 durch die Ressourcenzuordnungseinrichtung110 mitzuteilen sind, kein Basisband-Filter enthalten. - Einige Typen von Konfigurationsänderungen beinhalten eine oder mehrere weitere untergeordnete Konfigurationsänderungen. Beispielsweise kann eine Anpassung des Basisband-Filters dadurch durchgeführt werden, dass verschiedene Basisbandfilter-Steuerwerte angepasst werden, wie beispielsweise Rauschunterdrückung (Noise Reduction) und Bildverbesserung (Picture Enhancement). Falls eine der Konfigurationseinstellungen nicht aktiviert ist/vom Benutzer verwendet wird, dann sind jegliche der untergeordneten Konfigurationsänderungen nicht in irgendwelchen Anweisungen enthalten, die von der Ressourcenzuordnungseinrichtung
110 dem entsprechenden Videomodul140 mitgeteilt werden. - REGELKREIS
- Wenn das System
100 nicht überlastet ist, sollten Ausführungsformen in der Lage sein, derart zu arbeiten, dass die Zyklusprofile150 , die zur Konfiguration des Betriebs eines jeden der Videomodule140 verwendet werden, jedem der Videomodule140 ermöglichen, einen optimalen Videoqualitätsmodus bereitzustellen oder die Qualität der darunterliegenden Kanäle zu vergrößern. Weiter sollte bei überlastetem System100 eine Abnahme der Videoqualität so langsam und gleichmäßig wie möglich erfolgen. - Der Regelkreis einer Ausführungsform kann auf einer Maßgröße wie beispielsweise der Sender-Delta-Maßgröße, der „Leaky-bucket“-Zeitrückstandsakkumulations-Maßgröße, oder der kompensierten Zeitrückstands-Delta-Maßgröße basieren. Der Füllungsgrad des Senderpuffers
210 wird durch TSMOB gemessen. Wenn der Senderpuffer210 „trockenläuft“ (d. h. TSMOB = 0), dann sind keine Pakete im Sendepuffer210 gespeichert, die dieser senden könnte, wodurch ein Unterlauf in der Zeitebene verursacht wird. Einer der Gründe, warum ein Trockenlaufen des Senderpuffers210 erfolgen könnte, ist bedingt durch einen Codierer, der in Zeitrückstand gerät und nicht mehr in der Lage ist, Pakete an den Senderpuffer210 zu senden. - Die Reaktionszeit auf einen Unterlauf im Senderpuffer
210 wird mittels eines Schwellenwertes gesteuert. Typischerweise wird Delta (die Zeitmenge, die der Ende-zu-Ende-Verzögerung hinzuzuaddieren ist, um Schwankungen der Verarbeitungszeit in Softwaresystemen zu neutralisieren) mit einem Wert von ungefähr 0,6 Sekunden initialisiert. Wenn der Schwellenwert beispielsweise auf 0,5 Sekunden festgelegt ist, beträgt die minimale Reaktionszeit zur Steuerung des Unterlaufs im Senderpuffer 210 0,5 Sekunden. Der Senderpuffer210 bestimmt die Verfügbarkeit von Bits, die der Multiplexer in den Transportdatenstrom verpacken kann. Der Füllungsgrad des Senderpuffers210 bestimmt die Menge an Zeit, die zur Befüllung des Senderpuffers 210 benötigt wird, falls dieser beginnt, einem entleerten Zustand näherzukommen, d. h. 0 Bits. Demzufolge stehen bei diesem Beispiel höchstens 0,5 Sekunden ab dem Zeitpunkt, zu dem der Senderpuffer210 voll war, bis zu dem Zeitpunkt zur Verfügung, zu dem der Senderpuffer210 leer wird, um sicherzustellen, dass der Senderpuffer210 auf einem optimalen Pegel bleibt, ohne leer zu werden. - Die fb_ticks sind ein Maß dafür, wie weit ein spezielles Videomodul
140 bei der Bearbeitung in Zeitrückstand geraten ist. Ähnlich wie für Delta wird, wenn beispielsweise der Schwellenwert fb_ticks auf 0,1 Sekunden festgelegt ist, versucht, die Menge an Videodaten, bei denen ein spezielles Videomodul140 bei der Verarbeitung in Zeitrückstand geraten ist, unter 0,1 Sekunden zu halten. Alle beide dieser Optionen zur Spezifizierung des Schwellenwertes sind dadurch eingeschränkt, welches Ausmaß an Steuerung für eine gegebene Situation durch die Zyklusprofile 150 bereitgestellt wird. - Bei einer Ausführungsform der Erfindung kann ein Regelkreis verwendet werden, der als Prozessvariablen fb_ticks oder einen Zeitrückstand verwendet, während der Sollwert des Zeitrückstands gegen 0 getrieben wird. Ein ähnlicher Lösungsansatz kann von einer Ausführungsform verwendet werden, bei als Prozessvariablen die Signale Delta oder Delta_minus_fbticks verwendet werden und für Delta und Delta_minus_fbticks die Sollwerte auf 0,6 Sekunden gesetzt sind.
- ZENTRALE STEUEREINRICHTUNG
- Wenn ein spezielles Videomodul
140 in Zeitrückstand bei der Verarbeitung eines Kanals gerät, liegt eines der möglichen Probleme darin, dass einige Kanäle gelegentlich mehr in Zeitrückstand geraten als andere. Die „vorweglaufenden Kanäle tun dies typischerweise, da der Inhalt, den sie transportieren, dafür geeignet ist, in der Pipeline eine größere Anzahl von rechenskalierbaren Entscheidungen vorzunehmen. Andererseits wird von den Kanälen, die in Zeitrückstand geraten, typischerweise ein relativ schwieriger Inhalt transportiert, der eine größere Anzahl von seriellen Codierentscheidungen erfordert (beispielsweise eine große Anzahl an kleineren Intra-Moden und/oder eine größere Anzahl von CABAC-Binärentscheidungen zur Renormalisierung), die innerhalb eines Zyklus-Budgets vorzunehmen sind, das nicht über den Wert ausgedehnt werden kann, der für diesen speziellen Kanal zugeordnet wurde, und eine größere Anzahl von Zyklusressourcen kann nicht beschafft werden, ohne diese von den anderen Kanälen zu bekommen, welche sich den gleichen Satz von CPU-Kernen teilen. - Ein Weg, um mehr Zyklusressourcen für einen beliebigen Kanal zu beschaffen, der stärker als die anderen in Zeitrückstand gerät, kann mittels einer zentralen Entität erfolgen, welche den Zeitrückstand aller Kanäle normalisieren kann und diese auf den gleichen Pegel eines Zeitrückstands bringen kann, wodurch Zyklen von den schneller laufenden Kanälen zugunsten der langsameren Kanäle freigegeben werden. Die langsameren Kanäle verwenden den normalisierten Wert, der durch die zentrale Steuereinrichtung gesendet wurde, um Zyklen freizugeben. Die Ressourcenzuordnungseinrichtung
110 weist einem speziellen Videomodul140 , das einen Kanal verarbeitet, der in Zeitrückstand gerät, ein unterschiedliches Zyklusprofil 150 zu, das um einen Schritt oder ein Inkrement in Richtung hin zu einer höheren Dichte und einer geringeren Videoqualität liegt. Falls beispielsweise ein spezielles Videomodul140 zuvor ein Zyklusprofil verwendet hat, das einer 1 zugehörig war, wie in4 dargestellt, dann kann die Ressourcenzuordnungseinrichtung110 , bei Empfang der Information von der zentralen Steuereinrichtung, dieses spezielle Videomodul140 anweisen, das Zyklusprofil zu verwenden, das zu einer 2 gehört, wie in4 dargestellt, da sich dieses Zyklusprofil einen einzigen Schritt oder Inkrement in der Richtung hin zu einer höheren Dichte und einer geringeren Videoqualität befindet. Jedoch sei angemerkt, dass Kanäle, die schneller laufen, wenn sie einen rechentechnisch weniger aufwendigen Inhalt verarbeiten, unverhältnismäßig stark durch eine Verminderung der Videoqualität getroffen werden, die durch ein Anpassen der Zyklusprofile bedingt ist, welche von den diese Kanäle verarbeitenden Videomodulen140 verwendet werden, so dass sie eine sehr niedrige Videoqualität und eine höhere Dichte aufweisen, um zu gewährleisten, dass der Inhalt in zeitgerechter Weise verarbeitet wird. -
- Der normalisierte Rückführungswert wird durch die zentrale Steuereinrichtung einem jeweiligen Kanal zugeführt. Danach kann der Zeitrückstand von weiteren Kanälen so angepasst werden, dass die Kanäle stärker zeitlich zurückfallen können, und zwar zugunsten des Kanals/der Kanäle, die am stärksten zeitlich zurückfallen. Dies kann ausgedrückt werden als:
If (Fb < Fbavg) Set Fb = Fbavg or Fb = (1-bias) * Fb + bias * Fbavg
Zur Verwendung durch den Regelkreis, wobei für bias gilt: 0 < bias < 1
Man beachte, dass durch eine auf diese Weise erfolgende Anpassung der zulässigen Zeitrückstandswerte eine Beeinträchtigung der Videoqualität der Kanäle erfolgt, welche einen berechnungsmäßig weniger aufwendig zu verarbeitenden Inhalt transportieren und die schneller als Echtzeit oder nahe an Echtzeit laufen.
STATISTISCHES MULTIPLEXEN DER ZYKLEN
In der US-Patentanmeldung mit der Seriennr. 14/961,239 (die '239 Anmeldung), eingereicht am 7. Dezember 2015 , mit dem Titel „DYNAMIC ALLOCATION OF CPU CYCLES IN VIDEO STREAM PROCESSING“, deren Offenbarung hiermit durch Bezugnahme vollinhaltlich in das vorliegende Dokument aufgenommen wird, ist ein CPU-Datenstrom-Lastverteilungsmodul zuständig für ein Codierer-übergreifendes statistisches Multiplexen der Zyklen, und zwar unter Verwendung von deren Komplexität und CPU-Nutzung. Ausführungsformen der Erfindung erkennen, dass, wenn die Komplexität des Inhalts zunimmt, die CPU-Nutzung zur Verarbeitung dieses Inhalts zu diesem Zeitpunkt zunimmt. Bei statistisch gemultiplexten Kanälen benötigen typischerweise die Kanäle mit einer höheren Komplexität eine größere Bitrate sowie eine größere CPU-Nutzung.
In den nachfolgenden Ausdrücken ist die Komplexität eines Kanals zu einem Zeitpunkt t mit Xi,t bezeichnet, wobei i die Kanalnummer und t der Zeitpunkt ist. Die CPU-Nutzung zu einem Zeitpunkt t wird als Ci,t bezeichnet, wobei i die Kanalnummer und t der Zeitpunkt ist. Die CPU-Nutzung eines gegebenen Kanals ist proportional zu dessen Komplexität zu diesem Zeitpunkt, wie gezeigt durch:
Zum Zeitpunkt t sendet jeder Codierer (oder Videomodul 140 ) den Look-Ahead-Komplexitätswert LAXi,t für das erste Bild in seiner Look-Ahead-Pipeline. Typischerweise entspricht die Komplexität des gemeldeten Bildes mehreren Bildern in der Zukunft, die mit demjenigen verglichen werden, das gerade codiert wird. Jeder Codierer (oder Videomodul 140 ) sendet auch die aktuelle momentane CPU-Nutzung Ci,t und die Komplexität des aktuell codierten Bildes Xi,t an das CPU-Datenstrom-Lastverteilungsmodul. Basierend auf dieser Information nimmt das CPU-Datenstrom-Lastverteilungsmodul eine Vorhersage der CPU-Nutzung entsprechend dem Look-Ahead-Komplexitätswert LAXi,t für einen jeweiligen Codierkanal vor. Der Look-Ahead-Gesamtkomplexitätswert zum Zeitpunkt t ist definiert als
Mit dieser Information kann eine Bestimmung vorgenommen werden für IdlePredtotal,t = 100 - CPREDtotal,t. Man beachte, dass dieser Wert entweder positiv oder negativ sein könnte, da ein negativer Wert zukünftige Komplexitätswerte angibt, die wahrscheinlich eine Überlastung der Nutzung der System-CPU durch alle Codierer (oder Videomodule 14 ) insgesamt verursachen. Dieser Wert kann durch den Regelkreis einer Ausführungsform verwendet werden, wie folgt:
Dieser idleCpuPerc wird durch den Regelkreis verwendet, um Anpassungen bei dem Zyklusprofil 150 vorzunehmen, das einem Codierer (oder Videomodul 150 ) zugewiesen ist. Dies liefert den auf einem CPU-Nutzungswert basierenden Feedforward-Vorhersagemechanismus an den Regelkreis.
Auch führt bei einer weiteren Ausführungsform das CPU-Datenstrom-Lastverteilungsmodul ein Vorhersagen des Zeitrückstands einzelner Codierer-Kanäle basierend auf dem Look-Ahead-Komplexitätswert LAXi,t für einen jeweiligen Codierer-Kanal durch. Ein Maß für das Ausmaß eines Zeitrückstands eines jeweiligen Kanals, zu einem Zeitpunkt t, wird mit FBi,t bezeichnet, wobei i die Kanalnummer und t der Zeitpunkt ist. Ein Maß des Zeitrückstands eines gegebenen Kanals ist proportional zu dessen Komplexitätswert zu diesem Zeitpunkt, wie ausgedrückt durch:
Zum Zeitpunkt t sendet jeder Codierer (oder Videomodul 140 ) den Look-Ahead-Komplexitätswert LAXi,t für das erste Bild in seiner Look-Ahead-Pipeline an das CPU-Datenstrom-Lastverteilungsmodul. Typischerweise entspricht die Komplexität des gemeldeten Bildes mehreren Bildern in der Zukunft, die mit demjenigen verglichen werden, das gerade codiert wird. Jeder Codierer (oder Videomodul 140 ) sendet auch den aktuellen momentanen Zeitrückstand FBi,t und die Komplexität des aktuell codierten Bildes Xi,t an das CPU-Datenstrom-Lastverteilungsmodul. Basierend auf dieser Information nimmt das CPU-Datenstrom-Lastverteilungsmodul eine Vorhersage des Zeitrückstands entsprechend dem Look-Ahead-Komplexitätswert LAXi,t für einen jeweiligen Codierkanal vor, und zwar wie folgt:
Der Zeitrückstand für einen jeweiligen Codierkanal kann vom Regelkreis als Feedforward-Vorhersage verwendet werden. Damit lässt sich der Ausdruck Δfilt,t = (Δt + 7 * Δt-1)/8 umformulieren zu:
- If fb_ticks[n] < FBPREDi,t Offset = Kp * (fb_ticks[n]+ FBPREDi,t) + Ki * fbticks_acc[n] + Kd * Delta_fbticks[n]
- Else Offset = Kp * fb_ticks[n] + Ki * fbticks_acc[n] + Kd * Delta_fbticks[n]
Durch die obenstehende Prozedur wird die Stabilität des Regelkreises verbessert, und diese wartet nicht auf eine Abweichung vom Sollwert, bevor Korrekturaktionen vorgenommen werden. Dies liegt daran, dass die Störung vorhergesagt wird, bevor sie in das System eintritt, und diese Information wird verwendet, um eine Korrekturaktion vorzunehmen, bevor die Störung das System beeinflusst hat. Der Effekt der Störung wird somit dadurch verringert, dass diese vorhergesagt wird und ein Steuersignal erzeugt wird, das dieser entgegenwirkt, bevor deren Einfluss auf das System merkbar wird.
LASTVERTEILUNG VON SOCKEL UND THREAD
Compute-Einheiten sind typischerweise in Gruppen von CPUs (Sockel) mit Zugang zu denselben Speicherressourcen gruppiert. Für eine Transcoder-Instanz kann die Einschränkung bestehen, dass ihre Verarbeitungs-Threads zu Kernen einer spezifischen Gruppe von CPUs (Sockel) zuzuweisen sind, um potentielle CPU-Gruppen-übergreifende Speicherkopiervorgänge zu reduzieren. Wenn auch eine derartige Einschränkung effizienter ist, so erfordert ein Verteilen einer Anzahl von Transcoder-Instanzen (von unterschiedlicher Auflösung, Konfiguration, und Inhalt) zwischen einer Anzahl von CPU-Gruppen eine Lastverteilung während der Laufzeit, um endemische Fälle zu vermeiden, bei denen eine einzige CPU-Gruppe (Sockel) die gesamte Zeit überlastet wird, während eine Unter-Nutzung der Übrigen erfolgt. Dadurch kann bei einer Ausführungsform eine Anpassung von CPU-Gruppen erfolgen, so dass in bestmöglicher Weise jede CPU-Gruppe das gleiche oder ein ähnliches Zyklusprofil 150 verwendet.
Nachdem eine anfängliche Zuordnung von Transcoder-Instanzen bei einer Inbetriebnahme des Systems erfolgt ist, kann die folgende Prozedur durch Ausführungsformen vorgenommen werden, um periodisch eine erneute Lastverteilung bei den Kanälen während der Laufzeit vorzunehmen.
Als Erstes wird eine Messung des durchschnittlichen Kennungswerts des Zyklusprofils 150 (d. h. eine der in 4 dargestellten Kennzahlen) für einen jeweiligen Kanal eines jeweiligen Sockels über ein Fenster von 5 Minuten vorgenommen. Durch LEVEL [ii] [jj] wird der durchschnittliche Zyklusprofil-Kennwert für den Kanal jj ausgedrückt, eingeschränkt auf Sockel ii.
Als Nächstes werden CPU-Gruppen in absteigender Reihenfolge ihres avgLEVEL[ii] angeordnet (durchschnittliche Zyklusprofilkennung für Kanäle, eingeschränkt auf Sockel ii), wobei avgLEVEL[0] > avgLEVEL[1] > ... > avgLEVEL[n-1], wobei n die Anzahl unterschiedlicher CPU-Gruppen ist.
Dann wird der Kanal in jeder CPU-Gruppe [ii], der die niedrigste durchschnittliche Einstellwertstufe während des vorhergehenden Fensters von 5 Minuten hat, identifiziert als Niedrigster[ii]. Der Kanal in jeder CPU-Gruppe [ii], der die höchste durchschnittliche Einstellwertstufe während des vorhergehenden Fensters von 5 Minuten hat, wird identifiziert als Höchste [ii]. Die Anzahl von Codier-/Transcodier-Diensten, die auf einer jeweiligen CPU-Gruppe laufen, wird identifiziert als numServices[ii].
Zum Schluss wird eine erneute Lastverteilung in Form eines Pseudo-Code gemäß einer Ausführungsform beschrieben:
for (int ii=0; i<(n/2); i++) { if ( ((avgLEVEL[ii] - avgLEVEL[n-1-ii]) > 2) && (numServices[ii] <= numServices[n-1-ii]) ) { Schalte Niedrigster[n-1-ii] auf CPU-Gruppe (ii); Schalte Höchster[ii] auf CPU-Gruppe (n-1-ii); } if ( ((avgLEVEL[ii] - avgLEVEL[n-1-ii]) > 2) && (numServices[ii] > numServices[n-1-ii]) ) { Schalte Niedrigster[ii] auf CPU-Gruppe (n-1-ii); } }
Wie oben gezeigt, kann eine Begrenzung von Videomodulen 140 durch Gruppieren oder physische Ressourcenzuordnung (d. h. wie CPUs in einem Sockel angeordnet sind) erfolgen, die deren Fähigkeit zu einem Sockel-übergreifenden freien Zugang zu Ressourcen begrenzt. Demzufolge ist es, bis mehr Ressourcen dem Videomodul 140 außerhalb dieses Sockels zugewiesen werden können, erforderlich, bei dem Videomodul 140 eine Anpassung des ihm zugewiesenen Zyklusprofils 150 , das seinen Betrieb steuert, dahingehend vorzunehmen, dass es den dem Sockel zur Verfügung stehenden Ressourcen Rechnung getragen wird, bis die Ressourcen verfügbar werden.
Threads sind ein weiteres Beispiel von Ressourcen, bei denen eine Lastverteilung vorgenommen werden muss, und zwar zwischen Überallokation und zugehörigem Overhead. Jedes Zyklusprofil 150 erfordert eine unterschiedliche Zuordnung von Threads, um die durch dieses Zyklusprofil definierte Verarbeitungskonfiguration zu erzielen. Jedes Zyklusprofil 150 spezifiziert Konfigurationsänderungen für ein Videomodul 150 , mit denen eine Anpassung vielfältiger Faktoren vorgenommen werden kann, wie beispielsweise Bitrate, Frame-Rate, Auflösung und Codec. Demzufolge wird bei Ausführungsformen der Erfindung auch gewährleistet, dass die Ressourcenzuordnungseinrichtung 110 eine Thread-Verfügbarkeit, eine Überallokation und einen zugehörigen Overhead berücksichtigt, wenn sie eine Anpassung in Bezug darauf vornimmt, welches Zyklusprofil 150 einem speziellen Videomodul 140 zuzuweisen ist.
HARDWARE-MECHANISMEN
Bei einer Ausführungsform kann die Hardwareeinheit 120 von 1 auf einem Computersystem implementiert sein oder diesem entsprechen. 5 ist ein Blockdiagramm, das ein Computersystem 500 darstellt, auf dem eine Ausführungsform der Erfindung implementiert sein kann. Bei einer Ausführungsform beinhaltet das Computersystem 500 einen Prozessor 504 , einen Hauptspeicher 506 , einen ROM 508 , eine Speichervorrichtung 510 und eine Kommunikationsschnittstelle 518 . Das Computersystem 500 beinhaltet mindestens einen Prozessor 504 zum Verarbeiten von Information. Das Computersystem 500 beinhaltet auch einen Hauptspeicher 506 , wie beispielsweise einen RAM (Random Access Memory = Direktzugriffspeicher) oder eine andere dynamische Speichervorrichtung, zum Speichern von Informationen und Anweisungen, die durch den Prozessor 504 auszuführen sind. Der Hauptspeicher 506 kann auch für ein Speichern von temporären Variablen oder weiterer Zwischeninformation während eines Ausführens von durch den Prozessor 504 auszuführenden Anweisungen verwendet werden. Das Computersystem 500 beinhaltet ein ROM (Read Only Memory = Nur-Lese-Speicher) 508 oder eine andere statische Speichervorrichtung zum Speichern von statischer Information und Anweisungen für den Prozessor 504 . Eine Speichervorrichtung 510 , wie beispielsweise eine Magnetplatte oder eine optische Platte, ist für ein Speichern von Information und Anweisungen vorgesehen.
Ausführungsformen der Erfindung betreffen die Verwendung eines Computersystems 500 für ein Implementieren der hier beschriebenen Verfahren. Gemäß einer Ausführungsform der Erfindung werden diese Verfahren durch das Computersystem 500 ansprechend darauf durchgeführt, dass der Prozessor 504 eine oder mehrere Sequenzen von einer oder mehreren im Hauptspeicher 506 befindlichen Anweisungen ausführt. Derartige Anweisungen können in den Hauptspeicher 506 von einem anderen maschinenlesbaren Medium, wie beispielsweise der Speichervorrichtung 510 , eingelesen werden. Ein Ausführen der im Hauptspeicher 506 enthaltenen Sequenzen von Anweisungen veranlasst den Prozessor 504 , die hier beschriebenen Prozessschritte auszuführen. Bei alternativen Ausführungsformen kann ein fest verdrahteter Schaltkreis verwendet werden, anstelle oder in Kombination mit Softwareanweisungen, um Ausführungsformen der Erfindung zu implementieren. Somit sind Ausführungsformen der Erfindung nicht auf irgendeine spezifische Kombination aus Hardware, Schaltkreis und Software eingeschränkt.
Der Begriff „nicht-transitorisches maschinenlesbares Speichermedium“, wie hier verwendet, bezieht sich auf jegliches körperlich greifbare Medium, das am persistenten Speichern von Anweisungen teilnimmt, die dem Prozessor 504 zum Ausführen geliefert werden können. Nicht-einschränkende, illustrierende Beispiele von nicht-transitorischen, computerlesbaren Medien beinhalten beispielsweise eine Floppy-Disk, eine flexible Disk, eine Festplatte, ein Magnetband oder ein beliebiges anderes magnetisches Medium, eine CD-ROM, ein beliebiges anderes optisches Medium, ein RAM, ein PROM, ein EPROM, ein FLASH-EPROM, einen beliebigen anderen Speicherchip oder -patrone oder ein beliebiges anderes Medium, von dem ein Computer lesen kann.
Verschiedene Formen von nicht-transitorischen computerlesbaren Medien können daran beteiligt sein, eine oder mehrere Sequenzen aus einer oder mehreren Anweisungen an den Prozessor 504 zur Ausführung zu transportieren. Beispielsweise können sich die Anweisungen anfänglich auf einer Magnetplatte eines entfernt befindlichen Computers befinden. Der entfernte Computer kann die Anweisungen in seinen dynamischen Speicher laden und die Anweisungen über eine Netzwerkanbindung 520 zum Computersystem 500 senden.
Die Kommunikationsschnittstelle 518 stellt eine Zweiweg-Datenkommunikationsverbindung zu einer Netzwerkanbindung 520 bereit, die mit einem lokalen Netzwerk verbunden ist. Beispielsweise kann eine Kommunikationsschnittstelle 518 eine ISDN-Karte (ISDN = Integrated Services Digital Network = dienstintegrierendes digitales Netz) oder ein Modem sein, um eine Datenkommunikationsverbindung zu einem korrespondierenden Typ von Telefonleitung bereitzustellen. Als weiteres Beispiel kann eine Kommunikationsschnittstelle 518 eine LAN-Karte (LAN = Local Area Network = Lokales Netzwerk) sein, um eine Datenkommunikationsverbindung zu einem kompatiblen LAN bereitzustellen. Es können auch Funkanbindungen implementiert sein. Bei jeder derartigen Implementierung führt die Kommunikationsschnittstelle 518 ein Senden und Empfangen von elektrischen, elektromagnetischen oder optischen Signalen durch, die digitale Datenströme transportieren, welche verschiedene Typen von Information repräsentieren.
Die Netzwerkanbindung 520 stellt typischerweise eine Datenkommunikation über eines oder mehrere Netzwerke zu anderen Datengeräten bereit. Beispielsweise kann die Netzwerk-Anbindung 520 eine Verbindung über ein lokales Netzwerk zu einem Host-Computer oder zu Datenanlagen bereitstellen, die durch einen Internetdienstanbieter (ISP = Internet Service Provider) betrieben werden.
Das Computersystem 500 kann Nachrichten senden und Daten, einschließlich Programmcode, empfangen, und zwar über das/die Netzwerk(e), die Netzwerkanbindung 520 und die die Kommunikationsschnittstelle 518 . Beispielsweise könnte ein Server einen angeforderten Code für ein Anwendungsprogramm über das Internet, einen lokalen ISP, ein lokales Netzwerk, und danach an die Kommunikationsschnittstelle 518 übertragen. Der empfangene Code kann durch den Prozessor 504 bei Empfang ausgeführt werden, und/oder in einer Speichervorrichtung 510 oder einem anderen nicht-flüchtigen Speicher zur späteren Ausführung gespeichert werden.
In der vorhergehenden Beschreibung wurden Ausführungsformen der Erfindung mit Bezug auf zahlreiche spezifische Details beschrieben, die von Implementierung zu Implementierung variieren können. Somit ist der einzige und ausschließliche Indikator, was die Erfindung ist und was seitens der Anmelder als Erfindung beabsichtigt ist, der Satz der Ansprüche, die aus dieser Anmeldung hervorgehen, und zwar in der spezifischen Form, in welcher derartige Ansprüche zu erstellen sind, einschließlich jeglicher anschließender Korrekturen. Jegliche Definitionen, die für in derartigen Ansprüchen enthaltene Begriffe hier ausdrücklich dargelegt sind, sollen für die Bedeutung derartiger Begriffe wie in den Ansprüchen verwendet, maßgeblich sein. Somit sollte keine Einschränkung, Element, Eigenschaft, Merkmal, Vorteil oder Attribut, das in einem Anspruch nicht ausdrücklich dargelegt ist, den Schutzumfang dieses Anspruchs in irgendeiner Weise einschränken. Die Beschreibung und die Zeichnungen sind demgemäß in einem illustrierenden und nicht in einem einschränkenden Sinn zu verstehen.
Claims (20)
- Nicht-transitorisches computerlesbares Speichermedium, das eine oder mehrere Sequenzen von Anweisungen für ein dynamisches Zuordnen, zu einem Video-Encoder, von CPU-Zyklusressourcen speichert, die, wenn sie durch einen oder mehrere Prozessoren ausgeführt werden, veranlassen: Einschätzen, durch eine Ressourcenzuordnungseinrichtung, die auf einer Hardwareeinheit ausgeführt wird, einer Menge an verfügbaren CPU-Zyklusressourcen in der Hardwareeinheit; und nach einem Bestimmen, durch die Ressourcenzuordnungseinrichtung, einer Änderung der Menge an verfügbaren CPU-Zyklusressourcen, Anpassen, in Echtzeit, welches spezielle Zyklusprofil einer Mehrheit von Zyklusprofilen dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, wobei durch die Mehrzahl von Zyklusprofilen jeweils ein Zuordnen, an Elemente der Mehrzahl von Videomodulen, einer speziellen Menge an CPU-Zyklusressourcen für ein Verarbeiten eines digitalen Videos erfolgt, und wobei die Mehrzahl von Zyklusprofilen jeweils einen Satz von Konfigurationseinstellungen spezifiziert und in einer Abfolge angeordnet ist, die auf einer Videoqualität und -dichte basiert, welche durch Elemente der Mehrzahl von Videomodulen unter Verwendung von Konfigurationseinstellungen, die einem jeweiligen der Mehrzahl von Zyklusprofilen zugehörig sind, beim Verarbeiten eines digitalen Videos erzielt werden können.
- Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: ansprechend auf ein Anpassen, in Echtzeit, des speziellen Zyklusprofils, das dem mindestens einen Videomodul zugewiesen ist, Verarbeiten, durch das mindestens eine Videomodul, eines speziellen Digitalvideo-Frame in einem Videodatenstrom, und zwar unter Verwendung eines unterschiedlichen Satzes von Konfigurationseinstellungen als für benachbarte Frames. - Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: ansprechend auf ein Anpassen, in Echtzeit, des speziellen Zyklusprofils, das dem mindestens einen Videomodul zugewiesen ist, Verarbeiten, durch das mindestens eine Videomodul, eines speziellen Makroblocks, und zwar unter Verwendung eines unterschiedlichen Satzes von Konfigurationseinstellungen als für mindestens einen weiteren Makroblock in demselben Frame eines digitalen Videos. - Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das spezielle Zyklusprofil, das dem mindestens einen Videomodul zugewiesen ist, weitere CPU-Zyklusressourcen dem mindestens einen Videomodul zusätzlich zu denen zuordnet, die standardmäßig einem Modus zugewiesen sind, in dem das mindestens eine Videomodul arbeitet, und zwar zum Zweck einer Verbesserung einer Videoqualität über die diesem Modus zugehörige Qualität hinaus. - Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: Anweisen, durch die Ressourcenzuordnungseinrichtung, eines speziellen Videomoduls von der Mehrzahl von Videomodulen, dass es sein Verhalten so ändert, dass es zwischen einem Betrieb gemäß einem HQ-Modus (HQ = hohe Qualität) und einem HD-Modus (HD = hohe Dichte) fluktuiert, und zwar ansprechend auf Änderungen bei den verfügbaren CPU-Zyklusressourcen. - Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: Anweisen, durch die Ressourcenzuordnungseinrichtung, eines speziellen Videomoduls von der Mehrzahl von Videomodulen, ein Videoqualitätsniveau bei dem verarbeiteten digitalen Video zu ändern, das durch das spezielle Videomodul erzeugt wird, und zwar ansprechend auf Änderungen bei den verfügbaren CPU-Zyklusressourcen. - Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das Anpassen, in Echtzeit, welches spezielle Zyklusprofil dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, beinhaltet: Identifizieren, durch die Ressourcenzuordnungseinrichtung, dass dem mindestens einen von der Mehrzahl von Videomodulen ein neues Zyklusprofil zugewiesen werden sollte, ansprechend darauf, dass ein Unterlauf-Zustand in einem Senderpuffer des mindestens einen von der Mehrzahl von Videomodulen erkannt wird. - Nicht-transitorisches computerlesbares Speichermedium nach
Anspruch 1 , wobei das Anpassen, in Echtzeit, welches spezielle Zyklusprofil dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, beinhaltet: Identifizieren, durch die Ressourcenzuordnungseinrichtung, dass dem mindestens einen von der Mehrzahl von Videomodulen ein neues Zyklusprofil zugewiesen werden sollte, ansprechend darauf, dass Differenzen zwischen einer Codierzeit je Bild bezogen auf eine erwartete Codierzeit je Bild für ein jeweiliges von dem mindestens einen von der Mehrzahl von Videomodulen gemessen werden. - Vorrichtung für ein dynamisches Zuordnen von CPU-Zyklusressourcen zu einem Video-Encoder, aufweisend: einen oder mehrere Prozessoren; und ein oder mehrere nicht-transitorische computerlesbare Speichermedien, die eine oder mehrere Sequenzen von Anweisungen speichern, welche bei Ausführung veranlassen: Einschätzen, durch eine Ressourcenzuordnungseinrichtung, die auf einer Hardwareeinheit ausgeführt wird, einer Menge an verfügbaren CPU-Zyklusressourcen in der Hardwareeinheit; und nach einem Bestimmen, durch die Ressourcenzuordnungseinrichtung, einer Änderung der Menge an verfügbaren CPU-Zyklusressourcen, Anpassen, in Echtzeit, welches spezielle Zyklusprofil einer Mehrheit von Zyklusprofilen dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, wobei durch die Mehrzahl von Zyklusprofilen jeweils ein Zuordnen, an Elemente der Mehrzahl von Videomodulen, einer speziellen Menge an CPU-Zyklusressourcen für ein Verarbeiten eines digitalen Videos erfolgt, und wobei die Mehrzahl von Zyklusprofilen jeweils einen Satz von Konfigurationseinstellungen spezifiziert und in einer Abfolge angeordnet ist, die auf einer Videoqualität und -dichte basiert, welche durch Elemente der Mehrzahl von Videomodulen unter Verwendung von Konfigurationseinstellungen, die einem jeweiligen der Mehrzahl von Zyklusprofilen zugehörig sind, beim Verarbeiten eines digitalen Videos erzielt werden können.
- Vorrichtung nach
Anspruch 9 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: ansprechend auf ein Anpassen, in Echtzeit, des speziellen Zyklusprofils, das dem mindestens einen Videomodul zugewiesen ist, Verarbeiten, durch das mindestens eine Videomodul, eines speziellen Digitalvideo-Frame in einem Videodatenstrom, und zwar unter Verwendung eines unterschiedlichen Satzes von Konfigurationseinstellungen als für benachbarte Frames. - Vorrichtung nach
Anspruch 9 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: ansprechend auf ein Anpassen, in Echtzeit, des speziellen Zyklusprofils, das dem mindestens einen Videomodul zugewiesen ist, Verarbeiten, durch das mindestens eine Videomodul, eines speziellen Makroblocks, und zwar unter Verwendung eines unterschiedlichen Satzes von Konfigurationseinstellungen als für mindestens einen weiteren Makroblock in demselben Frame eines digitalen Videos. - Vorrichtung nach
Anspruch 9 , wobei das spezielle Zyklusprofil, das dem mindestens einen Videomodul zugewiesen ist, weitere CPU-Zyklusressourcen dem mindestens einen Videomodul zusätzlich zu denen zuordnet, die standardmäßig einem Modus zugewiesen sind, in dem das mindestens eine Videomodul arbeitet, und zwar zum Zweck einer Verbesserung einer Videoqualität über die diesem Modus zugehörige Qualität hinaus. - Vorrichtung nach
Anspruch 9 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: Anweisen, durch die Ressourcenzuordnungseinrichtung, eines speziellen Videomoduls von der Mehrzahl von Videomodulen, dass es sein Verhalten so ändert, dass es zwischen einem Betrieb gemäß einem HQ-Modus (HQ = hohe Qualität) und einem HD-Modus (HD = hohe Dichte) fluktuiert, und zwar ansprechend auf Änderungen bei den verfügbaren CPU-Zyklusressourcen. - Vorrichtung nach
Anspruch 9 , wobei das Ausführen der einen oder mehreren Sequenzen von Anweisungen weiter veranlasst: Anweisen, durch die Ressourcenzuordnungseinrichtung, eines speziellen Videomoduls von der Mehrzahl von Videomodulen, ein Videoqualitätsniveau bei dem verarbeiteten digitalen Video zu ändern, das durch das spezielle Videomodul erzeugt wird, und zwar ansprechend auf Änderungen bei den verfügbaren CPU-Zyklusressourcen. - Vorrichtung nach
Anspruch 9 , wobei das Anpassen, in Echtzeit, welches spezielle Zyklusprofil dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, beinhaltet: Identifizieren, durch die Ressourcenzuordnungseinrichtung, dass dem mindestens einen von der Mehrzahl von Videomodulen ein neues Zyklusprofil zugewiesen werden sollte, ansprechend darauf, dass ein Unterlauf-Zustand in einem Senderpuffer des mindestens einen von der Mehrzahl von Videomodulen erkannt wird. - Vorrichtung nach
Anspruch 9 , wobei das Anpassen, in Echtzeit, welches spezielle Zyklusprofil dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, beinhaltet: Identifizieren, durch die Ressourcenzuordnungseinrichtung, dass dem mindestens einen von der Mehrzahl von Videomodulen ein neues Zyklusprofil zugewiesen werden sollte, ansprechend darauf, dass Differenzen zwischen einer Codierzeit je Bild bezogen auf eine erwartete Codierzeit je Bild für ein jeweiliges von dem mindestens einen von der Mehrzahl von Videomodulen gemessen werden. - Verfahren zum dynamischen Zuordnen von CPU-Zyklusressourcen zu einem Video-Encoder, umfassend: Einschätzen, durch eine Ressourcenzuordnungseinrichtung, die auf einer Hardwareeinheit ausgeführt wird, einer Menge an verfügbaren CPU-Zyklusressourcen in der Hardwareeinheit; und nach einem Bestimmen, durch die Ressourcenzuordnungseinrichtung, einer Änderung der Menge an verfügbaren CPU-Zyklusressourcen, Anpassen, in Echtzeit, welches spezielle Zyklusprofil einer Mehrheit von Zyklusprofilen dem mindestens einen von einer Mehrzahl von Videomodulen zugewiesen ist, wobei durch die Mehrzahl von Zyklusprofilen jeweils ein Zuordnen, an Elemente der Mehrzahl von Videomodulen, einer speziellen Menge an CPU-Zyklusressourcen für ein Verarbeiten eines digitalen Videos erfolgt, und wobei die Mehrzahl von Zyklusprofilen jeweils einen Satz von Konfigurationseinstellungen spezifiziert und in einer Abfolge angeordnet ist, die auf einer Videoqualität und -dichte basiert, welche durch Elemente der Mehrzahl von Videomodulen unter Verwendung von Konfigurationseinstellungen, die einem jeweiligen der Mehrzahl von Zyklusprofilen zugehörig sind, beim Verarbeiten eines digitalen Videos erzielt werden können.
- Verfahren nach
Anspruch 17 , wobei das spezielle Zyklusprofil, das dem mindestens einen Videomodul zugewiesen ist, weitere CPU-Zyklusressourcen dem mindestens einen Videomodul zusätzlich zu denen zuordnet, die standardmäßig einem Modus zugewiesen sind, in dem das mindestens eine Videomodul arbeitet, und zwar zum Zweck einer Verbesserung einer Videoqualität über die diesem Modus zugehörige Qualität hinaus. - Verfahren nach
Anspruch 17 , weiter umfassend: Anweisen, durch die Ressourcenzuordnungseinrichtung, eines speziellen Videomoduls von der Mehrzahl von Videomodulen, dass es sein Verhalten so ändert, dass es zwischen einem Betrieb gemäß einem HQ-Modus (HQ = hohe Qualität) und einem HD-Modus (HD = hohe Dichte) fluktuiert, und zwar ansprechend auf Änderungen bei den verfügbaren CPU-Zyklusressourcen. - Verfahren nach
Anspruch 17 , weiter umfassend: Anweisen, durch die Ressourcenzuordnungseinrichtung, eines speziellen Videomoduls von der Mehrzahl von Videomodulen, ein Videoqualitätsniveau bei dem verarbeiteten digitalen Video zu ändern, das durch das spezielle Videomodul erzeugt wird, und zwar ansprechend auf Änderungen bei den verfügbaren CPU-Zyklusressourcen.
Applications Claiming Priority (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US201562264716P | 2015-12-08 | 2015-12-08 | |
US62/264,716 | 2015-12-08 | ||
PCT/US2016/065658 WO2017100474A1 (en) | 2015-12-08 | 2016-12-08 | Resource aware video processor |
Publications (1)
Publication Number | Publication Date |
---|---|
DE112016004532T5 true DE112016004532T5 (de) | 2018-06-21 |
Family
ID=58798661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
DE112016004532.8T Pending DE112016004532T5 (de) | 2015-12-08 | 2016-12-08 | Ressourcenbewusster Videoprozessor |
Country Status (4)
Country | Link |
---|---|
US (1) | US10506266B2 (de) |
DE (1) | DE112016004532T5 (de) |
GB (1) | GB2549919B (de) |
WO (1) | WO2017100474A1 (de) |
Families Citing this family (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2017100474A1 (en) | 2015-12-08 | 2017-06-15 | Harmonic, Inc. | Resource aware video processor |
US10979747B2 (en) * | 2017-12-21 | 2021-04-13 | Arris Enterprises Llc | Statistical multiplexing system for variable bit rate encoding with constant bit rate encoder |
CN112203145A (zh) * | 2020-10-12 | 2021-01-08 | 广州欢网科技有限责任公司 | 自动进行视频应用布局调整及切换的方法及设备 |
EP4213485A1 (de) * | 2022-01-18 | 2023-07-19 | Ateme | Verfahren zur dynamischen verwaltung von rechenressourcen und vorrichtung zur durchführung desselben |
EP4213486A1 (de) * | 2022-01-18 | 2023-07-19 | Ateme | Verfahren zur dynamischen verwaltung von rechenressourcen und vorrichtung zur durchführung desselben |
EP4274225A1 (de) * | 2022-05-04 | 2023-11-08 | MK Systems USA Inc. | Systeme und verfahren zur mehrkanaligen videocodierung in einer gemeinsamen ressourcenumgebung |
Family Cites Families (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6055270A (en) | 1994-04-20 | 2000-04-25 | Thomson Cosumer Electronics, Inc. | Multiplexer system using constant bit rate encoders |
US20030007516A1 (en) * | 2001-07-06 | 2003-01-09 | Yuri Abramov | System and method for the application of a statistical multiplexing algorithm for video encoding |
US7281145B2 (en) * | 2004-06-24 | 2007-10-09 | International Business Machiness Corporation | Method for managing resources in a CPU by allocating a specified percentage of CPU resources to high priority applications |
DE102007013026B4 (de) * | 2007-03-19 | 2010-12-30 | Fraunhofer-Gesellschaft zur Förderung der angewandten Forschung e.V. | Kodierung einer Mehrzahl von Informationssignalen unter Verwendung einer gemeinsamen Rechenleistung |
US9167256B2 (en) | 2010-08-31 | 2015-10-20 | Arris Technology, Inc. | Method and apparatus for encoding |
FI20106313A (fi) * | 2010-12-13 | 2012-06-14 | Google Inc | Videotoiston resurssiallokaatio |
US9100657B1 (en) * | 2011-12-07 | 2015-08-04 | Google Inc. | Encoding time management in parallel real-time video encoding |
US20140112384A1 (en) * | 2012-10-22 | 2014-04-24 | General Instrument Corporation | Algorithms for determining bitrate for a statistical multiplexing system using scene change |
US20150237356A1 (en) * | 2014-02-18 | 2015-08-20 | Microsoft Corporation | Host encoder for hardware-accelerated video encoding |
US9535734B2 (en) * | 2014-03-06 | 2017-01-03 | International Business Machines Corporation | Managing stream components based on virtual machine performance adjustments |
US9417902B1 (en) * | 2014-03-24 | 2016-08-16 | Amazon Technologies, Inc. | Managing resource bursting |
US9483187B2 (en) * | 2014-09-30 | 2016-11-01 | Nimble Storage, Inc. | Quality of service implementation in a networked storage system with hierarchical schedulers |
US10104405B1 (en) * | 2014-12-08 | 2018-10-16 | Harmonic, Inc. | Dynamic allocation of CPU cycles in video stream processing |
WO2017100474A1 (en) | 2015-12-08 | 2017-06-15 | Harmonic, Inc. | Resource aware video processor |
-
2016
- 2016-12-08 WO PCT/US2016/065658 patent/WO2017100474A1/en active Application Filing
- 2016-12-08 GB GB1714013.8A patent/GB2549919B/en active Active
- 2016-12-08 DE DE112016004532.8T patent/DE112016004532T5/de active Pending
- 2016-12-08 US US15/373,235 patent/US10506266B2/en active Active
Also Published As
Publication number | Publication date |
---|---|
GB2549919A (en) | 2017-11-01 |
WO2017100474A1 (en) | 2017-06-15 |
GB201714013D0 (en) | 2017-10-18 |
US10506266B2 (en) | 2019-12-10 |
GB2549919B (en) | 2018-06-13 |
US20170164018A1 (en) | 2017-06-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
DE112016004532T5 (de) | Ressourcenbewusster Videoprozessor | |
US9866838B2 (en) | Apparatus for dual pass rate control video encoding | |
DE69930216T2 (de) | Regelung des Rechen- und Speicheraufwands zur Datenfolgekompression in einem Videodekoder | |
DE69915277T2 (de) | Verfahren und vorrichtung zur reduzierung von breathing-artefakten in komprimierten videodaten | |
EP1825681B1 (de) | Quantisiererparameterbestimmung für die videocodierer-ratenregelung | |
DE69815159T2 (de) | Kodierung von bewegten bildern mit globaler konstanter bitrate | |
DE60003636T2 (de) | Verfahren zür erfassung und verhinderung von bandbreiteüberlauf in einem statistischen multiplexer | |
DE102007013026B4 (de) | Kodierung einer Mehrzahl von Informationssignalen unter Verwendung einer gemeinsamen Rechenleistung | |
DE69921108T2 (de) | Verfahren und vorrichtung zur adaptiven codierung eines videodatenstroms | |
DE60313205T2 (de) | Bildpufferung für prädiktionsreferenzen und anzeige | |
DE102009046945B9 (de) | Optimale Energienutzung beim Codieren von Datenströmen | |
DE60217171T2 (de) | Verfahren, System und Vorrichtung zur Datenübertragung | |
CN101325698B (zh) | 仅帧内视频序列编码的比特率控制方法与装置 | |
RU2527740C2 (ru) | Способ управления кодированием видео, устройство кодирования видео и программа кодирования видео | |
CN102217309A (zh) | 使用hrd信息共享和比特分配等待的多线程视频编码 | |
US20130272383A1 (en) | Rate control for content transcoding | |
DE60211790T2 (de) | Videokodierung mit konstanter Qualität | |
CN111385571B (zh) | 一种超长图像组码率控制方法及装置 | |
DE60012702T2 (de) | Bitratensteuerung für videodatenkomprimierung | |
US20120249869A1 (en) | Statmux method for broadcasting | |
DE60006152T2 (de) | Videoübertragung | |
EP2409433B1 (de) | Vorrichtung und verfahren zur übertragung einer mehrzahl von informationssignalen in einem flexiblen zeitmultiplex | |
DE112019005773T5 (de) | Referenzbildverwaltung und listenaufbau | |
DE69432933T2 (de) | Vorrichtung zur dynamischen zuweisung begrenzt verfügbarer mittel | |
EP2200320A1 (de) | Verfahren und Vorrichtung zur Zweiweg-Videosignalcodierung unter Verwendung eines Gleitfensters von Bildern |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
R012 | Request for examination validly filed | ||
R016 | Response to examination communication |