DE112019003203T5 - Ratensteuerung für videocodierung und -übertragung mit niedriger latenz - Google Patents

Ratensteuerung für videocodierung und -übertragung mit niedriger latenz Download PDF

Info

Publication number
DE112019003203T5
DE112019003203T5 DE112019003203.8T DE112019003203T DE112019003203T5 DE 112019003203 T5 DE112019003203 T5 DE 112019003203T5 DE 112019003203 T DE112019003203 T DE 112019003203T DE 112019003203 T5 DE112019003203 T5 DE 112019003203T5
Authority
DE
Germany
Prior art keywords
slice
frequency bands
quantization parameters
frequency
blocks
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
DE112019003203.8T
Other languages
English (en)
Inventor
Hao Pan
Jim C. Chou
Felix C. Fernandes
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.)
Apple Inc
Original Assignee
Apple 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 Apple Inc filed Critical Apple Inc
Publication of DE112019003203T5 publication Critical patent/DE112019003203T5/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/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/60Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding
    • H04N19/63Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using transform coding using sub-band based transform, e.g. wavelets
    • 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/752Media network packet handling adapting media to network capabilities
    • 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/115Selection of the code volume for a coding unit prior to coding
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/102Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or selection affected or controlled by the adaptive coding
    • H04N19/124Quantisation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/134Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the element, parameter or criterion affecting or controlling the adaptive coding
    • H04N19/136Incoming video signal characteristics or properties
    • H04N19/14Coding unit complexity, e.g. amount of activity or edge presence estimation
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04NPICTORIAL COMMUNICATION, e.g. TELEVISION
    • H04N19/00Methods or arrangements for coding, decoding, compressing or decompressing digital video signals
    • H04N19/10Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding
    • H04N19/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/169Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding
    • H04N19/188Methods or arrangements for coding, decoding, compressing or decompressing digital video signals using adaptive coding characterised by the coding unit, i.e. the structural portion or semantic portion of the video signal being the object or the subject of the adaptive coding the unit being a video data packet, e.g. a network abstraction layer [NAL] unit

