-
Technisches Gebiet
-
Ausführungsbeispiele
der vorliegenden Erfindung beziehen sich auf das Gebiet eines strömungsmäßigen Übertragens
(Streaming) von Mediendaten.
-
Technischer Hintergrund
-
Vernetzte
Umgebungen zum strömungsmäßigen Übertragen
(Streaming) stellen viele Herausforderungen für den Systementwickler dar.
Beispielsweise können
Clients unterschiedliche Anzeige-, Leistungs-, Kommunikations- und
Rechenfähigkeiten aufweisen.
Zusätzlich
können
Kommunikationsverbindungen (verdrahtet oder drahtlos) unterschiedliche
maximale Bandbreiten, Qualitätspegel
und zeitveränderliche
Charakteristika aufweisen. Ein erfolgreiches System zum strömungsmäßigen Übertragen ist
zum strömungsmäßigen Übertragen
eines Inhalts an heterogene Clients über zeitveränderliche Kommunikationsverbindungen
in der Lage. In einigen Fällen
ist auch ein Beibehalten der Sicherheit des Inhalts bedeutsam.
-
Ein
Mittel zum Erreichen einer Skalierbarkeit und Effizienz bei Umgebungen
zum strömungsmäßigen übertragen
besteht darin, einen komprimierten (codierten) Strom bei Zwischennetzwerksknoten
anzupassen oder zu transcodieren. Ein Transcodierer nimmt einen
komprimierten Strom als eine Eingabe und verarbeitet denselben dann,
um einen anderen komprimierten Strom als Ausgabe zu erzeugen. Beispielhafte
Transcodiervorgänge
umfassen eine Bitratenreduzierung, eine Ratenformung, eine räumliche Herunterabtastung,
eine Rah menratenreduzierung und ein Verändern von Komprimierungsformaten. Eine
Netzwerktranscodierung kann eine Systemskalierbarkeit und -effizienz
beispielsweise durch ein Anpassen der räumlichen Auflösung eines
Stroms an Fähigkeiten
eines speziellen Clients oder durch ein dynamisches Einstellen der
Bitrate eines Stroms, um zu zeitveränderlichen Charakteristika
eines Netzwerkskanals zu passen, verbessern.
-
Während eine
Netzwerktranscodierung eine Skalierbarkeit bei Systemen zum strömungsmäßigen Übertragen
erleichtert, stellt dasselbe auch eine Anzahl von Herausforderungen
dar. Erstens sind, während
berechnungseffiziente Transcodieralgorithmen entwickelt wurden,
selbst diese nicht gut geeignet zum Verarbeiten von Hunderten oder
Tausenden von Strömen
an Zwischennetzwerkknoten oder sogar wenigen Strömen bei Zwischennetzwerkrelaisknoten mit
niedriger Leistung. Ferner stellt eine herkömmliche Netzwerktranscodierung
für die
Sicherheit des Systems zum strömungsmäßigen Übertragen
eine ernsthafte Bedrohung dar, weil herkömmliche Transcodiervorgänge, die
an verschlüsselten
Strömen durchgeführt werden,
im Allgemeinen ein Entschlüsseln
des Stroms, ein Transcodieren des entschlüsselten Stroms und ein anschließendes Wiederverschlüsseln des
Ergebnisses erfordern. Weil herkömmlicherweise
jeder Transcodierer den Strom entschlüsseln muss, stellt jeder Netzwerktranscodierknoten
eine mögliche
Verletzung der Sicherheit des gesamten Systems dar.
-
Als
noch eine weitere Besorgnis sind vernetzte Systeme zum strömungsmäßigen Übertragen durch
eine Draht/Drahtlos-Bandbreite
und Client-Ressourcen begrenzt. Eine Drahtlos-Bandbreite ist aufgrund der gemeinschaftlich
verwendeten Beschaffenheit derselben und der grundsätzlichen
Einschränkungen
des drahtlosen Spektrums knapp. Eine Draht-Bandbreite ist durch die gemeinschaftlich verwendete
Beschaffenheit derselben begrenzt, was zu einer Netzwerkverstopfung
führen
kann. Client-Ressourcen sind häufig
durch Leistungseinschränkungen
und durch Anzeige-, Kommunikations- und Rechenfähigkeiten in der Praxis begrenzt.
Beispielsweise verbrauchen eine drahtlose Übertragung und sogar ein drahtloser
Empfang allein typischerweise große Leistungsbudgets. Um von
einer Netzwerkbandbreite und von Client-Ressourcen am effizientesten
Gebrauch zu machen, ist es erwünscht,
Clients die Ströme
mit niedrigster Bandbreite zu senden, die zu den Anzeige-, Verarbeitungs-
und Kommunikationsfähigkeiten
derselben passen. Bei vernetzten Systemen zum strömungsmäßigen Übertragen,
bei denen ein Sender einen Inhalt strömungsmäßig an eine Anzahl von heterogenen
Clients mit unterschiedlichen Ressourcen überträgt, können Netzwerktranscodierer
verwendet werden, um eine Ende-zu-Ende-Systemeffizienz und -skalierbarkeit erreichen
zu helfen.
-
Bei
Draht/Drahtlos-Hybridnetzwerken ist es häufig notwendig, einen Inhalt
simultan an feste Clients in einem Drahtnetzwerk und an mobile Clients
in einem Drahtlosnetzwerk strömungsmäßig zu übertragen.
Bei einem derartigen Hybridsystem kann es häufig erwünscht sein, einen Strom voller
Bandbreite und mit hoher Auflösung
an einen festen Draht-Client und
einen Strom niedrigerer Bandbreite und mit mittlerer Auflösung an
einen mobilen drahtlosen Empfänger
zu senden. Herkömmliche
Ansätze
zum strömungsmäßigen Übertragen
erreichen jedoch nicht die Effizienz, Sicherheit und Skalierbarkeit,
die nötig sind,
um das strömungsmäßige Übertragen
von Videos entsprechend Draht/Drahtlos-Hybridnetzwerken ohne weiteres aufzunehmen.
-
Folglich
wäre ein
Verfahren und/oder ein System, das ermöglichen kann, dass Mediendaten auf
sichere und/oder recheneffiziente Weise strömungsmäßig übertragen und/oder gespeichert
werden, vorteilhaft. Ein Verfahren und/oder System, das auch ermöglichen
kann, dass Mediendaten strömungsmäßig an heterogene
Clients übertragen
werden können,
die unterschiedliche Anzeige-, Leistungs-, Kommunikations- und Rechenfähigkeiten
und Charakteristika aufweisen können, wäre ebenfalls vorteilhaft.
Herkömmlichen
Lösungen
mangelt es entweder an einer oder mehreren dieser Fähigkeiten oder
dieselben sind übermäßig komplex.
-
Offenbarung der Erfindung
-
Ausführungsbeispiele
der vorliegenden Erfindung beziehen sich auf Verfahren und Systeme derselben
zum Speichern und Verteilen eines Stroms von Mediendaten. Bei einem
Ausführungsbeispiel beschreiben
die Mediendaten eine Instanz eines Medieninhalts und sind skalierbar
codiert. Bei einem derartigen Ausführungsbeispiel werden die skalierbar
codierten Daten in einen ersten Abschnitt und einen zweiten Abschnitt
getrennt. Der erste Abschnitt von skalierbar codierten Daten wird
in einem ersten Knoten in einem Netzwerk gespeichert. Der zweite Abschnitt
der skalierbar codierten Daten wird an einem Knoten zweiten in dem
Netzwerk gespeichert.
-
Kurze Beschreibung der Zeichnungen
-
Die
zugehörigen
Zeichnungen, die in diese Beschreibung integriert sind und einen
Teil derselben bilden, stellen Ausführungsbeispiele der Erfindung dar
und dienen zusammen mit der Beschreibung dazu, die Grundlagen der
Erfindung zu erläutern:
-
1 stellt
eine skalierbare Codierung eines Medienstroms bei einem Ausführungsbeispiel
gemäß der vorliegenden
Erfindung dar.
-
2 ist
ein Blockdiagramm, das Elemente eines Netzwerks zeigt, in dem Ausführungsbeispiele gemäß der vorliegenden
Erfindung implementiert sein können.
-
3 ist
ein Flussdiagramm eines Verfahrens zum Speichern eines Stroms von
Mediendaten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
4 ist
ein Flussdiagramm eines Verfahrens zum strömungsmäßigen Übertragen von Mediendaten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung.
-
Die
Zeichnungen, auf die in dieser Beschreibung Bezug genommen wird,
sind nicht als maßstabsgerecht
zu verstehen, außer
wenn es spezifisch angegeben ist.
-
Bester Modus zum Ausführen der
Erfindung
-
Nun
wird detailliert auf verschiedene Ausführungsbeispiele der Erfindung
Bezug genommen, von denen Beispiele in den zugehörigen Zeichnungen dargestellt
sind. Während
die Erfindung in Verbindung mit diesen Ausführungsbeispielen beschrieben wird,
ist klar, dass dieselben die Erfindung nicht auf diese Ausführungsbeispiele
beschränken
sollen. Die Erfindung soll im Gegenteil Alternativen, Modifikationen
und Äquivalente
abdecken, die innerhalb der Wesensart und des Schutzbereichs der
Erfindung enthalten sein sollen, wie es durch die beigefügten Ansprüche definiert
ist. In der folgenden Beschreibung der vorliegenden Erfindung sind
ferner zahlreiche spezifische Einzelheiten dargelegt, um ein gründliches
Verständnis
der vorliegenden Erfindung zu liefern. In anderen Fällen wurden
gut bekannte Verfahren, Prozeduren, Komponenten und Schaltungen
nicht detailliert beschrieben, um Aspekte der vorliegenden Erfindung
nicht unnötig
zu verschleiern.
-
Die
Beschreibungen und Beispiele, die hierin vorgesehen sind, werden
in dem Zusammenhang von Multimediadaten erörtert (hierin auch als Mediendaten
oder Medieninhalt bezeichnet). Ein Beispiel von Multimediadaten
sind Videodaten begleitet von Audiodaten; beispielsweise ein Film
mit einer Tonspur. Mediendaten können
jedoch lediglich Video, lediglich Audio oder sowohl Audio als auch
Video sein. Im Allgemeinen ist die vorliegende Erfindung in ihren
verschiedenen Ausführungsbeispielen gut
geeignet für
eine Verwendung bei sprachbasierten Daten, audiobasierten Daten,
bildbasierten Daten, webseitenbasierten Daten, Grafikdaten und dergleichen
und Kombinationen derselben.
-
1 stellt
eine skalierbare Codierung eines Medienstroms 10 bei einem
Ausführungsbeispiel
gemäß der vorliegenden
Erfindung dar. Der Medienstrom 10 umfasst Mediendaten für eine Instanz
eines Medieninhalts. Eine Instanz eines Medieninhalts kann ein Element
umfassen, wie beispielsweise einen Film oder ein Live-Ereignis,
das aufgenommen und aufgezeichnet wurde, oder ein Live-Ereignis,
das in Echtzeit verteilt werden soll. Eine Instanz von Medieninhalt
kann von einer anderen unterschieden werden. Beispielsweise kann
eine erste Instanz eines Medieninhalts einen Titel aufweisen und
kann eine zweite Instanz eines Medieninhalts einen unterschiedlichen
Titel aufweisen. Bei einem Ausführungsbeispiel
bezieht sich eine Instanz eines Medieninhalts auf eine Instanz von
ursprünglichen
Daten, die in Segmente und Blöcke
getrennt werden können,
wie es zu sehen sein wird, wobei die Segmente und Blöcke durch
eine Decodiervorrichtung wieder zu einer gewissen Form der ursprünglichen Daten
zusammengefügt
werden können,
wobei die ursprünglichen
Daten einen Inhalt darstellen, der eine Sequenz von verwandten Bildern
mit einem Anfangspunkt und einem Endpunkt umfasst, und wobei es
eine zeitliche Abhängigkeit
des Inhalts zwischen dem Anfangspunkt und dem Endpunkt geben kann.
-
Genauer
gesagt wird bei einem Ausführungsbeispiel
die Ausgabe eines Codierers als ein Elementarstrom bezeichnet. Pakete
in dem gleichen Elementarstrom weisen den gleichen Paketidentifizierercode
(PID; PID = packet identifier code) auf. Somit ist bei einem Ausführungsbeispiel
eine Instanz eines Medieninhalts unter Verwendung des PID als solche
identifiziert – eine
Instanz eines Medieninhalts weist einen eigenen PID auf.
-
Eine
Instanz eines Medieninhalts kann unter Verwendung eines Objektbeschreibungselements (OD;
OD = object descriptor) identifiziert sein – eine Instanz eines Medieninhalts
weist einen eigenen OD-Identifizierer auf. Der OD kann auf eine
Liste von Elementarstrombeschreibungselementen zeigen, die auf einen
oder mehrere Ströme
mit Daten oder Seiteninformationen für die Instanz eines Medieninhalts zeigen.
-
Eine
Instanz eines Medieninhalts kann unter Verwendung eines Geistiges-Eigentum-Identifikation-Beschreibungselements
(IPI-Beschreibungselement; IPI = intellectual property identification)
identifiziert sein – eine
Instanz eines Medieninhalts weist ein eigenes IPI-Beschreibungselement
auf. Falls mehrere Instanzen eines Medieninhalts durch die gleichen IPI-Informationen
identifiziert sind, kann das IPI-Beschreibungselement aus einem
Zeiger zu einem anderen Elementarstrom oder PID bestehen.
-
Eine
Instanz eines Medieninhalts kann durch einen eigenen Einheitsressourcenlokalisierer
(URL; URL = Uniform Resource Locator) identifiziert sein.
-
Es
kann andere Arten und Weisen geben, um eine Instanz eines Medieninhalts
von einer anderen zu unterscheiden.
-
Der
Strom 10 kann in eine Anzahl von Datensegmenten 12 A,
B, ..., N getrennt sein. Die Segmente 12 A, B, ..., N können basierend
auf dem Inhalt des Stroms 10 intelligent ausgewählt sein.
Beispielsweise kann ein Segment einem Bildrahmen oder einer speziellen
Region innerhalb eines Bildrahmens entsprechen. Die Segmente können unterschiedliche Größen aufweisen.
-
Jedes
jeweilige Segment 12 A, B, ..., N ist skalierbar als Datenblöcke 14 A1,
A2, ..., Aj, B1, B2, ..., Bk etc. codiert. Die Datenblöcke können unterschiedliche
Größen aufweisen.
Ferner können
die Datenblöcke
auch mit einer feineren Granularität skaliert sein, wobei ein
Datenblock partiell decodierbar sein kann. Skalierbare Codierstandards
umfassen Moving Pictures Experts Group (MPEG; Experten Gruppe für bewegte
Bilder) 1/2/4 und H.261/2/3/4, JPEG (Joint Photographic Experts Group
= Verbindung der Fotografieexperten) 2000 einschließlich Motion
JPEG 2000 und 3D-Subbandcodierung
für Bilder
und Video, aber sind nicht darauf begrenzt. Skalierbare Codierverfahren
bestehen auch für
Sprach-, Audio-, webbasierte und Grafikdaten.
-
Skalierbar
codierte Daten weisen die Eigenschaft auf, dass Abschnitte der codierten
Daten verwendet werden können,
um die ursprünglichen
Daten mit verschiedenen Qualitätspegeln
zu rekonstruieren. Genauer gesagt kann man sich die skalierbar codierten
Daten als einen eingebetteten Bitstrom vorstellen. Ein Abschnitt
des Bitstroms kann verwendet werden, um eine Basislinienqualitätsrekonstruktion der
ursprünglichen
Daten zu decodieren, ohne irgendwelche Informationen aus dem Rest
des Bitstroms zu erfordern, und progressiv größere Abschnitte des Bitstroms
können
verwendet werden, um verbesserte Rekonstruktionen der ursprünglichen Daten
zu decodieren.
-
Falls
beispielsweise ein Bild durch eine Auflösung skalierbar codiert ist,
dann kann ein kleiner Abschnitt der Daten decodiert und verwendet
werden, um ein Bild niedriger Auflösung zu rekonstruieren, kann
ein größerer Abschnitt
der Daten decodiert und verwendet werden, um ein Bild mittlerer
Auflösung
zu rekonstruieren, und können
alle Daten decodiert und verwendet werden, um ein Bild voller Auflösung zu
rekonstruieren. Somit kann beispielsweise der Block A1 decodiert
und verwendet werden, um ein Bild niedriger Auflösung einer Instanz eines Medieninhalts
zu rekonstruieren, kann der Block A2 decodiert und in Kombination mit
den decodierten Daten aus dem Block A1 verwendet werden, um ein
Bild höherer
(aber immer noch relativ niedriger) Auflösung der Instanz eines Medieninhalts
zu rekonstruieren, usw., wobei der Block Aj decodiert und mit den anderen
Blöcken
A1, A2, ... verwendet wird, um das Bild höchster Auflösung der Instanz des Medieninhalts
zu rekonstruieren. Wie es beschrieben wird, wird gemäß Ausführungsbeispielen
der vorliegenden Erfindung jeder der Blöcke 14 der Instanz
des Medieninhalts an einen oder mehrere Netzwerkknoten für eine Speicherung
verteilt und dann nachfolgend von den jeweiligen Speicherknoten
derselben an eine Bestimmungs-Client-Vorrichtung zum Decodieren
geliefert.
-
Bei
einem Ausführungsbeispiel
sind die skalierbar codierten Daten verschlüsselt. Bei einem derartigen
Ausführungsbeispiel
sind die ursprünglichen Daten
(Klartext) zu verschlüsselten
Daten (Chiffretext) verschlüsselt.
Verschlüsselungstechniken,
beispielsweise Blockchiffren und Stromchiffren, aber nicht begrenzt
darauf, können
verwendet werden. Der Verschlüsselungsvorgang
kann über
den gesamten Medienstrom durchgeführt werden oder derselbe kann
an Segmenten des Medienstroms durchgeführt werden.
-
Bei
einem anderen Ausführungsbeispiel
sind die skalierbar codierten Daten progressiv verschlüsselt. Wie
hierin verwendet, ist eine progressive Verschlüsselung als ein Prozess definiert,
der ursprüngliche
Daten (Klartext) als Eingabe nimmt und progressiv verschlüsselte Daten
(Chiffretext) als Ausgabe erzeugt. Progressive Verschlüsselungstechniken umfassen
Chiffreblockketten und Stromchiffren, aber sind nicht begrenzt darauf.
Diese progressiven Verschlüsselungsverfahren
weisen die Eigenschaft auf, dass der erste Abschnitt der Daten unabhängig verschlüsselt wird
und spätere
Abschnitte basierend auf früheren
Abschnitten verschlüsselt
werden. Der Klartext wird auf eine Weise von Anfang bis Ende oder sequentiell
verschlüsselt,
wobei ein erster Abschnitt des Bitstroms für sich verschlüsselt wird,
ein zweiter Abschnitt des Bitstroms unter Verwendung (z. B. in Kombination
mit) des ersten Abschnitts (es kann entweder der verschlüsselte oder
der unverschlüsselte erste
Abschnitt verwendet werden) verschlüsselt wird, usw. Progressiv
verschlüsselte
Daten weisen die Eigenschaft auf, dass der erste Abschnitt allein entschlüsselt werden
kann, ohne Informationen aus dem Rest der ursprünglichen Daten zu erfordern;
und progressiv größere Abschnitte
können
mit dieser gleichen Eigenschaft entwickelt werden, bei der eine Entschlüsselung
Daten aus früheren,
aber nicht späteren
Abschnitten des Bitstroms verwenden kann. Progressive Verschlüsselungsstandards
umfassen den Data Encryption Standard (DES; Datenverschlüsselungsstandard),
Triple-DES und den Advanced Encryption Standard (AES; hochentwickelter Verschlüsselungsstandard).
Diese Verschlüsselungsgrundelemente
können
unter Verwendung einer Anzahl von Blockchiffremodi angewandt werden,
einschließlich
der Modi von Electronic Codebook (ECB; elektronisches Codebuch),
Cipher Block Chaining (CBC; Chiffrenblockverkettung), Cipher-Feedback (CFB;
Chiffrenrückkopplung),
Output Feedback (OFB; Ausgaberückkopplung)
und Counter (CTR; Zähler).
-
Zusammen
mit der progressiven Verschlüsselung
umfassen Authentifizierungstechniken, die verwendet werden können, beliebte
Authentifizierungstechniken, wie beispielsweise Nachrichtenauthentifizierungscodes
(MACs; MACs = Message Authentication Codes) und digitale Signaturen
(DS), aber sind nicht begrenzt darauf. Beliebte MACs umfassen Hashbasierte
MACs, wie beispielsweise Hash-Nachrichtenauthentifizierungscode
(HMAC; HMAC = Hashed Message Authentication Code) unter Verwendung
des SHA-1-Hash (SHA-1 = Secure Hash Algorithm-1), oder chiffrenbasierte
MACs, wie beispielsweise AES in einem CBC-Modus. Datenpakete können unabhängig authentifiziert
werden, so dass eines oder mehrere Pakete verworfen werden kann
bzw. können,
ohne die Fähigkeit
zu beeinflussen, andere Pakete zu authentifizieren. Alternativ können Gruppen
von Paketen unabhängig
authentifiziert werden, so dass Gruppen von Paketen verworfen werden
können,
ohne die Fähigkeit
zu beeinflussen, andere Gruppen von Paketen zu authentifizieren.
Die obigen Kryptografietechniken können unter Verwendung von Symmetrisch-Schlüssel-Techniken oder
unter Verwendung von Öffentlich/Privat-Schlüssel-Techniken
angewandt werden.
-
2 ist
ein Blockdiagramm, das Elemente eines Netzwerks 200 zeigt,
bei dem Ausführungsbeispiele
gemäß der vorliegenden
Erfindung implementiert sein können.
Bei dem Beispiel von 2 umfasst das Netzwerk 200 einen
Codiererknoten 21 zum Codieren (genauer gesagt skalierbaren
Codieren) eines Elements eines Medieninhalts, wie es in Verbindung
mit 1 beispielsweise beschrieben ist. Der Codiererknoten 21 kann
auch die skalierbar codierten Daten verschlüsseln (genauer gesagt progressiv
verschlüsseln).
Der Codiererknoten 21 kann das Element eines Medieninhalts
von einem anderen Knoten (nicht gezeigt) empfangen oder der Codiererknoten 21 kann
selbst die Inhaltsquelle sein. Obwohl ein einziger Codiererknoten 21 dargestellt
ist, kann es mehr als einen Codiererknoten geben.
-
Bei
dem vorliegenden Ausführungsbeispiel umfasst
das Netzwerk 200 von 2 eine Anzahl von
Knoten 1, 2, ..., M, von denen jeder die Fähigkeit aufweist,
skalierbar codierte Daten zu speichern, die von dem Codiererknoten 21 empfangen
werden. Wie es oben erwähnt
ist, können
die Daten auch verschlüsselt
oder progressiv verschlüsselt
sein. Der Codiererknoten 21 kann mit den Knoten 1, 2,
..., M über
eine Draht- oder Drahtlosverbindung kommunizieren. Die Knoten 1, 2,
..., M können
miteinander kommunizieren oder nicht. Obwohl dieselben als Speicherknoten
beschrieben sind, können
die Knoten 1, 2, ..., M eine zusätzliche
Funktionalität
aufweisen, wie beispielsweise eine Transcodierfähigkeit oder die Fähigkeit,
die skalierbar codierten Daten zu Datenpaketen zu paketieren.
-
Bei
einem Ausführungsbeispiel
umfasst das Netzwerk 200 einen optionalen Verwaltungsknoten 23.
Der Verwaltungsknoten 23 weist im Allgemeinen eine Kenntnis
dessen auf, welche Informationen an welchem der Knoten 1, 2,
..., M gespeichert sind. Der Verwaltungsknoten 23 kann
einen Verkehr (z. B. Datenpakete oder Blöcke codierter Daten) von dem
Codiererknoten 21 zu den verschiedenen Speicherknoten 1, 2,
..., M und von den Speicherknoten 1, 2, ..., M
zu einem nachfolgenden Bestimmungsort (z. B. Client- oder Decodiererknoten 22)
richten. Die Funktionalität,
die durch den Verwaltungsknoten 23 geliefert wird, kann
anstelle dessen in den Codiererknoten 21 oder irgendeinen
der Speicherknoten 1, 2, ..., M eingegliedert
oder über
diese Knoten verteilt sein. Beispielsweise können die Speicherknoten 1, 2,
..., M Entscheidungen unter sich vornehmen, bezüglich dessen, wie Informationen
zwischen den Speicherknoten zu verteilen sind, sowie Entscheidungen
darüber,
welche(r) der Speicherknoten auf Client-Anforderungen anspricht
(ansprechen).
-
Der
Client-Knoten 22 ist eine mobile oder feststehende Vorrichtung,
die mit dem Netzwerk 200 über eine Draht- oder Drahtlosverbindung
gekoppelt ist. Es kann mehr als einen Client- oder Decodiererknoten
in Kombination mit dem Netzwerk 200 geben und die Anzahl
von Client/Decodierer-Knoten verändert
sich typischerweise mit der Zeit.
-
Bei
einem Ausführungsbeispiel
umfasst das Netzwerk 200 einen optionalen Proxy 24 (Stellvertreter).
Bei einem derartigen Ausführungsbeispiel übermittelt
der Client-Knoten 22 eine
Anforderung nach einem Inhaltselement an den Proxy 24,
der wiederum im Auftrag des Client-Knotens 22 handelt und
Informationen aus Speicherknoten 1, 2, ..., M
wiedererlangt und die wiedererlangten Informationen an den Client-Knoten 22 liefert
oder die Informationen aus den Speicherknoten 1, 2,
..., M an den Client-Knoten 22 richtet.
-
Bei
einem anderen Ausführungsbeispiel kommuniziert
der Client-Knoten 22 direkt mit jedem der Speicherknoten 1, 2, M,
um Informationen für
ein Inhaltselement anzufordern und wiederzuerlangen.
-
Unter
Bezugnahme auf 1 und 2 werden
im Überblick
Daten für
ein Element eines Medieninhalts wie folgt in dem Netzwerk 200 verteilt
und gespeichert. Ein Strom 10 von Daten, die das Element
eines Medieninhalts darstellen, wird skalierbar in Segmente 12 und/oder
Blöcke 14 codiert.
Die Segmente 12 und Blöcke 14 können auch
progressiv verschlüsselt
werden.
-
Bei
einem Ausführungsbeispiel
werden die Segmente 12 an einen oder mehrere der Speicherknoten 1, 2,
..., M verteilt. Das heißt,
beispielsweise kann das Segment A an den Speicherknoten 1 gesendet
werden, das Segment B an den Speicherknoten 2 usw. Es kann
mehr als ein Segment an jeden der Speicherknoten gesendet werden;
d. h. beispielsweise können
die Segmente A und B beide an den Speicherknoten 1 gesendet
werden. Es kann auch ein Segment an mehr als einen Speicherknoten
gesendet werden; d. h. beispielsweise kann das Segment A sowohl
an den Speicherknoten 1 als auch an den Speicherknoten 2 gesendet
werden.
-
Bei
einem Ausführungsbeispiel
sind die Blöcke 14 auf
einen oder mehrere der Speicherknoten 1, 2, ...,
M verteilt. Das heißt,
der Block A1 kann beispielsweise an den Speicherknoten 1 gesendet
werden, der Block A2 an den Speicherknoten 2, usw. Es kann
mehr als ein Block an jeden der Speicherknoten gesendet werden;
d. h. die Blöcke
A1 und A2 können beispielsweise
beide an den Speicherknoten 1 gesendet werden. Ferner kann
ein Block an mehr als einen Speicherknoten gesendet werden; d. h.
der Block A1 kann sowohl an den Speicherknoten 1 als auch
an den Speicherknoten 2 gesendet werden. Die Blöcke 14 können ferner
an den Speicherknoten ungeachtet der Segmente 12 gesendet
werden, denen die Blöcke
zugeordnet sind; d. h. die Blöcke
A1 und B1 können
beispielsweise an den Speicherknoten 1 gesendet werden.
Zudem können
die Blöcke 14 an die
verschiedenen Speicherknoten in irgendeiner Kombination gesendet
werden. Falls beispielsweise das Inhaltselement gemäß einem
Auflösungspegel codiert
ist, können
ein Block, der dem niedrigsten Auflösungspegel entspricht, und
ein Block, der einem anderen Auflösungspegel entspricht, an den
gleichen Speicherknoten gesendet werden; d. h. die Blöcke A1 und
B2 können
an den Speicherknoten 1 gesendet werden.
-
Die
Verteilung der Segmente 12 und/oder Blöcke 14 an die verschiedenen
Speicherknoten 1, 2, ..., M ist durch die Beschaffenheit
der Informationen, die innerhalb jedes der Segmente 12 oder
Blöcke 14 enthalten
sind, die Netzwerkbedingungen zwischen Codiererknoten 21 und
Speicherknoten 1, 2, ..., M, die antizipierten
Netzwerkbedingungen zwischen Speicherknoten 1, 2,
..., M und die antizipierte Anzahl und Art von Client- oder Bestimmungsknoten
gesteuert. Es gibt eine Anzahl von Beispielen, die verwendet werden
können,
um die Vielfalt von Mustern, zum Verteilen der Segmente 12 und/oder
Blöcke 14 unter den
Speicherknoten 1, 2, ..., M darzustellen. Die
Beispiele unten sollen nicht die Breite und den Schutzbereich der
Erfindung einschränken,
sondern vielmehr diese Vielfalt darstellen.
-
Typischerweise
werden beispielsweise skalierbar codierte Daten, die für eine Basislinienqualitätsrekonstruktion
eines Elements eines Medieninhalts verwendet werden (z. B. die Blöcke A1,
B1 etc.), als von höherer
Priorität
als andere Blöcke
(z. B. A2, B2 etc.) betrachtet, weil die Basislinienblöcke durch die
anderen Blöcke
als Grundlagen verwendet werden; d. h. wenn ein Bild rekonstruiert
wird, kann der Block A2 von den Daten in dem Block A1 abhängen, aber
nicht umgekehrt. Wenn somit betrachtet wird, wie skalierbar codierte
Daten unter den Speicherknoten 1, 2, M verteilt
werden sollen, kann eine Entscheidung getroffen werden, um die Basislinienblöcke (z. B.
A1, B1 etc.) an einem zuverlässigeren
Knoten zu speichern. Weil die Basislinienblöcke typischerweise durch alle
Client-Vorrichtungen
verwendet werden, kann auch eine Entscheidung getroffen werden,
die Basislinienblöcke
an mehreren Knoten und/oder an Knoten höherer Kapazität zu speichern.
Falls ein spezieller Speicherknoten im Allgemeinen lediglich Client-Vorrichtungen
dient, die beispielsweise lediglich die Bilddaten niedrigster Auflösung nutzen,
dann kann auf ähnliche
Weise eine Entscheidung getroffen werden, keine anderen als die
Basislinienblöcke
an diesem Knoten zu speichern.
-
Andere
Arten von Informationen, die betrachtet werden können, wenn Entscheidungen darüber gefällt werden,
wie skalierbar codierte Daten zu verteilen sind, umfassen, aber
sind nicht begrenzt auf: eine Bandbreite, die entlang Wegen in dem
Netzwerk verfügbar
ist; eine Engstellenverbindungskapazität entlang Wegen in dem Netzwerk;
Datenpaketlieferraten entlang Wegen in dem Netzwerk; Datenpaketverlustraten
entlang Wegen in dem Netzwerk; Datenpaketempfangsmuster entlang
Wegen in dem Netzwerk; Datenpaketverlustmuster entlang Wegen in
dem Netzwerk; Informationen, die eine Zeit quantifizieren, die benötigt wird,
um Wege in dem Netzwerk zu durchqueren; Informationen, die Verzögerungen quantifizieren,
die Wegen in dem Netzwerk zugeordnet sind; Informationen, die eine
Nähe zu
Netzwerk-Clients quantifizieren; Informationen, die die Anzahl von
Netzwerk-Clients
quantifizieren, die durch jeweilige Knoten in dem Netzwerk bedient
werden; einen Abstand der Speicherknoten mit Bezug aufeinander (aus
Sicherheitsgründen
kann es beispielsweise besser sein, die Knoten, an denen die Daten
gespeichert sind, durch große
Abstände
physisch getrennt zu haben); und Informationen, die Charakteristika
von Netzwerk-Clients identifizieren, die durch jeweilige Knoten
in dem Netzwerk bedient werden.
-
Netzwerkbedingungen,
wie beispielsweise die oben aufgelisteten, können mit der Zeit variieren. Folglich
kann sich die Verteilung der Segmente 12 und/oder Blöcke 14 mit
der Zeit ändern.
Das heißt, nachdem
beispielsweise die Segmente 12 und/oder Blöcke 14,
die einem speziellen Element eines Medieninhalts zugeordnet sind,
anfänglich
unter den Speicherknoten 1, 2, ..., M verteilt
wurden, können dieselben
unter den Speicherknoten umverteilt werden, wenn sich Netzwerkbedingungen ändern, einschließlich der
Verteilung von Client-Knoten. Anders ausgedrückt kann die Verteilung der
Segmente 12 und/oder Blöcke 14 verändert werden,
wenn sich Netzwerkbedingungen verändern, wenn sich die Nachfrage
nach einem speziellen Element eines Medieninhalts erhöht oder
verringert und wenn sich die Anzahl und Position jeder Art von Client-Knoten
verändert.
-
Bei
dem Beispiel oben sind auch Informationen über die Daten selbst ein Faktor
bei einem Betrachten, wie die Daten unter den Speicherknoten 1, 2,
..., M verteilt werden sollen. Informationen über die Daten umfassen, aber
sind nicht begrenzt auf: Raumbereichsmerkmale der skalierbar codierten
Daten; Farbkomponentenmerkmale der skalierbar codierten Daten; Auflösungspegel
der skalierbar codierten Daten; Qualitätspegel der skalierbar codierten
Daten; Ratenverzerrungsinformationen über die skalierbar codierten
Daten; Sicherheitsempfindlichkeit der skalierbar codierten Daten;
Zeitlieferungsanforderungen der skalierbar codierten Daten; Codierabhängigkeiten
der skalierbar codierten Daten; und Verschlüsselungsabhängigkeiten der skalierbar codierten
Daten.
-
In
dem Sicherheitsfall können
Daten auf eine Weise, die die Sicherheit der Mediendaten erhöht, durch
Speichern verwandter skalierbarer Segmente an unterschiedlichen
Knoten verteilt werden. Beispielsweise können unterschiedliche Qualitätspegel oder
Auflösungspegel,
die einem einzigen Abschnitt eines Bilds entsprechen, an unterschiedlichen
Knoten gespeichert werden, um die Sicherheit des Systems zu erhöhen.
-
Bei
einem Ausführungsbeispiel
werden ansprechend auf eine Anforderung von dem Client-Knoten 22 nach
dem Inhaltselement die verschiedenen Komponenten, die dem Inhaltselement zugeordnet
sind (z. B. die Segmente 12 oder Blöcke 14), von dem Speicherknoten,
an dem dieselben jeweils gespeichert sind, strömungsmäßig an den Client-Knoten 22 (vielleicht über den
Proxy 24) übertragen.
Das heißt,
die Segmente 12 A, B, ..., N oder die Blöcke 14 A1,
A2, ..., Aj, Bi, B2, ..., Bk, ... werden von den Speicherknoten 1, 2,
..., M, an dem dieselben gespeichert sind, an den Client-Knoten 22 geliefert. Falls
die Segmente oder Blöcke
verschlüsselt
sind, dann können
dieselben, was bedeutsam ist, an den Speicherknoten 1, 2,
..., M positioniert und an den Client-Knoten 22 geliefert
werden, während
dieselben immer noch verschlüsselt
sind.
-
Bei
einem Ausführungsbeispiel
paketieren die Speicherknoten 1, 2, ..., M die
Daten als skalierbare Datenpakete (z. B. Datenpaket 25).
Die Daten, die jedes Datenpaket 25 bilden, sind eine Funktion der
Daten, die an dem Speicherknoten gespeichert sind. Somit kann ein
Datenpaket Daten von mehreren nicht überlappenden Segmenten des
Stroms 10 umfassen. Das heißt, das Datenpaket 25 kann
beispielsweise die Blöcke
A1 und B1 oder die Blöcke
A1 und B2 oder dergleichen umfassen.
-
Eine
nützliche
Form einer Transcodierung betrifft das Abschneiden von Datenpaketen,
bei dem die Daten in einem Datenpaket angeordnet sind, so dass Daten
für einen
ersten Auflösungspegel
beispielsweise in einem ersten Abschnitt des Pakets positioniert
sind, Daten für
einen zweiten Auflösungspegel
in einem zweiten Abschnitt des Pakets positioniert sind und Daten
für eine
dritte Auflösung
in einem dritten Abschnitt positioniert sind, wobei der zweite Abschnitt
zwischen dem ersten und dem dritten Abschnitt positioniert ist,
so dass, falls ein Bild mit beispielsweise lediglich dem ersten
Auflösungspegel
rekonstruiert werden soll, dann während eines Transcodierens
der zweite und der dritte Abschnitt abgeschnitten werden können, was
ein kleineres Paket ergibt, das lediglich aus dem ersten Abschnitt
besteht. Falls gemäß Ausführungsbeispielen
der vorliegenden Erfindung lediglich Basislinienqualitätsdaten
(z. B. Blöcke
A1, B1 etc.) an einem Speicherknoten gespeichert sind, dann kann
beispielsweise das Datenpaket 25 von 2 irgendeinen
Abschnitt dieser Blöcke
(z. B. A1 und B1) umfassen, kann ein anderes Datenpaket einen anderen
Abschnitt dieser Blöcke umfassen,
usw. Durch ein intelligentes Auswählen, wie die skalierbar codierten
Daten unter den Speicherknoten 1, 2, ..., M verteilt
sind, kann somit ein Äquivalent
zu einer Transcodierung durch Abschneiden bewirkt werden.
-
Während einer
Transcodierung durch Abschneiden beispielsweise kann ein Datenpaket,
das die Blöcke
A1, A2 und A3 umfasst, abgeschnitten werden, um die Blöcke A2 und
A3 zu entfernen, kann ein Datenpaket, das die Blöcke B1, B2 und B3 umfasst,
abgeschnitten werden, um die Blöcke
B2 und B3 zu entfernen, und können
die verbleibenden Blöcke
A1 und B1 wieder zu einem Datenpaket paketiert werden, das die Blöcke A1 und
B1 umfasst. Gemäß Ausführungsbeispielen
der vorliegenden Erfindung kann das gleiche Ergebnis im Wesentlichen
durch ein Aufbauen eines Datenpakets erreicht werden, das anfänglich lediglich
die Blöcke
A1 und B1 umfasst.
-
Eine
andere nützliche
Form eines Transcodierens betrifft die Extraktion von Daten aus
einem Datenpaket und ein anschließendes Wiederpaketieren der
extrahierten Daten. Durch eine intelligente Verteilung der Segmente 12 und/oder
Blöcke 14 unter
den Speicherknoten 1, 2, ..., M wird erneut eine äquivalente
Form einer Transcodierung erreicht im Wesentlichen durch Aufbauen
eines Datenpakets, das anfänglich
lediglich die interessierenden Daten umfasst. Während einer Transcodierung
durch Extraktion beispielsweise kann ein Datenpaket, das die Blöcke A1,
A2 und A3 umfasst, transcodiert werden, um den Block A2 zu extrahieren,
kann ein Datenpaket, das die Blöcke
B1, B2 und B3 umfasst, transcodiert werden, um den Block B3 zu extrahieren,
und können
die Blöcke
A2 und B3 dann wieder zu einem Datenpaket paketiert werden. Gemäß Ausführungsbeispielen
der vorlie genden Erfindung kann das gleiche Ergebnis im Wesentlichen
durch ein Aufbauen eines Datenpakets erreicht werden, das anfänglich lediglich
A2 und B3 umfasst.
-
Anstelle
eines Transcodierens von Datenpaketen, um einige Daten zu entfernen,
während
interessierende Daten behalten werden, können Ausführungsbeispiele gemäß der vorliegenden
Erfindung im Allgemeinen im Wesentlichen das gleiche Ergebnis durch
Aufbauen von Datenpaketen erreichen, die anfänglich nur die interessierenden
Daten umfassen. Es ist bedeutsam, dass dies erzielt werden kann, während die
Daten verschlüsselt
bleiben, wobei so die Sicherheit des Inhalts in diesen Fällen beibehalten
wird, in denen Sicherheit von Belang ist.
-
Falls
ein Segment oder Block an mehr als einem Speicherknoten gespeichert
ist, wird einer der Speicherknoten ausgewählt, um das Segment oder den
Block zu liefern, und zwar abhängig
von beispielsweise Netzwerkbedingungen zwischen den Speicherknoten
und dem Client-Knoten 22, einschließlich Bedingungen an den Speicherknoten selbst.
Wie es oben erwähnt
ist, können
Netzwerkbedingungen Folgendes umfassen, aber sind nicht begrenzt
darauf: eine Bandbreite, die entlang Wegen in dem Netzwerk verfügbar ist;
eine Engstellenverbindungskapazität entlang Wegen in dem Netzwerk;
Datenpaketlieferraten entlang Wegen in dem Netzwerk; Datenpaketverlustraten
entlang Wegen in dem Netzwerk; Datenpaketempfangsmuster entlang
Wegen in dem Netzwerk; Datenpaketverlustmuster entlang Wegen in
dem Netzwerk; Informationen, die eine Zeit quantifizieren, die benötigt wird,
um Wege in dem Netzwerk zu durchqueren; Informationen, die Verzögerungen
quantifizieren, die Wegen in dem Netzwerk zugeordnet sind; Informationen,
die eine Nähe
zu Netzwerk-Clients
quantifizieren; Informationen, die die Anzahl von Netzwerk-Clients
quantifizieren, die durch jeweilige Knoten in dem Netzwerk bedient
werden; einen Abstand der Speicherknoten mit Bezug aufeinander (aus
Sicherheitsgründen
kann es beispielsweise besser sein, die Knoten, an denen die Daten
gespeichert sind, durch große
Abstände
physisch getrennt zu haben); und Informationen, die Charakteristika
von Netzwerk-Clients identifizieren, die durch jeweilige Knoten
in dem Netzwerk bedient werden.
-
Wie
es oben erwähnt
ist, wird bei verschiedenen Ausführungsbeispielen
die Anforderung entweder unter der Steuerung des Client-Knotens 22,
des Verwaltungsknotens 23, des Proxys 24, der
Speicherknoten 1, 2, ..., M oder einer gewissen
Kombination derselben erfüllt.
Bei einem clientgetriebenen Ansatz kann der Client-Knoten 22 direkt
mit jedem der Speicherknoten 1, 2, ..., M kommunizieren.
Im Wesentlichen liegt die Kenntnis zum Erfüllen einer Anforderung nach
einem Inhaltselement bei dem Client-Knoten 22, der auf
die verschiedenen Speicherknoten 1, 2, ..., M
zugreift, wie es benötigt
wird, um die Daten zu lokalisieren, die zum Rekonstruieren des Inhaltselements
benötigt
werden. Bei einem proxygesteuerten Ansatz identifiziert der Client-Knoten 22 ein
Inhaltselement gegenüber
dem Proxy 24, der die Kenntnis zum Erfüllen der Anforderung durch
ein Zugreifen auf die verschiedenen Speicherknoten 1, 2,
..., M, wie es nötig
ist, um die Daten zu lokalisieren, die dem Inhaltselement zugeordnet
sind, und durch ein Weiterleiten dieser Daten an den Client-Knoten 22 (oder
durch ein Anleiten der Speicherknoten, um diese Daten direkt an
den Client-Knoten weiterzuleiten) liefert. Ein zentral verwalteter
Ansatz unter der Steuerung des Verwaltungsknotens 23 ist
auf eine ähnliche
Weise wirksam, um eine Anforderung zu erfüllen. Bei jedem dieser Ansätze können die
Speicherknoten 1, 2, ..., M relativ einfache Speichervorrichtungen
sein; d. h. dieselben erfordern keine extensiven Rechenfähigkeiten.
-
3 ist
ein Flussdiagramm 300 eines Verfahrens zum Speichern eines
Stroms von Mediendaten gemäß einem
Ausführungsbeispiel
der vorliegenden Erfindung. 4 ist ein
Flussdiagramm 400 eines Verfahrens zum strömungsmäßigen Übertragen von
Mediendaten gemäß einem
Ausführungsbeispiel der
vorliegenden Erfindung. Obwohl in den Flussdiagrammen 300 und 400 spezifische
Schritte offenbart sind, sind derartige Schritte exemplarisch. Das
heißt, Ausführungsbeispiele
der vorliegenden Erfindung sind gut geeignet zum Durchführen verschiedener anderer
Schritte oder Variationen der Schritte, die in den Flussdiagrammen 300 und 400 dargelegt
sind. Es ist zu erkennen, dass die Schritte in den Flussdiagrammen 300 und 400 in
einer Reihenfolge durchgeführt
werden können,
die sich von der dargestellten unterscheidet, und dass eventuell
nicht alle der Schritte in den Flussdiagrammen 300 und 400 durchgeführt werden.
Alle oder ein Teil der durch die Flussdiagramme 300 und 400 beschriebenen
Verfahren können
unter Verwendung computerlesbarer und computerausführbarer
Anweisungen implementiert sein, die beispielsweise in computerverwendbaren Medien
eines Computersystems resident sind.
-
Bei
einem Block 32 von 3 werden
skalierbar codierte Daten, die ein Element eines Medieninhalts darstellen,
in zumindest einen ersten Abschnitt und einen zweiten Abschnitt
(z. B. durch den Codiererknoten 21 von 2)
getrennt. Die Daten können
auch verschlüsselt
oder progressiv verschlüsselt
sein. Unter weiterer Bezugnahme auf 1 umfasst
bei einem Ausführungsbeispiel
der erste Abschnitt Daten von einem ersten Segment (z. B. Segment 12 A)
eines Stroms 10 und umfasst der zweite Abschnitt Daten
von einem zweiten Segment (z. B. Segment 12 B) des Stroms 10.
Bei einem anderen Ausführungsbeispiel
umfasst der erste Abschnitt einen ersten Datenblock (z. B. Block 14 A1) und
weist der zweite Abschnitt einen zweiten Datenblock (z. B. Block 14 A2
oder Block 14 B1 etc..) auf.
-
Bei
einem Ausführungsbeispiel
werden der erste und der zweite Abschnitt gemäß Informationen über die
skalierbar codierten Daten ausgewählt, wie beispielsweise, aber
nicht begrenzt auf: Raumbereichsmerkmale der skalierbar codierten
Daten; Farbkomponentenmerkmale der skalierbar codierten Daten; Auflösungspegel
der skalierbar codierten Daten; Qualitätspegel der skalierbar codierten
Daten; Ratenverzer rungsinformationen über die skalierbar codierten
Daten; Sicherheitsempfindlichkeit der skalierbar codierten Daten;
Zeitlieferanforderungen der skalierbar codierten Daten; Codierabhängigkeiten der
skalierbar codierten Daten; und Verschlüsselungsabhängigkeiten der skalierbar codierten
Daten.
-
In
dem Sicherheitsfall können
Daten auf eine Weise, die die Sicherheit der Mediendaten erhöht, durch
Speichern verwandter skalierbarer Segmente an unterschiedlichen
Knoten verteilt werden. Beispielsweise können unterschiedliche Qualitätspegel oder
Auflösungspegel,
die einem einzigen Abschnitt eines Bilds entsprechen, an unterschiedlichen
Knoten gespeichert werden, um die Sicherheit des Systems zu erhöhen.
-
Bei
einem Block 34 von 3, auch
unter Bezugnahme auf 2, wird der erste Abschnitt
der skalierbar codierten Daten an einem ersten Knoten (z. B. Speicherknoten 1)
in einem Netzwerk 200 gespeichert.
-
Bei
einem Block 36 von 3, auch
mit Bezug auf 2, wird der zweite Abschnitt
der skalierbar codierten Daten an einem zweiten Knoten (z. B. Speicherknoten 2)
in dem Netzwerk 200 gespeichert.
-
Bei
einem Ausführungsbeispiel
werden der erste und der zweite Knoten gemäß Informationen über das
Netzwerk ausgewählt,
wie beispielsweise, aber nicht begrenzt auf: eine Bandbreite, die
entlang Wegen in dem Netzwerk verfügbar ist; eine Engstellenverbindungskapazität entlang
Wegen in dem Netzwerk; Datenpaketlieferraten entlang Wegen in dem
Netzwerk; Datenpaketverlustraten entlang Wegen in dem Netzwerk;
Datenpaketempfangsmuster entlang Wegen in dem Netzwerk; Datenpaketverlustmuster
entlang Wegen in dem Netzwerk; Informationen, die eine Zeit quantifizieren,
die benötigt
wird, um Wege in dem Netzwerk zu durchqueren; Informationen, die
Verzögerungen
quantifizieren, die Wegen in dem Netzwerk zugeordnet sind; Informationen,
die eine Nähe
zu Netzwerk-Clients quantifizieren; Informationen, die die Anzahl
von Netzwerk-Clients quantifizieren, die durch jeweilige Knoten
in dem Netzwerk bedient werden; und Informationen, die Charakteristika
von Netzwerk-Clients identifizieren, die durch jeweilige Knoten
in dem Netzwerk bedient werden.
-
Bei
einem Block 38 von 3 werden
bei einem Ausführungsbeispiel
der erste und der zweite Abschnitt zu skalierbaren Datenpaketen
an den jeweiligen Speicherknoten derselben paketiert.
-
Unter
jetziger Bezugnahme auf Block 42 von 4 macht
bei einem Ausführungsbeispiel
(z. B. bei einem proxygetriebenen oder zentral verwalteten Ansatz)
der Client-Knoten 22 (2) eine
Anforderung nach einer Instanz eines Medieninhalts.
-
Bei
einem anderen Ausführungsbeispiel
(z. B. einem client-getriebenen
Ansatz) fordert bei einem Block 44 von 4 der
Client-Knoten 22 (2) Daten
von bestimmten Speicherknoten an, die dem Client als Daten für die Instanz
eines Medieninhalts aufweisend bekannt sind (z. B. Speicherknoten 1, 2,
..., M von 2).
-
Bei
einem Block 46 von 4 empfängt der Client
einen ersten Abschnitt von skalierbar codierten Daten für die Instanz
eines Medieninhalts van einem ersten Speicherknoten (z. B. Speicherknoten 1 von 2).
-
Bei
einem Block 48 von 4 empfängt der Client
einen zweiten Abschnitt von skalierbar codierten Daten für die gleiche
Instanz eines Medieninhalts von einem zweiten Speicherknoten (z.
B. Speicherknoten 2 von 2). Der
erste und/oder zweite Abschnitt der skalierbar codierten Daten können auch progressiv
verschlüsselt
sein.
-
Unter
Bezugnahme auch auf 1 umfasst bei einem Ausführungsbeispiel
der erste Abschnitt Daten aus einem ersten Segment (z. B. Segment 12 A)
eines Stroms 10 und umfasst der zweite Abschnitt Daten
aus einem zweiten Segment (z. B. Segment 12 B) des Stroms 10.
Bei einem anderen Ausführungsbeispiel
umfasst der erste Abschnitt einen ersten Block von Daten (z. B.
Block 14 A1) und umfasst der zweite Abschnitt einen zweiten
Block von Daten (z. B. Block 14 A2 oder Block 14 B1
etc.).
-
Zusammenfassend
gesagt, sieht die vorliegende Erfindung in ihren verschiedenen Ausführungsbeispielen
Verfahren und Systeme zum Speichern und Verteilen von Strömen von
Mediendaten vor. Im Allgemeinen wird ein Strom in mehrere Abschnitte
geteilt und werden die Abschnitte an unterschiedlichen Speicherknoten
in einem Netzwerk gespeichert. Somit wird der Strom nicht an einem
einzigen Server gespeichert, was eine Anzahl von Vorteilen liefert,
wie beispielsweise eine größere Fehlertoleranz
und Sicherheit. Weil ferner der Inhalt verteilt ist, kann derselbe
entlang unterschiedlicher Wege durch das Netzwerk hindurch strömungsmäßig an einen
Client übertragen
werden, was ebenfalls eine größere Fehlertoleranz
und Sicherheit liefert.
-
Eine
Fehlertoleranz ist verbessert, weil beispielsweise, falls ein Server
ausfallen sollte oder falls ein Netzwerkweg verstopft ist, zumindest
eine gewisse Menge an Mediendaten von diesen Servern (z. B. Speicherknoten),
die immer noch im Dienst sind, und entlang anderer Wege, die nicht
verstopft sind, erwartungsgemäß den Client
erreicht. Eine Sicherheit ist insbesondere dann verbessert, wenn
eine progressive Verschlüsselung
verwendet wird, weil, um einige Datenblöcke zu entschlüsseln, entschlüsselte Versionen
anderer Datenblöcke
benötigt
werden. Die Datenblöcke
sind jedoch unter einer Anzahl von Speicherknoten verteilt und werden
entlang unterschiedlicher Wege strömungsmäßig an einen Client übertragen,
was es für
einen Lauscher schwieriger macht, die Informationen zu gewinnen,
die benötigt werden,
um zumindest einige Abschnitte des Medieninhalts zu entschlüsseln. Eine
Sicherheit wird auch beibehalten, weil die Daten, sobald dieselben einmal
verschlüsselt
sind, ohne eine Entschlüsselung
gehandhabt und von den Speicherknoten verteilt werden können. Durch
ein intelligentes Auswählen,
wo unterschiedliche Abschnitte des Stroms gespeichert werden, kann
auch die Menge einer Transcodierung verringert oder in einigen Fällen beseitigt werden.
Zudem können
Abschnitte des Stroms gespeichert werden, wo dieselben am wahrscheinlichsten
benötigt
werden; an irgendwelchen der Speicherknoten ist es auf ähnliche
Weise lediglich nötig,
diese Abschnitte zu speichern, die wahrscheinlich durch Clients
benötigt
werden, die durch einen speziellen Speicherknoten bedient werden
(z. B. in einem Abschnitt des Netzwerks, der lediglich Clients niedriger Auflösung bedient,
müssen
diese Abschnitte des Stroms, die Auflösungen höherer Pegel zugeordnet sind,
nicht an den Knoten gespeichert werden, die diesen Abschnitt des
Netzwerks bedienen). Im Allgemeinen sehen Ausführungsbeispiele gemäß der vorliegenden
Erfindung einen feinkörnigen
Ansatz zum Verteilen und Speichern von Mediendaten vor, der feiner
auf Netzwerkbedingungen und/oder die Fähigkeiten heterogener Clients
abgestimmt werden kann.
-
Es
sind somit Ausführungsbeispiele
der vorliegenden Erfindung beschrieben. Während die vorliegende Erfindung
in speziellen Ausführungsbeispielen
beschrieben wurde, sollte klar sein, dass die vorliegende Erfindung
nicht als durch derartige Ausführungsbeispiele
begrenzt, sondern vielmehr gemäß den folgenden
Ansprüchen
aufgefasst werden sollte.
-
Zusammenfassung
-
Es
sind Verfahren (300, 400) und Systeme derselben
zum Speichern eines Stroms von Mediendaten (10) beschrieben.
Die Mediendaten beschreiben eine Instanz eines Medieninhalts. Die
Mediendaten können
skalierbar codiert sein. Die skalierbar codierten Daten werden in
zumindest einen ersten Abschnitt und einen zweiten Abschnitt getrennt.
Der erste Abschnitt von skalierbar codierten Daten wird an einem
ersten Knoten (1) in einem Netzwerk (200) gespeichert.
Der zweite Abschnitt von skalierbar codierten Daten wird an einem
zweiten Knoten (2) in dem Netzwerk gespeichert.