DE112018002112T5 - Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen - Google Patents

Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen Download PDF

Info

Publication number
DE112018002112T5
DE112018002112T5 DE112018002112.2T DE112018002112T DE112018002112T5 DE 112018002112 T5 DE112018002112 T5 DE 112018002112T5 DE 112018002112 T DE112018002112 T DE 112018002112T DE 112018002112 T5 DE112018002112 T5 DE 112018002112T5
Authority
DE
Germany
Prior art keywords
encoder
frame
frames
settings
video
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
DE112018002112.2T
Other languages
English (en)
Inventor
Michael Kopietz
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.)
Zenimax Media Inc
Original Assignee
Zenimax Media 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 Zenimax Media Inc filed Critical Zenimax Media Inc
Publication of DE112018002112T5 publication Critical patent/DE112018002112T5/de
Pending legal-status Critical Current

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/42Methods or arrangements for coding, decoding, compressing or decompressing digital video signals characterised by implementation details or hardware specially adapted for video compression or decompression, e.g. dedicated software implementation
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/352Details of game servers involving special game server arrangements, e.g. regional servers connected to a national server or a plurality of servers managing partitions of the game world
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/30Interconnection arrangements between game servers and game devices; Interconnection arrangements between game devices; Interconnection arrangements between game servers
    • A63F13/35Details of game servers
    • A63F13/355Performing operations on behalf of clients with restricted processing capabilities, e.g. servers transform changing game scene into an MPEG-stream for transmitting to a mobile phone or a thin client
    • AHUMAN NECESSITIES
    • A63SPORTS; GAMES; AMUSEMENTS
    • A63FCARD, BOARD, OR ROULETTE GAMES; INDOOR GAMES USING SMALL MOVING PLAYING BODIES; VIDEO GAMES; GAMES NOT OTHERWISE PROVIDED FOR
    • A63F13/00Video games, i.e. games using an electronically generated display having two or more dimensions
    • A63F13/85Providing additional services to players
    • A63F13/86Watching games played by other players
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06TIMAGE DATA PROCESSING OR GENERATION, IN GENERAL
    • G06T9/00Image coding
    • G06T9/007Transform coding, e.g. discrete cosine transform
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/65Network streaming protocols, e.g. real-time transport protocol [RTP] or real-time control protocol [RTCP]
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/70Media network packetisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/60Network streaming of media packets
    • H04L65/75Media network packet handling
    • H04L65/762Media network packet handling at the source 
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L65/00Network arrangements, protocols or services for supporting real-time applications in data packet communication
    • H04L65/80Responding to QoS
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • H04N19/126Details of normalisation or weighting functions, e.g. normalisation matrices or variable uniform quantisers
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/146Data rate or code amount at the encoder output
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/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/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/154Measured or subjectively estimated visual quality after decoding, e.g. measurement of distortion
    • 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/162User input
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/172Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a picture, frame or field
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/17Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object
    • H04N19/176Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being an image region, e.g. an object the region being a block, e.g. a macroblock
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/192Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive
    • H04N19/194Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding the adaptation method, adaptation tool or adaptation type being iterative or recursive involving only two passes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/197Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including determination of the initial value of an encoding parameter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/189Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding
    • H04N19/196Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters
    • H04N19/198Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the adaptation method, adaptation tool or adaptation type used for the adaptive coding being specially adapted for the computation of encoding parameters, e.g. by averaging previously computed encoding parameters including smoothing of a sequence of encoding parameters, e.g. by averaging, by choice of the maximum, minimum or median value
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/40Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using video transcoding, i.e. partial or full decoding of a coded input stream followed by re-encoding of the decoded output stream
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/46Embedding additional information in the video signal during the compression process
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/85Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using pre-processing or post-processing specially adapted for video compression
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/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/164Feedback from the receiver or from the transmission channel
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/50Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding
    • H04N19/597Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using predictive coding specially adapted for multi-view video sequence encoding

Abstract

Es werden Systeme und Verfahren zum Ansprechen eines Encoder offenbart, wobei ein Server auf Informationen bezüglich Änderungen der Framedarstellung überwacht, Toleranzgrenzen, rollierende durchschnittliche Framezeit und/oder kurzfristige Trends in der Framezeit berechnet und diese Berechnungen verwendet, um eine Framezeitspitze zu identifizieren. Der Server spricht dann einen Codec (Codierer) an, um die Qualitätseinstellungen der Frameausgabe proportional zur Größe der Framezeitspitze zu modulieren. In bestimmten Ausführungsformen zeichnet ein Renderer einen oder mehrere Spieldurchgänge in einer Spielumgebung auf, sortiert eine Vielzahl von Frames aus einem oder mehreren Spieldurchgängen in eine Vielzahl von Zellen auf einer Heatmap und sammelt die Liste der sortierten Frames. Ein Codec kann dann ein oder mehrere Frames aus der Liste der sortierten Frames codieren, um eine durchschnittliche codierte Framegröße für jede Zelle in der Heatmap zu berechnen und jede durchschnittliche codierte Framegröße mit einer pro Zelle normierten Encoderqualitätseinstellung zu verbinden.