Landscapes

  • Engineering & Computer Science (AREA)
  • Multimedia (AREA)
  • Signal Processing (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Compression Or Coding Systems Of Tv Signals (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)

Abstract

Ein Videocodiersystem, bei dem Pixeldaten vor dem Codieren in Frequenzbänder zerlegt werden. Die Frequenzbänder für eine Scheibe eines Bilds können gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder vor dem Codieren berechnet werden können. Die Statistiken können dann durch eine Ratensteuerungskomponente beim Bestimmen von Quantisierungsparametern für die Frequenzbänder zum Modulieren der Rate in dem Codierer für die derzeitige Scheibe verwendet werden. Die Quantisierungsparameter für die Frequenzbänder können gemeinsam berechnet werden, um die Qualität der angezeigten Bilder nach einer Decodiererrekonstruktion und Wavelet-Synthese an einer Empfangsvorrichtung zu optimieren. Informationen über ein oder mehrere zuvor verarbeitete Bilder können in Kombination mit den Statistiken für eine derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.

Description

  • STAND DER TECHNIK
  • Virtual Reality (VR) ermöglicht es Benutzern, eine immersive künstliche Umgebung derart zu erleben und/oder damit zu interagieren, dass der Benutzer das Gefühl hat, sich physisch in dieser Umgebung zu befinden. Zum Beispiel können Virtual-Reality-Systeme Benutzern stereoskopische Szenen anzeigen, um eine Illusion der Tiefe zu erzeugen, und ein Computer kann den Szeneninhalt in Echtzeit anpassen, um die Illusion bereitzustellen, dass sich der Benutzer innerhalb der Szene bewegt. Wenn der Benutzer Bilder durch ein Virtual-Reality-System anzeigt, kann der Benutzer somit das Gefühl haben, sich in einer Egoperspektive innerhalb der Szenen zu bewegen. In ähnlicher Weise kombiniert Mixed Reality (MR) computergenerierte Informationen (als virtuelle Inhalte bezeichnet) mit Bildern der realen Welt oder einer Ansicht der realen Welt, um eine Ansicht der Welt eines Benutzers zu erweitern oder dieser Inhalte hinzuzufügen, oder kombiniert alternativ virtuelle Darstellungen von Objekten der realen Welt mit Ansichten einer dreidimensionalen (3D) virtuellen Welt. Die simulierten Umgebungen der Virtual Reality und/oder die gemischten Umgebungen der Mixed Reality können somit genutzt werden, um eine interaktive Benutzererfahrung für mehrere Anwendungen bereitzustellen.
  • KURZDARSTELLUNG
  • Es werden verschiedene Ausführungsformen eines Videocodiersystems beschrieben, das hochauflösende Videoquellen mit niedrigen Latenzen zur Übertragung über eine Kommunikationsverbindung (z. B. eine drahtlose Verbindung) an eine Vorrichtung zum Decodieren und Anzeigen codieren kann. Ausführungsformen des Videocodiersystems können auch eine schrittweise Leistungsminderung von codiertem Video bereitstellen, das an die Vorrichtung übertragen wird, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der Kommunikationsverbindung, beizubehalten. Eine beispielhafte Anwendung des Videocodiersystems besteht in Virtual- oder Mixed-Reality-Systemen, in denen Videobilder, die virtuelle Inhalte enthalten, durch eine Basisstation gerendert, codiert und zum Decodieren und zur Anzeige an eine Vorrichtung (z. B. einen Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone oder eine am Kopf befestigte Anzeige (HMD), wie ein Headset, einen Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können) übertragen werden.
  • In einigen Ausführungsformen kann das Videocodiersystem vor dem Codieren eine Wavelet-Transformation an den Pixeldaten durchführen, um die Pixeldaten in Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden. Die codierten Frequenzdaten werden dann an eine drahtlose Schnittstelle gesendet, welche die codierten Frequenzdaten paketiert und die Pakete an die Empfangsvorrichtung überträgt. An der Empfangsvorrichtung werden die codierten Daten entpackt und durch einen blockbasierten Decodierer geleitet, um die Frequenzbänder wiederherzustellen. Die Wavelet-Synthese wird dann an den wiederhergestellten Frequenzbändern durchgeführt, um die Pixeldaten zur Anzeige zu rekonstruieren.
  • Verschiedene Verfahren und Einrichtungen können durch das Videocodiersystem implementiert werden, um die Zielbildrate durch die drahtlose Verbindung beizubehalten und um die Latenz beim Rendern, bei der Übertragung und bei der Anzeige eines Bilds zu minimieren und um eine schrittweise Leistungsminderung von codiertem Video, das an die Vorrichtung übertragen wird, bereitzustellen, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der drahtlosen Verbindung, beizubehalten.
  • Ein Ziel eines Systems, das eine Ausführungsform des Videocodiersystems implementiert, kann darin bestehen, eine sehr niedrige Latenz (z. B. 4-5 Millisekunden) zwischen dem Zeitpunkt, zu dem der virtuelle Inhalt an der Basisstation gerendert wird, und dem Zeitpunkt, zu dem der virtuelle Inhalt an der Vorrichtung angezeigt wird, bereitzustellen, während Fehler (z. B. verworfene Pakete) minimiert werden und die Bandbreitennutzung über die drahtlose Verbindung maximiert wird. Ausführungsformen des Videocodiersystems können ein Ratensteuerungsverfahren implementieren, um beim Codieren von Daten, die über die drahtlose Verbindung an die Vorrichtung übertragen werden sollen, das Erreichen der angestrebten niedrigen Latenz für das System zu unterstützen.
  • In einigen Ausführungsformen schließt das Videocodiersystem eine Wavelet-Transformationskomponente ein, die eine 2-Schicht-Wavelet-Zerlegung durchführt, die Blöcke von Pixeln aus einer Scheibe eines Bilds in mehrere verschiedene Frequenzbänder zerlegt, gefolgt von einem blockbasierten Codierer, wie HEVC, der die Frequenzbänder codiert. In einigen Ausführungsformen kann eine Ratensteuerungskomponente, um eine Ratensteuerung unter den strengen Latenzanforderungen des VR-/MR-Systems durchzuführen, anstatt über eine Zeitkonstante eines Bilds oder von zwei Bildern zu arbeiten, um Codiererparameter anzupassen, Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder) für jede Scheibe einstellen. In einigen Ausführungsformen können die Frequenzbänder für eine Scheibe nach der Wavelet-Transformation im lokalen Speicher gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder vor dem Codieren berechnet werden können, zum Beispiel durch eine Komplexitätsanalysekomponente des Videocodiersystems. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komplexitätsstatistiken können dann durch eine Ratensteuerungskomponente beim Bestimmen von Quantisierungsparametern für die Frequenzbänder zum Modulieren der Rate in dem Codierer für die derzeitige Scheibe verwendet werden. Das Berechnen der Komplexitätsstatistiken auf den gepufferten Frequenzbändern ermöglicht es dem Videocodiersystem, das Maß an Komplexität in einer Scheibe vor dem Codieren der Scheibe zu schätzen.
  • In einigen Ausführungsformen kann die Ratensteuerungskomponente Statistiken für eines oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für eine derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
  • In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder gemeinsam berechnet werden, um die gesamte angezeigte Qualität der Bilder zu optimieren, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Arbeitsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
  • In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
  • In einigen Ausführungsformen kann die Ratensteuerungskomponente Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder oder Prioritätsstufen) auf der Blockebene anstatt auf der Scheibenebene anpassen. In einigen Ausführungsformen können Komplexitätsstatistiken für jeden Block einer Scheibe berechnet werden und können Quantisierungsparameter für die Blöcke bestimmt werden.
  • Figurenliste
    • 1 ist ein Blockdiagramm, das ein Videocodiersystem, das Pixeldaten vor dem Codieren unter Verwendung einer Wavelet-Transformation in Frequenzbänder zerlegt, gemäß mindestens einigen Ausführungsformen veranschaulicht.
    • 2 veranschaulicht ein Videocodiersystem, das mehrere Codierer einschließt, die Kacheln aus Bildern parallel verarbeiten, gemäß mindestens einigen Ausführungsformen.
    • 3A veranschaulicht ein beispielhaftes Bild, das in Scheiben und Kacheln unterteilt ist, gemäß mindestens einigen Ausführungsformen.
    • 3B veranschaulicht eine beispielhafte Kachel, die in Blöcke unterteilt ist, gemäß mindestens einigen Ausführungsformen.
    • 3C veranschaulicht das Durchführen einer Wavelet-Transformation eines Pixelblocks, der Pixeldaten speichert, um Frequenzbanddaten vor dem Codieren zu erzeugen, gemäß mindestens einigen Ausführungsformen.
    • 4 ist ein übersichtartiges Flussdiagramm eines Betriebsverfahrens für VR-/MR-Systeme, die Videocodiersysteme, wie in 1 und 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen einschließen.
    • 5 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in
    • 1 veranschaulicht, gemäß mindestens einigen Ausführungsformen.
    • 6 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in
    • 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen.
    • 7 ist ein Blockdiagramm, das ein Videocodiersystem, wie in 1 oder 2 veranschaulicht, in dem Komplexitätsstatistiken für die Frequenzbänder berechnet und beim Erzeugen von Quantisierungsparametern zum Codieren verwendet werden, gemäß mindestens einigen Ausführungsformen veranschaulicht.
    • 8 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem wie in
    • 7 veranschaulicht, gemäß mindestens einigen Ausführungsformen.
    • 9 veranschaulicht ein beispielhaftes VR-/MR-System, das ein Videocodiersystem implementieren kann, gemäß mindestens einigen Ausführungsformen.
    • 10 ist ein Blockdiagramm, das Komponenten eines VR-/MR-Systems, wie in 9 veranschaulicht, gemäß mindestens einigen Ausführungsformen veranschaulicht.
  • Diese Patentschrift beinhaltet Bezugnahmen auf „eine Ausführungsform“. Wenn der Ausdruck „in einer Ausführungsform“ auftaucht, ist damit nicht unbedingt immer dieselbe Ausführungsform gemeint. Besondere Merkmale, Strukturen oder Eigenschaften können auf jegliche geeignete Weise kombiniert werden, die mit dieser Offenbarung im Einklang steht.
  • „Umfassen.“ Dies ist ein offener Begriff. Wenn er in den Ansprüchen verwendet wird, schließt dieser Begriff eine zusätzliche Struktur oder zusätzliche Schritte nicht aus. Dies soll am Beispiel des folgenden Anspruchs verdeutlicht werden: „Vorrichtung, eine oder mehrere Prozessoreinheiten umfassend...“ Ein solcher Anspruch schließt nicht aus, dass die Vorrichtung zusätzliche Komponenten aufweist (z. B. eine Netzwerkschnittstelleneinheit, Grafikschaltungen usw.).
  • „Dafür ausgelegt.“ Verschiedene Einheiten, Schaltungen oder andere Komponenten können als „dafür ausgelegt“, eine oder mehrere Aufgaben zu erfüllen, beschrieben oder beansprucht werden. In einem solchen Kontext wird „dafür ausgelegt“ verwendet, um eine Struktur näher zu bezeichnen, indem angegeben wird, dass die Einheiten/Schaltungen/Komponenten eine Struktur (z. B. eine Schaltung) aufweisen, die diese Aufgabe(n) während des Betriebs ausführt. Somit kann man sagen, dass die Einheit/Schaltung/Komponente dafür konfiguriert ist, die Ausgabe auszuführen, auch wenn die bezeichnete Einheit/Schaltung/Komponente gerade nicht in Betrieb ist (z. B. nicht eingeschaltet ist). Die Einheiten/Schaltungen/Komponenten, die mit dem Ausdruck „dafür ausgelegt“ verwendet werden, schließen Hardware - zum Beispiel Schaltungen, Speicher, in dem Programmanweisungen gespeichert sind, die ausführbar sind, um den Betrieb zu implementieren, usw. - ein. Wenn angegeben wird, dass eine Einheit/Schaltung/Komponente „dafür ausgelegt“ ist, eine oder mehrere Aufgaben durchzuführen, ist ausdrücklich nicht beabsichtigt, sich auf die Anwendung von 35 U.S.C. § 112 Absatz (f) für diese Einheit/Schaltung/Komponente zu berufen. Außerdem kann „dafür ausgelegt“ eine allgemeine Struktur (z. B. eine allgemeine Schaltlogik) einschließen, die durch Software oder Firmware (z. B. eine FPGA oder eine Universalprozessor-Ausführungssoftware) gesteuert wird, um auf eine Weise zu arbeiten, die in der Lage ist, die vorliegende(n) Aufgabe(n) durchzuführen. „Dafür ausgelegt“ kann auch das Adaptieren eines Herstellungsverfahrens (z. B. einer Halbleiterherstellungsanlage) zur Herstellung von Vorrichtungen (z. B. integrierten Schaltungen) beinhalten, die daran angepasst sind, eine oder mehrere Aufgaben zu implementieren oder auszuführen.
  • „Erste“, „zweite“ usw. Wie hierin verwendet, werden diese Begriffe als Bezeichnungen für nachgestellte Nomina verwendet und implizieren keine Reihenfolge (z. B. räumlich, zeitlich, logisch usw.). Zum Beispiel kann eine Pufferschaltung hierin als eine beschrieben werden, die Schreiboperationen für „erste“ und „zweite“ Werte durchführt. Die Begriffe „erste“ und „zweite“ implizieren nicht unbedingt, dass der erste Wert von dem zweiten Wert geschrieben werden muss.
  • „Basierend auf‟ oder „abhängig von“. Wie hierin verwendet, werden diese Begriffe verwendet, um einen oder mehrere Faktoren zu beschreiben, die eine Bestimmung beeinflussen. Diese Begriffe schließen zusätzliche Faktoren, die eine Bestimmung beeinflussen können, nicht aus. Das heißt, eine Entscheidung kann ausschließlich auf diesen Faktoren basieren oder sie kann zumindest zum Teil auf diesen Faktoren basieren. Man betrachte den Ausdruck „Bestimmen von A auf Basis von B“. Obwohl in diesem Fall B ein Faktor ist, der die Bestimmung von A beeinflusst, schließt dieser Ausdruck nicht aus, dass A auch auf Basis von C bestimmt wird. In anderen Fällen kann A ausschließlich auf Basis von B bestimmt werden.
  • „Oder“. Bei Verwendung in den Ansprüchen wird der Begriff „oder“ als inklusives „oder“ und nicht als exklusives „oder“ verwendet. So bedeutet zum Beispiel die Wendung „mindestens eines von x, y oder z“ ein beliebiges von x, y und z sowie eine beliebige Kombination davon.
  • DETAILLIERTE BESCHREIBUNG
  • Verschiedene Ausführungsformen eines Videocodiersystems werden beschrieben. Ausführungsformen des Videocodiersystems können hochauflösende Videoquellen mit niedrigen Latenzen zur Übertragung über eine Kommunikationsverbindung (z. B. eine drahtlose Verbindung) an eine Vorrichtung zum Decodieren und zur Anzeige codieren. Ausführungsformen des Videocodiersystems können auch eine schrittweise Leistungsminderung von codiertem Video bereitstellen, das an die Vorrichtung übertragen wird, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der Kommunikationsverbindung, beizubehalten.
  • Eine beispielhafte Anwendung des Videocodiersystems besteht in Virtual- oder Mixed-Reality-Systemen, in denen Videobilder, die virtuelle Inhalte enthalten, gerendert, codiert und zum Decodieren und zur Anzeige an eine Vorrichtung übertragen werden. Ausführungsformen eines Virtual- oder Mixed-Reality-Systems (hierin als VR-/MR-System bezeichnet) werden beschrieben, in denen Ausführungsformen des Videocodiersystems implementiert werden können. In einigen Ausführungsformen kann das VR-/MR-System eine Vorrichtung (z. B. eine Pad- oder Tablet-Vorrichtung, ein Smartphone oder ein Headset, einen Helm oder eine Brille, die durch den Benutzer getragen werden, hierin als eine am Kopf befestigte Anzeige (HMD) bezeichnet) und eine separate Rechenvorrichtung, hierin als eine Basisstation bezeichnet, einschließen. In einigen Ausführungsformen können die Vorrichtung und die Basisstation jeweils eine Drahtloskommunikationstechnologie einschließen, die es der Vorrichtung und der Basisstation ermöglicht, über eine drahtlose Verbindung zu kommunizieren und Daten auszutauschen. In einigen Ausführungsformen kann die Vorrichtung Sensoren einschließen, die Informationen über die Umgebung des Benutzers (z. B. Video, Tiefeninformationen, Beleuchtungsinformationen usw.) und Informationen über den Benutzer (z. B. die Mienen, Augenbewegung, Handgesten usw. des Benutzers) sammeln. Die durch die Sensoren gesammelten Informationen können über die drahtlose Verbindung an die Basisstation übertragen werden. Die Basisstation kann Software und Hardware (z. B. Prozessoren (System-on-a-Chip (SOC), CPUs, Bildsignalprozessoren (ISPs), Grafikverarbeitungseinheiten (GPUs), Codierer/Decodierer (Codecs) usw.), Speicher usw.) einschließen, die dafür ausgelegt sind, Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den Sensorinformationen, die über die drahtlose Verbindung von der Vorrichtung empfangen werden, zu erzeugen und zu rendern. Die Basisstation kann auch eine Ausführungsform des Videocodiersystems, wie hierin beschrieben, einschließen, welche die gerenderten Bilder vorfiltern, komprimieren und über die drahtlose Verbindung zur Anzeige an die Vorrichtung übertragen kann.
  • In einigen Ausführungsformen kann das VR-/MR-System eine proprietäre Drahtloskommunikationstechnologie implementieren, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung und der Basisstation bereitstellt. In einigen Ausführungsformen können die Direktionalität und Bandbreite der Drahtloskommunikationstechnologie mehrere Vorrichtungen unterstützen, die gleichzeitig mit der Basisstation kommunizieren, um es somit mehreren Benutzern zu ermöglichen, das System gleichzeitig in einer am gleichen Standort befindlichen Umgebung zu verwenden. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen unterstützt werden.
  • Primäre Einschränkungen, die bei einer drahtlosen Verbindung zu berücksichtigen sind, schließen Bandbreite und Latenz ein. Ein Ziel des VR-/MR-Systems besteht darin, eine hochauflösende virtuelle Anzeige mit breitem Sichtfeld (FOV) mit einer Bildrate bereitzustellen, um dem Benutzer eine qualitativ hochwertige VR-/MR-Ansicht bereitzustellen. Ein weiteres Ziel ist es, die Latenz zwischen der Zeit, zu der ein Bild durch die Basisstation gerendert wird, und der Zeit, zu der das Bild durch die Vorrichtung angezeigt wird, zu minimieren. Jedoch kann die Kanalkapazität der drahtlosen Verbindung mit der Zeit variieren, und die drahtlose Verbindung kann somit nur eine bestimmte Menge an Informationen unterstützen, die zu einem gegebenen Zeitpunkt übertragen werden sollen.
  • Hierin werden verschiedene Verfahren und Einrichtungen beschrieben, die durch das Videocodiersystem implementiert werden können, um die Zielbildrate durch die drahtlose Verbindung beizubehalten und um die Latenz beim Rendern, bei der Übertragung und bei der Anzeige eines Bilds zu minimieren. Zusätzlich können die Verfahren und Einrichtungen eine schrittweise Leistungsminderung von codiertem Video bereitstellen, das an die Vorrichtung übertragen wird, um eine gewünschte Bildrate unter variierenden Bedingungen, wie Variationen der Kanalkapazität der Kommunikationsverbindung, beizubehalten.
  • In einigen Ausführungsformen kann das Videocodiersystem vor dem Codieren eine Wavelet-Transformation an den Pixeldaten durchführen, um die Pixeldaten in Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden. Als ein Beispiel kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, die dann an einen Codierer (z. B. einen High Efficiency Video Coding-Codierer (HEVC-Codierer)) gesendet werden können, um codiert zu werden. Die codierten Frequenzdaten werden dann an eine drahtlose Schnittstelle gesendet, welche die codierten Frequenzdaten paketiert und die Pakete an die Empfangsvorrichtung (z. B. eine HMD, eine Pad- oder Tablet-Vorrichtung, ein Smartphone usw.) überträgt. An der Empfangsvorrichtung werden die codierten Daten entpackt und durch einen blockbasierten Decodierer geleitet, um die Frequenzbänder wiederherzustellen. Die Wavelet-Synthese wird dann an den wiederhergestellten Frequenzbändern durchgeführt, um die Pixeldaten zur Anzeige zu rekonstruieren.
  • Während allgemein Ausführungsformen beschrieben werden, in denen die Wavelet-Transformation eine zweistufige Wavelet-Zerlegung ist, die auf jeden Pixelblock aus einem Videobild angewendet wird, kann in verschiedenen Ausführungsformen die Wavelet-Zerlegung eine beliebige Anzahl von Stufen (z. B. eine Stufe, zwei Stufen, drei Stufen, vier Stufen usw.) sein und kann angepasst werden, um einen Kompromiss zwischen der Qualität des codierten Bilds und der Komplexität der zu codierenden Blöcke zu schließen.
  • In einigen Ausführungsformen kann das Videocodiersystem ein Rendern, ein Codieren und eine Übertragung auf Scheibenbasis durchführen. Das Rendern, Codieren und Übertragen ganzer Bilder kann eine Latenz- und Speicherauswirkung haben, weil jedes Bild abgeschlossen, gespeichert und dann an die nächste Stufe des VR-/MR-Systems übertragen werden muss. Beim Rendern auf Scheibenbasis kann die Basisstation, anstatt ganze Bilder in der Basisstation zu rendern und zu codieren und die gerenderten Bilder an die Vorrichtung zu übertragen, Teile von Bildern (als Scheiben bezeichnet) rendern und codieren und die codierten Scheiben an die Vorrichtung übertragen, wenn sie fertig sind. Eine Scheibe kann zum Beispiel eine Zeile von 128x128-Blöcken oder zwei oder mehr Zeilen von Blöcken sein. Rendern und Codieren auf Scheibenbasis kann dazu beitragen, die Latenz zu reduzieren, und kann auch die Menge an Speicher reduzieren, die zum Puffern benötigt wird, was den Speicherbedarf auf dem/den Chip(s) oder dem/den Prozessor(en) sowie Leistungsanforderungen reduzieren kann.
  • In einigen Ausführungsformen kann das Videocodiersystem ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis durchführen. Beim Rendern, Codieren und Übertragen auf Kachelbasis kann jede Scheibe in mehrere Kacheln (z. B. vier Kacheln) unterteilt werden, und die Basisstation kann die Kacheln rendern und codieren und die codierten Kacheln an die Vorrichtung übertragen, wenn sie bereit sind.
  • In einigen Ausführungsformen kann das Videocodiersystem ein Codieren auf Kachelbasis unter Verwendung eines einzelnen Codierers durchführen, um Kacheln aus jeder Scheibe zu verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem jedoch ein Codieren auf Kachelbasis unter Verwendung mehrerer Codierer durchführen, um jeweilige Kacheln aus jeder Scheibe zu verarbeiten. Zum Beispiel kann in einigen Ausführungsformen jede Scheibe in vier Kacheln unterteilt sein, wobei jede Kachel mehrere 128×128-Blöcke einschließt, und zwei Codierer (e0 und el) können auf zwei Kacheln aus jeder Scheibe arbeiten (z. B. arbeitet e0 auf t0 und t1; el arbeitet auf t2 und t3). Jeder Codierer kann das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern zwischen seinen zwei Kacheln multiplexen, um 16 Zeiteinheiten zwischen dem Verarbeiten von Blöcken aus demselben Frequenzband zu ermöglichen. Durch Multiplexen des Verarbeitens von Blöcken zwischen zwei Kacheln können Abhängigkeiten zwischen Blöcken in einem Frequenzband auf geeignete Weise gehandhabt werden. Während Ausführungsformen beschrieben werden, in denen jede Scheibe in vier Kacheln unterteilt ist und zwei Codierer auf jeweiligen Kacheln aus jeder Scheibe arbeiten, können in einigen Ausführungsformen Scheiben in mehrere Kacheln (z. B. sechs oder acht Kacheln) unterteilt werden, und in einigen Ausführungsformen können mehrere Codierer (z. B. drei oder vier Codierer) verwendet werden.
  • In einigen Ausführungsformen kann das Videocodiersystem ein Vorfiltern der Pixeldaten in Bildern vor der Wavelet-Transformation durchführen. Ein Vorfiltern kann zum Beispiel die Auflösung der Bilder reduzieren, die vor dem Durchführen der Wavelet-Transformation, dem Codieren und der Übertragung der Bilder an die Vorrichtung über die drahtlose Verbindung durch die Basisstation gerendert werden, was zur Verbesserung der Komprimierung beitragen kann und die Latenzzeit und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren kann.
  • In einigen Ausführungsformen, in denen die Vorrichtung eine HMD ist, kann das Vorfiltern ein Durchführen einer Linsenverzerrung an den Bildern auf der Basisstation vor der Wavelet-Transformation einschließen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der HMD, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die HMD Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation über die drahtlose Verbindung bereitstellen. Die Basisstation kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese HMD an den Bildern durchführen. Bei herkömmlichen VR-/MR-Systemen wird die Linsenverzerrung nach dem Decodieren und vor der Anzeige an der HMD durchgeführt. Das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation und dem Codieren reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe anstatt an der HMD nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation, um die Auflösung vor dem Codieren zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der HMD möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
  • In einigen Ausführungsformen kann das Vorfiltern ein Filtern einschließen, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In diesem Verfahren können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Menschliche Augen können im fovealen Bereich eine höhere Auflösung wahrnehmen als im peripheren Bereich. Somit kann ein Bereich des Bilds, welcher der Fovea entspricht, (als der foveale Bereich bezeichnet) mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. In einigen Ausführungsformen kann der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. In einigen Ausführungsformen kann das Filtermaß, das auf den peripheren Bereich angewendet wird, in Richtung des Bildumfangs zunehmen. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
  • 1 ist ein Blockdiagramm, das ein Videocodiersystem 120, das Pixeldaten vor dem Codieren unter Verwendung einer Wavelet-Transformation in Frequenzbänder zerlegt, gemäß mindestens einigen Ausführungsformen veranschaulicht. Ein VR-/MR-System 10 kann mindestens eine Vorrichtung 150 (z. B. eine Pad- oder Tablet-Vorrichtung, ein Smartphone oder eine HMD, wie ein Headset, einen Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können) und eine Rechenvorrichtung 100 (hierin als Basisstation bezeichnet) einschließen. Die Basisstation 100 rendert VR- oder MR-Bilder, einschließlich virtueller Inhalte, codiert die Bilder und überträgt die codierten Bilder über eine drahtlose Verbindung 180 an die Vorrichtung 150 zum Decodieren und zur Anzeige durch die Vorrichtung 150.
  • In einigen Ausführungsformen kann die Vorrichtung 150 Sensoren 160 einschließen, die Informationen über die Umgebung des Benutzers 190 (z. B. Video, Tiefeninformationen, Beleuchtungsinformationen usw.) und über den Benutzer 190 (z. B. die Mienen, Augenbewegung, Blickrichtung, Handgesten usw. des Benutzers) sammeln. Die Vorrichtung 150 kann mindestens einige der durch die Sensoren 160 gesammelten Informationen über die drahtlose Verbindung 180 an die Basisstation 100 übertragen. Die Basisstation 100 kann Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Informationen, die von den Sensoren 160 erhalten werden, zur Anzeige durch die Vorrichtung 150 rendern, die Bilder codieren und die codierten Bilder zum Decodieren und zur Anzeige für den Benutzer über die drahtlose Verbindung 180 an die Vorrichtung 150 übertragen.
  • Die Basisstation 100 und die Vorrichtung 150 können eine Drahtloskommunikationstechnologie implementieren, die es der Basisstation 100 und der Vorrichtung 150 ermöglicht, über eine drahtlose Verbindung 180 zu kommunizieren und Daten auszutauschen. In einigen Ausführungsformen kann die drahtlose Verbindung 180 gemäß einer proprietären Drahtloskommunikationstechnologie implementiert werden, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 150 und der Basisstation 100 bereitstellt. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
  • Primäre Einschränkungen, die bei der drahtlosen Verbindung 180 zwischen der Vorrichtung 150 und der Basisstation 100 in einem VR-/MR-System 10 zu berücksichtigen sind, schließen Bandbreite und Latenz ein. Zum Beispiel besteht in einigen Ausführungsformen ein Ziel darin, dem Benutzer eine hochauflösende virtuelle Anzeige mit breitem Sichtfeld (FOV) mit einer Bildrate bereitzustellen, die dem Benutzer eine qualitativ hochwertige VR-/MR-Ansicht bereitstellt. Ein weiteres Ziel besteht darin, die Latenz zwischen der Zeit, zu der ein Videobild durch die Vorrichtung erfasst wird, und der Zeit, zu der ein gerendertes VR-/MR-Bild basierend auf dem Videobild durch die Vorrichtung angezeigt wird, zu minimieren.
  • Die Basisstation 100 kann verschiedene Hardwarekomponenten zum Rendern, Filtern, Codieren und Übertragen von Video und/oder Bildern, wie hierin beschrieben, einschließen, zum Beispiel verschiedene Typen von Prozessoren, integrierten Schaltungen (ICs), zentralen Verarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs), Bildsignalprozessoren (ISPs), Codierern/Decodierern (Codecs) usw. Die Basisstation 100 kann, ohne darauf beschränkt zu sein, eine Komponente zum GPU-Rendern 110, eine Komponente für eine drahtlose Schnittstelle 130 und ein Videocodiersystem 120, das eine oder mehrere Hardwarekomponenten einschließen kann, die verschiedene Verfahren implementieren, die dazu beitragen können, die Zielbildrate durch die drahtlose Verbindung 180 beizubehalten und die Latenz beim Rendern, beim Codieren, bei der Übertragung und bei der Anzeige zu minimieren, einschließen. Das Videocodiersystem 120 kann, ohne darauf beschränkt zu sein, eine Komponente zum Vorfiltern 122 (z. B. eine N-Kanal-Filterbank), eine Komponente zur Wavelet-Transformation 124 und eine Komponente für einen Codierer 126 einschließen.
  • Das GPU-Rendern 110 kann eine oder mehrere Hardwarekomponenten einschließen, die Bilder zur Anzeige durch die Vorrichtung 150, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Informationen, die von den Sensoren 160 erhalten werden, rendern können.
  • In einigen Ausführungsformen kann das Videocodiersystem 120 eine oder mehrere Hardwarekomponenten einschließen, welche die Pixeldaten in den gerenderten Bildern vor dem Durchführen einer Wavelet-Transformation 124 vorfiltern 122. Das Vorfiltern 122 kann zum Beispiel die Auflösung der Bilder reduzieren, die vor dem Durchführen der Wavelet-Transformation 124, dem Codieren 126 und der Übertragung an die Vorrichtung 150 über die drahtlose Verbindung 180 an der Basisstation 100 gerendert werden, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung an der drahtlosen Verbindung 180 reduzieren.
  • In einigen Ausführungsformen kann das Vorfiltern 122 vor der Wavelet-Transformation 124 eine Linsenverzerrung an den Bildern auf der Basisstation 100 durchführen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der Vorrichtung, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die Vorrichtung 150 Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation 100 über die drahtlose Verbindung 180 bereitstellen. Die Komponente zum Vorfiltern 122 des Videocodiersystems 120 kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese Vorrichtung 150 an den Bildern durchführen. In herkömmlichen VR-/MR-Systemen wird die Linsenverzerrung nach dem Decodieren und vor der Anzeige an der Vorrichtung 150 durchgeführt. Das Durchführen der Linsenverzerrung an der Basisstation 100 in der Stufe des Vorfilterns 122 kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation 124 und dem Codieren 126 reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung 180 reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation 100 in der Stufe des Vorfilterns 122 anstatt an der Vorrichtung 150 nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation 100, um die Auflösung vor dem Codieren 126 zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der Vorrichtung 150 möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
  • In einigen Ausführungsformen kann das Vorfiltern 122 auch einen oder mehrere Filter anwenden, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In diesem Verfahren können Blickverfolgungsinformationen, die von der Vorrichtung 150 erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Menschliche Augen können im fovealen Bereich eine höhere Auflösung wahrnehmen als im peripheren Bereich. Somit kann ein Bereich des Bilds, welcher der Fovea entspricht, (als der foveale Bereich bezeichnet) mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. In einigen Ausführungsformen kann der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. In einigen Ausführungsformen kann das Filtermaß, das auf den peripheren Bereich angewendet wird, in Richtung des Bildumfangs zunehmen. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
  • In einigen Ausführungsformen kann eine Komponente zur Wavelet-Transformation 124 des Videocodiersystems 120 eine oder mehrere Hardwarekomponenten (z. B. eine N-Kanal-Filterbank) einschließen, die vor dem Codieren eine Wavelet-Transformation an den Pixeldaten durchführen, um die Pixeldaten in Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer 126 zur Codierung/Komprimierung bereitgestellt werden. Als ein Beispiel, wie in 3A bis 3C veranschaulicht, kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, die dann an einen Codierer (z. B. einen High Efficiency Video Coding-Codierer (HEVC-Codierer)) 126 gesendet werden können, um codiert zu werden. Die codierten Frequenzdaten werden dann an eine drahtlose Schnittstelle 130 gesendet, die durch eine oder mehrere Hardwarekomponenten implementiert ist und welche die Daten paketiert und die Pakete über eine drahtlose Verbindung 180 an die Vorrichtung 150 überträgt. Die Vorrichtung 150 kann verschiedene Hardwarekomponenten zum Decodieren und Anzeigen von Video und/oder Bildern, wie hierin beschrieben, einschließen, zum Beispiel verschiedene Typen von Prozessoren, integrierten Schaltungen (ICs), zentralen Verarbeitungseinheiten (CPUs), Grafikverarbeitungseinheiten (GPUs), Bildsignalprozessoren (ISPs), Codierern/Decodierern (Codecs) usw. Die Vorrichtung 150 kann, ohne darauf beschränkt zu sein, eine drahtlose Schnittstelle 152, eine Komponente für einen Decodierer 154 (z. B. einen High Efficiency Video Coding-Decodierer (HEVC-Decodierer)), eine Komponente zur Wavelet-Synthese 156 und eine Komponente für eine Anzeige 158 einschließen. An der Vorrichtung 150 empfängt die drahtlose Schnittstelle 152 die Pakete, die durch die Basisstation 100 über die drahtlose Verbindung 180 übertragen wurden. Die codierten Daten werden entpackt und durch einen blockbasierten Decodierer 154 (z. B. einen High Efficiency Video Coding-Decodierer (HEVC-Decodierer)) geleitet, um die Frequenzbänder wiederherzustellen. Die Wavelet-Synthese 156 wird dann an den wiederhergestellten Frequenzdaten durchgeführt, um die Pixeldaten zur Anzeige 158 zu rekonstruieren.
  • In einigen Ausführungsformen kann das Videocodiersystem 120 ein Rendern, ein Codieren und eine Übertragung auf Scheibenbasis durchführen. Das Rendern, Codieren und Übertragen ganzer Bilder kann eine Latenz- und Speicherauswirkung haben, weil jedes Bild abgeschlossen, gespeichert und dann an die nächste Stufe des VR-/MR-Systems 10 übertragen werden muss. Beim Rendern auf Scheibenbasis kann die Basisstation 100, anstatt ganze Bilder in der Basisstation 100 zu rendern und zu codieren und die gerenderten Bilder an die Vorrichtung 150 zu übertragen, Teile von Bildern (als Scheiben bezeichnet) rendern und codieren und die codierten Scheiben an die Vorrichtung 150 übertragen, wenn sie bereit sind. Eine Scheibe kann zum Beispiel eine Zeile von 128x128-Blöcken sein. Rendern und Codieren auf Scheibenbasis kann dazu beitragen, die Latenz zu reduzieren, und kann auch die Menge an Speicher reduzieren, die zum Puffern benötigt wird, was den Speicherbedarf auf dem/den Chip(s) oder dem/den Prozessor(en) sowie Leistungsanforderungen reduziert.
  • In einigen Ausführungsformen kann das Videocodiersystem 120 ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis durchführen. Beim Rendern, Codieren und Übertragen auf Kachelbasis kann jede Scheibe in mehrere Kacheln (z. B. vier Kacheln) unterteilt werden, und die Basisstation 100 kann die Kacheln rendern und codieren und die codierten Kacheln an die Vorrichtung 150 übertragen, wenn sie bereit sind.
  • In einigen Ausführungsformen kann das Videocodiersystem 120 ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis unter Verwendung eines einzelnen Codierers 126 durchführen, um Kacheln aus jeder Scheibe zu verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem 120 jedoch ein Codieren auf Kachelbasis unter Verwendung mehrerer Codierer 126 durchführen, um jeweilige Kacheln aus jeder Scheibe zu verarbeiten. 2 veranschaulicht ein Videocodiersystem 220, das mehrere Codierer (in diesem Beispiel zwei Codierer 226A und 226B) einschließt, die Kacheln aus gerenderten Bildern parallel verarbeiten, gemäß mindestens einigen Ausführungsformen.
  • Eine Komponente zum GPU-Rendern 210 der Basisstation 200 kann eine oder mehrere GPUs und/oder andere Komponenten einschließen, die Bilder (oder Scheiben von Bildern) zur Anzeige rendern. Ein Bild kann in Abschnitte unterteilt sein, wie zum Beispiel in 3A veranschaulicht. Wie in 3A veranschaulicht, kann jede Scheibe in mehrere Kacheln (in diesem Beispiel vier) unterteilt sein, wobei jede Kachel mehrere Blöcke einschließt. 3B veranschaulicht eine beispielhafte Kachel, die vier 128x128-Blöcke einschließt. Blöcke anderer Größen (z. B. 64x64, 32x32 usw.) können jedoch in einigen Ausführungsformen verwendet werden, und eine Kachel kann mehr oder weniger Blöcke einschließen.
  • Komponenten zum Vorfiltern 222 und zur Wavelet-Transformation 224 des Videocodiersystems 220 können dann jede Kachel vor dem Codieren 226 verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem 220 eine separate Komponente zum Vorfiltern 222 und Komponente zur Wavelet-Transformation 224 zum Verarbeiten jeder Kachel einschließen. In diesem Beispiel verarbeiten die Komponente zum Vorfiltern 222A und die Komponente zur Wavelet-Transformation 224A eine Kachel 0, verarbeiten die Komponente zum Vorfiltern 222B und die Komponente zur Wavelet-Transformation 224B eine Kachel 1, verarbeiten die Komponente zum Vorfiltern 222C und die Komponente zur Wavelet-Transformation 224C eine Kachel 2 und verarbeiten die Komponente zum Vorfiltern 222D und die Komponente zur Wavelet-Transformation 224D eine Kachel 3. Die Komponenten zum Vorfiltern 222 führen ein Vorfiltern der Kacheln, wie hierin beschrieben, durch, und die Komponenten zur Wavelet-Transformation 224 zerlegen die Kacheln in Frequenzbänder, wie hierin beschrieben. In einigen Ausführungsformen kann das Videocodiersystem 220 jedoch eine einzelne Komponente zum Vorfiltern 222 und eine einzelne Komponente zur Wavelet-Transformation 224 einschließen, welche die Kacheln verarbeiten. In einigen Ausführungsformen kann das Videocodiersystem 220 mehrere (z. B. 2) Komponenten zum Vorfiltern 222 und mehrere (z. B. 2) Komponenten zur Wavelet-Transformation 224 einschließen, die jeweils mehrere (z. B. 2) Kacheln verarbeiten.
  • Zwei Codierer 226A und 226B können auf zwei Kacheln aus jeder Scheibe arbeiten (z. B. arbeitet der Codierer 226A auf Kachel 0 und Kachel 1; der Codierer 226B arbeitet auf Kachel 2 und Kachel 3). Jeder Codierer 226 kann das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern (d. h. die 16 32x32-Blöcke, die in 3C veranschaulicht sind) zwischen seinen zwei Kacheln multiplexen, um 16 Zeiteinheiten zwischen dem Verarbeiten von Blöcken aus demselben Frequenzband zu ermöglichen. Durch Multiplexen des Verarbeitens von Blöcken zwischen zwei Kacheln können Abhängigkeiten zwischen Blöcken im selben Frequenzband auf geeignete Weise behandelt werden.
  • Während Ausführungsformen beschrieben werden, in denen jede Scheibe in vier Kacheln unterteilt ist und zwei Codierer auf jeweiligen Kacheln aus jeder Scheibe arbeiten, können in einigen Ausführungsformen Scheiben in mehrere Kacheln (z. B. sechs oder acht Kacheln) unterteilt werden, und in einigen Ausführungsformen können mehrere Codierer (z. B. drei, vier oder mehr Codierer) verwendet werden.
  • 3C veranschaulicht das Durchführen einer Wavelet-Transformation eines Pixelblocks, der Pixeldaten speichert, um Frequenzbanddaten vor dem Codieren zu erzeugen, gemäß mindestens einigen Ausführungsformen. In diesem Beispiel wird eine zweistufige Wavelet-Zerlegung durch die Komponente zur Wavelet-Transformation 324 auf einen 128×128-Pixelblock 300 angewendet, um sechzehn 32x32-Blöcke 302 von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen. Die Frequenzblöcke 302 werden dann einem Codierer 326 zum Codieren bereitgestellt. Zum Beispiel können die Frequenzblöcke 302 durch die Komponente zur Wavelet-Transformation 324 in einen Puffer geschrieben und durch die Komponente für einen Codierer 326 aus dem Puffer gelesen werden.
  • In den Bezeichnungen der Frequenzblöcke 302 steht der Buchstabe L für ein Tiefpassfilter und steht der Buchstabe H für ein Hochpassfilter. Die mit zwei Buchstaben bezeichneten Blöcke 302 stellen eine einstufige (2D-) Wavelet-Transformation oder Zerlegung dar. In den Blöcken 302, die mit zwei Buchstaben bezeichnet sind (die drei der sieben Frequenzbänder LH, HL und HH darstellen), steht der erste Buchstabe für ein vertikales Filtern (entweder hoch oder tief), das als Erstes durchgeführt wird, und steht der zweite Buchstabe für ein horizontales Filtern (entweder hoch oder tief), das als Zweites durchgeführt wird. Die mit vier Buchstaben bezeichneten Blöcke 302 stellen eine zweistufige Wavelet-Transformation oder Zerlegung dar. In den Blöcken 302, die mit vier Buchstaben bezeichnet sind, geben die ersten zwei Buchstaben (LL) an, dass als Erstes ein vertikales Tiefpassfilter gefolgt von einem horizontalen Tiefpassfilter vorhanden war; die zweiten zwei Buchstaben geben an, dass der resultierende LL-Block dann auf vier Weisen, LL, LH, HL und HH, gefiltert wurde (wodurch vier der sieben Frequenzbänder (LLLL, LLLH, LLHL und LLHH) erzeugt wurden.
  • Durch Zerlegen der Pixeldaten in Frequenzbänder, wie in 3C veranschaulicht, können die Frequenzbänder gepuffert und als separate Ströme durch den Codierer 326 verarbeitet werden. Durch das Verarbeiten der Frequenzbänder als separate Ströme kann die Komponente für einen Codierer 326 das Verarbeiten der unabhängigen Ströme multiplexen. In Verfahren zum blockbasierten Codieren, wie einem HEVC-Codieren, werden Blöcke (als Codierbaumeinheiten (CTUs) bezeichnet) in mehreren Stufen in einer Blockverarbeitungs-Pipeline verarbeitet; zwei oder mehr Blöcke können sich in einem gegebenen Taktzyklus auf unterschiedlichen Stufen der Pipeline befinden, und die Blöcke bewegen sich als die Taktzyklen durch die Pipeline. Das Verarbeiten eines gegebenen Blocks kann Abhängigkeiten von einem oder mehreren zuvor verarbeiteten Nachbarblöcken aufweisen, zum Beispiel einem oder mehreren Blöcken in der Zeile über dem gegebenen Block und/oder dem Block links von dem gegebenen Block. Durch Multiplexen des Verarbeitens der Ströme von Frequenzbanddaten verteilt der Codierer 326 das Verarbeiten der Blöcke in einem gegebenen Strom in Abständen, wodurch zusätzliche Taktzyklen bereitgestellt werden, um einen Nachbarblock zu verarbeiten, von dem ein gegebener Block Abhängigkeiten aufweist. Zum Beispiel kann der Block links von dem gegebenen Block mehrere Stufen vor dem gegebenen Block in der Pipeline sein, wenn der gegebene Block eine Stufe erreicht, die von dem zuvor verarbeiteten Nachbarblock abhängt. Dies ermöglicht es dem Codierer 326, Abhängigkeiten von zuvor verarbeiteten Blöcken besser zu handhaben, und reduziert oder beseitigt die Notwendigkeit, auf den Abschluss des Verarbeitens eines Nachbarblocks in der Pipeline zu warten, bevor der gegebene Block in einer Stufe verarbeitet wird, die von dem Nachbarblock abhängt.
  • Außerdem ermöglicht das Zerlegen der Pixeldaten in Frequenzbänder, wie in 3C veranschaulicht, eine Priorisierung der Frequenzbänder durch den Codierer 326 und die drahtlose Schnittstelle. Üblicherweise sind bei der Bild- und Videoübertragung die niedrigeren Frequenzen wichtiger, während die höheren Frequenzen weniger wichtig sind. Höhere Frequenzen entsprechen üblicherweise Details im Bild und können somit als niedrigere Priorität angesehen werden. Die höheren Frequenzbänder enthalten einen geringeren Prozentsatz der Energie im Bild. Der größte Teil der Energie ist in den niedrigeren Frequenzbändern enthalten. Das Zerlegen der Pixeldaten in Frequenzbänder stellt somit eine Prioritätsreihenfolge für den Datenstrom bereit, die durch den Codierer 326 und die drahtlose Schnittstelle beim Codieren und Übertragen des Datenstroms genutzt werden kann. Zum Beispiel können in einigen Ausführungsformen unterschiedliche Komprimierungstechniken auf den unterschiedlichen Frequenzbändern verwendet werden, wobei eine aggressivere Komprimierung auf die Bänder mit niedrigerer Priorität angewendet wird und eine konservativere Komprimierung auf die Bänder mit höherer Priorität angewendet wird. Als weiteres Beispiel kann die Prioritätsreihenfolge der Frequenzbänder dazu beitragen, eine schrittweise Leistungsminderung des VR-/MR-Systems bereitzustellen. Die Leistung der drahtlosen Verbindung kann überwacht werden, und Rückmeldungen von der Vorrichtung können berücksichtigt werden, um die Leistung des Gesamtsystems zu verfolgen. Wenn das System aus irgendeinem Grund zurückfällt, zum Beispiel, wenn sich die drahtlose Verbindung verschlechtert und die Bandbreitenkapazität der drahtlosen Verbindung unter einen Schwellenwert fällt, können der Codierer 326 und die drahtlose Schnittstelle das Codieren und die Übertragung eines oder mehrerer der niedrigeren Frequenzbänder priorisieren, und können das Codieren und/oder die Übertragung einer oder mehrerer der Frequenzstufen, denen eine niedrigere Prioritätsstufe zugewiesen wurde, zum Beispiel eines oder mehrerer der höheren Frequenzbänder, reduzieren oder verwerfen.
  • Wie oben beschrieben, zerlegt die Wavelet-Transformation ein Bild in Frequenzbänder. In einigen Ausführungsformen kann dies genutzt werden, um dasselbe Signal an Anzeigen variierender Auflösung zu senden. Als Beispiel sei angenommen, dass eine zweistufige Wavelet-Zerlegung angewendet wird, um das Signal in sieben Bänder zu zerlegen. Wenn vier der Bänder gesendet werden (LLLL, LLLH, LLHL und LLHH), können die Bänder mit geringerer visueller Qualität auf die ursprüngliche beabsichtigte Auflösung rekonstruiert werden. Alternativ können die Bänder auch mit 1/4 der Auflösung (1/2 in jeder Dimension) rekonstruiert werden, was für ein Anzeigefeld mit niedrigerer Anzeigeauflösung geeignet sein kann.
  • 4 ist ein übersichtartiges Flussdiagramm eines Betriebsverfahrens für VR-/MR-Systeme, die Videocodiersysteme, wie in 1 und 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen einschließen. Wie bei 400 angegeben, sendet die Vorrichtung Daten über die drahtlose Verbindung an die Basisstation. Wie bei 410 angegeben, rendert die Basisstation Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den Vorrichtungsdaten. Wie bei 420 angegeben, komprimiert die Basisstation die gerenderten Daten und sendet die komprimierten Daten über die drahtlose Verbindung an die Vorrichtung. Wie bei 430 angegeben, dekomprimiert die Vorrichtung die virtuellen Inhalte und zeigt diese an, um eine virtuelle 3D-Ansicht zum Anzeigen durch den Benutzer zu erzeugen. Wie durch den Pfeil angegeben, der von 430 zu 400 zurückkehrt, fährt das Verfahren fort, solange der Benutzer das VR-/MR-System verwendet.
  • In einigen Ausführungsformen kann die Basisstation, anstatt ganze Bilder in der Basisstation zu rendern und zu codieren und die gerenderten Bilder an die Vorrichtung zu übertragen, Teile von Bildern (als Scheiben bezeichnet) rendern und codieren und die codierten Scheiben an die Vorrichtung übertragen, wenn sie bereit sind. Eine Scheibe kann zum Beispiel eine Zeile von 128x128-Blöcken sein. In einigen Ausführungsformen kann das Videocodiersystem ein Rendern, ein Codieren und eine Übertragung auf Kachelbasis durchführen. Beim Rendern, Codieren und Übertragen auf Kachelbasis kann jede Scheibe in mehrere Kacheln, die jeweils einen oder mehrere Blöcke einschließen (z. B. vier Kacheln, jeweils einschließlich vier Blöcken), unterteilt werden, und die Basisstation kann die Kacheln rendern und codieren und die codierten Kacheln an die Vorrichtung übertragen, wenn sie bereit sind.
  • 5 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in 1 veranschaulicht, gemäß mindestens einigen Ausführungsformen. Das Verfahren von 5 kann zum Beispiel bei 420 von 4 durchgeführt werden. Das Verfahren von 5 geht davon aus, dass eine Codierung und Übertragung auf Scheibenbasis durchgeführt wird. In einigen Ausführungsformen kann jedoch eine Codierung und Übertragung auf Kachelbasis durchgeführt werden.
  • Wie bei 510 angegeben, wendet die Vorfilterkomponente Linsenverzerrungs- und/oder Foveationsfilter auf Pixelblöcke in einer Scheibe des Bilds an. In einigen Ausführungsformen kann das Vorfiltern ein Durchführen einer Linsenverzerrung an den Bildern auf der Basisstation vor der Wavelet-Transformation einschließen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der Vorrichtung, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die Vorrichtung Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation über die drahtlose Verbindung bereitstellen. Die Basisstation kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese Vorrichtung an den Bildern durchführen. Das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation und dem Codieren reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe anstatt an der Vorrichtung nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation, um die Auflösung vor dem Codieren zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der Vorrichtung möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
  • In einigen Ausführungsformen kann das Vorfiltern bei 510 auch ein Filtern einschließen, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In einigen Ausführungsformen können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
  • Wie bei 520 angegeben, wendet die Wavelet-Transformations-Komponente eine Wavelet-Transformations-Technik auf die Pixelblöcke an, um die Pixeldaten in N (z. B. 7) Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden. Als ein Beispiel kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, zum Beispiel wie in 3C veranschaulicht.
  • Wie bei 530 angegeben, wendet der Codierer eine Codiertechnik auf die Frequenzbänder in den Blöcken an, um die Daten zu komprimieren. Der Codierer kann zum Beispiel ein High Efficiency Video Coding-Codierer (HEVC-Codierer) sein. In einigen Ausführungsformen können jedoch auch andere Codiertechniken verwendet werden. Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 520 angegeben, können die Frequenzbänder gepuffert und als separate Ströme durch den Codierer verarbeitet werden. Durch das Verarbeiten der Frequenzbänder als separate Ströme kann die Codiererkomponente das Verarbeiten der unabhängigen Ströme multiplexen. In Verfahren zum blockbasierten Codieren, wie einem HEVC-Codieren, werden Blöcke (als Codierbaumeinheiten (CTUs) bezeichnet) in mehreren Stufen in einer Pipeline verarbeitet; zwei oder mehr Blöcke können sich in einem gegebenen Taktzyklus auf unterschiedlichen Stufen der Pipeline befinden, und die Blöcke bewegen sich als die Taktzyklen durch die Pipeline. Das Verarbeiten eines gegebenen Blocks kann Abhängigkeiten von einem oder mehreren zuvor verarbeiteten Nachbarblöcken aufweisen, zum Beispiel einem oder mehreren Blöcken in der Zeile über dem gegebenen Block und/oder dem Block links von dem gegebenen Block. Durch Multiplexen des Verarbeitens der Ströme verteilt der Codierer das Verarbeiten der Blöcke in einem gegebenen Strom in Abständen, wodurch zusätzliche Taktzyklen bereitgestellt werden, um einen Nachbarblock zu verarbeiten, von dem ein gegebener Block Abhängigkeiten aufweist. Zum Beispiel kann der Block links von dem gegebenen Block mehrere Stufen vor dem gegebenen Block in der Pipeline sein, wenn der gegebene Block eine Stufe erreicht, die von dem zuvor verarbeiteten Nachbarblock abhängt. Dies ermöglicht es dem Codierer, Abhängigkeiten von zuvor verarbeiteten Blöcken besser zu handhaben, und reduziert oder beseitigt die Notwendigkeit, auf den Abschluss des Verarbeitens eines Nachbarblocks in der Pipeline zu warten, bevor der gegebene Block in einer Stufe verarbeitet wird, die von dem Nachbarblock abhängt.
  • Wie bei 540 angegeben, paketiert die drahtlose Schnittstelle die komprimierten Daten und sendet die Pakete über die drahtlose Verbindung an die Vorrichtung.
  • Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 520 angegeben, können die Frequenzbänder durch den Codierer bei Element 530 und die drahtlose Schnittstelle bei Element 540 priorisiert werden. Üblicherweise sind bei der Bild- und Videoübertragung die niedrigeren Frequenzen wichtiger, während die höheren Frequenzen weniger wichtig sind. Höhere Frequenzen entsprechen üblicherweise Details im Bild und können somit als niedrigere Priorität angesehen werden. Die höheren Frequenzbänder enthalten einen geringeren Prozentsatz der Energie im Bild. Der größte Teil der Energie ist in den niedrigeren Frequenzbändern enthalten. Das Zerlegen der Pixeldaten in Frequenzbänder stellt somit eine Prioritätsreihenfolge für den Datenstrom bereit, die durch den Codierer und die drahtlose Schnittstelle beim Codieren und Übertragen des Datenstroms genutzt werden kann. Zum Beispiel können in einigen Ausführungsformen unterschiedliche Komprimierungstechniken auf den unterschiedlichen Frequenzbändern verwendet werden, wobei eine aggressivere Komprimierung auf die Bänder mit niedrigerer Priorität angewendet wird und eine konservativere Komprimierung auf die Bänder mit höherer Priorität angewendet wird. Als weiteres Beispiel kann die Prioritätsreihenfolge der Frequenzbänder dazu beitragen, eine schrittweise Leistungsminderung des VR-/MR-Systems bereitzustellen. Die Leistung der drahtlosen Verbindung kann überwacht werden, und Rückmeldungen von der Vorrichtung können berücksichtigt werden, um die Leistung des Gesamtsystems zu verfolgen. Wenn das System aus irgendeinem Grund zurückfällt, zum Beispiel, wenn sich die drahtlose Verbindung verschlechtert und die Bandbreitenkapazität der drahtlosen Verbindung unter einen Schwellenwert fällt, können der Codierer und die drahtlose Schnittstelle das Codieren und die Übertragung eines oder mehrerer der niedrigeren Frequenzbänder priorisieren, und können das Codieren und/oder die Übertragung einer oder mehrerer der Frequenzstufen, denen eine niedrigere Prioritätsstufe zugewiesen wurde, zum Beispiel eines oder mehrerer der höheren Frequenzbänder, reduzieren oder verwerfen.
  • Wenn mehr Scheiben vorhanden sind, die codiert und übertragen werden sollen, kehrt das Verfahren bei 550 zu Element 510 zurück, um die nächste Scheibe zu verarbeiten. Ansonsten, wenn mehr Bilder vorhanden sind, die codiert und übertragen werden sollen, kehrt das Verfahren bei 560 zu Element 510 zurück, um mit dem Verarbeiten des nächsten Bilds zu beginnen.
  • 6 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in 2 veranschaulicht, gemäß mindestens einigen Ausführungsformen. Das Verfahren von 6 kann zum Beispiel bei 420 von 4 durchgeführt werden. In dem Verfahren von 6 kann das Videocodiersystem ein Codieren auf Kachelbasis unter Verwendung mehrerer Codierer durchführen, um jeweilige Kacheln aus jeder Scheibe zu verarbeiten.
  • Wie bei 600 angegeben, rendert eine Rendering-Engine eine Scheibe, die mehrere Kacheln (in diesem Beispiel vier Kacheln) einschließt, wobei jede Kachel mehrere Pixelblöcke (in diesem Beispiel vier 128×128-Pixelblöcke) einschließt.
  • Wie bei 610 angegeben, wendet die Vorfilterkomponente Linsenverzerrungs- und/oder Foveationsfilter auf die Scheibe an. In einigen Ausführungsformen kann das Vorfiltern ein Durchführen einer Linsenverzerrung an den Bildern auf der Basisstation vor der Wavelet-Transformation einschließen. Die Linsenverzerrung wird durchgeführt, um die Verzerrung der Bilder zu korrigieren, die durch die Linsen an der Vorrichtung, durch welche die Bilder betrachtet werden, eingeführt wird, wodurch die Qualität der Bilder verbessert wird. In einigen Ausführungsformen kann die Vorrichtung Linsenverzerrungsdaten für die Linsen, die zum Beispiel durch einen Kalibrierungsprozess erzeugt werden, speichern und kann die Linsenverzerrungsdaten der Basisstation über die drahtlose Verbindung bereitstellen. Die Basisstation kann dann die Linsenverzerrung basierend auf den Linsenverzerrungsdaten für diese Vorrichtung an den Bildern durchführen. Das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe kann die Auflösung der Bilder vor dem Durchführen der Wavelet-Transformation und dem Codieren reduzieren, was zur Verbesserung der Komprimierung beitragen kann, und kann die Latenz und Bandbreitennutzung auf der drahtlosen Verbindung reduzieren. Außerdem muss durch das Durchführen der Linsenverzerrung an der Basisstation in der Vorfilterstufe anstatt an der Vorrichtung nach dem Decodieren im Gegensatz zu einem Durchführen eines Filterns an der Basisstation, um die Auflösung vor dem Codieren zu reduzieren, und einem anschließenden Durchführen eines Linsenverzerrungsfilterns an der Vorrichtung möglicherweise nur einmal ein Filtern der Bilddaten durchgeführt werden.
  • In einigen Ausführungsformen kann das Vorfiltern bei 610 auch ein Filtern einschließen, um die Auflösung in peripheren Bereichen zu reduzieren, während eine höhere Auflösung in fovealen Bereichen beibehalten wird. In einigen Ausführungsformen können Blickverfolgungsinformationen, die durch die Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung. Ein Vorfiltern des peripheren Bereichs kann dazu beitragen, eine verbesserte Komprimierung des Bilds bereitzustellen.
  • In einigen Ausführungsformen kann das Videocodiersystem eine einzelne Vorfilterkomponente einschließen, welche die Kacheln verarbeitet. In einigen Ausführungsformen kann das Videocodiersystem eine separate Vorfilterkomponente zum Verarbeiten jeder Kachel einschließen. In einigen Ausführungsformen kann das Videocodiersystem mehrere (z. B. 2) Vorfilterkomponenten einschließen, die jeweils mehrere (z. B. 2) Kacheln verarbeiten.
  • Wie bei 620 angegeben, wendet die Wavelet-Transformations-Komponente eine Wavelet-Transformations-Technik auf die Pixelblöcke in der Scheibe an, um die Pixeldaten in N (z. B. 7) Frequenzbänder zu zerlegen. Die Frequenzbänder werden dann in Blöcke (z. B. CTUs) organisiert, die einem blockbasierten Codierer zur Codierung/Komprimierung bereitgestellt werden können. Als ein Beispiel kann ein Bild in 128×128-Blöcke unterteilt werden, und eine zweistufige Wavelet-Zerlegung kann auf jeden 128x128-Block angewendet werden, um 16 32x32-Blöcke von Frequenzdaten zu erzeugen, die sieben Frequenzbänder darstellen, zum Beispiel wie in 3C veranschaulicht.
  • In einigen Ausführungsformen kann das Videocodiersystem eine einzelne Wavelet-Transformations-Komponente einschließen, die die Kacheln verarbeitet. In einigen Ausführungsformen kann das Videocodiersystem eine separate Wavelet-Transformations-Komponente zum Verarbeiten jeder Kachel einschließen. In einigen Ausführungsformen kann das Videocodiersystem mehrere (z. B. 2) Wavelet-Transformations-Komponenten einschließen, die jeweils mehrere (z. B. 2) Kacheln verarbeiten.
  • In dem Verfahren von 6 schließt ein beispielhaftes Videocodiersystem zwei Codierer ein, die dafür ausgelegt sind, die Blöcke von Frequenzdaten von unterschiedlichen der Scheiben zu codieren, die bei Element 620 parallel erzeugt werden. Zum Beispiel kann ein erster Codierer dafür ausgelegt sein, Blöcke aus den Scheiben 0 und 1 zu codieren, und ein zweiter Codierer kann dafür ausgelegt sein, Blöcke aus den Scheiben 2 und 3 zu codieren. Wie bei 630A angegeben, wendet der erste Codierer eine Codiertechnik auf die Frequenzbänder in den Blöcken der Kacheln 0 und 1 an, wobei das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern zwischen den zwei unterschiedlichen Kacheln gemultiplext wird. Wie bei 630B angegeben, wendet ein zweiter Codierer eine Codiertechnik auf die Frequenzbänder in den Blöcken der Kacheln 2 und 3 an, wobei das Verarbeiten von Blöcken aus unterschiedlichen Frequenzbändern zwischen den zwei unterschiedlichen Kacheln gemultiplext wird.
  • Die Codierer können zum Beispiel ein High Efficiency Video Coding-Codierer (HEVC-Codierer) sein. In einigen Ausführungsformen können jedoch auch andere Codiertechniken verwendet werden. Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 620 angegeben, können die Frequenzbänder gepuffert und als separate Ströme durch die Codierer bei den Elementen 630A und 630B verarbeitet werden. Durch das Verarbeiten der Frequenzbänder als separate Ströme können die Codierer das Verarbeiten der unabhängigen Ströme multiplexen. In Verfahren zum blockbasierten Codieren, wie einem HEVC-Codieren, werden Blöcke (als Codierbaumeinheiten (CTUs) bezeichnet) in mehreren Stufen in einer Pipeline verarbeitet; zwei oder mehr Blöcke können sich in einem gegebenen Taktzyklus auf unterschiedlichen Stufen der Pipeline befinden, und die Blöcke bewegen sich als die Taktzyklen durch die Pipeline. Das Verarbeiten eines gegebenen Blocks kann Abhängigkeiten von einem oder mehreren zuvor verarbeiteten Nachbarblöcken aufweisen, zum Beispiel einem oder mehreren Blöcken in der Zeile über dem gegebenen Block und/oder dem Block links von dem gegebenen Block. Durch Multiplexen des Verarbeitens der Ströme verteilt der Codierer das Verarbeiten der Blöcke in einem gegebenen Strom in Abständen, wodurch zusätzliche Taktzyklen bereitgestellt werden, um einen Nachbarblock zu verarbeiten, von dem ein gegebener Block Abhängigkeiten aufweist. Zum Beispiel kann der Block links von dem gegebenen Block mehrere Stufen vor dem gegebenen Block in der Pipeline sein, wenn der gegebene Block eine Stufe erreicht, die von dem zuvor verarbeiteten Nachbarblock abhängt. Dies ermöglicht es dem Codierer, Abhängigkeiten von zuvor verarbeiteten Blöcken besser zu handhaben, und reduziert oder beseitigt die Notwendigkeit, auf den Abschluss des Verarbeitens eines Nachbarblocks in der Pipeline zu warten, bevor der gegebene Block in einer Stufe verarbeitet wird, die von dem Nachbarblock abhängt.
  • Wie bei 640 angegeben, paketiert die drahtlose Schnittstelle die komprimierten Daten, die durch die Codierer bei Element 530 erzeugt werden, und sendet die Pakete über die drahtlose Verbindung an die Vorrichtung. Wie durch den Pfeil angegeben, der von 650 zu 600 zurückkehrt, wird das Verfahren fortgesetzt, solange der Benutzer das VR-/MR-System verwendet.
  • Durch Zerlegen der Pixeldaten in Frequenzbänder, wie bei Element 620 angegeben, können die Frequenzbänder durch die Codierer bei den Elementen 630A und 630B und die drahtlose Schnittstelle bei Element 640 priorisiert werden. Üblicherweise sind bei der Bild- und Videoübertragung die niedrigeren Frequenzen wichtiger, während die höheren Frequenzen weniger wichtig sind. Höhere Frequenzen entsprechen üblicherweise Details im Bild und können somit als niedrigere Priorität angesehen werden. Die höheren Frequenzbänder enthalten einen geringeren Prozentsatz der Energie im Bild. Der größte Teil der Energie ist in den niedrigeren Frequenzbändern enthalten. Das Zerlegen der Pixeldaten in Frequenzbänder stellt somit eine Prioritätsreihenfolge für den Datenstrom bereit, die durch den Codierer und die drahtlose Schnittstelle beim Codieren und Übertragen des Datenstroms genutzt werden kann. Zum Beispiel können in einigen Ausführungsformen unterschiedliche Komprimierungstechniken auf den unterschiedlichen Frequenzbändern verwendet werden, wobei eine aggressivere Komprimierung auf die Bänder mit niedrigerer Priorität angewendet wird und eine konservativere Komprimierung auf die Bänder mit höherer Priorität angewendet wird. Als weiteres Beispiel kann die Prioritätsreihenfolge der Frequenzbänder dazu beitragen, eine schrittweise Leistungsminderung des VR-/MR-Systems bereitzustellen. Die Leistung der drahtlosen Verbindung kann überwacht werden, und Rückmeldungen von der Vorrichtung können berücksichtigt werden, um die Leistung des Gesamtsystems zu verfolgen. Wenn das System aus irgendeinem Grund zurückfällt, zum Beispiel, wenn sich die drahtlose Verbindung verschlechtert und die Bandbreitenkapazität der drahtlosen Verbindung unter einen Schwellenwert fällt, können der Codierer und die drahtlose Schnittstelle das Codieren und die Übertragung eines oder mehrerer der niedrigeren Frequenzbänder priorisieren, und können das Codieren und/oder die Übertragung einer oder mehrerer der Frequenzstufen, denen eine niedrigere Prioritätsstufe zugewiesen wurde, zum Beispiel eines oder mehrerer der höheren Frequenzbänder, reduzieren oder verwerfen.
  • Während Ausführungsformen beschrieben werden, in denen jede Scheibe in vier Kacheln unterteilt ist und zwei Codierer auf jeweiligen Kacheln aus jeder Scheibe arbeiten, können in einigen Ausführungsformen Scheiben in mehrere Kacheln (z. B. sechs oder acht Kacheln) unterteilt werden, und in einigen Ausführungsformen können mehrere Codierer (z. B. drei oder vier Codierer) verwendet werden.
  • Ratensteuerung
  • Ein Codierer kann ein Ratensteuerungsverfahren oder einen Ratensteuerungsalgorithmus einsetzen, um Codiererparameter dynamisch anzupassen, um eine Zielbitrate zu erreichen. Ein Ratensteuerungsverfahren kann die Videobitrate basierend auf der verfügbaren Bandbreite der drahtlosen Verbindung schätzen. Die geschätzte Bitrate kann verwendet werden, um die Codiererparameter anzupassen, um sicherzustellen, dass der codierte Bitstrom erfolgreich übertragen werden kann, während die Nutzung der verfügbaren Bandbreite optimiert wird. Üblicherweise arbeiten Ratensteuerungsverfahren für Video-Streaming-Systeme über eine Zeitkonstante eines Bilds oder von zwei Bildern, um die Videobitrate zu schätzen und Codiererparameter entsprechend anzupassen.
  • Ein Ziel eines VR-/MR-Systems, das eine Ausführungsform des wie hierin beschriebenen Videocodiersystems implementiert, kann darin bestehen, eine sehr niedrige Latenz (z. B. 4-5 Millisekunden) zwischen dem Zeitpunkt, zu dem der virtuelle Inhalt an der Basisstation gerendert wird, und dem Zeitpunkt, zu dem der virtuelle Inhalt an der Vorrichtung angezeigt wird, bereitzustellen, während Fehler (z. B. verworfene Pakete) minimiert werden und die Bandbreitennutzung über die drahtlose Verbindung maximiert wird. Die angestrebte niedrige Latenz für das System ist eine Herausforderung für die Ratensteuerung in dem Codierer, wenn Daten codiert werden, die über die drahtlose Verbindung an die Vorrichtung übertragen werden sollen.
  • In einigen Ausführungsformen schließt das Videocodiersystem eine Wavelet-Transformations-Komponente ein, die eine 2-Schicht-Wavelet-Zerlegung durchführt, die Blöcke von Pixeln (z. B. 64x64- oder 128x128-Blöcke) aus einer Scheibe eines Bilds in mehrere (z. B. sieben) unterschiedliche Frequenzbänder zerlegt, gefolgt von einem blockbasierten Codierer, wie HEVC, der die Frequenzbänder codiert. In einigen Ausführungsformen kann eine Ratensteuerungskomponente, um eine Ratensteuerung unter den strengen Latenzanforderungen des VR-/MR-Systems durchzuführen, anstatt über eine Zeitkonstante eines Bilds oder von zwei Bildern zu arbeiten, um Codiererparameter anzupassen, Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder) für jede Scheibe einstellen. In einigen Ausführungsformen können die Frequenzbänder für eine Scheibe nach der Wavelet-Transformation im lokalen Speicher gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder vor dem Codieren berechnet werden können, zum Beispiel durch eine Komplexitätsanalysekomponente des Videocodiersystems. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komplexitätsstatistiken können dann durch eine Ratensteuerungskomponente beim Bestimmen von Quantisierungsparametern für die Frequenzbänder zum Modulieren der Rate in dem Codierer für die derzeitige Scheibe verwendet werden. Das Berechnen der Komplexitätsstatistiken auf den gepufferten Frequenzbändern ermöglicht es dem Videocodiersystem, das Maß an Komplexität in einer Scheibe vor dem Codieren der Scheibe zu schätzen.
  • In einigen Ausführungsformen kann die Ratensteuerungskomponente Statistiken für ein oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für eine derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
  • In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder gemeinsam berechnet werden, um die gesamte angezeigte Qualität der Bilder zu optimieren, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Betriebsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
  • In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
  • In einigen Ausführungsformen kann die Ratensteuerungskomponente Codiererparameter (z. B. Quantisierungsparameter für die Frequenzbänder oder Prioritätsstufen) auf der Blockebene anstatt auf der Scheibenebene anpassen. In einigen Ausführungsformen können Komplexitätsstatistiken für jeden Block einer Scheibe berechnet werden und können Quantisierungsparameter für die Blöcke bestimmt werden.
  • 7 ist ein Blockdiagramm, das ein Videocodiersystem, wie in 1 oder 2 veranschaulicht, in dem Komplexitätsstatistiken für die Frequenzbänder vor dem Codieren berechnet und beim Erzeugen von Quantisierungsparametern zum Codieren verwendet werden, gemäß mindestens einigen Ausführungsformen veranschaulicht.
  • In einigen Ausführungsformen werden gerenderte Scheiben eines Bilds, die Pixeldaten einschließen, zuerst durch eine Komponente zum Vorfiltern 1004, zum Beispiel eine N-Kanal-Filterbank, verarbeitet. In einigen Ausführungsformen können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung.
  • Die Ausgabe des Vorfilters 1004 wird durch eine Komponente zur Wavelet-Transformation 1006 verarbeitet. In einigen Ausführungsformen führt die Komponente zur Wavelet-Transformation 1006 eine 2-Schicht-Wavelet-Zerlegung durch, die Blöcke von Pixeln (z. B. 64x64- oder 128x128-Blöcke) aus einer Scheibe eines Bilds in mehrere (z. B. sieben) unterschiedliche Frequenzbänder zerlegt. Die Frequenzbänder für eine Scheibe können nach der Wavelet-Transformation 1005 gepuffert 1008 werden, sodass Komplexitätsstatistiken über die Frequenzbänder für die Scheibe durch eine Komponente für eine Komplexitätsanalyse 1050 des Videocodiersystems vor dem Codieren berechnet werden können. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komponente für eine Komplexitätsanalyse 1050 stellt die Komplexitätsstatistiken für die Frequenzbänder in der Scheibe der Komponente zur Ratensteuerung 1018 des Codierers 1008 bereit. Die Komponente zur Ratensteuerung 1018 berechnet dann Quantisierungsparameter für jedes der Frequenzbänder in der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken.
  • In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder durch die Komponente zur Ratensteuerung 1018 gemeinsam berechnet werden, um die Rate zwischen den Frequenzbändern zuzuordnen, während die gesamte angezeigte Qualität der Bilder optimiert wird, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Betriebsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline 1020 geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
  • In einigen Ausführungsformen kann die Komponente zur Ratensteuerung 1018 Statistiken für ein oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für die derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
  • In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und durch die Komponente zur Ratensteuerung 1018 beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
  • Die Komponente zur Ratensteuerung 1018 stellt die Quantisierungsparameter für die Frequenzbänder in der Scheibe der Blockverarbeitungs-Pipeline 1020 bereit, welche die Quantisierungsparameter verwendet, um die Frequenzbänder der derzeitigen Scheibe zu codieren. Die codierten Frequenzbänder werden der drahtlosen Schnittstelle 1010 bereitgestellt, welche die codierten Frequenzbänder paketiert und über eine drahtlose Verbindung 1080 an eine Vorrichtung überträgt.
  • Ein Ziel des Videocodiersystems besteht darin, die Qualität des Videostroms an die Vorrichtung zu optimieren, während die Bandbreitennutzung maximiert und die Latenz über die drahtlose Verbindung 1080 an die Vorrichtung minimiert wird. In einigen Ausführungsformen kann die drahtlose Schnittstelle 1010 derzeitige Informationen über die drahtlose Verbindung als Rückmeldung an die Komponente zur Ratensteuerung 1018 des Codierers 1008 bereitstellen, um zur Erreichung dieses Ziels beizutragen. Die Komponente zur Ratensteuerung 1018 kann diese Informationen beim Bestimmen von Quantisierungsparametern für die Frequenzbänder verwenden. In einigen Ausführungsformen kann die drahtlose Schnittstelle 1010 die momentane Gesamtbitrate der drahtlosen Verbindung 1080 verfolgen und kann außerdem die Rate verworfener Pakete auf der Verbindung 1080 verfolgen. In einigen Ausführungsformen meldet die drahtlose Schnittstelle 1010 die derzeitige Bitrate für die drahtlose Verbindung 1080 zurück an die Komponente zur Ratensteuerung 1018, die diese Informationen verwenden kann, um die verfügbare Bitrate unter den unterschiedlichen Frequenzbändern zuzuordnen. Wenn zum Beispiel die Bitrate der drahtlosen Verbindung 1080 derzeit niedrig ist, kann die Komponente zur Ratensteuerung 1018 den Quantisierungsparameter eines oder mehrerer der höheren Frequenzbänder anpassen, sodass diesen Bändern weniger Bits zugeordnet werden. In einigen Ausführungsformen meldet die drahtlose Schnittstelle 1010 auch die derzeitige Rate verworfener Pakete für die drahtlose Verbindung 1080 an die Komponente zur Ratensteuerung 1018 zurück; die Komponente zur Ratensteuerung 1018 kann die derzeitige Rate verworfener Pakete und die derzeitige Bitrate verwenden, um die Anpassung der Quantisierungsparameter der Frequenzbänder auszugleichen, um die Rate verworfener Pakete zu reduzieren oder zu minimieren, während die Bandbreitennutzung bei der derzeitigen Bitrate maximiert wird, um die Qualität des Videostroms zu optimieren.
  • In einigen Ausführungsformen kann die Komponente zur Ratensteuerung 1018 die Quantisierungsparameter für die Frequenzbänder auf der Blockebene anstatt auf der Scheibenebene anpassen.
  • 8 ist ein Flussdiagramm eines Betriebsverfahrens für ein Videocodiersystem, wie in 7 veranschaulicht, gemäß mindestens einigen Ausführungsformen. Wie bei 1100 angegeben, bestimmt die Vorfilterkomponente foveale Bereiche für ein Bild/Bilder und filtert Pixeldaten in Scheiben vor. In einigen Ausführungsformen werden gerenderte Scheiben eines Bilds, die Pixeldaten einschließen, zuerst durch eine Vorfilterkomponente, zum Beispiel eine N-Kanal-Filterbank, verarbeitet. In einigen Ausführungsformen können Blickverfolgungsinformationen, die von der Vorrichtung erhalten werden, verwendet werden, um die Richtung zu identifizieren, in die der Benutzer derzeit blickt. Ein Bereich des Bilds, welcher der Fovea entspricht (als der foveale Bereich bezeichnet), kann mindestens teilweise basierend auf der bestimmten Blickrichtung identifiziert werden. Der periphere Bereich (d. h. der Abschnitt des Bilds außerhalb des fovealen Bereichs) kann vorgefiltert werden, um Informationen basierend auf der Kenntnis des menschlichen Sichtsystems zu reduzieren, zum Beispiel durch Filtern von Hochfrequenzinformationen und/oder Erhöhen der Farbkomprimierung.
  • Wie bei 1110 angegeben, zerlegt die Wavelet-Transformations-Komponente die vorgefilterten Pixeldaten in N (z. B. 7) Frequenzbänder. In einigen Ausführungsformen führt die Wavelet-Transformation-Komponente eine 2-Schicht-Wavelet-Zerlegung durch, die Blöcke von Pixeln (z. B. 64x64- oder 128x128-Blöcke) aus einer Scheibe eines Bilds in mehrere (z. B. sieben) verschiedene Frequenzbänder zerlegt. Die Frequenzbänder für eine Scheibe können nach der Wavelet-Transformation gepuffert werden, sodass Komplexitätsstatistiken über die Frequenzbänder für die Scheibe durch eine Komplexitätsanalysekomponente des Videocodiersystems vor dem Codieren berechnet werden können.
  • Wie bei 1120 angegeben, berechnet die Komplexitätsanalysekomponente Komplexitätsstatistiken über die Frequenzbänder. In einigen Ausführungsformen können die Komplexitätsstatistiken eines oder mehrere von einem Pixelgradienten und einer Größenvarianz für die CTU-Blöcke einschließen, sind jedoch nicht darauf beschränkt. Die Komplexitätsanalysekomponente stellt die Komplexitätsstatistiken für die Frequenzbänder in der Scheibe der Ratensteuerungskomponente des Codierers bereit.
  • Wie bei 1130 angegeben, bestimmt die Codierer-Ratensteuerungskomponente Quantisierungsparameter für jedes der Frequenzbänder in der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken. In einigen Ausführungsformen können die Quantisierungsparameter für die Frequenzbänder durch die Ratensteuerungskomponente gemeinsam berechnet werden, um die Rate zwischen den Frequenzbändern zuzuordnen, während die gesamte angezeigte Qualität der Bilder optimiert wird, nachdem die Decodiererrekonstruktion und die Wavelet-Synthese an der Vorrichtung durchgeführt wurden. Ein Verfahren zur Ratenzuordnung zwischen den Frequenzbändern besteht darin, in jedem der Frequenzbänder einen Arbeitspunkt zu finden, der zu gleichen Flanken auf der Betriebsratenverzerrungskurve führt. In einigen Ausführungsformen kann die Betriebsratenverzerrungskurve unter Verwendung einer Kombination von Statistiken aus der Entropiecodierstufe der Codierer-Pipeline 1020 geschätzt werden, wobei die Rate der Koeffizienten für Quantisierungsparameterschritte von 6 gut näherungsweise bestimmt werden kann.
  • In einigen Ausführungsformen kann die Ratensteuerungskomponente Statistiken für ein oder mehrere zuvor verarbeitete Bilder untersuchen, um eine tatsächliche Anzahl von Bits zu bestimmen, die verwendet wurden, um zusammen angeordnete Blöcke oder Scheiben des Bilds/der Bilder zu codieren. Diese Informationen können dann in Kombination mit den Komplexitätsstatistiken für die derzeitige Scheibe beim Bestimmen der Quantisierungsparameter für die derzeitige Scheibe verwendet werden.
  • In einigen Ausführungsformen kann ein interessierender Bereich innerhalb eines Bilds (z. B. der foveale Bereich) vorhanden sein, der eine höhere Auflösung als der umgebende Bereich (z. B. der periphere Bereich) in demselben Bild aufweisen sollte. In einigen Ausführungsformen können Komplexitätsstatistiken aus einem vorhergehenden Bild zusammen mit dem fovealen Bereich aus dem vorhergehenden Bild gespeichert und durch die Ratensteuerungskomponente beim Berechnen der Quantisierungsparameter für die Frequenzbänder in Scheiben eines derzeitigen Bilds verwendet werden. Als ein Beispiel kann für jeden Block, der codiert werden soll, der foveale Bereich eines vorhergehenden Bilds verwendet werden, um die Komplexitätsstatistiken zu modulieren, die für das vorhergehende Bild berechnet wurden. Die resultierenden Komplexitätsstatistiken können dann zusätzlich zu den Komplexitätsstatistiken verwendet werden, die für Scheiben eines derzeitigen Bilds beim Bestimmen der Quantisierungsparameter berechnet werden.
  • Wie bei 1140 angegeben, wendet der Codierer (z. B. ein HEVC-Codierer) eine Codiertechnik auf die Frequenzbänder unter Verwendung der Quantisierungsparameter an, um die Daten zu komprimieren. Die Ratensteuerungskomponente stellt die Quantisierungsparameter für die Frequenzbänder in der Scheibe der Blockverarbeitungs-Pipeline des Codierers bereit, welche die Quantisierungsparameter verwendet, um die Frequenzbänder der derzeitigen Scheibe zu codieren. Die codierten Frequenzbänder werden der drahtlosen Schnittstelle der Basisstation bereitgestellt.
  • Wie bei 1150 angegeben, paketiert die drahtlose Schnittstelle die komprimierten Daten und sendet diese über die drahtlose Verbindung an die Vorrichtung. In einigen Ausführungsformen kann die drahtlose Schnittstelle derzeitige Informationen über die drahtlose Verbindung als Rückmeldung an die Ratensteuerungskomponente des Codierers bereitstellen. Die Ratensteuerungskomponente kann diese Informationen beim Bestimmen von Quantisierungsparametern für die Frequenzbänder verwenden. In einigen Ausführungsformen kann die drahtlose Schnittstelle die momentane Gesamtbitrate der drahtlosen Verbindung verfolgen und kann außerdem die Rate verworfener Pakete auf der Verbindung verfolgen. In einigen Ausführungsformen kann die Ratensteuerungskomponente die derzeitige Bitrate für die drahtlose Verbindung verwenden, um die verfügbare Bitrate unter den unterschiedlichen Frequenzbändern zuzuordnen. In einigen Ausführungsformen kann die Ratensteuerungskomponente die derzeitige Rate verworfener Pakete und die derzeitige Bitrate verwenden, um die Anpassung der Quantisierungsparameter der Frequenzbänder auszugleichen, um die Rate verworfener Pakete zu reduzieren oder zu minimieren, um die Qualität des Videostroms bei der derzeitigen Bitrate zu optimieren.
  • Wie durch den Pfeil angegeben, der von Element 1160 zu Element 1100 zurückkehrt, kann das Verfahren fortfahren, solange Daten an die Vorrichtung übertragen werden sollen.
  • Beispielhaftes VR-/MR-System
  • 9 veranschaulicht ein beispielhaftes VR-/MR-System 2000, das ein Videocodiersystem implementieren kann, gemäß mindestens einigen Ausführungsformen. Ein VR-/MR-System 2000 kann mindestens eine Vorrichtung 2150 (z. B. einen Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone, eine handgehaltene Rechenvorrichtung oder eine HMD, wie ein Headset, einen Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können) und eine Rechenvorrichtung 2100 (hierin als Basisstation bezeichnet) einschließen. Die Basisstation 2100 rendert VR- oder MR-Bilder, einschließlich virtueller Inhalte, codiert die Bilder und überträgt die codierten Bilder über eine drahtlose Verbindung 2180 an die Vorrichtung 2150 zum Decodieren und zur Anzeige durch die Vorrichtung 2150.
  • Die Basisstation 2100 und die Vorrichtung 2150 können jeweils eine Drahtloskommunikationstechnologie einschließen, die es der Basisstation 2100 und der Vorrichtung 2150 ermöglicht, über eine drahtlose Verbindung 2180 zu kommunizieren und Daten auszutauschen. In einigen Ausführungsformen kann die drahtlose Verbindung 2180 gemäß einer proprietären Drahtloskommunikationstechnologie implementiert werden, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 2150 und der Basisstation 2100 bereitstellt. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
  • In einigen Ausführungsformen kann die Vorrichtung 2150 Sensoren einschließen, die Informationen über die Umgebung des Benutzers (z. B. Video, Tiefeninformationen, Beleuchtungsinformationen usw.) und/oder über den Benutzer (z. B. die Mienen, Augenbewegung, Blickrichtung, Handgesten usw. des Benutzers) sammeln. Die Vorrichtung 2150 kann mindestens einige der durch Sensoren gesammelten Informationen über die drahtlose Verbindung 2180 an die Basisstation 2100 übertragen. Die Basisstation 2100 kann Bilder, die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Informationen, die von den Sensoren erhalten werden, zur Anzeige durch die Vorrichtung 2150 rendern, die Bilder codieren und die codierten Bilder zum Decodieren und zur Anzeige für den Benutzer über die drahtlose Verbindung 2180 an die Vorrichtung 2150 übertragen. Um die Bilder zu codieren und zu übertragen, kann die Basisstation 2100 ein Videocodiersystem, wie in 1 bis 8 veranschaulicht, implementieren.
  • 10 ist ein Blockdiagramm, das Funktionskomponenten eines beispielhaften VR-/MR-Systems, wie in 9 veranschaulicht, und ein Verarbeiten in einem solchen gemäß einigen Ausführungsformen veranschaulicht. Die Vorrichtung 2150 kann, ohne darauf beschränkt zu sein, ein Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone, eine handgehaltene Rechenvorrichtung oder eine HMD, wie ein Headset, ein Helm oder eine Brille, die durch einen Benutzer am Körper getragen werden können, sein. Die Vorrichtung 2150 kann eine Komponente oder ein Subsystem für eine Anzeige 2156 einschließen, die/das einen beliebigen von verschiedenen Typen von Virtual- oder Augmented-Reality-Anzeigetechnologien implementieren kann. Zum Beispiel kann eine HMD-Vorrichtung 2150 ein augennahes System sein, das linke und rechte Bilder auf Bildschirmen vor den Augen des Benutzers anzeigt, die durch eine Person betrachtet werden, wie VR-Systeme der Technologien DLP (Digital Light Processing), LCD (Liquid Crystal Display) und LCoS (Liquid Crystal on Silicon). Als weiteres Beispiel kann eine HMD-Vorrichtung 2150 ein direktes Netzhautprojektorsystem sein, das linke und rechte Bilder Pixel um Pixel zu den Augen der Person abtastet. Zum Abtasten der Bilder erzeugen linke und rechte Projektoren Strahlen, die auf linke und rechte reflektierende Komponenten (z. B. Ellipsoidspiegel) gerichtet sind, die sich vor den Augen des Benutzers befinden, die reflektierenden Komponenten reflektieren die Strahlen zu den Augen des Benutzers. Um einen dreidimensionalen Effekt (3D-Effekt) zu erzeugen, werden virtuelle Inhalte in unterschiedlichen Tiefen oder Abständen in der virtuellen 3D-Ansicht in den zwei Bildern in Abhängigkeit von der Triangulation des Abstands nach links oder rechts verschoben, wobei näher gelegene Objekte mehr verschoben werden als entfernter gelegene Objekte.
  • Die Vorrichtung 2150 kann auch eine Steuerung 2154 einschließen, die dafür ausgelegt ist, eine vorrichtungsseitige Funktionalität des VR-/MR-Systems 2000, wie hierin beschrieben, zu implementieren. In einigen Ausführungsformen kann die Vorrichtung 2150 auch einen Speicher 2170 einschließen, der dafür ausgelegt ist, Software (Code 2172) der Vorrichtungskomponente des VR-/MR-Systems 2000, die durch die Steuerung 2154 ausführbar ist, sowie Daten 2174, die durch die Software verwendet werden können, wenn sie auf der Steuerung 2154 ausgeführt werden, zu speichern. In verschiedenen Ausführungsformen kann die Steuerung 2154 ein Einzelprozessorsystem, das einen Prozessor einschließt, oder ein Multiprozessorsystem, das mehrere Prozessoren (z. B. zwei, vier, acht oder eine andere geeignete Anzahl) einschließt, sein. Die Steuerung 2154 kann zentrale Verarbeitungseinheiten (CPUs) einschließen, die dafür ausgelegt sind, eine beliebige geeignete Anweisungssatzarchitektur zu implementieren, und kann dafür ausgelegt sein, Anweisungen auszuführen, die in dieser Anweisungssatzarchitektur definiert sind. Zum Beispiel kann die Steuerung 2154 in verschiedenen Ausführungsformen Universal- oder eingebettete Prozessoren einschließen, die eine von einer Vielfalt von Anweisungssatzarchitekturen (ISAs), wie x86-, PowerPC-, SPARC-, RISC- oder MIPS-ISAs oder eine beliebige andere geeignete ISA, implementieren. In Multiprozessorsystemen kann jeder der Prozessoren herkömmlicherweise, jedoch nicht zwingend, dieselbe ISA implementieren. Die Steuerung 2154 kann eine beliebige Mikroarchitektur, einschließlich skalar, superskalar, Pipeline, Superpipeline, Out-of-order, In-order, spekulativ, nichtspekulativ usw. oder Kombinationen davon, einsetzen.
  • Die Steuerung 2154 kann eine Schaltlogik zum Implementieren von Mikrocodiertechniken einschließen. Die Steuerung 2154 kann einen oder mehrere Verarbeitungskerne einschließen, die jeweils dafür ausgelegt sind, Anweisungen auszuführen. Die Steuerung 2154 kann eine oder mehrere Ebenen von Caches einschließen, die eine beliebige Größe und Konfiguration einsetzen können (Set-assoziativ, direkt abgebildet usw.). In einigen Ausführungsformen kann die Steuerung 2154 mindestens eine Grafikverarbeitungseinheit (GPU) einschließen, die eine beliebige geeignete Grafikverarbeitungsschaltlogik einschließen kann. Allgemein kann eine GPU dafür ausgelegt sein, Objekte zur Anzeige in einen Bildpuffer (z. B. einen, der Pixeldaten für ein gesamtes Bild einschließt) zu rendern. Eine GPU kann einen oder mehrere Grafikprozessoren einschließen, die Grafiksoftware ausführen können, um einen Teil oder die Gesamtheit der Grafikoperation oder die Hardwarebeschleunigung bestimmter Grafikoperationen durchzuführen. In einigen Ausführungsformen kann die Steuerung 2154 eine oder mehrere andere Komponenten zum Verarbeiten und Rendern von Video und/oder Bildern einschließen, zum Beispiel Bildsignalprozessoren (ISPs), Codierer/Decodierer (Codecs) usw. In einigen Ausführungsformen kann die Steuerung 2154 mindestens ein System-on-a-Chip (SOC) einschließen.
  • Der Speicher 2170 kann einen beliebigen Speichertyp, wie dynamischen Speicher mit wahlfreiem Zugriff (DRAM), synchronen DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.) (einschließlich mobiler Versionen der SDRAMs, wie mDDR3 usw., oder Versionen der SDRAMs mit niedrigem Energieverbrauch, wie LPDDR2 usw.), RAMBUS DRAM (RDRAM), statischen RAM (SRAM) usw., einschließen. In einigen Ausführungsformen können eine oder mehrere Speichervorrichtungen auf einer Leiterplatte gekoppelt sein, um Speichermodule, wie einzelne Inline-Speichermodule (SIMMs), doppelte Inline-Speichermodule (DIMMs) usw., zu bilden. Alternativ können die Vorrichtungen mit einem System zum Implementieren integrierter Schaltungen in einer Chip-on-Chip-Konfiguration, einer Package-on-Package-Konfiguration oder einer Multi-Chip-Modul-Konfiguration montiert sein.
  • In einigen Ausführungsformen können die Sensoren 2160 einen oder mehrere Blickverfolgungssensoren (z. B. IR-Kameras mit einer IR-Beleuchtungsquelle) einschließen, die verwendet werden können, um die Position und Bewegung der Augen des Benutzers zu verfolgen, sind jedoch nicht darauf beschränkt. In einigen Ausführungsformen können zwei Blickverfolgungssensoren vorhanden sein, wobei jeder Blickverfolgungssensor ein jeweiliges Auge verfolgt. In einigen Ausführungsformen können die durch die Blickverfolgungssensoren gesammelten Informationen verwendet werden, um das Rendern von Bildern durch die Basisstation 2100 anzupassen und/oder um die Projektion der Bilder durch das Projektionssystem der Vorrichtung 2150 basierend auf der Richtung und dem Winkel, in die/dem die Augen des Benutzers blicken, anzupassen. Zum Beispiel können in einigen Ausführungsformen Inhalte der Bilder in einem Bereich um den Ort herum, auf den die Augen des Benutzers derzeitig blicken, detaillierter und mit einer höheren Auflösung gerendert werden als Inhalte in Bereichen, auf die der Benutzer nicht blickt, wodurch verfügbare Verarbeitungszeit für Bilddaten für Inhalte, die durch die fovealen Bereiche der Augen betrachtet werden, anstatt für Inhalte, die durch die peripheren Bereiche der Augen betrachtet werden, genutzt werden kann. In ähnlicher Weise können Inhalt von Bildern in Bereichen, auf die der Benutzer nicht blickt, mehr komprimiert werden als Inhalte des Bereichs um den Punkt, auf den der Benutzer derzeitig blickt. In einigen Ausführungsformen können sich zwei Blickverfolgungssensoren an einer Innenoberfläche der Vorrichtung 2150 derart an Positionen befinden, dass die Sensoren Ansichten von jeweiligen Augen des Benutzers haben. In verschiedenen Ausführungsformen können jedoch mehr oder weniger Blickverfolgungssensoren verwendet werden, und Blickverfolgungssensoren können an anderen Stellen positioniert sein. In einer beispielhaften nicht einschränkenden Ausführungsform kann jeder Blickverfolgungssensor eine IR-Lichtquelle und eine IR-Kamera einschließen, zum Beispiel eine 400x400-Pixel-Zählkamera mit einer Bildrate von 120 FPS oder mehr, HFOV von 70 Grad und mit einem Arbeitsabstand von 10 Millimeter (mm) bis 80 mm.
  • In einigen Ausführungsformen kann die Vorrichtung 2150 mindestens eine inertiale Messeinheit (IMU) 2162 einschließen, die dafür ausgelegt ist, Position, Ausrichtung und/oder Bewegung der Vorrichtung 2150 zu erfassen und die erfassten Positions-, Ausrichtungs- und/oder Bewegungsdaten der Steuerung 2154 der Vorrichtung 2150 und/oder der Basisstation 2100 bereitzustellen.
  • Die Vorrichtung 2150 kann auch eine drahtlose Schnittstelle 2152 einschließen, die dafür ausgelegt ist, mit einer externen Basisstation 2100 über eine drahtlose Verbindung 2180 zu kommunizieren, um Sensoreingaben an die Basisstation 2100 zu übertragen und komprimierte gerenderte Bilder, Scheiben oder Kacheln von der Basisstation 2100 zu empfangen. In einigen Ausführungsformen kann die drahtlose Schnittstelle 2152 eine proprietäre Drahtloskommunikationstechnologie implementieren, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 2150 und der Basisstation 2100 bereitstellt. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
  • Die Basisstation 2100 kann eine externe Vorrichtung (z. B. ein Rechensystem, eine Spielkonsole usw.) sein, die über eine drahtlose Schnittstelle 2180 kommunikativ mit der Vorrichtung 2150 gekoppelt ist. Die Basisstation 2100 kann einen oder mehrere verschiedene Typen von Prozessoren (z. B. SOCs, CPUs, ISPs, GPUs, Codecs und/oder andere Komponenten) zum Rendern, Filtern, Codieren und Übertragen von Video und/oder Bildern einschließen. Die Basisstation 2100 kann Bilder (wobei jedes Bild ein linkes und ein rechtes Bild einschließt), die virtuelle Inhalte einschließen, mindestens teilweise basierend auf den verschiedenen Eingaben, die von den Sensoren 2160 über die drahtlose Verbindung 2180 erhalten werden, rendern, die gerenderten Bilder (oder Scheiben der Bilder) unter Verwendung eines Videocodiersystems, wie hierin beschrieben, filtern und komprimieren und die komprimierten Bilder oder Scheiben an die Vorrichtung 2150 zur Anzeige übertragen.
  • Die Basisstation 2100 kann ein beliebiger Typ von Rechensystem oder Rechenvorrichtung, wie ein Desktop-Computer, ein Notebook- oder Laptop-Computer, eine Pad- oder Tablet-Vorrichtung, ein Smartphone, eine handgehaltene Rechenvorrichtung, eine Spielsteuerung, ein Spielsystem und so weiter, sein oder einen solchen einschließen. Die Basisstation 2100 kann eine Steuerung 2110 einschließen, die einen oder mehrere Prozessoren umfasst, die eine basisseitige Funktionalität des VR-/MR-Systems 2000, einschließlich des Videocodiersystems, wie hierin beschrieben, implementieren. Die Basisstation 2100 kann auch einen Speicher 2120 einschließen, der dafür ausgelegt ist, Software (Code 2122) der Basisstationskomponente des VR-/MR-Systems 2000, die durch die Basisstationssteuerung 2110 ausführbar ist, sowie Daten 2124, die durch die Software verwendet werden können, wenn sie auf der Steuerung 2110 ausgeführt werden, zu speichern.
  • In verschiedenen Ausführungsformen kann die Basisstationssteuerung 2110 ein Einzelprozessorsystem, das einen Prozessor einschließt, oder ein Multiprozessorsystem, das mehrere Prozessoren (z. B. zwei, vier, acht oder eine andere geeignete Anzahl) einschließt, sein. Die Steuerung 2110 kann zentrale Verarbeitungseinheiten (CPUs) einschließen, die dafür ausgelegt sind, eine beliebige geeignete Anweisungssatzarchitektur zu implementieren, und kann dafür ausgelegt sein, Anweisungen auszuführen, die in dieser Anweisungssatzarchitektur definiert sind. Zum Beispiel kann die Steuerung 2110 in verschiedenen Ausführungsformen Universal- oder eingebettete Prozessoren einschließen, die eine von einer Vielfalt von Anweisungssatzarchitekturen (ISAs), wie x86-, PowerPC-, SPARC-, RISC- oder MIPS-ISAs oder eine beliebige andere geeignete ISA, implementieren. In Multiprozessorsystemen kann jeder der Prozessoren gemeinsam, jedoch nicht zwingend, dieselbe ISA implementieren. Die Steuerung 2110 kann eine beliebige Mikroarchitektur, einschließlich skalar, superskalar, Pipeline, Superpipeline, Out-of-order, In-order, spekulativ, nichtspekulativ usw. oder Kombinationen davon, einsetzen. Die Steuerung 2110 kann eine Schaltlogik zum Implementieren von Mikrocodiertechniken einschließen. Die Steuerung 2110 kann einen oder mehrere Verarbeitungskerne einschließen, die jeweils dafür ausgelegt sind, Anweisungen auszuführen. Die Steuerung 2110 kann eine oder mehrere Ebenen von Caches einschließen, die eine beliebige Größe und Konfiguration einsetzen können (Set-assoziativ, direkt abgebildet usw.). In einigen Ausführungsformen kann die Steuerung 2110 mindestens eine Grafikverarbeitungseinheit (GPU) einschließen, die eine beliebige geeignete Grafikverarbeitungsschaltlogik einschließen kann. Allgemein kann eine GPU dafür ausgelegt sein, Objekte zur Anzeige in einen Bildpuffer (z. B. einen, der Pixeldaten für ein gesamtes Bild einschließt) zu rendern. Eine GPU kann einen oder mehrere Grafikprozessoren einschließen, die Grafiksoftware ausführen können, um einen Teil oder die Gesamtheit der Grafikoperation oder die Hardwarebeschleunigung bestimmter Grafikoperationen durchzuführen. In einigen Ausführungsformen kann die Steuerung 2110 eine oder mehrere andere Komponenten zum Verarbeiten, Rendern, Filtern und Codieren von Video und/oder Bildern, wie hierin beschrieben, einschließen, zum Beispiel eine oder mehrere von verschiedenen Typen von integrierten Schaltungen (ICs), Bildsignalprozessoren (ISPs), Codierern/Decodierern (Codecs) usw. In einigen Ausführungsformen kann die Steuerung 2110 mindestens ein System-on-a-Chip (SOC) einschließen.
  • Der Basisstationsspeicher 2120 kann einen beliebigen Speichertyp, wie dynamischen Speicher mit wahlfreiem Zugriff (DRAM), synchronen DRAM (SDRAM), SDRAM mit doppelter Datenrate (DDR, DDR2, DDR3 usw.) (einschließlich mobiler Versionen der SDRAMs, wie mDDR3 usw., oder Versionen der SDRAMs mit niedrigem Energieverbrauch, wie LPDDR2 usw.), RAMBUS DRAM (RDRAM), statischen RAM (SRAM) usw., einschließen. In einigen Ausführungsformen können eine oder mehrere Speichervorrichtungen auf einer Leiterplatte gekoppelt sein, um Speichermodule, wie einzelne Inline-Speichermodule (SIMMs), doppelte Inline-Speichermodule (DIMMs) usw., zu bilden. Alternativ können die Vorrichtungen mit einem System zum Implementieren integrierter Schaltungen in einer Chip-on-Chip-Konfiguration, einer Package-on-Package-Konfiguration oder einer Multi-Chip-Modul-Konfiguration montiert sein.
  • Die Basisstation 2100 kann auch eine oder mehrere Drahtlostechnologieschnittstellen 2130 einschließen, die dafür ausgelegt sind, mit der Vorrichtung 2150 über eine drahtlose Verbindung 2180 zu kommunizieren, um Sensoreingaben von der Vorrichtung 2150 zu empfangen und komprimierte Bilder, Scheiben oder Kacheln von der Basisstation 2100 an die Vorrichtung 2150 zu senden. In einigen Ausführungsformen kann die Drahtlostechnologieschnittstelle 2130 eine proprietäre Drahtloskommunikationstechnologie implementieren, die eine hochdirektionale drahtlose Verbindung zwischen der Vorrichtung 2150 und der Basisstation 2100 bereitstellt. In einigen Ausführungsformen können die Direktionalität und Bandbreite der Drahtloskommunikationstechnologie mehrere Vorrichtungen 2150 unterstützen, die gleichzeitig mit der Basisstation 2100 kommunizieren, um es somit mehreren Benutzern zu ermöglichen, das System 2000 gleichzeitig in einer am gleichen Standort befindlichen Umgebung zu verwenden. Jedoch können andere kommerzielle (z. B. Wi-Fi, Bluetooth usw.) oder proprietäre Drahtloskommunikationstechnologien in einigen Ausführungsformen verwendet werden.
  • In einigen Ausführungsformen kann die Basisstation 2100 dafür ausgelegt sein, Bilder zu rendern und an die Vorrichtung 2150 zu übertragen, um eine virtuelle 3D-Ansicht für den Benutzer bereitzustellen, die mindestens teilweise auf von der Vorrichtung 2150 empfangenen Eingaben des Sensors 2160 basiert. In einigen Ausführungsformen kann die virtuelle Ansicht ein Rendern der Umgebung des Benutzers, einschließlich ein Rendern von realen Objekten in der Umgebung des Benutzers, basierend auf Video einschließen, das durch eine oder mehrere Szenenkameras (z. B. RGB-Videokameras (Kameras für sichtbares Licht)) aufgenommen wird, die hochwertiges, hochauflösendes Video der Umgebung des Benutzers in Echtzeit zur Anzeige aufnehmen. In einigen Ausführungsformen kann die virtuelle Ansicht auch virtuelle Inhalte (z. B. virtuelle Objekte, virtuelle Tags für reale Objekte, Avatare des Benutzers usw.) einschließen, die durch die Basisstation 2100 gerendert und mit der projizierten 3D-Ansicht der realen Umgebung des Benutzers zusammengesetzt werden.
  • Obwohl in 9 und 10 nicht gezeigt, kann das VR-/MR-System 2000 in einigen Ausführungsformen eine oder mehrere andere Komponenten einschließen. Zum Beispiel kann das System eine Cursor-Steuervorrichtung (z. B. Maus) zum Bewegen eines virtuellen Cursors in der virtuellen 3D-Ansicht einschließen, um mit virtuellen Inhalten zu interagieren. Während 9 und 10 eine einzelne Vorrichtung 2150 zeigen, kann das VR-/MR-System 2000 in einigen Ausführungsformen mehrere Vorrichtungen 2150 unterstützen, die gleichzeitig mit der Basisstation 2100 kommunizieren, um es somit mehreren Benutzern zu ermöglichen, das System gleichzeitig in einer am gleichen Standort befindlichen Umgebung zu verwenden.
  • Die hierin beschriebenen Verfahren können in Software, Hardware oder einer Kombination davon in verschiedenen Ausführungsformen implementiert werden. Außerdem kann die Reihenfolge der Blöcke der Verfahren geändert werden, und verschiedene Elemente können hinzugefügt, aufgezeichnet, kombiniert, weggelassen, modifiziert werden usw. Verschiedene Modifikationen und Änderungen können vorgenommen werden, wie dies für einen Fachmann, der sich dieser Offenbarung bedient, naheliegen würde. Die verschiedenen, hierin beschriebenen Ausführungsformen sollen veranschaulichend und nicht einschränkend sein. Es sind viele Variationen, Modifikationen, Hinzufügungen und Verbesserungen möglich. Dementsprechend können für Komponenten, die hierin als einzelne Instanz beschrieben sind, mehrere Instanzen bereitgestellt werden. Grenzen zwischen verschiedenen Komponenten, Operationen und Datenspeicherungen sind in gewissem Maß willkürlich, und bestimmte Operationen sind im Kontext spezifischer, veranschaulichender Konfigurationen veranschaulicht. Andere Zuordnungen von Funktionalitäten sind denkbar und können in den Umfang der folgenden Ansprüche fallen. Schließlich können Strukturen und Funktionalitäten, die in den Beispielkonfigurationen als diskrete Komponenten dargestellt werden, als eine kombinierte Struktur oder Komponente implementiert werden. Diese und andere Variationen, Modifikationen, Erweiterungen und Verbesserungen können in den Umfang der Ausführungsformen fallen, wie er in den folgenden Ansprüchen definiert ist.

