Beschreibung
Automatisierte Anpassung und Transformation von Medienströmen
Die Erfindung betrifft die Transformation von Datenströmen.
In Devillers S.: "Bitstream Syntax Definition Language: An Input to MPEG-21 Content Representation" ist ein Verfahren beschrieben, mit dem auf Basis einer Sprache BSDL (Bitstream Description Language) zur Beschreibung von Datenströmen Adaptationsvorgänge für gegebene Medienströme durchgeführt werden können. Hierzu werden Transformationsbeschreibungen benutzt, die beispielsweise in der Sprache XSL (Extensible Stylesheet Language) geschrieben sein können. XSL-Transformationen wer- den in "XSL Transformations (XSLT)" Version 1.0, W3C Recom- mendation vom 16. November 1999 erläutert. Die Transformationsbeschreibungen werden verwendet, um ein zu einer medien- stromspezifischen BSDL-Ausführung konformes, das heißt einem Schema gemäß "XML Schema Language" 3C Recommendation vom 2. Mai 2001 bzw. einer DTD (Dcoument Type Definition) entsprechendes, XML-Dokument in ein adaptiertes XML-Dokument zu transformieren. Dieses Dokument wird dann wiederum benutzt, um mit Hilfe der BSDL-Ausführung aus einem ersten Datenstrom einen transformierten Datenstrom zu erzeugen.
Mit Bezug auf Figur 1 wird dieser Ablauf näher erläutert. Ein erster Datenstrom a_l in Form eines binären Bitstroms wird einem ersten Bitstromparser BP_1 zugeleitet. Unter Verwendung eines BSDL-Schemas BSDL_a erzeugt der Bitstromparser BP_1 aus dem ersten Datenstrom a_l eine erste Datenstrombeschreibung BSD_1/1 für den ersten Datenstrom in Form eines XML- Dokuments. Ein XSL-Prozessor XSLP erzeugt dann aus der ersten Datenstrombeschreibung BSD_1/1 für den ersten Datenstrom unter Verwendung eines XSLT-Style-Sheets XSL eine zweite Daten- Strombeschreibung BSD_l/2 für den ersten Datenstrom. Ein zweiter Bitstromparser BP_2 transformiert schließlich den ersten Datenstrom a_l unter Verwendung des BSDL-Schemas
BSDL_a und der zweiten Datenstrombeschreibung BSD_l/2 für den ersten Datenstrom in den zweiten Datenstrom a_2.
Dieses Verfahren kann beispielsweise dazu eingesetzt werden, eine auf einem Medienserver vorliegende Instanz eines Medienstroms, beispielsweise eines Videostroms, an die Anforderungen eines anfragenden Clients derart anzupassen, dass nach der Adaption beispielsweise das Bildformat des Videostroms der am Endgerät vorhandenen Bildschirmauflösung entspricht oder beispielsweise die auf dem Übertragungsweg vom Server zum Client bevorzugte Bitrate optimal genutzt wird.
Das beschriebene Verfahren weist allerdings einige Nachteile auf. So muss für die Adaption ein Parser vorhanden sein, der die Bitstromsyntax des zur Kodierung der Datenströme a_l bzw. a_2 verwendeten Codecs kennt.
Weiterhin muss für jeden unterschiedlichen Mediencodec eine spezifische BSDL-Ausführung, z.B. als Schema oder als DTD, existieren und dem System bekannt sein.
Schließlich stellt die zweite Datenstrombeschreibung BSD_l/2 für den ersten Datenstrom keine korrekte Beschreibung des zweiten Datenstroms a_2 dar, weil die in der zweiten Daten- Strombeschreibung BSD_l/2 für den ersten Datenstrom enthaltenen Datenstromadressen für die Elemente in der zweiten Datenstrombeschreibung BSD_l/2 für den ersten Datenstrom direkt aus der ersten Datenstrombeschreibung BSD_1/1 für den ersten Datenstrom kopiert wurden, ohne z.B. durch Verwerfen von Tei- len des Datenstroms verursachte Adressänderungen nachzuziehen.
Die Aufgabe ist es daher, eine, neue verbesserte Transformation zur Verfügung zu stellen, die die Funktionen des Verfah- rens nach dem Stand der Technik ebenfalls erfüllt, jedoch die beschriebenen Nachteile vermeidet.
Diese Aufgabe wird durch die in den unabhängigen Ansprüchen angegebenen Erfindungen gelöst. Vorteilhafte Ausgestaltungen ergeben sich aus den ünteransprüchen.
In einem Verfahren zur Transformation eines ersten Datenstroms in einem zweiten Datenstrom enthält der erste Datenstrom Datenstromteilbereiche, die referenzierbar und/oder klassifizierbar sind. Auch der zweite Datenstrom enthält Datenstromteilbereiche, die referenzierbar und/oder klassifi- zierbar sind. Es ist eine Datenstrombeschreibung für den ersten Datenstrom vorgesehen, in der zumindest einige, vorzugsweise zumindest nahezu alle, der Datenstromteilbereiche im ersten Datenstrom referenziert und/oder klassifiziert sind. Die Datenstrombeschreibung kann dazu eine Reihe von Adressan- gaben enthalten, von denen jede einen Teilbereich des Datenstrom referenziert. Den Adressangaben sind Klassifizierungsangaben zugeordnet, durch die die jeweiligen durch die Adressangaben referenzierten Teilbereiche klassifiziert sind. Der erste Datenstrom wird durch eine Datenstromtransformation in den zweiten Datenstrom transformiert. Dabei können beispielsweise wie bei den im Stand der Technik beschriebenen Verfahren Inhalte ausgefiltert, eine Bildauflösung reduziert und/oder die Reihenfolge der Daten im Datenstrom umsortiert werden. Es wird eine erste Datenstrombeschreibung für den zweiten Datenstrom erzeugt, in der zumindest einige, vorzugsweise zumindest nahezu alle, der Datenstromteilbereiche im zweiten Datenstrom referenziert und/oder klassifiziert sind. In der ersten Datenstrombeschreibung für den zweiten Datenstrom sind insbesondere die Referenzen bezüglich des zweiten Datenstroms korrekt.
Durch die Erzeugung einer ersten Datenstrombeschreibung für den zweiten Datenstrom kann bei nachfolgenden Transformationen auf einen Parser verzichtet werden. Soweit auch für die Bereitstellung der ersten Datenstrombeschreibung für den ersten Datenstrom kein Parser notwendig ist, indem diese beispielsweise von einem Encoder bereitgestellt wird, kann im
Verfahren vollständig auf den Einsatz eines Parsers für den Datenstrom verzichtet werden. Dies ist insbesondere in Netzwerken und bei der Verwendung von Datenströmen in unterschiedlichen Formaten ein enormer Vorteil, da hier oft gar kein geeigneter Parser zur Verfügung gestellt werden kann.
Vorzugsweise wird die erste Datenstrombeschreibung für den ersten Datenstrom durch eine Datenstrombeschreibungstransfor- mation in die erste Datenstrombeschreibung für den zweiten Datenstrom transformiert. Die erste Datenstrombeschreibung für den zweiten Datenstrom wird somit also aus der ersten Datenstrombeschreibung für den ersten Datenstrom erzeugt.
Das Erzeugen der ersten Datenstrombeschreibung für den zwei- ten Datenstrom kann sogar parallel zur Datenstromtransformation sowie auch im selben Prozessschritt erfolgen. Im Falle der zuvor beschriebenen Datenstrombeschreibungstransformation erfolgt dann die Datenstrombeschreibungstransformation parallel zur Datenstromtransformation. Das parallele Erfolgen steht hier im Gegensatz zu einer sequentiellen Folge, d.h. dass die Erzeugung der ersten Datenstrombeschreibung für den zweiten Datenstrom unabhängig von der Datenstromtransformati- on vorgenommen werden kann und umgekehrt.
Vorzugsweise wird der erste Datenstrom unter Verwendung der ersten Datenstrombeschreibung für den ersten Datenstrom in den zweiten Datenstrom transformiert.
Auch ist es bevorzugt, dass der erste Datenstrom unter Ver- wendung einer Datenstromtransformationsbeschreibung in den zweiten Datenstrom transformiert wird.
Analog dazu kann die erste Datenstrombeschreibung für den ersten Datenstrom unter Verwendung einer Datenstrombeschrei- bungstransformationsbeschreibung in die erste Datenstrombeschreibung für den zweiten Datenstrom transformiert werden. Dann kann insbesondere die Datenstromtransformationsbeschrei-
bung gleich der Datenstrombeschreibungstransformationsbe- schreibung sein.
Zumindest einer der Datenströme ist vorzugsweise ein Daten- satz, ein Bit-, Medien-, Audio-, Standbild- und/oder Videostrom. Dabei ist der Datenstrom insbesondere im MPEG-4- oder JPEG2000-Standard codiert.
Die Datenstrombeschreibung ist insbesondere in XML (Exten- sible Markup Language) . Die Datenstromtransformationsbe- schreibung und/oder die Datenstrombeschreibungstransformati- onsbeschreibung ist vorzugsweise ein Style-Sheet in XSL und/oder in Javascript.
Das Verfahren ist besonders für Anwendungsfälle geeignet, in denen auf die erste Transformation noch weitere Transformationen folgen, um den Datenstrom inhaltlich und/oder vom Umfang her weiter anzupassen. Entsprechend wird der zweite Datenstrom vorzugsweise unter Verwendung der ersten Datenstrombe- Schreibung für den zweiten Datenstrom in einen dritten Datenstrom transformiert.
Auf der gleichen erfinderischen Idee wie die zuvor dargestellten Verfahren basiert ein Verfahren, bei dem die erste Datenstrombeschreibung für den ersten Datenstrom für die Da- tenstromtransformation als Look-up-Tabelle fungiert. In diesem Fall wird die erste Datenstrombeschreibung für den ersten Datenstrom direkt, also ohne die aus dem Stand der Technik bekannte Umwandlung in eine zweite Datenstrombeschreibung für den ersten Datenstrom für die Datenstromtransformation herangezogen. Dadurch wird der Aufwand für die Umwandlung der ersten Datenstrombeschreibung für den ersten Datenstrom in die zweite Datenstrombeschreibung für den ersten Datenstrom sowie der Speicherplatz für die zweite Datenstrombeschreibung für den ersten Datenstrom gespart. Die erste Datenstrombeschreibung für den ersten Datenstrom wird dabei vollständig und unverändert herangezogen, indem bei der Datenstromtransformati-
on jeweils direkt in der ersten Datenstrombeschreibung für den ersten Datenstrom die interessierenden Referenzen bzw. Klassen nachgeschaut werden.
Eine Vorrichtung, die eingerichtet ist, ein Verfahren der zuvor geschilderten Art auszuführen, lässt sich beispielsweise dadurch ausführen, dass für jeden der genannten Verfahrensschritte entsprechende Mittel vorgesehen werden, die die Verfahrensschritte ausführen. Vorteilhafte Ausgestaltungen der Vorrichtung ergeben sich analog zu den vorteilhaften Ausgestaltungen des Verfahrens.
Ein Programmprodukt für eine Datenverarbeitungsanlage, das Softwarecodeabschnitte enthält, mit denen eines der geschil- derten Verfahren auf der Datenverarbeitungsanlage ausgeführt werden kann, lässt sich durch geeignete Implementierung des Verfahrens in einer Programmiersprache und Übersetzung in von der Datenverarbeitungsanlage ausführbaren Code ausführen. Die Softwarecodeabschnitte werden dazu gespeichert. Dabei wird unter einem Programmprodukt das Programm als handelbares Produkt verstanden. Es kann in beliebiger Form vorliegen, so zum Beispiel auf Papier, einem computerlesbaren Datenträger oder über ein Netz verteilt.
Weitere wesentliche Vorteile und Merkmale der Erfindung ergeben sich aus der Beschreibung eines Ausführungsbeispiels anhand der Zeichnung. Dabei zeigt:
Figur 2 ein Verfahren zur Transformation eines ersten Da- tenstroms in einen zweiten Datenstrom.
In Figur 2 erkennt man einen Encoder Enc, der einen ersten Datenstrom a_l und eine erste Datenstrombeschreibung BSD 1/1 für den ersten Datenstrom liefert. Die erste Datenstrombe- Schreibung BSD_1/1 für den ersten Datenstrom, die den ersten Datenstrom a_l beschreibt und konform ist bezüglich einer Strukturvorgabe BSDL, wird zweifach verwendet: Zunächst wird
die erste Datenstrombeschreibung BSD_1/1 für den ersten Datenstrom gemeinsam mit einer Datenstromtransformationsbe- schreibung XSL_a genutzt, um den ersten Datenstrom a_l in Form eines Medienstroms in einen zweiten Datenstrom a_2 in Form eines Medienstroms zu transformieren. Danach wird die erste Datenstrombeschreibung BSD_1/1 selbst unter Anleitung einer Datenstrombeschreibungstransformationsbeschreibung XSL_b in eine erste Datenstrombeschreibung BSD_2/1 für den zweiten Datenstrom transformiert. Die Datenstrombeschrei- bungstransformationsbeschreibung XSL_b kann dabei vorteilhaft derart ausgeführt sein, dass die Datenstromadressen in der ersten Datenstrombeschreibung BSD_2/1 für den zweiten Datenstrom korrekt in Bezug auf den zweiten Datenstrom a_2 sind. Auf diese Weise kann eine weitere Transformation, die ent- sprechend weitere Transformationsbeschreibungen in Form von Datenstromtransformationsbeschreibungen und Datenstrombeschreibungstransformationsbeschreibungen enthält, ohne zusätzliche Zwischenverarbeitungsschritte direkt und nach exakt der gleichen Vorgehensweise wieder durchgeführt werden. Somit ist eine direkte Kaskadierung von Transformationen auf eine einheitliche Weise möglich. Die Strukturvorgabe für die BSDL- Schemata kann der Definition nach dem eingangs geschilderten Stand der Technik entsprechen oder aber vorteilhaft der im folgenden beschriebenen allgemeinen Datenstrombeschreibung entsprechen.
Diese Datenstrombeschreibung, das heißt die Strukturvorgabe BSDL, ist generisch, also unabhängig von speziellen Codierformaten, insbesondere unabhängig vom Codierformat des be- schriebenen Datenstroms. Dennoch wird eine Typisierung der Elemente hinsichtlich spezifischer Codierformate ermöglicht. Dazu enthält der- Datenstrom Datenstromteilbereiche, die referenzierbar und klassifizierbar sind. Er weist weiterhin eine Datenstromsyntax auf, die durch das Format und/oder den In- halt des Datenstroms gegeben ist. Zumindest einige Datenstromteilbereiche werden referenziert. Das heißt, sie werden mit einer Referenz versehen, die sie eindeutig identifizier-
bar macht. Prominentestes Beispiel für eine solche Referenz ist die Beschreibung der Lage eines Datenstromteilbereiches im Datenstrom durch Adressdaten. Die Datenstromteilbereiche werden darüber hinaus durch eine Einteilung in zumindest eine Klasse einer Klasseneinteilung klassifiziert. Durch die Einteilung in eine Klasse wird ihnen eine durch die Klasse vorgegebene und für sie charakteristische Eigenschaft zugeordnet. Die Klasseneinteilung ist zumindest teilweise unabhängig von der Syntax des Datenstroms. Das heißt, sie folgt nicht der Struktur und Syntax des zu beschreibenden Datenstroms, sondern enthält Klassen, die unabhängig vom Aufbau, insbesondere vom Codierungsformat, des Datenstroms sind und inhaltlich nicht mit ihm in Zusammenhang stehen.
Zur Klassifizierung wird einem Datenstromteilbereich a_l [x] des Datenstroms a_l ein Marker ms_l [x] zugewiesen, der die Bedeutung des Datenstromteilbereichs a_l [x] für den Datenstrom a_l spezifiziert. Dieser Marker ms_l[x] muss nicht ge- nerisch, sondern kann bitstromspezifisch sein, z.B. kann ein VOP in einem MPEG-4 Videostrom gekennzeichnet werden. Hiermit kann in der Einleitung beschriebene Verfahren zur Transformation von Datenströmen unterstützt werden. Dadurch ergibt sich der Vorteil, dass die Beschreibung des Datenstroms, insbesondere die Klasseneinteilung, generisch ist und nur die Werte der Marker ms_l [x] beispielsweise basierend auf einem Klassifikationsschema variieren können. Somit kann die Sprache unabhängig von der Art des Bitstroms a_l mit einem bitstrom- unabhängigen Prozessor geparst werden.
Die Beschreibung des Datenstroms kann dabei die folgenden besonderen Eigenschaften aufweisen:
- Die Datenstrombeschreibung weist Datenstromteilbereichen a_l[x] im Datenstrom a_l einen oder mehrere Marker m_l [i] zu. Die Marker m_l[i] werden genutzt um die Anweisungen der Transformationsbeschreibungen XSL auf den Datenstrom zu übersetzen. Eine Interpretation der Bedeutung eines
Markers m_l[i] und/oder des Datenstromteilbereichs a_l[x] für den Datenstrom a_l ist hierbei nicht notwendig und nicht notwendigerweise vorhanden.
Der gleiche Marker m_l[i] kann für mehrere Datenstromteil- bereiche, z.B. a_l [x] und a_l[y] benutzt werden, wenn beispielsweise die unterschiedlichen Datenstromteilbereiche a_l[x] und a_l[y] zu einer semantischen Einheit im Datenstrom a_l gehören oder beispielsweise syntaktische Elemente des gleichen Typs umfassen. - Ein mit dem Marker m_l[i] gekennzeichneter Datenstromteil- bereich a_l [x] kann Datenstromunterteilbereiche a_l[z] enthalten, die wiederum mit Markern m_l[j] gekennzeichnet sind. Dies ist beispielsweise vorteilhaft hinsichtlich der Ausführungsgeschwindigkeit der Transformation, wenn durch unterschiedliche Transformationsbeschreibungen XSL mit unterschiedlicher Granularität Transformationen durchgeführt werden können. In einer Ausführungsmöglichkeit können diese Datenstromteilbereiche a_l[z] ausgehend von der Kennzeichnung des Datenstromteilbereichs a_l [x] rekursiv ge- kennzeichnet werden.
- Einem Datenstromteilbereich a_l[x] kann ein Wert v[x] zugeordnet werden, der beispielsweise dem durch a_l[x] im Bitstrom repräsentierten Wert entspricht. Bei einer Transformation, z.B. mit XSLT, kann dieser Wert verändert wer- den.
Die Referenzierung in Form einer Adressierung der Datenstromteilbereiche a_l[x] kann in einer Ausführung in einer der folgenden Möglichkeiten realisiert werden: Spezifikation des Anfangs und/oder Endes des Datenstrom- teilbereichs a_l [x] durch Abzählen von Einheiten vom Anfang des Datenstroms.
Spezifikation des Anfangs und/oder Endes des Datenstromteilbereichs a_l [x] durch Abzählen von Einheiten vom Anfang des vorhergehenden Datenstromteilbereichs a_l [w] . - Spezifikation des Anfangs und/oder Endes des Datenstromteilbereichs a_l[x] durch Abzählen von Einheiten vom Ende des vorhergehenden Datenstromteilbereichs a 1 [w] .
Spezifikation des Anfangs und/oder Endes des Datenstromteilbereichs a_l[x] durch Abzählen von Einheiten vom Anfang des Datenstromteilbereichs a_l[a], in dem der Daten- stromteilbereich a_l[x] enthalten ist. - Spezifikation des Endes des Datenstromteilbereichs a_l[x] durch Abzählen von Einheiten vom Anfang des Datenstromteilbereichs a_l[x].
Ohne explizite Spezifikation des Anfangs des Datenstromteilbereichs a_l[x] kann spezifiziert werden, dass der An- fang des Datenstromteilbereichs a_l[x] sich dem Ende des vorhergehenden Datenstromteilbereichs a_l [w] anschließt o- der dem Anfang des Datenstromteilbereichs a_l[a] entspricht, wenn der Datenstromteilbereich a_l[x] als erster in dem Datenstromteilbereich a_l[a] enthalten ist. Die Spezifikationen dieser Werte kann durch Abzählen von Einheiten geschehen. Hierbei kann eine oder mehrere Einheiten, beispielsweise Bits oder Bytes, verwendet werden.
Es müssen in einer Beschreibung nicht alle der obigen Eigen- Schäften vorhanden sein, sondern die Strukturelemente, die diese Eigenschaften modellieren, können auch unabhängig voneinander eingesetzt werden.
Die Datenstromtransformationsbeschreibung XSL_a und die Da- tenstrombeschreibungstransformationsbeschreibung XSL_b können vorab generiert oder aber durch eine Verarbeitungseinheit, die beispielsweise zusätzliche übermittelte Informationen ü- ber das anfragende Endgerät in einem Client-Server-Szenario berücksichtigt, automatisch erzeugt werden.
Falls die erste Datenstrombeschreibung BSDL_1/1 für den ersten Datenstrom nicht gleich bei der Erzeugung des ersten Datenstroms a_l vom Encoder Enc bereitgestellt wird, kann sie entsprechend dem Verfahren im Stand der Technik mittels eines Parsers aus dem ersten Datenstrom a_l erzeugt werden.
Im dargestellten Ausführungsbeispiel wird auf die Erzeugung von zweiten Datenstrombeschreibungen für den ersten und/oder zweiten Datenstrom vollständig verzichtet.
Die Datenstromtransformation des ersten Datenstroms a_l in den zweiten Datenstrom a_2 unter Verwendung der ersten Datenstrombeschreibung BSD_1/1 für den ersten Datenstrom und der Datenstromtransformationsbeschreibung XSL_a erfolgt in einem XSL- und Datenstromprozessor XBP.
Die Datenstrombeschreibungstransformation der ersten Datenstrombeschreibung BSD_1/1 für den ersten Datenstrom in die erste Datenstrombeschreibung BSD_2/1 für den zweiten Datenstrom erfolgt, insbesondere parallel dazu, in einem XSL- Prozessor XSLP.
Datenstromtransformation und Datenstrombeschreibungstransformation können auch in einem Prozess zusammengefasst sein.
Die Datenstromtransformationsbeschreibung XSL_a und die Datenstrombeschreibungstransformationsbeschreibung XSL_b können in einem Dokument zusammengefasst sein.