Description

  • Die Anmeldung beansprucht den Vorteil der folgenden U.S. Provisionalanmeldungen: Nr. 62/488,526 , eingereicht am 21. April 2017, Nr. 62/647,180 , eingereicht am 23. März 2018, und Nr. 62/655,901 , eingereicht am 11. April 2018.
  • HINTERGRUND DER ERFINDUNG
  • Bei Remote-Gaming-Anwendungen, wobei ein serverseitiges Spiel von einem clientseitigen Spieler gesteuert wird, wird versucht, die Videoausgabe einer dreidimensionalen (3D)-Grafik-Engine in Echtzeit mit vorhandenen oder benutzerdefinierten Codierern zu codieren. Die interaktive Natur von Videospielen, insbesondere die Spieler-Rückmeldungsschleife zwischen Videoausgang und Spielereingang, macht das Spiel-Video-Streaming jedoch viel empfindlicher bezüglich Latenzzeiten als herkömmliches Video-Streaming. Bestehende Videocodierverfahren können Rechenleistung, und sonst aber wenig anderes, für eine Verkürzung der Codierzeit in Anspruch nehmen. Neue Verfahren zum Integrieren des Codierungsprozesses in den Videowiedergabeprozess können deutliche Verkürzungen der Codierungszeit bei gleichzeitiger Verringerung der Rechenleistung, Verbesserung der Qualität des codierten Videos und Beibehaltung des ursprünglichen Bitstream-Datenformats ermöglichen, um die Interoperabilität bestehender Hardwaregeräte zu erhalten.
    Beim ersten Durchlauf eines Multi-Pass-Codierungsprozesses werden die Kosten für die Codierung jedes einzelnen Videobildes berechnet, bevor die Daten effizient gepackt werden, um einer Bitrateneinschränkung bei aufeinanderfolgenden Durchläufen zu entsprechen. Die Vorteile der Multi-Pass-Codierung sind beträchtlich und bieten die höchstmögliche Qualität für eine Bitrateneinschränkung, aber die traditionelle Multi-Pass-Codierung erfordert den Zugriff auf die gesamte Videodatei, was sie für Live-Streaming-Anwendungen ungeeignet macht.
  • Live-Streaming-Anwendungen verwenden in der Regel eine Single-Pass-Codierung, da das Video nicht im Voraus verfügbar ist. Die zeitlichen Einschränkungen bei der Live-Stream-Codierung behindern die Fähigkeit des Codierers, die Videoinformationen effizient für eine eingeschränkte Bitrate zu packen. Da die Codierungskosten nicht in einer Single-Pass-Codierung berechnet werden, schießt der Netzwerkverkehr bei der Codierung von Hoch-Entropie-Frames nach oben.
  • Ein in Echtzeit gerendertes Video wird zunehmend in Live-Streaming-Anwendungen eingesetzt, wie z.B. im Videospiel-Streaming, wo sowohl hohe Qualität als auch eingeschränkte Bandbreite sehr geschätzt werden. Ein gerendertes Video hat im Gegensatz zu aufgezeichnetem Video Zugriff auf zusätzliche Informationen zu jedem Frame, die zur Schätzung der Kosten für die Codierung des Frames wiederverwendet werden können. Auf diese Weise können die Ergebnisse eines ersten Durchlaufs in einem Multi-Pass-Codierungsschema angenähert werden, um die höchste Qualität des codierten Videos innerhalb einer Bitrateneinschränkung zu erreichen. Viele Renderingmaschinen haben teilweise Informationen über die zu rendernden Bilder und können Codierer-Qualitätseinstellungen vorgenerieren, die während der Laufzeit verwendet werden können. Auf diese Weise können die Vorteile eines Multi-Pass-Codiermodus in einer Live-Streaming-Umgebung genutzt werden. Wie im Folgenden erläutert, ist die derzeitige Computertechnologie jedoch nach wie vor unzureichend, um die Codierungsqualität in einem ausreichenden Maße abzuschätzen, um die Wiedergabe von hochwertigem, in Echtzeit gerendertem Video durchzuführen und gleichzeitig Verkehrsspitzen aufgrund erhöhter Entropie zu kompensieren. Darüber hinaus gibt es keine Codierungstechnologie, die derzeit räumlich und nicht zeitlich vorcodiert und die Multi-Pass-Codierung repliziert, während sie in einer Echtzeitumgebung bleibt.
  • US-Patent Nr. 7,844,002 B2 („das '002-Patent“) offenbart Systeme und Verfahren zur Durchführung von Echtzeit-MPEG-Videocodierung mit vorausschauender Information, um eine konstante Bitrate zu erreichen. Das System besteht aus zwei Video-Codierern, von denen einer die Eingabe um eine gewisse Zeit im Vergleich zum Vorschau-Fenster des anderen Codierers verzögert. Im System des '002-Patents arbeitet einer der Video-Codierer als Puffer(Vorschau)-Gerät und verzögert die eingegebenen Videobilder, so dass der zweite der Video-Codierer, der als Informationssammler/-prozessor fungiert, die erforderliche Zeit hat, um relevante Informationen zu extrahieren und eine Codierungsstrategie für die Videoframes festzulegen. Sobald diese Strategie festgelegt ist, werden die Codierungsparameter zur Ausführung an das Codiergerät übergeben. Die technische Lehre des '002-Patents ist im Vergleich zur vorliegenden Erfindung unzureichend, zumindest weil sie keine Techniken zur Berechnung der Kosten für die Codierung von Einzelframes gerenderter Videos in einer Live-Streaming-Anwendung, eine ausreichend niedrige Latenzzeit für Live-Streaming für Spieleanwendungen oder Techniken zur Verwendung von Videodaten zur Maximierung codierter Videos innerhalb von Bitratenbeschränkungen enthält. Die vorliegende Erfindung ist auch deshalb überlegen, weil sie Codierereinstellungen für Videodaten erfasst und speichert, die unbegrenzt wiederverwendet werden können.
  • Die veröffentlichte US-Patentanmeldung Nr. US2016/019816166 AI, („die '166-Veröffentlichung“), offenbart Systeme und Verfahren für Pseudo-Multi-Pass-Codierungstechniken, die eine Lösung für die Echtzeit-Codierung bieten. Das offenbarte System ist eines, wobei die Eingangsvideobilder in einem ersten Durchlauf heruntergerechnet und codiert werden, um eine Untergruppe von Bildern zu bilden. Diese Untergruppen werden dann verwendet, um Codierungsstatistiken zu erstellen, die verwendet werden, um einen Satz von Second-Pass codierten Frames zu erzeugen. Die in der '166-Veröffentlichung beschriebenen Techniken sind der vorliegenden Erfindung zumindest deshalb unterlegen, weil die vorliegende Erfindung Techniken zur Berechnung spezifischer Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung und zur Verwendung solcher Daten zur Maximierung codierter Videos innerhalb von Bitratenbeschränkungen ohne Down-Sampling vermittelt.
  • Die veröffentlichte US-Patentanmeldung Nr. 9,697,280 („das '280-Patent“) offenbart Systeme und Verfahren zur Herstellung eines mobilen Mediendatensatzes aus den normierten Informationen, zur Analyse des mobilen Mediendatensatzes zur Bestimmung einer Abrechnungsvereinbarung und zur Bereitstellung relevanter Informationen aus der Abrechnungsvereinbarung für mindestens einen Teil der in der mobilen Medienaufzeichnung vertretenen Teilnehmer. Die Systeme und Verfahren sind in der Lage, eine Multipass-Codierung durchzuführen, wobei die Ausgänge eines vorherigen Codierers mit den Eingängen eines nächsten Codierers hintereinander geschaltet werden, was zu einer Verzögerung führt, bevor die codierte Datei für den Verbrauch verfügbar ist. Um die mit der sequentiellen Codierung verbundene Latenzzeit zu reduzieren und gleichzeitig eine gleichwertige Qualität zu erreichen, können aufeinanderfolgende Codierungsstufen in einer Pipeline so konfiguriert werden, dass der Ausgang eines ersten Codierers dem Eingang eines zweiten zugeführt wird, so dass die Codierung in jedem Codierer um eine kleine Zeitspanne versetzt wird, so dass der größte Teil der Codierung parallel ausgeführt werden kann. Die Gesamtlatenzzeit kann dann die Summe der Latenzen jedes Codierers vom ersten eingelesenen Block bis zum ersten ausgegebenen Block approximieren. Die Gesamtlatenzzeit kann leicht die Echtzeit-Multipasscodierung erleichtern. Ähnlich wie die anderen in diesem Abschnitt beschriebenen Technologien offenbart das '280-Patent jedoch keine Techniken zur Berechnung der Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung und zur Verwendung dieser Daten, um codierte Videos innerhalb von Bitratenbeschränkungen zu maximieren, wie sie in der vorliegenden Erfindung offenbart werden.
  • Die veröffentlichte US-Patentanmeldung Nr. US 20170155910 A1 („die '910-Veröffentlichung“), offenbart Systeme und Verfahren zur Aufteilung des Audios von Medieninhalten in separate Inhaltsdateien ohne Einführung von Randartefakten. Die '910-Veröffentlichung offenbart ein System, wobei der Codierer die ursprüngliche Inhaltsdatei in Quell-Streams segmentiert und eine Zwei-Pass-Codierung der mehreren Kopien (z.B. Streams) auf jedem entsprechenden Roh-Streamlet durchführt, ohne beispielsweise auf das Ende einer Fernsehsendung zu warten. Somit ist der Webserver in der Lage, die Streamlets kurz nach Beginn der Erfassung der ursprünglichen Inhaltsdatei durch das Streamlet-Generierungssystem über das Internet zu streamen. Die Verzögerung zwischen einer vom Verlag übertragenen Live-Übertragung und der Verfügbarkeit der Inhalte hängt von der Rechenleistung der Hosts ab. Die '910-Veröffentlichung enthält jedoch keine Techniken zur Berechnung der Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung, die eine ausreichend niedrige Latenzzeit für Live-Streaming für Spieleanwendungen bieten, und zur Verwendung von Videodaten zur Maximierung codierter Videos innerhalb von Bitratenbeschränkungen, wie sie in der vorliegenden Erfindung offenbart werden.
  • US-Patent Nr. 9,774,848 („das '848-Patent“) offenbart Systeme und Verfahren zur Verbesserung der Video-Codierer-Komponente des MPEG-Standards, um sowohl die Effizienz als auch die Qualität der Videodarstellung auf der Anzeigevorrichtung zu verbessern. Die vorgestellte Technologie lehrt die Videokompression durch adaptive Bitzuweisung mittels Look-Ahead-Verarbeitung. Bei der MPEG-Videokompression wird eine bestimmte Anzahl von Videobildern (15, 30, 60 usw.) zu einer Group-of-Pictures (GoP) zusammengefasst. Bilder innerhalb einer GoP werden entweder als I-, P- oder B-Bilder (Frames) codiert. Die Anzahl der Bits, die jedem GoP zugeordnet sind, wird proportional zur Anzahl der darin enthaltenen Frames gebildet. Das System führt eine Vorausschau in Echtzeit durch, um Statistiken zu sammeln, die eine adaptive Bitzuordnung ermöglichen. Es werden auch Verfahren zur Bewegungsschätzung vorgestellt, wobei modifizierte 3D-Pipeline-Shader-Nutzlasten in der Lage sind, mehrere Patches im Falle von Domain-Shadern oder mehrere Primitive zu verarbeiten, wenn die Anzahl der primitiven Objektinstanzen größer als eins ist, im Falle von Geometrie-Shadern und mehrere Dreiecke im Falle von Pixel-Shadern. Eine Bewegungsschätzmaschine wird von Grafikprozessorkomponenten verwendet, um mit Video bei der Decodierung und Verarbeitung von Funktionen zu helfen, die empfindlich oder anpassungsfähig an die Richtung oder Größe der Bewegung innerhalb der Videodaten sind. Das '848-Patent offenbart jedoch keine Techniken zur Berechnung der Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung, die eine ausreichend niedrige Latenzzeit für Live-Streaming für Spieleanwendungen bieten, und zur Verwendung von Videodaten zur Maximierung codierter Videos innerhalb von Bitratenbeschränkungen, wie sie in der vorliegenden Erfindung offenbart werden. Darüber hinaus fungiert die Technologie des '848-Patents bestenfalls als Hilfe und führt keine Vorcodierung in der räumlichen Weise durch, wie sie in der vorliegenden Erfindung offenbart wird. Als solches ist es nicht in der Lage, vorteilhafte Multi-Pass-Codierung in der gleichen Echtzeit wie die vorliegende Erfindung zu replizieren.
  • US-Patent Nr. 9,749,642 („das '642-Patent“) offenbart Systeme und Verfahren, wobei ein Video-Codierer eine [Bewegungsvektor] MV-Präzision für eine Videoeinheit aus mehreren MV-Präzisionen bestimmt, die eine oder mehrere Bruchproben-MV-Präzisionen und Ganzzahlen-MV-Präzisionen einschließen. Der Video-Codierer kann einen Satz von MV-Werten mit einer Bruchproben-MV-Genauigkeit identifizieren und dann die MV-Genauigkeit für die Einheit auswählen, basierend zumindest teilweise auf der Prävalenz von MV-Werten (innerhalb des Satzes) mit einem Bruchteil von Null. Oder der Video-Codierer kann eine Rate-Distortion-Analyse durchführen, bei der die Rate-Distortion-Analyse auf die Ganzzahl-Sample-MV-Präzision ausgerichtet ist. Auch hier offenbart das '642-Patent keine Techniken zur Berechnung der Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung, die eine ausreichend niedrige Latenzzeit für Live-Streaming für Spieleanwendungen bieten, und zur Verwendung von Videodaten zur Maximierung codierter Videos innerhalb von Bitratenbeschränkungen, wie sie in der vorliegenden Erfindung offenbart werden.
  • Das Europäische Patent Nr. EP1820281 B1 („das '281-Patent“), offenbart Systeme und Verfahren zur Dual-Pass-Codierung. Die offenbarten Verfahren schließen die Schritte a) Empfangen des Bildes, b) Berechnen eines ersten Vollheitsgrades eines codierten Bildspeichers zu einem ersten Zeitpunkt, c) Arbeiten mit dem ersten Vollheitsgrad, um einen zweiten Vollheitsgrad des codierten Bildspeichers zu einem zweiten Zeitpunkt zurückzugeben, d) Speichern des Bildes für eine bestimmte Zeitspanne, e) Messen eines ersten Komplexitätsgrades des Bildes während dieser Zeitspanne, (f) Arbeiten mit dem ersten Grad der Komplexität des Bildes und dem zweiten Grad der Fülle, um eine bevorzugte Zielgröße für das Bild zurückzugeben, und (g) anschließend mit Schritt d, Bereitstellen des Bildes und der bevorzugten Zielgröße an den Multiprozessor-Videoencoder ein, wobei das erste Mal dem letzten Mal entspricht, kann ein genauer Grad der Fülle des codierten Bildpuffers berechnet werden und das zweite Mal nach dem ersten Mal. Wiederum offenbart allerdings auch hier das '281-Patent keine Techniken zur Berechnung der Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung, die eine ausreichend niedrige Latenzzeit für das Live-Streaming von Spieleanwendungen bieten, und zur Verwendung von Videodaten zur Maximierung codierter Videos innerhalb von Bitratenbeschränkungen, wie sie in der vorliegenden Erfindung offenbart werden.
  • Japanisches Patent Nr. JP0612151818B2 („das '518-Patent“), offenbart Systeme und Verfahren zum Codieren eines ausgewählten räumlichen Abschnitts eines Original-Videostroms als eigenständigen Videostrom, wobei das Verfahren das Erhalten von Bildelementinformationen, die sich auf den ausgewählten räumlichen Abschnitt beziehen, das Erhalten von Codierungshinweisen, die von einem komplementären räumlichen Abschnitt des Original-Videostroms abgeleitet sind, der dem ausgewählten räumlichen Abschnitt peripher ist, und das Codieren des ausgewählten räumlichen Abschnitts unter Verwendung der Codierungshinweise umfasst. Wieder einmal enthüllt das '518-Patent jedoch keine Techniken zur Berechnung der Kosten für die Codierung von Frames gerenderter Videos in einer Live-Streaming-Anwendung, die eine ausreichend niedrige Latenzzeit für Live-Streaming für Spieleanwendungen bieten, und zur Verwendung dieser Daten, um codierte Videos innerhalb von Bitratenbeschränkungen zu maximieren, wie dies in der vorliegenden Erfindung offenbart wird.
  • Die veröffentlichte US-Patentanmeldung Nr. 2006/0230428 („die '428-Veröffentlichung“) offenbart Systeme und Verfahren, die ein vernetztes Videospielsystem betreffen, das es mehreren Spielern ermöglicht, gleichzeitig teilzunehmen. Die '428-Veröffentlichung offenbart einen Server, der in der Lage ist, vorcodierte Blöcke zu speichern, die kompressibel sind und Teilbereichen eines Videoframes für ein Spiel entsprechen. Das System ist auch in der Lage, Spielinhalte mit vorcodierten Blöcken als Reaktion auf Benutzeraktionen im Spiel zu generieren. Diese Inhalte können dann an den Nutzer übermittelt werden. Auch hier führt diese Technologie keine Vorcodierung in der räumlichen Weise durch, wie sie in der vorliegenden Erfindung offenbart wird, und sie ist nicht in der Lage, vorteilhafte Multi-Pass-Kodierung in Echtzeit zu replizieren. Darüber hinaus ermöglicht die vorliegende Erfindung im Gegensatz zur Technologie der '428-Veröffentlichung, dass das System während der Laufzeit Parameter über alle Teile der Frames in einer zeitlichen Abfolge (z.B. Auflösung) ändern kann und eine ausreichend niedrige Latenzzeit für Live-Streaming für Spieleanwendungen bereitstellt.
  • US-Patent Nr. 8,154,553 („das '553-Patent“) offenbart Systeme und Verfahren, die einen Streaming-Spielserver mit einem Abfangmechanismus für Rendering-Befehle und einem Feed-Forward-Steuermechanismus betreffen, der auf der Verarbeitung der Befehle einer Renderingmaschine, auf einem Vorfiltermodul und auf einem visuellen Codierer basiert. Die technische Lehre des '553-Patents verwendet eine grafische API, um einen Satz von Daten auf Objektebene zu extrahieren, die sich auf die visuelle Komplexität und die Bewegung der Objekte in der Szene beziehen. Diese Informationen werden verwendet, um das Rendering-Detail auf GPU-Ebene, die Filterstufe auf dem Videopräprozessor und die Quantisierungsstufe auf dem Video-Codierer zu steuern. Das System berechnet auch eine Bewegungskompensationsschätzung für jeden Makroblock im zielcodierten Frame in einem Video-Codierer. Ähnlich wie die anderen hierin diskutierten Technologien führt das im '553-Patent offenbarte System keine Vorcodierung in der in der vorliegenden Erfindung offenbarten zeitlichen oder räumlichen Weise durch und ist nicht in der Lage, vorteilhafte Multi-Pass-Codierung in Echtzeit zu replizieren, da es vielmehr Frames als Reaktion auf Bitratenspitzen fallen lässt. Darüber hinaus ermöglicht die vorliegende Erfindung im Gegensatz zur Technologie der '428-Veröffentlichung, dass das System eine ausreichend niedrige Latenzzeit für Live-Spiele-Streaming-Anwendungen bereitstellt.
  • Wie aus der obigen Diskussion über den Stand der Technik in dieser Technologie hervorgeht, besteht in der Technik ein Bedarf an einer Verbesserung der derzeitigen Computertechnologie im Zusammenhang mit der Kodierung von Echtzeit-Spielumgebungen.
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Eine Aufgabe der vorliegenden Erfindung besteht daher darin, Systeme und Verfahren zur Aufrechterhaltung einer konstanten Bitrate durch Hinweisen eines Codierers zu offenbaren. In einer beispielhaften Ausführungsform überwacht ein Server Informationen im Zusammenhang mit Änderungen der Frame-Codierung, berechnet Toleranzgrenzen, rollierende durchschnittliche Framezeit und kurzfristige Trends der Framezeit und verwendet diese Berechnungen, um eine Framezeitspitze zu identifizieren. Der Server weist dann einen Codierer an, um die Qualitätseinstellungen der Frameausgabe proportional zur Größe der Framezeitspitze zu modulieren.
  • Eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Systeme und Verfahren zur Aufrechterhaltung einer konstanten Bitrate durch Hinweisen eines Codierers zu offenbaren, bei dem die Berechnungen von Toleranzgrenzen, rollierender durchschnittlicher Framezeit und kurzfristigen Trends in der Framezeit zur Identifizierung von Hoch-Entropie-Frames verwendet werden.
  • Noch eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Systeme und Verfahren zur Aufrechterhaltung einer konstanten Bitrate durch Hinweisen eines Codierers zu offenbaren, bei dem der Server einen Qualitätsskalierungswert für eine Framezeit außerhalb der Toleranzgrenzen berechnet und diese Berechnung zur Identifizierung einer Framezeitspitze verwendet.
  • Noch eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Systeme und Verfahren zur Codierung zu offenbaren, wobei ein Renderer einen oder mehrere Spieldurchgänge in einer Spielumgebung aufzeichnet, eine Vielzahl von Frames aus dem einen oder den mehreren Spieldurchgängen in eine Vielzahl von Zellen auf einer Heatmap sortiert und die Liste der sortierten Frames sammelt. Ein Codierer kann dann ein oder mehrere Frames aus der Liste der sortierten Frames codieren, um eine durchschnittliche codierte Framegröße für jede Zelle in der Heatmap zu berechnen und jede durchschnittliche codierte Framegröße mit einer pro Zelle normierten Codiererqualitätseinstellung zu verknüpfen. Der Codierer berechnet dann aus der durchschnittlichen codierten Framegröße jeder Zelle eine durchschnittliche Framegröße für die Heatmap und verwendet sie während des Spielens als Ansprechungen für die Codierung einer Videosequenz.
  • Noch eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Systeme und Verfahren zur Codierung zu offenbaren, wobei ein Renderer eine aus einer Vielzahl von Frames bestehende Videosequenz aufzeichnet und ein Codierer die Videosequenz in einem Multi-Pass-Modus codiert, der die Einstellungen der Codiererqualität gegenüber dem ersten Frame der Videosequenz optimiert. Der Codierer kann dann die Codierer-Qualitätseinstellung aufzeichnen. Der Renderer kann dann die Codierer-Qualitätseinstellungen auf das erste Frame der Videosequenz normieren und sie verwenden, um den Codierer darauf hinzuweisen, die Videosequenz während der Wiedergabe zu codieren.
  • Noch eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Systeme und Verfahren zum Codieren zu offenbaren, wobei ein oder mehrere Frames in einem Single-Pass codiert werden.
  • Noch eine weitere Aufgabe der vorliegenden Erfindung besteht darin, Systeme und Verfahren zur Codierung zu offenbaren, wobei die aus einem oder mehreren Spieldurchgängen extrahierten Daten eine Vielzahl von Frames und eine jedem der Frames zugeordnete Spielerposition einschließen.
  • Figurenliste
  • Eine umfassendere Beurteilung der Erfindung und vieler der damit verbundenen Vorteile ist unschwer möglich, da sie durch die folgende detaillierte Beschreibung besser verstanden wird, wenn sie im Zusammenhang mit den beigefügten Zeichnungen betrachtet wird. Es zeigen:
    • 1 ein Diagramm einer beispielhaften Umgebung, in der ein in Echtzeit gerendertes Video an einen Remote-Betrachter übertragen wird;
    • 2 ein Ablaufdiagramm, das die Phasen der Lastschätzung basierend auf den Codiereransprechungen beschreibt;
    • 3 ein Diagramm einer beispielhaften Implementierung, die Framezeitspitzen und Framezeittäler erkennt und die Codierereinstellungen entsprechend ändert;
    • 4 ein beispielhaftes Ablaufdiagramm, das die Verwendung von vorgenerierten Codiererqualitätseinstellungen während der Laufzeit eines Live-Renderers veranschaulicht;
    • 5 ein beispielhaftes Ablaufdiagramm, das die Phasen der Vorgenerierung von Codiererqualitätseinstellungen für eine live gerenderte Sequenz gemäß einer Ausführungsform der Erfindung darstellt;
    • 6 ein Diagramm der Daten, die bei einer beispielhaften Vorgenerierung der Codiererqualitätseinstellungen für eine maschineninterne Echtzeit-Schnittszene mit bestimmter Länge gemäß einer Ausführungsform der Erfindung erzeugt wurden;
    • 7 ein Diagramm einer beispielhaften Vorgenerierung von Codiererqualitätseinstellungen für eine räumlich verwandte Sequenz gemäß einer Ausführungsform der Erfindung; und
    • 8 eine beispielhafte Heatmap, aus der normierte Codiererqualitätseinstellungen gemäß einer Ausführungsform der Erfindung extrahiert werden können.
  • DETAILLIERTE BESCHREIBUNG DER BEVORZUGTEN AUSFÜHRUNGSFORMEN
  • Bei der Beschreibung der bevorzugten Ausführungsformen der in den Zeichnungen dargestellten Erfindung wird aus Gründen der Übersichtlichkeit auf eine spezielle Terminologie zurückgegriffen. Die Erfindung soll sich jedoch nicht auf die so ausgewählten speziellen Begriffe beschränken, und es ist zu verstehen, dass jeder spezielle Begriff alle technischen Äquivalente umfasst, die ähnlich arbeiten, um einen ähnlichen Zweck zu erfüllen. Mehrere bevorzugte Ausführungsformen der Erfindung werden zur Veranschaulichung beschrieben, wobei davon ausgegangen wird, dass die Erfindung auch in anderen Formen verkörpert werden kann, die nicht ausdrücklich in den Zeichnungen dargestellt sind.
  • Während des typischen Betriebs eines Live-Streaming-Videospiels mit 60 Frames pro Sekunde berechnet der Codierer Bewegungsvektoren und Residuen. Wenn sich ein Videoframe aufgrund neuer Videoinformationen deutlich vom vorherigen Frame unterscheidet, können die vom Codierer berechneten Residuen größer als normal sein, was zu einem Anstieg der Netzwerkbandbreitennutzung führt. Ein Codierer passt seine Codierereinstellungen während des Live-Streaming als Reaktion auf Faktoren wie diese Bitratenspitzen an, kann die Einstellungen aber nur reaktiv anpassen.
  • In Fällen, in denen Videoframes in Echtzeit gerendert werden, kann der Codierer vorgewarnt werden, um die Codierungseinstellungen vorbeugend anzupassen, um die höchstmögliche Qualität für eine Bitrateneinschränkung zu gewährleisten. Der Prozess der Bereitstellung von Einstellungen, um die vom Codierer ausgewählten Einstellungen zu überschreiben, wird als Ansprechen bezeichnet. Da der Renderer Informationen über Frames hat, bevor sie codiert werden, ist der Renderer gelegentlich besser geeignet, entsprechende Codierereinstellungen auszuwählen und sollte den Codierer entsprechend hinweisen. Der Renderer kann den Codierer darauf hinweisen, wenn es sich bei einem eingehenden Frame um ein Bild mit hoher Entropie handelt, wenn ein eingehender Frame keine Beziehung zu vorherigen Frames hat oder aus anderen Gründen, die zu großen Residuen, Qualitätseinbußen oder Bitratenspitzen führen können.
  • 1 ist ein Diagramm einer beispielhaften Umgebung, in der Echtzeit gerendertes Video an einen entfernten Betrachter live übertragen wird. Der Server 100 kann aus jeder Hardware bestehen, die in der Lage ist, gleichzeitig einen Echtzeit-Rendering-Prozess 102 (hierin auch als „Renderer“ bezeichnet) und einen Streaming-Codec 104 (hierin auch als „Codierer“ bezeichnet) auszuführen. Der Server 100 kann aus einer oder mehreren Hardwarevorrichtungen bestehen, einschließlich eines oder mehrerer Telemetrieserver 105, die Telemetriemessungen durchführen, wie nachfolgend erläutert. Der Server 100 und der Telemetrieserver 105 können lokal oder entfernt vom Rendering-Prozess 102 und dem Codec 104 sein. Der Codec 104 muss auch die Fähigkeit besitzen, seine Codiererqualitätseinstellungen durch direktes Melden oder einen anderen in der Technik bekannten Überwachungsprozess an den Renderingprozess 102 zurückzugeben. Der codierte Videostrom wird über ein Netzwerk an ein Client-Gerät 106 übertragen. Der Client 106 kann aus jeder Hardware bestehen, die in der Lage ist, den Videostrom zu decodieren und anzuzeigen.
  • 2 ist ein Ablaufdiagramm, das die Phasen der lastschätzbasierten Codierer-Ansprechung umreißt. Während der Renderer ein Video generiert, sollte der Rendering-Prozess oder ein anderer serverseitiger Prozess nach Informationen suchen, die die Codierung eines Frames bei „ÜBERWACHEN AUF EIN EREIGNIS“, Schritt 200, ändern würden. Dies kann Informationen wie die Anzahl der Draw-Aufrufe an den Renderer während dieses Frames, ein Versuch, die Größe der codierten Residuen basierend auf der Anzahl der Pixel, die zum ersten Mal in einem Frame erscheinen, zu berechnen, oder andere Informationen einschließen, die versuchen, die Renderleistung mit der Codiererleistung zu korrelieren. Die überwachten Informationen können jede Meldung, jedes berechnete Ergebnis, jedes Ergebnis oder einen anderen diskret messbaren Wert einschließen, der während des Laufzeit-Rendering-Prozesses auftritt. Wenn Informationen gelesen werden, die darauf hindeuten, dass sich die codierte Framegröße deutlich von der codierten Framegröße des vorherigen Frames unterscheidet, wird diese Information als Ereignis bezeichnet.
  • Das Ereignis kann seinen Ursprung im Renderer haben, wie in 3 beschrieben, wo eine beispielhafte Implementierung der Spitzenerkennungsüberwachung im Renderingprozess die Renderingzeit jedes Frames überwacht, um ungewöhnlich lange oder ungewöhnlich kurze Framezeiten zu erkennen. In diesem Fall wird eine ungewöhnliche Frame-Renderingzeit als Ereignis betrachtet.
  • Wenn der Renderer ein Ereignis empfängt, kann es sein, dass einige zusätzliche Berechnungen am Renderer erforderlich sind, um Codierer-Qualitätseinstellungen zu erzeugen, um den Codierer bei „VORBEREITEN DER CODIERER-QUALITÄTSEINSTELLUNGEN FÜR DEN AKTUELLEN FRAME“, Schritt 202, darauf hinzuweisen. Diese Berechnungen können auch das Ändern von Informationen einschließen, die während der Ereignisüberwachung des vorherigen Schrittes gemessen wurden. Diese Berechnungen können auch das Ändern der Laufzeit-Codiererqualitätseinstellungen einschließen, die von dem Codierer an den Renderer auf jedem Frame gemeldet werden und bei Bedarf unter „MELDEN DER CODIEREREINSTELLUNGEN FÜR JEDEN CODIERTEN FRAME“, Schritt 204, verfügbar sein sollten. Die erzeugten Codierer-Qualitätseinstellungen werden vom Renderer an den Codierer bei „ANSPRECHEN DES CODIERERS MIT VORBEREITETEN CODIERER-EINSTELLUNGEN“ 206 gesendet. Der Renderer wird weiterhin auf Ereignisse in zukünftigen Frames überwachen.
  • In Beispiel von 3, wenn ein Frame eine ungewöhnlich lange Renderingzeit erfordert, weist der Renderer den Codierer darauf hin, die Qualitätseinstellungen proportional zur Größe dieser Framezeitspitze zu reduzieren. Um den Einstellwert für die Codiererqualität vorzubereiten, kann der Renderer die gemessene Framezeit aus dem aktuellen Frame, die gemessenen Framezeiten einer bestimmten Anzahl vorhergehender Frames und die Laufzeit-Codierer-Qualitätseinstellungen, wie von den Codierer gemeldet, verwenden. Diese Berechnungen werden im Zusammenhang mit der Diskussion von 3 näher erläutert.
  • Andere Prozesse, die auf dem Server ausgeführt werden, haben möglicherweise auch Zugriff auf Frame-Informationen, die verwendet werden können, um die Codierereinstellungen anzuzeigen. So kann beispielsweise eine Spiel-Engine, die einen Renderer enthält, die gemessene Auswirkung auf die codierte Videobandbreite durch visuelle Effekte, die durch das Spiel ausgelöst werden, nutzen, um die Einstellungen der Codiererqualität zu verringern. Um Informationen über die zusätzlichen Codierungskosten eines bestimmten visuellen Effekts zu erhalten, muss ein Entwickler möglicherweise einen Effekt anwenden und die Erhöhung der Bitrate beim Codieren mit verschiedenen Einstellungen der Codiererqualität messen. Die Messungen können verwendet werden, um eine Qualität auszuwählen, bei der die codierte Framegröße für einen Frame, der den visuellen Effekt enthält, ungefähr die gleiche codierte Framegröße hat wie ein vorheriger Frame, der den visuellen Effekt nicht enthielt. Die Differenz zwischen der für den visuellen Effekt gewählten Qualitätseinstellung und der Standardqualitätseinstellung wird als Einstellungsdelta bezeichnet. Der Codierer kann hingewiesen werden, die gewählte Qualität zu verwenden, oder hingewiesen werden, die aktuelle Qualität um das gemessene Einstellungsdelta zu verringern. Die Ergebnisse sollten in einem Format gespeichert werden, das ein visuelles Effektereignis leicht in den zugehörigen Codierer-Hinweis übersetzen kann, wie beispielsweise eine Nachschlagetabelle oder eine andere Art von indiziertem Array.
  • 3 ist eine beispielhafte Implementierung, die Framezeitspitzen und Framezeittäler erkennt und dann die Codierereinstellungen entsprechend ändert. Dieses Beispiel verwendet die Korrelation zwischen Renderingzeit und Bildentropie, um den Effekt auf die Bitrate des Videostroms abzuschätzen. Wenn ein Frame eine Menge an neuen visuelle Informationen enthält, d.h. zusätzliche Elemente, die zum ersten Mal zum Frame beitragen, kann es im Vergleich zu den vorherigen Frames länger dauern, den Frame darzustellen. Wenn beispielsweise ein Frame mit etwa der gleichen Framezeit wie das vorherige Frame wiedergegeben wird, ist es wahrscheinlich, dass sich die Umgebung nicht wesentlich verändert hat. Diese implizite Korrelation ist besonders deutlich bei einem Egospiel/Maschine. Wenn die gerenderte Framezeit plötzlich höher ist, impliziert das, dass etwas in der Umgebung neu eingeführt wird. Der Codierer wird auch mit neuen Videoinformationen zu kämpfen haben, wie z.B. plötzliche Explosionseffekte auf dem Bildschirm oder plötzliche neue Geometrien auf dem Bildschirm. Ebenso erhöhen viele neue Informationen in einem Frame die Größe der von dem Codierer berechneten Residuen. Daher kann die Überwachung auf Spitzenwerte bei der Renderingzeit Bilder identifizieren, die wahrscheinlich Hoch-Entropie-Bilder enthalten, bevor sie zu einem Anstieg der Bitrate des Videostroms führen können.
  • In der Signalverarbeitung und der statistischen Analyse wird ein rollierender Durchschnitt verwendet, um kurzfristige Ausreißer zu identifizieren und gleichzeitig langfristige Trends zu berücksichtigen. Ein rollierender Durchschnitt wird berechnet, indem das arithmetische Mittel einer bestimmten Anzahl von vorherigen Datenpunkten ermittelt wird; der Satz von vorherigen Datenpunkten, der zur Berechnung des rollierenden Durchschnitts verwendet wird, wird als Gleitfenster bezeichnet. Im Falle des Live-Rendering kann die Identifizierung von Framezeiten, die von der rollierenden durchschnittlichen Framezeit abweichen, Hoch-Entropie-Frames identifizieren. Die rollierende durchschnittliche Framezeit 300 in diesem Beispiel ist die durchschnittliche Framezeit für das vorherige rollierende Fenster. Das heißt, die Framezeiten werden für jeden Frame im rollierenden Fenster summiert, dann wird die Summe durch die Anzahl der Frames im rollierenden Fenster dividiert. Die Größe des Gleitfensters kann basierend auf der typischen Häufigkeit langfristiger Framezeit-Trends, die während des Laufzeit- Profilierung gemessen werden, um typische Datentrends zu untersuchen, angepasst werden. Je kleiner die Größe des Gleitfensters, desto energischer wird der Codierer angewiesen, da mehr False Positives erkannt werden können. Bei einer Gleitfenstergröße von beispielsweise zehn Frames wird die durchschnittliche Framezeit basierend auf den letzten zehn Framezeiten berechnet. Als Nebeneffekt eines Tiefpassfilters kann es bei einem zu kleinen Gleitfenster mehr False Positives geben, als bei der Peak-Erkennung erforderlich sind. Es kann einen Frame als „außergewöhnlich beschäftigt“ einstufen, wenn in Wirklichkeit die längere Framezeit durch ein langfristiges Verhaltensmuster erklärt wird, das häufig im Renderer auftritt. Die rollierende durchschnittliche Framezeit 300 wird von einer oberen Toleranz 302 und einer unteren Toleranz 304 begleitet. Die Toleranz kann angepasst werden, um typische kurzfristige Trends in der Framezeit zu identifizieren. Für einen Echtzeit-Renderer mit 60 Frames pro Sekunde kann eine Toleranz von ±1 ms oder etwa 6,25% ausreichend sein. Die Framezeiten können innerhalb der Toleranz der rollierenden durchschnittlichen Framezeit variieren, ohne dass ein Codierer-Ansprechen ausgelöst wird. Das Finden der geeigneten Fenstergröße und Toleranzwerte kann eine Laufzeit-Profilierung erfordern, um typische Trends in der Framezeit zu bestimmen. Beispielsweise kann ein Spiel, das mit 100 Frames pro Sekunde läuft, nur die Schatten jedes zweiten Frame aktualisieren, was zu einem typischen Jitter von 1 ms führt, was eine Toleranz von mehr als 10% erfordert. Umgekehrt könnte ein Spiel mit 30 Frames pro Sekunde bei einer sehr stabilen Framezeit von 33 ms komfortabel laufen, wobei der anspruchsvollste visuelle Effekt nur 0,5 ms beiträgt, so dass die Toleranz bis zu 1,5% betragen kann.
  • Die Framezeit für den aktuellen Frame wird mit der rollierenden durchschnittlichen Framezeit verglichen. Liegt die aktuelle Framezeit außerhalb der Toleranzgrenzen, wird die Qualität am Codierer eingestellt. Toleranzgrenzen können durch Messen der Framezeiten unter Verwendung eines Prozesses namens Profilierung berechnet werden, um die typischen Änderungen der Framezeit zwischen benachbarten oder fast benachbarten Frames (kurzfristige Trends) und die Änderungen der Framezeit über bestimmte Fenster (wie periodisch wiederkehrende Muster oder andere langfristige Trends) zu untersuchen. Die Größe und Toleranz des Gleitfensters kann dann so lange angepasst werden, bis das Codierer-Ansprechen nur in Hoch-Entropie-Momenten/ausgelasteten Momenten ausgelöst wird, nicht aber in Momenten, in denen sich der Spieler bewegt und die Umgebung erkundet. Überschreitet die Framezeit die obere Toleranz 302, wie im Beispiel von „FRAME 2“ 306, wird die Codierungsqualität verringert. Liegt die Framezeit unter der unteren Toleranz 304, wie im Beispiel von „FRAME 5“ 308, wird die Codiererqualität erhöht. In bestimmten Ausführungsformen kann die Codierungsqualität wieder bis zur vollen Kapazität erhöht werden, wenn die Framezeit unter die Toleranz fällt. Abhängig von der Implementierung kann ein System auch die Qualitätssicherung langsamer skalieren, indem es eine Skalierungsmethode anwendet, die derjenigen ähnelt, die zur Verringerung der Qualität verwendet wird.
  • Ein beispielhaftes Ansprechverfahren kann die Qualität zwischen einer Obergrenzen 310-Qualitätseinstellung und einer Untergrenzen-Qualitätseinstellung 312 skalieren. So kann beispielsweise die Obergrenze die Standardqualitätseinstellung und die Untergrenze einige Prozentsätze, wie beispielsweise 50%, der Standardqualität sein. Wenn ein Framezeitspitze über die Toleranz hinausgeht, können die Qualitätseinstellungen linear zwischen der oberen und unteren Grenze skaliert werden, basierend auf der Größe der Framezeitspitze über der Toleranz. Wenn eine Framezeit unter die Toleranz fällt, können die Qualitätseinstellungen auf den oberen Grenzwert zurückgesetzt werden.
  • Um den Qualitätsskalierungswert für eine Framezeit außerhalb der Toleranz zu berechnen, sollte zunächst die Framezeit in Bezug auf die rollierende durchschnittliche Framezeit nach der folgenden Gleichung (1) beispielhaft normiert werden. n o r m i e r t e   Z e i t = F r a m e Z e i t r o l l i e r e n d e   d u r c h s c h n i t t l i c h e   F r a m e Z e i t
    Figure DE112018002112T5_0001
  • Subtrahieren von 1 von der normierten Zeit führt zur Abweichung des Frames von der rollierenden durchschnittlichen Framezeit. Division der Abweichung durch die Toleranz und die Subtraktion von 1 liefert einen Skalierungswert. Dieser Skalierungswert sollte zwischen 0 und 1 fest fixiert werden; alle negativen Skalierungswerte sollten auf 0 und alle Werte über 1 sollten auf 1 fixiert werden, und zwar beispielhaft gemäß der folgenden Gleichung (2). S k a l i e r u n g s w e r t = n o r m i e r t e   Z e i t 1 T o l e r a n z 1
    Figure DE112018002112T5_0002
  • Der fest fixierte Skalierungswert kann verwendet werden, um zwischen der Obergrenzen-Qualitätseinstellung und der Untergrenzen-Qualitätseinstellung zu interpolieren. Ein fest fixierter Skalierungswert von 0 repräsentiert die Qualität der Obergrenze und ein fest fixierter Skalierungswert von 1 repräsentiert die Qualität der Untergrenze, beispielhaft gemäß der folgenden Gleichung (3). S k a l i e r t e   Q u a l i t ä t s e i n s t e l l u n g = m a x ( S k a l i e r u n g s w e r t * ( m a x m i n ) )
    Figure DE112018002112T5_0003

    (3) Skalierte Qualitätseinstellung = max - (Skalierungswert * (max - min))
  • Wenn in dem Beispiel „FRAME 2“ 306 16 ms dauert, wenn der rollierende Mittelwert 15 ms beträgt, ergibt sich ein Skalierungswert von 0,025 oder 2,5%. Wenn der Obergrenzenqualitätswert die Standardqualitätseinstellungen ist und die Untergrenze 50% der Standardqualität beträgt, beträgt die skalierte Qualitätseinstellung für diesen Frame 98,75% der Standardqualität.
  • Wenn „Frame 5“ 308 14,25 ms dauert, wenn der rollierende Mittelwert 15,25 ms beträgt, liegt die Framezeit unterhalb der Toleranz und der Skalierungswert wird auf 0 fixiert, die skalierte Qualitätseinstellung wird auf die Obergrenzenqualitätseinstellungen gesetzt.
  • Mehrere Codierer-Ansprechverfahren können übereinander geschichtet werden, indem die Werte der vorbereiteten Codiererqualitätseinstellungen aus dem Vorbereitungsschritt kombiniert werden, wie in Schritt 400 in 4 dargestellt, bevor der Wert der aggregierten Codiererqualitätseinstellungen zum Ansprechen an den Codierer gesendet wird, wie in Schritt 406 in 4 dargestellt. In einer Ausführungsform kann das arithmetische Mittel der vorbereiteten Codiererqualitätseinstellungen gefunden werden, um einen Einzelwert zu erzeugen, der die Beiträge aller Quellen gleichermaßen mit einschließen. In einer weiteren Ausführungsform kann ein gewichtetes arithmetisches Mittel berechnet werden, indem jeder Quelle ein Gewicht zugewiesen wird, das einen Wert für die Codiererqualitätseinstellung für das Codierer-Ansprechen beitragen kann. Die zugewiesenen Gewichtungen können verwendet werden, um eine beitragende Quelle stärker zu gewichten als eine andere. So können beispielsweise Beiträge aus einem Framezeitspitzenereignis eine stärkere Korrelation zu Änderungen der codierten Bitrate aufweisen, wenn sie mit Beiträgen von einem einzelnen visuellen Effektereignis verglichen werden, so dass es wünschenswert sein kann, die Beiträge aus dem Framezeitspitzenereignis stärker zu gewichten. Das gewichtete arithmetische Mittel kann unter Verwendung der Standarddefinition berechnet werden, und zwar beispielhaft nach der folgenden Gleichung (4), wobei i=1 die erste Zahl in dem Satz von n Qualitätseinstellungen darstellt. Zu beachten ist, dass die Indizes in mathematischen Sätzen bei 1 beginnen, anders als bei der Programmierung von Indizes, die bei 0 beginnen. x ¯ = i = 1 n w i x i i = 1 n w i
    Figure DE112018002112T5_0004
  • 4 ist ein beispielhaftes Ablaufdiagramm, das die Verwendung von vorgenerierten Codiererqualitätseinstellungen während der Laufzeit eines Live-Renderers veranschaulicht. Der Renderer sollte nach den Sequenzen suchen, die einen Satz von vorgenerierten Codiererqualitätseinstellungen unter „ÜBERWACHEN AUF SPIELSEQUENZEN“, Schritt 400, aufweisen. Diese Sequenzen können zeitlich vorhersehbare Sequenzen von Frames einschließen, wie beispielsweise Echtzeit-Schnittszenen in der Maschine, oder räumlich vorhersehbare Sequenzen, die während der Laufzeit in Zeitreihen umgewandelt werden können, wenn die Position des Spielers bekannt ist. Zeitlich vorhersehbare Sequenzen sind Sequenzen von Frames, wobei jeder Frame eine bekannte Beziehung zu seinem benachbarten Nachbarn hat. Das heißt, eine Sequenz von Frames ist zeitlich vorhersehbar, wenn sie eine konsistente Länge und Ordnung aufweist und zwei benachbarte Frames eine konsistente Beziehung in Pixeldaten und Bewegungsdaten aufweisen. Räumlich vorhersagbare Sequenzen stellen eine gewisse Beziehung zwischen zwei benachbarten virtuellen Orten her, die verwendet werden können, um Rückschlüsse auf eine zeitliche Sequenz zu ziehen, die konstruiert wird, wenn der virtuelle Raum während der Laufzeit des Renderers durchlaufen wird. Das heißt, zwei Orte in einem virtuellen Raum sind räumlich verwandt, wenn sie eine zeitlich vorhersehbare Sequenz erzeugen, wenn sich eine virtuelle Kamera zwischen den beiden virtuellen Orten bewegt. So sind beispielsweise in einem Videospiel zwei benachbarte Orte zeitlich miteinander verbunden, wenn das Verschieben zwischen den beiden Orten ein Video erzeugt, in dem die Pixeldaten und Bewegungsdaten etwas konsistent sind. Dies gilt in der Regel für die meisten 3D-Level in Videospielen, da die Umgebung und der Hintergrund, der den Spieler umgibt, typischerweise an festen Positionen wiedergegeben werden, wenn der Spieler den Level durchläuft.
  • Die Vorgenerierung der Codiererqualitätseinstellungen wird in Verbindung mit 5 näher beschrieben. Die vorgenerierten Codiererqualitätseinstellungen werden auf der Festplatte des Servers in einem laufzeitlesbaren Format wie einer Lookup-Tabelle oder einer Heatmap gespeichert. Wenn der Beginn einer Sequenz erkannt wird, werden die vorgenerierten Codiererqualitätseinstellungen für die erkannte Sequenz gelesen und vorbereitet unter „FINDEN VORGENERIERTER CODIERER-EINSTELLUNGEN FÜR SPIELSEQUENZ“, Schritt 602. Codierer-Qualitätseinstellungen müssen möglicherweise vorbereitet werden, wenn sie vor der Speicherung normiert wurden. Die Vorbereitung kann das Multiplizieren normierter Codiererqualitätseinstellungen mit der Laufzeit-Codiererqualitätseinstellung, einer Laufzeit-Codiererqualitätseinstellung oder einer Codiererqualitätseinstellung aus einer anderen Quelle einschließen. In bestimmten Ausführungsformen kann die Erkennung eines Ereignisses für jede der vorgenerierten Qualitätseinstellungen des Sequenzgebers erfolgen. In anderen Ausführungsformen kann zur Laufzeit eine Überprüfung durchgeführt werden, wenn jede Schnittszene beginnt, um festzustellen, ob sie sich in der Liste der Sequenzen befindet, für die Einstellungen existieren. Wenn die vorgenerierten Codiererqualitätseinstellungen vor dem Speichern normiert wurden, erfolgt ein Multiplikationsschritt zur Vorbereitung der Codiererqualitätseinstellungen. In dem in Verbindung mit 6 beschriebenen Beispiel werden Codiererqualitätseinstellungen für die Frames in einer Echtzeit-Schnittszene in der Maschine erzeugt und auf den ersten Frame der Sequenz normiert. Für eine solche normierte Zeitserie müssen die Einstellungen der Codiererqualität vorbereitet werden, indem die normierten Werte mit der Laufzeitcodiererqualitäteinstellung für den ersten Frame in der Sequenz multipliziert werden. Die Codiererqualitätseinstellungen werden von dem Codierer auf jedem Frame gemeldet und sollten nach Bedarf verfügbar sein unter „MELDEN VON CODIEREREINSTELLUNGEN FÜR JEDEN CODIERTEN FRAME“, Schritt 604. In dem in Verbindung mit 7 beschriebenen Beispiel werden für jeden Standort in einer Map Codiererqualitätseinstellungen generiert und auf die durchschnittliche Codiererqualitätseinstellung über die gesamte Map normiert. Für eine solche normierte räumliche Serie müssen die Codiererqualitätseinstellungen durch Multiplikation der normierten Werte mit der Laufzeit-Codiererqualitätseinstellung für den ersten Frame in der Sequenz vorbereitet werden.
  • Die Codiererqualitätseinstellungen werden für jeden Frame in der Reihenfolge bei „ANSPRECHEN DES CODIERERS MIT VORGENERIERTEN CODIEREREINSTELLUNGEN“, Schritt 606, an den Codierer gesendet. Der Codierer verwendet die von dem Renderer gesendeten Codiererqualitätseinstellungen, um den nächste Frame zu codieren. Der Renderer bereitet weiterhin die vorgenerierten Codierer-Qualitätseinstellungen vor und steuert den Codierer durch Ansprechen auf jedem Frame, bis die Sequenz abgeschlossen ist. Wenn die Sequenz endet, überwacht der Renderer weiterhin die nächste Sequenz. Für das in Verbindung mit 6 beschriebene maschinelle Echtzeit-Schnittszenenbeispiel wird der Codierer für jeden Frame in der Schnittszene angesprochen, bis die Schnittszene endet. Bei dem in Verbindung mit 5 beschriebenen beispielhaften Heatmap-Verfahren wird der Codierer für die gesamte Dauer darauf hingewiesen, dass sich der Spieler innerhalb der Grenzen des durch die Heatmap definierten Bereichs befindet.
  • 5 ist ein Ablaufdiagramm, das die Phasen der Vorgenerierung von Codierer-Qualitätseinstellungen für eine live gerenderte Sequenz umreißt. Codiererqualitätseinstellungen können für jede Sequenz vorgeneriert werden, die eine vorhersehbare und messbare zeitliche oder räumliche Komponente aufweist. Eine Sequenz kann unvorhersehbare Abschnitte haben, wie z.B. eine maschinelle Echtzeit-Schnittszene, die die Rüstung, die gerade vom Spielercharakter getragen wird, wiedergibt, oder eine maschinelle Schnittszene, die es den Spielern ermöglicht, sich während der Wiedergabe der Ereignisse zu bewegen oder umzusehen. Es sollte eine Sequenz identifiziert werden, die vorhersagbare Teile aufweist, indem nach benachbarten Frame-Beziehungen in Zeitreihenfolgen gesucht wird, wie z.B. maschinelle Echtzeit-Schnittszenen oder Nahlage-Beziehungen in virtuellen Räumen, die während der Laufzeit verwendet werden, um Frame-Sequenzen wie beispielsweise überfahrbare Bereiche in Videospielebenen zu generieren. Eine solche Sequenz sollte bei „SEQUENZ AUSWÄHLEN“, Schritt 500, identifiziert sein.
  • Am Codierer sollten die Codierer-Qualitätseinstellungen für die Sequenz mit dem Ziel generiert werden, eine konstante Bitrate bei „GENERIEREN VON CODIERER-EINSTELLUNGEN FÜR SEQUENZ“, Schritt 502, aufrechtzuerhalten. Codierer-Qualitätseinstellungen für eine maschinelle Echtzeit-Schnittszene können berechnet werden, indem ein Video der Schnittszene aufgenommen und das Video mit einem Multi-Pass-Codiermodus codiert wird. Die Multi-Pass-Codierung codiert den ersten Frame und verwendet die Größe des codierten ersten Frames, um alle nachfolgenden Frames einzuschränken. Wenn jeder Frame codiert wird, wird die codierte Größe mit der codierten Größe des ersten Frames verglichen und die Qualitätseinstellungen werden für den aktuellen Frame angepasst, bis die codierten Frames in der Nähe der Größe liegen. In bestimmten Ausführungsformen kann die Reihenfolge der Frames mit einer festen Anzahl von Durchläufen in einem Multi-Pass-Codiermodus codiert werden. In anderen Ausführungsformen kann die Sequenz durch aufeinanderfolgende Durchläufe in einem Multi-Pass-Codiermodus hindurchgeleitet werden, bis sich die Framegrößen auf einen Wert einstellen und nicht zwischen dem letzten Codierdurchlauf und dem vorletzten Codierdurchlauf wechseln. Die Qualitätseinstellungen des Codierers können aufgezeichnet werden, während sie aus dem resultierenden codierten Video generiert oder extrahiert werden. Die erzeugten Codiererqualitätseinstellungen werden während der Laufzeit verwendet, um die Bandbreite während der gegebenen Sequenz auszugleichen und so Bitratenspitzen und -einbrüche zu vermeiden. Im Gegensatz zur Vorcodierung des Videos einer vorab gerenderten Schnittszene und deren Speicherung zur Wiedergabe ermöglicht die Generierung von Codierer-Qualitätseinstellungen auf diese Weise, dass die Echtzeit-Schnittszenen in der Maschine kontextbasierte Inhalte wie anpassbare Spieler-Rüstungen, Waffen oder andere schmückende Elemente enthalten, während sie gleichzeitig von der Bandbreitenausgleichung durch vorgenerierte Qualitätseinstellungen profitieren.
  • Ein ähnlicher Prozess kann viele Male wiederholt werden, um Codierereinstellungen für eine räumlich verwandte Sequenz zu erzeugen. Der Prozess wird durch den beispielhaften Datenfluss in Verbindung mit 7 näher beschrieben.
  • Bei maschinellen Echtzeit-Schnittszenen sollten die Einstellungen der Codiererqualität für jeden Frame normiert werden, indem sie durch den Einstellwert der Codiererqualität des ersten Frames in der Sequenz dividiert werden. Dadurch können dynamische Elemente der Sequenz, wie z.B. Spielerpanzer oder schmückende Elemente, in den finalen Codiererqualitätseinstellungen dargestellt werden, die zur Laufzeit vorbereitet werden. Bei räumlich zusammenhängenden Sequenzen, die als Heatmap gespeichert werden, sollte jede Codiererqualitätseinstellung auf die durchschnittliche Codiererqualitätseinstellung über den gesamten durch die Heatmap definierten Bereich normiert werden, indem jede Codiererqualitätseinstellung durch die Map-weite durchschnittliche Codiererqualitätseinstellung dividiert wird. Eine beispielhafte Heatmap ist in 8 dargestellt. Die normierten Codiererwerte, die beim Rendern generiert werden, sollten in das entsprechende laufzeitlesbare Format organisiert werden, wie beispielsweise eine Liste der Codiererqualitätseinstellungen für jeden Frame in einer Zeitreihe oder eine Heatmap, die eine Codiererqualitätseinstellung für jeden Ort in einer Map definiert, und unter „NORMIEREN UND SPEICHERN DER CODIERERQUALITÄTSEINSTELLUNGEN FÜR JEDEN FRAME IN DER SEQUENZ“ gespeichert werden, Schritt 504.
  • 6 zeigt, wie die Daten bei einer beispielhaften Vorgenerierung von Codierer-Qualitätseinstellungen für eine maschinelle Echtzeit-Schnittszene mit definierter Länge generiert werden. Im Gegensatz zu vorgerenderten Schnittszenen werden Echtzeit-Schnittszenen während der Laufzeit mit derselben Renderingmaschine generiert, die auch für den Rest der live gerenderten Videoausgabe verwendet wird. Eine maschinelle Echtzeit-Schnittszene kann auch kontextuelle Informationen über den Spielstatus einschließen, wie z.B. schmückende Elemente, die der Spieler trägt, Nicht-Spieler-Charaktere in der Gruppe des Spielers oder andere Spielzustände, die durch die Wahl des Spielers gesteuert werden. Obwohl die Echtzeit-Schnittszenen in der Maschine historisch schlechter sind als die vorgerenderten Schnittszenen, werden sie immer häufiger, da die live gerenderte visuelle Klangtreue näher an die vorgerenderte visuelle Klangtreue heranrückt. Maschinelle Echtzeit-Schnittszenen werden auch dort verwendet, wo mehrere Optionen, wie z.B. Sprachoptionen, Auflösungsoptionen und Charakteranpassungsoptionen, die Videoausgabe einer Schnittszene beeinflussen könnten, so dass eine Spiele-CD nicht mehrere Versionen einer vorab gerenderten Schnittszene enthalten muss.
  • In diesem Beispiel wird eine Echtzeit-Schnittszene mit 480 Bildern Länge, ungefähr 8 Sekunden lang für ein Spiel mit 60 Bildern pro Sekunde ausgewählt. Diese Schnittszene spielt für alle Spieler die gleiche Serie von Ereignissen ab. Das Schnittszene-Video wird am Renderer aufgenommen und produziert eine Serie von 480 Bildern in der aufgezeichneten Sequenz 600. Die aufgezeichnete Sequenz 600 wird mit einem Multi-Pass-Codiermodus codiert. Während der Codierung jeden Frames in der aufgezeichneten Sequenz ändert der Multi-Pass-Codierungsprozess die Codiererqualitätseinstellungen, so dass die codierte Framegröße näher an die codierte Größe des ersten Frames heranrückt. er erste Frame der Sequenz wird als Framegrößenreferenz verwendet, um eine konsistente Bitrate über die gesamte codierte Sequenz zu gewährleisten.
  • Die Multi-Pass-Codiererqualitätseinstellungen 602 werden entweder während des Codiervorgangs am Codierer aufgezeichnet oder aus den von dem Codierer erzeugten codierten Ergebnissen extrahiert. Die Qualitätseinstellungen des Codierers sind eine geordnete Liste von Floats. Bei 4 Bytes pro Float verbraucht die gesamte geordnete Liste von 480 Floats nur 1.920 Bytes an Daten. Die geringe Dateigröße ermöglicht es einem Live-Renderer, viele Sätze von vorgenerierten Codierereinstellungen während der Laufzeit im Speicher zu speichern, was zu einem positiven Ergebnis führen kann, wenn der hierin beschriebene Prozess für jede Spielsequenz durchgeführt wird, ohne in Speicherbeschränkungen zu geraten.
  • Am Renderer werden die Codiererqualitätseinstellungen beispielhaft gemäß der folgenden Gleichung (5) auf den ersten Frame normiert. Q P   n o r m i e r t = Q P   F r a m e Q P   e r s t e r   F r a m e
    Figure DE112018002112T5_0005
    Die normierten Codiererqualitätseinstellungen 604 werden als geordnete Liste von Floats, vorzugsweise im Codierer, gespeichert.
  • Die geordnete Liste der normierten Qualitätseinstellungen 604 wird gelesen, wenn die Schnittszene während der Laufzeit zu spielen beginnt. Die normierten Qualitätseinstellungen werden mit der Laufzeit-Codiererqualitätseinstellung für den ersten Frame in der Sequenz multipliziert, wie sie aus dem Codierer an die Renderingmaschine gemeldet wird, und dann verwendet, um den Codierer für jeden nachfolgenden Frame in der Schnittszene zu kennzeichnen. In bestimmten Ausführungsformen akzeptiert die H.264-standardkonforme Bibliothek ffmpeg im Constant Rate Factor (CRF)-Modus einen Überschreibungs-Quantisierungsparameterwert in der Befehlszeile, die den Schalter -crf verwendet.
  • Die Normierung der Codiererqualitätseinstellungen ermöglicht es, die vorgenerierten Codiererqualitätseinstellungen während der Laufzeitwiedergabe der Schnittszene in mehreren verschiedenen Kontexten zu verwenden. Wenn beispielsweise die normierten Codierereinstellungen 604 mit der vom Codierer für den ersten Frame in der Sequenz gemeldeten Laufzeit-Codierqualität multipliziert werden, ergibt sich für die gesamte Schnittszene eine konsistente Bitrate, unabhängig von einer anpassbaren Spieler-Rüstung, die der Spieler trägt. Ebenso berücksichtigt das Verfahren die verschiedenen Rendering-Einstellungen, wie z.B. die Bildschirmauflösung, wobei eine maschinelle Echtzeit-Schnittszene abgespielt werden kann.
  • 7 ist ein Diagramm der beispielhaften Vorgenerierung von Codiererqualitätseinstellungen für eine räumlich verwandte Sequenz, wie sie beispielsweise zur Laufzeit generiert wird, wenn ein Spieler einen virtuellen Raum in einem Videospiel durchquert. Die Spielerposition in einem Videospiel kann im Allgemeinen mit der Bildentropie des Ausgabevideos korreliert werden, da die Ansicht eines Spielers einen überproportionalen Einfluss auf die Bitrate des codierten Videostroms hat. Diese Korrelation ist am deutlichsten beim Vergleich der codierten Videobitrate zwischen Videos, die in offenen Bereichen aufgenommen wurden, und Videos, die in engen Bereichen aufgenommen wurden. Offene Bereiche, wie z. B. Außenbereiche, produzieren Videos mit einer höheren durchschnittlichen Bitrate, während enge Bereiche, wie z. B. Korridore, Videos mit einer niedrigeren durchschnittlichen Bitrate produzieren. Diese Beziehung entsteht, weil Außenbereiche in der Regel uneinheitlich sind, große Flächen mit vielen konkurrierenden Bewegungen, wie z.B. Umgebungsanimationen auf der Vegetation, während Innenbereiche eher aus statischer Architekturgeometrie bestehen, die kohäsive Bewegungsvektoren und kleinere Residuen erzeugen.
  • Eine Map kann durch ein Raster segmentiert werden und eine Codiererqualitätseinstellung kann für jede Zelle in der Map vorgeneriert werden, um eine Heatmap, wie in 5 dargestellt, der normierten Codiererqualitätseinstellungen zu bilden. Eine typische codierte Videobitrate für einen bestimmten Spielerstandort kann entweder mit mehreren echten Spieldurchgängen oder durch prozedural generierte Spieldurchgänge aufgenommen werden. Da reale Spieler unvorhersehbar sind, ist es oft unmöglich, prozedural Spieldurchgänge zu generieren, die genau erfassen, wie Spieler einen virtuellen Raum durchqueren. Prozedurale Spieldurchgänge können für alle erwarteten Querpfade generiert werden, um schnell eine Abdeckung der gesamten Map zu erzeugen, können aber auch unerwartete Querpfade verpassen, die von echten Spielern entdeckt werden können. Jeder Ansatz hat Nachteile: Die Verfolgung der realen Telemetrie benötigt deutlich mehr Zeit, aber die prozedural generierten Daten spiegeln möglicherweise nicht genau die realen Spielerfahrungen wider. In bestimmten Ausführungsformen kann eine Kombination aus beiden Aufnahmen verwendet werden, um eine genauere Heatmap zu erhalten.
  • Das aufgenommene Video sollte nicht nur Videoframes enthalten, wie in der aufgezeichneten Sequenz 600 von 6 gezeigt, sondern auch einen Spielerstandort für jeden Frame festlegen. Die Position des Spielers kann im 3D-Raum liegen oder auf die horizontale 2D-Ebene vereinfacht werden, wie sie durch eine Top-Down-Map dargestellt wird. Ausschnitte aus zwei beispielhaft aufgenommenen Spieldurchgängen, dem ersten aufgenommenen Spieldurchgang, der als „ERSTER AUFGENOMMENER SPIELDURCHGANG“ bei Schritt 700 dargestellt ist, und dem zweiten aufgenommenen Spieldurchgang, dem „ZWEITEN AUFGENOMMENEN SPIELDURCHGANG“, der als Schritt 702 dargestellt ist, werden in dem in Verbindung mit 7 beschriebenen beispielhaften Verfahren dargestellt. Die Videoframes werden zusammen mit den Positionen der Spieler aufgenommen. Jeder Videoframe in einem aufgenommenen Wiedergabevideo wird nach Standort in die entsprechende Zelle sortiert. In diesem Beispiel wird Frame 4 aus dem ersten aufgenommenen Spieldurchgang bei „ERSTER AUFGENOMMENER SPIELDURCHGANG“ in Schritt 700 angezeigt, und Frame 2 aus dem zweiten aufgenommenen Spieldurchgang wird bei „ZWEITER AUFGENOMMENER SPIELDURCHGANG“ in Schritt 702 angezeigt. Bei „Heatmap“, Schritt 704, werden beide in Zelle B6 bei „Zelle B6“, in Schritt 706 sortiert. Da diese Beispielzelle recht groß ist, zeigt die beispielhafte Heatmap in 8 eine Heatmap mit viel kleineren Zellen für eine höhere Auflösung.
  • Sowohl prozedural generierte als auch reale Spieldurchgänge können im Renderer generiert und neu codiert werden. Die resultierenden Spieldurchgangsaufnahmen können an einem zentralen Renderer-Standort gesammelt werden. Wenn mehrere Spieldurchgänge gesammelt werden, kann jede Zelle in der Heatmap mehrere Frames aufweisen, die an einer Stelle innerhalb der Zelle aufgenommen wurden. Zur Erfassung dieser Daten kann während der Entwicklung ein Telemetrieserver 105 verwendet werden. Die Rendering-/Spielmaschine kann dann die Telemetrie generieren und an einen zentralen Ort senden. Der Telemetrieserver 105 kann lokal oder entfernt vom Renderer sein. Die erzeugte Telemetrie kann auch manuell gesammelt werden, indem die erzeugten Telemetrie-Dateien von der lokalen Renderingmaschine manuell gesammelt und an einen zentralen Speicher gesendet werden. Das Beispiel von 7 zeigt den Anfang der Liste der zur Zelle B6 gehörenden Frames bei „ZELLE B6 FRAMES“, Schritt 708. Diese Liste der räumlich verwandten Frames wächst, wenn mehr Aufnahmen gesammelt oder generiert werden.
  • Die Sammlung von Bildern, die zu einer Zelle gehören, kann mit einem Single-Pass-Codiermodus codiert werden, der während des Livestreamings verwendet wird, mit einer Einstellung für die Ziel-Codiererqualität, die unter „ZIELQUALITÄTSCODIERUNG“, Schritt 710, angezeigt wird. Für jeden zu der Zelle gehörenden Frame wird eine codierte Framegröße generiert. Das Beispiel von 7 zeigt den Anfang der Liste der codierten Framegrößen der Zelle B6, die unter „CODIERTE FRAMGRÖSSE FÜR ZELLE B6 FRAMES“, Schritt 712, dargestellt ist. Diese codierten Framegrößen können gemittelt werden, um eine durchschnittliche codierte Framegröße für die Zelle zu finden. Das Beispiel von 7 zeigt die durchschnittliche codierte Framegröße der Zelle B6 bei „DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSE FÜR ZELLE B6“, dargestellt bei Schritt 714. Der Prozess sollte für alle Zellen in der Heatmap wiederholt werden, um eine durchschnittliche codierte Framegröße für jede Zelle zu finden. Die durchschnittlichen codierten Framegrößen sind für die Zellen B6 bei „DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSDE FÜR ZELLE B6“, gezeigt in Schritt 714, und für B7 bei „DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSE FÜR ZELLE B7“, gezeigt bei Schritt 716, als Darstellung der Liste der durchschnittlichen Framegrößen für alle Zellen in der Heatmap gezeigt.
  • Alle durchschnittlichen Framegrößen für jede Zelle sollten gemittelt werden, um eine Map-weite durchschnittliche Framegröße bei „DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSE FÜR ALLE ZELLEN“, gezeigt bei Schritt 718, zu finden. Diese Map-weite durchschnittliche Framegröße kann als Zielbandbreite verwendet werden. Die Zellen mit durchschnittlichen codierten Framegrößen, die größer als der Map-weite Durchschnitt sind, werden mit einer niedrigeren Codiererqualitätseinstellung neu codiert, bis die durchschnittliche Zellenframegröße fast gleich dem Map-weiten Durchschnitt ist. Ebenso werden die Zellen mit einer durchschnittlichen codierten Framegröße, die kleiner als der Map-weite Durchschnitt ist, mit einer höheren Codiererqualitätseinstellung wieder codiert, bis die durchschnittliche Zellbildgröße nahezu gleich dem Map-weiten Durchschnitt ist. In bestimmten Ausführungsformen kann die Reihenfolge der Frames für eine bestimmte Zelle mit einer festen Anzahl von Durchläufen in einem Multi-Pass-Codiermodus codiert werden. In anderen Ausführungsformen kann die Sequenz durch aufeinanderfolgende Durchläufe in einem Multi-Pass-Codiermodus geführt werden, bis sich die Framegrößen auf einen Wert einstellen und nicht zwischen dem letzten Codierdurchlauf und dem vorletzten Codierdurchlauf wechseln. In dem Beispiel von 7 ist die durchschnittliche codierte Framegröße für Zelle B6 bei Schritt 714 höher als die durchschnittliche codierte Framegröße für alle Zellen bei „DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSE FÜR ALLE ZELLEN“, dargestellt in Schritt 718. Die räumlich zusammenhängenden Frames, die zu Zelle B6 bei „ZELLE B6 FRAMES“, Schritt 708, gehören, werden im Kontext ihrer ursprünglichen Wiedergabesequenz am Codierer unter Verwendung eines Multipass-Codierungsmodus und einer Ziel-Framegröße bei „GERINGERE QUALITÄTSCODIERUNG“, Schritt 720 neu codiert, bis die durchschnittliche codierte Framegröße für Zelle B6 bei „GERINGERE DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSE FÜR ZELLE B6“, Schritt 724, fast die gleiche Größe aufweist wie die durchschnittliche codierte Framegröße für alle unter „ DURCHSCHNITTLICHE CODIERTE FRAMEGRÖSSE FÜR ALLE ZELLEN“, Schritt 718, dargestellten Zellen. Alle durchschnittlichen Framegrößen für Zellen sollten, wenn der Prozess für alle Zellen abgeschlossen ist, nahezu gleich groß sein.
  • Jede Zelle sollte eine zugehörige Codiererqualitätseinstellung aufweisen, die verwendet wird, um eine durchschnittliche codierte Framegröße für die Zelle zu erzeugen, deren Größe mit der Map-weiten durchschnittlichen codierten Framegröße vergleichbar ist. Die Qualitätseinstellungen für die einzelnen Zellen können durch die Map-weite Einstellung der durchschnittlichen Codiererqualität, beispielhaft in Übereinstimmung mit der folgenden Gleichung (6), normiert werden. n o r m i e r t e   C o d i e r e r q u a l i t ä t s e i n s t e l l u n g = C o d i e r e r q u a l i t ä t s e i n s t e l l u n g Z e l l e n C o d i e r e r q u a l i t ä t s e i n s t e l l u n g A n z a h l   d e r   Z e l l e n
    Figure DE112018002112T5_0006
  • Während des Video-Streamings kann das Spiel die normierte Codiererqualitätseinstellung aus der Heatmap-Zelle ziehen, die der aktuellen Spieler-Position entspricht, und damit den Codierer durch Senden einer Überschreibung für die Qualitätseinstellung ansprechen. Wie vorstehend erläutert, akzeptiert die standardkonforme H.264-Bibliothek ffmpeg, die im CRF-Modus (Constant Rate Factor) läuft, in bestimmten Ausführungsformen einen Wert für die Quantisierungsparameter auf der Befehlszeile, indem sie den Schalter -erf verwendet, um den Codierer zu kennzeichnen. Eine beispielhafte Heatmap, aus der normierte Codiererqualitätseinstellungen entnommen werden können, ist in 8 dargestellt.
  • Da die Codiererqualitätseinstellungen normiert sind, können sie während des Vorbereitungsschritts, der unter „FINDEN VON VORGENERIERTEN CODIEREREINSTELLUNGEN FÜR DIE SPIELSEQUENCE“, Schritt 402, in 4 beschrieben ist, aus mehreren Quellen kombiniert werden, wie beispielsweise einer räumlich zusammenhängenden Sequenz und einer zeitlich zusammenhängenden Sequenz. Die normierten Werte können vor diesem Schritt multipliziert werden, um eine Codiererqualitätseinstellung zu generieren, die implizit die Auswirkungen auf die codierte VideoBitrate aus jeder Quellsequenz berücksichtigt. So wird beispielsweise der Standort des Spielers verwendet, um eine vorab generierte normierte Codiererqualitätseinstellung aus einer Heatmap zu lesen, und die Waffe des Spielers erzeugt eine Zündfolge, die eine vorgenerierte normierte Codiererqualitätseinstellung in Zeitreihen aufweist. Diese beiden normierten Werte werden während des Vorbereitungsschritts multipliziert, um den Einfluss von Spielerposition und Waffenwahl auf die codierte Videobitrate zu berücksichtigen.
  • Die vorstehende Beschreibung und die Zeichnungen sind nur als Veranschaulichung der Prinzipien der Erfindung zu betrachten. Die Erfindung ist nicht dazu bestimmt, durch die bevorzugte Ausführungsform eingeschränkt zu werden, und kann auf verschiedene Weise implementiert werden, die für einen Fachmann klar erkennbar sind. Zahlreiche Anwendungen der Erfindung sind für die Fachwelt unschwer erkennbar. Daher ist es nicht erwünscht, die Erfindung auf die offenbarten spezifischen Beispiele oder die genaue Konstruktion und Funktionsweise zu beschränken. Vielmehr können alle geeigneten Modifikationen und Äquivalente herangezogen werden, die in den Anwendungsbereich der Erfindung fallen.
  • ZITATE ENTHALTEN IN DER BESCHREIBUNG
  • Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
  • Zitierte Patentliteratur
    • US 62488526 [0001]
    • US 62/647180 [0001]
    • US 62/655901 [0001]
    • US 7844002 B2 [0005]
    • US 2016/019816166 [0006]
    • US 9697280 [0007]
    • US 20170155910 A1 [0008]
    • US 9774848 [0009]
    • US 9749642 [0010]
    • EP 1820281 B1 [0011]
    • JP 0612151818 B2 [0012]
    • US 2006/0230428 [0013]
    • US 8154553 [0014]

Claims (46)

  1. Computerimplementiertes Verfahren zum Codieren von Daten, umfassend die Schritte Aufzeichnen von einem oder mehreren Spieldurchgängen in einer Spielumgebung; Sortieren einer Vielzahl von Frames von dem einen oder den mehreren Spieldurchgängen in eine Vielzahl von Zellen auf einer Heatmap, wobei das Sortieren zu einer Liste von sortierten Frames führt, die der Heatmap zugeordnet sind; Sammeln der Liste von sortierten Frames in einem Renderer; Codieren von einem oder mehreren Frames aus der Liste der sortierten Frames, um eine durchschnittliche codierte Framegröße für jede Zelle in der Heatmap zu berechnen, wobei jede durchschnittliche codierte Framegröße einer pro Zelle normierten Codiererqualitätseinstellung zugeordnet ist; und Berechnen einer durchschnittlichen Framegröße für die Heatmap aus der durchschnittlichen codierten Framegröße jeder Zelle, wobei während des Spielens die pro Zelle normierte Codiererqualitätseinstellung entsprechend der Zelle in der Heatmap verwendet wird, um einen Codierer zum Kodieren einer Videosequenz anzuspielen.
  2. Verfahren nach Anspruch 1, wobei der eine oder die mehreren Frames in einem Single-Pass in die Videosequenz codiert werden.
  3. Verfahren nach Anspruch 1, ferner umfassend den Schritt des Speicherns der Pro Zelle normierten Codiererqualitätseinstellungen im Renderer.
  4. Verfahren nach Anspruch 1, wobei der eine oder die mehreren Spieldurchgänge auf einem Telemetrieserver gespeichert werden.
  5. Verfahren nach Anspruch 1, wobei der eine oder die mehreren Spieldurchgänge aus einer Vielzahl von Frames und einer jedem der Vielzahl von Frames zugeordneten Spielerposition bestehen.
  6. Verfahren nach Anspruch 5, wobei die Spielerposition verwendet wird, um die Pro Zelle normierte Codiererqualitätseinstellung auszuwählen, die den Codierer anspricht.
  7. Verfahren nach Anspruch 1, wobei die Einstellungen der pro Zelle normierten Codiererqualität durch die folgende Gleichung berechnet werden: n o r m i e r t e   C o d i e r e r q u a l i t ä t s e i n s t e l l u n g = C o d i e r e r q u a l i t ä t s e i n s t e l l u n g Z e l l e n C o d i e r e r q u a l i t ä t s e i n s t e l l u n g A n z a h l   d e r   Z e l l e n
    Figure DE112018002112T5_0007
  8. Verfahren nach Anspruch 1, ferner umfassend den Schritt des Kombinierens der Qualitätseinstellungen des pro Zelle normierten Codierers aus einer räumlich verbundenen Sequenz und einer zeitlich verbundenen Sequenz.
  9. System zum Codieren von Daten, Folgendes umfassend: einen Renderer, wobei der Renderer: einen oder mehrere Spieldurchgänge in einer Spielumgebung aufzeichnet; eine Vielzahl von Frames von dem einen oder den mehreren Spieldurchgängen in eine Vielzahl von Zellen auf einer Heatmap sortiert, wobei die Sortierung zu einer Liste von sortierten Frames führt, die der Heatmap zugeordnet sind; die Liste der sortierten Frames sammelt; und eine durchschnittliche Framegröße für die Heatmap aus der durchschnittlichen codierten Framegröße jeder Zelle berechnet; und einen Codierer, wobei der Codierer: ein oder mehrere Frames aus der Liste der sortierten Frames codiert, um eine durchschnittliche codierte Framegröße für jede Zelle in der Heatmap zu berechnen, wobei jede durchschnittliche codierte Framegröße einer Pro Zelle normierten Codiererqualitätseinstellung zugeordnet ist, und wobei während des Spiels die Pro Zelle normierte Codiererqualitätseinstellung, die der Zelle in der Heatmap entspricht, verwendet wird, um den Codierer zum Codieren einer Videosequenz anzuspielen.
  10. System nach Anspruch 9, wobei der eine oder die mehreren Frames in einem Single-Pass in die Videosequenz codiert sind.
  11. System nach Anspruch 9, wobei der Renderer die Qualitätseinstellungen des pro Zelle normierten Codierers speichert.
  12. System nach Anspruch 9, wobei der eine oder die mehreren Spieldurchgänge auf einem Telemetrieserver gespeichert sind.
  13. Verfahren nach Anspruch 9, wobei der eine oder die mehreren Spieldurchgänge aus einer Vielzahl von Frames und einer jedem der Vielzahl von Frames zugeordneten Spielerposition bestehen.
  14. Verfahren nach Anspruch 13, wobei die Spielerposition verwendet wird, um die Pro Zelle normierte Codiererqualitätseinstellung auszuwählen, die den Codierer anspricht.
  15. System nach Anspruch 9, wobei die Einstellungen der pro Zelle normierten Codiererqualität durch die folgende Gleichung berechnet werden: n o r m i e r t e   C o d i e r e r q u a l i t ä t s e i n s t e l l u n g = C o d i e r e r q u a l i t ä t s e i n s t e l l u n g Z e l l e n C o d i e r e r q u a l i t ä t s e i n s t e l l u n g A n z a h l   d e r   Z e l l e n
    Figure DE112018002112T5_0008
  16. System nach Anspruch 9, wobei die pro Zelle normierten Codierer-Qualitätseinstellungen aus einer räumlich zusammenhängenden Sequenz und einer zeitlich zusammenhängenden Sequenz kombiniert sind.
  17. System zum Codieren von Daten, Folgendes umfassend: einen Renderer, wobei der Renderer eine Videosequenz aufzeichnet, die aus einer Vielzahl von Frames besteht; und einen Codierer, wobei der Codierer die Videosequenz in einem Multipass-Modus codiert, der die Codiererqualitätseinstellungen gegenüber dem ersten Frame der Videosequenz optimiert, und wobei der Codierer die Codiererqualitätseinstellungen aufzeichnet, wobei der Renderer die Codiererqualitätseinstellungen auf den ersten Frame der Videosequenz normiert, und wobei die normierten Codiererqualitätseinstellungen verwendet werden, um den Codierer zum Codieren der Videosequenz anzuspielen.
  18. System nach Anspruch 17, wobei normierte Codiererqualitätseinstellungen durch die Gleichung berechnet werden: n o r m i e r t e   C o d i e r e r q u a l i t ä t s e i n s t e l l u n g = C o d i e r e r q u a l i t ä t s e i n s t e l l u n g Z e l l e n C o d i e r e r q u a l i t ä t s e i n s t e l l u n g A n z a h l   d e r   Z e l l e n
    Figure DE112018002112T5_0009
  19. System nach Anspruch 17, wobei die normierten Codiererqualitätseinstellungen als geordnete Liste von Floats gespeichert sind.
  20. System nach Anspruch 17, wobei die normierten Codiererqualitätseinstellungen mit einer Laufzeit-Codiererqualitätseinstellung multipliziert werden, wobei die multiplizierten normierten Codiererqualitätseinstellungen verwendet werden, um den Codierer zum Codieren der Videosequenz anzuspielen.
  21. System nach Anspruch 17, wobei die Videosequenz zeitlich mit einer oder mehreren anderen Videosequenzen verbunden ist.
  22. Computerimplementiertes Verfahren zum Codieren, umfassend die folgenden Schritte: Aufzeichnen einer Videosequenz, die aus einer Vielzahl von Frames besteht; Codieren der Videosequenz in einem Multipass-Modus, der die Codiererqualitätseinstellungen gegenüber dem ersten Frame der Videosequenz optimiert; Aufzeichnen der Codiererqualitätseinstellungen; und Normieren der Codiererqualitätseinstellungen auf den ersten Frame der Videosequenz, wobei die normierten Codiererqualitätseinstellungen verwendet werden, um einen Codierer zum Codieren der Videosequenz anzuspielen.
  23. Verfahren nach Anspruch 22, wobei normierte Codiererqualitätseinstellungen durch die folgende Gleichung berechnet werden: QP nomiert  = QP Frame Q P   e r s t e r F r a m e .
    Figure DE112018002112T5_0010
  24. Verfahren nach Anspruch 22, wobei die normierten Codiererqualitätseinstellungen als geordnete Liste von Floats gespeichert werden.
  25. Verfahren nach Anspruch 22, ferner umfassend den Schritt des Multiplizierens der normierten Codiererqualitätseinstellungen mit einer Laufzeit-Codiererqualitätseinstellung, wobei die multiplizierten normierten Codiererqualitätseinstellungen verwendet werden, um den Codierer zum Codieren der Videosequenz anzuspielen.
  26. Verfahren nach Anspruch 22, wobei die Videosequenz zeitlich mit einer oder mehreren anderen Videosequenzen zusammenhängen.
  27. Computerimplementiertes Verfahren zum Codierer-Ansprechen, umfassend die folgenden Schritte: Überwachen auf Informationen, die Änderungen bei der Framewiedergabe einer Live-Streaming-Anwendung betreffen; Berechnen von Toleranzgrenzen, rollierende durchschnittliche Framezeit und kurzfristige Trends in der Framezeit, wobei die Berechnungen verwendet werden, um eine Framezeitspitze in Videodaten zu identifizieren; und Ansprechen eines Codierers, um die Qualitätseinstellungen der Frameausgabe der Videodaten proportional zu der Größe der Bildzeitspitze zu modulieren.
  28. Verfahren nach Anspruch 27, wobei die Berechnungen von Toleranzgrenzen, rollierender durchschnittlicher Framezeit und kurzfristigen Trends in der Framezeit verwendet werden, um Hoch-Entropie-Frames zu identifizieren.
  29. Verfahren nach Anspruch 27, ferner Berechnen eines Qualitätsskalierungswerts für eine Framezeit außerhalb der Toleranzgrenzen, wobei die Berechnung verwendet wird, um den Codierer anzuspielen.
  30. Verfahren nach Anspruch 27, wobei die Toleranzgrenzen durch Profilierung berechnet werden.
  31. Verfahren nach Anspruch 27, wobei die aufgezeichneten Informationen eines oder mehrere von einer Nachricht, einem berechneten Ergebnis, einem Resultat oder einem diskret-messbaren Wert sein können, der während des Laufzeit-Rendering-Prozesses auftritt.
  32. Verfahren nach Anspruch 27, wobei das Überwachen die Erkennung von Framespitzen während eines Renderingprozesses einschließt.
  33. Verfahren nach Anspruch 32, wobei das Überwachen ferner das Erfassen der Renderingzeit jedes Frames einschließt, um ungewöhnlich lange oder ungewöhnlich kurze Framezeiten zu identifizieren.
  34. Verfahren nach Anspruch 27, ferner umfassend den Schritt des Verwendens der Korrelation zwischen Renderingzeit und Bildentropie, um den Effekt der überwachten Informationen auf die Bitrate der Videodaten zu berechnen.
  35. Verfahren nach Anspruch 27, ferner umfassend den Schritt des Verwendens eines rollierenden Mittelwertes in der Signalverarbeitung und der statistischen Analyse, um kurzfristige Ausreißer zu identifizieren, während langfristige Trends berücksichtigt werden, um den Effekt der überwachten Informationen auf die Bitrate der Videodaten zu berechnen.
  36. Verfahren nach Anspruch 27, ferner umfassend den Schritt des Verwendens einer gemessenen Framezeit aus dem aktuellen Frame, einer gemessenen Framezeit aus einer Anzahl von vorherigen Frame und / oder einer Laufzeit-Codiererqualitätseinstellung, wie sie von einem Codierer gemeldet wird, um einen Qualitätseinstellwert für Qualitätseinstellungen der Frameausgabe an einem Renderer zu berechnen.
  37. System zum Ansprechen eines Codierers, Folgendes umfassend: einen Server, der: Informationen im Zusammenhang mit Änderungen der Framecodierung einer Live-Streaming-Anwendung überwacht; Toleranzgrenzen, rollierende durchschnittliche Framezeit und kurzfristige Trends in der Framezeit berechnet, wobei die Berechnungen verwendet werden, um eine Framezeitspitze zu identifizieren; und einen Codierer zum Modulieren der Qualitätseinstellungen der Frameausgabe im Verhältnis zur Größe der Framezeitspitze anspricht.
  38. System nach Anspruch 37, wobei die Berechnungen von Toleranzgrenzen, rollierender durchschnittlicher Framezeit und kurzfristigen Trends in der Framezeit verwendet werden, um Hoch-Entropie-Frame zu identifizieren.
  39. System nach Anspruch 37, ferner Berechnen eines Qualitätsskalierungswerts für eine Framezeit außerhalb der Toleranzgrenzen, wobei die Berechnung verwendet wird, um den Codierer anzuspielen.
  40. System nach Anspruch 37, wobei die Toleranzgrenzen durch Profilierung berechnet werden.
  41. System nach Anspruch 37, wobei die aufgezeichnete Information eines oder mehrere von einer Nachricht, einem berechneten Ergebnis, einem Resultat oder einem diskret-messbaren Wert sein kann, der während des Laufzeit-Rendering-Prozesses auftritt.
  42. System nach Anspruch 37, wobei das Überwachen die Erkennung von Framespitzen während eines Renderingprozesses einschließt.
  43. System nach Anspruch 42, wobei das Überwachen ferner das Erfassen der Renderingzeit jedes Frames einschließt, um ungewöhnlich lange oder ungewöhnlich kurze Zeiträume zu identifizieren.
  44. System nach Anspruch 37, wobei der Server eine Korrelation zwischen Renderingzeit und Bildentropie anwendet, um den Effekt der überwachten Informationen auf die Bitrate der Videodaten zu berechnen.
  45. System nach Anspruch 37, wobei der Server einen rollierenden Durchschnitt in der Signalverarbeitung und der statistischen Analyse anwendet, um kurzfristige Ausreißer zu identifizieren, während er langfristige Trends berücksichtigt, um den Effekt der überwachten Informationen auf die Bitrate der Videodaten zu berechnen.
  46. System nach Anspruch 37, wobei der Server eine gemessene Framezeit aus dem aktuellen Frame, eine gemessene Framezeit aus einer bestimmten Anzahl von vorherigen Frame und / oder eine Laufzeitcodierer-Qualitätseinstellung, wie sie von einem Codierer gemeldet wird, verwendet, um einen Qualitätseinstellwert für Qualitätseinstellungen der Frameausgabe bei einem Renderer zu berechnen.
DE112018002112.2T 2017-04-21 2018-04-20 Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen Pending DE112018002112T5 (de)

Applications Claiming Priority (7)

Application Number Priority Date Filing Date Title
US201762488526P 2017-04-21 2017-04-21
US62/488,526 2017-04-21
US201862647180P 2018-03-23 2018-03-23
US62/647,180 2018-03-23
US201862655901P 2018-04-11 2018-04-11
US62/655,901 2018-04-11
PCT/US2018/028594 WO2018195440A1 (en) 2017-04-21 2018-04-20 Systems and methods for rendering & pre-encoded load estimation based encoder hinting

Publications (1)

Publication Number Publication Date
DE112018002112T5 true DE112018002112T5 (de) 2020-01-16

Family

ID=63854317

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112018002112.2T Pending DE112018002112T5 (de) 2017-04-21 2018-04-20 Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen

Country Status (15)

Country Link
US (5) US10225564B2 (de)
EP (4) EP3739881A1 (de)
JP (3) JP7145203B2 (de)
KR (4) KR102460792B1 (de)
CN (2) CN112153029A (de)
AU (3) AU2018255414B2 (de)
BR (1) BR112019021628A2 (de)
CA (6) CA3108057A1 (de)
DE (1) DE112018002112T5 (de)
GB (6) GB2583826B (de)
MX (2) MX2020012597A (de)
RU (3) RU2752723C2 (de)
TW (4) TWI737045B (de)
WO (1) WO2018195440A1 (de)
ZA (3) ZA201907683B (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11146608B2 (en) 2017-07-20 2021-10-12 Disney Enterprises, Inc. Frame-accurate video seeking via web browsers
US10841356B2 (en) 2018-11-28 2020-11-17 Netflix, Inc. Techniques for encoding a media title while constraining bitrate variations
US10880354B2 (en) 2018-11-28 2020-12-29 Netflix, Inc. Techniques for encoding a media title while constraining quality variations
CN111632382B (zh) * 2020-05-25 2021-06-25 腾讯科技(深圳)有限公司 游戏数据同步方法、装置、计算机及可读存储介质
CN111954067B (zh) * 2020-09-01 2022-10-04 杭州视洞科技有限公司 一种提高视频渲染效率与用户交互流畅度的方法
JP7024842B2 (ja) 2020-10-16 2022-02-24 日本ポリプロ株式会社 プロピレン単独重合体
CN117062656A (zh) * 2021-08-16 2023-11-14 谷歌有限责任公司 使用共享参考帧的低延迟多遍帧级速率控制
US20230247205A1 (en) * 2022-01-31 2023-08-03 Sling TV L.L.C. Bandwidth management using dynamic quality factor adjustments
WO2024001621A1 (en) * 2022-06-27 2024-01-04 Mediatek Inc. Multimedia system with dynamic adaptation

Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06121518A (ja) 1982-06-04 1994-04-28 Nsk Corp 高トルクロボット用モータ
US20060230428A1 (en) 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US7844002B2 (en) 2003-09-17 2010-11-30 International Business Machines Corporation Method and system for multiple pass video coding
US8154553B2 (en) 2008-05-22 2012-04-10 Playcast Media System, Ltd. Centralized streaming game server
US20160198166A1 (en) 2015-01-07 2016-07-07 Texas Instruments Incorporated Multi-pass video encoding
US20170155910A1 (en) 2009-12-21 2017-06-01 Echostar Technologies L.L.C. Audio splitting with codec-enforced frame sizes
US9697280B2 (en) 2006-12-13 2017-07-04 Quickplay Media, Inc. Mediation and settlement for mobile media
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
EP1820281B1 (de) 2004-12-10 2017-09-13 ARRIS Enterprises LLC Parallelratensteuerung für digitalen videokodierer mit mehrfachprozessorarchitektur und vorschaufenster auf bildgrundlage
US9774848B2 (en) 2002-07-01 2017-09-26 Arris Enterprises Llc Efficient compression and transport of video over a network

Family Cites Families (88)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06129865A (ja) 1992-10-20 1994-05-13 Sumitomo Electric Ind Ltd シングルモ−ドファイバ型デポラライザとその製造方法及び光ファイバジャイロ
JP3265818B2 (ja) * 1994-04-14 2002-03-18 松下電器産業株式会社 動画符号化方法
US5506844A (en) * 1994-05-20 1996-04-09 Compression Labs, Inc. Method for configuring a statistical multiplexer to dynamically allocate communication channel bandwidth
US6118817A (en) * 1997-03-14 2000-09-12 Microsoft Corporation Digital video signal encoder and encoding method having adjustable quantization
EP0919952A1 (de) * 1997-11-28 1999-06-02 Ecole Polytechnique Federale De Lausanne Verfahren zur Kodierung/Dekodierung eines digitalen Signals
TW501022B (en) * 1998-03-16 2002-09-01 Mitsubishi Electric Corp Moving picture coding system
US6975655B2 (en) 2000-04-07 2005-12-13 Broadcom Corporation Method of controlling data sampling clocking of asynchronous network nodes in a frame-based communications network
EP1173026B1 (de) * 2000-07-10 2008-07-30 STMicroelectronics S.r.l. Verfahren zur Kompression digitaler Bilder
WO2003107321A1 (en) * 2002-06-12 2003-12-24 Jena Jordahl Data storage, retrieval, manipulation and display tools enabling multiple hierarchical points of view
US6903662B2 (en) 2002-09-19 2005-06-07 Ergodex Computer input device with individually positionable and programmable input members
US9192859B2 (en) 2002-12-10 2015-11-24 Sony Computer Entertainment America Llc System and method for compressing video based on latency measurements and other feedback
US8840475B2 (en) * 2002-12-10 2014-09-23 Ol2, Inc. Method for user session transitioning among streaming interactive video servers
MXPA05014209A (es) * 2003-06-26 2006-05-31 Thomson Licensing Control de pasos multiples de velocidad de video para emparejar restricciones de canal de ventana deslizable.
CN1823529A (zh) 2003-07-18 2006-08-23 皇家飞利浦电子股份有限公司 检测数字视频流中的内容项
JP4180468B2 (ja) * 2003-08-11 2008-11-12 カノープス株式会社 画像圧縮システム及び画像圧縮方法
US7263126B2 (en) * 2003-09-15 2007-08-28 Sharp Laboratories Of America, Inc. System and method for transcoding with adaptive bit rate control
US8533597B2 (en) 2003-09-30 2013-09-10 Microsoft Corporation Strategies for configuring media processing functionality using a hierarchical ordering of control parameters
US7818444B2 (en) 2004-04-30 2010-10-19 Move Networks, Inc. Apparatus, system, and method for multi-bitrate content streaming
JP4996603B2 (ja) * 2005-07-08 2012-08-08 タグ ネットワークス,インコーポレイテッド 事前符号化マクロブロックを使用するビデオゲームシステム
US7773672B2 (en) * 2006-05-30 2010-08-10 Freescale Semiconductor, Inc. Scalable rate control system for a video encoder
US8874725B1 (en) * 2006-11-15 2014-10-28 Conviva Inc. Monitoring the performance of a content player
JP4843482B2 (ja) 2006-12-27 2011-12-21 株式会社東芝 情報処理装置およびプログラム
US20080181298A1 (en) * 2007-01-26 2008-07-31 Apple Computer, Inc. Hybrid scalable coding
US8090016B2 (en) * 2007-05-17 2012-01-03 Zoran Corporation Activity normalization for video encoding
US8069258B1 (en) 2007-09-11 2011-11-29 Electronic Arts Inc. Local frame processing to apparently reduce network lag of multiplayer deterministic simulations
WO2009136878A1 (en) 2008-05-08 2009-11-12 Mamoun Al Durra The automatic car cover
US8264493B2 (en) * 2008-05-12 2012-09-11 Playcast Media Systems, Ltd. Method and system for optimized streaming game server
EP2364190B1 (de) 2008-05-12 2018-11-21 GameFly Israel Ltd. Zentralisierter streaming-spielserver
US8678929B1 (en) 2008-08-01 2014-03-25 Electronics Arts Inc. Client-side prediction of a local game object to reduce apparent network lag of multiplayer simulations
US10192389B2 (en) * 2008-09-01 2019-01-29 New Bis Safe Luxco S.À.R.L. Methods, apparatus and systems for determining an adjustment value of a gaming device
US8621044B2 (en) * 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
JP5342391B2 (ja) * 2009-09-25 2013-11-13 株式会社メガチップス 画像処理装置
US9565439B2 (en) * 2009-10-15 2017-02-07 Nbcuniversal Media, Llc System and method for enhancing data compression using dynamic learning and control
US20110261885A1 (en) 2010-04-27 2011-10-27 De Rivaz Peter Francis Chevalley Method and system for bandwidth reduction through integration of motion estimation and macroblock encoding
US9319448B2 (en) * 2010-08-10 2016-04-19 Qualcomm Incorporated Trick modes for network streaming of coded multimedia data
US20120057629A1 (en) * 2010-09-02 2012-03-08 Fang Shi Rho-domain Metrics
US8965140B1 (en) * 2011-01-31 2015-02-24 Teradici Corporation Method and apparatus for encoding mixed content image sequences
US8411971B1 (en) * 2011-02-09 2013-04-02 Adobe Systems Incorporated Method and apparatus for normalizing perceptual quality in media compression
US9071841B2 (en) * 2011-05-17 2015-06-30 Microsoft Technology Licensing, Llc Video transcoding with dynamically modifiable spatial resolution
US9426494B2 (en) * 2011-07-18 2016-08-23 Ziilabs Inc., Ltd. Systems and methods with early variance measure used to optimize video encoding
JP5155462B2 (ja) 2011-08-17 2013-03-06 株式会社スクウェア・エニックス・ホールディングス 動画配信サーバ、動画再生装置、制御方法、プログラム、及び記録媒体
US20150082345A1 (en) * 2011-09-29 2015-03-19 Avvasi Inc. System for generating enhanced advertizements and methods for use therewith
JP5977023B2 (ja) 2011-11-07 2016-08-24 株式会社スクウェア・エニックス・ホールディングス 描画システム、プログラム、及び記録媒体
US9110626B2 (en) 2012-02-14 2015-08-18 Microsoft Technology Licensing, Llc Video detection in remote desktop protocols
US9345966B2 (en) 2012-03-13 2016-05-24 Sony Interactive Entertainment America Llc Sharing recorded gameplay to a social graph
EP2645713A1 (de) * 2012-03-30 2013-10-02 Alcatel Lucent Verfahren und Vorrichtung zur Codierung eines ausgewählten räumlichen Abschnitts eines Video-Streams
US9621869B2 (en) * 2012-05-24 2017-04-11 Sony Corporation System and method for rendering affected pixels
JP6787667B2 (ja) 2012-09-21 2020-11-18 ノキア テクノロジーズ オサケユイチア ビデオコーディングのための方法と装置
US9984504B2 (en) * 2012-10-01 2018-05-29 Nvidia Corporation System and method for improving video encoding using content information
EP2905963A4 (de) * 2012-10-05 2016-08-03 Sony Corp Codierungssteuerungsvorrichtung und codierungssteuerungsverfahren
WO2014120368A1 (en) 2013-01-30 2014-08-07 Intel Corporation Content adaptive entropy coding for next generation video
US9661351B2 (en) 2013-03-15 2017-05-23 Sony Interactive Entertainment America Llc Client side frame prediction for video streams with skipped frames
US10242462B2 (en) * 2013-04-02 2019-03-26 Nvidia Corporation Rate control bit allocation for video streaming based on an attention area of a gamer
US9079108B2 (en) 2013-05-31 2015-07-14 Empire Technology Development Llc Cache-influenced video games
US20150020806A1 (en) * 2013-07-19 2015-01-22 Merck Sharp & Dohme Corp. Dry powder inhaler for delivering multipe agglomerate formulations
WO2015027283A1 (en) * 2013-08-29 2015-03-05 Smart Services Crc Pty Ltd Quality controller for video image
US10491916B2 (en) * 2013-10-01 2019-11-26 Advanced Micro Devices, Inc. Exploiting camera depth information for video encoding
US20150208069A1 (en) * 2014-01-23 2015-07-23 Magnum Semiconductor, Inc. Methods and apparatuses for content-adaptive quantization parameter modulation to improve video quality in lossy video coding
US20150228106A1 (en) 2014-02-13 2015-08-13 Vixs Systems Inc. Low latency video texture mapping via tight integration of codec engine with 3d graphics engine
US10182241B2 (en) 2014-03-04 2019-01-15 Microsoft Technology Licensing, Llc Encoding strategies for adaptive switching of color spaces, color sampling rates and/or bit depths
CN104952096B (zh) * 2014-03-31 2018-06-08 中国电信股份有限公司 Cpu和gpu混合云渲染方法、装置和系统
US20150288965A1 (en) * 2014-04-08 2015-10-08 Microsoft Corporation Adaptive quantization for video rate control
US20150296215A1 (en) * 2014-04-11 2015-10-15 Microsoft Corporation Frame encoding using hints
EP2960854A1 (de) 2014-06-27 2015-12-30 Thomson Licensing Verfahren und Vorrichtung zur Bestimmung eines Satzes von modifizierbaren Elementen in einer Gruppe von Bildern
US9762919B2 (en) 2014-08-28 2017-09-12 Apple Inc. Chroma cache architecture in block processing pipelines
US9386317B2 (en) * 2014-09-22 2016-07-05 Sony Interactive Entertainment Inc. Adaptive picture section encoding mode decision control
US10264269B2 (en) * 2014-10-13 2019-04-16 Apple Inc. Metadata hints to support best effort decoding for green MPEG applications
US10404986B2 (en) * 2015-03-30 2019-09-03 Netflix, Inc. Techniques for optimizing bitrates and resolutions during encoding
TW201642655A (zh) 2015-04-21 2016-12-01 Vid衡器股份有限公司 基於藝術意向之視訊編碼
JP6494439B2 (ja) * 2015-06-05 2019-04-03 キヤノン株式会社 通信装置およびその制御方法
CN105163134B (zh) 2015-08-03 2018-09-07 腾讯科技(深圳)有限公司 直播视频的视频编码参数设置方法、装置及视频编码设备
US9807416B2 (en) 2015-09-21 2017-10-31 Google Inc. Low-latency two-pass video coding
US10425648B2 (en) 2015-09-29 2019-09-24 Qualcomm Incorporated Video intra-prediction using position-dependent prediction combination for video coding
US20170105004A1 (en) * 2015-10-07 2017-04-13 Qualcomm Incorporated Methods and systems of coding a predictive random access picture using a background picture
JP6910130B2 (ja) 2015-11-06 2021-07-28 三星電子株式会社Samsung Electronics Co.,Ltd. 3dレンダリング方法及び3dレンダリング装置
US10163183B2 (en) 2016-01-13 2018-12-25 Rockwell Collins, Inc. Rendering performance using dynamically controlled samples
US10356406B2 (en) 2016-01-19 2019-07-16 Google Llc Real-time video encoder rate control using dynamic resolution switching
US9705526B1 (en) 2016-03-17 2017-07-11 Intel Corporation Entropy encoding and decoding of media applications
US10109100B2 (en) 2016-03-25 2018-10-23 Outward, Inc. Adaptive sampling of pixels
US9639935B1 (en) 2016-05-25 2017-05-02 Gopro, Inc. Apparatus and methods for camera alignment model calibration
US10244167B2 (en) * 2016-06-17 2019-03-26 Gopro, Inc. Apparatus and methods for image encoding using spatially weighted encoding quality parameters
US10567775B2 (en) * 2016-10-01 2020-02-18 Intel Corporation Method and system of hardware accelerated video coding with per-frame parameter control
US10951912B2 (en) 2016-10-05 2021-03-16 Qualcomm Incorporated Systems and methods for adaptive selection of weights for video coding
US10463964B2 (en) 2016-11-17 2019-11-05 Activision Publishing, Inc. Systems and methods for the real-time generation of in-game, locally accessible heatmaps
US20180176285A1 (en) 2016-12-15 2018-06-21 The Directv Group, Inc. Enhanced transmission of media to client devices
US10812559B2 (en) 2017-01-18 2020-10-20 Amazon Technologies, Inc. Just-in-time variable adaptive encoding and delivery of media content
US10419785B2 (en) * 2017-07-21 2019-09-17 Cisco Technology, Inc. Distributed learning video encoder/decoder
US10045053B1 (en) 2017-08-23 2018-08-07 Amazon Technologies, Inc. Fragment insertion for live media streams

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06121518A (ja) 1982-06-04 1994-04-28 Nsk Corp 高トルクロボット用モータ
US9774848B2 (en) 2002-07-01 2017-09-26 Arris Enterprises Llc Efficient compression and transport of video over a network
US7844002B2 (en) 2003-09-17 2010-11-30 International Business Machines Corporation Method and system for multiple pass video coding
EP1820281B1 (de) 2004-12-10 2017-09-13 ARRIS Enterprises LLC Parallelratensteuerung für digitalen videokodierer mit mehrfachprozessorarchitektur und vorschaufenster auf bildgrundlage
US20060230428A1 (en) 2005-04-11 2006-10-12 Rob Craig Multi-player video game system
US9697280B2 (en) 2006-12-13 2017-07-04 Quickplay Media, Inc. Mediation and settlement for mobile media
US8154553B2 (en) 2008-05-22 2012-04-10 Playcast Media System, Ltd. Centralized streaming game server
US20170155910A1 (en) 2009-12-21 2017-06-01 Echostar Technologies L.L.C. Audio splitting with codec-enforced frame sizes
US9749642B2 (en) 2014-01-08 2017-08-29 Microsoft Technology Licensing, Llc Selection of motion vector precision
US20160198166A1 (en) 2015-01-07 2016-07-07 Texas Instruments Incorporated Multi-pass video encoding

Also Published As

Publication number Publication date
JP7145203B2 (ja) 2022-09-30
JP2022065047A (ja) 2022-04-26
EP3635954A1 (de) 2020-04-15
EP3720130B1 (de) 2022-09-28
ZA202007053B (en) 2022-03-30
MX2021004094A (es) 2021-06-08
KR102358294B1 (ko) 2022-02-08
US20180309811A1 (en) 2018-10-25
GB2595029B (en) 2022-02-09
MX2020012597A (es) 2021-10-19
GB2595029A (en) 2021-11-17
RU2752723C2 (ru) 2021-07-30
CN112153029A (zh) 2020-12-29
WO2018195440A1 (en) 2018-10-25
RU2720067C1 (ru) 2020-04-23
KR102460792B1 (ko) 2022-10-28
RU2020114319A (ru) 2020-06-18
TW201842778A (zh) 2018-12-01
RU2020114319A3 (de) 2020-07-07
AU2020289755A1 (en) 2021-01-21
CA3059747A1 (en) 2018-10-25
AU2020289756B2 (en) 2021-11-25
GB2593598A (en) 2021-09-29
US20210058630A1 (en) 2021-02-25
AU2018255414A1 (en) 2019-12-05
US11503313B2 (en) 2022-11-15
CA3159952A1 (en) 2018-10-25
GB202103312D0 (en) 2021-04-21
GB2583826A (en) 2020-11-11
US10362320B2 (en) 2019-07-23
JP7050836B2 (ja) 2022-04-08
GB2583826B (en) 2021-05-19
GB201916973D0 (en) 2020-01-08
US10869045B2 (en) 2020-12-15
KR20220012426A (ko) 2022-02-03
GB202104290D0 (en) 2021-05-12
TW202017388A (zh) 2020-05-01
EP3739881A1 (de) 2020-11-18
RU2019138226A (ru) 2019-12-27
TW201904292A (zh) 2019-01-16
EP4109899A1 (de) 2022-12-28
JP2020520204A (ja) 2020-07-02
CN110945849A (zh) 2020-03-31
AU2018255414B2 (en) 2021-01-21
CA3106617A1 (en) 2018-10-25
US20190281313A1 (en) 2019-09-12
GB2577642B (en) 2021-05-19
JP2020110608A (ja) 2020-07-27
GB202002769D0 (en) 2020-04-15
EP3720130A1 (de) 2020-10-07
KR20200021047A (ko) 2020-02-27
GB2583825A (en) 2020-11-11
TWI737045B (zh) 2021-08-21
CN110945849B (zh) 2021-06-08
GB202002838D0 (en) 2020-04-15
TW202015408A (zh) 2020-04-16
KR20210010668A (ko) 2021-01-27
BR112019021628A2 (pt) 2020-05-12
US10225564B2 (en) 2019-03-05
CA3087809A1 (en) 2018-10-25
GB2577642A (en) 2020-04-01
CA3087809C (en) 2021-03-09
CA3159950A1 (en) 2018-10-25
KR20210114553A (ko) 2021-09-23
RU2019138226A3 (de) 2020-06-30
AU2020289756A1 (en) 2021-01-21
US11202084B2 (en) 2021-12-14
KR102447074B1 (ko) 2022-09-23
ZA201907683B (en) 2021-04-28
GB2583825B (en) 2021-05-12
AU2020289755B2 (en) 2021-11-25
CA3106617C (en) 2023-11-07
TWI742510B (zh) 2021-10-11
US20190158856A1 (en) 2019-05-23
GB2593598B (en) 2021-12-29
TWI681666B (zh) 2020-01-01
GB202104855D0 (en) 2021-05-19
US20180310009A1 (en) 2018-10-25
TWI684358B (zh) 2020-02-01
CA3159950C (en) 2024-01-23
JP7291820B2 (ja) 2023-06-15
EP3635954A4 (de) 2020-07-15
CA3059747C (en) 2021-03-23
GB2591410A (en) 2021-07-28
ZA202007213B (en) 2022-04-28
CA3108057A1 (en) 2018-10-25
RU2753157C2 (ru) 2021-08-12

Similar Documents

Publication Publication Date Title
DE112018002112T5 (de) Systeme und verfahren zum rendern & vorkodierte lastschätz-basierte codierer-ansprech-bezogene anwendungen
DE69826155T2 (de) Verfahren und Vorrichtung zur digitalen Videosignalfilterung und -kodierung
DE69908562T2 (de) Bewegungsvektorenextrapolation zur transkodierung von videosequenzen
DE102013211571B4 (de) Konzept zur bestimmung der qualität eines mediadatenstroms mit variierender qualität-zu-bitrate
DE69827548T2 (de) Anordnung zur Vorverarbeitung für MPEG-2-Kodierung
DE69831961T2 (de) Bildobjekterzeugungsverfahren für objektbasierte kodierungssysteme unter verwendung von masken und gerundeten mittelwerten
DE102014006442A1 (de) Codierung eines Bildes
DE19704439C2 (de) Verfahren und Vorrichtung zur Bewegungsschätzung in einem digitalen Videocodierer unter Verwendung von Trajektorien
DE102013015821B4 (de) System und Verfahren zur Verbesserung der Videokodierung unter Verwendung von Inhaltsinformation
DE202016009100U1 (de) Online-Training von hierarchischen Algorithmen
DE102020124815A1 (de) System und vorrichtung für benutzergesteuerte virtuelle kamera für volumetrisches video
DE19743202B4 (de) Verfahren zum Codieren eines Bewegungsvektors
DE60219548T2 (de) Verfahren und Vorrichtung zur Kodierung der Verformunginformation eines 3D Objektes
DE60006651T2 (de) Verfahren, vorrichtung und verwendung zur bewertung von kodierten bildern
DE602005000425T2 (de) Verfahren und Anordnung zur Erzeugung von Kandidatenvektoren für Bildinterpolierungssysteme, die Bewegungsabschätzung und -kompensation verwenden
DE112021006157T5 (de) Videocodieren durch nicht-salienz-komprimierung für live-streaming von hochauflösenden videos in einer übertragung niedriger bandbreite
AT509032A2 (de) Verfahren und system zur videoqualitätsschätzung
DE112018002117T5 (de) Systeme und verfahren für verzögerte post-prozesse in der videocodierung
DE19749655B4 (de) Verfahren und Vorrichtung zum Kodieren eines Bewegungsvektors
DE102017212339A1 (de) Verfahren und Vorrichtung zur Bewertung von Bildausschnitten für eine Korrespondenzbildung
WO2005104559A1 (de) Prädiktionsverfahren, sowie zugehöriges verfahren zur decodierung eines prädiktionsverfahrens, zugehörige encodiervorrichtung und decodiervorrichtung
DE102004033766A1 (de) Übertragung von Bilddaten bei Application Sharing
DE202023101550U1 (de) Erzeugen von Videos unter Verwendung von Sequenzen generativer neuronaler Netze
DE19758964B4 (de) Vorrichtung zum Codieren eines Bewegungsvektors
DE10348911A1 (de) Verfahren zum Bestimmen der Disparität zwischen einem Referenzbild und einem Suchbild

Legal Events

Date Code Title Description
R082 Change of representative

Representative=s name: HOEFER & PARTNER PATENTANWAELTE MBB, DE

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

R130 Divisional application to

Ref document number: 112018002473

Country of ref document: DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012560000

Ipc: H04L0012700000

R082 Change of representative

Representative=s name: GRUENECKER PATENT- UND RECHTSANWAELTE PARTG MB, DE

R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: H04L0012700000

Ipc: H04L0045000000