Claims (20)

  1. Videocodiersystem, umfassend: einen blockbasierten Codierer; eine Wavelet-Transformations-Komponente, umfassend einen oder mehrere Prozessoren, die dafür ausgelegt sind, eine Wavelet-Transformation auf eine Vielzahl von Pixelblöcken aus einer Scheibe eines derzeitigen Videobilds anzuwenden, um die Pixelblöcke aus der Scheibe in eine Vielzahl von Frequenzbändern zu zerlegen und Frequenzblöcke, die Frequenzdaten für die Frequenzbänder für die Scheibe einschließen, an einen Puffer auszugeben; eine Komplexitätsanalysekomponente, umfassend einen oder mehrere Prozessoren, die dafür ausgelegt sind, Komplexitätsstatistiken über die gepufferten Frequenzbänder der Scheibe zu berechnen und die Komplexitätsstatistiken für die Frequenzbänder der Scheibe an den Codierer auszugeben; wobei der Codierer ausgelegt ist zum: Bestimmen von Quantisierungsparametern für jedes der Frequenzbänder der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Frequenzbänder der Scheibe; und Anwenden einer Codiertechnik auf die gepufferten Frequenzblöcke für die Scheibe, wobei die Codiertechnik die bestimmten Quantisierungsparameter für die Frequenzbänder der Scheibe verwendet, um die Frequenzdaten in den Frequenzblöcken zu komprimieren; eine drahtlose Schnittstelle, die dafür ausgelegt ist, die komprimierten Frequenzdaten für die Scheibe über eine drahtlose Verbindung an eine Empfangsvorrichtung zu übertragen.
  2. Videocodiersystem nach Anspruch 1, wobei die Komplexitätsstatistiken eines oder mehrere von Pixelgradienteninformationen oder einer Varianz der Frequenzblockgröße für die Scheibe einschließen.
  3. Videocodiersystem nach Anspruch 1, wobei der Codierer ferner dafür ausgelegt ist, die Quantisierungsparameter für jedes der Frequenzbänder der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Frequenzbänder der Scheibe in Kombination mit einer tatsächlichen Anzahl von Bits, die zum Codieren einer zusammen angeordneten Scheibe eines zuvor verarbeiteten Videobilds verwendet wurden, zu bestimmen.
  4. Videocodiersystem nach Anspruch 1, wobei die drahtlose Schnittstelle dafür ausgelegt ist, eine derzeitige verfügbare Bitrate für die drahtlose Verbindung als Rückmeldung an den Codierer bereitzustellen, wobei, wenn die Quantisierungsparameter für die Frequenzbänder der Scheibe bestimmt werden, der Codierer dafür ausgelegt ist, die derzeitige verfügbare Bitrate unter den Frequenzbändern zuzuordnen.
  5. Videocodiersystem nach Anspruch 1, wobei die drahtlose Schnittstelle dafür ausgelegt ist, eine derzeitige verfügbare Bitrate für die drahtlose Verbindung und eine derzeitige Rate verworfener Pakete auf der drahtlosen Verbindung als Rückmeldung an den Codierer bereitzustellen; wobei, wenn die Quantisierungsparameter für die Frequenzbänder der Scheibe bestimmt werden, der Codierer dafür ausgelegt ist, die Quantisierungsparameter für die Frequenzbänder anzupassen, um die Rate verworfener Pakete zu minimieren, während die verfügbare Bandbreitennutzung bei der derzeitigen verfügbaren Bitrate maximiert wird.
  6. Videocodiersystem nach Anspruch 1, wobei der Codierer ferner dafür ausgelegt ist, die Quantisierungsparameter für die Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Scheibe in Kombination mit Komplexitätsstatistiken von einem vorhergehenden Bild und einem fovealen Bereich des vorhergehenden Bilds zu bestimmen.
  7. Videocodiersystem nach Anspruch 6, wobei, zum Bestimmen der Quantisierungsparameter für die Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Scheibe in Kombination mit Komplexitätsstatistiken von einem vorhergehenden Bild und einem fovealen Bereich des vorhergehenden Bilds, der Codierer die Komplexitätsstatistiken von dem vorhergehenden Bild gemäß dem fovealen Bereich des vorhergehenden Bilds moduliert und die modulierten Komplexitätsstatistiken von dem vorhergehenden Bild in Kombination mit den Komplexitätsstatistiken für die Scheibe verwendet, um die Quantisierungsparameter zu bestimmen.
  8. Videocodiersystem nach Anspruch 1, wobei die Wavelet-Transformation eine zweistufige Wavelet-Zerlegung ist, die auf jeden Pixelblock aus dem Videobild angewendet wird.
  9. Videocodiersystem nach Anspruch 1, wobei der Codierer einschließt: eine Blockverarbeitungs-Pipeline, die dafür ausgelegt ist, die Codiertechnik auf die gepufferten Frequenzblöcke für die Scheibe anzuwenden; und eine Ratensteuerungskomponente, die dafür ausgelegt ist, die Quantisierungsparameter für jedes der Frequenzbänder der Scheibe zu bestimmen und die Quantisierungsparameter der Blockverarbeitungs-Pipeline bereitzustellen.
  10. Verfahren, umfassend: einen oder mehrere Prozessoren, die zum Implementieren von Folgendem ausgelegt sind: Anwenden einer Wavelet-Transformation auf eine Vielzahl von Pixelblöcken aus einer Scheibe eines derzeitigen Videobilds, um die Pixelblöcke aus der Scheibe in eine Vielzahl von Frequenzbändern zu zerlegen und Frequenzblöcke, die Frequenzdaten für die Frequenzbänder für die Scheibe einschließen, an einen Puffer auszugeben; Berechnen von Komplexitätsstatistiken über die gepufferten Frequenzbänder der Scheibe und Ausgeben der Komplexitätsstatistiken für die Frequenzbänder der Scheibe an den Codierer; Bestimmen von Quantisierungsparametern für jedes der Frequenzbänder der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Frequenzbänder der Scheibe; Anwenden einer Codiertechnik auf die gepufferten Frequenzblöcke für die Scheibe, wobei die Codiertechnik die bestimmten Quantisierungsparameter für die Frequenzbänder der Scheibe verwendet, um die Frequenzdaten in den Frequenzblöcken zu komprimieren; und Übertragen der komprimierten Frequenzdaten für die Scheibe über eine drahtlose Verbindung an eine Empfangsvorrichtung.
  11. Verfahren nach Anspruch 10, wobei die Komplexitätsstatistiken eines oder mehrere von Pixelgradienteninformationen oder einer Varianz der Frequenzblockgröße für die Scheibe einschließen.
  12. Verfahren nach Anspruch 10, ferner umfassend ein Bestimmen der Quantisierungsparameter für jedes der Frequenzbänder der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Frequenzbänder der Scheibe in Kombination mit einer tatsächlichen Anzahl von Bits, die zum Codieren einer zusammen angeordneten Scheibe eines zuvor verarbeiteten Videobilds verwendet wurden.
  13. Verfahren nach Anspruch 10, ferner umfassend ein Verfolgen einer derzeitigen verfügbaren Bitrate für die drahtlosen Verbindung, wobei das Bestimmen der Quantisierungsparameter für die Frequenzbänder der Scheibe ein Zuordnen der derzeitigen verfügbaren Bitrate unter den Frequenzbändern einschließt.
  14. Verfahren nach Anspruch 10, ferner umfassend ein Verfolgen einer derzeitigen verfügbaren Bitrate für die drahtlose Verbindung und einer derzeitigen Rate verworfener Pakete auf der drahtlosen Verbindung, wobei das Bestimmen der Quantisierungsparameter für die Frequenzbänder der Scheibe ein Anpassen der Quantisierungsparameter für die Frequenzbänder einschließt, um die Rate verworfener Pakete zu minimieren, während die verfügbare Bandbreitennutzung bei der derzeitigen verfügbaren Bitrate maximiert wird.
  15. Verfahren nach Anspruch 10, ferner umfassend ein Bestimmen der Quantisierungsparameter für die Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Scheibe in Kombination mit Komplexitätsstatistiken von einem vorhergehenden Bild und einem fovealen Bereich des vorhergehenden Bilds.
  16. Verfahren nach Anspruch 15, wobei das Bestimmen der Quantisierungsparameter für die Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Scheibe in Kombination mit Komplexitätsstatistiken von einem vorhergehenden Bild und einem fovealen Bereich des vorhergehenden Bilds ein Modulieren der Komplexitätsstatistiken von dem vorhergehenden Bild gemäß dem fovealen Bereich des vorhergehenden Bilds und ein Verwenden der modulierten Komplexitätsstatistiken von dem vorhergehenden Bild in Kombination mit den Komplexitätsstatistiken für die Scheibe, um die Quantisierungsparameter zu bestimmen, umfasst.
  17. System, umfassend: eine Vorrichtung, die einen oder mehrere Prozessoren und ein Anzeigesubsystem umfasst; eine Basisstation, die einen oder mehrere Prozessoren umfasst, die ausgelegt sind zum: Anwenden einer Wavelet-Transformation auf eine Vielzahl von Pixelblöcken aus einer Scheibe eines derzeitigen Videobilds, um die Pixelblöcke aus der Scheibe in eine Vielzahl von Frequenzbändern zu zerlegen und Frequenzblöcke, die Frequenzdaten für die Frequenzbänder für die Scheibe einschließen, an einen Puffer auszugeben; Berechnen von Komplexitätsstatistiken über die gepufferten Frequenzbänder der Scheibe und Ausgeben der Komplexitätsstatistiken für die Frequenzbänder der Scheibe an den Codierer; Bestimmen von Quantisierungsparametern für jedes der Frequenzbänder der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Frequenzbänder der Scheibe; Anwenden einer Codiertechnik auf die gepufferten Frequenzblöcke für die Scheibe, wobei die Codiertechnik die bestimmten Quantisierungsparameter für die Frequenzbänder der Scheibe verwendet, um die Frequenzdaten in den Frequenzblöcken zu komprimieren; und Übertragen der komprimierten Frequenzdaten für die Scheibe über eine drahtlose Verbindung an die Vorrichtung; wobei der eine oder die mehreren Prozessoren der Vorrichtung ausgelegt sind zum: Dekomprimieren der komprimierten Frequenzbänder, die von der Basisstation empfangen werden; Durchführen einer Wavelet-Synthese an den dekomprimierten Frequenzbändern, um die Pixeldaten für das Videobild zu rekonstruieren; und Bereitstellen der rekonstruierten Pixeldaten an das Anzeigesubsystem zur Anzeige.
  18. System nach Anspruch 17, wobei der eine oder die mehreren Prozessoren der Basisstation dafür ausgelegt sind, die Quantisierungsparameter für jedes der Frequenzbänder der Scheibe mindestens teilweise basierend auf den Komplexitätsstatistiken für die Frequenzbänder der Scheibe in Kombination mit Codierinformationen für ein zuvor verarbeitetes Videobild zu bestimmen.
  19. System nach Anspruch 17, wobei der eine oder die mehreren Prozessoren der Basisstation dafür ausgelegt sind, die Quantisierungsparameter für die Frequenzbänder anzupassen, um eine Rate verworfener Pakete auf der drahtlosen Verbindung zu minimieren, während die verfügbare Bandbreitennutzung bei einer derzeitigen verfügbaren Bitrate der drahtlosen Verbindung maximiert wird.
  20. System nach Anspruch 17, wobei die Vorrichtung eine am Kopf befestigte Anzeige (HMD) ist.
