-
Querverweis auf die zugehörige(n) Patentanmeldung(en)
-
Die vorliegende Offenbarung ist Teil einer nicht-vorläufigen Anmeldung, die die Prioritäten der am 17. Oktober 2016 bzw. 20. Oktober 2016 eingereichten vorläufigen
US-Patentanmeldung Nr. 62/408,867 und 62/410,414 beansprucht. Die Inhalte der oben aufgeführten Anmeldungen werden hierin durch Verweis aufgenommen.
-
Technisches Gebiet
-
Die vorliegende Offenbarung bezieht sich im Allgemeinen auf die Lieferung von Medieninhalten. Insbesondere bezieht sich die vorliegende Offenbarung auf die Unterstützung einer Region von Interesse (ROI) oder eines Viewports für eine 360-Grad-virtuelle-Realität (360VR) -Videopräsentation.
-
Hintergrund
-
Sofern hierin nicht anders angegeben, sind die in diesem Abschnitt beschriebenen Ansätze kein Stand der Technik für die nachfolgend aufgeführten Ansprüche und werden durch die Aufnahme in diesen Abschnitt nicht als Stand der Technik anerkannt.
-
Die Videokodierung wird in einem großen Spektrum von Anwendungen eingesetzt, das sich über Multimedia-Messaging, Videotelefonie und Videokonferenzen über mobiles Fernsehen, drahtloses und Internet-Video Streaming, standard- und hochauflösende Fernsehübertragungen sowie virtuelle Realität (VR) erstreckt. Darüber hinaus werden Videoinhalte an eine Vielzahl von Dekodiergeräten mit heterogener Anzeige und Rechenleistung geliefert.
-
360-Grad-virtuelle-Realität (360VR) ist eine audiovisuelle Simulation einer veränderten, erweiterten oder substituierten Umgebung. Das Video der virtuellen Realität umgibt den Nutzer und ermöglicht es ihm, sich in jeder Richtung oder in jeden beliebigen Blickwinkel umzusehen, genauso wie er es im wirklichen Leben kann. 360VR-Videos produzieren qualitativ hochwertige und hochauflösende Panoramavideos für den Einsatz in der Produktion von gedruckten und virtuellen Panoramatouren für eine Vielzahl von Anwendungen, wie z.B. Unterhaltung, Pilotenausbildung, Chirurgie und Erforschung von Weltraum oder Tiefsee.
-
Zusammenfassung
-
Die folgende Zusammenfassung dient nur zur Veranschaulichung und soll in keiner Weise einschränkend wirken. Das heißt, die folgende Zusammenfassung dient dazu, Konzepte, Highlights, Vorteile und Vorzüge der hierin beschriebenen neuen und nicht offensichtlichen Techniken vorzustellen. Ausgewählte und nicht alle Implementierungen werden im Folgenden in der detaillierten Beschreibung näher beschrieben. Daher soll die folgende Zusammenfassung nicht dazu dienen, wesentliche Merkmale des beanspruchten Gegenstands zu bestimmen, noch ist sie für die Bestimmung des Umfangs des beanspruchten Gegenstands bestimmt.
-
Ein Streaming-Encoder empfängt Medieninhalte für eine Referenzmedienpräsentation. Der Streaming-Encoder kodiert den empfangenen Medieninhalt als eine Vielzahl von Komponentenspuren. Jede Komponentenspur enthält Medien- oder Metadatenabschnitte (Medien- oder Metadaten-Samples) für eine Komponente der Referenzmedienpräsentation. Der Streaming-Encoder kodiert eine erhaltene Spur, die (i) eine oder mehrere der Vielzahl von Komponentenspuren referenziert und (ii) einen Satz von Operationen zum Konstruieren von Medien- und Metadatenabschnitten einer Teilregion der Referenzmedienpräsentation basierend auf den Medien- oder Metadatenabschnitten der referenzierten Komponentenspuren spezifiziert. Der Streaming-Encoder speichert die kodierten Komponentenspuren und die kodierte erhaltene Spur zum Abruf (z.B. per Streaming, Download, etc.) als Streaming-Datei.
-
Ein Streaming-Decoder empfängt eine Streaming-Medien-Datei, die die erhaltene Spur für die Referenzmedienpräsentation enthält. Der Streaming-Decoder wählt eine Teilregion (z.B. eine ROI) in der Referenzmedienpräsentation aus. Der Streaming-Decoder ruft die erhaltene Spur aus der Streaming-Medien-Datei ab. Der Streaming-Decoder empfängt die referenzierten Komponentenspuren, die von der erhaltenen Spur referenziert werden. Durch das Ausführen des durch die erhaltene Spur spezifizierten Satzes von Operationen stellt dann der Streaming-Decoder Medienabschnitte für die ausgewählte Teilregion bereit.
-
In einigen Ausführungsformen kann der spezifizierte Satz von Operationen eine Anweisung beinhalten, um eine Teilregionsspur gemäß Metadatenabschnitten, die in einer oder mehreren der referenzierten Komponentenspuren gespeichert sind, zu konstruieren. Die Anweisung kann Spurreferenzen auf eine oder mehrere Komponentenspuren beinhalten, die Medienabschnitte speichern, und auf eine oder mehrere Komponentenspuren, die Metadatenabschnitte speichern. Die Anweisung kann auch einen Konstruktor beinhalten, der die Spurreferenzen auf eine oder mehrere Komponentenspuren, die Medienabschnitte speichern, und auf eine oder mehrere Komponentenspuren, die Metadatenabschnitte speichern, aufruft. Die Anweisung kann auch Spurreferenzen auf eine oder mehrere Komponentenspuren beinhalten, die Medienabschnitte speichern, und einen Indikator für die Anzeige, dass Metadatenabschnitte in der erhaltenen Spur gespeichert sind.
-
Figurenliste
-
Die beigeleitenden Zeichnungen sind beigefügt, um ein besseres Verständnis der vorliegenden Offenbarung zu ermöglichen, und sie sind in die vorliegende Offenbarung integriert und bilden einen Teil dieser Offenbarung. Die Zeichnungen veranschaulichen Umsetzungen der vorliegenden Offenbarung und dienen zusammen mit der Beschreibung dazu, die Prinzipien der vorliegenden Offenbarung zu erklären. Es ist zu bemerken, dass die Zeichnungen nicht notwendigerweise maßstäblich sind, da einige Komponenten in anderen Proportionen als in der tatsächlichen Umsetzung gezeigt sind, um das Konzept der vorliegenden Offenbarung deutlich zu machen.
- 1 zeigt konzeptionell die dynamische Konstruktion einer beliebig ausgewählten Teilregion für eine Referenzmedienpräsentation.
- 2 zeigt die Kodierung, den Transport und die Dekodierung einer generierten Medien-Datei, die die dynamische Konstruktion einer beliebig ausgewählten Teilregion unterstützt.
- 3 zeigt eine beispielhafte Implementierung des Streaming-Encoders.
- 4 zeigt eine beispielhafte Implementierung des Streaming-Decoders.
- 5 zeigt einen Signalisierungsmechanismus, der auf einem Spur-Konstruktor basiert.
- 6 zeigt einen Signalisierungsmechanismus, der auf Viewport- oder ROI-Definition-Metadaten basiert.
- 7 zeigt einen Signalisierungsmechanismus, der auf der Viewport-/ROI-Definitionsabschnitt-Beschreibung basiert.
- 8 zeigt die beispielhafte Syntax einer Abschnitt-ROI-Transformationseigenschaft.
- 9 zeigt die beispielhafte Syntax einer Abschnitt-Viewport-T ra nsfo rmationseigenschaft.
- 10 zeigt eine Tabelle mit möglichen Werten für die Parameterform.
- 11 zeigt konzeptionell einen Prozess, der zum Generieren von Komponentenspuren und mindestens einer erhaltenen Spur auf mindestens einige der Komponentenspuren referenziert.
- 12 zeigt konzeptionell einen Prozess zum dynamischen Konstruieren einer bestimmten Teilregion (z.B. ROI oder Viewport) basierend auf einer erhaltenen Spur in einer Streami ng-Medien-Datei.
- 13 zeigt einen beispielhaften Video-Encoder.
- 14 zeigt einen beispielhaften Video-Decoder.
- 15 zeigt konzeptionell ein elektronisches System, mit dem einige Ausführungsformen der vorliegenden Offenbarung implementiert sind.
-
Detaillierte Beschreibung
-
In der folgenden detaillierten Beschreibung werden zahlreiche spezifische Details mit Hilfe von Beispielen dargelegt, um ein gründliches Verständnis der relevanten Lehren zu vermitteln. Jegliche Variationen, Ableitungen und/oder Erweiterungen, die auf den hierin beschriebenen Lehren basieren, fallen in den Schutzbereich der vorliegenden Offenbarung. In einigen Fällen können bekannte Methoden, Verfahren, Komponenten und/oder Schaltungen, die sich auf eine oder mehrere hierin offenbarte Beispielimplementierungen beziehen, auf einem relativ hohen Niveau ohne Details beschrieben werden, um unnötige Verschleierungen von Aspekten der Lehren der vorliegenden Offenbarung zu vermeiden.
-
Dynamische ROI-Konstruktion auf Basis einer erhaltenen Spur
-
Für Anwendungen wie virtuelle Realität (VR), Free Viewpoint Television (FTV), Region von Interesse (ROI) und Video-Kachel-Zusammensetzung bieten einige Ausführungsformen der Offenbarung ein Verfahren und/oder System, das die dynamische Konstruktion einer vom Nutzer ausgewählten Teilregion (z.B. Viewport oder ROI) aus anderen Teilregionen einer Referenzmedienpräsentation unterstützt. Auf der Streaming-Encoder- und/oder Senderseite des Systems können verschiedene räumliche Objekte (z.B. verschiedene Teilregionen, Ansichten, Winkel, Viewports, ROIs usw.) kodiert und als verschiedene Komponentenspuren in einer Streaming-Medien-Datei übertragen werden. Auf der Decoder- und/oder Empfängerseite des Systems kann ein Nutzer dynamisch oder willkürlich eine Teilregion in der Referenzmedienpräsentation auswählen, und der Decoder konstruiert den Inhalt der dynamisch ausgewählten Teilregion aus den verschiedenen Komponentenspuren in der Streaming-Medien-Datei.
-
Eine Referenzmedienpräsentation ist eine Video-, Audio- und/oder andere Art von Medieninhalt (z.B. Bildunterschriften und zeitgesteuerter Text), die mehrere verschiedene Komponenten enthalten können. Diese Komponenten können visuelle oder akustische Komponenten sein, die unterschiedliche räumliche und/oder zeitliche Positionen der Referenzmedienpräsentation einnehmen. Beispiele für solche Komponenten können grafische Überlagerungen, Videoclips, Audioclips oder definierte Teilregionen sein. Eine definierte Teilregion kann einer/einem bestimmten Ausrichtung, Winkel, Ansicht, Region, Viewport oder ROI der größeren Referenzmedienpräsentation entsprechen. So kann beispielsweise die Referenzmedienpräsentation eine 360-Grad-VR (360VR) -Präsentation sein, die omnidirektionale Bilder in einem platonischen festen Projektionsformat (z.B. Würfelkartenprojektion, Oktaederprojektion) oder in einer anderen Art von Projektionsformat (z.B. Gleichwinkelprojektion, Gleichflächenprojektion) enthält. In diesen Fällen können die verschiedenen Komponenten zu verschiedenen Flächen oder Teilregionen der omnidirektionalen Bilder korrespondieren. Die verschiedenen Komponenten können auch zu unterschiedlichen ROIs oder Viewports (z.B. vordefiniert vom Autor der Referenzmedienpräsentation) verschiedener Abschnitte der 360VR-Präsentation korrespondieren.
-
Jede Komponente verfügt über korrespondierende Medienabschnitte und/oder Metadaten, die in korrespondierenden Komponentenspuren einer Streaming-Medien-Datei gespeichert werden können. Medienabschnitte einer Komponente können Abschnitte von komprimierten Bild- oder Tonwerten für diese Komponente beinhalten. Metadatenabschnitte einer Komponente definieren Metadaten der Komponente, einschließlich der räumlichen und zeitlichen Eigenschaften der Komponente, wie Position, Zeit-Informationen, Transformationseigenschaften oder eine ROI.
-
1 zeigt konzeptionell den dynamischen Aufbau einer beliebig ausgewählten Teilregion für eine Referenzmedienpräsentation 110. Die Referenzmedienpräsentation 110 ist eine 360VR-Präsentation mit mehreren Komponenten 111-119. Die Figur zeigt die Komponenten 111-119 als vordefinierte ROIs oder Viewports der 360VR-Präsentation 110. In einigen Ausführungsformen können die Komponenten 111-119 auch unterschiedliche Ansichten oder Flächen der omnidirektionalen Bilder in der 360VR-Präsentation sein.
-
Die Komponenten 111-119 der Referenzmedienpräsentation werden in mehrere Komponentenspuren 121-130 kodiert. Die Komponentenspuren 121-129 enthalten Abschnitte von Medieninhalten und/oder Definitionsmetadaten für die Komponenten (ROIs oder Ansichten) 111-119. Die Komponentenspuren 130 können eine oder mehrere Spuren beinhalten, die zu anderen Komponenten der Referenzmedienpräsentation 110 korrespondieren, wie beispielsweise Audiospuren, zeitgesteuerte Textspuren, Metadatenspuren oder erhaltene Spuren. Auch wenn nicht gezeigt, beinhalten die Komponentenspuren 121-129 in einigen Ausführungsformen sowohl Medienspuren als auch Metadatenspuren, wobei die Medienspuren zum Speichern oder Erhalten der Abschnitte des Medieninhalts der ROIs verwendet werden, und die Metadatenspuren zum Speichern von Abschnitten von Definitionsmetadaten oder zeitgesteuerten Metadaten der ROIs verwendet werden.
-
Die Figur veranschaulicht auch eine erhaltene Spur 120, die Anweisungen oder Informationen zum Erhalten von Medieninhalten durch Referenzierung auf eine oder mehrere der Komponentenspuren 121-130 spezifiziert. Der erhaltene Inhalt kann verwendet werden, um dynamisch eine Echtzeit-ROI oder einen Viewport 105 zu erstellen. Die dynamisch konstruierte Echtzeit (RT) ROI 105 kann ein Teil der Referenzmedienpräsentation 110 sein, der vom Nutzer beliebig gewählt wird (spezifiziert durch Teilregion-Auswahl 222). Die Position der Echtzeit-ROI 105 in der Referenzmedienpräsentation kann beliebig bestimmt werden, wenn die Referenzmedienpräsentation 110 angezeigt wird, statt statisch bestimmt zu werden, wenn die Referenzmedienpräsentation 110 in die Komponentenspuren 121-130 kodiert wird.
-
Die durch die erhaltene Spur 120 spezifizierten Anweisungen oder Informationen ermöglichen es, den Inhalt der Teilregion 105 dynamisch oder bei Bedarf aus dem Inhalt der Komponentenspuren 121-130 zu konstruieren, statt in einer Streaming-Medien-Datei fest kodiert oder vorgeneriert zu sein. In dem in 1 dargestellten Beispiel wird die Teilregion 105 vom Nutzer so gewählt, dass sie die vordefinierte ROI 112 überlappt. Dementsprechend kann der Inhalt der Teilregion 105 basierend auf den in der erhaltenen Spur 120 angegebenen Anweisungen aus den Medienabschnitten und/oder Metadaten erhalten werden, die in korrespondierenden Komponentenspuren (z.B. der Komponentenspur 122) gespeichert sind.
-
Auch wenn es nicht gezeigt ist, können die Komponentenspuren einer Referenzmedienpräsentation mehrere erhaltene Spuren aufweisen. Darüber hinaus kann eine erhaltene Spur auf andere erhaltene Spuren in rekursiver oder verschachtelter Form referenzieren. Für einige Ausführungsformen können die Komponentenspuren 121-130 eine oder mehrere erhaltene Spuren (zusätzlich zur erhaltenen Spur 120) beinhalten.
-
In einigen Ausführungsformen generiert ein Streaming-Encoder eine Streaming-Medien-Datei basierend auf empfangenen Medieninhalten für eine Referenzmedienpräsentation. Der Streaming-Encoder kodiert den empfangenen Medieninhalt als eine Vielzahl von Komponentenspuren. Jede Komponentenspur enthält Medienabschnitte. Der Streaming-Encoder kodiert eine erhaltene Spur, die (i) eine oder mehrere der Vielzahl von Komponentenspuren referenziert und (ii) einen Satz von Operationen zum Erhalten von Medienabschnitten einer Teilregion der Referenzmedienpräsentation basierend auf den Medienabschnitten aus den referenzierten Komponentenspuren spezifiziert. Der Streaming-Encoder speichert oder sendet die kodierten Komponentenspuren und die kodierte erhaltene Spur als Teil der Streaming-Medien-Datei. In einigen Ausführungsformen werden einige der kodierten Komponentenspuren durch die Streaming-Medien-Datei referenziert, aber nicht an den Decoder übertragen.
-
Ein Streaming-Decoder empfängt die Streaming-Medien-Datei (oder ruft die erhaltene Spur und mindestens einen Teil der Vielzahl von Komponentenspuren durch z.B. Streaming, Download oder Ableitung ab). Der Streaming-Decoder wählt eine Teilregion (z.B. eine ROI) der Referenzmedienpräsentation aus und stellt durch das Ausführen des durch die erhaltene Spur spezifizierten Satzes von Operationen Medienabschnitte für die ausgewählte Teilregion bereit.
-
2 zeigt die Kodierung, den Transport und die Dekodierung einer generierten Medien-Datei, die den dynamischen Aufbau einer ausgewählten Teilregion unterstützt. Wie dargestellt, empfängt ein Streaming-Encoder 210 den Medieninhalt der Referenzmedienpräsentation 110 von einer Medieninhalt- Quelle 215 und generiert die Komponentenspuren 121-129. Der Streaming-Encoder generiert auch eine erhaltene Spur 120, welche auf eine oder mehrere der Komponentenspuren 121-129 referenzieren kann. Der Streaming-Encoder 210 liefert die Streaming-Medien-Datei 240, die die erhaltene Spur 120 enthält, über das Übertragungsmedium 250 an einen Streaming-Decoder 220. Der Streaming-Decoder 220 empfängt die Streaming-Medien-Datei 240, ruft die von der erhaltenen Spur 120 in nachfolgenden Streaming-Medien-Dateien 245 benötigten Komponentenspuren ab und konstruiert für die Anzeige die ausgewählte Teilregion 105 gemäß den in der erhaltenen Spur 120 spezifizierten Operationen aus den abgerufenen Komponentenspuren.
-
Die Quell-Medieninhalte 215 stellen Medieninhalte bereit, die durch den Streaming-Encoder für die Referenzmedienpräsentation 110 kodiert werden. Die bereitgestellten Medieninhalte können in Form von Pixelwerten, analogen Videosignalen oder anderen Formen von Datensignalen vorliegen. Die Quell-Medieninhalte 215 stellen den Inhalt der verschiedenen Komponenten der Referenzmedienpräsentation dar. Für einige Ausführungsformen, in denen die Referenzmedienpräsentation 110 eine 360VR-Präsentation ist, können verschiedene Kameras, die in verschiedenen Winkeln positioniert sind, verschiedene Teilregionen der omnidirektionalen Bilder erfassen (z.B. Flächen, Ansichten, ROIs, Viewports).
-
Der Streaming-Encoder 210 empfängt den Inhalt der verschiedenen Komponenten der Referenzmedienpräsentation 110 von den Quell-Medieninhalten 215, um die Komponentenspuren 121-130 und die erhaltene Spur 120 zu generieren. Die erhaltene Spur 120 und die Komponentenspuren 121-130 werden selektiv in Streaming-Medien-Dateien (z.B. 240 oder 245) verpackt. In einigen Ausführungsformen befinden sich die Streaming-Medien-Dateien 240 und 245 im ISO Base Media Datei Format (ISOBMFF, definiert nach ISO/IEC 14496-12) und sind in einem Streaming-Transportformat, wie Dynamic Adaptive Streaming over HTTP (DASH) gekapselt, um den Transport durch das Übertragungsmedium 250 zu erleichtern.
-
Die Streaming-Medien-Datei 240 enthält die erhaltene Spur 120. Die Stream-Medien-Datei 240 kann eine oder mehrere der Komponentenspuren 121-130 enthalten. In einigen Ausführungsformen enthält die Streaming-Medien-Datei 240 nicht die tatsächlichen Komponentenspuren 121-130, sondern nur Referenzen auf diese Spuren. Der Streaming-Decoder 220 kann beim Empfangen der Streaming-Medien-Datei 240 die darin enthaltenen Referenzen verwenden, um die benötigten Komponentenspuren abzurufen, indem er z.B. nachfolgende Streaming-Medien-Dateien 245 vom Streaming-Encoder 210 anfordert.
-
3 zeigt eine beispielhafte Implementierung des Streaming-Encoders 210. Wie gezeigt, beinhaltet der Streaming-Encoder 210 mehrere Video-Encoder 311-319, einen Streaming-Medien-Datei-Setzer 320, einen Encoder 325 für die erhaltene Spur und einen Streaming-Sender 330. In einigen Ausführungsformen sind die Video-Encoder 311-319, der Streaming-Medien-Datei-Setzer 320, der Encoder 325 für die erhaltene Spur und der Streaming-Sender 330 Module von Softwarebefehlen, die von einer oder mehreren Verarbeitungseinheiten (z.B. einem Prozessor) einer Rechenvorrichtung oder einer elektronischen Vorrichtung ausgeführt werden. In einigen Ausführungsformen sind diese Module Module von Hardware-Schaltungen, die durch eine oder mehrere integrierten Schaltungen (ICs) einer elektronischen Vorrichtung implementiert werden. Auch wenn die Module 311-319, 320, 325 und 330 als separate Module dargestellt sind, können einige der Module zu einem einzigen Modul kombiniert werden.
-
Jeder der Video-Encoder 311-319 empfängt einen korrespondierenden Komponenteninhalt (z.B. vordefinierte ROI, eine Ansicht, eine Fläche oder andere Arten von Teilregionen) der Referenzmedienpräsentation 110 und kodiert den jeweiligen Komponenteninhalt, um die entsprechenden Medienabschnitte und/oder Definitionsmetadaten zu generieren. Die Video-Encoder 311-319 können konfiguriert werden, um die Kodierung oder Komprimierung gemäß Videokodierstandards wie H.264, H.265, VP9, etc. durchzuführen. Die Video-Encoder 311-319 können auch die korrespondierenden Kodierungs- oder Kompressionsoperationen gemäß verschiedenen Videokodierungsstandards durchführen. Die Video-Encoder 311-319 können ihre Kodierungs- oder Kompressionsoperationen unabhängig voneinander durchführen. In einigen Ausführungsformen können die Video-Encoder 311-319 auch die Definitionsmetadaten basierend auf Erstellungseingaben bereitstellen.
-
Der Streaming-Medien-Datei-Setzer 320 empfängt den kodierten Komponenteninhalt von den Video-Encodern 311-319 (und anderen Encodern) und generiert die Komponentenspuren 120-130. Die generierten Komponentenspuren 120-130 werden in einem Speicher 100 gespeichert dargestellt, aus dem sie abgerufen und durch Streaming-Medien-Dateien bereitgestellt werden können.
-
Der kodierte Komponenteninhalt jedes Video-Encoders wird in einer korrespondierenden Komponentenspur als Medienabschnitte und/oder Metadatenabschnitte für diese Spur gespeichert. In dem gezeigten Beispiel speichert der Streaming-Medien-Datei-Setzer 320 den von den Video-Encodern 311-319 generierten kodierten Komponenteninhalt jeweils in einer der Komponentenspuren 121-129. Auch wenn es nicht gezeigt ist, beinhaltet der Streaming-Encoder 210 auch einen oder mehrere andere Arten von Medien-Encodern zur Erzeugung anderer Komponentenspuren 130. Diese anderen Medien-Encoder können Encoder für Audiospuren, zeitgesteuerte Textspuren und/oder Metadatenspuren beinhalten.
-
Der Streaming-Encoder 210 generiert auch eine erhaltene Spur 120. Ein Encoder 325 für die erhaltene Spur (der eine Komponente des Streaming-Medien-Datei-Setzers 320 sein kann) generiert die erhaltene Spur 120, indem auf mindestens einige der Komponentenspuren 121-129 referenziert wird. In einigen Ausführungsformen speichert der Encoder 325 für die erhaltene Spur in der erhaltenen Spur 120 Definitionsmetadatenabschnitte. Diese Definitionsmetadatenabschnitte spezifizieren Operationen oder Anweisungen zum Erhalten von Medienabschnitten einer Teilregion der Referenzmedienpräsentation basierend auf den Medien- und/oder Metadatenabschnitten aus den referenzierten Komponentenspuren. Der Empfänger der erhaltenen Spur 120 (z.B. der Streaming-Decoder 220) verwendet die spezifizierten Operationen, um die Medienabschnitte für die ausgewählte Teilregion 105 durch Referenzieren der Komponentenspuren 121-129 zu generieren.
-
Der Streaming-Sender 330 ruft selektiv die generierten Komponentenspuren und/oder die erhaltene Spur aus dem Speicher 100 ab und packt die abgerufenen Spuren in Streaming-Medien-Dateien 240 oder 245 gemäß einem Streaming-Transportformat, wie DASH. Es kann sein, dass die Streaming-Medien-Datei 240 nicht alle Komponentenspuren der Referenzmedienpräsentation enthält, sondern nur die erhaltene Spur 120 und/oder eine begrenzte Teilmenge der Komponentenspuren, die vom Streaming-Decoder 220 angefordert werden.
-
Der Streaming-Decoder 220 empfängt eine Teilregion-Auswahl 222 von einer Benutzeroberfläche 225, die eine durch den Nutzer in Echtzeit ausgewählte Teilregion 105 der Referenzmedienpräsentation 110 anzeigt. Der Streaming-Decoder 220 generiert aus dem Inhalt der empfangenen Streaming-Medien-Datei 240 Inhalte für die ausgewählte Teilregion 105. Eine Anzeigevorrichtung 298 empfängt den generierten Inhalt für die ausgewählte Teilregion und zeigt diesen an. In einigen Ausführungsformen sind der Streaming-Decoder 220, die Benutzeroberfläche 225 und die Anzeigevorrichtung 298 Teile einer elektronischen Vorrichtung 270. Eine solche elektronische Vorrichtung kann eine VR-Anzeigevorrichtung (z.B. eine VR-Brille oder eine mobile Vorrichtung, die zur VR-Anzeige fähig ist) sein, die es dem Nutzer ermöglicht, dynamisch eine Teilregion (Viewport) auszuwählen und den Inhalt dieser Teilregion anzuzeigen. In einigen Ausführungsformen beinhalten der Streaming-Decoder 220, die Benutzeroberfläche 225 und die Anzeigevorrichtung 298 Module von Hardware-Schaltungen, die durch eine oder mehrere integrierte Schaltungen (ICs) der elektronischen Vorrichtung 270 implementiert sind.
-
4 veranschaulicht eine beispielhafte Implementierung des Streaming-Decoders 220. Wie gezeigt, beinhaltet der Streaming-Decoder 220 mehrere Video-Decoder 411-419, einen Medieninhalt-Extrahierer 420, einen Encoder 425 für die erhaltene Spur und einen Streaming-Empfänger 430. In einigen Ausführungsformen sind die Video-Decoder 411-419, der Medieninhalt-Extrahierer 420, der Encoder 425 für die erhaltene Spur und der Streaming-Empfänger 430 Module von Softwarebefehlen, die von einer oder mehreren Verarbeitungseinheiten (z.B. einem Prozessor) einer Rechenvorrichtung oder einer elektronischen Vorrichtung ausgeführt werden. In einigen Ausführungsformen sind diese Module Module von Hardware-Schaltungen, die durch eine oder mehrere integrierten Schaltungen (ICs) einer elektronischen Vorrichtung implementiert werden. Auch wenn die Module 411-419, 420, 425 und 430 als separate Module dargestellt sind, können einige der Module zu einem einzigen Modul kombiniert werden.
-
Der Streaming-Empfänger 430 empfängt durch Durchführung des Streaming-Protokolls (DASH) und Abstreifen der Streaming-Kapselung die Streaming-Medien-Datei 240 vom Übertragungsmedium 250. Der Medieninhalt-Extrahierer 420 extrahiert dann die erhaltene Spur 120 sowie alle Komponentenspuren (z.B. 121-130) aus der empfangenen Streaming-Medien-Datei 240. Die Video-Decoder 411-419 empfangen und dekodieren jeweils eine der Spuren 121-129 gemäß Videokodierstandards wie H.264, H.265 oder VP9. (Die Komponentenspuren 130 werden nicht durch die Video-Decoder 411-419 dekodiert).
-
Der Encoder 425 für die erhaltene Spur empfängt und dekodiert die erhaltene Spur 120. Der Encoder 425 für die erhaltene Spur empfängt auch die dekodierten Medien- und/oder Metadatenabschnitte von den Video-Decodern 411-419. Der Encoder 425 für die erhaltene Spur empfängt auch die Teilregion-Auswahl 222 vom Nutzer 225. Basierend auf der empfangenen Teilregion-Auswahl 222 und dem Inhalt der erhaltenen Spur 120 konstruiert der Encoder 425 für die erhaltene Spur den Medieninhalt der ausgewählten Teilregion 105. Insbesondere kann der Encoder 425 für die erhaltene Spur die durch die in der erhaltenen Spur 120 gespeicherten Definitionsmetadatenabschnitte spezifizierten Operationen ausführen, um die Medienabschnitte für die ausgewählte Teilregion 222 zu generieren. Die generierten Medienabschnitte werden dann als Inhalt der Teilregion 105 an die Anzeigevorrichtung 298 zur Anzeige geliefert.
-
Da es sein kann, dass die dynamisch aufgebaute Teilregion nur einen kleinen Teil der Referenzmedienpräsentation 110 abdeckt (z.B. eine Teilmenge der vordefinierten ROIs), benötigt die Generierung des Inhalts der ausgewählten Teilregion nur eine Teilmenge der Komponentenspuren. Mit anderen Worten, einige der Komponentenspuren, deren Inhalt nicht für das Erhalten des Inhalts der Teilregion 105 benötigt wird. In einigen Ausführungsformen kann der Streaming-Decoder 220 identifizieren, welche Komponentenspuren für die Generierung der ausgewählten Teilregion benötigt werden und welche nicht. Der Stream-Decoder 220 kann nur die Komponentenspuren abrufen und dekodieren, die für die Generierung der ausgewählten Teilregion benötigt werden, wobei nicht benötigten Komponentenspuren nicht abgerufen und dekodiert werden. Der Streaming-Decoder 220 kann nur die benötigten Komponentenspuren vom Streaming-Encoder 210 (oder einer anderen Streamingquelle über das Übertragungsmedium 250) anfordern, während nicht benötigte Komponentenspuren übergangen werden. Der Streaming-Encoder liefert daraufhin nur die angeforderten Komponentenspuren in der Streaming-Medien-Datei 240 (oder in nachfolgenden Streaming-Medien-Dateien 245).
-
II. Signalisierungsmechanismen für erhaltene Spuren
-
5-7 zeigen beispielhafte Signalisierungsmechanismen für Streaming-Übertragungen und Streaming-Medien-Dateien, die eine erhaltene Spur unterstützen, die mehrere andere Komponentenspuren referenziert. Wie bereits in Bezug auf 1 oben erwähnt, erlaubt die erhaltene Spur dem Empfänger, Medieninhalte zu konstruieren, indem auf andere Komponentenspuren der Referenzmedienpräsentation 110 referenziert wird. Eine erhaltene Spur, die in der Lage ist, mehrere andere Komponentenspuren zu referenzieren, ermöglicht es einer korrespondierenden Teilregion (z.B. der beliebig gewählten Teilregion 105), ihren Inhalt basierend auf Viewport- und Regionsdefinitionen aus diesen anderen Komponentenspuren zu erhalten.
-
In einigen Ausführungsformen ist eine erhaltene Spur in ihrer Struktur ähnlich wie jede andere Medienspur in ISOBMFF. Die Signalisierungsmechanismen für den Aufbau von Viewport- oder ROI-Spuren aus anderen Viewport- oder ROI-Spuren basieren auf Kodierung unabhängiger Code-Punkte (CICP)-Definitionen in ISO/IEC/23001-8 und deren Übertragungen in ISOBMFF als zeitgesteuerte Metadaten und Abschnittsbeschreibungen. Die Definitionen der Viewports oder ROIs werden entweder als zeitgesteuerte Metadaten in Metadatenspuren oder als Abschnittsbeschreibungsinformationen in Medienspuren übertragen. Die Signalisierungsmechanismen können Spurreferenztypen im ISOBMFF verwenden, um Komponentenspuren, die als Medienspuren für Abschnitte von Medieninhalten referenziert werden, und Komponentenspuren zu identifizieren, die als Metadatenspuren für Abschnitte von Viewport-/Regionsdefinitionen referenziert werden.
-
In einigen Ausführungsformen kann der spezifizierte Satz von Operationen eine Anweisung enthalten, eine Teilregionsspur gemäß Metadatenabschnitten zu konstruieren, die in den referenzierten Komponentenspuren gespeichert sind. Die Anweisung kann Spurreferenzen auf eine oder mehrere Komponentenspuren, die Medienabschnitte speichern, und eine oder mehrere Komponentenspuren beinhalten, die Metadatenabschnitte speichern. Die Anweisung kann auch einen Konstruktor, der die Spurreferenzen auf eine oder mehrere Komponentenspuren aufruft, die Medienabschnitten speichern, und eine oder mehrere Komponentenspuren beinhalten, die Metadatenabschnitte speichern. Der Befehl kann auch Spurreferenzen auf eine oder mehrere Komponentenspuren, die Medienabschnitte speichern, und einen Indikator für die Anzeige beinhalten, dass Metadatenabschnitte in der erhaltenen Spur gespeichert sind.
-
5 zeigt einen Signalisierungsmechanismus, der auf einem Spur-Konstruktor basiert. Ein „Konstruktor“ ist eine Struktur innerhalb des Streams, die in eine erhaltene Spur als Anweisung zum Erstellen einer Viewport/ROI-Spur, indem auf eine oder mehrere Komponentenspuren (die Viewport/ROI-Spuren sein können) referenziert wird, eingebettet werden kann. Die referenzierten Komponentenspuren werden mit der erhaltenen Spur, in der sich der Konstruktor befindet, durch Verwendung von Spurreferenzen verknüpft (angegeben z.B. durch ‚tref‘ im ISOBMFF). Eine Spurreferenz kann von verschiedenen Typen sein. So kann beispielsweise eine Spurreferenz vom Typ „cnst“ sein, welcher angibt, dass die referenzierte Spur eine Medienspur ist, die Medienabschnitte für Viewport/ROI enthält, oder vom Typ „inst“, welcher angibt, dass die referenzierte Spur eine Metadatenspur ist, die Viewport/ROI-Definition-Metadaten enthält, oder genauer, zeitgesteuerte Metadaten zur Definition von Viewport/ROI.
-
Die Figur zeigt eine Streaming-Medien-Datei 510 mit mehreren Komponentenspuren 511-518 im ISOBMFF. Unter diesen ist die Spur 511 eine erhaltene Spur, die die ‚Konstruktor‘-Struktur aufruft. Der Konstruktor nutzt Spurreferenzen vom Typ ‚cnst‘, um auf Spur 513 und Spur 517 zu referenzieren, um ihre Abschnitte als Medienabschnitte zu verwenden (mit ‚mdat‘ in den Spuren 513 und 517 gespeichert). Der Konstruktor verwendet auch eine Spurreferenz vom Typ ‚inst‘, um auf die Spur 512 zu referenzieren, um ihre Abschnitte (mit ‚mdat‘ in Spur 512 gespeichert) als Definition-Metadaten zu verwenden.
-
Die Figur zeigt auch, wie eine Streaming-Kapselung (z.B. DASH) mit den Spuren der Streaming-Medien-Datei verknüpft ist. Wie gezeigt, verwendet eine Streaming-Kapselung 520 räumliche Beziehungs-Descriptor (SRD)-Konstrukte, um auf die Spuren der Streaming-Medien-Datei 510 zu referenzieren. So ist beispielsweise SRD 521 zu der erhaltenen Spur 511 zugeordnet, SRD 523 ist zu der Komponentenspur 513 zugeordnet und SRD 524 ist zu der Komponentenspur 514 zugeordnet, etc.
-
6 veranschaulicht einen Signalisierungsmechanismus, der auf Viewport- oder ROI-Metadaten basiert. Der Signalisierungsmechanismus verwendet die Spurreferenzen in einer erhaltenen Spur als Anweisungen zum Erstellen einer Viewport/ROI-Spur, indem auf eine oder mehrere Komponentenspuren für Viewports oder ROIs referenziert wird.
-
Die Figur zeigt eine Streaming-Medien-Datei 610 mit mehreren Komponentenspuren 611-618 im ISOBMFF. Unter diesen ist die Spur 611 eine erhaltene Spur. Die erhaltene Spur 611 verwendet ‚tref‘ Spurreferenzen vom Typ ‚cnst‘, um auf auf Spur 613 und Spur 617 zu referenzieren, um ihre Abschnitte als Medienabschnitte zu verwenden (mit ‚mdat‘ in den Spuren 613 und 617 gespeichert). Die erhaltene Spur 611 verwendet auch die Spurreferenz vom Typ ‚inst‘, um auf die Spur 612 zu referenzieren, um ihre Abschnitte (mit ‚mdat‘ in Spur 612 gespeichert) als Definition-Metadaten zu verwenden.
-
Die Figur zeigt auch, wie eine Streaming-Kapselung (z.B. DASH) mit den Spuren der Streaming-Medien-Datei verknüpft ist. Wie gezeigt, verwendet eine Streaming-Kapselung 620 räumliche Beziehungs-Descriptor (SRD)-Konstrukte, um auf die Spuren der Streaming-Medien-Datei 610 zu referenzieren. So ist beispielsweise SRD 621 zu der erhaltenen Spur 611 zugeordnet, SRD 623 ist zu der Komponentenspur 613 zugeordnet und SRD 624 ist der Komponentenspur 614 zugeordnet, etc.
-
7 veranschaulicht einen Signalisierungsmechanismus, der auf der Viewport/ROI-Definitionsabschnitt-Beschreibung basiert. Unter diesem Signalisierungsmechanismus verfügt die erhaltene Spur über Spurreferenzen zum Referenzieren anderer Medienspuren für ihre Medienabschnitte, die erhaltene Spur verfügt auch über einen Indikator (‚stsd‘) zum Anzeigen, dass die erhaltene Spur selbst die Definitionsabschnitt-Beschreibung als Definition-Metadaten für einen Viewport/ROI speichert. Die in den referenzierten Medienspuren gespeicherten Medienabschnitte und die in der erhaltene Spur selbst gespeicherte Definitionsabschnitt-Beschreibung werden wiederum zum Aufbau einer Viewport/ROI-Spur verwendet.
-
Die Figur zeigt eine Streaming-Medien-Datei 710 mit mehreren Komponentenspuren 711-718 im ISOBMFF. Unter diesen ist die Spur 711 eine erhaltene Spur. Die erhaltene Spur 711 verwendet ‚tref‘-Spurreferenzen vom Typ ‚cnst‘, um auf Spur 713 und Spur 717 zu referenzieren, um ihre Abschnitte als Medienabschnitte zu verwenden (mit ‚mdat‘ in den Spuren 713 und 717 gespeichert). Die erhaltene Spur verwendet den Indikator ‚stsd‘, um anzugeben, dass Definitionsmetadaten für ROI/Viewport in der erhaltenen Spur 711 selbst als Definitionsabschnitt-Beschreibung gespeichert sind.
-
Die Figur zeigt auch, wie eine Streaming-Kapselung (z.B. DASH) mit den Spuren der Streaming-Medien-Datei verknüpft ist. Wie gezeigt, verwendet eine Streaming-Kapselung 720 räumliche Beziehungs-Descriptor (SRD)-Konstrukte, um auf die Spuren der Streaming-Medien-Datei 710 zu referenzieren. So ist beispielsweise SRD 721 zu der erhaltenen Spur 711 zugeordnet, SRD 723 ist zu der Komponentenspur 713 zugeordnet und SRD 724 ist zu der Komponentenspur 714 zugeordnet, etc.
-
III. Definition von Metadaten einer ROI oder eines Viewports
-
In einigen Ausführungsformen umfassen die Definition-Metadaten für eine ROI oder einen Viewport Abschnitte von Definition-Metadaten (z.B. die in den Spuren 512, 612 und 711 gespeicherten Metadatenabschnitte). Jeder Abschnitt von Metadaten umfasst eine geordnete Liste von Operationen, die an einer geordneten Liste von Eingangsbildobjekten oder -abschnitten durchzuführen sind.
-
In einigen Ausführungsformen ist jede Operation eine Transformationsoperation vom Typ ‚TransformProperty‘ gemäß ISOBMFF ISO/IEC 14496-12. Beispiele für solche Operationen oder Transformationseigenschaften beinhalten Identität (‚idtt‘, Reproduktion eines Eingangsbildeelements), saubere Blende (‚clap‘, Beschneidungs-Transformation eines Eingangsbildobjekts), Abschnitts-Rotation (‚srot‘, Abschnitts-Rotation eines Eingangsbildobjekts) und Zerfließen (‚dslv‘, weiche Verschmelzung von zwei oder mehr Eingangsbildobjekten).
-
Um die Konstruktion von ROI und/oder Viewport zu unterstützen, bieten einige Ausführungsformen der Offenbarung weiter die folgenden Operationen oder Transformationseigenschaften: Abschnitt-ROI (‚sroi‘) und Abschnitt-Viewport (‚svpt‘). Diese Operationen können die gleiche Syntax haben wie der zeitgesteuerte ROI-Metadaten-Abschnitt-Eintrag, der in ISO/IEC 23001-10 definiert ist.
-
Die Abschnitt-ROI (‚sroi‘) -Transformation-Eigenschaft (oder Operation) extrahiert eine ROI aus dem Eingangsbildobjekt oder einer Liste von Eingangsbildobjekten gemäß einer ROI-Definition. 8 zeigt die beispielhafte Syntax der Abschnitt-ROI-Transformation-Eigenschaft. Im Folgenden werden die Semantiken in der beispielhaften Syntax für die Abschnitt-ROI-Transformation-Eigenschaft erläutert:
-
Die Parameter reference_width und reference_height geben jeweils die Breite und Höhe des Referenzrechteckraums an, in dem alle ROI-Koordinaten (top_left_x, top_left_y, width und height) berechnet werden. Diese Felder erlauben es, eine ROI-Metadatenspur mit Videospuren unterschiedlicher Auflösungen, die jedoch die gleiche visuelle Quelle darstellen, zu verknüpfen.
-
Die Parameter top_left_x und top_left_y geben jeweils die horizontale und vertikale Koordinate der linken oberen Ecke des Rechteckbereichs an, der zu dem Medienabschnitt der referenzierten Spur zugeordnet ist.
-
Die Parameter width und height geben jeweils die Breite und Höhe des Rechteckbereichs an, der zu dem Medienabschnitt der referenzierten Spur zugeordnet ist.
-
Der Parameter interpolate gibt die zeitliche Kontinuität der aufeinanderfolgenden Abschnitte an. Wenn der Parameter auf true gesetzt ist, kann die Anwendung die Werte der ROI-Koordinaten zwischen dem vorherigen Abschnitt und dem aktuellen Abschnitt linear interpolieren. Wenn der Parameter auf false gesetzt ist, soll keine Interpolation der Werte zwischen dem vorherigen und dem aktuellen Abschnitt durchgeführt werden. Bei der Verwendung der Interpolation wird erwartet, dass die interpolierten Abschnitte mit der Darstellungszeit der Abschnitte in der referenzierten Spur übereinstimmen. So wird beispielsweise für jeden Video-Abschnitt einer Videospur ein interpolierter 2D-kartesischer-Koordinaten-Abschnitt berechnet.
-
Abschnitt-Viewport
-
Die Abschnitt-Viewport (‚svpt‘)-Transformations-Eigenschaft konstruiert (oder extrahiert) ein Viewport-Abschnitt-Bild aus dem Eingangsbildobjekt oder einer Liste von Eingangsbildobjekten gemäß einer Viewport-Definition. 9 zeigt die Beispielsyntax für die Abschnitt-Viewport-Transformation-Eigenschaft. Im Folgenden werden die Semantiken in der Beispielsyntax für die Abschnitt-Viewport-Transformation-Eigenschaft erläutert:
-
Der Parameter dimension gibt die Dimension des Freiraumes an, in dem sich der Viewport befindet. Er nimmt einen Wert von 1, 2 oder 3 an.
-
Die Parameter reference_x, reference_y und reference_z geben jeweils die Referenz (Versatz) -werte der x-, y- und z-Achsen-Koordinaten im Referenzsystem an, in denen Werte der Links- und Rechtsbewegung (x), der Auf- und Abbewegung (y) und der Vorwärts- und Rückwärtsbewegung (z) aller Viewports berechnet werden.
-
Die Parameter reference_pitch, reference_yaw und reference_roll geben jeweils die Referenz (Versatz) -werte der Neigungs-, Gier- und Rollwinkel im Bezugssystem an, in dem die Neigungs-, Gier- und Rollwinkel aller Viewports berechnet werden. Die maximalen Bereiche von reference_pitch, reference_yaw und reference_rol sind jeweils [0, 180], [0, 360] und [0, 360], die die maximalen Winkelbereiche [-90, 90], [-180, 180], [-180, 180] für Neigung, Gieren und Rollen darstellen. Die Maximalwertbereiche können auch so gewählt werden, dass sie die maximalen Winkelbereiche [-90, 90], [0, 360], [0, 360] für Neigung, Gieren und Rollen darstellen.
-
Die Parameter reference_2d_width und reference_2d_height geben jeweils die Breite und Höhe des planaren 2D-Rechteckraums an, in dem alle Viewport-Ansicht-Koordinaten (top_left_x, top_left_y, center_x und center_y) berechnet werden.
-
Die Parameter x, y und z geben jeweils die Werte der x-, y- und z-Achsen-Koordinaten im Bezugssystem an, in dem die Links- und Rechtsbewegung (x), die Auf- und Abbewegung (y) und die Vorwärts- und Rückwärtsbewegung (z) des Viewports berechnet werden. Diese Felder ermöglichen es, eine Viewport-Metadatenspur mit Medienspuren unterschiedlicher Qualität, die jedoch dieselbe visuelle Quelle repräsentieren, zu verbinden.
-
Die Parameter pitch, yaw und roll geben jeweils die Werte der Neigungs-, Gier- und Rollwinkel in dem Bezugssystem an, in dem die Neigungs-, Gier- und Rollwinkel des Viewports berechnet werden. Diese Felder ermöglichen es, eine Viewport-Metadatenspur mit Medienabschnitten von referenzierten Medienspuren unterschiedlicher Qualität, die jedoch die gleiche visuelle Quelle repräsentieren, zu verknüpfen.
-
Der Parameter shape zeigt eine Form der Viewport-Ansicht an. 10 zeigt eine Tabelle mit den möglichen Werten für den Parameter shape.
-
Die Parameter top_left_x und top_left_y geben jeweils die horizontalen und vertikalen Koordinaten der linken oberen Ecke der rechteckigen (Form = 1), dreieckigen (Form = 2) und quadratischen (Form = 3) Viewport-Ansicht an, die dem Medienabschnitt der referenzierten Spur zugeordnet sind.
-
Die Parameter width und height geben jeweils die Breite und Höhe der rechteckigen (Form = 1) und dreieckigen (Form = 2) Viewport-Ansicht an, die dem Medienabschnitt der referenzierten Spur zugeordnet sind.
-
Der Parameter rotation gibt die Ausrichtung der dreieckigen (Form = 2) Viewport-Ansicht an, die dem Medienabschnitt der referenzierten Spur zugeordnet ist. Die Werte 0, 1, 2 und 3 repräsentieren jeweils Oberseite oben (keine Drehung), Oberseite unten (180° Drehungen), Oberseite links (90° Drehung gegen den Uhrzeigersinn) und Oberseite rechts (90° Drehung im Uhrzeigersinn).
-
Der Parameter size gibt die Größe des Quadrats (Form = 3) der Viewport-Ansicht an, die dem Medienabschnitt der referenzierten Spur zugeordnet ist.
-
Die Parameter center_x und center_y geben jeweils die horizontalen und vertikalen Koordinaten der Mitte der kreisförmigen (Form = 3) Viewport-Ansicht an, die dem Medienabschnitt der referenzierten Spur zugeordnet ist.
-
Der Parameter radius gibt den Radius der kreisförmigen (Form = 3) Viewport-Ansicht an, die dem Medienabschnitt der referenzierten Spur zugeordnet ist.
-
Der Parameter interpolate gibt die zeitliche Kontinuität der aufeinanderfolgenden Abschnitte an. Wenn der Parameter auf true gesetzt ist, kann die Anwendung Werte der korrespondierenden Viewport-Metadatenattribute zwischen dem vorherigen Abschnitt und dem aktuellen Abschnitt linear interpolieren. Wenn der Parameter auf false gesetzt ist, soll keine Interpolation der Werte zwischen dem vorherigen und dem aktuellen Abschnitt durchgeführt werden. Bei der Verwendung der Interpolation wird erwartet, dass die interpolierten Abschnitte mit der Darstellungszeit der Abschnitte in der referenzierten Spur übereinstimmen. So wird beispielsweise für jeden Video-Abschnitt einer Videospur ein interpolierter Viewport-Definitionsabschnitt berechnet.
-
Es sollte beachtet werden, dass die in den 9-10 dargestellte Syntax die Signalisierung von Viewports verschiedener Abmessungen und Formen unterstützt. Für einige Ausführungsformen kann die Syntax vereinfacht werden, wenn die Dimension und die Form der zu signalisierenden Viewports bekannt und festgelegt sind (z.B. „Dimension = 3“ und „Form = 1“).
-
IV. Beispiel-Prozesse
-
11 zeigt konzeptionell einen Prozess 1100, der zum Generieren von Komponentenspuren und mindestens einer erhaltenen Spur, die auf mindestens einige der Komponentenspuren referenziert. In einigen Ausführungsformen führt ein Streaming-Encoder (z.B. 210) den Prozess 1100 beim Generieren von Streaming-Medien-Dateien (z.B. die Streaming-Medien-Dateien 240, 245, 510, 610 oder 710 in ISOBMFF) aus. In einigen Ausführungsformen führen eine oder mehrere Verarbeitungseinheiten (z.B. ein Prozessor) einer den Streaming-Encoder implementierenden Rechenvorrichtung den Prozess 1100 durch, indem sie Anweisungen ausführen, die auf einem computerlesbaren Medium gespeichert sind.
-
Der Prozess 1100 beginnt, wenn der Streaming-Encoder (bei Schritt 1110) Medieninhalte für eine Referenzmedienpräsentation empfängt. Eine solche Referenzmedienpräsentation kann eine 360VR-Präsentation sein. Die Referenzmedienpräsentation kann mehrere verschiedene Komponenten, wie grafische Überlagerungen, Videoclips, Audioclips und/oder definierte Teilregionen der Präsentation, wie Viewport, ROIs oder Flächen von omnidirektionalen Bildern. beinhalten.
-
Der Streaming-Encoder kodiert (bei Schritt 1120) den empfangenen Medieninhalt als eine Vielzahl von Komponentenspuren, die jeweils Medienabschnitte oder Metadatenabschnitte beinhalten. Eine Komponentenspur kann eine Medienspur sein, die Medienabschnitte einer korrespondierenden Komponente der Referenzmedienpräsentation enthält (z.B. Videoabschnitte eines Viewports oder einer ROI). Eine Komponentenspur kann auch eine Metadatenspur sein, die Metadatenabschnitte (Definitionsmetadaten) beinhaltet, welche Definitionen und/oder Parameter für eine korrespondierende Komponente der Referenzmedienpräsentation bereitstellen (wie geometrische Definitionen oder Parameter eines Viewports oder einer ROI).
-
Der Streaming-Encoder kodiert (bei Schritt 1130) auch eine erhaltene Spur, die (i) eine oder mehrere der Komponentenspuren referenziert und (ii) einen Satz von Operationen zum Erhalten von Medienabschnitten einer Teilregion der Referenzmedienpräsentation basierend auf den Medienabschnitten und Metadatenabschnitten aus den referenzierten Komponentenspuren spezifiziert. Der Signalisierungsmechanismus der erhaltenen Spur ist in Bezug auf die 5-7 oben beschrieben. Die Operationen, die durch den referenzierten Metadatenabschnitt spezifiziert werden können, sind in Bezug auf die 8-10 oben beschrieben. Der Streaming-Encoder speichert (bei Schritt 1140) die kodierten Komponentenspuren und die kodierte erhaltene Spur zum Abrufen.
-
Der Streaming-Encoder sendet (bei 1145) eine Streaming-Medien-Datei, die die erhaltene Spur enthält. Der Streaming-Encoder kann (bei Schritt 1150) auch eine Anforderung für einige oder alle Komponentenspuren empfangen. Ein Streaming-Decoder, der die erhaltene Spur empfängt, kann diese Anforderung, basierend darauf erzeugen, welche Spur benötigt wird, um dynamisch eine Teilregion (ROI oder Viewport) entsprechend der erhaltenen Spur zu konstruieren. Der Streaming-Encoder wiederum sendet (bei Schritt 1160) die angeforderten Komponentenspuren in einer oder mehreren Streaming-Medien-Dateien. Die übertragene Streaming-Medien-Datei kann im ISOBMFF- und DASH-Format vorliegen. Der Prozess 1100 endet dann.
-
12 zeigt konzeptionell einen Prozess 1200 zum dynamischen Konstruieren einer spezifizierten Teilregion (z.B. ROI oder Viewport) basierend auf einer erhaltenen Spur in einer Streaming-Medien-Datei. In einigen Ausführungsformen führt ein Streaming-Decoder (z.B. 220) den Prozess 1200 aus, nachdem er eine Streaming-Medien-Datei (z.B. die Streaming-Datei 240) empfangen hat. In einigen Ausführungsformen führen eine oder mehrere Verarbeitungseinheiten (z.B. ein Prozessor) einer den Streaming-Decoder implementierenden Rechenvorrichtung den Prozess 1200 durch, indem sie Anweisungen ausführen, die auf einem computerlesbaren Medium gespeichert sind.
-
Der Prozess 1200 beginnt, wenn der Streaming-Decoder (bei Schritt 1210) eine Streaming-Medien-Datei für eine Referenzmedienpräsentation empfängt. Die Streaming-Medien-Datei kann eine Streaming ISOBMFF-Medien-Datei sein, die über das DASH-Protokoll empfangen wurde. Die Streaming-Medien-Datei kann eine oder mehrere Komponentenspuren enthalten und/oder eine oder mehrere Komponentenspuren für die Referenzmedienpräsentation referenzieren. Die Streaming-Medien-Datei kann auch eine erhaltene Spur enthalten, die auf eine oder mehrere der Komponentenspuren referenziert. Eine Komponentenspur kann eine Medienspur sein, die Medienabschnitte einer korrespondierenden Komponente (z.B. eines Viewports oder einer ROI) der Referenzmedienpräsentation enthält. Eine Komponentenspur kann auch eine Metadatenspur sein, die Metadatenabschnitte enthält, die Definitionen und/oder Parameter für eine korrespondierende Komponente der Referenzmedienpräsentation liefern.
-
Der Streaming-Decoder empfängt (bei Schritt 1220) eine Auswahl einer Teilregion der Referenzmedienpräsentation. Die Auswahl kann eine Echtzeit-Auswahl des Nutzers einer 360VR-Vorrichtung über eine Benutzeroberfläche (z.B. 225) sein.
-
Der Streaming-Decoder ruft (bei Schritt 1230) eine erhaltene Spur aus der Streaming-Medien-Datei ab, die zu der Auswahl der Teilregion korrespondiert. Die erhaltene Spur (i) referenziert auf eine oder mehrere der Komponentenspuren und (ii) spezifiziert einen Satz von Operationen zum Konstruieren einer Teilregion der Referenzmedienpräsentation basierend auf Medienabschnitten und Metadatenabschnitten von den referenzierten Komponentenspuren. Der Signalisierungsmechanismus der erhaltenen Spur ist in Bezug auf 5-7 oben beschrieben. Die Operationen, die durch die referenzierten Metadatenabschnitte spezifiziert werden können, sind in Bezug auf die 8-10 oben beschrieben.
-
Der Streaming-Decoder ruft dann (bei 1240) eine oder mehrere Komponentenspuren ab, die von der erhaltenen Spur referenziert werden. Die abgerufenen Komponentenspuren enthalten Medienabschnitte oder Metadatenabschnitte, die referenziert und/oder für die Konstruktion des Inhalts der erhaltenen Spur benötigt sind. Die benötigten Komponentenspuren können zusammen mit der erhaltenen Spur bereits in der Streaming-Datei sein. Die benötigten Komponentenspuren können einige erhaltene Spuren, die erhalten werden können, beinhalten. Der Streaming-Decoder kann die benötigten Komponentenspuren auch abrufen, indem er eine nachfolgende Streaming-Medien-Datei (z.B. 245) anfordert, die die benötigten Komponentenspuren enthält. Der Streaming-Decoder kann auch die benötigten Komponentenspuren erhalten, die im rekursiven Sinn zuerst erhaltene Spuren sind.
-
Der Streaming-Decoder stellt (bei Schritt 1250) Medienabschnitte für die ausgewählte Teilregion bereit, indem er den durch die erhaltene Spur spezifizierten Satz von Operationen ausführt, der Medienabschnitte oder Metadatenabschnitte in den abgerufenen Komponentenspuren verwendet und/oder referenziert, um den Inhalt der ausgewählten Teilregion zu konstruieren. In einigen Ausführungsformen bestimmt die Auswahl der Teilregion dynamisch, welche durch die erhaltene Spur (durch die referenzierten Metadatenabschnitte) spezifizierten Operationen ausgeführt werden. Der Prozess 1200 endet dann.
-
Beispiel Video-Encoder
-
13 zeigt einen beispielhaften Video-Encoder 1300, der mindestens einige der Video-Encoder 311 - 319 im Streaming-Encoder 210 implementiert.
-
Wie gezeigt, empfängt der Video-Encoder 1300 das Eingangsvideosignal von einer Videoquelle 1305 und kodiert das Signal in den Bitstrom 1395. Der Video-Encoder 1300 weist mehrere Komponenten oder Module zum Kodieren des Videosignals 1305 auf, einschließlich eines Transformationsmoduls 1310, eines Quantisierungsmoduls 1311, eines Invers-Quantisierung-Moduls 1314, eines Invers-Transformation-Moduls 1315, eines Intra-Bild-Abschätzmoduls 1320, eines Intra-Bild-Vorhersagemoduls 1325, eines Bewegungskompensationsmoduls 1330, eines Bewegungsabschätzmoduls 1335, eines In-Loop-Filters 1345, eines Puffers für rekonstruierte Bilder 1350, eines MV-Puffers 1365 und eines MV-Vorhersagemoduls 1375 sowie eines Entropie-Encoders 1390.
-
In einigen Ausführungsformen sind die Module 1310 - 1390 Module von Softwareanweisungen, die von einer oder mehreren Verarbeitungseinheiten (z.B. einem Prozessor) einer Computervorrichtung oder einer elektronischen Vorrichtung ausgeführt werden. In einigen Ausführungsformen sind die Module 1310 - 1390 Module von Hardware-Schaltungen, die durch eine oder mehrere integrierte Schaltungen (ICs) einer elektronischen Vorrichtung implementiert sind. Auch wenn die Module 1310 - 1390 als separate Module dargestellt sind, können einige der Module zu einem einzigen Modul kombiniert werden.
-
Die Videoquelle 1305 liefert ein Rohvideosignal, das Pixeldaten jedes Videobildes ohne Komprimierung darstellt. Ein Subtrahierer 1308 berechnet den Unterschied zwischen den Rohvideopixeldaten der Videoquelle 1305 und den vorhergesagten Pixeldaten 1313 aus der Bewegungskompensation 1330 oder der Intra-Bild-Vorhersage 1325. Die Transformation 1310 wandelt die Differenz (oder die restlichen Pixeldaten) in Transformationskoeffizienten um (z.B. durch Ausführen einer diskreten Kosinustransformation oder DCT). Der Quantisierer 1311 quantisiert die Transformationskoeffizienten in quantisierte Daten (oder quantisierte Koeffizienten) 1312, welche vom Entropie-Encoder 1390 in den Bitstrom 1395 kodiert werden.
-
Das Invers-Quantisierung-Modul 1314 de-quantisiert die quantisierten Daten (oder quantisierten Koeffizienten) 1312, um Transformationskoeffizienten zu erhalten, und das Invers-Transformation-Modul 1315 führt eine inverse Transformation der Transformationskoeffizienten durch, um rekonstruierte Pixeldaten 1317 zu erzeugen (nach dem Hinzufügen von Vorhersagepixeldaten 1313). In einigen Ausführungsformen werden die rekonstruierten Pixeldaten 1317 in einem Zeilenpuffer (nicht dargestellt) für die Intra-Bild-Vorhersage und die räumliche MV-Vorhersage zwischengespeichert. Die rekonstruierten Pixel werden durch den In-Loop-Filter 1345 gefiltert und im Puffer für rekonstruierte Bilder 1350 gespeichert. In einigen Ausführungsformen ist der Puffer für rekonstruierte Bilder 1350 ein Speicher außerhalb des Video-Encoders 1300. In einigen Ausführungsformen ist der Puffer für rekonstruierte Bilder 1350 ein Speicher innerhalb des Video-Encoders 1300.
-
Das Intra-Bild-Abschätzmodul 1320 führt eine Intra-Vorhersage basierend auf den rekonstruierten Pixeldaten 1317 durch, um Intra-Vorhersagedaten zu erzeugen. Die Intra-Vorhersagedaten werden dem Entropie-Encoder 1390 bereitgestellt, um in den Bitstrom 1395 kodiert zu werden. Die Intra-Vorhersagedaten werden auch vom Intra-Bild-Vorhersagemodul 1325 verwendet, um die vorhergesagten Pixeldaten 1313 zu erzeugen.
-
Das Bewegungsabschätzmodul 1335 führt eine Inter-Vorhersage durch, indem es MVs zu Referenzpixeldaten von zuvor dekodierten Bildern erzeugt, die im Puffer für rekonstruierte Bilder 1350 gespeichert sind. Diese MVs werden dem Bewegungskompensationsmodul 1330 zur Verfügung gestellt, um vorhergesagte Pixeldaten zu erzeugen. Diese MVs werden auch für die Rekonstruktion von Videobildern am Einkanal-Dekodierungssystem benötigt. Anstatt die kompletten aktuellen MVs im Bitstrom zu kodieren, nutzt der Video-Encoder 1300 die zeitliche MV-Vorhersage, um vorhergesagte MVs zu generieren, und die Differenz zwischen den zur Bewegungskompensation verwendeten MVs und den vorhergesagten MVs wird als verbleibende Bewegungsdaten kodiert und im Bitstrom 1395 für das Einkanal-Dekodierungssystem gespeichert.
-
Der Video-Encoder 1300 generiert die vorhergesagten MVs basierend auf Referenz-MVs, die zur Kodierung von zuvor aufgenommenen Videobildern generiert wurden, d.h. den Bewegungskompensation-MVs, die zur Bewegungskompensation verwendet wurden. Der Video-Encoder 1300 ruft Referenz-MVs von vorherigen Videobildern aus dem MV-Puffer 1365 ab. Der Video-Encoder 1300 speichert die für das aktuelle Videobild erzeugten MVs im MV-Puffer 1365 als Referenz-MVs zum Generieren vorhergesagter MVs.
-
Das MV-Vorhersagemodul 1375 verwendet die Referenz-MVs, um die vorhergesagten MVs zu erstellen. Die vorhergesagten MVs können durch räumliche MV-Vorhersage oder zeitliche MV-Vorhersage berechnet werden. Die Differenz zwischen den vorhergesagten MVs und den Bewegungskompensation-MVs (MC MVs) des aktuellen Bildes (verbleibende Bewegungsdaten) wird vom Entropie-Encoder 1390 in den Bitstrom 1395 kodiert.
-
Der Entropie-Encoder 1390 kodiert verschiedene Parameter und Daten in den Bitstrom 1395, indem er Entropie-Kodierungstechniken, wie kontextadaptive binäre arithmetische Kodierung (CABAC) oder Huffman-Kodierung, verwendet. Der Entropie-Encoder 1390 kodiert Parameter, wie quantisierte Transformationsdaten und verbleibende Bewegungsdaten, in den Bitstrom.
-
Der In-Loop-Filter 1345 führt Filter- oder Glättungsvorgänge an den rekonstruierten Pixeldaten 1317 durch, um die Artefakte der Codierung zu reduzieren, insbesondere an den Grenzen von Pixelblöcken. In einigen Ausführungsformen beinhaltet der durchgeführte Filtervorgang Sample Adaptive Offset (SAO). In einigen Ausführungsformen beinhalten die Filtervorgänge Adaptive Loop Filter (ALF).
-
VI. Beispiel Video-Decoder
-
14 zeigt einen beispielhaften Video-Decoder 1400, der mindestens einige der Video-Decoder 411 - 419 im Streaming-Decoder 220 implementiert.
-
Wie gezeigt, ist der Video-Decoder 1400 eine Bilddekodier- oder Videodekodierschaltung, die einen Bitstrom 1495 empfängt und den Inhalt des Bitstroms in Pixeldaten von Videobildern zum Anzeigen dekodiert. Der Video-Decoder 1400 weist mehrere Komponenten oder Module zum Dekodieren des Bitstroms 1495 auf, einschließlich eines Invers-Quantisierung-Moduls 1405, eines Invers-Transformation-Moduls 1415, eines Intra-Bild-Vorhersagemoduls 1425, eines Bewegungskompensationsmoduls 1435, eines In-Loop-Filters 1445, eines Puffer für dekodierte Bilder 1450, eines MV-Puffers 1465, eines MV-Vorhersagemoduls 1475 und eines Bitstrom-Parsers 1490.
-
In einigen Ausführungsformen sind die Module 1410 - 1490 Module von Softwareanweisungen, die von einer oder mehreren Verarbeitungseinheiten (z.B. einem Prozessor) einer Computervorrichtung ausgeführt werden. In einigen Ausführungsformen sind die Module 1410 - 1490 Module von Hardware-Schaltungen, die von einem oder mehreren ICs einer elektronischen Vorrichtung implementiert werden. Obwohl die Module 1410 - 1490 als separate Module dargestellt sind, können einige der Module zu einem einzigen Modul kombiniert werden.
-
Der Parser 1490 (oder Entropie-Decoder) empfängt den Bitstrom 1495 und führt eine initiale Analyse gemäß der Syntax durch, die durch einen Videokodierungs- oder Bildkodierungsstandard definiert ist. Das analysierte Syntaxelement beinhaltet verschiedene Header-Elemente, Flags sowie quantisierte Daten (oder quantisierte Koeffizienten) 1412. Der Parser 1490 analysiert die verschiedenen Syntaxelemente durch die Verwendung von Entropie-Kodierungstechniken, wie kontextadaptive binäre arithmetische Kodierung (CABAC) oder Huffman-Kodierung.
-
Das Invers-Quantisierung-Modul 1405 de-quantisiert die quantisierten Daten (oder quantisierten Koeffizienten) 1412, um Transformationskoeffizienten zu erhalten, und das Invers-Transformation-Modul 1415 führt eine umgekehrte Transformation der Transformationskoeffizienten 1416 durch, um dekodierte Pixeldaten 1417 zu erzeugen (nach Hinzufügen von Vorhersagepixeldaten 1413 aus dem Intra-Vorhersagemodul 1425 oder dem Bewegungskompensationsmodul 1435). Die Daten der dekodierten Pixel werden durch den In-Loop-Filter 1445 gefiltert und im Puffer für dekodierte Bilder 1450 gespeichert. In einigen Ausführungsformen ist der Puffer für dekodierte Bilder 1450 ein Speicher außerhalb des Video-Decoders 1400. In einigen Ausführungsformen ist der Puffer für dekodierte Bilder 1450 ein Speicher innerhalb des Video-Decoders 1400.
-
Das Intra-Bild-Vorhersagemodul 1425 empfängt Intra-Vorhersagedaten aus dem Bitstrom 1495 und erzeugt dementsprechend die vorhergesagten Pixeldaten 1413 aus den im Puffer für dekodierte Bilder 1450 gespeicherten dekodierten Pixeldaten 1417. In einigen Ausführungsformen werden die dekodierten Pixeldaten 1417 auch in einem Zeilenpuffer (nicht dargestellt) für die Intra-Bild-Vorhersage und die räumliche MV-Vorhersage gespeichert.
-
In einigen Ausführungsformen wird der Inhalt des Puffers für dekodierte Bilder 1450 zur Anzeige verwendet. Eine Anzeigevorrichtung 1455 ruft entweder den Inhalt des Puffers für dekodierte Bilder 1450 zur direkten Anzeige ab oder ruft den Inhalt des Puffers für dekodierte Bilder in einen Anzeigepuffer ab. In einigen Ausführungsformen empfängt die Anzeigevorrichtung Pixelwerte aus dem Puffer für dekodierte Bilder 1450 über einen Pixeltransport.
-
Das Bewegungskompensationsmodul 1435 erzeugt aus den im Puffer für dekodierte Bilder 1450 gespeicherten dekodierten Pixeldaten 1417 vorhergesagte Pixeldaten 1413 gemäß Bewegungskompensations-MVs (MC MVs). Diese Bewegungskompensations-MVs werden durch Hinzufügen der vom Bitstrom 1495 empfangenen verbleibenden Bewegungsdaten zu den vom MV-Vorhersagemodul 1475 empfangenen vorhergesagten MVs dekodiert.
-
Der Video-Decoder 1400 generiert die vorhergesagten MVs basierend auf Referenz-MVs, die zur Dekodierung vorheriger Videobilder erzeugt wurden, z.B. der Bewegungskompensations-MVs, die zur Bewegungskompensation verwendet wurden. Der Video-Decoder 1400 ruft die Referenz-MVs vorhergehender Videobilder aus dem MV-Puffer 1465 ab. Der Video-Decoder 1400 speichert auch die zur Dekodierung des aktuellen Videobildes generierten Bewegungskompensations-MVs in den MV-Puffer 1465 als Referenz-MVs zum Generieren vorhergesagter MVs.
-
Der In-Loop-Filter 1445 führt Filter- oder Glättungsvorgänge an den dekodierten Pixeldaten 1417 durch, um die Artefakte der Kodierung zu reduzieren, insbesondere an den Grenzen von Pixelblöcken. In einigen Ausführungsformen beinhaltet der durchgeführte Filtervorgang Sample Adaptive Offset (SAO). In einigen Ausführungsformen beinhalten die Filtervorgänge Adaptive Loop Filter (ALF).
-
VII. Beispiel Elektronisches System
-
Viele der oben beschriebenen Funktionen und Anwendungen sind als Softwareprozesse implementiert, die als eine Satz von Anweisungen spezifiziert sind, die auf einem computerlesbaren Speichermedium (auch als computerlesbares Medium bezeichnet) aufgezeichnet sind. Wenn diese Anweisungen von einer oder mehreren Rechen- oder Verarbeitungseinheiten (z.B. einem oder mehreren Prozessoren, Prozessorkernen oder anderen Verarbeitungseinheiten) ausgeführt werden, veranlassen sie die Verarbeitungseinheit(en), die in den Anweisungen angegebenen Aktionen auszuführen. Beispiele für computerlesbare Medien beinhalten CD-ROMs, Flash-Laufwerke, RAM-Chips, Festplatten, löschbare programmierbare Nur-Lese-Speicher (EPROMs), elektrisch löschbare programmierbare Nur-Lese-Speicher (EEPROMs), etc, sind aber nicht darauf beschränkt. Die computerlesbaren Medien beinhalten keine Trägerwellen und elektronischen Signale, die drahtlos oder über drahtgebundene Verbindungen laufen.
-
In dieser Spezifikation umfasst der Begriff „Software“ Firmware, die sich im Festspeicher befindet, oder Anwendungen, die im Magnetspeicher gespeichert sind und die zur Verarbeitung durch einen Prozessor in den Speicher eingelesen werden können. Auch in einigen Ausführungsformen können mehrere Softwareerfindungen als Unterteile eines größeren Programms implementiert werden, während sie unterschiedliche Softwareerfindungen bleiben. In einigen Ausführungsformen können mehrere Softwareerfindungen auch als separate Programme implementiert werden. Schließlich fällt jede Kombination von Einzelprogrammen, die gemeinsam eine hier beschriebene Softwareerfindung umsetzen, in den Umfang der vorliegenden Offenbarung. In einigen Ausführungsformen definieren die Softwareprogramme, wenn sie zum Betrieb auf einem oder mehreren elektronischen Systemen installiert sind, eine oder mehrere spezifische Maschinenimplementierungen, die die Operationen der Softwareprogramme durchführen und ausführen.
-
15 zeigt konzeptionell ein elektronisches System 1500, mit dem einige Ausführungsformen der vorliegenden Offenbarung implementiert werden. Das elektronische System 1500 kann ein Computer (z.B. ein Desktop-Computer, Personalcomputer, Tablet-Computer usw.), ein Telefon, ein PDA oder eine andere Art von elektronischer Vorrichtung sein. Ein solches elektronisches System beinhaltet verschiedene Arten von computerlesbaren Medien und Schnittstellen für verschiedene andere Arten von computerlesbaren Medien. Das elektronische System 1500 beinhaltet einen Bus 1505, eine oder mehrere Verarbeitungseinheiten 1510, eine Grafikverarbeitungseinheit (GPU) 1515, einen Systemspeicher 1520, ein Netzwerk 1525, einen Nur-Lese-Speicher 1530, eine permanente Speichervorrichtung 1535, Eingabevorrichtungen 1540 und Ausgabevorrichtungen 1545.
-
Der Bus 1505 repräsentiert zusammenfassend alle System-, Peripherie- und Chipsatzbusse, die die zahlreichen internen Geräte des elektronischen Systems 1500 kommunikativ verbinden. So verbindet beispielsweise der Bus 1505 die Verarbeitungseinheit(en) 1510 kommunikativ mit der GPU 1515, dem Nur-Lese-Speicher 1530, dem Systemspeicher 1520 und der permanenten Speichervorrichtung 1535.
-
Aus diesen verschiedenen Speichereinheiten ruft die eine oder die mehreren Verarbeitungseinheiten 1510 Anweisungen zur Ausführung und Daten zur Verarbeitung ab, um die Prozesse der vorliegenden Offenbarung auszuführen. Die Verarbeitungseinheit(en) können ein einzelner Prozessor oder ein Mehrkern-Prozessor in verschiedenen Ausführungsformen sein. Einige Anweisungen werden an die GPU 1515 weitergeleitet und von ihr ausgeführt. Die GPU 1515 kann verschiedene Berechnungen übernehmen oder die Bildverarbeitung der Verarbeitungseinheit(en) 1510 ergänzen.
-
Der Nur-Lese-Speicher (ROM) 1530 speichert statische Daten und Anweisungen, die von den Verarbeitungseinheit(en) 1510 und andere Modulen des elektronischen Systems benötigt werden. Die permanente Speichervorrichtung 1535 hingegen ist eine Lese- und Schreibspeichervorrichtung. Diese Vorrichtung ist eine nichtflüchtige Speichereinheit, die Anweisungen und Daten speichert, auch wenn das elektronische System 1500 ausgeschaltet ist. Einige Ausführungsformen der vorliegenden Offenbarung verwenden eine Massenspeichervorrichtung (wie eine magnetische oder optische Platte und das korrespondierende Laufwerk) als permanente Speichervorrichtung 1535.
-
Andere Ausführungsformen verwenden eine Wechselspeichervorrichtung (z.B. Diskette, Flash-Speichergerät usw. und das korrespondierende Laufwerk) als permanente Speichervorrichtung. Wie die permanente Speichervorrichtung 1535 ist der Systemspeicher 1520 eine Lese- und Schreibspeichervorrichtung. Im Gegensatz zur Speichervorrichtung 1535 ist der Systemspeicher 1520 jedoch ein flüchtiger Lese- und Schreibspeicher, wie ein Direktzugriffsspeicher. Der Systemspeicher 1520 speichert einige der Anweisungen und Daten, die der Prozessor zur Laufzeit benötigt. In einigen Ausführungsformen werden Prozesse gemäß der vorliegenden Offenbarung im Systemspeicher 1520, in der permanenten Speichervorrichtung 1535 und/oder im Nur-Lese-Speicher 1530 gespeichert. Zum Beispiel enthalten die verschiedenen Speichereinheiten Anweisungen zur Verarbeitung von Multimedia-Clips gemäß einiger Ausführungsformen. Aus diesen verschiedenen Speichereinheiten ruft die eine oder die mehreren Verarbeitungseinheiten 1510 Anweisungen zur Ausführung und Daten zur Verarbeitung ab, um die Prozesse einiger Ausführungsformen auszuführen.
-
Der Bus 1505 verbindet sich auch mit den Ein- und Ausgabegeräten 1540 und 1545. Die Eingabevorrichtungen 1540 ermöglichen es dem Nutzer, Informationen und Auswahlbefehle an das elektronische System zu übermitteln. Zu den Eingabegeräten 1540 gehören alphanumerische Tastaturen und Zeigegeräte (auch „Cursorsteuergeräte“ genannt), Kameras (z.B. Webcams), Mikrofone oder ähnliche Geräte zum Empfangen von Sprachbefehlen, etc. Die Ausgabevorrichtungen 1545 zeigen Bilder an, die von dem elektronischen System generiert werden, oder geben Daten anders aus. Zu den Ausgabegeräten 1545 gehören Drucker und Anzeigegeräte, wie Kathodenstrahlröhren (CRT) oder Flüssigkristallanzeigen (LCD), sowie Lautsprecher oder ähnliche Audioausgabegeräte. Einige Ausführungsformen beinhalten Vorrichtungen, wie beispielsweise einen Touchscreen, die sowohl als Ein- als auch als Ausgabevorrichtungen fungieren.
-
Schließlich koppelt der Bus 1505, wie in 15 gezeigt, auch das elektronische System 1500 über einen Netzwerkadapter (nicht dargestellt) an ein Netzwerk 1525. Auf diese Weise kann der Computer Teil eines Computernetzwerks (z.B. eines lokalen Netzwerks („LAN“), eines Weitverkehrsnetzwerks („WAN“) oder eines Intranets oder eines Netzwerks aus Netzwerken, wie beispielsweise das Internet, sein. Alle oder einzelne Komponenten des elektronischen Systems 1500 können in Verbindung mit der vorliegenden Offenbarung verwendet werden.
-
Einige Ausführungsformen beinhalten elektronische Komponenten, wie Mikroprozessoren, permanente Speicher und flüchtige Speicher, die Computerprogrammanweisungen auf einem maschinenlesbaren oder computerlesbaren Medium speichern (alternativ bezeichnet als computerlesbare Speichermedien, maschinenlesbare Medien oder maschinenlesbare Speichermedien). Einige Beispiele für solche computerlesbaren Medien sind RAM, ROM, schreibgeschützte CDs (CD-ROM), beschreibbare CDs (CD-R), wiederbeschreibbare CDs (CD-RW), schreibgeschützte Digital Versatile Discs (z.B. DVD-ROM, Dual-Layer-DVD-ROM), eine Vielzahl von beschreibbaren/wiederbeschreibbaren DVDs (z.B., DVD-RAM, DVD-RW, DVD+RW, etc.), Flash-Speicher (z.B. SD-Karten, Mini-SD-Karten, Micro-SD-Karten, etc.), magnetische und/oder Solid-State-Festplatten, schreibgeschützte und beschreibbare Blu-Ray®-Discs, optische Ultradichte-Discs, alle anderen optischen oder magnetischen Medien und Disketten. Das computerlesbare Medium kann ein Computerprogramm speichern, das von mindestens einer Verarbeitungseinheit ausführbar ist und Anweisungen zur Durchführung verschiedener Operationen enthält. Beispiele für Computerprogramme oder Computercode sind Maschinencode, wie er von einem Compiler erzeugt wird, und Dateien mit höherem Code, die von einem Computer, einer elektronischen Komponente oder einem Mikroprozessor unter Verwendung eines Interpreters ausgeführt werden.
-
Während sich die vorstehende Erläuterung in erster Linie auf Mikroprozessor- oder Multicore-Prozessoren bezieht, die Software ausführen, werden viele der vorstehend beschriebenen Merkmale und Anwendungen von einer oder mehreren integrierten Schaltungen ausgeführt, wie beispielsweise anwendungsspezifische integrierte Schaltungen (ASICs) oder Field Programmable Gate Arrays (FPGAs). In einigen Ausführungsformen führen solche integrierten Schaltungen Anweisungen aus, die auf der Schaltung selbst gespeichert sind. Darüber hinaus führen einige Ausführungsformen Software aus, die in programmierbaren Logikgeräten (PLDs), ROM- oder RAM-Vorrichtungen gespeichert ist.
-
Wie in dieser Beschreibung und allen Ansprüchen dieser Anmeldung verwendet, beziehen sich die Begriffe „Computer“, „Server“, „Prozessor“ und „Speicher“ alle auf elektronische oder andere technologische Geräte. Diese Begriffe schließen Personen oder Personengruppen aus. Für die Zwecke der Beschreibung bedeuten die Begriffe Anzeige oder anzeigen die Anzeige auf einer elektronischen Vorrichtung. Wie in dieser Beschreibung und allen Ansprüchen dieser Anmeldung verwendet, sind die Begriffe „computerlesbares Medium“, „computerlesbare Medien“ und „maschinenlesbares Medium“ vollständig auf materielle, physische Objekte beschränkt, die Informationen in einer für einen Computer lesbaren Form speichern. Diese Begriffe schließen alle drahtlosen Signale, drahtgebundenen Download-Signale und alle anderen kurzlebigen Signale aus.
-
Während die vorliegende Offenbarung mit Bezug auf zahlreiche spezifische Details beschrieben wurde, wird der Fachmann erkennen, dass die vorliegende Offenbarung in anderen spezifischen Formen ausgeführt werden kann, ohne vom Gedanken der vorliegenden Offenbarung abzuweichen. Darüber hinaus veranschaulichen einige der Figuren (einschließlich der 11 und 12) konzeptionell Prozesse. Die spezifischen Vorgänge dieser Prozesse müssen nicht in der genau angegebenen und beschriebenen Reihenfolge durchgeführt werden. Die spezifischen Operationen müssen nicht in einer kontinuierlichen Serie von Operationen durchgeführt werden, und verschiedene spezifische Operationen können in verschiedenen Ausführungsformen durchgeführt werden. Darüber hinaus kann der Prozess in mehreren Teilprozessen oder als Teil eines größeren Makroprozesses implementiert werden. So würde der Fachmann verstehen, dass die vorliegende Offenbarung nicht durch die vorstehenden veranschaulichenden Details beschränkt werden soll, sondern durch die beigefügten Ansprüche definiert ist.
-
Zusätzliche Hinweise
-
Der hierin beschriebene Gegenstand veranschaulicht manchmal verschiedene Komponenten, die in verschiedenen anderen Komponenten enthalten sind oder mit diesen verbunden sind. Es ist zu verstehen, dass solche dargestellten Architekturen nur Beispiele sind und dass tatsächlich viele andere Architekturen implementiert werden können, die die gleiche Funktionalität erreichen. Im konzeptionellen Sinne ist jede Anordnung von Komponenten zur Erreichung der gleichen Funktionalität effektiv „zugeordnet“, so dass die gewünschte Funktionalität erreicht wird. Daher können zwei beliebige Komponenten, die hierin kombiniert werden, um eine bestimmte Funktionalität zu erreichen, als „miteinander verbunden“ angesehen werden, so dass die gewünschte Funktionalität erreicht wird, unabhängig von Architekturen oder Zwischenkomponenten. Ebenso können zwei so zugeordnete Komponenten auch als „funktionsfähig verbunden“ oder „funktionsfähig gekoppelt“ miteinander betrachtet werden, um die gewünschte Funktionalität zu erreichen, und zwei beliebige Komponenten, die so zugeordnet werden können, können auch als „funktionsfähig koppelbar“ miteinander betrachtet werden, um die gewünschte Funktionalität zu erreichen. Konkrete Beispiele für funktionsfähige koppelbare Komponenten sind unter anderem physikalisch verknüpfbare und/oder physikalisch interagierende Komponenten und/oder drahtlos interagierbare und/oder drahtlos interagierende Komponenten und/oder logisch interagierende und/oder logisch interagierbare Komponenten.
-
Darüber hinaus kann der Fachmann, in Bezug auf die Verwendung von im Wesentlichen beliebig vielen und/oder singulären Begriffen aus dem Plural in das Singular und/oder aus dem Singular in das Plural übersetzen, wie es dem Kontext und/oder der Anwendung angemessen ist. Die verschiedenen Singular/Plural-Permutationen können hierin aus Gründen der Klarheit explizit angegeben werden.
-
Darüber hinaus wird vom Fachmann verstanden, dass im Allgemeinen die hierin verwendeten Begriffe, insbesondere in den beigefügten Ansprüchen, z.B. Körper der beigefügten Ansprüche, allgemein als „offene“ Begriffe gedacht sind, z.B. sollte der Begriff „einschließlich“ als „einschließlich, aber nicht beschränkt auf“ interpretiert werden, der Begriff „haben“ als „mindestens habend“ interpretiert werden, der Begriff „beinhaltet“ als „beinhaltet aber nicht beschränkt auf “ interpretiert werden, etc. Es wird vom Fachmann weiter verstanden, dass, wenn eine bestimmte Nummer einer eingeführten Anspruchsrezitation beabsichtigt ist, eine solche Absicht ausdrücklich in dem Anspruch rezitiert wird, und wenn eine solche Rezitation fehlt, ist eine solche Absicht nicht vorhanden ist. Zum Beispiel, als Hilfe zum Verständnis, können die folgenden angehängten Ansprüche die Verwendung der einleitenden Phrasen „mindestens einer“ und „einer oder mehrerer“ zur Einleitung von Anspruchsabhängigkeiten enthalten. Die Verwendung solcher Formulierungen sollte jedoch nicht so ausgelegt werden, dass die Einführung einer Anspruchswiedergabe durch den unbestimmten Artikel „ein(e/er/es/em/en)“ einen bestimmten Anspruch, der eine solche Anspruchswiedergabe enthält, auf Implementierungen beschränkt, die nur eine solche Abhängigkeit enthält, selbst wenn derselbe Anspruch die einleitenden Ausdrücke „ein oder mehrere“ oder „mindestens eine“ und den unbestimmten Artikel „ein(e/er/es/em/en)“ umfasst, z.B. sind „ein(e/er/es/em/en)“ so zu interpretieren, dass sie „mindestens eins“ oder „ein oder mehrere“ bedeuten; dasselbe gilt für die Verwendung bestimmter Artikel, die zur Einführung von Anspruchsabhängigkeiten verwendet werden. Zusätzlich, selbst wenn eine bestimmte Nummer einer eingeführten Anspruchsabhängigkeiten explizit wiedergegeben wird, wird der Fachmann erkennen, dass eine solche Wiedergabe so interpretiert werden sollte, dass sie mindestens die angegebene Nummer bezeichnet, z.B. bedeutet die bloße Angabe von „zwei Abhängigkeiten“ ohne andere Modifikatoren mindestens zwei Abhängigkeiten oder zwei oder mehr Anhängigkeiten. Darüber hinaus ist in den Fällen, in denen eine Klausel analog zu „mindestens einer von A, B und C usw.“ verwendet wird, im Allgemeinen eine solche Konstruktion beabsichtigt, wie sie der Fachmann verstehen würde, z.B. „ein System mit mindestens einer von A, B und C“ würde im Allgemeinen Systeme beinhalten, aber nicht darauf beschränkt sein, die A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen usw. aufweisen. In den Fällen, in denen eine Klausel analog zu „mindestens einer von A, B oder C usw.“ verwendet wird, ist im Allgemeinen eine solche Konstruktion beabsichtigt, wie sie der Fachmann verstehen würde, z.B. „ein System mit mindestens einer von A, B oder C“ würde im Allgemeinen Systeme beinhalten, aber nicht darauf beschränkt sein, die A allein, B allein, C allein, A und B zusammen, A und C zusammen, B und C zusammen und/oder A, B und C zusammen usw. aufweisen. Es wird weiter vom Fachmann verstanden, dass praktisch jedes disjunkte Wort und/oder Phrase, das/die zwei oder mehr alternative Begriffe präsentiert, sei es in der Beschreibung, in Ansprüchen oder Zeichnungen, so verstanden werden sollte, dass die Möglichkeiten der Aufnahme entweder des Einen der Begriffe, des Anderen der Begriffe oder beider Begriffe, in Betracht gezogen werden. So wird beispielsweise unter dem Begriff „A oder B“ die Möglichkeit von „A“ oder „B“ oder „A und B“ verstanden.
-
Aus diesem Grund ist zu beachten, dass verschiedene Implementierungen der vorliegenden Offenbarung zum Zweck der Veranschaulichung hierin beschrieben wurden und dass verschiedene Änderungen vorgenommen werden können, ohne vom Umfang und Gedanken der vorliegenden Offenbarung abzuweichen. Dementsprechend sollen die verschiedenen hierin offenbarten Implementierungen nicht einschränkend sein, wobei der wahre Umfang und Gedanke durch die folgenden Ansprüche gekennzeichnet werden.
-
ZITATE ENTHALTEN IN DER BESCHREIBUNG
-
Diese Liste der vom Anmelder aufgeführten Dokumente wurde automatisiert erzeugt und ist ausschließlich zur besseren Information des Lesers aufgenommen. Die Liste ist nicht Bestandteil der deutschen Patent- bzw. Gebrauchsmusteranmeldung. Das DPMA übernimmt keinerlei Haftung für etwaige Fehler oder Auslassungen.
-
Zitierte Patentliteratur
-
- US 62408867 [0001]
- US 62/410414 [0001]
-
Zitierte Nicht-Patentliteratur
-
- ISO/IEC 14496-12 [0024]
- ISOBMFF ISO/IEC 14496-12 [0050]
- ISO/IEC 23001-10 [0051]