-
Verwandte Anmeldungen
-
Diese
Anmeldung bezieht sich auf und beansprucht den Vorteil der provisorischen
US-Patentanmeldungen mit den Serial-Nummern 60/359,606, angemeldet
am 25. Februar 2002, 601361,773, angemeldet am 5. März 2002,
und 60/363,643, angemeldet am 8. März 2002, die hiermit unter
Bezugnahme eingeführt
werden.
-
Gebiet der Erfindung
-
Die
Erfindung bezieht sich allgemein auf das Speichern und auf das Wiederauffinden
von audiovisuellem Inhalt in einem Multimedia-Dateiformat, insbesondere
auf Dateiformate, die mit dem ISO-Mediadateiformat kompatibel sind.
-
Copyright-Notiz/Erlaubnis
-
Ein
Teil der Offenbarung dieses Patentdokuments enthält Material, welches dem Copyright-Schutz
unterworfen ist. Der Copyright-Eigner hat keinen Einwand gegen eine
Faksimilieübertragungs-Reproduktion
durch irgendeinen des Patentdokuments oder Patentoffenbarung, wie
diese in Patent and Trademark Office patent file oder records erscheint,
hält jedoch
ansonsten alle Copyright-Rechte, die darüber hinaus gehen, zurück. Die
folgende Notiz richtet sich auf die Software und die Daten, wie anschließend und
in den dazugehörigen
Zeichnungen beschrieben wird: Copyright © 2001, Sony Electronics, Inc.,
All Rights Reserved.
-
Hintergrund der Erfindung
-
Im
Soge eines schnell anwachsenden Wunsches nach Netzwerk-, Multimedia-,
Datenbank- und anderer digitaler Kapazität wurden viele Multimediacodier-
und Speicherprogramme entwickelt. Eines der bekannten Dateiformate
zum Codieren und zum Speichern von audiovisuellen Daten ist das
QuickTime ®-Dateiformat,
welches durch Apple Computer Inc. Entwickelt wurde. Das QuickTime – Dateiformat wurde
als Startpunkt zum Bilden des International Organization for Standardization
(ISO) – Multimedia-Dateiformats
verwendet, ISO/IEC 14496-12, Information Technology-Coding of audio-visuell
objects – Teil
12: ISO Mediadateiformat (auch als ISO-Dateiformat bekannt), welches
wiederum als Dokumentvorlage für
zwei Standarddateiformate verwendet wurde: (1) für ein MPEG-4-Dateiformat, entwickelt durch
Moving Picture Experts Group, bekannt als MP4 (ISO/IEC 14496-14,
Information Technology – Coding
of audio-visuell objects (Codierung von audio-visuellen Objekten) – Teil 14:
MP4-Dateiformat); und (2) ein Dateiformat für JPEG 2000 (ISO/IEC 15444-1),
entwickelt durch Joint Photographic Experts Group (JPEG).
-
Das
ISO-Mediadateiformat besteht aus objekt-orientierten Strukturen,
die als Boxen bezeichnet werden (auch als Atome oder Objekte bezeichnet). Die
zwei wichtigen Top-Pegel-Boxen enthalten entweder Mediadaten oder
Metadaten. Die meisten Boxen beschreiben eine Hierarchie von Metadaten,
die erklärende
strukturelle und zeitliche Information über die aktuellen Mediadaten
bereitstellen. Diese Kollektion von Boxen ist in einer Box enthalten,
welche als Movie-Box bekannt ist. Die Mediadaten selbst können in
Mediadaten-Boxen
oder extern angeordnet sein. Jeder Mediadatenstrom wird als ein
Track bezeichnet (auch als Elementarstrom oder einfach als Strom
bekannt).
-
Die
primären
Metadaten sind das Movie-Objekt. Die Movie-Box umfasst Track-Boxen, welche zeitlich
dargestellte Mediadaten beschreiben. Die Mediadaten für einen
Track können
aus verschiedenen Arten bestehen (beispielsweise Videodaten, Audiodaten,
Binärformat-Bildschirmdarstellungen (BIFS),
usw.). Jeder Track ist weiter in Abtastungen unterteilt (auch als
Zugriffseinheiten oder Bilder bekannt). Eine Abtastung stellt eine
Einheit von Mediadaten bei einem bestimmten Zeitpunkt dar. Abtast-Metadaten
sind in einem Satz von Abtast-Boxen enthalten. Jede Track-Box enthält eine
Abtasttabellenbox-Metadaten-Box, welche Boxen enthält, welche
die Zeit für
jede Abtastung, deren Größe in Bytes und
deren Lage (extern oder intern zur Datei) für ihre Mediadaten, usw., enthält. Eine
Abtastung ist die kleinste Daten-Entität, die den Zeitablauf, den
Ort und andere Metadaten-Information zeigen kann.
-
Seit
einiger Zeit begannen MPEG's-Video Group
und Video Coding Experts Group (VCEG) von International Telecommunication
Union (ITU) zusammen als Joint Video Team (JVT) zu arbeiten, um
einen neuen Videocodier-/Decodier-Standard (Codec-Standard), der
als ITU-Empfehlung H.264 oder MPEG 4-Teil 10, Advanced Video Codec
(AVC) oder JVT-Codec bezeichnet wurde, zu entwickeln. Diese Begriffe
und deren Abkürzungen,
beispielsweise H.264, und JVT und AVC werden hier als untereinander
austauschbar verwendet.
-
Der
JVT-Codec-Entwurf unterschied zwischen zwei unterschiedlichen Konzept-Ebenen, der Videocodierebene
(VCL) und der Netzwerk-Abstraktions-Ebene (NAL). Die VCL enthält die Codierbezugsteile
des Codec, beispielsweise Bewegungskompensation, Transformationscodierung
von Koeffizienten und die Entropy-Codierung. Das Ausgangssignal
der VCL sind Slices (Scheiben), von denen jede eine Serie von Makroblöcken und
damit verknüpfter Datenkopfinformation
enthält.
Die NAL abstrahiert die VCL von den Details der Transportebene,
die verwendet wird, die VCL-Daten zu führen. Sie definiert eine allgemeine
und unabhängige
Transportdarstellung für
Information über
den Pegel des Slice. Die NAL definiert die Schnittstelle zwischen
dem Videocodec selbst und der Außenwelt. Intern verwendet die
NAL NAL-Pakete. Ein NAL-Paket besitzt ein Typusfeld, welches den
Typus der Nutzlast zusätzlich einem
Satz von Bits in der Nutzlast zeigt. Die Daten innerhalb eines einzelnen
Slice können
weiter in unterschiedliche Datenpartitionen unterteilt sein.
-
Bei
vielen existierenden Videocodierformaten umfassen die codierten
Stromdaten verschiedene Arten von Datenköpfen, die Parameter enthalten, die
den Decodierprozess steuern. Beispielsweise umfasst der MPEG-2-Videostandard
Sequenzdatenköpfe,
verbesserte Gruppen von Bildern (GOP) und Bilddatenköpfe vor
den Videodaten entsprechend zu diejenigen Posten. Bei JVT wird die
Information, die benötigt
wird, die VCL-Daten zu decodieren, in Parametersätze gruppiert. Jedem Parametersatz
wird ein Identifizierer zugeteilt, der nachfolgend als eine Referenz
von einem Slice verwendet wird. Anstelle des Sendens der Parametersätze innerhalb
des Stroms (im Band) können
sie außerhalb
des Stroms (außerhalb
des Bandes) gesendet werden.
-
Existierende
Dateiformate liefern nicht eine Möglichkeit, die Parametersätze in Verbindung
mit codierten Mediadaten zu speichern; weiter liefern sie keine
Einrichtung, um Mediadaten (d.h., Abtastungen oder Subabtastungen)
mit Parametersätzen
effektiv zu verknüpfen,
so dass Parametersätze
effektiv wiederaufgefunden und übertragen
werden können.
-
Beim
ISO-Mediadateiformat ist die kleinste Einheit, auf die zugegriffen
werden kann, ohne Mediadaten zu definieren, eine Abtastung, d.h.,
ein Gesamtbild in AVC. Bei vielen Codierformaten kann eine Abtastung
weiter in kleinere Einheiten unterteilt werden, welche als Subabtastungen
bezeichnet werden (auch als Abtastfragmente oder Zugriffseinheitsfragmente
bezeichnet). Im Fall von AVC entspricht eine Subabtastung einem
Slice. Existierende Dateiformate unterstützen jedoch nicht das Zugreifen
auf Subteile einer Abtastung. Für
Systeme, die benötigen,
flexibel Daten zu bilden, die in einer Datei in Paketen zur Strombildung
gespeichert sind, behindert dieser Mangel an Zugriff auf Subabtastungen
eine flexible Paketbildung der JVT-Mediadaten für das Strombilden.
-
Eine
andere Beschränkung
von existierenden Speicherformaten befasst sich mit dem Umschalten
zwischen gespeicherten Datenströmen
mit unterschiedlicher Bandbreite als Antwort auf sich ändernde
Netzwerkbedingungen, wenn Mediadaten strömen. Bei einem typischen Datenstrom-Szenario besteht
eine der Schlüsselerfordernisse
darin, die Bitrate der komprimierten Daten als Antwort auf sich ändernde
Netzwerkzustände
zu skalieren. Dies wird üblicherweise
durch Codieren von Mehrfachströmen mit
unterschiedlicher Bandbreite und Qualitätseinstellungen für repräsentative
Netzwerkbedingungen erzielt und durch Speichern von diesen in einer
oder mehreren Dateien. Der Server kann unter diesen vorcodierten
Datenströmen
als Antwort auf Netzwerkbedingungen umschalten. Bei existierenden
Dateiformaten ist lediglich das Umschalten zwischen Datenströmen bei
Abtastungen möglich,
die nicht von früheren
Abtastungen zur Rekonstruktion abhängen. Solche Abtastungen werden
als I-Rahmen bezeichnet. Es ist zurzeit keine Unterstützung zum
Umschalten zwischen Datenströmen
bei Abtastungen vorgesehen, die von früheren Abtastungen zur Rekonstruktion
abhängen
(d.h., ein P-Rahmen oder ein B-Rahmen, welche von mehreren Abtastungen
zur Referenz abhängen).
-
Der
AVC-Standard stellt ein Werkzeug bereit, bekannt als Umschaltbilder
(bezeichnet als SI- und SP-Bilder), um wirksames Umschalten zwischen Datenströmen, einen
wahlfreien Zugriff und eine Fehlerabfederung wie auch andere Merkmale
zu ermöglichen.
Ein Umschaltbild ist eine spezielle Art eines Bilds, dessen rekonstruierter
Wert exakt äquivalent dem
Bild ist, von dem angenommen wird, zu diesem umzuschalten. Umschaltbilder
können
Referenzbilder verwenden, die gegenüber denjenigen unterschiedlich
sind, die verwendet werden, das Bild, mit dem sie übereinstimmen,
vorherzusagen, wodurch somit eine effizientere Codierung als unter
Verwendung von I-Rahmen bereitgestellt wird. Um Umschaltbilder,
welche in einer Datei gespeichert sind, wirksam zu nutzen, ist es
notwendig, zu kennen, welche Sätze
von Bildern äquivalent
sind, und zu kennen, welche Bilder zur Vorhersage verwendet werden.
Existierende Dateifarmate liefern diese Information nicht, und daher
muss diese Information durch Definieren des Codierstroms extrahiert
werden, was unwirksam und langsam ist.
-
Es
besteht daher eine Notwendigkeit, Speicherverfahren zu verbessern,
die sich auf neue Fähigkeiten
richten, die durch zum Vorschein kommen von Videocodierstandards
bereitgestellt werden und die sich auf existierende Beschränkungen
dieser Speicherverfahren richten.
-
Überblick über die Erfindung
-
Subabtast-Metadaten,
die Subabtastungen innerhalb jeder Abtastung von Multimediadaten
definieren, werden erzeugt. Außerdem
wird eine Datei, die mit den Multimedia daten verknüpft ist,
gebildet. Diese Datei enthält
die Subabtast-Metadaten wie auch andere Information, die zu den
Multimediadaten gehört.
-
Kurzbeschreibung der Zeichnungen
-
Die
vorliegende Erfindung wird beispielhaft (nicht einschränkend) in
den Figuren der beiliegenden Zeichnungen dargestellt, in denen gleiche
Bezugszeichen sich auf ähnliche
Elemente beziehen, und in denen:
-
1 ein Blockdiagramm einer
Ausführungsform
eines Codiersystems ist;
-
2 ein Blockdiagramm einer
Ausführungsform
eines Decodiersystems ist;
-
3 ein Blockdiagramm eines
Computerumfelds ist, welches geeignet ist, die Erfindung auszuüben;
-
4 ein Flussdiagramm eines
Verfahrens ist, um Subabtast-Metadaten in einem Codiersystem zu
speichern;
-
5 ein Flussdiagramm eines
Verfahrens ist, um Subabtastung-Metadaten in einem Decodiersystem
zu nutzen;
-
6 ein erweitertes MP4-Media-Datenstrommodell
mit Subabtastungen zeigt;
-
7A–7K beispielhafte
Datenstrukturen zum Speichern von Subabtast-Metadaten zeigen;
-
8 ein Flussdiagramm eines
Verfahrens ist, um Parametersatz-Metadaten in einem Codiersystem
zu speichern;
-
9 ein Flussdiagramm eines
Verfahrens ist, um Parametersatz-Metadaten in einem Decodiersystem
zu nutzen;
-
10A–10E beispielhafte
Datenstrukturen zeigen, um Parametersatz-Metadaten zu speichern;
-
11 eine beispielhafte verbesserte
Gruppe von Bildern (GOP) zeigt;
-
12 ein Flussdiagramm eines
Verfahrens ist, um Sequenzen von Metadaten in einem Codiersystem
zu speichern;
-
13 ein Flussdiagramm eines
Verfahrens ist, um Sequenzen von Metadaten in einem Decodiersystem
zu nutzen;
-
14A–14E beispielhafte
Datenstrukturen zeigen, um Sequenzen von Metadaten zu speichern;
-
15A und 15B die Verwendung eines Schaltabtastsatzes
zur Bitstromumschaltung zeigen;
-
15C ein Flussdiagramm einer
Ausführungsform
eines Verfahrens ist, um einen Punkt zu bestimmen, bei dem ein Schalten
zwischen zwei Datenströmen
durchzuführen
ist;
-
16 ein Flussdiagramm eines
Verfahrens ist, um Schaltabtast-Metadaten in einem Codiersystem
zu speichern;
-
17 ein Flussdiagramm eines
Verfahrens ist, um Schaltabtast-Metadaten in einem Decodiersystem
zu nutzen;
-
18 eine beispielhafte Datenstruktur
zum Speichern von Schaltabtast-Metadaten zeigt;
-
19A und 19B die Verwendung eines Schaltabtastsatzes
zeigen, um Direktzugriffs-Eintragspunkte in einem Bitstrom zu erleichtern;
-
19C ein Flussdiagramm einer
Ausführungsform
eines Verfahrens ist, um einen Direktzugriffspunkt für eine Abtastung
zu bestimmen;
-
20A und 20B die Verwendung eines Schaltabtastsatzes
zeigen, um Fehlerregenerierung zu erleichtern; und
-
20C ein Flussdiagramm einer
Ausführungsform
eines Verfahrens ist, um Fehlerregenerierung zu erleichtern, wenn
eine Abtastung geliefert wird.
-
Ausführliche Beschreibung der Erfindung
-
In
der folgenden ausführlichen
Beschreibung von Ausführungsformen
der Erfindung wird bezuggenommen auf die beiliegenden Zeichnungen,
in den gleiche Bezugszeichen ähnliche
Elemente zeigen, und denen beispielhaft spezielle Ausführungsformen gezeigt
sind, bei denen die Erfindung praktiziert werden kann. Diese Ausführungsform
sind in ausreichendem Detail beschrieben, um es dem Fachmann zu
ermöglichen,
die Erfindung auszuüben,
und es soll verstanden sein, dass andere Ausführungsformen verwendet werden
können,
und dass logische, mechanische, elektrische, funktionelle oder andere Änderungen
durchgeführt
werden können,
ohne den Rahmen der vorliegenden Erfindung zu verlassen. Die folgende
ausführliche
Beschreibung ist daher nicht in einem einschränkenden Sinne heranzuziehen,
und der Rahmen der vorliegenden Erfindung ist lediglich durch die
beigefügten
Patentansprüche
definiert.
-
Überblick
-
Beginnend
mit einem Überblick über die
Arbeitsweise der Erfindung zeigt 1 eine
Ausführungsform
eines Codiersystem 100. Das Codiersystem 100 umfasst
einen Media codierer 104, einen Metadatengenerator 106 und
einen Dateiersteller 108. Der Mediacodierer 104 empfängt Mediadaten,
welcher Videodaten (beispielsweise Videoobjekte, welche von einer
natürlichen
Videoquellenszene und anderen externen Videoobjekten gebildet sein
können), Audiodaten
(beispielsweise Audioobjekte, die aus einer natürlichen Audioquellenszene und
anderen externen Audioobjekten gebildet sind), künstliche Objekte oder eine
Kombination der obigen aufweisen kann. Der Mediacodierer 104 kann
aus einer Anzahl von individuellen Codierern bestehen, oder er kann Subcodierer
aufweisen, um verschiedene Arten von Mediadaten zu verarbeiten.
Der Mediacodierer 104 codiert die Mediadaten und liefert
diese zum Metadatengenerator 106. Der Metadatengenerator 106 erzeugt
Metadaten, die Information über
die Mediadaten gemäß einem
Mediadateiformat bereitstellen. Das Mediadateiformat kann von dem
ISO-Mediadateiformat (oder irgendeinem von dessen Derivaten, beispielsweise
MPEG-4, JPEG 200, usw.), QuickTime oder irgendeinem anderen Mediadateiformat
hergeleitet sein, und kann außerdem
einige zusätzliche Dateistrukturen
aufweisen. Bei einer Ausführungsform
sind die Zusatzdateistrukturen so definiert, um Metadaten zu speichern,
welche zu Subabtastungen innerhalb der Mediadaten gehören. Bei
einer anderen Ausführungsform
sind Zusatzdatenstrukturen definiert, um Metadaten-Verknüpfungsbereiche
von Mediadaten (beispielsweise Abtastungen oder Subabtastungen)
entsprechend Parametersätzen
zu speichern, welche Decodierinformation enthalten, die traditionell
in den Mediadaten gespeichert wurde. Bei einer noch anderen Ausführungsform
sind die Zusatzdatenstrukturen definiert, um Metadaten zu speichern,
welche zu verschiedenen Gruppen von Abtastungen gehören, innerhalb
der Metadaten, welche auf der Basis von Zwischenabhängigkeiten
von Abtastungen in den Metadaten gebildet sind. Bei einer noch anderen
Ausführungsform
ist eine Zusatzdatenstruktur definiert, um Metadaten zu speichern,
welche zu Schaltabtastsätzen
gehören,
welche mit den Mediadaten verknüpft
sind. Ein Schaltabtastsatz bezieht auf sich auf einen Satz von Abtastungen,
der identische Decodierwerte hat, jedoch von verschiedenen Abtastungen
abhängen
kann. Bei noch anderen Ausführungsformen
sind verschiedene Kombinationen der Zusatzdatenstrukturen im Dateiformat, welches
verwendet wird, definiert. Diese Zusatzdatenstrukturen und ihre
Funktionalität
werden anschließend
ausführlicher
beschrieben.
-
Der
Dateiersteller 108 speichert die Metadaten in einer Datei,
deren Struktur durch das Mediadateiformat definiert ist. Bei einer
Ausführungsform
enthält
die Datei sowohl die codierten Mediadaten als auch Metadaten, welche
zu diesen Mediadaten gehören.
Alternativ sind die codierten Mediadaten teilweise oder gänzlich in
einer separaten Datei enthalten, und sie sind mit den Mediadaten über Referenzen
verknüpft,
die in der Metadatendatei ent halten sind (beispielsweise über URLs).
Die Datei, die durch den Dateiersteller 108 gebildet wird,
ist auf einem Kanal 110 zur Speicherung oder zur Übertragung
verfügbar.
-
2 zeigt eine Ausführungsform
eines Decodiersystems 200. Das Decodiersystem 200 besitzt einen
Metadatenextrahierer 204, einen Mediadatenstrom-Prozessor 206,
einen Mediadecoder 210, einen Zusammensetzer 212 und
einen Bildaufbereiter 214. Das Decodiersystem 200 kann
bei einer Kundeneinrichtung resident sein und für lokale Wiedergabe verwendet
werden. Alternativ kann das Decodiersystem für Stromdaten verwendet werden
und einen Serverbereich und einen Kundenbereich haben, welche miteinander über ein
Netz (beispielsweise Internet) 208 kommunizieren. Der Server
kann den Metadatenextrahierer 204 und den Mediadatenstrom-Prozessor 206 enthalten.
Der Kundenbereich kann den Mediadecoder 210, den Zusammensetzer 212 und den
Bildaufbereiter 214 enthalten.
-
Der
Metadatenextrahierer 204 ist verantwortlich, Metadaten
von einer Datei zu extrahieren, welche in einer Datenbank 216 gespeichert
oder über ein
Netzwerk empfangen wird (beispielsweise vom Codiersystem 100).
Die Datei kann oder sie braucht nicht Metadaten in Verbindung mit
den Metadaten, die extrahiert werden, aufweisen. Die Metadaten, welche
von der Datei extrahiert werden, besitzen eine oder mehrere Zusatzdateistrukturen,
die oben beschrieben wurden.
-
Die
extrahierten Metadaten werden dem Metadatenstrom-Prozessor 206 zugeführt, der
außerdem
die verknüpften
codierten Mediadaten empfängt.
Der Mediadatenstrom-Prozessor 206 verwendet
die Metadaten, um einen Mediadatenstrom zu bilden, der zum Mediadecoder 210 geliefert
wird. Bei einer Ausführungsform
nutzt der Mediadatenstrom-Prozessor 206 Metadaten, welche
zu Subabtastungen gehören,
um Subabtastungen in den Mediadaten zu lokalisieren (beispielsweise
zur Paketierung). Bei einer anderen Ausführungsform nutzt der Metadatenstrom-Prozessor 206 Metadaten,
welche zu Parametersätzen
gehören,
um Bereiche der Mediadaten mit ihren entsprechenden Parametersätzen zu
verknüpfen.
Bei einer noch anderen Ausführungsform
nutzt der Mediadatenstrom-Prozessor 206 Metadaten, welche
verschiedene Gruppen von Abtastungen innerhalb der Metadaten definieren,
um auf Abtastungen in einer bestimmten Gruppe zuzugreifen (beispielsweise
zur Skalierbarkeit durch Fallenlassen einer Gruppe, die Abtastungen
enthält,
von welcher keine weiteren Abtastungen abhängen, um die übertragene
Bitrate als Antwort auf Übertragungszustände abzusenken).
-
Bei
einer noch anderen Ausführungsform nutzt
der Mediadatenstrom-Prozessor 206 Metadaten, welche Schaltabtastsätze definieren,
um eine Schaltabtastung zu lokalisieren, welche den gleichen Decodierwert
wie die Abtastung hat, von der angenommen wird, dass auf diese umgeschaltet
wird, jedoch nicht von den Abtastungen abhängt, von der diese resultierende
Ab tastung abhängen
würde (beispielsweise,
um das Umschalten auf einen Datenstrom mit einer verschiedenen Bitrate
bei einem P-Rahmen oder einem B-Rahmen zu erlauben).
-
Wenn
der Mediadatenstrom gebildet ist, wird dieser zum Mediadecoder 210 entweder
unmittelbar (beispielsweise für
lokale Wiedergabe) oder über
ein Netzwerk 208 (beispielsweise für Stromdaten) zur Decodierung
geliefert. Der Zusammensetzer 212 empfängt das Ausgangssignal des
Mediadecoders 210 und setzt eine Szene zusammen, die durch
einen Bildaufbereiter 214 auf einer Benutzeranzeigeeinrichtung
aufbereitet wird.
-
Die
folgende Beschreibung von 3 soll dazu
dienen, eine Übersicht über eine
Computer-Hardware und andere Betriebskomponenten zu liefern, die
geeignet sind, die Erfindung auszuführen, jedoch nicht beabsichtigt
ist, das Anwendungsumfeld zu beschränken. 3 zeigt eine Ausführungsform eines Computersystems,
welches für
die Verwendung als Metadatengenerator 106 und/oder einen Dateiersteller 108 von 1 geeignet ist, oder für ein Metadatenextrahierer 204 und/oder
einen Mediadatenstrom-Prozessor 206 von 2.
-
Das
Computersystem 340 besitzt einen Prozessor 350,
einen Speicher 355 und eine Eingabe-/Ausgabemöglichkeit 360,
die mit einem Systembus 365 gekoppelt sind. Der Speicher 255 ist
ausgebildet, Instruktionen zu speichern, welche, wenn diese durch
den Prozessor 350 ausgeführt werden, die Verfahren,
die hier beschrieben werden, durchführen. Die Eingabe/Ausgabe 360 umfasst
außerdem verschiedene
Arten von computer-lesbaren Medien, einschließlich irgendeine Art von Speichereinrichtung,
auf die durch den Prozessor 350 zugegriffen werden kann.
Der Fachmann wird unmittelbar erkennen, dass der Ausdruck "computerlesbares
Medium/Media" außerdem eine
Trägerwelle
aufweist, welche ein Datensignal codiert. Man wird außerdem schätzen, dass
das System 340 durch eine Betriebssystem-Software, welche
im Speicher 355 ausgeführt
wird, gesteuert wird. Die Eingabe/Ausgabe und die verwandten Media 360 speichern
computer-ausführbare
Instruktionen für
das Betriebssystem und Verfahren der vorliegenden Erfindung. Der
Metadatengenerator 106, der Dateiersteller 108,
der Metadatenextrahierer 204 und der Mediadatenstrom-Prozessor 206,
welche in 1 und 2 gezeigt sind, können eine
getrennte Komponente sein, welche mit dem Prozessor 350 gekoppelt
sind, oder sie können in
computer-ausführbaren
Instruktionen eingebettet sein, welche durch den Prozessor 350 ausgeführt werden.
Bei einer Ausführungsform
kann das Computersystem 340 Teil sein oder gekoppelt sein
mit einem ISP (Internet-Service-Provider) über eine Eingabe/Ausgabe 360,
um Mediadaten über
das Internet zu übertragen
oder zu empfangen. Man erkennt schnell, dass die vorliegende Erfindung
nicht auf den Internetzugriff oder auf Internet-Web-Sites beschränkt ist.
Direkt gekoppelte und private Netzwerke werden ebenfalls ins Auge
gefasst.
-
Man
wird schätzen,
dass das Computersysteme 340 ein Beispiel von vielen möglichen
Computersystemen ist, die unterschiedliche Architekturen haben.
Ein übliches
Computersystem wird üblicherweise
zumindest einen Prozessor, einen Speicher und einen Bus aufweisen,
der den Speicher mit dem Prozessor koppelt. Der Fachmann wird schnell schätzen, dass
die Erfindung mit anderen Computersystemen-Konfigurationen praktiziert
werden kann einschließlich
Multiprozessorsystemen, Minicomputern, Hauptrechnern und dgl. Die
Erfindung kann außerdem
in verteilten Berechnungsumgebungen praktiziert werden, wo Aufgaben
durch Fernverarbeitungseinrichtungen durchgeführt werden, welche über ein
Kommunikationsnetzwerk miteinander verknüpft sind.
-
Subabtast-Zugreifbarkeit
-
4 und 5 zeigen Prozesse zum Speichern und zum
Wiedergewinnen von Subabtast-Metadaten, welche durch das Codiersystem 100 bzw.
das Decodiersystem 200 durchgeführt werden. Die Prozesse können durch
Verarbeitungslogik durchgeführt werden,
welche Hardware (beispielsweise Schaltungsanordnungen, dafür bestimmte
Logik, usw.), Software (beispielsweise Arbeitsgang auf einem Allzweck-Computersystem
oder einer eigens dafür
bestimmten Maschine) oder eine Kombination von beiden aufweisen
kann. Für
durch Software ausgeführte Prozesse
ermöglicht
die Beschreibung eines Flussdiagramms es dem Fachmann, diese Programme
zu entwickeln, welche Instruktionen enthalten, um die Prozesse auf
geeignet konfigurierten Computern zu führen (dem Prozessor des Computers,
der die Instruktionen von computer-lesbaren Medien durchführt, einschließlich eines
Speichers). Die computerlesbaren Instruktionen können in einer Computerprogrammiersprache
geschrieben sein oder sie können in
eine Firmware-Logik eingebettet sein. Wenn diese in einer Programmiersprache
geschrieben sind, die mit einem anerkannten Standard übereinstimmt,
können
diese Instruktionen auf einer Vielzahl von Hardware-Plattformen
ausgeführt
werden, die eine Schnittstelle mit einer Vielzahl von Betriebssystemen bilden.
Zusätzlich
sind die Ausführungsformen
der vorliegenden Erfindung nicht unter Bezugnahme auf irgendeine
bestimmte Programmiersprache beschrieben. Man wird es schätzen, dass
eine Vielzahl von Programmiersprachen dazu verwendet werden kann,
um die Verfahren, die hier beschrieben sind, auszuführen. Außerdem ist
es auf dem Stand der Technik allgemein, von Software in einer Form
oder einer anderen zu sprechen (beispielsweise Programm, Prozedur,
Prozess, Anwendung, Modul, Logik ...), um eine Aktion zu bewirken
oder um ein Ergebnis zu bewirken. Diese Ausdrücke sind lediglich eine Kurzform,
um auszuführen,
dass die Führung von
Software durch einen Computer veranlasst, dass der Prozessor des
Computers eine Aktion durchführt oder
ein Ergebnis erzeugt. Man wird schätzen, dass mehrere oder weniger
Operationen in den Prozessen, welche in 4 und 5 gezeigt
sind, eingebettet sein können,
ohne den Rahmen der Erfindung zu verlassen, und dass kein bestimmter
Befehl durch die Anordnung von Blöcken darin enthalten ist, die
hier gezeigt und beschrieben sind.
-
4 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 400 zum Bilden von Subabtast-Metadaten
im Codiersystem 100. Zunächst beginnt das Verfahren
mit der Verarbeitungslogik zum Empfangen einer Datei mit codierten
Mediadaten (Verarbeitungsblock 402). Danach extrahiert die
Verarbeitungslogik Information, welche Grenzen von Subabtastungen
in den Mediadaten identifiziert (Verarbeitungsblock 404).
In Abhängigkeit
von dem zu verwendenden Format wird die kleinste Einheit des Datenstroms,
zu dem ein Zeitattribut hinzugefügt werden
kann, als Abtastung (wie durch das ISO-Mediadateiformat oder QuickTime
definiert), als Zugriffseinheit (wie durch MPEG4 definiert) oder
als Bild (wie durch JVT definiert) usw. bezeichnet werden. Eine Subabtastung
bezeichnet einen benachbarten Bereich eines Datenstroms unterhalb
der Ebene einer Abtastung. Die Definition einer Subabtastung hängt vom
Codierformat ab, jedoch im Allgemeinen ist eine Subabtastung eine
bedeutungsvolle Subeinheit einer Abtastung, welche als einzelne
Entität
oder als eine Kombination von Subeinheiten decodiert werden kann,
um eine Partialrekonstruktion einer Abtastung zu erlangen. Eine
Subabtastung kann auch als ein Zugriffseinheitsfragment bezeichnet
werden. Häufig zeigen
Subabtastungen Unterteilungen eines Abtastdatenstroms, so dass jede
Subabtastung weniger oder keine Abhängigkeiten von anderen Subabtastungen
in der gleichen Abtastung hat. Beispielsweise ist in JVT eine Subabtastung
ein NAL-Paket. Ähnlich würde für MPEG-4-Video
eine Subabtastung ein Videopaket sein.
-
Bei
einer Ausführungsform
arbeitet das Codiersystem 100 in der Netzwerkabstraktionsebene, welche
durch JVT wie oben beschrieben definiert ist. Der JVT-Mediadatenstrom
besteht aus einer Reihe von NAL-Paketen, wobei jedes NAL-Paket (auch
als NAL-Einheit
bezeichnet) einen Datenkopfteil und einen Nutzlastteil enthält. Eine
Art eines NAL-Pakets wird
dazu verwendet, codierte VCL-Daten für jeden Slice oder eine einzelne
Datenpartition eines Slice zu umfassen. Außerdem kann ein NAL-Paket ein
Informationspaket sein, welches ergänzende Verbesserungsinformationsnachrichten
(SEI) enthält. SEI-Nachrichten
zeigen optionale Daten, welche beim Decodieren entsprechender Slices
verwendet werden. Bei JVT könnte
eine Subabtastung ein komplettes NAL-Paket mit sowohl einem Datenkopf
als auch einer Nutzlast sein.
-
Im
Verarbeitungsblock 406 bildet die Verarbeitungslogik Subabtast-Metadaten,
welche Subabtastungen in den Mediadaten definieren. Bei einer Ausführungsform
sind die Subabtast-Metadaten zu einem Satz vorher festgelegter Datenstrukturen
(beispielsweise einem Satz von Boxen) gegliedert. Der Satz vorher
festgelegter Datenstrukturen kann eine Datenstruktur enthalten,
welche Information über
die Größe jeder
Abtastung enthält,
eine Datenstruktur, welche Information über die Gesamtzahl von Subabtastungen
in jeder Abtastung enthält,
eine Datenstruktur, welche Information enthält, welche jede Subabtastung
beschreibt (beispielsweise, was als Subabtastung definiert ist),
oder irgendeine andere Datenstruktur, welche Daten enthält, die
zu den Subabtastungen gehören.
-
Anschließend bestimmt
bei einer Ausführungsform
die Verarbeitungslogik, ob irgendeine Datenstruktur eine Wiederholungssequenz
von Daten enthält
(Entscheidungsbox 408). Wenn diese Entscheidung positiv
ist, setzt die Verarbeitungslogik jede Wiederholungssequenz von
Daten in eine Referenz zu einem Sequenzvorkommnis und der Häufigkeit,
mit der die Wiederholungssequenz auftritt, um (Verarbeitungsblock 410).
-
Danach
nimmt im Verarbeitungsblock 412 die Verarbeitungslogik
die Subabtast-Metadaten
in eine Datei in Verbindung mit Mediadaten unter Verwendung eines
speziellen Mediadateiformats (beispielsweise des JVT-Dateiformats)
auf. In Abhängigkeit
vom Mediadateiformat können
die Subabtast-Metadaten mit Abtast-Metadaten (beispielsweise Subabtast-Datenstrukturen
können
in einer Abtasttabellenbox, welche Abtastdatenstrukturen enthält, enthalten
sein) oder unabhängig
von den Abtast-Metadaten gespeichert werden.
-
5 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 500, um Subabtast-Mediadaten im Decodiersystem 200 zu
nutzen. Anfangs beginnt das Verfahren 500 mit einer Verarbeitungslogik,
welche eine Datei empfängt,
welche mit codierten Mediadaten verknüpft ist (Verarbeitungsblock 502).
Die Datei kann von einer Datenbank (lokal oder extern), vom Codiersystem 100 oder
von irgendeiner anderen Einrichtung in einem Netzwerk empfangen werden.
Die Datei umfasst Subabtast-Metadaten, welche Subabtastungen in
den Mediadaten definieren.
-
Anschließend extrahiert
die Verarbeitungslogik die Subabtast-Metadaten von der Datei (Verarbeitungsblock 504).
Wie oben beschrieben können
die Subabtast-Metadaten in einem Satz von Datenstrukturen gespeichert
werden (beispielsweise einem Satz von Boxen).
-
Außerdem verwendet
im Verarbeitungsblock 506 die Verarbeitungslogik die extrahierten
Metadaten, um Subabtastungen in den codierten Mediadaten zu identifizieren
(die in der gleichen Datei oder in einer anderen Datei gespeichert
sind) und kombiniert verschiedene Subabtastungen zu Paketen, welche zu
einem Mediadecoder zu liefern sind, womit eine flexible Paketierung
von Mediadaten zur Datenstrombildung ermöglicht wird (beispielsweise
um Fehlerabfederung, Skalierbarkeit, usw. zu unterstützen).
-
Beispielhafte
Subabtast-Metadatenstrukturen werden mit Hilfe eines erweiterten
ISO-Mediadateiformats (als erweiterte MP4 bezeichnet) beschrieben.
Für den
versierten Fachmann soll klar sein, dass andere Mediadateiformate
leicht erweitert werden können,
um ähnliche
Datenstrukturen zum Speichern von Subabtast-Mediadaten einzuschließen.
-
6 zeigt das erweiterte MP4-Mediadatenstrommodell
mit Subabtastungen. Präsentationsdaten
(beispielsweise eine Präsentation,
welche synchronisiertes Audio und Video enthält) ist durch einen Filmstreifen
(Movie) 602 dargestellt. Der Filmstreifen 602 besitzt
einen Satz von Tracks 604. Jeder Track 604 stellt
einen Mediadatenstrom dar. Jeder Track 604 ist in Abtastungen 606 unterteilt.
Jede Abtastung 606 stellt eine Einheit von Mediadaten in
einem bestimmten Zeitpunkt dar. Eine Abtastung 606 ist
außerdem
in Subabtastungen 608 unterteilt. Beim JVT-Standard kann
eine Subabtastung 608 ein NAL-Paket oder eine Einheit darstellen,
beispielsweise einen einzelnen Slice eines Bildes, eine Datenpartition
eines Slice mit mehreren Datenpartitionen, einen Bandparametersatz
oder ein SEI-Informationspaket. Alternativ kann eine Subabtastung 606 irgendein
anderes strukturiertes Element einer Abtastung zeigen, beispielsweise
die codierten Daten, welche einen räumlichen oder zeitlichen Bereich
in den Medien zeigen. Bei einer Ausführungsform kann irgendeine
Partition der codierten Mediadaten gemäß einem strukturellen oder
semantischen Kriterium als eine Subabtastung behandelt werden.
-
7A–7L zeigen
beispielhafte Datenstrukturen zum Speichern von Subabtast-Metadaten.
-
Gemäß 7A ist eine Abtasttabellenbox 700,
welche Abtast-Metadatenboxen enthält, die durch das ISO-Mediadateiformat
definiert sind, erweitert, so dass sie Subabtast-Zugriffsboxen, beispielsweise eine Subabtast-Größenbox 702,
eine Subabtast-Beschreibungsverknüpfungsbox 704, eine
Subabtast-Abtastbox 706 und eine Subabtast-Beschreibungsbox 708 enthält. Bei
einer Ausführungsform
ist die Verwendung von Subabtast-Zugriffsboxen optional.
-
Gemäß 7B kann eine Abtastung 710 beispielsweise
in Slices, beispielsweise einen Slice 712, Datenpartitionen,
beispielsweise Partitionen 714 und Bereichen von Interesse
(ROIs), beispielsweise einen ROI 716 unterteilbar sein.
Ein jedes dieser Beispiele zeigt eine unterschiedliche Art einer
Unterteilung von Abtastungen in Subabtastungen. Subabtastungen innerhalb
einer einzelnen Abtastung können
unterschiedliche Größen aufweisen.
-
Eine
Subabtast-Größenbox 718 enthält ein Versionsfeld,
welches die Version der Subabtast-Größenbox 718 spezifiziert,
eine Subabtast-Größenfeld,
welches die Voreinstellungs-Subabtastgröße spezifiziert, ein Subabtast-Zählfeld,
um die Anzahl von Subabtastungen im Track bereitzustellen, und ein
Eintragsgrößenfeld,
welches die Größe jeder Subabtastung
spezifiziert. Wenn das Subabtast-Größenfeld auf 4 gesetzt ist,
haben die Subabtastungen unterschiedliche Größen, welche in der Subabtast-Größentabelle 720 gespeichert
sind. Wenn das Subabtast-Größenfeld
nicht auf 0 gesetzt ist, gibt dies die konstante Subabtastgröße an, die
zeigt, dass die Subabtast-Größentabelle 720 leer
ist. Die Tabelle 720 kann eine feste Größe von 32 Bit oder ein variables
Längenfeld
haben, um die Subabtastgrößen zu zeigen.
Wenn das Feld eine variable Länge hat,
enthält
die Subabtast-Tabelle ein Feld, welches die Länge in Bytes des Subabtast-Größenfelds
zeigt.
-
Gemäß 7C besitzt eine Subabtast-Abtastbox 722 ein
Versionsfeld, welches die Version der Subabtast-Abtastbox 722 spezifiziert,
ein Eintragszählfeld,
welches die Anzahl von Einträgen
in der Tabelle 723 zeigt. Jeder Eintrag in der Subabtast-Abtasttabelle
enthält
ein erstes Abtastfeld, welches den Index der ersten Abtastung im
Lauf von Abtastungen bereitstellt, welche sich die gleiche Anzahl
von Subabtastungen pro Abtastung teilen, und Subabtastungen pro
Abtastfeld, welches die Anzahl von Subabtastungen in jeder Abtastung
innerhalb eines Laufs von Abtastungen bereitstellt.
-
Die
Tabelle 723 kann dazu verwendet werden, um die Gesamtzahl
von Subabtastungen im Track zu finden, indem berechnet wird, wie
viele Abtastungen in einem Lauf sind, diese Anzahl mit der geeigneten
Subabtast-Pro-Abtastung multipliziert wird und die Ergebnisse aller
Läufe zusammen
addiert werden.
-
Gemäß 7D besitzt eine Subabtast-Beschreibungsverknüpfungsbox 724 ein
Versionsfeld, welches die Version der Subabtast-Beschreibungs-Verknüpfungsbox 724 angibt,
einen Beschreibungsart-Identifizierer, der die Art von Subabtastungen,
die zu beschreiben sind, zeigt (beispielsweise NAL-Pakete, Bereiche
von Interesse usw.), und ein Eintragszählfeld, welches die Anzahl
von Einträgen in
der Tabelle 726 liefert. Jeder Eintrag in der Tabelle 726 besitzt
eine Subabtast-Beschreibungsart-Identifizierfeld, welches eine Subabtast-Beschreibungs-ID zeigt,
und ein erstes Subabtastfeld, welches den Index der ersten Subabtastung
in einem Arbeitsgang von Subabtastungen angibt, welche sich die
gleiche Subabtast-Beschreibungs-ID
anteilig teilen.
-
Der
Subabtast-Beschreibungsart-Identifizierer steuert die Verwendung
des Subabtast-Beschreibungs-ID-Felds. Das heißt, dass in Abhängigkeit
von dem Typus, der im Beschreibungsart-Identifizierer spezifiziert
ist, das Subabtast-Beschreibungs-ID-Feld selbst eine Beschreibungs-ID
spezifizieren kann, welche unmittelbar die Subabtast-Beschreibungen
innerhalb der ID selbst codiert, oder das Subabtast-Beschreibungs-ID-Feld
als Index zu einer unterschiedlichen Tabelle dienen kann (d.h., eine
Subabtast-Beschreibungstabelle, welche anschließend beschrieben wird). Wenn
beispielsweise der Beschreibungsart-Identifizierer eine JVT-Beschreibung
zeigt, kann das Subabtast-Beschreibungs-ID-Feld einen Code aufweisen,
der die Merkmale von JVT-Subabtastungen spezifiziert. In diesem Fall
kann das Subabtast-Beschreibungs-ID-Feld
ein 32-Bit-Feld sein, wobei die niedrigwertigsten 8 Bits wie eine
Bitmaske verwendet werden, um das Vorhandensein der vorher festgelegten
Datenpartition innerhalb einer Subabtastung zu zeigen, und die höherwertigeren
24 Bits, um die NAL-Paketart zu zeigen, oder für zukünftige Erweiterungen verwendet werden.
-
Gemäß 7E besitzt eine Subabtast-Beschreibungsbox 728 ein
Versionsfeld, welches die Version der Subabtast-Beschreibungsbox 728 angibt,
ein Eintragszählfeld,
welches die Anzahl von Einträgen
in der Tabelle 730 angibt, ein Beschreibungsart-Identifizierfeld,
welches eine Beschreibungsart eines Subabtast-Beschreibungsfelds
bereitstellt, welches Information über die Charakteristik von
den Subabtastdaten liefert, und eine Tabelle, welche einen oder
mehrere Subabtast-Beschreibungseinträge 730 enthält. Die
Subabtast-Beschreibungsart identifiziert die Art, auf die sich die
Beschreibungsinformation bezieht, und entspricht dem gleichen Feld
in der Subabtast-Beschreibungs-Verknüpfungstabelle 724.
Jeder Eintrag in der Tabelle 730 enthält einen Subabtast-Beschreibungseintrag mit
Information über
die Charakteristik der Subabtastungen in Verbindung mit diesem Beschreibungseintrag.
Die Information und das Format des Beschreibungseintrags hängen von
dem Beschreibungsartenfeld ab. Wenn beispielsweise die Beschreibungsart der
Parametersatz ist, wird jeder Beschreibungseintrag den Wert des
Parametersatzes enthalten.
-
Die
beschreibende Information kann sich auf die Parametersatzinformation,
die Information, welche zu ROI gehört, oder auf eine andere Information beziehen,
die notwendig ist, die Subabtastungen zu charakterisieren. Für Parametersätze zeigt
die Subabtast-Beschreibungs-Verknüpfungstabelle 724 den
Parametersatz in Verbindung mit jeder Subabtastung an. In diesem
Fall entspricht die Subabtast-Beschreibungs-ID dem Parametersatz-Identifizierer. Ähnlich kann
eine Subabtastung unterschiedliche Bereiche von Interesse wie folgt
darstellen. Definieren einer Subabtastung als einen oder mehrere codierter
Makroblöcke
und dann Verwendung der Subabtast-Beschreibungs-Verknüpfungstabelle,
um die Unterteilung der codierten Makroblöcke eines Videorahmens oder
eines Bilds in unterschiedlichen Bereichen darzustellen. Beispielsweise
können
die codierten Makroblöcke
in einem Rahmen in Vordergrund- und Hintergrund-Makroblöcke mit
zwei Subabtast-Beschreibungs-ID unterteilt werden (beispielsweise
Subabtast-Beschreibungs-ID von 1 und 2), welche die Zuordnung mit
dem Vordergrund- bzw. Hintergrundbereich zeigen.
-
7F zeigt unterschiedliche
Arten von Subabtastungen. Eine Subabtastung kann einen Slice 732 ohne
Partition, einen Slice 734 mit mehreren Datenpartitionen,
einen Datenkopf 736 innerhalb eines Slice, eine Datenpartition 738 in
der Mitte eines Slice, die letzte Datenpartition 140 eines
Slice, ein SEI-Informationspaket 742 usw. darstellen. Eine
jede dieser Subabtastarten kann mit einem speziellen Wert einer
8-Bit-Maske 744 verknüpft
sein, welche in 7G gezeigt
ist. Die 8-Bit-Maske kann die 8 niedrigstwertigen Bits des 32-Bit-Subabtast-Beschreibungs-ID-Felds
wie oben erläutert
bilden. 7H zeigt die
Subabtast-Beschreibungs-Verknüpfungsbox 724,
welche den Beschreibungsart-Identifizierer gleich "jvtd" hat. Die Tabelle 726 enthält das 32-Bit-Subabtast-Beschreibungs-ID-Feld,
in welchem die Werte, welche in 7G gezeigt
sind, gespeichert sind.
-
7H–7K zeigen
die Kompression von Daten in einer Subabtast-Beschreibungs-Verknüpfungstabelle.
-
Gemäß 7I enthält eine nichtkomprimierte Tabelle 726 eine
Sequenz 750 von Subabtast-Beschreibungs-IDs, welche eine
Sequenz 748 wiederholt. In einer Kompressionstabelle 746 wurde
die Wiederholungssequenz 750 in eine Referenz zur Sequenz 748 und
der Häufigkeit,
mit der diese Sequenz auftritt, komprimiert.
-
Bei
einer in 7J gezeigten
Ausführungsform
kann ein Sequenzvorkommnis im Subabtast-Beschreibungs-ID-Feld unter
Verwendung von dessen höchstwertigen
Bit als Sequenzfleck-Arbeitsgang 754 codiert werden, dessen
nächste
23 Bits als Vorkommnisindex 756, und dessen niedrigwertigste Bits
als Vorkommnislänge 758.
Wenn das Flag 754 auf 1 gesetzt wird, zeigt dies, dass
dieser Eintrag ein Vorkommnis einer Wiederholungssequenz ist. Ansonsten
ist dieser Eintrag eine Subabtast-Beschreibungs-ID. Der Vorkommnisindex 756 ist
der Index in der Subabtast-Beschreibungs-Verknüpfungsbox 724 des
ersten Vorkommnisses der Sequenz, und die Länge 758 zeigt die
Länge des
Vorkommnisses der Wiederholungssequenz.
-
Bei
einer anderen Ausführungsform,
welche in 7K gezeigt
ist, wird eine Wiederholungssequenz-Vorkommnistabelle 760 dazu
verwendet, das Vorkommnis der Wiederholungssequenz zu zeigen. Das
höchstwertige
Bit des Subabtast-Beschreibungs-ID-Felds wird als Sequenzarbeitsgangflag 762 verwendet.
welches zeigt, ob der Eintrag eine Subabtast-Beschreibungs-ID oder ein Sequenzindex 764 des
Eintrags in der Wiederholungssequenz-Vorkommnistabelle 760 ist,
welcher Teil der Subabtast-Beschreibungs-Verknüpfungsbox 724 ist.
Die Wiederholungssequenz-Vorkommnistabelle 760 umfasst
ein Vorkommnisindexfeld, um den Index in der Subabtast-Beschreibungs-Verknüpfungsbox 724 des ersten
Postens in der Wiederholungssequenz anzugeben, und ein Längenfeld,
um die Länge
der Wiederholungssequenz zu spezifizieren.
-
Parametersätze
-
Bei
bestimmten Mediaformaten, beispielsweise JVT, wird die "Datenkopf"-Information, welche die
kritischen Steuerungswerte enthält,
die benötigt werden,
um die Mediadaten genau zu decodierten, vom Rest der codierten Daten
getrennt/entkoppelt und in Parametersätzen gespeichert. Dann können bevorzugt
zum Mischen dieser Steuerungsdaten im Datenstrom gemeinsam mit den
codierten Daten die codierten Daten auf notwendige Parametersätze unter
Verwendung eines Mechanismus, beispielsweise eines einzigartigen
Identifizierers bezogen werden. Dieser Versuch entkoppelt die Übertragung
von Codierparametern höherer
Ebenen von codierten Daten. Im gleichen Zeitpunkt reduziert er außerdem die Redundanzen
durch anteiliges Aufteilen gemeinsamer Sätze von Steuerungswerten wie
Parametersätzen.
-
Um
effiziente Übertragung
von gespeicherten Mediadatenströmen
zu unterstützen,
welche Parametersätze
nutzen, muss ein Sender oder Wiedergabegerät in der Lage sein, die codierten
Daten mit einem entsprechenden Parameter schnell zu verknüpfen, um
zu erkennen, wann und wo der Parametersatz zu übertragen oder auf diesen zuzugreifen
ist. Eine Ausführungsform
der vorliegenden Erfindung liefert diese Fähigkeit, wobei Daten, welche
die Verknüpfungen
zwischen Parametersätzen
und entsprechenden Bereichen der Mediadaten als Parametersatz-Mediadaten
in einem Mediadateiformat spezifizieren, gespeichert werden.
-
8 und 9 zeigen Prozesse, um Parametersatz-Metadaten
zu speichern und wiederaufzufinden, welche durch das Codiersystem 100 bzw.
das Decodiersystem 200 entsprechend durchgeführt werden.
Die Verfahren können
durch Verarbeitungslogik durchgeführt werden, welche Hardware
(beispielsweise Schaltungen, dafür
bestimmte Logik, usw.), Software (beispielsweise den Arbeitslauf
auf einem Allzweck-Computersystem oder einer dafür bestimmten Maschine), oder
eine Kombination von beiden aufweist.
-
8 zeigt ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 800, um Parametersatz-Metadaten im Codiersystem 100 zu
bilden. Anfangs beginnt das Verfahren 800 mit einer Logikverarbeitung,
welche eine Datei mit codierten Mediadaten empfängt (Verarbeitungsblock 802).
Die Datei enthält
Sätze codierter
Parameter, die spezifizieren, wie Bereiche der Mediadaten zu decodieren
sind. Anschließend
prüft die
Verarbeitungslogik die Beziehungen zwischen den Sätzen von
codierbaren Parametern, die als Parametersätze bezeichnet werden, und
den entsprechenden Bereichen der Mediadaten (Verarbeitungsblock 804)
und bildet Parametersatz-Metadaten, welche die Parametersätze und
ihre Verknüpfungen
mit den Mediadatenbereichen definieren (Verarbeitungsblock 806).
Die Mediadatenbereiche können
durch Abtastungen oder Subabtastungen dargestellt sein.
-
Bei
einer Ausführungsform
sind die Parametersatz-Metadaten in einen Satz vorher festgelegter Datenstrukturen
(beispielsweise einen Satz von Boxen) gegliedert. Der Satz vorher
festgelegter Datenstrukturen kann eine Datenstruktur aufweisen,
welche beschreibende Information über die Parametersätze enthält, und
eine Datenstruktur, welche Information enthält, welche die Verknüpfungen
zwischen Abtastungen und entsprechenden Parametersätzen enthält. Bei
einer Ausführungsform
enthält
der Satz definierter Datenstrukturen außerdem eine Datenstruktur,
welche Information enthält,
welche Verknüpfungen
zwischen Subabtastungen und entsprechenden Parametersätzen definiert.
Die Datenstrukturen, welche Subabtastung-Parametersatz-Verknüpfungsinformation
enthalten, können
die Datenstrukturen aufheben oder nicht, welche Abtast- zu Parametersatz-Verknüpfungsinformation
enthalten.
-
Anschließend bestimmt
bei einer Ausführungsform
die Verarbeitungslogik, ob eine Parametersatz-Datenstruktur eine
Wiederholungssequenz von Daten enthält (Entscheidungsbox 808).
Wenn diese Bestimmung positiv ist, setzt die Verarbeitungslogik
jede Wiederholungsdatensequenz in eine Referenz zu einem Sequenzvorkommnis
und die Häufigkeit
um, mit der die Sequenz auftritt (Verarbeitungsblock 810).
-
Danach
nimmt im Verarbeitungsblock 812 die Verarbeitungslogik
die Parametersatz-Metadaten in einer Datei in Verbindung mit den
Mediadaten unter Verwendung eines spezifischen Mediadateiformats
auf (beispielsweise das JVT-Dateiformat). In Abhängigkeit vom Mediadateiformat
können
die Parametersatz-Metadaten mit Track-Metadaten und/oder Abtastmetadaten
(beispielsweise die Datenstruktur, welche die beschreibende Information über Parametersätze enthält, kann
in einer Track-Box enthalten sein und die Datenstruktur (Strukturen),
welche Verknüpfungsinformation
enthalten, können
in einer Abtasttabellenbox enthalten sein) oder unabhängig von
den Track-Metadaten und/oder Abtast-Metadaten gespeichert werden.
-
9 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 900, um Parametersatz-Metadaten im Decodiersystem 200 zu
verwenden. Anfangs beginnt das Verfahren 900 mit der Verarbeitungslogik,
welche eine Datei in Verbindung mit codierten Mediadaten empfängt (Verarbeitungsblock 902).
Die Datei kann von einer Datenbank (lokal oder extern), vom Codiersystem 100 oder
von einer anderen Einrichtung in einem Netzwerk empfangen werden.
Die Datei umfasst Parametersatz-Metadaten, die Parametersätze für die Mediadaten
und Verknüpfungen
zwischen den Parametersätzen
und entsprechenden Berei chen der Mediadaten definieren (beispielsweise
entsprechende Abtastungen oder Subabtastungen).
-
Danach
extrahiert die Verarbeitungslogik die Parametersatz-Metadaten von
der Datei (Verarbeitungsblock 904). Wie oben erläutert können die
Parametersatz-Metadaten in einem Satz von Datenstrukturen gespeichert
werden (beispielsweise einem Satz von Boxen).
-
Weiter
verwendet im Verarbeitungsblock 906 die Verarbeitungslogik
die extrahierten Metadaten, um zu bestimmen, welcher Parametersatz
mit einem spezifischen Metadatenbereich verknüpft ist (beispielsweise einer
Abtastung oder Subabtastung). Diese Information kann dazu verwendet
werden, die Übertragungszeit
von Mediadatenbereichen und entsprechender Parametersätze zu steuern.
Das heißt, dass
ein Parametersatz, der dazu verwendet werden soll, eine spezielle
Abtastung oder Subabtastung zu decodieren, vor einem Paket gesendet
werden muss, welches die Abtastung oder Subabtastung enthält, oder
mit dem Paket, welches die Abtastung oder Subabtastung enthält.
-
Somit
ermöglicht
die Verwendung von Parametersatz-Metadaten eine unabhängige Übertragung
von Parametersätzen
auf einem verlässlicheren
Kanal, eine Reduzierung der Möglichkeit
auf Fehler oder des Datenverlusts, der bewirkt, dass Teile des Mediadatenstroms
verloren werden.
-
Beispielhafte
Parametersätze-Metadatenstrukturen
werden nun mit Bezugnahme auf ein erweitertes ISO-Mediadateiformat
beschrieben (bezeichnet als erweiterte ISO). Es sei angemerkt, dass jedoch
auch andere Mediadateiformate erweitert werden können, um verschiedene Datenstrukturen einzubeziehen,
um Parametersatz-Metadaten zu speichern.
-
10A–10E zeigen
beispielhafte Datenstrukturen zum Speichern von Parametersatz-Metadaten.
-
Gemäß 10A wird eine Track-Box 1002, welche
Track-Metadateboxen enthält,
die durch das ISO-Dateiformat definiert sind, erweitert, um eine
Parametersatz-Beschreibungsbox 1004 zu enthalten. Zusätzlich wird
eine Abtasttabellenbox 1006, welche Abtast-Metadatenboxen
enthält,
welche durch das ISO-Dateiformat definiert sind, erweitert, um eine
Abtast-Parametersatzbox 1008 zu enthalten. Bei einer Ausführungsform
weist die Abtasttabellenbox 1006 eine Subabtast-Parametersatzbox
auf, welche die Abtast-Parametersatzbox 1008 ausschalten
kann, wie ausführlicher
unten beschrieben wird.
-
Bei
einer Ausführungsform
sind die Parametersatz-Metadatenboxen 1004 und 1008 ein
Muss. Bei einer anderen Ausführungsform
ist lediglich die Parametersatz-Beschreibungsbox 1004 ein
Muss. Bei einer noch anderen Ausführungsform sind alle Parametersatz-Matedatenboxen optional.
-
Gemäß 10B enthält eine Parametersatz-Beschreibungsbox 1010 ein
Versionsfeld, welches die Version der Parametersatz-Beschreibungsbox 1010 spezifiziert,
ein Parametersatz-Beschreibungszählfeld,
um die Anzahl von Einträgen
einer Tabelle 1012 bereitzustellen, und ein Parametersatz-Eintragsfeld,
welches Einträge
für die
Parametersätze
selbst enthält.
-
Auf
Parametersätze
kann von der Abtastebene oder der Subabtastebene bezuggenommen werden.
Bezugnehmend auf 10C liefert
eine Abtast-Parametersatzbox 1014 Bezugnahmen auf Parametersätze von
der Abtastebene. Die Abtastparametersatzbox 1014 umfasst
ein Versionsfeld, welches die Version der Abtast-Parametersatzbox 1014 spezifiziert,
eine Voreinstellungsparametersatz-ID-Feld, welches den Voreinstellungsparametersatz-ID
spezifiziert, ein Eintragszählfeld,
welches die Anzahl von Einträgen
in der Tabelle 1016 liefert. Jeder Eintrag in der Tabelle 1016 enthält ein erstes Abtastfeld,
welches den Index einer ersten Abtastung in einem Arbeitsgang von
Abtastungen bereitstellt, die sich den gleichen Parametersatz anteilig
teilen, und einen Parametersatzindex, der den Index zur Parametersatz-Beschreibungsbox 1010 spezifiziert. Wenn
die Voreinstellungsparametersatz-ID gleich 0 ist, haben die Abtastungen
verschiedene Parametersätze,
welche in der Tabelle 1016 gespeichert werden. Ansonsten
wird ein konstanter Parametersatz verwendet und es folgt keine Matrix.
-
Bei
einer Ausführungsform
werden Daten in der Tabelle 1016 komprimiert, indem jede
Wiederholungssequenz in eine Referenz in bezug auf die Anfangssequenz
umgesetzt wird, und in die Häufigkeit, mit
der diese Sequenz auftritt, wie ausführlicher oben in Verbindung
mit der Subabtast-Beschreibungsverknüpfungstabelle erläutert wurde.
-
Auf
Parametersätze
kann von der Subtastebene durch Definieren von Verknüpfungen
zwischen Parametersätzen
und Subabtasten bezug genommen werden. Bei einer Ausführungsform
sind die Verknüpfungen
zwischen Parametersätzen
und Subabtastungen unter Verwendung einer Subabtast-Beschreibungs-Verknüpfungsbox,
die oben beschrieben wurde, definiert. 10D zeigt eine Subabtast-Beschreibungs-Verknüpfungsbox 1018 mit
dem Beschreibungsart-Identifizierer, der sich auf Parametersätze bezieht
(beispielsweise ist der Beschreibungsart-Identifizierer gleich "pars") Auf der Basis dieses
Beschreibungsart-Identifizierers zeigt die Subabtast-Beschreibungs-ID
in der Tabelle 1020 den Index in der Parametersatz-Beschreibungsbox 1010.
-
Bei
einer Ausführungsform,
wenn die Subabtast-Beschreibungs-Verknüpfungsbox 1018 mit
dem Beschreibungsart-Identifizierer, der sich auf Parametersätze bezieht,
vorhanden ist, schaltet sie die Abtast-Parametersatzbox 104 aus.
-
Ein
Parametersatz kann sich zwischen der Zeit, wo der Parametersatz
gebildet wird, und der Zeit, wo der Parametersatz verwendet wird, ändern, um
einen entsprechenden Bereich von Mediadaten zu decodieren. Wenn
eine derartige Änderung
auftritt, empfängt
das Decodiersystem 200 ein Parameter-Update-Paket, welches
eine Änderung
zum Parametersatz spezifiziert. Die Parametersatz-Metadaten enthalten
Daten, welche den Zustand des Parametersatzes sowohl vor dem Update
als nach dein Update identifizieren.
-
Gemäß 10E weist die Parametersatz-Beschreibungsbox 1010 einen
Eintrag für
den Anfangsparametersatz 1022 auf, der im Zeitpunkt t0 erzeugt wird, und einen Eintrag für einen
aktualisierten Parametersatz 1024, der als Antwort auf
ein Parameter-Update-Paket 1026 gebildet wird, welches im
Zeitpunkt t1 empfangen wird. Die Abtastbeschreibungs-Verknüpfungsbox 1018 verknüpft die
beiden Parametersätze
mit entsprechenden Subabtastungen.
-
Abtastgruppen
-
Obwohl
die Abtastungen innerhalb eines Tracks unterschiedliche logische
Gruppierungen (Partitionen) von Abtastungen in Sequenzen (möglich nicht
aufeinanderfolgend) haben können,
die Hochebenenstrukturen in den Mediadaten zeigen, liefern existierende
Dateiformate keine bequemen Mechanismen, um diese Gruppierungen
zu zeigen und zu speichern. Beispielsweise organisieren fortgeschrittene
Codierformate, beispielsweise JVT, Abtastungen innerhalb eines einzelnen
Tracks zu Gruppen auf der Basis ihrer Zwischenabhängigkeiten. Diese
Gruppen (hier als Sequenzen oder Abtastgruppen bezeichnet) können dazu
verwendet werden, Ketten von verfügbaren Abtastungen zu identifizieren,
wenn durch Netzwerkbedingungen erforderlich, um somit die zeitliche
Skalierbarkeit zu unterstützen. Das
Speichern von Metadaten, welche Abtastgruppen in einem Dateiformat
definieren, ermöglicht
es dem Sender von Media, einfach und effizient die obigen Merkmale
auszuführen.
-
Ein
Beispiel einer Abtastgruppe ist ein Abtastsatz, deren Zwischenrahmenabhängigkeiten
es diesem erlaubt, unabhängig
von anderen Abtastungen decodiert zu werden. Bei JVT wird eine Abtastgruppe
als eine fortgeschrittene Gruppe von Bildern bezeichnet (verbesserte
GOP). Bei einer fortgeschrittenen GOP können Abtastungen in Subsequenzen unterteilt
werden. Jede Subsequenz weist einen Satz von Abtastungen ab, die
von einander abhängen
und können
als eine Einheit angeordnet (verfügbar) sein. Zusätzlich können Abtastungen
einer fortgeschrittenen GOP hierarchisch in Ebenen strukturiert
werden, so dass Abtastungen in einer höheren Ebene lediglich von Abtastungen
in einer niedrigeren Ebene vorhergesagt werden, wodurch erlaubt
wird, dass die Abtastungen der höchsten
Ebene verfügbar
sein können,
ohne die Fähigkeit
zu beeinträchtigen,
andere Abtastungen zu decodieren. Die niedrigste Ebene, welche Abtastungen
aufweist, welche nicht von Abtastungen in anderen Ebenen abhängt, wird
als Basisebene bezeichnet. Jede andere Ebene, welche nicht die Basisebene
ist, wird als eine fortgeschrittene Ebene bezeichnet.
-
11 zeigt ein Beispiel einer
verbesserten GOP, bei welcher die Abtastungen in zwei Ebenen unterteilt
sind, einer Basisebene 1102 und einer verbesserten Ebene 1104,
sowie zwei Subsequenzen 1106 und 1108. Jede der
beiden Subsequenzen 1106 und 1108 kann unabhängig voneinander
fallengelassen werden.
-
12 und 13 zeigen Verarbeitungen, um Abtastgruppen-Metadaten
zu speichern und wiederaufzufinden, welche durch das Codiersystem 100 bzw.
das Decodiersystem 200 durchgeführt werden. Die Verarbeitungen
können
durch Verarbeitungslogik durchgeführt werden, die Hardware (beispielsweise eine
Verschaltung, dafür
speziell bestimmte Logik, usw.), Software (beispielsweise als Arbeitsgang
in bezug auf ein Allgemeinzweck-Computersystem oder eine spezielle
Maschine), oder eine Kombination von beiden aufweisen kann.
-
12 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 1200, um Abtastgruppen-Metadaten im Codiersystem 100 zu
bilden. Zunächst
beginnt das Verfahren 1200 mit einer Verarbeitungslogik,
welche eine Datei mit codierten Mediadaten empfängt (Verarbeitungsblock 1202).
Abtastungen innerhalb eines Tracks der Mediadaten haben bestimmte
Zwischenabhängigkeiten.
Beispielsweise kann der Track I-Rahmen aufweisen, die nicht von anderen
Abtastungen abhängen,
P-Rahmen, welche von einer einzigen vorherigen Abtastung abhängen, und
B-Rahmen, welche von zwei vorherigen Abtastungen abhängen, einschließlich einer
Kombination von I-Rahmen, P-Rahmen und B-Rahmen. Auf der Basis ihrer
Zwischenabhängigkeiten
können
die Abtastungen in einem Track zu Abtastgruppen logisch kombiniert
werden (beispielsweise verbesserten GOPs, Ebenen, Subsequenzen,
usw.).
-
Anschließend prüft die Verarbeitungslogik die
Mediadaten, um Abtastgruppen in jedem Track (Verarbeitungsblock 1204)
zu identifizieren, und bildet Abtastgruppen-Metadaten, welche die
Abtastgruppen beschreiben und definiert, welche Abtastungen in jeder
Abtastgruppe enthalten sind (Verarbeitungsblock 1206).
Bei einer Ausführungsform
sind die Abtastgruppen-Metadaten in einem Satz von vorher festgelegten
Datenstrukturen organisiert (beispielsweise einem Satz von Boxen).
Der Satz vorher festgelegter Datenstrukturen kann eine Datenstruktur aufweisen,
welche beschreibende Information über jede Abtastgruppe enthält, und
eine Datenstruktur, welche Information enthält, welche Abtastungen identifiziert,
welche in jeder Abtastgruppe enthalten sind.
-
Anschließend bestimmt
bei einer Ausführungsform
die Verarbeitungslogik, ob eine Abtastgruppe-Datenstruktur eine
Wiederholungsdatensequenz enthält
(Entscheidungsbox 1208). Wenn diese Bestimmung positiv
ist, setzt die Verarbeitungslogik jede Wiederholungssequenz von
Daten in eine Referenz zu einem Sequenzvorkommnis und der Häufigkeit
um, mit der die Sequenz auftritt (Verarbeitungsblock 1210).
-
Danach
nimmt im Verarbeitungsblock 1212 die Verarbeitungslogik
die Abtastgruppen-Mediadaten in eine Datei auf, welche mit Mediadaten
verknüpft
ist, wobei ein spezifisches Mediadateiformat verwendet wird (beispielsweise
das JVT-Dateiformat). In Abhängigkeit
vom Mediadateiformat können die
Abtastgruppen-Metadaten mit Abtast-Metadaten (beispielsweise die
Abtastgruppendatenstrukturen können
in eine Abtasttabellenbox aufgenommen werden) oder unabhängig von
den Abtast-Metadaten gespeichert werden.
-
13 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 1300, um Abtastgruppen-Metadaten im Decodiersystem 200 zu
nutzen. Zunächst
beginnt das Verfahren 1300 mit einer Verarbeitungslogik,
mit der eine Datei empfangen wird, welche mit codierten Mediadaten
verknüpft
ist (Verarbeitungsblock 1302). Die Datei kann von einer
Datenbank (lokal oder extern), vom Codiersystem 100 oder von
einer anderen Einrichtung in einem Netzwerk empfangen werden. Die
Datei umfasst Abtastgruppen-Metadaten, welche Abtastgruppen in den
Mediadaten definieren.
-
Anschließend extrahiert
die Verarbeitungslogik die Abtastgruppen-Metadaten von der Datei
(Verarbeitungsblock 1304). Wie oben erläutert können die Abtastgruppen-Metadaten
in einem Satz von Datenstrukturen (beispielsweise einem Satz von
Boxen) gespeichert werden.
-
Weiter
verwendet im Verarbeitungsblock 1306 die Verarbeitungslogik
die extrahierten Abtastgruppen-Metadaten, um Abtastketten zu identifizieren,
die eingerichtet sein können,
ohne die Fähigkeit zu
beeinträchtigen,
andere Abtastungen zu decodieren. Bei einer Ausführungsform kann diese Information
dazu verwendet werden, um auf Abtastungen in einer spezifischen
Abtastgruppe zuzugreifen und um zu bestimmen, welche Abtastungen
als Antwort auf eine Änderung
in der Netzwerkkapazität
entfernt werden können.
Bei anderen Ausführungsformen
werden die Abtastgruppen-Metadaten dazu verwendet, Abtastungen zu
filtern, so dass lediglich ein Bereich der Abtastungen in einem
Track verarbeitet oder aufbereitet wird.
-
Folglich
erleichtern die Abtastgruppen-Metadaten selektiven Zugriff auf Abtastungen
sowie die Skalierbarkeit.
-
Beispielhafte
Abtastgruppen-Metadatenstrukturen werden mit Hilfe auf ein erweitertes ISO-Mediadateiformat
beschrieben (als erweiterte MP4 bezeichnet). Es sei jedoch angemerkt,
dass andere Mediadateiformate erweitert werden können, um verschiedene Datenstrukturen
zum Speichern von Abtastgruppen-Metadaten unterzubringen.
-
14A–14E zeigen
beispielhafte Datenstrukturen, um Abtastgruppen-Metadaten zu speichern.
-
Gemäß 14A wird eine Abtasttabellenbox 1400,
welche Abtastmetadatenboxen enthält, welche
durch MP4 definiert sind, erweitert, um eine Abtastgruppenbox 1402 und
eine Abtastgruppen-Beschreibungsbox 1404 aufzunehmen. Bei
einer Ausführungsform
sind die Abtastgruppen-Metadatenboxen 1402 und 1404 optional.
-
Gemäß 14B wird eine Abtastgruppenbox 1406 dazu
verwendet, einen Satz von Abtastungen zu finden, welcher in einer
bestimmten Abtastgruppe enthalten ist. Es wird Mehrfachbeispielen
der Abtastgruppenbox 1406 erlaubt, dass diese unterschiedlichen
Arten von Abtastgruppen entsprechen (beispielsweise verbesserten
GOPs, Subsequenzen, Ebenen, Parametersätzen, usw.). Die Abtastgruppenbox 1406 enthält ein Versionsfeld,
welches die Version der Abtastgruppenbox 1406 spezifiziert,
ein Eintragszählfeld,
um die Anzahl von Einträgen
in einer Tabelle 1408 bereitzustellen, ein Abtastgruppen-Identifiziererfeld,
um die Art der Abtastgruppe zu identifizieren, ein erstes Abtastfeld,
welches den Index der ersten Abtastung in einem Arbeitsgang von Abtastungen
bereitstellt, welche in der gleichen Abtastgruppe enthalten sind,
und einen Abtastgruppen-Beschreibungsindex, der den Index in Bezug
auf eine Abtastgruppen-Beschreibungsbox spezifiziert.
-
Gemäß 14C liefert eine Abtastgruppen-Beschreibungsbox 1410 Information über die Charakteristik
einer Abtastgruppe. Die Abtastgruppen-Beschreibungsbox 1410 enthält ein Versionsfeld,
welches die Version der Abtastgruppen-Beschreibungsbox 1410 spezifiziert,
ein Eintragszählfeld,
um die Anzahl von Einträgen
in einer Tabelle 1412 zu liefern, ein Abtastgruppen-Identifiziererfeld, um
die Art der Abtastgruppe zu identifizieren, und ein Abtastgruppen-Beschreibungsfeld,
um Abtastgruppen-Deskriptoren bereitzustellen.
-
Mit
Hilfe von 14D ist die
Verwendung der Abtastgruppenbox 1416 für die Ebenen ("layr") Abtastgruppentyp
gezeigt. Die Abtastungen 1 bis 11 sind in drei Ebenen auf der Basis
der Zwischenabhängigkeiten
von Abtastungen unterteilt. In der Ebene 0 (Basisebene) hängen Abtastungen
(Abtastung 1, 6 und 11) lediglich voneinander ab, jedoch nicht von
Abtastungen in anderen Ebenen. In der Ebene 1 hängen Abtastungen (Abtastungen
2, 5, 7, 10) von Abtastungen in der unteren Ebene (d.h., Ebene 0) und
Abtastungen innerhalb dieser Ebene 1 ab. In der Ebene 2 hängen Abtastungen
(Abtastung 3, 4, 8, 9) von Abtastungen in unteren Ebenen (Ebene
0 und 1) und Abtastungen innerhalb dieser Ebene 2 ab. Folglich kön nen die
Abtastungen von Ebene 2 eingerichtet sein, ohne die Fähigkeit
zu beeinträchtigen,
Abtastungen von unteren Ebenen 0 und 1 zu decodieren.
-
Daten
in der Abtastgruppenbox 1416 zeigen die obigen Verknüpfungen
zwischen den Abtastungen und den Ebenen. Wie gezeigt ist umfassen
diese Daten ein Wiederholungsebenenmuster 1414, welches
komprimiert werden kann, indem jedes Wiederholungsebenenmuster in
eine Referenz zu einem Anfangsebenenmuster umgesetzt wird, und der
Häufigkeit,
mit der dieses Muster auftritt, wie oben ausführlicher erläutert wurde.
-
Mit
Hilfe von 14E wird die
Verwendung einer Abtastgruppenbox 1418 für die Subsequenz-Abtastgruppenart
("sseq") gezeigt. Die Abtastungen
1 bis 11 sind in vier Subsequenzen auf der Basis von Zwischenabhängigkeiten
von Abtastungen unterteilt. Jede Subsequenz mit Ausnahme der Subsequenz
0 in der Ebene 0 umfasst Abtastungen, von denen keine anderen Subsequenzen
abhängen.
Somit können
die Abtastungen in der Subsequenz als eine Einheit wenn notwendig
angeordnet (verfügbar bzw.
eingerichtet) sein.
-
Daten
in der Abtastgruppenbox 1418 zeigen Verknüpfungen
zwischen den Abtastungen und den Subsequenzen. Diese Daten erlauben
einen Direktzugriff auf Abtastungen am Anfang einer entsprechenden
Subsequenz.
-
Datenstromschalten
-
Bei
typischen Datenstromszenarien ist es eine der Schlüsselerfordernisse,
die Bitrate der komprimierten Daten als Antwort auf sich ändernde
Netzwerkzustände
zu skalieren. Der einfachste Weg, um dies zu erreichen, besteht
darin, mehrere Datenströme
mit verschiedenen Bitraten zu codieren und durch Qualitätseinstellungen
für entsprechende
Netzwerkzustände.
Der Server kann dann unter diesen vorcodierten Datenströmen als
Antwort auf Netzwerkzustände
umschalten.
-
Der
JVT-Standard liefert eine neue Art von Bild, die als Umschaltbilder
bezeichnet wird, die es erlaubt, dass ein Bild identisch mit einem
anderen rekonstruiert wird, ohne dass erforderlich ist, dass die beiden
Bilder den gleichen Rahmen zur Vorhersage verwenden. Insbesondere
liefert JVT zwei Arten von Umschaltbildern: SI-Bilder, die, wie
I-Rahmen unabhängig von
irgendwelchen anderen Bildern codiert werden; und SP-Bilder, welche
mit Bezugnahme auf andere Bilder codiert werden. Umschaltbilder
können dazu
verwendet werden, das Umschalten unter Datenströmen mit unterschiedlichen Bitraten
auszuführen
und durch eine Qualitätseinstellung
als Antwort auf sich ändernde
Lieferzustände,
um eine Fehlerabfederung bereitzustellen und um Trickmodi wie schneller
Vorlauf und Rücklauf
auszuführen.
-
Um
jedoch JVT-Umschaltbilder effektiv zu verwenden, wenn Datenstromschalten,
Fehlerabfederung, Trickmodi und andere Merkmale ausgeführt werden,
muss der Spieler wissen, welche Abtastungen in den gespeicherten
Mediadaten die alternativen Darstellungen haben und wie deren Abhängigkeiten
sind. Existierende Dateiformate liefern eine solche Fähigkeit
nicht.
-
Eine
Ausführungsform
der vorliegenden Erfindung richtet sich auf die obige Beschränkung, indem
Schaltabtastsätze
bestimmt werden. Ein Schaltabtastsatz stellt einen Satz von Abtastungen
dar, deren decodierte Werte identisch sind, die jedoch unterschiedliche
Referenzabtastungen verwenden. Eine Referenzabtastung ist eine Abtastung,
die verwendet wird, den Wert einer anderen Abtastung vorherzusagen.
Jedes Teil eines Schaltabtastsatzes wird als Schaltabtastung bezeichnet. 15A zeigt die Verwendung
eines Schaltabtastsatzes für
Bitstromschalten.
-
Gemäß 15A sind der Strom 1 und
der Strom 2 zwei Codierungen des gleichen Inhalts mit unterschiedlicher
Qualität
und Bitratenparametern. Die Abtastung S12 ist ein SP-Bild, welches in
keinem Strom auftritt, das verwendet wird, Schalten vom Strom 1
zum Strom 2 durchzuführen
(Schalten ist eine Zweirichtungs-Eigenschaft). Die Abtastungen S12
und S2 sind in einem Schaltabtastsatz enthalten. Sowohl S1 als auch
S12 werden von der Abtastung P12 im Track 1 vorhergesagt, und S2
wird von der Abtastung P22 im Track 2 vorhergesagt. Obwohl die Abtastungen
S12 und S2 unterschiedliche Referenzabtastungen verwenden, sind
deren decodierte Werte identisch. Folglich kann das Schalten vom
Strom 1 zum Strom 2 (bei Abtastung S1 im Strom 1 und S2 im Strom
2) über
die Schaltabtastung S12 erreicht werden.
-
16 und 17 zeigen Prozesse, um Schaltabtast-Metadaten
zu speichern und wiederaufzufinden, welche durch das Codiersystem 100 bzw.
das Decodiersystem 200 durchgeführt werden. Die Prozesse können durch
die Verarbeitungslogik durchgeführt
werden, welche Hardware (beispielsweise Schaltungsaufwand, dafür bestimmte
Logik, usw.), Software (beispielsweise einen Arbeitsgang auf einem
Allgemeinzweck-Computersystem oder einer dafür bestimmten Maschine) oder
eine Kombination von beiden aufweisen kann.
-
16 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 1600 zum Bilden von Schaltabtast-Metadaten
im Codiersystem 100. Zunächst beginnt das Verfahren 1600 mit
der Verarbeitungslogik, die eine Datei mit codierten Mediadaten empfängt (Verarbeitungsblock 1602).
Die Datei weist eine oder mehrere alternative Codierungen für die Mediadaten
auf (beispielsweise für
eine verschiedene Bandbreite und Qualitätseinstellung für repräsentative
Netzwerkbedingungen). Die alternativen Codierungen umfassen ein
oder mehrere Schaltbilder. Diese Bilder können innerhalb der alternativen
Mediadatenströme
oder als separate Entitäten
enthalten sein, welche spezielle Merkmale ausführen, beispielsweise Fehlerabfederung
oder Trickmodi. Das Verfahren zum Bilden dieser Tracks und Schaltbilder ist
nicht durch diese Erfindung spezifiziert, sondern es sind verschieden
Möglichkeiten
für den
Fachmann offensichtlich. Beispielsweise die periodische (beispielsweise
jede Sekunde) Anordnung von Schaltabtastungen zwischen jedem Paar
von Tracks, welche alternative Codierungen enthalten.
-
Anschließend prüft die Verarbeitungslogik die
Datei, um Schaltabtastsätze
zu bilden, die diejenigen Abtastungen enthalten, welche die gleichen Decodierwerte
haben, während
unterschiedliche Referenzabtastungen verwendet werden (Verarbeitungsblock 1604)
und bildet Schaltabtast-Metadaten, welche Schaltabtastsätze für die Mediadaten
definieren und Abtastungen innerhalb der Schaltabtastsätze beschreiben
(Verarbeitungsblock 1606). Bei einer Ausführungsform
sind die Schaltabtast-Metadaten zu einer vorher festgelegten Datenstruktur
organisiert bzw. gegliedert, beispielsweise einer Tabellenbox, welche
einen Satz von verschachtelten Tabellen enthält.
-
Anschließend bestimmt
bei einer Ausführungsform
die Verarbeitungslogik, ob die Schaltabtast-Metadatenstruktur eine
Wiederholungsdatensequenz enthält
(Entscheidungsbox 1608). Wenn diese Entscheidung positiv
ist, setzt die Verarbeitungslogik jede Wiederholungsdatensequenz
in eine Referenz zu einer Sequenzvorkommnis und der Häufigkeit,
mit der die Sequenz auftritt, um (Verarbeitungsblock 1610).
-
Danach
nimmt im Verarbeitungsblock 1612 die Verarbeitungslogik
die Schaltabtast-Metadaten in einer Datei in Verbindung mit den
Mediadaten unter Verwendung eines spezifischen Mediadateiformats auf
(beispielsweise das JVT-Dateiformat). Bei einer Ausführungsform
können
die Schaltabtast-Metadaten in einem separaten Track gespeichert
werden, der für
das Datenstromschalten bestimmt wird. Bei einer anderen Ausführungsform
werden die Schaltabtast-Metadaten mit Abtast-Metadaten gespeichert (beispielsweise
die Sequenzdatenstrukturen können in
einer Abtasttabellenbox aufgenommen werden).
-
17 ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 1700 zur Verwendung von Schaltabtast-Metadaten
im Decodiersystem 200. Zunächst beginnt das Verfahren 1700 mit
der Verarbeitungslogik, welche eine Datei empfängt, die mit den codierten
Mediadaten verknüpft
ist (Verarbeitungsblock 1702). Die Datei kann von einer
Datenbank (lokal oder extern), dem Codiersystem 100 oder von
einer anderen Einrichtung in einem Netzwerk empfangen werden. Die
Datei umfasst Schaltabtast-Metadaten, welche Schaltabtastsätze in Verbindung
mit den Mediadaten definieren.
-
Anschließend extrahiert
die Verarbeitungslogik die Schaltabtast-Metadaten von der Datei
(Verarbeitungsblock 1704). Wie oben erläutert können die Schaltabtast-Metadaten
in einer Datenstruktur, beispielsweise einer Tabellenbox, welche
einen Satz verschachtelter Tabellen enthält, gespeichert werden.
-
Weiter
verwendet im Verarbeitungsblock 1706 die Verarbeitungslogik
die extra- hierten Metadaten, um einen Schaltabtastsatz zu finden,
der eine spezielle Abtastung enthält und wählt eine alternative Abtastung
vom Schaltabtastsatz aus. Die alternative Abtastung, welche den
gleichen Decodierwert wie die Anfangsabtastung hat, kann dann dazu
verwendet werden, zwischen unterschiedlich-codierten Bitströmen als
Antwort auf sich ändernde
Netzwerkbedingungen umzuschalten, um einen Direktzugriffs-Eintragspunkt
in einem Bitstrom bereitzustellen, um die Fehlerwiedergutmachung
zu erleichtern usw.
-
Eine
beispielhafte Schaltabtast-Metadatenstruktur wird nun mit Hilfe
eines erweiterten ISO-Mediadateiformats beschrieben (als erweiterte
MP4 bezeichnet). Es sei jedoch angemerkt, dass andere Mediadateiformate
erweitert werden könnten,
um verschiedene Datenstrukturen unterzubringen, um Schaltabtast-Metadaten
zu speichern.
-
18 zeigt eine beispielhafte
Datenstruktur zum Speichern von Schaltabtast-Metadaten. Die beispielhafte Datenstruktur
ist in Form einer Schaltabtast-Tabellenbox, die einen Satz verschachtelter
Tabellen aufweist. Jeder Eintrag in einer Tabelle 1802 identifiziert
einen Schaltabtastsatz. Jeder Schaltabtastsatz besteht aus einer
Gruppe von Schaltabtastungen, deren Rekonstruktion objektiv identisch (oder
prozentual identisch) ist, der jedoch von verschiedenen Referenzabtastungen,
welche im gleichen Track (Datenstrom) wie die Schaltabtastung sein
können
oder nicht, vorhergesagt werden können. Jeder Eintrag in der
Tabelle 1802 ist mit einer entsprechenden Tabelle 1804 verknüpft. Die
Tabelle 1804 identifiziert jede Schaltabtastung, welche
in einem Schaltabtastsatz enthalten ist. Jeder Eintrag in der Tabelle 1804 ist
außerdem
mit einer entsprechenden Tabelle 1806 verknüpft, welche
die Stelle einer Schaltabtastung definiert (d.h., deren Track und
Abtastnummer), wobei der Track Referenzabtastungen enthält, welche
durch die Schaltabtastung verwendet werden, die Gesamtzahl von Referenzabtastungen, welche
durch die Schaltabtastung verwendet werden, und jede Referenzabtastung,
welche durch Schaltabtastung verwendet wird.
-
Wie
in 15A gezeigt ist,
können
bei einer Ausführungsform
die Schaltabtast-Metadaten
verwendet werden, um zwischen unterschiedlich-codierten Versionen
des gleichen Inhalts umzuschalten. Bei MP4 ist jedes alternatives
Codieren als separater MP4-Track gespeichert, und die "alternative Gruppe" im Track-Datenkopf
zeigt, dass dies eine alternative Codierung speziellen Inhalts ist.
-
15B zeigt eine Tabelle,
welche Metadaten enthält,
die einen Schaltabtastsatz 1502 definiert, der aus Abtastungen
S2 und S12 gemäß 15A besteht.
-
15C zeigt ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 1510 zum Bestimmen eines Punktes, bei
dem ein Schalten zwischen zwei Bitströmen durchgeführt werden
soll. Unter der Annahme, dass das Schalten vom Strom 1 auf den Strom
2 umgeschaltet werden soll, beginnt das Verfahren 1510 mit
der Suche nach Schaltabtast-Metadaten, um alle Schaltabtastsätze zu finden,
welche eine Schaltabtastung enthalten, mit einem Referenz-Track
von Strom 1 und einer Schaltabtastung mit einem Schaltabtast-Track
von Strom 2 (Verarbeitungsblock 1512). Anschließend werden
die resultierenden Schaltabtastsätze
ausgewertet, um einen Schaltabtastsatz auszuwählen, bei dem alle Referenzabtastungen
einer Schaltabtastung mit dem Referenz-Track von Strom 1 verfügbar sind
(Verarbeitungsblock 1514). Wenn beispielsweise die Schaltabtastung
mit dem Referenz-Track von Strom 1 ein P-Rahmen ist, ist es erforderlich, dass
eine Abtastung vor dem Schalten verfügbar ist. Weiter werden die
Abtastungen im ausgewählten
Schaltabtastsatz dazu verwendet, den Schaltpunkt zu bestimmen (Verarbeitungsblock 1516).
Das heißt,
der Schaltpunkt wird so angesehen, unmittelbar nach der höchsten Referenzabtastung
der Schaltabtastung mit dem Referenz-Track von Strom 1 zu sein, über die
Schaltabtastung mit dem Referenz-Track von Strom 1, und zur Abtastung,
welche unmittelbar der Schaltabtastung mit dem Schaltabtast-Track
von Strom 2 folgt.
-
Bei
einer anderen Ausführungsform
können Schaltabtast-Metadaten
dazu verwendet werden, Direktzugriffs-Eintragspunkte in einen Bitstrom
zu fördern,
wie in 19A–-19C gezeigt ist.
-
Gemäß 19A und 19B besteht eine Schaltabtastung 1902 aus
Abtastungen S2 und S12. S2 ist ein P-Rahmen, der von P22 vorhergesagt
wird und der während üblicher
Stromwiedergabe verwendet wird. S12 wird als Direktzugriffspunkt
verwendet (beispielsweise zum Spleißen). Wenn S12 decodiert ist,
läuft die
Datenstromwiedergabe mit Decodieren von P14 weiter, als ob P24 nach
S2 decodiert wurde.
-
19C ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 1910 zum Bestimmen eines Direktzugriffspunkts
für eine
Abtastung (beispielsweise Abtastung S auf Track C). Das Verfahren 1910 beginnt
mit der Suche nach Schaltabtast-Metadaten, um alle Schaltabtastsätze zu finden, welche
eine Schaltabtastung mit einem Schaltabtast-Track C enthalten (Verarbeitungsblock 1912). Danach
werden die resultierenden Schaltabtastsätze ausgewertet, um einen Schaltabtastsatz
auszuwählen,
bei dem eine Schaltabtastung mit dem Schaltabtast-Track T die nächste Abtastung
vor der Abtastung S in der Codierreihenfolge ist (Verarbeitungsblock 1914).
Weiter wird eine Schaltabtastung (Abtastung SS) anders als die Schaltabtastung
mit dem Schaltabtast-Track T von dem ausgewählten Schaltabtastsatz für einen
Direktzugriffspunkt ausgewählt,
um S abzutasten (Verarbeitungsblock 1916). Während der Stromwiedergabe
wird die Abtastung SS (worauf das Decodieren von irgendwelchen Referenzabtastungen
folgt, welche im Eintrag für
die Abtastung S5 spezifiziert sind) anstelle der Abtastung 5 decodiert.
-
Bei
einer noch anderen Ausführungsform können Schaltabtast-Metadaten
dazu verwendet werden, Fehlerwiedergutmachung zu erleichtern, wie in 20A–20C gezeigt
ist.
-
Gemäß 20A und 20B besteht eine Schaltabtastung 2002 aus
Abtastungen S2, S12 und S22. Die Abtastung S2 wird von der Abtastung
P4 vorhergesagt. Die Abtastung S12 wird von der Abtastung S1 vorhergesagt.
Wenn ein Fehler zwischen Abtastungen P2 und P4 auftritt, kann die
Schaltabtastung S12 anstelle der Abtastung S2 decodiert werden.
Das Strömen
läuft dann
weiter mit der Abtastung P6 wie üblich.
Wenn ein Fehler die Abtastung S1 beeinträchtigt, kann ebenfalls die
Schaltabtastung S22 anstelle der Abtastung S2 decodiert werden,
und dann wird das Strömen
mit der Abtastung Pb wie üblich
weitergehen.
-
20C ist ein Flussdiagramm
einer Ausführungsform
eines Verfahrens 2010, um die Fehlerwiedergutmachung zu
erleichtern, wenn eine Abtastung geliefert wird (beispielsweise
Abtastung S6). Das Verfahren 2010 beginnt mit dem Suchen
von Schaltabtast-Metadaten,
um alle Schaltabtastsätze zu
finden, welche eine Schaltabtastung enthalten, die gleich ist der
Abtastung S6 oder der folgenden Abtastung S in der Decodierreihenfolge
(Verarbeitungsblock 2012). Anschließend werden die resultierenden Schaltabtastsätze ausgewertet,
um einen Schaltabtastsatz mit einer Schaltabtastung SS auszuwählen, die
der Abtastung S am nächsten
ist und deren Referenzabtastungen bekannt sind (über Rückführung oder eine andere Informationsquelle),
um korrekt zu sein (Verarbeitungsblock 2014). Weiter wird
die Schaltabtastung SS anstelle der Abtastung S geliefert (Verarbeitungsblock 2016).
-
Das
Speichern und das Wiederauffinden von audio-visuellen Metadaten
wurden beschrieben. Obwohl spezifische Ausführungsformen hier gezeigt und
beschrieben wurden, soll durch den Fachmann gewürdigt werden, dass irgendeine
Anordnung, die geplant wird, um den gleichen Zweck zu erreichen, durch
die speziellen gezeigten Ausführungsformen ersetzt
werden kann. Zweck dieser Anmeldung ist es, alle Adaptionen und
Variationen der vorliegenden Erfindung abzudecken.
-
Zusammenfassung
-
Subabtast-Metadaten,
die Subabtastungen innerhalb jeder Abtastung von Multimediadaten
definieren, werden erzeugt. Außerdem
wird eine Datei, die mit den Multimediadaten verknüpft ist,
gebildet. Diese Datei enthält
die Subabtast-Metadaten wie auch andere Information, die zu den
Multimediadaten gehört.
2