DE112019003203.8T 2018-06-28 2019-06-27 Ratensteuerung für videocodierung und -übertragung mit niedriger latenz Pending DE112019003203T5 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US201862691427P 2018-06-28 2018-06-28
US62/691,427 2018-06-28
PCT/US2019/039586 WO2020006287A1 (en) 2018-06-28 2019-06-27 Rate control for low latency video encoding and transmission

Publications (1)

Publication Number Publication Date
DE112019003203T5 true DE112019003203T5 (de) 2021-05-27

Family

ID=67439354

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112019003203.8T Pending DE112019003203T5 (de) 2018-06-28 2019-06-27 Ratensteuerung für videocodierung und -übertragung mit niedriger latenz

Country Status (6)

Country Link
US (2) US11451788B2 (de)
JP (2) JP7249364B2 (de)
KR (2) KR102541392B1 (de)
CN (1) CN112313951A (de)
DE (1) DE112019003203T5 (de)
WO (1) WO2020006287A1 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US11496758B2 (en) 2018-06-28 2022-11-08 Apple Inc. Priority-based video encoding and transmission
US11451788B2 (en) 2018-06-28 2022-09-20 Apple Inc. Rate control for low latency video encoding and transmission
EP3815368A1 (de) * 2018-06-28 2021-05-05 Apple Inc. Videocodierungssystem
EP4005201A1 (de) * 2019-07-28 2022-06-01 Google LLC Verfahren, systeme und medien zur wiedergabe von immersivem videoinhalt mit fovea-meshes
US11830168B2 (en) 2021-03-31 2023-11-28 Tobii Ab Method of compressing image data for network transport
CN114915773B (zh) * 2022-04-08 2023-03-07 中国科学技术大学 一种实现360°vr视频视场重叠失真最小化的稳健传输方法
US20240046410A1 (en) * 2022-08-02 2024-02-08 Qualcomm Incorporated Foveated scaling for rendering and bandwidth workloads

