-
HINTERGRUND DER ERFINDUNG
-
1. GEBIET DER ERFINDUNG
-
Die
Erfindung betrifft das Gebiet des codierten Multimedia und seiner
Speicherung, Übertragung
und Lieferung an Benutzer und insbesondere derartige Codierung,
wenn ein flexibles Mittel zum Generieren, Bearbeiten und Interpretieren
von Bitströmen,
die Multimediaobjekte repräsentieren,
erforderlich ist.
-
2. BESCHREIBUNG DES EINSCHLÄGIGEN STANDS
DER TECHNIK
-
Digitales
Multimedia bietet Vorteile hinsichtlich von Manipulation, Multigenerationsverarbeitung
und Fehlerrobustheit und anderem, legt aber Einschränkungen
aufgrund von erforderter Speicherkapazität oder Übertragungsbandbreite auf.
Multimediainhalt muss daher häufig
komprimiert oder codiert werden. Weiterhin ist infolge der schnellen
Zunahme der Nachfrage nach digitalem Multimedia über das Internet und anderen Netzen
das Erfordernis nach effizienter Speicherung, Netzzugriff und -suche
und -abruf gestiegen, und eine Reihe von Codierungsverfahren, Speicherformaten,
Abruftechniken und Übertragungsprotokollen
sind entstanden. Beispielsweise wurden GIF, TiF und andere Formate
für Bildend
Grafikdateien verwendet. Gleichermaßen wurden Audiodateien codiert
und als RealAudio, WAV, MIDI und andere Formate gespeichert. Animations-
und Videodateien wurden oft unter Verwendung von GIF89a, Cinepak,
Indeo und anderen gespeichert. Zur Wiedergabe der Überfülle von
existierenden Formaten werden oft Decoder und Interpreter benötigt, dabei können verschiedene
Grade von Geschwindigkeit, Qualität und Leistung in Abhängigkeit
davon verfügbar
sein, ob diese Decoder und Interpreter in Hardware oder in Software
implementiert sind, und insbesondere im Fall von Software, von den
Fähigkeiten
des Hostcomputers. Wenn Multimediainhalt in Webseiten eingebettet
ist, auf die über
einen Computer (z. B. einen PC) zugegriffen wird, muss der Webbrowser
richtig für
den gesamten erwarteten Inhalt eingestellt werden und muss jeden
Inhaltstyp erkennen und einen Mechanismus von Inhaltshandlern (Software-Plug-ins
oder Hardware) unterstützen,
um mit derartigem Inhalt umzugehen.
-
Das
Erfordernis nach Interoperabilität,
garantierter Qualität
und Leistung und Größenökonomie
beim Chipdesign sowie die Kosten, die bei der Inhaltserzeugung für eine Mehrzahl
von Formaten entstehen, haben zu Fortschritten bei der Standardisierung
auf den Gebieten der Multimediacodierung, Paketierung und robuster Lieferung
geführt.
Insbesondere hat die International Standards Organization Motion
Pictures Experts Group (ISO MPEG) Bitstromsyntax und Codierungssemantik
für codiertes
Multimedia in der Form von zwei Standards, die als MPEG-1 und MPEG-2
bezeichnet werden, standardisiert. MPEG-1 wurde primär für Verwendung
bei digitalen Speichermedien (DSM) wie Kompaktdisks (CDs) vorgesehen,
während
MPEG-2 primär
für Verwendung
in Übertragungsumgebungen
(Transportstrom) vorgesehen wurde, obwohl es auch MPEG-1-ähnliche
Mechanismen zur Verwendung bei DSM (Programmstrom) unterstützt. MPEG-2
enthielt außerdem
zusätzliche
Merkmale wie DSM-Control and Command für grundlegende Benutzerinteraktion,
wie sie für
standardisierte Wiedergabe von MPEG-2, entweder unabhängig oder
vernetzt, erforderlich sein kann. Mit dem Aufkommen von preisgünstigen
Platinen und PCMCIA-Karten und der Verfügbarkeit von schnellen Zentralprozessoren
(CPUs) wird der Standard MPEG-1 allgemein verfügbar für Wiedergabe von Filmen und
Spielen auf PCs. Der Standard MPEG-2 dagegen, da er auf Anwendungen
relativ höherer
Qualität
gerichtet ist, wird allgemein eingesetzt für Unterhaltungsanwendungen über digitalem
Satellitenfernsehen, Digitalkabel und Digital Versatile Disk (DVD).
Neben den angegebenen Anwendungen/Plattformen wird erwartet, dass
MPEG-1 und MPEG-2 in verschiedenen anderen Konfigurationen, in über Netzen übertragenen
Strömen,
auf Festplatten oder CDs gespeicherten Strömen und in der Kombination
von vernetztem und lokalem Zugriff eingesetzt werden.
-
Der
Erfolg von MPEG-1 und MPEG-2, die Bandbreitenbegrenzungen von Internet-
und mobilen Kanälen,
die Flexibilität
von webbasiertem Datenzugriff unter der Verwendung von Browsern
und die steigende Nachfrage nach interaktiver persönlicher
Kommunikation hat neue Paradigmen für Multimedia-Nutzung und -Steuerung
eröffnet.
Als Reaktion hat ISO-MPEG einen neuen Standard entwickelt, der als
MPEG-4 bezeichnet wird. Der Standard MPEG-4 hat sich mit der Codierung
von audiovisuellen Informationen in der Form von individuellen Objekten
und mit einem System zur Zusammenstellung und synchronisierten Wiedergabe
dieser Objekte befasst. Während
die Entwicklung von MPEG-4 für
derartige feste Systeme andauert, haben in der Zwischenzeit neue
Paradigmen in Kommunikation, Software und Vernetzung wie die, die
durch die Sprache Java verfügbar
wurden, neue Möglichkeiten
bei Flexibilität,
Adaptivität
und Benutzerinteraktion bereitgestellt. Beispielsweise bietet die
Sprache Java Netz- und Plattform-Unabhängigkeit, die für das Herunterladen
und Ausfahren von Applets (Java-Klassen) auf einem Client-PC von
einem Webserver, der die von dem Benutzer besuchten Seiten enthält, kritisch
ist. Abhängig
vom Design des Applets kann entweder ein einzelner Zugriff auf die
im Server gespeicherten Daten erforderlich sein, um alle erforderlichen
Daten im Client-PC zu speichern, oder mehrere Teilzugriffe (um den
Speicherplatz und die Zeit zum Starten zu reduzieren) können erforderlich
sein. Das letztgenannte Szenarium wird als eine geströmte Wiedergabe
bezeichnet.
-
Wenn
codiertes Multimedia für
Internet- und lokale vernetzte Anwendungen auf einem Computer, wie einem
PC, verwendet wird, können
eine Reihe von Situationen auftreten. Erstens kann die Bandbreite
für vernetzten
Zugriff auf Multimedia entweder begrenzt sein oder in der Zeit variieren,
was erforderlich macht, nur die wichtigsten Informationen zu übertragen,
gefolgt von anderen Informationen, sobald mehr Bandbreite verfügbar wird.
Zweitens kann der PC an der Clientseite, auf dem Decodierung erfolgen
muss, unabhängig
von der verfügbaren
Bandbreite in Bezug auf CPU- und/oder Speicherressourcen begrenzt
sein, und weiterhin können
diese Ressourcen auch in der Zeit variieren. Drittens kann ein Multimedia-Benutzer
(Verbraucher) in hohem Maße
interaktives, nichtlineares Browsing und Wiedergabe erfordern. Dies
ist nicht ungewöhnlich,
da es möglich
ist, umfangreichen Textinhalt über
die Verwendung von Hyperlink-Merkmalen
zu browsen, und dasselbe Paradigma wird für Präsentationen erwartet, die codierte
audiovisuelle Objekte einsetzen. Das MPEG-4-System ohne erweiterte
Fähigkeiten
ist unter Umständen
nur in der Lage, mit den vorher erwähnten Situationen in einer
sehr begrenzten Weise umzugehen.
-
Die
Verwendung von Anwendungsprogrammschnittstellen (APIs) wird seit
langem in der Software-Industrie als ein Mittel zur Realisierung
von standardisierten Operationen und Funktionen über eine Zahl von verschiedenen
Arten von Computerplattformen anerkannt. Obwohl Operationen über API-Definition standardisiert werden
können,
können
die Leistungen dieser Operation sich gewöhnlich auf verschiedenen Plattformen
unterscheiden, da bestimmte Anbieter mit Interesse an einer bestimmten
Plattform Implementierungen anbieten können, die für diese Plattform optimiert
sind. Im Bereich der Grafik gestattet die Virtual Reality Modeling
Language (VRML) ein Mittel zur Spezifizierung von räumlichen
und zeitlichen Verhältnissen
zwischen Objekten und der Beschreibung einer Szene durch Anwendung
eines Szenen-Graph-Konzepts. MPEG-4 hat eine Binärformat-Bildschirmrepräsentation
(BIFS) der Konstrukte, die den Mittelpunkt von VRML bilden, verwendet
und VRML in vielerlei Weise erweitert, um Echtzeit-Audio/Video-Daten
und Effekte wie Gesichts- oder Körperanimation
handzuhaben. Da der Standard MPEG-4 viele Tools für Codierung
von verschiedenen Medienarten sowie Szenen-Graph-Repräsentation
bietet und außerdem
jede Mediencodierung separate Codierung von individuellen Objekten
beinhalten kann, ist ein organisierter, aber gleichzeitig flexibler
Mechanismus für
Bitstromgenerierung, -bearbeitung und -interpretation in hohem Maße wünschenswert.
-
Laier
J et al: „Content-based
multimedia data access in Internet video communication", Wireless Image/Video
Communications, 1996, First International Workshop in Loughborough,
Großbritannien,
4.–5. September
1996, New York, NY, USA, IEEE, US, 4. September 1996 (1996-09-04),
Seite 126–133, XP010246489,
ISBN 0-7803-3610-0, beschreibt eine Plattform für die Entwicklung und Bewertung
von MPEG-4-Funktionalitäten.
Die implementierten Funktionalitäten
sind inhaltsbasierte Manipulation und Bitstrombearbeitung, Hybrid-Zusammensetzung
von natürlichen
und synthetischen Daten, inhaltsbasierte Skalierbarkeit. Das System
wurde mit Java implementiert.
-
ZUSAMMENFASSUNG DER ERFINDUNG
-
Die
Erfindung betrifft standardisierte Schnittstellen für MPEG-4-Authoring,
Bitstrommanipulation, -bearbeitung und -interpretation. Die Erfindung
stellt Tools und Schnittstellen bereit, um die vorher erwähnten Operationen
beträchtlich
zu vereinfachen, was in codiertes Bitströmen resultiert, die einfacher
zu testen, prüfen
und von Fehlern zu bereinigen sind und gleichzeitig dem Standard
MPEG-4 entsprechen. Die spezifizierten Schnittstellen können außerdem gleitende
Anpassung erleichtern, indem sie die Bearbeitung von Bitströmen gestatten,
wenn keine ausreichenden Bearbeitungsressourcen vorhanden sind.
Die spezifizierten Schnittstellen können außerdem die Erzeugung von decodierbaren
Bitströmen
als Reaktion auf die Benutzeranforderung gestatten, entweder direkt
oder indirekt in audiovisuellen Anwendungen und Dienstleistungen
eingebettet, von denen erwartet wird, dass sie in naher Zukunft
wichtig sein werden. Damit betrifft die gegenwärtige Erfindung nicht nur die
Mangel eines konventionellen Systems zur Bitstromcodierung und -decodierung,
sondern bietet außerdem
Tools, die in anpassungsfähigere
Systeme wie das, das gleitende Anpassung sowie Reaktionsfähigkeit
auf Benutzerinteraktion unterstützt,
integriert werden können.
-
Insbesondere
stellt die Erfindung ein System und ein Schnittstellenverfahren
bereit, die flexible Generierung, Bearbeitung und Interpretation
von Bitströmen
erleichtern, die nach dem Standard MPEG-4 codierte audiovisuelle
Objekte repräsentieren.
Die Erfindung spezifiziert ein Bitstrom-Eingabe-/Ausgabepaket in der Programmiersprache
Java, um Bitstrom-Codierung und -Decodierung für audiovisuelle Medienobjekte
zu erleichtern, insbesondere wenn die Codierung dem Standard MPEG-4
entspricht. Dies beruht auf der Tatsache, dass das vorgeschlagene
Paket Codierung fester Länge
und variabler Länge
trennt und flexibles Zergliedern gestattet, was die Möglichkeit
optimaler Implementierung bietet, die erforderlich ist, um Echtzeit-
oder Fast-Echtzeit-Operation zu unterstützen.
-
Die
Erfindung ist zum Teil durch die Wünschbarkeit von standardisierten
Schnittstellen für MPEG-4-Authoring,
Bitstrommanipulation, -bearbeitung und -interpretation motiviert.
Ein Ziel der Erfindung ist die Bereitstellung von Tools und Schnittstellen,
um die vorher erwähnten
audiovisuellen Operationen beträchtlich
zu erleichtern, was in codierten Bitströmen resultiert, die einfacher
zu testen, prüfen
und von Fehlern zu bereinigen sind und gleichzeitig dem Standard
MPEG-4 entsprechen. Die in der Erfindung spezifizierten Schnittstellen
können
außerdem
die gleitende Anpassung erleichtern, indem sie Bearbeiten von Bitströmen gestatten,
wenn keine ausreichenden Verarbeitungsressourcen verfügbar sind.
-
Die
spezifzierten Schnittstellen können
außerdem
die Erzeugung von decodierbaren Bitströmen als Reaktion auf die Benutzeranforderung
gestatten, entweder direkt oder indirekt in audiovisuellen Anwendungen und
Dienstleistungen eingebettet, von denen erwartet wird, dass sie
in naher Zukunft wichtig sein werden.
-
KURZE BESCHREIBUNG DER ZEICHNUNGEN
-
Die
Erfindung wird unter Bezugnahme auf die beigefügten Zeichnungen beschrieben,
in denen gleiche Elemente durch gleiche Nummern bezeichnet sind
und von denen:
-
1A ein
Blockdiagramm des Codierungssystems mit Einzelheiten zeigt, die
eine Ausführungsform der
Erfindung veranschaulichen;
-
1B ein
Blockdiagramm des Decodierungssystems mit Einzelheiten zeigt, die
eine Ausführungsform
der Erfindung veranschaulichen;
-
2 eine
Bitstromgenerierungs-Schnittstelle nach der Erfindung zeigt;
-
3 eine
Bitstrombearbeitungs- und -interpretationsschnittstelle nach der
Erfindung zeigt; und
-
4 ein
Ablaufdiagramm zeigt, das einen in der Erfindung verwendeten Pufferaktualisierungsprozess
darstellt.
-
AUSFÜHRLICHE BESCHREIBUNG DER BEVORZUGTEN
AUSFÜHRUNGSFORMEN
-
Die
Erfindung stellt eine integrierte Schnittstelleneinrichtung zur
Verarbeitung von geströmten
audiovisuellen Informationen bereit und wird veranschaulichend in
der MPEG-4-Umgebung beschrieben.
-
Die
von der Erfindung bereitgestellte Schnittstelleneinrichtung enthält eine
Bitstrom-Eingabe-/Ausgabebibliothek
für flexible
Generierung, Bearbeitung und Interpretation von Bitströmen, die
individuelle audiovisuelle Objekte reprasentieren, die unter Verwendung
des Standards MPEG-4 codiert sind. In einem Aspekt definiert die
Erfindung ein Bitstrom-Eingabe-/Ausgabepaket in der Sprache Java.
-
Dieses
Paket, mpgj.bitsio, kann den im Fachgebiet bekannten standardmaßigen Java-Bibliotheken hinzugefügt werden
und die Bitstrom-Eingabe- und -Ausgabeoperationen einschließlich der
Codierung fester Länge
und variabler Länge,
die in der MPEG-4-Syntaxdecodierung häufig ist, erleichtern. Unter
anderen Vorteilen ist das Paket organisiert, um Optimierung für maximale
Geschwindigkeit zu erleichtern.
-
Beispielsweise
könnte
das Zergliederungsmodul für
Code variabler Länge
konfigurierbare Mehrstufen-Verweise
verwenden, um Echtzeit- oder Fast-Echtzeit-Operation weiter zu unterstützen. TABELLE 1 Die Bitstrom-Eingabe-/Ausgabebibliothek
der Erfindung
Nr. | Klassen | Erläuterung |
1. | InputStream | Diese
Klasse stellt die Bitstrom-Eingabefähigkeiten bereit. |
2. | Map | Diese
Klasse wird von den Klassen InputStream und OutputStream verwendet. |
3. | OutputStream | Diese
Klasse stellt die Bitstrom-Ausgabefähigkeiten bereit. |
-
Die
Bibliothek ist das Java-Äquivalent
des Bit-Eingabe-/Ausgabeabschnitts von MSDL-S (MPEG-4 Syntactic Description
Language), der im Fachgebiet bekannt ist. In der Tat kann die Erfindung
auch intern von dem Übersetzer
von MSDL-S zu Java (flavorj) verwendet werden.
-
1A zeigt
ein Blockdiagramm eines Codierungssystems mit Einzelheiten, die
eine Ausführungsform
der Erfindung veranschaulichen. Eine Videoszene einer natürlichen
Quelle, die codiert werden soll, wird über Leitung 100 in
den Videosegmentierer 101 eingegeben, der die Szene in
eine Zahl von semantischen Objekten segmentiert, die über die
Leitungen 103, 104, 105 ausgegeben werden.
Andere Videoobjekte, die außerhalb
der Szene sind, können
auch gemischt werden, wie die in Leitung 102. Anschließend laufen
Videoobjekte 102, 103, 104, 105 sequenziell
durch den Schalter 112 und sind nacheinander in Leitung 113,
einem Eingang zum Medien-1-Codierer 118, verfügbar. Parallel
wird eine Audioszene einer natürlichen
Quelle, die codiert werden soll, über Leitung 138 vom
Audiosegmentierer 106 in individuelle Objekte, 108, 109, 110,
und etwaige externe Objekte 107 segmentiert. Anschließend laufen
Audioobjekte 107, 108, 109, 110 sequenziell durch
den Schalter 114 und sind nacheinander in Leitung 116,
einem Eingang zum Medien-2-Codierer, verfügbar. Neben natürlichen
Audio- und Videoobjekten werden synthetische Objekte, entweder akustisch
oder visuell, in Leitung 111 eingegeben, einem Eingang
zum Medien-3-Codierer 120. Basierend auf dem von Autoren eingegebenen
Inhalt 116 wird außerdem
eine Beschreibung der Szene optional im Szenen-Graph 117 generiert,
die in Leitung 124 ausgegeben wird. Der Szenen-Graph 117 generiert
außerdem
ein optionales Steuersignal, das zu jedem der Medien-Codierer gesandt
wird, beispielsweise zu Medien-1-Codierer 118 über Leitung 121,
zu Medien-2-Codierer 119 über Leitung 122 und
zu Medien-3-Codierer 120 über Leitung 127.
-
Obwohl
drei Medien-Codierer dargestellt sind, gibt es keine Begrenzung
der Zahl der Medien-Codierer,
die nach der Erfindung eingesetzt werden können. Weiterhin ist es möglich, dass
ein Medien-Codierer selbst
aus Untercodierern besteht. Die Ausgabe der Medien-Codierer in den
Leitungen 125, 126 und 127 bildet Eingänge für jeweilige
Medien-Bit(strom)-Generatoren, Medien-1-Bits-Generator 129,
Medien-2-Bits-Generator 130 und Medien-3-Bits-Generator 131.
Der Ausgang von Szenen-Graph 117 in Leitung 124 bildet
den Eingang für
BIFS-Bits-Generator 128. Es wird davon ausgegangen, dass
der BIFS-Bits-Generator 128 sowie
die Medien-Bits-Generatoren 129, 130 und 131 Schnittstellen
dieser Erfindung, die in 2 ausgeführt sind, verwenden. Die Ausgaben
von verschiedenen Bits-Generatoren in den Leitungen 132, 133 und 134 und 135 werden
dem System-Multiplexer, Mux, 136 zugeführt. Der gemultiplexte Bitstrom
ist in Kanal 137 für
Speicherung oder Übertragung
verfügbar.
-
1B zeigt
ein Blockdiagramm der Decodierungsoperation der Erfindung mit mehr
Einzelheiten. Neben einigen wenigen Ausnahmen ist die Operation
dieses Aspekts der Erfindung das Gegenteil von der der in 1A dargestellten
Codierung. Der gemultiplexte Bitstrom (entweder von Speicherung
oder Übertragung)
ist in Kanal 137 verfügbar
und wird in den Demultiplexer Demux 151 eingegeben, der
diesen Strom in individuelle Bitströme wie visuelle (natürliche und
synthetische Videoobjekte), akustische (natürliche und synthetische Audioobjekte),
Beschreibungen von BIFS-Szenen usw. aufteilt. Der BIFS-Szenen-Bitstrom ist
in Leitung 152 verfügbar,
der Videoobjekte-Bitstrom in Leitung 153, der Audioobjekte-Bitstrom
in Leitung 154 und der Bitstrom für synthetische (Video- oder
Audio-) Objekte in Leitung 155 und bildet den Eingang für den Bits(trom)-Editor 156,
der auf mehrere Bedingungen reagiert, die gleitende Anpassung oder
Funktionalitäten
auf Benutzeranforderung erfordern. Der Bits-Editor 156 kann
sowohl für
Echtzeit- als auch Nichtechtzeit-Bearbeitung von Bitströmen verwendet
werden und setzt Schnittstellen nach dieser Erfindung ein, wie in 3 ausgeführt.
-
Die
modifizierten Bitströme,
BIFS-Bits in Leitung 157, Medien-1-Bits in Leitung 158,
Medien-2-Bits in Leitung 159,
Medien-3-Bits in Leitung 160, werden in jeweilige Bitstrom-Interpreter
eingegeben, BIFS-Bits-Interpreter 161, Medien-1-Bits-Interpreter 162,
Medien-2-Bits-Interpreter 163, Medien-3-Bits-Interpreter 164,
die jeweilige Ströme
von Symbolen über
die Leitungen 165, 166, 167 und 168 ausgeben.
Die Bitstrom-Interpreter verwenden Schnittstellen von 3 der
Erfindung. Die BIFS-Symbole in Leitung 165 werden decodiert,
um einen Szenen-Graph in Leitung 179 zu bilden, verschiedene
Arten von Medien-Symbolströmen in den
Leitungen 166, 167, 168 werden durch
jeweilige Mediendecodierer decodiert, Medien-1-Decodierer 170,
Medien-2-Decodierer 171 und Medien-3-Decodierer 172,
und die decodierten Medienströme
(Videoobjekte, Audioobjekte, synthetische Objekte usw.) werden über die
Leitungen 176, 177 und 178 ausgegeben.
Die verschiedenen Mediendecodierer werden durch den Szenen-Graph 169 instanziiert
und Steuerungselemente für
diese Decodierer werden angezeigt; Medien-1-Decodierer wird über Leitung 173 gesteuert,
Medien-2-Decodierer wird über
Leitung 174 gesteuert und Medien-3-Decodierer wird über Leitung 175 gesteuert.
Ein Comp(ositor) 182 übernimmt
den Szenen-Graph in Leitung 180 und den Ausgang der drei
Medien-Decodierer in den Leitungen 176, 177 und 178 als
Eingabe und setzt eine Szene zusammen, die dem Betrachter/Benutzer
zu präsentieren
ist, aber zuerst wird der Ausgang des Compositors in Leitung 183 zu
dem Renderer übertragen,
der auch durch den Szenen-Graph in Leitung 181 gesteuert
wird und die zusammengesetzte Szene rendert.
-
2 zeigt
die Bitstromgenerierungsschnittstelle nach der Erfindung. Der BIFS-Bits-Generator 128 übernimmt
BIFS-Symbole in Leitung 124 als Eingabe und gibt eine korrespondierende
codierte Repräsentation in
der Form eines Bitstroms in Leitung 132 aus. Gleichermaßen übernehmen
die Medien-1-, -2-, -3-Bits-Generatoren 129, 130, 131 Mediensymbole
in den Leitungen 125, 126 und 127 als
Eingabe und geben die korrespondierende codierte Repräsentation
in der Form von Bitströmen
in den Leitungen 133, 134 bzw. 135 aus.
Der BIFS-Bits-Generator 128 sowie die Medien-1-, -2-, -3-Bits-Generatoren 129, 130, 131 setzen
die Bits-Generator-Schnittstelle 200 der Erfindung ein.
Die Bits-Generator-Schnittstelle 200 besteht aus Java-Klassen
wie OutputStream 201 und Map 202. Die Schnittstellenoperation
dieser Klassen wird wie folgt beschrieben.
-
Klasse mpgj.bitsio.OutputStream
-
- java.lang.Object
- |
- +----mpgj.bitsio.OutputStream
-
public class OutputStream extends Object
-
OutputStream
ist die grundlegende Schnittstelle zum Ausgangsstrom.
-
Konstruktoren
-
public OutputStream(FileOutputStream file)
-
Bildet
einen neuen OutputStream in einer Datei.
-
public OutputStream(string bits)
-
Bildet
einen neuen OutputStream in einer Zeichenfolge.
-
Methoden
-
public void align(int numbits)
-
Bewirkt
Ausrichtung mit der nächsten
Bit-Begrenzung, die ein Vielfaches von numbits ist. Bits zwischen
dem aktuellen Pointer und der Ausrichtungsgrenze werden als Nullen
geschrieben.
-
public void align(string stuffing[], int
numbits)
-
Bewirkt
Ausrichtung mit der nächsten
Bit-Begrenzung, die ein Vielfaches von numbits ist. Bits zwischen
dem aktuellen Pointer und der Ausrichtungsgrenze werden gemäß der Zeichenfolge
stuffing aufgefüllt.
-
public boolean eos()
-
Liefert
wahr bei Ende des Stroms oder Fehler und liefert sonst unwahr.
-
public boolean error()
-
Liefert
wahr bei Fehler und liefert sonst unwahr.
-
public void putbits(int numbits, int value)
-
Setzt
eine vorzeichenlose ganze Zahl unter Verwendung der spezifizierten
Zahl von Bits ein. Setzt das Fehlerflag, wenn der Strom nicht geschrieben
werden kann oder der Wert negativ ist.
-
public void putsbits(int numbits, int
value)
-
Setzt
eine ganze Zahl mit Vorzeichen unter Verwendung der spezifizierten
Zahl von Bits ein. Das letzte Bit wird als Vorzeichenbit eingesetzt.
Setzt das Fehlerflag, wenn der Strom nicht geschrieben werden kann.
-
public void putvlc(Map map, int value)
-
Setzt
den spezifizierten Wert unter Verwendung der spezifizierten Abbildungen
ein. Setzt das Fehlerflag, wenn der Strom nicht geschrieben werden
kann.
-
Klasse mpgj.bitsio.Map
-
- java.lang.Object
- |
- +---mpgj.bitsio.Map
-
public class Map extends Object
-
Eine
Abbildungstabelle für
Codierung mit fester oder variabler Länge.
-
Konstruktoren
-
public Map(FileInputStream file, int step)
-
Bildet
eine neue Abbildung durch Lesen aus einer Datei unter Verwendung
von spezifizierten Schritten für
Verweise.
-
public Map(FileInputStream file)
-
Bildet
eine neue Abbildung durch Lesen aus einer Datei. Jeder Verweis bewirkt
Vorrücken
um 1 Bit.
-
public Map(string[] bitstring, int[] value,
int array_size, int step)
-
Bildet
eine neue Abbildung aus einem Zeichenfolgenfeld und einem ganzzahligen
Feld mit bekannter Feldgröße und spezifiziertem
Schritt.
-
public Map(string[] bitstring, int[] value,
int array_size)
-
Bildet
eine neue Abbildung aus einem Zeichenfolgenfeld und einem ganzzahligen
Feld mit bekannter Feldgröße. Jeder
Verweis bewirkt Vorrücken
um 1 Bit.
-
Methoden
-
Es
werden keine Methoden auf Benutzerebene bereitgestellt.
-
3 zeigt
die Bitstrom-Bearbeitungs- und -Interpretationschnittstelle nach
der Erfindung. Der BIFS-Bits-Interpreter 161 übernimmt
den BIFS-Bitstrom in Leitung 157 als Eingabe und gibt korrespondierende
codierte Symbole in Leitung 165 aus. Gleichermaßen übernehmen
die Medien-1-, -2-, -3-Bits-Interpreter 162, 163, 164 Medienbitströme in den
Leitungen 158, 159 und 160 als Eingabe
und geben die korrespondierenden codierten Symbole in den Leitungen 166, 167 bzw. 168 aus.
Der BIFS-Bits-Interpreter 161 sowie
die Medien-1-, -2-, -3-Bits-Interpreter 162, 163, 164 setzen
die Bits-Editor/Interpreter-Schnittstelle 300 dieser
Erfindung ein. Die Bits-Editor/Interpreter-Schnittstelle 300 besteht
aus Java-Klassen wie InputStream 303, Map 302 und
OutputStream 301. Neben der Bitstrom-Interpretation unterstützt die
Schnittstelle dieser Figur auch Bitstrombearbeitung.
-
Die
Bitstrom-Bearbeitungsoperationen sind im Allgemeinen ähnlich dem
Bitstrom-Generierungsprozess.
Beispielsweise übernimmt
der Bits-Editor 156 die demultiplexten BIFS- und Medien-Bitströme in den
Leitungen 152, 153, 154, 155 als
Eingabe und gibt die korrespondierenden modifizierten (bearbeiteten
Bitströme) über die
jeweiligen Leitungen 157, 158, 159, 160 aus.
Die Bearbeitungsoperation kann als Reaktion auf das Erfordernis
erfolgen, Objekte aufgrund von überlasteten
Systemressourcen zu verwerfen, oder aufgrund von Benutzerinteraktion
und wird durch die BIFS-Editorinterpreter-Schnittstelle 300 ermöglicht.
Wie angegeben, unterstützt
diese Schnittstelle die Klassen InputStream und Map, die Schnittstelle
unterstützt
jedoch auch die Klasse OutputStream, wobei die letztgenannte (zusammen
mit Map) für
Bitstrom-Bearbeitungsoperationen benötigt wird. Die Schnittstellenoperation
der Klassen OutputStream und Map wurden vorher diskutiert (in Verbindung
mit 2). Die Schnittstellenoperation der Klasse InputStream
ist wie folgt.
-
Klasse mpgj.bitsio.InputStream
-
- java.lang.Object
- |
- +----mpgj.bitsio.InputStream
-
public class Input Stream extends Object
-
Diese
Klasse ist die grundlegende Schnittstelle für den Eingangsstrom.
-
Konstruktoren
-
public InputStream(FileInputStream file)
-
Bildet
einen neuen InputStream aus einer Datei.
-
public InputStream(string bits, int length)
-
Bildet
einen neuen InputStream aus einer Zeichenfolge mit einer gegebenen
Länge.
-
Methoden
-
public void align(int numbits)
-
Bewirkt
Ausrichtung mit der nächsten
Bit-Begrenzung, die ein Vielfaches von numbits ist. Bits zwischen
dem aktuellen Pointer und der Ausrichtungsgrenze werden gelesen
und verworfen.
-
public boolean eos()
-
Liefert
wahr bei Ende des Stroms und liefert sonst unwahr.
-
public boolean error()
-
Liefert
wahr bei Fehler und liefert sonst unwahr.
-
public int getbits(int length)
-
Holt
eine vorzeichenlose ganze Zahl von der spezifizierten Bitzahl. Setzt
das Flag eos am Ende des Stroms. Setzt das Fehlerfag, wenn der Strom
nicht gelesen werden kann.
-
public int getsbits(int length)
-
Holt
eine ganze Zahl mit Vorzeichen aus der spezifizierten Bitzahl (Länge-1).
Das letzte Bit gibt das Vorzeichen der ganzen Zahl an. Setzt das
Flag eos am Ende des Stroms. Setzt das Fehlerflag, wenn der Strom nicht
gelesen werden kann.
-
public int nextbits(int length)
-
Prüft die nächste spezifizierte
Zahl von Bits. Liefert den Wert als 32-stellige ganze Zahl. Rückt den
aktuellen Pointer nicht weiter. Setzt das Fehlerflag, wenn der Strom
nicht gelesen werden kann.
-
public void skipbits(int length)
-
Überspringt
die spezifizierte Zahl von Bits. Setzt das Flag eos am Ende des
Stroms.
-
public int getvlc(Map map)
-
Holt
Code variabler oder fester Länge
gemäß der spezifizierten
Abbildung vlc. Liefert den Wert als 32-stellige ganze Zahl. Setzt das Flag
eos am Ende des Stroms. Setzt das Fehlerflag, wenn der Strom nicht gelesen
werden kann.
-
public int nextvlc(Map map)
-
Prüft Code
variabler oder fester Länge
gemäß der spezifizierten
Abbildung vlc. Liefert den Wert als 32-stellige ganze Zahl. Setzt das Flag
eos am Ende des Stroms. Setzt das Fehlerflag, wenn der Strom nicht gelesen
werden kann.
-
Ein
Aspekt der vorstehenden Routinen betrifft im Allgemeinen die Verarbeitung
gegebener Bitlängen von
Zeichenfolgen unter Verwendung eines Datenpuffers, wie in 4 dargestellt.
In dieser Figur wird eine Eingabelänge bei 400 gelesen,
wonach ein Datenpuffer in Schritt 410 geprüft wird.
Gemäß der gewünschten Operation
kann der Puffer gemäß der Bitlänge oder
anderen Parameter gefüllt
(415) oder herausgelesen (420) werden, wonach
der Puffer aktualisiert wird (Schritt 430).
-
In
der Implementierung der Erfindung wird eine flexible Bitstromeinrichtung
eingeführt,
die Kernroutinen bildet, um sowohl einfachere als auch kompliziertere
Steuerung von eingebetteten audiovisuellen Objekten zu ermöglichen,
alles in einer universellen und konsistenten geströmten Weise.
-
Die
vorstehende Beschreibung des Systems und Verfahrens der Erfindung
ist veranschaulichend, und Fachleuten im Fachgebiet werden Variationen
in der Konstruktion und Implementierung einfallen. Beispielsweise
können,
während
ein beispielhafter Satz von Strömungsfunktionen
beschrieben wurde, Funktionen je nach Änderungen des Netzes, der Anwendung
oder anderer Anforderungen hinzugefügt und entfernt werden. Der
Rahmen der Erfindung soll ausschließlich durch die folgenden Patentansprüche begrenzt
werden.