DE112016004532T5 - Ressourcenbewusster Videoprozessor - Google Patents

Ressourcenbewusster Videoprozessor Download PDF

Info

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
Application number
DE112016004532.8T
Other languages
English (en)
Inventor
Ganesh Yadav
Hemamalini Mandlekar
Rafik Mikhael
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.)
Harmonic Inc
Original Assignee
Harmonic Inc
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 Harmonic Inc filed Critical Harmonic Inc
Publication of DE112016004532T5 publication Critical patent/DE112016004532T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • 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/238Interfacing 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/2385Channel allocation; Bandwidth allocation
    • 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/156Availability of hardware or computational resources, e.g. encoding based on power-saving criteria
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • 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
    • H04N19/149Data 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
    • 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/188Methods 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
    • 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/1887Methods 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
    • 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/21Server components or server architectures
    • H04N21/218Source of audio or video content, e.g. local disk arrays
    • H04N21/21815Source of audio or video content, e.g. local disk arrays comprising local storage units
    • 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, manipulating MPEG-4 scene graphs
    • H04N21/23418Processing 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N7/00Television systems
    • H04N7/06Systems 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 Electra 8100 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 Electra 8100 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 Systems 100, das eine Ressourcenzuordnungseinrichtung 110 gemäß einer Ausführungsform der Erfindung beinhaltet. Die Ressourcenzuordnungseinrichtung 110, 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 CPUs 130 einer Hardwareeinheit 120 zu einem jeweiligen von einer Mehrzahl von Videoverarbeitungs-Softwaremodulen 140, welche eine Bearbeitung eines digitalen Videos durchführen. Nicht-einschränkende, veranschaulichende Beispiele von Videoverarbeitungs-Softwaremodulen 140 (oder einfachen Videomodulen 140) beinhalten Digitalvideo-Encodermodule, Digitalvideo-Decodermodule und Digitalvideo-Transcodermodule.
  • Die Hardwareeinheit 120 kann einer beliebigen physischen Vorrichtung entsprechen, auf der Videoverarbeitungs-Softwaremodule 130 ausgeführt werden. Beispielsweise kann die Hardwareeinheit 120 der Electra 8100 entsprechen, die von Harmonic Inc., San Jose, Kalifornien bezogen werden kann. Die Hardwareeinheit 120 empfängt eine Mehrzahl von eingehenden Kanälen 160, die separat ein digitales Video transportieren. Die Videomodule 140, 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äle 160 transportierten digitalen Videos. Die Videomodule 140 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 Videomodule 140 verarbeitet wurde, wird durch den abgehenden Datenstrom 170 transportiert.
  • Die Ressourcenzuordnungseinrichtung 110 hält einen Satz von Zyklusprofilen 150 vor. Ein jeweiliges von dem Satz von Zyklusprofilen 150 kann durch die Ressourcenzuordnungseinrichtung 110 einem jeweiligen Videomodul 130 zugewiesen werden, das auf der Hardwareeinheit 120 ausgeführt wird. Ein Zyklusprofil 150 gibt an, wie viele Zyklen der CPUs 130 für ein spezielles Videomodul 140 benötigt werden, um eine Bearbeitung zur Erzeugung von verschiedenen Videoqualitätsniveaus durchzuführen. Ein Zyklusprofil 150 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 Zyklusprofil 150, das durch die Ressourcenzuordnungseinrichtung 110 einem speziellen Videomodul 140 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 Ressourcenzuordnungseinrichtung 110 ü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 Videomodul 140 zugewiesen werden, das für die Verarbeitung eines Kanals von eingehenden Kanälen 160 zuständig ist. Bei einer Ausführungsform verbessert die Ressourcenzuordnungseinrichtung 110 die Qualität eines durch eingehende Kanäle 160 transportierten digitalen Videos, wenn Zyklen der CPUs 130 (d. h. „Zyklusressourcen“) einem gegebenen Videomodul 140 zur Verfügung gestellt werden. Die Ressourcenzuordnungseinrichtung 110 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 Ressourcenzuordnungseinrichtung 110, basierend auf von den Videomodulen 140 empfangener Information, Anpassungen vornehmen, wie Zyklusressourcen einem jeweiligen Videomodul 140 zugeordnet werden. Auch können die Videomodule 140, basierend auf von der Ressourcenzuordnungseinrichtung 110 empfangener Information, Anpassungen vornehmen, wie ein digitales Video verarbeitet wird (beispielsweise kann, wenn zusätzliche Zyklusressourcen einem speziellen Videomodul 140 zur Verfügung stehen, ein digitales Video in unterschiedlicher Weise durch dieses Videomodul 140 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 Videomodul 140 betrieben wird, kann durch einen Benutzer unter Verwendung einer Benutzerschnittstelle (UI) konfiguriert werden, die durch das Videomodul 140 dargeboten wird. Bei Ausführungsformen der Erfindung sind typischerweise derartige Modi statisch, insofern, dass, sobald ein Benutzer ein spezielles Videomodul 140 für einen Betrieb in einem speziellen Modus konfiguriert, dieses Videomodul 140 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 Datenstrom 170 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 Ressourcenzuordnungseinrichtung 110 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 Ressourcenzuordnungseinrichtung 110 eine dynamische Anpassung der Konfigurationseinstellungen von Videomodulen 140 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 Videomoduls 140 erfolgen, so dass das Videomodul 140 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 Videomoduls 140 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 Videomodul 140 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 Videomodul 140 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 Videomodul 140 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 Videomodule 140 zugewiesen werden. Die Ressourcenzuordnungseinrichtung 110 kann derartige Maßzahlen zur Anpassung der Dichte, mit der ein Videomodul 140 ein Video verarbeitet, oder zur Anpassung der Qualität eines digitalen Videos verwenden, das durch ein Videomodul 140 verarbeitet wird. Die Dichte oder Qualität eines durch ein Videomodul 140 verarbeiteten Videos kann verbessert oder erhöht werden, wenn dem Videomodul 140 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 Videomoduls 140.
  • 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 Datenstrom 170 zeitgerecht durchführen. Wenn ein spezielles Videomodul 140 überlastet ist (d. h. das spezielle Videomodul 140 kann nicht in Echtzeit oder in dem für die vorliegende Arbeitslast erforderlichen Zeitrahmen arbeiten), dann passieren in diesem Videomodul 140 Fehler, wie beispielsweise ein Unterlauf in dem abgehenden Datenstrom 170.
  • 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 Wert 0 haben, wenn es keine Verarbeitungsverzögerung gibt und Delta den Wert 0 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 Hardwareeinheit 120 befindet und der Frames eines digitalen Videos speichert, die durch den abgehenden Datenstrom 170 transportiert werden sollen, ein Unterlauf auf. 2 zeigt einen Senderpuffer 210 in einem Codier-/Transcodiersystem gemäß einer Ausführungsform der Erfindung. Wie in 2 dargestellt, speichert der Senderpuffer 210 Inhalt, der von einem Multiplexer ausgegeben wurde, jedoch nicht über den abgehenden Datenstrom 170 übertragen wurde. Somit tritt, wenn ein Codierer eines speziellen Videomoduls 140 in Rückstand gerät, beim Senderpuffer 210 ein Unterlauf bezüglich des Inhalts auf, der durch dieses Videomodul 140 erzeugt wurde.
  • Zu dem Zeitpunkt, bei dem die Hardwareeinheit 120 mit dem Übertragen von Bild (N) auf den abgehenden Datenstrom 170 beginnt, sollte die Menge an Inhalt, die im Senderpuffer 210 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 Senderpuffer 210 in Bits gespeichert werden sollte, für eine Nutzung in einem CBR-Betriebsmodus (CBR = konstante Bitrate), wird der im Senderpuffer 210 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 Senderpuffer 210 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 Videomodul 140 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
  • Die Änderungen gewisser Attribute können wie folgt berechnet werden: Δ  DTS ( N ) = DTS  ( N ) DTS  ( N 1 ) Δ  CTS ( N )   = CTS  ( N ) CTS  ( N 1 )   = Codierzeit [ n ]   ( encode _ time [ n ] )
    Figure DE112016004532T5_0001
    Zeitrückstand-Tickereinheiten = fb _ ticks ( N ) = ( Δ CTS ( k ) Δ DTS ( k ) ) , für k = 0  bis N
    Figure DE112016004532T5_0002
  • Um zu vermeiden, dass eine Verankerung an frühere Zeitrückstandswerte erfolgt, kann fb-ticks[N] berechnet werden durch: fb-ticks [ N ] = ( Δ CTS ( N ) Δ DTS ( N ) ) + ( 32767 * fb_ticks ( N 1 ) ) / 32768
    Figure DE112016004532T5_0003
  • „Zeitrückstand“ gibt an, ob ein spezielles Videomodul 140 (z. B. ein Codierer) bis hin zum aktuellen Bild schneller oder langsamer als Echtzeit arbeitet. Für eine große Anzahl von Bildern gilt: fb_ticks [ k ] 0,
    Figure DE112016004532T5_0004
    für k=0 bis zu einer großen Anzahl von Bildern.
  • 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 2
    Alle 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 Zyklusprofilen 150 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 Zyklusprofilen 150 gemäß einer Ausführungsform der Erfindung darstellt. In 4 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 in 4 dargestellt ist). Wie in 4 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 Videomodul 140 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 Videomodul 140. Als weiteres Beispiel ergeben die Einstellungen des zu -5 gehörenden Zyklusprofils, wenn es auf ein spezielles Videomodul 140 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 Videomodul 140.
  • Bei Ausführungsformen der Erfindung wird versucht, ein spezielles Zyklusprofil 150 zur Verwendung durch ein spezielles Videomodul 150 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 Videomodule 140 vorgenommen. Falls die Menge an verfügbaren Zyklusressourcen ausreicht, dann wird die Qualität eines digitalen Videos für alle Videomodule 140 innerhalb des Zyklus-Budgets maximiert. Falls jedoch die Menge an verfügbaren Zyklusressourcen derart ist, dass zwei oder mehr Videomodule 140 dieselben Zyklusressourcen anfordern, um diesen Videomodulen 140 zu ermöglichen, die höchste Videoqualität zu erzeugen, dann nimmt die Ressourcenzuordnungseinrichtung 110 ein Auswählen und Zuweisen der den besten Kompromiss darstellenden Zyklusprofile vor, um die Videoqualität soweit wie möglich für diese Videomodule 140 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 in 4 dargestellt, ein Umschalten von dem Zyklusprofil 150, das zu einer 2 gehört, zu dem Zyklusprofil 150 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 Zyklusprofilen 150 und die Kennungen, die zur Bezeichnung von speziellen Zyklusprofilen 150 verwendet werden (beispielsweise werden in 4 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 (Zyklusprofil 7) angeordnet. Tabelle 3
    Zyklusprofil 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 Videomodul 140 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 Videomodul 140 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 Videomodul 140, 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 Videomodul 140 aktuell verarbeitet, verwendet, um zu bestimmen, wie eine Anpassung der Konfiguration dieses Videomoduls 140 in Anbetracht der verfügbaren CPU-Ressourcen vorzunehmen ist. Zur Verdeutlichung: falls die Basisband-Filter für ein spezielles Videomodul 140 abgeschaltet wurden, dann ist bei einer Ausführungsform in jeglicher Abfolgeanordnung von Konfigurationsänderungen, die diesem Videomodul 140 durch die Ressourcenzuordnungseinrichtung 110 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 Videomodul 140 mitgeteilt werden.
  • REGELKREIS
  • Wenn das System 100 nicht überlastet ist, sollten Ausführungsformen in der Lage sein, derart zu arbeiten, dass die Zyklusprofile 150, die zur Konfiguration des Betriebs eines jeden der Videomodule 140 verwendet werden, jedem der Videomodule 140 ermöglichen, einen optimalen Videoqualitätsmodus bereitzustellen oder die Qualität der darunterliegenden Kanäle zu vergrößern. Weiter sollte bei überlastetem System 100 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 Senderpuffer 210 „trockenläuft“ (d. h. TSMOB = 0), dann sind keine Pakete im Sendepuffer 210 gespeichert, die dieser senden könnte, wodurch ein Unterlauf in der Zeitebene verursacht wird. Einer der Gründe, warum ein Trockenlaufen des Senderpuffers 210 erfolgen könnte, ist bedingt durch einen Codierer, der in Zeitrückstand gerät und nicht mehr in der Lage ist, Pakete an den Senderpuffer 210 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 Senderpuffer 210 bestimmt die Verfügbarkeit von Bits, die der Multiplexer in den Transportdatenstrom verpacken kann. Der Füllungsgrad des Senderpuffers 210 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 Senderpuffer 210 voll war, bis zu dem Zeitpunkt zur Verfügung, zu dem der Senderpuffer 210 leer wird, um sicherzustellen, dass der Senderpuffer 210 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 Videomodul 140 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 Videomodul 140, 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 Videomodul 140 zuvor ein Zyklusprofil verwendet hat, das einer 1 zugehörig war, wie in 4 dargestellt, dann kann die Ressourcenzuordnungseinrichtung 110, bei Empfang der Information von der zentralen Steuereinrichtung, dieses spezielle Videomodul 140 anweisen, das Zyklusprofil zu verwenden, das zu einer 2 gehört, wie in 4 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 Videomodulen 140 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 folgende Satz von Gleichungen beschreibt die zentrale Steuereinrichtung. Für jeden Kanal, der an der gemeinsamen Nutzung eines Satzes von Kernen beteiligt ist, kann der durchschnittliche Zeitrückstandswert berechnet werden zu: Fbavg = Fb [ i ] /N für i = 0  bis N Kanäle
    Figure DE112016004532T5_0005
  • 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: C i ,t   α  X i ,t
    Figure DE112016004532T5_0006
  • Typischerweise modulieren wir den momentanen Quotienten aus Gesamtkomplexität und CPU-Nutzung, um die proportionale Variable βt zum Zeitpunkt t zu verfolgen. Die Gesamtkomplexität zum Zeitpunkt t ist definiert als X total ,t = X i ,t
    Figure DE112016004532T5_0007
  • Die gesamte CPU-Nutzung zum Zeitpunkt t ist definiert als: C total ,t = C i ,t
    Figure DE112016004532T5_0008
  • Die proportionale CPU-Komplexitätskoeffizienten-Variable zur Modulierung der CPU-Nutzungsvorhersage βt wird berechnet zu: β t = C total ,t /X total ,t
    Figure DE112016004532T5_0009
  • Die proportionale CPU-Komplexitätskoeffizienten-Variable wird bezüglich früherer Werte unter Verwendung eines IIR-Filterns gefiltert, wie folgt: β filt ,t = ( β t + 7 * β t 1 ) / 8
    Figure DE112016004532T5_0010
  • Die Leerlauf-CPU-Nutzung ist definiert als Idle total ,t = 100 C total ,t
    Figure DE112016004532T5_0011
  • 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 LAX total ,t = X i ,t
    Figure DE112016004532T5_0012
  • Die CPU-Gesamtnutzung für die Look-Ahead-Bilder wird berechnet zu CPRED total ,t = β filt ,t * LAX total ,t
    Figure DE112016004532T5_0013
  • 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:
    Figure DE112016004532T5_0014
  • 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: FB i ,t   α  X i ,t
    Figure DE112016004532T5_0015
  • Der Gesamtzeitrückstand zum Zeitpunkt t ist definiert als FB total ,t = FB i ,t
    Figure DE112016004532T5_0016
  • Eine proportionale Zeitrückstands-Komplexitätskoeffizienten-Variable, um den Zeitrückstands-Vorhersagewert Δt anzupassen, kann berechnet werden zu: Δ t = FB total ,t /X total ,t
    Figure DE112016004532T5_0017
  • Die proportionale Zeitrückstands-Komplexitätskoeffizienten-Variable wird bezüglich früheren Werten unter Verwendung eines IIR-Filterns gefiltert, wie folgt: Δ filt ,t = ( Δ t + 7 * Δ t 1 ) / 8
    Figure DE112016004532T5_0018
  • 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: FBPRED total ,t = Δ filt ,t * LAX total ,t
    Figure DE112016004532T5_0019
  • Der Zeitrückstand für einen jeweiligen Codierkanal kann vorhergesagt werden als: FBPRED i ,t =FBPRED total ,t * LAX i ,t /LAX total ,t
    Figure DE112016004532T5_0020
  • 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)

    1. 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.
    2. 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.
    3. 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.
    4. 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.
    5. 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.
    6. 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.
    7. 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.
    8. 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.
    9. 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.
    10. 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.
    11. 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.
    12. 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.
    13. 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.
    14. 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.
    15. 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.
    16. 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.
    17. 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.
    18. 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.
    19. 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.
    20. 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.
    DE112016004532.8T 2015-12-08 2016-12-08 Ressourcenbewusster Videoprozessor Pending DE112016004532T5 (de)

    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)

    * Cited by examiner, † Cited by third party
    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)

    * Cited by examiner, † Cited by third party
    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

    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