Family Cites Families (47)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH09212623A (ja) 1996-01-30 1997-08-15 Fuji Photo Film Co Ltd 画像処理方法
IL117133A (en) 1996-02-14 1999-07-14 Olivr Corp Ltd Method and system for providing on-line virtual reality movies
JP4686516B2 (ja) 1997-12-05 2011-05-25 株式会社ユニバーサルエンターテインメント 遊技機
EP0940994B1 (de) * 1998-03-06 2014-04-16 Canon Kabushiki Kaisha Bildverarbeitungsvorrichtung und -verfahren, und Speichermedium mit gespeicherten Schritten für ein solches Verfahren
JP3597780B2 (ja) 1998-03-20 2004-12-08 ユニヴァーシティ オブ メリーランド 注目領域に対する有損失/無損失の画像符号化
JP2000115782A (ja) * 1998-10-06 2000-04-21 Canon Inc 符号化装置及び方法及び記憶媒体
AU762996B2 (en) 1999-02-09 2003-07-10 Motorola Australia Pty Ltd An image compression system and method of determining quantisation parameters therefor
KR100580158B1 (ko) 1999-06-12 2006-05-15 삼성전자주식회사 화상 패킷 전송을 위한 무선통신 시스템
US20030067476A1 (en) 2001-10-04 2003-04-10 Eastman Kodak Company Method and system for displaying an image
JP2003152544A (ja) 2001-11-12 2003-05-23 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
US7106907B2 (en) * 2002-10-18 2006-09-12 Mitsubishi Electric Research Laboratories, Inc Adaptive error-resilient video encoding using multiple description motion compensation
US6757434B2 (en) * 2002-11-12 2004-06-29 Nokia Corporation Region-of-interest tracking method and device for wavelet-based video coding
JP4151963B2 (ja) 2003-09-19 2008-09-17 株式会社リコー 画像サーバ装置、クライアント装置、動画像配信方法、プログラム、及び、情報記録媒体
US7623719B2 (en) 2003-09-26 2009-11-24 The Regents Of The University Of California Video encoding methods and devices
US9325998B2 (en) * 2003-09-30 2016-04-26 Sharp Laboratories Of America, Inc. Wireless video transmission system
KR100654436B1 (ko) 2004-07-07 2006-12-06 삼성전자주식회사 비디오 코딩 방법과 디코딩 방법, 및 비디오 인코더와디코더
JP2006222555A (ja) 2005-02-08 2006-08-24 Matsushita Electric Ind Co Ltd 符号化装置及び符号化方法
US8768084B2 (en) * 2005-03-01 2014-07-01 Qualcomm Incorporated Region-of-interest coding in video telephony using RHO domain bit allocation
US8503536B2 (en) * 2006-04-07 2013-08-06 Microsoft Corporation Quantization adjustments for DC shift artifacts
US20080062322A1 (en) * 2006-08-28 2008-03-13 Ortiva Wireless Digital video content customization
JP4254867B2 (ja) 2007-01-31 2009-04-15 ソニー株式会社 情報処理装置および方法、プログラム、並びに記録媒体
US8064708B2 (en) * 2007-02-28 2011-11-22 Arizona Board Of Regents On Behalf Of The University Of Arizona Methods and systems for remotely visualizing images
JP2009044483A (ja) * 2007-08-09 2009-02-26 Panasonic Corp 画像符号化装置
JP4979655B2 (ja) * 2008-08-07 2012-07-18 キヤノン株式会社 画像符号化装置及びその制御方法
US8406297B2 (en) * 2008-10-17 2013-03-26 Futurewei Technologies, Inc. System and method for bit-allocation in video coding
JP2010239288A (ja) * 2009-03-30 2010-10-21 Sony Corp 情報処理装置および方法
US8976856B2 (en) * 2010-09-30 2015-03-10 Apple Inc. Optimized deblocking filters
CN102056011B (zh) * 2010-12-29 2012-10-24 南京邮电大学 一种h264编码实时性能优化方法
US20140192862A1 (en) * 2013-01-07 2014-07-10 Research In Motion Limited Methods and systems for prediction filtering in video coding
US9215472B2 (en) * 2013-09-27 2015-12-15 Apple Inc. Parallel hardware and software block processing pipelines
US9531915B2 (en) * 2013-12-04 2016-12-27 Aspeed Technology Inc. Image encoding system and method thereof
US20150215621A1 (en) * 2014-01-30 2015-07-30 Qualcomm Incorporated Rate control using complexity in video coding
US10264269B2 (en) 2014-10-13 2019-04-16 Apple Inc. Metadata hints to support best effort decoding for green MPEG applications
US9872201B2 (en) 2015-02-02 2018-01-16 Accelerated Media Technologies, Inc. Systems and methods for electronic news gathering
JP6616592B2 (ja) * 2015-05-20 2019-12-04 日本放送協会 符号化装置及びそのプログラム
US20160353146A1 (en) 2015-05-27 2016-12-01 Google Inc. Method and apparatus to reduce spherical video bandwidth to user headset
KR20170017573A (ko) * 2015-08-07 2017-02-15 삼성전자주식회사 영상 데이터 처리 방법 및 이를 지원하는 전자 장치
JP6722995B2 (ja) 2015-10-23 2020-07-15 キヤノン株式会社 符号化方法及び符号化装置、撮像装置及びプログラム
US9955176B2 (en) 2015-11-30 2018-04-24 Intel Corporation Efficient and scalable intra video/image coding using wavelets and AVC, modified AVC, VPx, modified VPx, or modified HEVC coding
US10310266B2 (en) 2016-02-10 2019-06-04 Advanced Micro Devices, Inc. Method and system for streaming information in wireless virtual reality
US10169846B2 (en) 2016-03-31 2019-01-01 Sony Interactive Entertainment Inc. Selective peripheral vision filtering in a foveated rendering system
US9940697B2 (en) 2016-04-15 2018-04-10 Gopro, Inc. Systems and methods for combined pipeline processing of panoramic images
US11184624B2 (en) * 2016-05-19 2021-11-23 Qualcomm Incorporated Regional random access in pictures
US20180040164A1 (en) 2016-08-05 2018-02-08 Gopro, Inc. Apparatus and methods for selective coding of images
JP2018061141A (ja) * 2016-10-05 2018-04-12 富士通株式会社 通信装置および通信方法
KR102543444B1 (ko) * 2017-08-29 2023-06-13 삼성전자주식회사 영상 부호화 장치
US11451788B2 (en) 2018-06-28 2022-09-20 Apple Inc. Rate control for low latency video encoding and transmission

Also Published As

Publication number Publication date
KR20210009367A (ko) 2021-01-26
KR102449052B1 (ko) 2022-09-29
KR20220143127A (ko) 2022-10-24
KR102541392B1 (ko) 2023-06-13
US20230009707A1 (en) 2023-01-12
JP2021526774A (ja) 2021-10-07
JP2022180545A (ja) 2022-12-06
US11451788B2 (en) 2022-09-20
JP7249364B2 (ja) 2023-03-30
CN112313951A (zh) 2021-02-02
JP7490726B2 (ja) 2024-05-27
US20210127117A1 (en) 2021-04-29
WO2020006287A1 (en) 2020-01-02

Similar Documents

Publication Publication Date Title
DE112019003203T5 (de) Ratensteuerung für videocodierung und -übertragung mit niedriger latenz
AU2018372561B2 (en) Image compression for digital reality
DE112014002469B4 (de) System und Verfahren zur Erzeugung von Bildern für eine augennaheLichtfeldanzeige
DE102013022256A1 (de) Verbesserung der Zuweisung eines Bitratensteuerungswerts für Video-Datenstromübertragung auf der Grundlage eines Aufmerksamkeitsbereichs eines Spielers
US20230092305A1 (en) Priority-based video encoding and transmission
DE112016002377T5 (de) Streamen von sphärischem video
US20230254510A1 (en) Video encoding system
DE112017004918T5 (de) Hybrides Stereo-Rendering für Tiefenverlängerung in dynamischen Lichtfeldanzeigen
US12010327B2 (en) Block-based low latency rate control
DE102021127982A1 (de) Streaming eines lichtfeldes mit verlustfreier oder verlustbehafteter kompression
DE102018130085A1 (de) Erzeugen eines 2d-videos aus einem 360-video
DE112019000210T5 (de) Würfelbasiertes Projektionsverfahren, welches unterschiedliche Abbildungsfunktionen auf unterschiedliche quadratische Projektionsflächen, unterschiedliche Achsen und/oder unterschiedliche Lagen einer Achse anwendet

Legal Events

Date Code Title Description
R012 Request for examination validly filed