DE69904621T2 - Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollen - Google Patents

Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollen

Info

Publication number
DE69904621T2
DE69904621T2 DE69904621T DE69904621T DE69904621T2 DE 69904621 T2 DE69904621 T2 DE 69904621T2 DE 69904621 T DE69904621 T DE 69904621T DE 69904621 T DE69904621 T DE 69904621T DE 69904621 T2 DE69904621 T2 DE 69904621T2
Authority
DE
Germany
Prior art keywords
symbols
output
input
symbol
output symbol
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE69904621T
Other languages
English (en)
Other versions
DE69904621D1 (de
Inventor
G. Luby
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Digital Fountain Inc
Original Assignee
Digital Fountain Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Digital Fountain Inc filed Critical Digital Fountain Inc
Publication of DE69904621D1 publication Critical patent/DE69904621D1/de
Application granted granted Critical
Publication of DE69904621T2 publication Critical patent/DE69904621T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L7/00Arrangements for synchronising receiver with transmitter
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0056Systems characterized by the type of code used
    • H04L1/0057Block codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1191Codes on graphs other than LDPC codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-Solomon codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3746Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3761Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 using code combining, i.e. using combining of codeword portions which may have been transmitted separately, e.g. Digital Fountain codes, Raptor codes or Luby Transform [LT] codes
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0041Arrangements at the transmitter end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L1/00Arrangements for detecting or preventing errors in the information received
    • H04L1/004Arrangements for detecting or preventing errors in the information received by using forward error control
    • H04L1/0045Arrangements at the receiver end
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L12/00Data switching networks
    • H04L12/02Details
    • H04L12/16Arrangements for providing special services to substations
    • H04L12/18Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
    • H04L12/1836Arrangements for providing special services to substations for broadcast or conference, e.g. multicast with heterogeneous network architecture

Landscapes

  • Engineering & Computer Science (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Signal Processing (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Theoretical Computer Science (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Error Detection And Correction (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Compression, Expansion, Code Conversion, And Decoders (AREA)
  • Circuits Of Receivers In General (AREA)
  • Communication Control (AREA)
  • Small-Scale Networks (AREA)
  • Detection And Correction Of Errors (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)
  • Mobile Radio Communication Systems (AREA)

Description

    Stand der Technik
  • Die vorliegende Erfindung betrifft das Codieren und Decodieren von Daten in Kommunikationssystemen, und im Besonderen betrifft die vorliegende Erfindung Kommunikationssysteme, die Daten Codieren und Decodieren, um Fehlern und Lücken in übermittelten Daten Rechnung zu tragen und um von mehr als einer Quelle stammenden übermittelte Daten wirksam zu nutzen.
  • Die Übermittlung von Dateien zwischen einem Sender und einem Empfänger über einen Kommunikationskanal wurde in der Literatur bereits vielfach behandelt. Vorzugsweise möchte ein Empfänger mit einem gewissen Maß an Sicherheit eine genaue Kopie der Daten empfangen, die von einem Sender über einen Kanal übertragen worden sind. Wenn der Kanal keine perfekte Wiedergabetreue aufweist (was für die meisten physikalisch realisierbaren Systeme gilt), betrifft ein Problem die Behandlung von Daten, die während der Übermittlung verloren gehen oder verstümmelt bzw. gestört werden. Verlorengegangene Daten (gelöschte Daten) können häufig leichter behandelt werden als verstümmelte bzw. gestörte Daten (Fehler), da der Empfänger nicht immer feststellen kann, ob es sich bei verstümmelten Daten um fehlerhaft empfangene Daten handelt. Zahlreiche Fehlerkorrekturcodes wurden entwickelt, um Berichtigungen bzw. Korrekturen von Löschungen (sogenannte "Löschcodes") und/oder von Fehlern ("Fehlerkorrekturcodes" oder "ECCs") zu ermöglichen. Kennzeichnenderweise wird der jeweilige Code auf der Basis bestimmter Informationen über die Wiedergabetreue des Kanals ausgewählt, über den die Daten übermittelt werden, sowie auf der Basis der Beschaffenheit der übermittelten Daten. Wenn es zum Beispiel bekannt ist, dass der Kanal lange Zeiträume einer unzureichenden Wiedergabetreue aufweist, so kann sich für diese Anwendung ein Fehlerbündelcode am besten eignen. Wenn nur kurze, selten auftretende Fehler erwartet werden, kann sich ein einfacher Paritätscode am besten eignen.
  • Die Dateiübermittlung zwischen einer Mehrzahl von Sendern und/oder einer Mehrzahl von Empfängern über einen Kommunikationskanal wurde in der Literatur ebenfalls umfassend behandelt. Kennzeichnenderweise setzt die Dateiübermittlung von einer Mehrzahl von Sendern eine Koordination der Mehrzahl von Sendern voraus, so dass die Sender die entsprechenden Auf wände in möglichst geringem Maße doppelt ausführen müssen. Wenn die Sender in einem kennzeichnenden Sendersystem, das eine Datei an einen Empfänger sendet, nicht koordinieren, welche Daten sie wann übermitteln, sondern vielmehr einfach Dateisegmente senden, so ist es wahrscheinlich, dass ein Empfänger viele nutzlose Segmente doppelt empfängt. Wenn verschiedene Empfänger zu unterschiedlichen Zeitpunkten mit einer Übermittlung von einem Sender verbunden werden, betrifft ein ähnliches Problem die Tatsache, wie sichergestellt werden kann, dass die Empfänger von dem Sender nur nützliche Daten empfange. Als Beispiel wird angenommen, dass der Sender ununterbrochen Daten zu der gleichen Datei übermittelt. Wenn der Sender lediglich Segmente der ursprünglichen Datei sendet und einige Segmente verloren gehen, so ist es wahrscheinlich, dass ein Empfänger zahlreiche nutzlose Segmente doppelt empfängt, bevor eine Kopie jedes Segments der Datei empfangen worden ist.
  • Ein weiterer zu berücksichtigender Faktor bei der Auswahl eines Codes ist das für die Übermittlung verwendete Protokoll.
  • Bei dem als "Internet" (mit großem "I") bekannten globalen Verbundnetzwerk von Netzwerken für die Datenübertragung ein Paketprotokoll verwendet. Dieses Protokoll trägt die Bezeichnung Internet Protocol oder kurz "IP". Wenn eine Datei oder ein anderer Datenblock über ein IP-Netzwerk übermittelt werden soll, so wird die Datei oder der Datenblock in gleich große Eingabesymbole aufgeteilt, und die Eingabesymbole werden in fortlaufende Pakete platziert. Die Paketanordnung kann ein Codierungsschema auf Paketbasis als geeignet machen. Die "Größe" eines Eingabesymbols kann in Bits gemessen werden, unabhängig davon, ob das Eingabesymbol tatsächlich in einen Bitstrom aufgeteilt wird, wobei ein Eingabesymbol eine Größe von M-Bits aufweist, wenn das Eingabesymbol aus einem Alphabet mit 2M Symbolen ausgewählt wird.
  • Das Transport Control Protocol ("TCP") ist ein häufig eingesetztes Punkt-zu-Punkt-Paketsteuerungsschema mit Bestätigungsmechanismus. TCP eignet sich gut für direkte Eins- zu-Eins-Kommunikationszwecke, wobei sich Sender und Empfänger auf einen Zeitpunkt für die Übermittlung und den Empfang ebenso eignen wie darauf, welche Sender und Empfänger verwendet werden. Allerdings eignet sich TCP häufig nicht für Kommunikationen zwischen einem Endpunkt und einer Mehrzahl von Endpunkten oder zwischen mehreren Endpunkten. TCP eignet sich häufig auch nicht für Anwendungen, bei denen der Sender und der Empfänger voneinander unabhängig bestimmen, wann und wo sie Daten senden oder empfangen.
  • Unter Verwendung von TCP übermittelt ein Sender geordnete Pakete, und der Empfänger bestätigt den Empfang jedes Pakets. Wenn ein Paket verloren geht, wird keine Bestätigung an den Sender versandt und der Sender sendet das Paket erneut. Ein Paketverlust kann viele Ursachen haben. Im Internet kommt es durch sporadische Überlastungen häufig zu Paketverlusten, wobei der Puffermechanismus in einem Router an seine Kapazitätsgrenzen stößt, wodurch eingehende Pakete verloren gehen müssen. Bei Protokollen wie etwa TCP/IP ermöglicht es das Bestätigungsparadigma, dass Pakete verloren gehen können, ohne einen Totalausfall zu bewirken, da verloren gegangene Pakete erneut gesendet werden können, und zwar entweder als Reaktion auf eine fehlende Bestätigung oder als Folge einer ausdrücklichen Anforderung durch den Empfänger. In beiden Fällen ist bei einem Bestätigungsprotokoll ein Rückkanal von dem Empfänger zu dem Sender erforderlich.
  • Protokolle auf der Basis einer Bestätigung eignen sich zwar für zahlreiche Anwendungen und werden gegenwärtig im Internet weitverbreitet eingesetzt, wobei sie jedoch für bestimmte Anwendungen ineffizient und teilweise sogar völlig unbrauchbar sind. Im Besonderen arbeiten Bestätigungsprotokolle unzufriedenstellend in Netzwerken mit hohen Latenzzeiten, mit hohen Paketverlustraten, mit unkoordinierten An- und Abmeldungen von Empfängern und/oder mit besonders asymmetrischen Bandbreiten. Eine hohe Latenzzeit ist dann gegeben, wenn die Bestätigungen eine lange Zeit für die Übermittlung von dem Empfänger zurück zum Sender benötigen. Eine hohe Latenzzeit kann zu einer unzulässig hohen Gesamtzeit vor einer erneuten Übermittlung führen. Hohe Paketverlustraten verursachen ebenfalls Probleme, wenn mehrere wiederholte Übermittlungen des gleichen Pakets nicht ankommen, was zu einer langen Verzögerung bis zum Erhalt des letzten oder der letzten wenigen ausständigen Pakete führt.
  • "Unkoordinierte An- und Abmeldungen von Empfängern" betrifft die Situation, wenn sich jeder Empfänger nach eigenem Belieben während einer gerade andauernden Übertragungssitzung an- und abmelden kann. Diese Situation ist im Internet, bei Diensten der nächsten Generation wie etwa "Video-on-Demand" und anderen in der Zukunft von Netzwerkanbietern angebotenen Diensten typisch. Wenn sich bei diesen kennzeichnenden Systemen ein Empfänger ohne Koordination der Sender bei einer gerade andauernden Übertragung anmeldet oder abmeldet, so nimmt der Empfänger wahrscheinlich einen Verlust einer hohen Anzahl von Paketen wahr, wobei von den verschiedenen Empfängern deutlich unvereinbare Verlustmuster empfunden werden.
  • Asymmetrische Bandbreite betrifft die Situation, in der ein Umkehrdatenweg von dem Empfänger zu dem Sender (der Rückkanal) weniger verfügbar oder teuerer ist als der Vorwärtsweg. Eine asymmetrische Bandbreite kann die häufige Bestätigung von Paketen für den Empfänger übermäßig langsam und/oder teuer machen, und wobei Bestätigungen mit geringer Häufigkeit wiederum zu Verzögerungen führen können.
  • Darüber hinaus fehlt Bestätigungsprotokollen die nötige Skalierung für Rundsendungen, wobei ein Sender eine Datei gleichzeitig an mehrere Anwender bzw. Benutzer sendet. Wenn ein Sender zum Beispiel eine Datei über einen Satellitenkanal an mehrere Empfänger sendet, kann bei jedem Empfänger ein anderes Paketverlustmuster auftreten. Protokolle, die Bestätigungsdaten (positiv oder negativ) für eine zuverlässige Zustellung der Datei benötigen, setzen einen Rückkanal von jedem Empfänger zum Sender voraus. Dies vorzusehen, kann mit unzulässig hohen Kosten einhergehen. Ferner ist dafür ein komplexer und leistungsstarker Sender erforderlich, so dass alle von den Empfängern gesendete Bestätigungsdaten verarbeitet werden können. Ein weiterer Nachteil ist es, dass für den Fall, dass unterschiedliche Empfänger verschiedene Paketsätze verlieren, das erneute Senden von Paketen, die nur bei wenigen Empfängern nicht eingegangen sind, den Empfang nutzloser doppelter Pakete durch andere Empfänger verursachen. Eine weitere Situation, mit der ein Kommunikationssystem auf Bestätigungsbasis nicht gut zurechtkommen, ist gegeben, wenn Empfänger asynchron mit einer Empfangssitzung beginnen, d. h. der Empfänger beginnt mitten in einer Übertragungssitzung mit dem Datenempfang.
  • Zur Verbesserung der Leistungsfähigkeit von Verfahren auf Bestätigungsbasis, wie etwa von TCP/IP für das Mehrfach- und Rundsenden, wurden verschiedene komplexe Verfahren vorgeschlagen. Aus verschiedenen Gründen wurde jedoch keines dieser Verfahren zum gegenwärtigen Zeitpunkt eindeutig angenommen. Ein Grund dafür ist es, dass Bestätigungsprotokollen die nötige Skalierbarkeit für Situationen fehlt, in denen ein Empfänger Informationen von mehreren Sendern erhält, wie etwa in einem Satellitensendenetz in der unteren Erdumlaufbahn ("LEO"). In einem LEO-Netz verlaufen die Satelliten in der Höhe aufgrund ihrer Umlaufbahn schnell, so dass der Empfänger einen bestimmten Satelliten nur für kurze Zeit im Blickfeld hat. Um dies auszugleichen weist ein LEO-Netz zahlreiche Satelliten auf, und die Übergabe der Empfänger zwischen den Satelliten erfolgt, wenn ein Satellit unter den Horizont tritt und ein anderer am Horizont erscheint. Wenn ein Protokoll auf Bestätigungsbasis zur Gewährleistung von Zuverlässigkeit verwendet werden würde, so wäre wahrscheinlich ein komplexes Übergabeprotokoll erforderlich, um die an die entsprechenden Satelliten zurück übermittelten Bestätigungen zu koordinieren, da ein Empfänger häufig ein Paket von einem Satelliten empfangen würde und das Paket an einem anderen Satelliten bestätigt.
  • Eine teilweise in der Praxis eingesetzte Alternative zu einem Protokoll auf der Basis von Bestätigungen ist ein Protokoll auf Karussellbasis. Ein Karussellprotokoll unterteilt eine Eingabedatei in Eingabesymbole mit gleicher Länge, wobei jedes Eingabesymbol in einem Paket platziert wird und danach ununterbrochen alle Pakete abgearbeitet und übermittelt werden. Ein wesentlicher Nachteil bei einem Karussellprotokoll ist es, dass wenn ein Empfänger auch nur ein Paket verpasst, der Empfänger einen ganzen Zyklus warten muss, bevor die Möglichkeit für den Empfang des verpassten Pakets besteht. Die Situation kann auch so gesehen werden, dass ein Protokoll auf Karussellbasis den Empfang einer großen nutzlosen doppelten Datenmenge verursachen kann. Wenn ein Empfänger zum Beispiel Pakete vom Anfang des Karussells empfängt, den Empfang für eine Weile unterbricht und danach erneut mit dem Empfang am Anfang des Karussells beginnt, so wird eine große Anzahl nutzloser doppelter Pakete empfangen.
  • Eine vorgeschlagene Lösung für die vorstehenden Probleme ist es, auf den Einsatz von Protokollen auf der Basis einer Bestätigung zu verzichten und stattdessen Löschcodes zu verwenden, wie etwa Reed-Solomon-Codes, um dadurch die Zuverlässigkeit zu steigern. Ein Merkmal verschiedener Löschcodes ist es, dass bei einer Segmentierung einer Datei in Eingabesymbole, die in Paketen an den Empfänger gesendet werden, der Empfänger die Pakete decodieren bzw. entschlüsseln kann, so dass die gesamte Datei wiederhergestellt werden kann, nachdem ausreichend viele Pakete empfangen worden sind, und zwar allgemein unabhängig davon, welche Pakete den Empfänger erreichen. Diese Eigenschaft macht Bestätigungen auf der Paketebene überflüssig, da die Datei auch dann wiederhergestellt werden kann, wenn Pakete verloren gehen. Viele Löschcodelösungen können die Probleme eines Protokolls auf Bestätigungsbasis jedoch nicht lösen oder werfen neue Probleme auf.
  • Ein Problem bei zahlreichen Löschcodes ist es, dass sie eine übermäßig hohe Rechenleistung oder besonders viel Speicher für den Betrieb benötigen. Eine in letzter Zeit für Kommunikationsanwendungen entwickelte Codierungsmethode, die in Bezug auf die verwendete Rechenleistung und den verwendeten Speicher eine gewisse Effizienz aufweist, ist die Tornadocodierungsmethode. Tornado-Codes gleichen Reed-Solomon-Codes dahingehend, dass eine Eingabedatei durch K Eingabesymbole dargestellt und zur Bestimmung von N Ausgabesymbolen verwendet wird, wobei N vor Beginn des Codierungsprozesses festgelegt wird. Die Codierung mit Tornado-Codes ist allgemein deutlich schneller als die Codierung mit Reed-Solomon-Codes, wobei die durchschnittliche Anzahl der zur Erzeugung von N Tornado- Ausgabesymbolen erforderlichen Rechenoperationen proportional zu N ist (im Bereich einer zweistelligen Anzahl von Assemblercodeoperationen mal N), und wobei die Anzahl der insgesamt für die Decodierung der gesamten Datei erforderlichen Rechenoperationen ebenfalls proportional zu N ist.
  • Tornado-Codes weisen gegenüber Reed-Solomon-Codes Geschwindigkeitsvorteile auf, wobei sie jedoch auch verschiedene Nachteile auf weisen. Erstens muss die Anzahl der Ausgabesymbole N vor dem Codierungsprozess bestimmt werden. Dies führt zu Ineffizienzen, wenn die Verlustrate der Pakete überschätzt wird und kann zu einem Ausfall führen, wenn die Paketverlustrate unterschätzt wird. Grund dafür ist die Tatsache, dass ein Tornado-Decodierer eine bestimmte Anzahl von Ausgabesymbolen (im Besonderen K + A Pakete, wobei A im Vergleich zu K klein ist) für die Decodierung und Wiederherstellung der ursprünglichen Datei voraussetzt, und wenn die Anzahl der verlorenen Pakete größer ist als N - (K + A), so kann die ursprüngliche Datei nicht wiederhergestellt werden. Diese Einschränkung ist für viele Kommunikationsprobleme allgemein zulässig, solange das ausgewählte N mindestens um den tatsächlichen Paketverlust größer ist als K + A, wobei dafür allerdings eine Vorabschätzung des Paketverlusts erforderlich ist.
  • Ein weiterer Nachteil von Tornado-Codes ist es, dass diese eine gewisse Übereinstimmung des Codierers und Decodierers bezüglich einer Graphstruktur voraussetzen. Tornado-Codes setzen eine Vorverarbeitungsstufe an dem Decodierer voraus, wo der Graph konstruiert wird, wobei dieser Prozess die Decodierung erheblich verlangsamt. Ferner muss ein für eine Dateigröße spezifischer Graph und somit ein neuer Graph für jede verwendete Dateigröße erzeugt werden. Ferner ist die Konstruktion der von den Tornado-Codes vorausgesetzten Graphen kompliziert, wobei unterschiedliche benutzerdefinierte Parametereinstellungen für Dateien unterschiedlicher Größe erforderlich sind, um die bestmögliche Leistung zu erzielen. Diese Graphen weisen eine signifikante Größe auf und erfordern für deren Speicherung am Sender und Empfänger eine erhebliche Speichergröße.
  • Ferner erzeugen die Tornado-Codes im Verhältnis zu einem festen Graphen und einer Eingabedatei die exakt gleichen Ausgabesymbolwerte. Die Ausgabesymbole umfassen die K ursprünglichen Eingabesymbole und N-K redundante Symbole. Ferner kann N nur ein kleines Vielfaches von K sein, wie etwa 1,5 oder 2 mal K. Somit ist es äußerst wahrscheinlich, dass ein Empfänger, der Ausgabesymbole erhält, die aus der gleichen Eingabedatei unter Verwendung des gleichen Graphen von mehr als einem Sender erzeugt werden, eine große Anzahl nutzloser doppelter Ausgabesymbole empfängt. Grund dafür ist es, dass die N Ausgabesymbole vorab festgelegt werden und die gleichen N Ausgabesymbole darstellen, die von jedem Sender bei jedem Senden der Symbole übermittelt werden, sowie die gleichen N Symbole, die von einem Empfänger empfangen werden. Unter der Annahme von zum Beispiel N = 1500, K = 1000 empfängt ein Empfänger 900 Symbole von einem Satelliten, bevor der Satellit über den Horizont eintaucht. Sofern die Satelliten nicht koordiniert und synchronisiert sind, sind die von dem Empfänger von dem nächsten Satelliten empfangenen Tornado-Codesymbole unter Umständen nicht additiv, da der nächste Satellit die gleichen N Symbole sendet, was wahrscheinlich dazu führt, dass der Empfänger Kopien zahlreicher Symbole der bereits empfangenen 900 Symbole empfängt, bevor er die zur Wiederherstellung der Eingabedatei erforderlichen 100 neuen Symbole empfängt.
  • Verlangt wird somit ein einfacher Löschcode, der zur Implementierung ohne große Rechenleistung und ohne großen Speicherbedarf an dem Sender oder Empfänger auskommt und der dazu verwendet werden kann, eine Datei in einem System mit einem oder mehreren Sendern und/oder einem oder mehreren Empfängern effizient verteilt werden kann, ohne dass unbedingt eine Koordination zwischen Sendern und Empfängern erforderlich ist.
  • Zusammenfassung der Erfindung
  • Vorgesehen ist gemäß der vorliegenden Erfindung ein Verfahren gemäß dem gegenständlichen Anspruch 1.
  • In einem Ausführungsbeispiel eines erfindungsgemäßen Kommunikationssystems verwendet ein Codierer eine Dateneingabedatei und einen Schlüssel zur Erzeugung eines Ausgabesymbols, wobei es sich bei der Eingabedatei um eine geordnete Mehrzahl von Eingabesymbolen handelt, die jeweils aus einem Eingabealphabet ausgewählt werden, wobei der Schlüssel aus einem Schlüsselalphabet ausgewählt wird, und wobei das Ausgabesymbol aus einem Ausgabealphabet ausgewählt wird. Ein Ausgabesymbol mit einem Schlüssel I wird durch Bestimmung einer Gewichtung W(I) für das zu erzeugende Ausgabesymbol erzeugt, wobei es sich bei den Gewichtungen W um positive ganze Zahlen handelt, die über eine Mehrzahl von Schlüsseln zwischen mindestens zwei Werten variieren, wobei W(I) der dem Ausgabesymbol zugeordneten Eingabesymbolen gemäß einer Funktion von I ausgewählt wird, und wobei der Wert B(I) des Ausgabesymbols aus einer vorbestimmten Wertefunktion F(I) der ausgewählten Eingabesymbole W(I) erzeugt wird. Der Codierer kann einmal oder mehrere Male ausgewählt werden, jedes Mal mit einem anderen Schlüssel, und wobei dabei jedes Mal ein Ausgabesymbol erzeugt wird. Die Ausgabesymbole werden allgemein unabhängig voneinander erzeugt, und wobei bei Bedarf eine unbegrenzte Anzahl (abhängig von der Auflösung von I) erzeugt werden kann.
  • Bei einem erfindungsgemäßen Decodierer handelt es sich bei den von einem Empfänger empfangenen Ausgabesymbolen um von einem Sender übermittelte Ausgabesymbole, wobei der Sender die Ausgabesymbole auf der Basis einer Codierung einer Eingabedatei erzeugt hat. Da Ausgabesymbole bei der Übertragung verloren gehen können, arbeitet der Decodierer auch dann zweckmäßig, wenn er nur einen willkürlichen Teil der übermittelten Ausgabesymbole empfängt. Die Anzahl der zur Decodierung erforderlichen Ausgabesymbole ist etwas größer oder gleich der Anzahl der die Datei umfassenden Eingabesymbole, wobei angenommen wird, dass die Eingabesymbole und die Ausgabesymbole die gleiche Anzahl von Datenbits darstellen.
  • In einem erfindungsgemäßen Decodierungsverfahren werden für jedes empfangene Ausgabesymbol die folgenden Schritte ausgeführt: 1) Identifikation des Schlüssels I des empfangenen Ausgabesymbols; 2) Identifikation des empfangenen Ausgabesymbolwerts B(I) für das Ausgabesymbol; 3) Bestimmung der Gewichtung W(I) des Ausgabesymbols; 4) Bestimmung der Positionen für die W(I) zugeordneten Eingabesymbole, die dem Ausgabesymbol zugeordnet sind; und 5) Speichern von B(I) in einer Ausgabesymboltabelle gemeinsam mit der Gewichtung W(I) und den Positionen der zugeordneten Eingabesymbole. Der folgende Prozess wird danach wiederholt angewandt, bis keine ungenutzten Ausgabesymbole mit einer Gewichtung von Eins mehr vorhanden sind: 1) für jedes gespeicherte Ausgabesymbol mit einer Gewichtung von Eins, das auch als "verbrauchtes" Ausgabesymbol gekennzeichnet ist, wird auf der Basis des Schlüssels I die Position J des eindeutigen verbleibenden, nicht wiederhergestellten und dem Ausgabesymbol zugeordneten Eingabesymbols berechnet; 2) der Wert des Eingabesymbols J wird aus dem Ausgabesymbol berechnet; 3) Identifikation der Ausgabesymbole in der Ausgabesymboltabelle, die ein zugeordnetes Eingabesymbol J aufweisen; 4) Neuberechnung der Werte B für die identifizierten Ausgabesymbole, so dass diese von dem Eingabesymbol J unabhängig sind; 5) Herabsetzen der Gewichtungen dieser identifizierten Ausgabesymbole um Eins; und 6) Bezeichnen des Eingabesymbols J als wiederhergestellt und des Ausgabesymbols mit dem Schlüssel I als verbraucht. Dieser Prozess wird solange wiederholt, bis der geordnete Satz der Eingabesymbole wiederhergestellt worden ist, d. h. bis die gesamte Eingabedatei vollständig wiederhergestellt worden ist.
  • Ein Vorteil der vorliegenden Erfindung ist es, dass es nicht erforderlich ist, dass der Empfänger an einer bestimmten Stelle bzw. an einem bestimmten Punkt er Übertragung mit dem Empfang beginnt, und dass es nicht erforderlich ist, dass der Sender nach der Erzeugung einer festgelegten Anzahl von Ausgabesymbolen die Übermittlung unterbricht bzw. anhält, da der Sender für jede gegebene Eingabedatei eine praktisch unbegrenzte Anzahl von Ausgabesymbolen senden kann. Stattdessen kann ein Empfänger dann mit dem Empfang beginnen, wenn er dazu bereit ist, und an jeder Position, an der dies für den Empfänger möglich ist. Ferner kann der Empfänger Pakete in wahlfreier Anordnung verlieren und besitzt dabei trotzdem die Möglichkeit, dass es sich bei dem Großteil der empfangenen Daten um "informative additive" Daten handelt, d. h. um Daten, die den Wiederherstellungsprozess unterstützen und keine Duplikate bereits verfügbarer Informationen darstellen. Die Tatsache, dass unabhängig voneinander erzeugte (häufig zufällige Daten, die zueinander nicht im Verhältnis stehen) Datenströme mit additiven Informationen codiert werden, führt zu zahlreichen Vorteilen, wobei etwa die Erzeugung und der Empfang durch mehrere Quellen möglich ist, eine Widerstandsfähigkeit gegen Löschen gegeben ist sowie unkoordinierte An- und Abmeldungen möglich sind.
  • Die Art und die Vorteile der hierin offenbarten Erfindung werden in Bezug auf die weiteren Ausführungen in der folgenden Beschreibung und die beigefügten Zeichnungen noch besser verständlich.
  • Kurze Beschreibung der Zeichnungen
  • Es zeigen:
  • Fig. 1 ein Blockdiagramm eines Kommunikationssystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung;
  • Fig. 2 ein Blockdiagramm, das den Codierer aus der Abbildung aus Fig. 1 in näheren Einzelheiten darstellt;
  • Fig. 3 eine Darstellung einer Möglichkeit für die Erzeugung eines Ausgabesymbols aus einer Reihe zugeordneter Eingabesymbole;
  • Fig. 4 ein Blockdiagramm eines Basisdecodierers, der in dem Kommunikationssystem aus der Abbildung aus Fig. 1 verwendet werden kann;
  • Fig. 5 ein Blockdiagramm eines alternativen Decodierers;
  • Fig. 6 ein Flussdiagramm eines Verfahrens, das von einem Decodierer, wie etwa dem Decodierer aus der Abbildung aus Fig. 5 zur Wiederherstellung von Eingabesymbolen aus einer Reihe von Ausgabesymbolen verwendet werden kann;
  • Fig. 7 ein Flussdiagramm eines Verfahrens, das von einem Empfangsorganisator, wie etwa dem Empfangsorganisator aus der Abbildung aus Fig. 5 zum Organisieren empfangener Ausgabesymbole verwendet werden kann;
  • Fig. 8(a) ein Flussdiagramm eines Verfahrens, das von einem Wiederherstellungsprozessor, wie etwa dem Wiederherstellungsprozessor aus der Abbildung aus Fig. 5 zur Verarbeitung empfangener Ausgabesymbole verwendet werden kann;
  • die Fig. 8(b)-(c) ein Flussdiagramm von Abschnitten einer Variation des Verfahrens aus der Abbildung aus Fig. 8(a), wobei die Abbildung aus Fig. 8(b) die Schritte darstellt, die in dem Wiederherstellungsprozess ausgeführt werden, einschließlich einer verzögerten Verarbeitung, und wobei die Abbildung aus Fig. 8(c) die verzögerte Verarbeitung darstellt;
  • Fig. 9 ein Blockdiagramm des Assoziators aus Fig. 2 in näheren Einzelheiten;
  • Fig. 10 ein Flussdiagramm eines Verfahrens, das von einem Assoziator, wie etwa dem Assoziator aus der Abbildung aus Fig. 9 zur schnellen Bestimmung einer Zuordnung der Eingabesymbole zu den Ausgabesymbolen verwendet werden kann;
  • Fig. 11 ein Blockdiagramm der Gewichtungs-Auswahleinrichtung aus der Abbildung aus Fig. 2 in näheren Einzelheiten;
  • Fig. 12 ein Flussdiagramm eines Verfahrens, das von einer Gewichtungs-Auswahleinrichtung, wie etwa der Gewichtungs- Auswahleinrichtung aus der Abbildung aus Fig. 11 zur Bestimmung einer Gewichtung für ein bestimmtes Ausgabesymbol verwendet werden kann;
  • Fig. 13 ein Flussdiagramm eines Verfahrens zum Decodieren durch einen Decodierer, der nicht besonders effizient sein muss;
  • Fig. 14 ein Blockdiagramm eines effizienteren Decodierers;
  • Fig. 15 ein Flussdiagramm eines Verfahrens zur Decodierung, das unter Verwendung des Decodierers aus der Abbildung aus Fig. 14 zur effizienteren Decodierung als die vorstehend in Bezug auf die Abbildungen der Fig. 12-13 beschriebenen Decodierung implementiert werden kann;
  • Fig. 16 ein Diagramm, das ein Beispiel für ein Dokument und empfangene Ausgabesymbole für das Decodierungsverfahren aus Fig. 15 darstellt;
  • Fig. 17 den Inhalt von Tabellen in einem Decodierer während dem Decodierungsverfahren aus der Abbildung aus Fig. 15;
  • Fig. 18 ein Diagramm des Inhalts einer Gewichtungs- Sortierungstabelle, die in dem in der Abbildung aus Fig. 15 verwendeten Decodierungsverfahren eingesetzt werden kann;
  • Fig. 19 eine Ausführungsliste, die während dem in der Abbildung aus Fig. 15 dargestellten Decodierungsverfahren erzeugt werden kann;
  • Fig. 20 den Fortschritt des Wiederherstellungsverfahrens in Form einer Darstellung der decodierbaren Größe im Vergleich zu der Anzahl der Eingabesymbole, die für eine Idealverteilung wiederhergestellt werden;
  • Fig. 21 den Fortschritt des Wiederherstellungsverfahrens in Form einer Darstellung der decodierbaren Satz- bzw. Reihengröße im Vergleich zu den wiederhergestellten Eingabesymbolen für eine robuste Gewichtungsverteilung;
  • Fig. 22 eine Darstellung eines Punkt-zu-Punkt- Kommunikationssystems zwischen einem Sender und einem Empfänger unter Verwendung eines Codierers und eines Decodierers gemäß der Darstellung in den vorherigen Abbildungen;
  • Fig. 23 eine Darstellung eines Rundsende- Kommunikationssystems zwischen einem Sender und einer Mehrzahl von Empfängern (von denen nur einer abgebildet ist) unter Verwendung eines Codierers und eines Decodierers gemäß der Darstellung in den vorherigen Abbildungen;
  • Fig. 24 eine Darstellung eines Kommunikationssystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung, wobei ein Empfänger Ausgabesymbole von einer Mehrzahl von normalerweise unabhängigen Sendern empfängt; und
  • Fig. 25 eine Darstellung eines Kommunikationssystems gemäß einem Ausführungsbeispiel der vorliegenden Erfindung, wobei eine Mehrzahl von möglichst unabhängigen Empfängern Ausgabesymbole von einer Mehrzahl von normalerweise unabhängigen Sendern empfängt, so dass eine Eingabedatei schneller empfangen wird als wenn nur ein Empfänger und/oder nur ein Sender verwendet wird.
  • Anhang A umfasst den Quellcode eines Programms zur Implementierung einer Gewichtungsverteilung.
  • Beschreibung der bevorzugten Ausführungsbeispiele
  • In den hierin beschriebenen Beispielen wird eine als "Kettenreaktionscodierung" bezeichnete Codierungsmethode beschrieben. Vorab erfolgt eine Erläuterung der Bedeutung und des Umfangs verschiedener im Rahmen der vorliegenden Beschreibung verwendeter Begriffe.
  • Bei einer Kettenreaktionscodierung werden Ausgabesymbole durch den Sender nach Bedarf aus der Eingabedatei erzeugt. Jedes Ausgabesymbol kann unabhängig von der Art und Weise der Erzeugung der anderen Ausgabesymbole erzeugt werden. Zu jedem beliebigen Zeitpunkt kann der Sender die Erzeugung der Ausgabesymbole unterbrechen bzw. abbrechen, und es muss keinerlei Einschränkung gegeben sein, wann der Sender die Erzeugung der Ausgabesymbole unterbricht oder wieder aufnimmt. Die erzeugten Symbole können in der Folge in Pakete platziert und an ihren Bestimmungsort übermittelt werden, wobei jedes Paket ein Ausgabesymbol oder mehrere Ausgabesymbole aufweist.
  • Der hierin verwendete Begriff "Datei" betrifft alle Daten, die an einer oder mehreren Quellen gespeichert und als eine Einheit einem oder mehreren Bestimmungsorten zugestellt werden sollen. Somit sind ein Dokument, ein Bild und eine Datei von einem Dateiserver oder einer Computerspeichervorrichtung alles Beispiele für "Dateien", die zugestellt bzw. übermittelt werden, können. Dateien können eine bekannte Größe (wie etwa ein auf einer Festplatte gespeichertes Bild mit einem Megabyte) oder eine unbekannte Größe aufweisen (wie etwa eine der Ausgabe einer Streaming-Quelle entnommene Datei). In beiden Fällen handelt es sich bei der Datei um eine Folge von Eingabesymbolen, wobei jedes Eingabesymbol eine Position in der Datei und einen Wert aufweist.
  • Bei der Übermittlung bzw. der Übertragung handelt es sich um den Prozess der Datenübertragung von einem oder mehreren Sendern an einen oder mehrere Empfänger über einen Kanal zur Zustellung einer Datei. Wenn ein Sender über einen perfekten Kanal mit einer Mehrzahl von Empfängern verbunden ist, kann es sich bei den empfangenen Daten um eine genaue Kopie der Eingabedatei handeln, da alle Daten korrekt empfangen werden. Hier wird angenommen, dass der Kanal nicht perfekt ist, was für die meisten real existierenden Kanäle gilt, oder es wird angenommen, dass die Daten von mehr als einem Sender stammen, was bei einigen Systemen der Fall ist. Unter den zahlreichen Kanalstörungen sind die Datenlöschung und die Datenunvollständigkeit (die als Sonderfall der Datenlöschung behandelt werden kann) zwei Störungen von besonderem Interesse. Zu einer Datenlöschung kommt es, wenn der Kanal Daten verliert oder fallen lässt. Eine Datenunvollständigkeit tritt auf, wenn ein Empfänger erst dann mit dem Datenempfang beginnt, wenn einige Daten den Empfänger bereits passiert haben, wobei der Empfänger vor Übertragungsende den Datenempfang abbricht, oder wobei der Empfänger den Datenempfang vorübergehend unterbricht und wieder aufnimmt. Als ein Beispiel für eine Datenunvollständigkeit kann ein sich bewegender Satellitensender etwa Daten übermitteln, die eine Eingabedatei darstellen, und wobei er Sender mit der Übertragung beginnt, bevor sich der Empfänger innerhalb des Empfangsbereichs befindet. Sobald sich der Empfänger innerhalb des Empfangsbereichs befindet, können Daten solange empfangen werden, bis der Satellit den Empfangsbereich verlässt, wobei der Empfänger zu diesem Zeitpunkt seine Satellitenempfangsanlage neu ausrichten kann (wobei in diesem Zeitraum keine Daten empfangen werden), um mit dem Empfang der Daten zu der gleichen Datei zu beginnen, die von einem anderen Satelliten gesendet wird, der sich in den Empfangsbereich bewegt hat. Beim Lesen der vorliegenden Beschreibung sollte deutlich werden, dass es sich bei einer Datenunvollständigkeit um einen Sonderfall der Datenlöschung handelt, da der Empfänger die Datenunvollständigkeit (und der Empfänger die gleichen Probleme aufweist) so behandeln kann, als ob sich der Empfänger über die gesamte Zeit innerhalb des Empfangsbereichs befunden hätte, wobei der Kanal sämtliche Daten bis zu dem Zeitpunkt verloren hat, an dem der Empfänger mit dem Datenempfang begonnen hat. Wie dies in Bezug auf die Konstruktion von Kommunikationssystemen bekannt ist, können feststellbare Fehler einfach dadurch mit Löschungen äquivalent sein, indem alle Datenblöcke oder Symbole ausgelassen werden, die feststellbare Fehler aufweisen.
  • Bei einigen Kommunikationssystemen empfängt ein Empfänger Daten, die von einer Mehrzahl von Sendern erzeugt werden oder von einem Sender unter Verwendung mehrerer Verbindungen. Zum Beschleunigen eines Vorgangs zum Herunterladen (Download) kann ein Empfänger gleichzeitig eine Verbindung mit mehr als einem Sender herstellen, um Daten zu der gleichen Datei zu übertragen. Ein weiteres Beispiel ist die Multicast- Übertragung, bei der eine Mehrzahl von Multicast-Datenströmen übermittelt werden kann, so dass Empfänger Verbindungen mit einem oder mehreren dieser Ströme herstellen können, um eine Abstimmung der Gesamtübertragungsrate mit der Bandbreite des Kanals zu erreichen, der sie mit dem Sender verbindet. In allen Fällen gilt es zu gewährleisten, dass sämtliche übermittelte Daten unabhängig von einem Empfänger genutzt werden können, d. h., die Mehrzahl der Quellendaten ist unter den Strömen nicht redundant, und zwar selbst dann nicht, wenn sich die Übertragungsraten für die unterschiedlichen Ströme deutlich unterscheiden und wenn willkürliche Verlustmuster gegeben sind.
  • Im Allgemeinen handelt es sich bei der Übermittlung um den Vorgang des Datentransports von einem Sender zu einem Empfänger über einen Kanal, der Sender und Empfänger miteinander verbindet. Der Kanal kann ein Echtzeitkanal sein, wobei der Kanal die Daten von dem Sender zu dem Empfänger überträgt, wenn der Kanal die Daten erhält. Alternativ kann es sich beim dem Kanal um einen Speicherkanal handeln, der einige oder alle sich im Transit von dem Sender zu dem Empfänger befindenden Daten speichert. Ein Beispiel für die letztgenannte Option ist ein Plattenspeicher oder eine andere Speichervorrichtung. In dem Beispiel dient ein Programm oder eine Vorrichtung, das bzw. die Daten erzeugt als Sender, der Daten an eine Speichervorrichtung übermittelt. Der Empfänger ist das Programm oder die Vorrichtung, das bzw. die die Daten von der Speichervorrichtung liest. Der Mechanismus, den der Sender verwendet, um die Daten auf die Speichervorrichtung zu bekommen, die Speichervorrichtung an sich und die Mechanismen, die der Empfänger verwendet, um die Daten von der Speichervorrichtung zu holen, bilden gemeinsam den Kanal. Wenn die Möglichkeit besteht, dass diese Mechanismen oder die Speichervorrichtung Daten verlieren, so würde dies als Datenlöschung in dem Kanal behandelt.
  • Wenn der Sender und der Empfänger durch eine Datenlöschkanal getrennt sind, so wird es bevorzugt, keine exakte Kopie einer Eingabedatei zu übermitteln, wobei vielmehr von der Eingabedatei erzeugte Daten übermittelt werden, die die Wiederherstellung der Löschungen unterstützen. Ein Codierer ist eine Schaltung, eine Vorrichtung, ein Modul oder ein Codesegment, das eine Aufgabe bearbeitet. Eine Möglichkeit der Betrachtung des Betriebs des Codierers ist es, dass der Codierer aus Eingabesymbolen Ausgabesymbole erzeugt, wobei eine Folge von Eingabesymbolwerten die Eingabedatei darstellt. Jedes Eingabesymbol weist dabei eine Position in der Eingabedatei und einen Wert auf. Ein Decodierer ist eine Schaltung, eine Vorrichtung, ein Modul oder ein Codesegment, das die Eingabesymbole aus den von dem Empfänger empfangenen Ausgabesymbolen wiederherstellt.
  • Die Kettenreaktionscodierung ist nicht auf eine bestimmte Art von Eingabesymbol beschränkt, wobei die Art des Eingabesymbols jedoch häufig durch die Anwendung vorgegeben ist.
  • Kennzeichnenderweise werden die Werte für die Eingabesymbole aus einem Alphabet mit 2M Symbolen für gewisse positive ganze Zahlen von M ausgewählt. In diesen Fällen kann ein Eingabesymbol durch eine Folge von M Datenbits aus der Eingabedatei dargestellt werden. Der Wert von M wird häufig auf der Basis der Einsätze der Anwendung und des Kanals bestimmt. Zum Beispiel kann für einen Internetkanal auf Paketbasis ein Paket mit Nutzlastinformationen mit einer Größe von 1024 Bytes geeignet sein (ein Byte umfasst 8 Bits). In diesem Beispiel wird angenommen, dass jedes Paket ein Ausgabesymbol und 8 Bytes Hilfsinformationen auf weist, wobei eine Größe des Eingabesymbols von M = (1024-8)*8 bzw. 8128 Bits geeignet wäre. In einem weiteren Beispiel verwenden einige Satellitensysteme den MPEG-Paketstandard, wobei die Nutzlastinformationen jedes Pakets 188 Bytes umfassen. In diesem Beispiel wird angenommen, dass jedes Paket ein Ausgabesymbol und 4 Bytes Hilfsinformationen umfasst, wobei eine Symbolgröße von M(188-4)·8 bzw. 1472 Bits geeignet wäre. In einem Allzweck-Kommunikationssystem unter Verwendung der Kettenreaktionscodierung kann es sich bei den anwendungsspezifischen Parametern, wie etwa der Eingabesymbolgröße (d. h. M, die Anzahl der durch ein Eingabesymbol codierten Bits) um durch die Anwendung festgelegte Variablen handeln kann.
  • Jedes Ausgabesymbol weist einen Wert auf. In einem bevorzugten Ausführungsbeispiel, das wir nachstehend berücksichtigen, weist jedes Ausgabesymbol einen Bezeichner auf, der als "Schlüssel" bezeichnet wird. Vorzugsweise kann der Schlüssel für jedes Ausgabesymbol einfach durch den Empfänger bestimmt werden, so dass der Empfänger ein Ausgabesymbol von anderen Ausgabesymbolen unterscheiden kann. Vorzugsweise unterscheidet sich der Schlüssel eines Ausgabesymbols von den Schlüsseln aller anderen Ausgabesymbole. Vorzugsweise weist die Übermittlung so wenig Daten wie möglich auf, so dass ein Empfänger den Schlüssel eines empfangenen Ausgabesymbols bestimmen kann.
  • Bei einer einfachen Form der Verschlüsselung handelt es sich bei der Folge der Schlüssel für konsekutive Ausgabesymbole, die von einem Codierer erzeugt werden, um eine Folge aufeinanderfolgender ganzer Zahlen. In diesem Fall wird jeder Schlüssel als "Folgenummer" bezeichnet. Wenn in jedem übermittelten Paket ein Ausgabesymbolwert gegeben ist, kann die Folgenummer Teil des Pakets sein. Da die Folgenummern kennzeichnenderweise in eine geringe Anzahl von Bytes wie zum Beispiel in 4 Bytes Platz finden, ist der Einschluss der Folgenummern gemeinsam mit dem Ausgabesymbolwert in einigen Systemen eine wirtschaftliche Lösung. Zum Beispiel führt die Verwendung von UDP-Internetpaketen mit jeweils 1024 Bytes mit einer Zuordnung von 4 Bytes in jedem Paket für die Folgenummer zu einem geringen Overhead von lediglich 0,4%.
  • Bei anderen Systemen wird es bevorzugt, einen Schlüssel aus mehr als einem Datenelement zu erzeugen. Zum Beispiel kann ein System einen Empfänger aufweisen, der mehr als einen Datenstrom empfängt, die von der gleichen Eingabedatei von einem oder mehreren Sendern erzeugt werden, wobei es sich bei den übermittelten Daten um eine Paketstrom handelt, wobei die Pakete jeweils ein Ausgabesymbol aufweisen. Wenn alle diese Ströme die gleiche Reihe von Folgenummern als Schlüssel verwenden, so ist es wahrscheinlich, dass der Empfänger Ausgabesymbole mit den gleichen Folgenummern empfängt. Da Ausgabesymbole mit dem gleichen Schlüssel oder in diesem Fall mit den gleichen Folgenummern identische Informationen zu der Eingabedatei aufweisen, wird dadurch der Empfang nutzloser doppelter Daten durch den Empfänger verursacht. In einer derartigen Situation wird somit bevorzugt, dass der Schlüssel einen eindeutigen Strombezeichner umfasst, in Kombination mit einer Folgenummer.
  • Für einen Strom von UDP-Internetpaketen kann der eindeutige Bezeichner eines Datenstroms zum Beispiel die IP-Adresse des Senders und die Port-Nummer aufweisen, die der Sender für die Paketübermittlung verwendet. Da die IP-Adresse des Senders und die Port-Nummer des Stroms Bestandteile des Headers bzw. des Zellkopfes jedes UDP-Pakets sind, ist kein zusätzlicher Platz in jedem Paket erforderlich, um zu gewährleisten, dass diese Bestandteile des Schlüssels für einen Empfänger verfügbar sind. Der Sender muss nur eine Folgenummer in jedes Paket gemeinsam mit dem entsprechenden Ausgabesymbol eingeben, und der Empfänger kann den gesamten Schlüssel eines empfangenen Ausgabesymbols aus der Folgenummer und dem Paket-Header wiederherstellen. Für einen Strom von IP-Multicast-Paketen kann als weiteres Beispiel der eindeutige Bezeichner eines Datenstroms die IP-Multicast-Adresse aufweisen. Da die IP- Multicast-Adresse Bestandteil des Headers jedes IP-Multicast- Pakets ist, gelten die vorstehenden Anmerkungen zu UDP-Paketen auch für diese Situation.
  • Das Keying bzw. die Verschlüsselung durch die Position des Ausgabesymbols wird soweit möglich bevorzugt. Das Positions- Keying eignet sich gut zum Auslesen von Ausgabesymbolen aus einer Speichervorrichtung, wie zum Beispiel einer CD-ROM (Massenspeicher auf ROM-Basis), wobei der Schlüssel eines Ausgabesymbols dessen Position auf der CD-ROM darstellt (d. h. die Spur, plus Sektor, plus Speicherplatz in dem Sektor, etc.). Das Positions-Keying eignet sich auch gut für ein Übermittlungssystem auf Schaltungsbasis, wie etwa ein ATM- System (ATM als Abkürzung für asynchroner Transfermodus), wobei geordnete Datenzellen mit strengen zeitlichen Einschränkungen übermittelt werden. Bei dieser Form der Verschlüsselung kann der Empfänger den Schlüssel eines Ausgabesymbols wieder neu erzeugen, ohne dass Platz für die ausdrückliche Übermittlung des Schlüssels erforderlich ist. Das Positions-Keying setzt natürlich voraus, dass die Positionsinformationen verfügbar und zuverlässig sind.
  • Die Verschlüsselung nach Position kann ferner mit anderen Keying-Methoden kombiniert werden. Zum Beispiel kann ein Paketübermittlungsverfahren berücksichtigt werden, wobei jedes Paket mehr als ein Ausgabesymbol aufweist. In diesem Fall kann der Schlüssel des Ausgabesymbols aus einem eindeutigen Strombezeichner, einer Folgenummer und der Position des Ausgabesymbols in dem Paket konstruiert werden. Da Datenlöschungen allgemein zu einem Verlust der gesamten Pakete führen, empfängt der Empfänger allgemein ein vollständiges Paket. In diesem Fall kann der Empfänger den Schlüssel eines Ausgabesymbols aus dem Header des Pakets (der einen eindeutigen Strombezeichner aufweist), der Folgenummer in dem Paket und der Position des Ausgabesymbols in dem Paket wiederherstellen.
  • Eine weitere Form des Keyings, die für einige Systeme bevorzugt wird, ist das zufällige Keying. In diesen Systemen wird eine Zufallszahl (oder Pseudozufallszahl) erzeugt, die als Schlüssel für jedes Ausgabesymbol verwendet und explizit mit dem Ausgabesymbol übermittelt wird. Eine Eigenschaft der zufälligen Verschlüsselung ist es, dass die Bruchstücke der Schlüssel, welche den gleichen Wert auf weisen, wahrscheinlich sehr gering sind, wobei dies selbst für Schlüssel gilt, die durch verschiedene Sender an verschiedenen physikalischen Stellen erzeugt werden (in der Annahme, dass der Bereich der möglichen Schlüssel ausreichend groß ist). Diese Form der Verschlüsselung kann in einigen Systemen aufgrund ihrer einfachen Implementierung einen Vorteil gegenüber anderen Formen aufweisen.
  • Wie dies vorstehend im Text erläutert worden ist, eignet sich die Kettenreaktionscodierung in Fällen, wenn eine Datenlöschung erwartet wird oder wenn der Empfänger nicht genau übereinstimmend mit dem Anfang und dem Ende der Übermittlung mit dem Empfang beginnt oder diesen beendet. Der letztgenannte Zustand wird als "Datenunvollständigkeit" bezeichnet. Diese Bedingungen beeinträchtigen den Kommunikationsprozess nicht nachteilig, wenn die Kettenreaktionscodierung eingesetzt wird, da die empfangenen Daten der Kettenreaktionscodierung, in hohem Maße unabhängig sind, so dass es sich um additive Informationen handelt. Wenn die meisten zufälligen Ansammlungen von Ausgabesymbolen ausreichend unabhängig sind, um größtenteils informativ additiv zu sein, was bei den hierin beschriebenen Systemen der Kettenreaktionscodierung der Fall ist, kann jede geeignete Anzahl von Paketen für die Wiederherstellung einer Eingabedatei verwendet werden. Wenn Hunderte von Paketen durch eine Bündelstörung verloren gehen, die eine Datenlöschung verursacht, so können zusätzliche hundert Pakete nach der Bündelstörung aufgenommen werden, um den Verlust der gelöschten Pakete zu ersetzen. Wenn Tausende von Paketen verloren gehen, weil ein Empfänger beim Übermittlungsbeginn nicht auf einen Sender abgestimmt gewesen ist, kann der Empfänger einfach diese Tausende von Paketen von jeder anderen Übermittlungsperiode aufnehmen oder sogar von einem anderen Sender. Bei einer Kettenreaktionscodierung ist ein Empfänger nicht auf die Aufnahme einer bestimmten Reihe von Paketen beschränkt, so dass er einige Pakete von einem Sender empfangen, zu einem anderen Sender wechseln, einige Pakete verlieren, den Anfang oder das Ende einer bestimmten Übermittlung verpassen kann und trotzdem in der Lage ist, eine Eingabedatei wiederherzustellen. Die Möglichkeit, sich ohne Koordination zwischen Empfänger und Sender bei einer Übermittlung an- und abzumelden, vereinfacht den Kommunikationsprozess erheblich.
  • Eine Basisimplementierung
  • Die Übermittlung einer Datei unter Verwendung der Kettenreaktionscodierung umfasst das Erzeugen, Bilden oder Extrahieren von Eingabesymbolen aus einer Eingabedatei, die Codierung der Eingabesymbole in ein oder mehrere Ausgabesymbole, wobei jedes Ausgabesymbol auf der Basis des entsprechenden Schlüssels unabhängig von allen anderen Ausgabesymbolen erzeugt wird, und wobei die Ausgabesymbole über einen Kanal an einen oder mehrere Empfänger übermittelt werden. Der Empfang (und die Wiederherstellung) einer Kopie der Eingabedatei unter Verwendung der Kettenreaktionscodierung umfasst den Empfang einer Menge oder einer Teilmenge von Ausgabesymbolen von einem von mehreren Datenströmen sowie das Decodieren der Eingabesymbole aus den Werten und Schlüsseln der empfangenen Ausgabesymbole.
  • Wie dies nachstehend im Text näher beschrieben wird, kann der Decodierer ein Eingabesymbol aus den Werten eines oder mehrerer Ausgabesymbole und möglicherweise aus Informationen über die Werte anderer Eingabesymbole wiederherstellen, die bereits wiederhergestellt worden sind. Somit kann der Decodierer einige Eingabesymbole aus bestimmten Ausgabesymbolen wiederherstellen, wodurch der Decodierer wiederum andere Eingabesymbole aus den decodierten Eingabesymbolen und vorher empfangenen Ausgabesymbolen wiederherstellen kann und so weiter, wodurch eine "Kettenreaktion" der Wiederherstellung von Eingabesymbolen einer Datei bewirkt wird, die an dem Empfänger wiederhergestellt wird.
  • Die Aspekte der vorliegenden Erfindung werden nachstehend in Bezug auf die Abbildungen der Figuren beschrieben.
  • Die Abbildung aus Fig. 1 zeigt ein Blockdiagramm eines Kommunikationssystems 100, das die Kettenreaktionscodierung verwendet. In dem Kommunikationssystem 100 wird eine Eingabedatei 101 oder ein Eingabestrom 105 an einen Eingabesymbolgenerator 110 vorgesehen. Der Eingabesymbolgenerator 110 erzeugt eine Folge von einem oder mehreren Eingabesymbolen (IS(0), IS(1), IS(2), ...) aus der Eingabedatei oder dem Strom, wobei jedes Eingabe symbol einen Wert und eine Position auf weist (in der Abbildung aus Fig. 1 durch ganze Zahlen in Klammern dargestellt). Wie dies bereits vorstehend im Text beschrieben worden ist, handelt es sich bei den möglichen Werten für die Eingabesymbole, d. h. dem Alphabet, kennzeichnenderweise um ein Alphabet mit 2M Symbolen, so dass jedes Eingabesymbol M Bits der Eingabedatei codiert. Der Wert von M wird allgemein durch den Einsatz des Kommunikationssystems 100 bestimmt, wobei ein Allzwecksystem eine Symbolgrößeneingabe für den Eingabesymbolgenerator 110 aufweisen kann, so dass M von Einsatz zu Einsatz verändert werden kann. Die Ausgabe des Eingabesymbolgenerators 100 wird an den Codierer 115 vorgesehen.
  • Der Schlüsselgenerator 120 erzeugt einen Schlüssel für jedes durch den Codierer 115 zu erzeugende Ausgabesymbol. Jeder Schlüssel wird gemäß einem der vorstehend beschriebenen Verfahren oder durch ein beliebiges anderes kompatibles Verfahren erzeugt, das gewährleistet, dass ein großer Bruchteil der für die gleiche Eingabedatei erzeugten Schlüssel eindeutig ist, unabhängig davon, ob diese dadurch oder durch einen anderen Schlüsselgenerator erzeugt werden. Der Schlüsselgenerator 120 kann zum Beispiel eine Kombination aus der Ausgabe eines Zählers 125, eines eindeutigen Strombezeichners 130 und/oder der Ausgabe eines Zufallsgenerators 135 für die Erzeugung jedes Schlüssels verwenden. Die Ausgabe des Schlüsselgenerators 120 wird an den Codierer 115 vorgesehen.
  • Für jeden durch den Schlüsselgenerator 120 erzeugten Schlüssel I erzeugt der Codierer 115 ein Ausgabesymbol mit einem Wert B(I) aus den durch den Eingabesymbolgenerator vorgesehenen Eingabesymbolen. Der Wert jedes Ausgabesymbols wird auf der Basis des entsprechenden Schlüssels und als Funktion eines oder mehrerer Eingabesymbole erzeugt, die hierin als "zugeordnete Eingabesymbole" oder einfach "Assoziatoren" des Ausgabesymbols bezeichnet werden. Die Auswahl der Funktion (die "Wertefunktion") und der Assoziatoren erfolgt gemäß einem nachstehend näher beschriebenen Verfahren. Kennzeichnenderweise jedoch nicht immer ist M für die Eingabesymbole und die Ausgabesymbole identisch, d. h. beide codieren für die gleiche Anzahl von Bits.
  • In einigen Ausführungsbeispielen wird die Anzahl K von Eingabesymbolen von dem Codierer zur Auswahl der Assoziatoren verwendet. Wenn K vorab bekannt ist, wie etwa dann, wenn es sich bei der Eingabe um eine Streaming-Datei handelt, so kann K einfach ein Schätzwert sein. Der Wert von K kann von dem Codierer 115 ferner zur Speicherzuweisung für Eingabesymbole verwendet werden.
  • Der Codierer 115 sieht Ausgabesymbole an ein Sendemodul 140 vor. Dem Sendemodul 140 wird ferner der Schlüssel jedes derartigen Ausgabesymbols von dem Schlüsselgenerator 120 vorgesehen. Das Sendemodul 140 sendet die Ausgabesymbole, und abhängig von dem verwendeten Verschlüsselungsverfahren kann das Sendemodul 140 ferner auch einige Daten über die Schlüssel der übermittelten Ausgabesymbole über einen Kanal 145 an ein Empfangsmodul 150 senden. Für den Kanal 145 wird ein Löschkanal angenommen, wobei dies jedoch keine Voraussetzung für den zweckmäßigen Betrieb des Kommunikationssystems 100 ist. Bei den Modulen 140, 145 und 150 kann es sich um geeignete Hardwarekomponenten, Softwarekomponenten, physikalische Medien oder jede beliebige Kombination dieser handeln, so lange das Sendemodul 140 in der Lage ist, Ausgabesymbole und etwaige erforderliche Daten zu deren Schlüsseln an den Kanal 145 zu übermitteln, und das Empfangsmodul 150 eignet sich zum Empfangen von Symbolen und möglicherweise gewissen Daten zu deren Schlüsseln von dem Kanal 145. Der Wert von K kann, wenn er zur Bestimmung der Assoziatoren verwendet wird, über den Kanal 145 übermittelt werden, oder er kann vorab durch Vereinbarung zwischen dem Codierer 115 und dem Decodierer 155 festgelegt werden.
  • Wie dies bereits vorstehend im Text beschrieben worden ist, kann es sich bei dem Kanal 145 um einen Echtzeitkanal handeln, wie etwa einen Pfad durch das Internet oder eine Broadcast- Verbindung von einem Fernsehsender zu einem Fernsehempfänger oder eine Telefonverbindung von einem Punkt zu einem anderen. Bei dem Kanal 145 kann es sich aber auch um einen Speicherkanal handeln, wie etwa um eine CD-ROM, ein Diskettenlaufwerk, eine Website oder dergleichen. Der Kanal 145 kann auch eine Kombination aus einem Echtzeitkanal und einem Speicherkanal darstellen, wie etwa ein Kanal, der gebildet wird, wenn eine Person eine Eingabedatei über eine Telefonleitung von einem Personal Computer an einen Internet Service Provider (ISP) sendet, wobei die Eingabedatei auf einem Webserver gespeichert und in der Folge über das Internet an einen Empfänger übermittelt wird.
  • Da für den Kanal 145 ein Löschkanal angenommen wird, nimmt das Kommunikationssystem 100 keine Eins-zu-Eins-Korrespodenz zwischen den Ausgabesymbolen an, welche das Empfangsmodul 150 verlassen, und den Ausgabesymbolen, die das Sendemodul 140 erreichen. Wenn der Kanal 145 tatsächlich ein Paketnetzwerk umfasst, ist das Kommunikationssystem 100 unter Umständen nicht in der Lage anzunehmen, dass die relative Reihenfolge von beliebigen zwei oder mehr Paketen beim Verlauf durch den Kanal 145 aufrechterhalten bleibt. Somit wird der Schlüssel der Ausgabesymbole unter Verwendung von einem oder mehreren der vorstehenden Verschlüsselungsverfahren bestimmt und nicht unbedingt durch die Reihenfolge, in der die Ausgabesymbole das Empfangsmodul 150 verlassen.
  • Das Empfangsmodul 150 sieht die Ausgabesymbole an einen Decodierer 155 vor, und jedes Datenempfangsmodul 150 empfängt die Schlüssel der Ausgabesymbole, die an eine Schlüsselwiederherstellungseinrichtung 160 vorgesehen werden. Die Schlüssel-Wiederherstellungseinrichtung 160 stellt die Schlüssel für die empfangenen Ausgabesymbole wieder her und sieht diese Schlüssel an einen Decodierer 155 vor. Der Decodierer 155 verwendet die durch die Schlüsselwiederherstellungseinrichtung 160 vorgesehenen Schlüssel gemeinsam mit den entsprechenden Ausgabe Symbolen zur Wiederherstellung der Eingabesymbole (erneut IS(0), IS(1), IS(2), ...). Der Decodierer 155 sieht die wiederhergestellten Eingabesymbole an eine Eingabedatei- Wiedervereinigungseinrichtung 165 vor, die eine Kopie 170 der Eingabedatei 101 oder des Eingabestroms 105 erzeugt.
  • Ein Basiscodierer
  • Die Abbildung aus Fig. 2 zeigt ein Blockdiagramm eines Ausführungsbeispiels des Codierers 115 aus der Abbildung aus Fig. 1. Das Blockdiagramm aus Fig. 2 wird nachstehend in Bezug auf die Abbildung aus Fig. 3 beschrieben, bei der es sich um ein Diagramm handelt, das das logische Äquivalent eines Teils der Verarbeitung darstellt, die durch den Codierer aus Fig. 2 ausgeführt wird.
  • Dem Codierer 115 werden Eingabesymbole und ein Schlüssel für jedes zu erzeugende Ausgabesymbol vorgesehen. Gemäß der Abbildung werden K Eingabe Symbole in einem Eingabesymbolpuffer 205 gespeichert. Der Schlüssel I (vorgesehen durch den Schlüsselgenerator 120 aus Fig. 1) wird in eine Wertefunktion-Auswahleinrichtung 210, eine Gewichtungs- Auswahleinrichtung 215 und einen Assoziator 220 eingegeben. Die Anzahl der Eingabesymbole K wird ferner an diese drei Komponenten 210, 215 und 220 vorgesehen. Ein Rechner 225 ist so gekoppelt, dass er Ausgaben von der Wertefunktions- Auswahleinrichtung 210, der Gewichtungs-Auswahleinrichtung 215, dem Assoziator 220 und dem Eingabesymbolpuffer 205 empfängt, und weist einen Ausgang für die Ausgabesymbolwerte auf. Hiermit wird festgestellt, dass auch andere äquivalente Anordnungen zu den Elementen aus der Abbildung aus Fig. 2 verwendet werden können, und dass es sich hierbei nur um ein Beispiel für einen erfindungsgemäßen Codierer handelt.
  • Im Betrieb werden K Eingabesymbole empfangen und in dem Eingabesymbolpuffer 205 gespeichert. Wie dies bereits vorstehend im Text erläutert worden ist, weist jedes Eingabesymbol eine Position (d. h. die ursprüngliche Position in der Eingabedatei) und einen Wert auf. Die Eingabesymbole müssen in dem Eingabesymbolpuffer 205 nicht in der entsprechenden Reihenfolge gespeichert werden, solange die Position der gespeicherten Eingabesymbole bestimmt werden kann.
  • Unter Verwendung des Schlüssels I und der Anzahl der Eingabesymbole K bestimmt die Gewichtungs-Auswahleinrichtung 215 die Anzahl W(I) der Eingabesymbole, die "Assoziatoren" des Ausgabesymbols mit dem Schlüssel I darstellen. Unter Verwendung des Schlüssels I, der Gewichtung W(I) und der Anzahl der Eingabesymbole K bestimmt der Assoziator 220 die Liste AL(I) der Positionen der Eingabesymbole, die dem Ausgabesymbol zugeordnet sind. Hiermit wird festgestellt, dass W(I) nicht getrennt oder explizit berechnet werden muss, wenn der Assoziator 220 AL(I) erzeugen kann, ohne dass W(I) vorab bekannt ist. Nachdem AL(I) erzeugt worden ist, kann W(I) einfach bestimmt werden, da es sich dabei um die Anzahl der Assoziatoren in AL(I) handelt.
  • Sobald I, W(I) und AL(I) bekannt sind, wird der Wert B(I) des Ausgabesymbols auf der Basis der Wertefunktion F(I) durch den Rechner 225 berechnet. Eine Eigenschaft einer geeigneten Wertefunktion ist es, dass sie die Bestimmung des Wertes eines Assoziators in AL(I) aus dem Ausgabesymbolwert B(I) und aus den Werten für die anderen Assoziatoren W(I)-1 in AL(I) ermöglicht. In diesem Schritt handelt es sich bei einer bevorzugten Wertefunktion um eine exklusive ODER-Wertefunktion (XOR), da diese Funktion diese Eigenschaft erfüllt, wobei sich diese leicht berechnen und umkehren lässt. Stattdessen können aber auch andere geeignete Wertefunktionen verwendet werden.
  • Die etwaig verwendete Wertefunktions-Auswahleinrichtung 210 bestimmt eine Wertefunktion F(I) aus dem Schlüssel I und aus K. Bei einer Variation handelt es sich bei der Wertefunktion F(I) um die gleiche Wertefunktion F für alle I. Bei dieser Variation ist die Wertefunktions-Auswahleinrichtung 210 nicht erforderlich, und der Rechner 225 kann mit der Wertefunktion F konfiguriert werden. Bei der Wertefunktion kann es sich für alle I zum Beispiel um eine exklusive ODER-Funktion handeln, d. h. der Ausgabesymbolwert ist ein exklusives ODER (XOR) der Werte für alle Assoziatoren.
  • Für jeden Schlüssel I bestimmt die Gewichtungs- Auswahleinrichtung 215 eine Gewichtung W(I) aus I und K. In einer Variation wählt die Gewichtungs-Auswahleinrichtung 215 W(I) unter Verwendung des Schlüssels I aus, um zuerst eine zufällig erscheinende Zahl zu erzeugen, und wobei diese Zahl danach zum Verweis des Wertes von W(I) in einer Verteilungstabelle verwendet wird, die in der Gewichtungs- Auswahleinrichtung 215 gespeichert ist. Nachstehend erfolgt eine genaue Beschreibung der Art und Weise, wie eine Verteilungstabelle erzeugt und auf diese zugegriffen werden kann. Nachdem die Gewichtungs-Auswahleinrichtung 215 W(I) bestimmt hat, wird dieser Wert an den Assoziator 220 und den Rechner 225 vorgesehen.
  • Der Assoziator 220 bestimmt eine Liste AL(I) der Positionen der dem aktuellen Ausgabesymbol zugeordneten W(I) Eingabesymbole. Die Zuordnung basiert auf dem Wert von I, dem Wert von W(I) und K (sofern verfügbar). Nachdem der Assoziator 220 AL(I) bestimmt hat, wird AL(I) an den Rechner 225 vorgesehen. Unter Verwendung der Liste AL(I), der Gewichtung W(I) und entweder der Wertefunktion F(I), die durch die Wertefunktions-Auswahleinrichtung 210 vorgesehen wird, oder einer vorausgewählten Wertefunktion F, greift der Rechner 225 auf die W(I) Eingabesymbole zu, die im Verhältnis zu AL(I) in dem Eingabesymbolpuffer 205 stehen, um den Wert B(I) für das aktuelle Ausgabesymbol zu berechnen. Nachstehend ist ein Beispiel für einen Ablauf zur Berechnung von AL(I) aufgeführt, wobei jedoch auch ein anderes geeignetes Verfahren verwendet werden kann. Vorzugsweise bietet die Prozedur jedem Eingabesymbol ungefähr grob die gleiche Möglichkeit als Assoziator für ein bestimmtes Ausgabesymbol ausgewählt zu werden, und wobei die Auswahl in einer Art und Weise erfolgt, so dass der Decodierer eine Replikation vornehmen kann, wenn AL(I) nicht bereits für den Decodierer verfügbar ist.
  • Der Codierer 115 gibt daraufhin B(I) aus. Dies führt dazu, dass der Codierer 115 die in der Abbildung aus Fig. 3 dargestellte Handlung ausführt, das heißt die Erzeugung eines Ausgabesymbolwerts B(I) als Wertefunktion ausgewählter Eingabesymbole. In dem dargestellten Beispiel handelt es sich bei der Wertefunktion um ein XOR-Funktion, wobei die Gewichtung W(I) des Ausgabesymbols gleich 3 ist, und wobei die zugeordneten Eingabesymbole (die Assoziatoren) an den Positionen 0, 2 und 3 gegeben sind und die entsprechenden Werte IS(0), IS(2) und IS(3) aufweisen. Somit wird das Ausgabesymbol für den Wert von I wie folgt berechnet:
  • B(I) = IS(0) XOR IS(2) XOR IS(3).
  • Die erzeugten Ausgabesymbole werden danach gemäß der vorstehenden Beschreibung gesendet und empfangen. Hierin wird angenommen, dass einige der Ausgabesymbole verloren gegangen oder die Reihenfolge verlassen haben oder von einem oder mehr Codierern erzeugt worden sind. Es wird jedoch auch angenommen, dass die empfangenen Ausgabesymbole in Verbindung mit einer Anzeige ihres Schlüssels empfangen worden sind und mit einer gewissen Gewissheit, dass ihre Werte B(I) korrekt sind. Gemäß der Abbildung aus Fig. 1 werden die empfangenen Ausgabesymbole gemeinsam mit ihren entsprechenden, aus der Anzeige durch den Schlüsselgenerator 160 wiederhergestellten Schlüssel sowie der Wert von K in den Decodierer 155 eingegeben.
  • Die Anzahl der in einem Eingabe symbol codierten Bits M (d. h. die Größe) ist abhängig von der Anwendung. Die Größe eines Ausgabesymbols ist ebenfalls von der Anwendung abhängig, wobei sie aber auch von dem Kanal abhängig sein kann. Wenn es sich bei der kennzeichnenden Eingabedatei zum Beispiel um eine Datei mit mehreren Megabyte handelt, kann die Eingabedatei in Tausende, Zehntausende oder Hunderttausende von Eingabesymbolen geteilt werden, wobei jedes Eingabesymbol Bytes im einstelligen, zweistelligen, dreistelligen oder vierstelligen Bereich codiert.
  • In einigen Fällen kann der Codierungsprozess vereinfacht werden, wenn die Ausgabesymbolwerte und die Eingabesymbolwerte die gleiche Größe aufweisen (d. h. sie können durch die gleiche Anzahl von Bits dargestellt oder aus dem gleichen Alphabet ausgewählt werden). Wenn dies der Fall ist, ist die Größe des Eingabesymbolwerts begrenzt, wenn die Größe des Ausgabesymbolwerts begrenzt ist, so dass für den Fall, wie etwa dann, wenn es gewünscht wird, die Ausgabesymbole in Paketen zu platzieren, wobei jedes Ausgabesymbol in ein Paket mit begrenzter Größe passen muss. Wenn bestimmte Daten zu dem Schlüssel übermittelt werden müssen, um den Schlüssel an dem Empfänger wiederherzustellen, so ist das Ausgabesymbol vorzugsweise ausreichend klein, so dass der Wert und die Daten zu dem Schlüssel in einem Paket Platz finden.
  • Wie dies bereits vorstehend im Text beschrieben worden ist sind die Positionen der Eingabesymbole kennzeichnenderweise aufeinanderfolgend, wobei die Schlüssel in zahlreichen Anwendungen jedoch alles andere als aufeinanderfolgend sind. Wenn eine Eingabedatei zum Beispiel in 60.000 Eingabesymbole unterteilt ist, so reichen die Positionen der Eingabesymbole von 0 bis 59.999, wobei bei einer der vorstehend genannten Implementierungen jeder Schlüssel unabhängig als wahlfreie 32- Bit-Ziffer ausgewählt werden kann, und wobei die Ausgabesymbole fortlaufend erzeugt und übermittelt werden können, bis der Sender angehalten wird. Wie dies hierin dargestellt ist, ermöglicht die Kettenreaktionscodierung die Wiederherstellung der Eingabedatei mit 60.000 Eingabesymbolen aus einer ausreichend großen Sammlung (60.000 + eine gewisse Erhöhung von A) von Ausgabesymbolen, und zwar unabhängig davon, an welcher Stelle in der Ausgabefolge die Ausgabesymbole entnommen worden sind.
  • Ein Basisdecodierer
  • Die Abbildung aus Fig. 4 zeigt ein Ausführungsbeispiel des Decodierers 155 in näheren Einzelheiten, der mit dem Codierer 115 aus Fig. 2 vieles gemeinsam hat. Der Decodierer 155 umfasst eine Wertefunktions-Auswahleinrichtung 210, eine Gewichtungs-Auswahleinrichtung 215, einen Assoziator 220, einen Ausgabesymbolpuffer 405, eine Reduzierungseinrichtung 415, eine Wiederherstellungseinrichtung 420 und einen Wiederherstellungspuffer 425. Ebenso wie bei dem Codierer sind die Wertefunktions-Auswahleinrichtung 210 und der in dem Ausgabesymbolpuffer 405 zum Speichern der Beschreibung der Wertefunktion zugewiesene Speicherplatz optional und können weggelassen werden, wenn die Wertefunktion für alle Ausgabesymbole gleich ist. Verschiedene Einträge in den Wiederherstellungspuffer 425 sind dargestellt, wobei einige Eingabesymbole wiederhergestellt wurden und andere noch unbekannt sind. In der Abbildung aus Fig. 4 wurden zum Beispiel die Eingabesymbole 0, 2, 5 und 6 wiederhergestellt, während die Eingabe Symbole an den Positionen 1, 3 und 4 noch wiederhergestellt werden müssen.
  • Im Betrieb führt der Decodierer 155 für jedes empfangene Ausgabesymbol mit dem Schlüssel I und dem Wert B(I) folgendes durch. Der Schlüssel I wird an die Wertefunktions- Auswahleinrichtung 210, die Gewichtungs-Auswahleinrichtung 215 und den Assoziator 220 vorgesehen. Unter Verwendung von K und dem Schlüssel I bestimmt die Gewichtungs-Auswahleinrichtung 215 die Gewichtung W(I). Unter Verwendung von K, dem Schlüssel I und W(I) erzeugt der Assoziator 220 eine Liste AL(I) von W(I) Positionen der Eingabesymbole, die dem Ausgabesymbol zugeordnet sind. Unter Verwendung von K und I wählt die Wertefunktions-Auswahleinrichtung 210 optional die Wertefunktion F(I) aus. Danach werden I, B(I), W(I) und AL(I) sowie optional F(I) in einer Reihe des Ausgabesymbolpuffers 405 gespeichert. Die Wertefunktions-Auswahleinrichtung 210, die Gewichtungs-Auswahleinrichtung 215 und der Assoziator 220 arbeiten für den Decodierer 155 ebenso wie für den Codierer 115. Im Besonderen sind die Wertefunktion F(I), die Gewichtung W(I) und die Liste AL(I), die durch die Wertefunktions- Auswahleinrichtung 210, die Gewichtungs-Auswahleinrichtung 215 und den Assoziator 220 aus Fig. 5 erzeugt werden, für den gleichen Schlüssel I mit den entsprechenden Bestandteilen aus der Abbildung aus Fig. 4 identisch. Wenn K von Eingabedatei zu Eingabedatei unterschiedlich ist, so kann K auf jede beliebige herkömmliche Art und Weise von dem Codierer zu dem Decodierer übermittelt werden, wie etwa durch Einschluss in den Nachrichtenvorsatz.
  • Die Wiederherstellungseinrichtung 420 tastet den Ausgabesymbolpuffer 405 ab und sucht nach dort gespeicherten Ausgabesymbolen, die eine Gewichtung von Eins aufweisen, d. h. W(I) = 1 und AL(I) führt die Position nur eines Assoziierten auf. Die Symbole werden hierin als Elemente einer "decodierbaren Menge" bezeichnet. Für Wertefunktionen mit den vorstehend beschriebenen Eigenschaften befinden sich Ausgabesymbole mit einer Gewichtung von Eins in der decodierbaren Menge, da ein Wert eines Eingabesymbols aus dem Ausgabesymbol bestimmt werden kann. Wenn natürlich eine Wertefunktion verwendet wird, die eine Decodierung von Eingabesymbolen bei einem anderen Zustand als mit einer Gewichtung von Eins ermöglicht, so wird dieser Zustand dazu eingesetzt, zu bestimmen, ob sich ein Ausgabesymbol in der decodierbaren Menge befindet. Zur Verdeutlichung wird in den hier beschriebenen Beispielen davon ausgegangen, dass es sich bei der decodierbaren Menge um die Ausgabesymbole mit einer Gewichtung von Eins handelt, und wobei Erweiterungen dieser Beispiele auf andere Zustände mit decodierbarer Wertefunktion aus der vorliegenden Beschreibung deutlich werden.
  • Wenn die Wiederherstellungseinrichtung 420 ein Ausgabesymbol findet, das sich in der decodierbaren Menge befindet, werden der Wert B(I) des Ausgabesymbols und optional die Wertefunktion F(I) zur Wiederherstellung des in AL(I) aufgeführten Eingabesymbols verwendet, und das wiederhergestellte Eingabesymbol wird an der entsprechenden Position für das Eingabesymbol in dem Wiederherstellungspuffer 425 platziert. Wenn das angezeigte Eingabesymbol bereits wiederhergestellt worden ist, kann die Wiederherstellungseinrichtung 420 das neu wiederhergestellte Eingabesymbol fallen lassen, das vorhandene wiederhergestellte Eingabesymbol überschreiben oder die beiden vergleichen und eine Fehlermeldung ausgeben, wenn sich die beiden unterscheiden. Wenn es sich bei der Wertefunktion um eine XOR- Funktion aller Assoziatoren handelt, stellt der Eingabe symbolwert einfach den Ausgabesymbolwert dar. Die Wiederherstellungseinrichtung 420 stellt somit Eingabesymbole wieder her, allerdings nur aus Ausgabesymbolen in der decodierbaren Menge. Nachdem ein Ausgabesymbol aus der decodierbaren Menge zur Wiederherstellung eines Eingabesymbols verwendet worden ist, kann es gelöscht werden, um Platz in dem Ausgabesymbolpuffer 405 zu sparen. Das Löschen des "verbrauchten" bzw. "benutzten" Ausgabesymbols gewährleistet ferner, dass die Wiederherstellungseinrichtung 420 dieses Ausgabesymbol nicht wiederholt besucht.
  • Zu Beginn wartet die Wiederherstellungseinrichtung 420, bis mindestens ein Ausgabesymbol empfangen worden ist, das ein Element der decodierbaren Menge darstellt. Sobald dieses eine Ausgabesymbol verwendet worden ist, ist die decodierbare Menge erneut leer, mit Ausnahme der Tatsache, dass ein anderes Ausgabesymbol eine Funktion nur dieses eines wiederhergestellten Eingabesymbols und eines anderen Eingabesymbols darstellen kann. Somit kann die Wiederherstellung eines Eingabesymbols aus einem Element der decodierbaren Menge bewirken, dass andere Ausgabesymbole der decodierbaren Menge hinzugefügt werden. Das Verfahren der Reduzierung von Ausgabesymbolen, um diese der decodierbaren Menge hinzuzufügen, wird durch die Reduzierungseinrichtung 415 durchgeführt.
  • Die Reduzierungseinrichtung 415 tastet den Ausgabesymbolpuffer 405 und den Wiederherstellungspuffer 425 ab, um Ausgabesymbole zu finden, welche die Listen AL(I) aufweisen, welche die Positionen der Eingabesymbole aufführen, die wiederhergestellt worden sind. Wenn die Reduzierungseinrichtung 415 ein derartiges "reduzierbares" Ausgabesymbol mit dem Schlüssel I findet, erhält die Reduzierungseinrichtung 415 den Wert IS(R) eines wiederhergestellten Eingabesymbols an der Position R und modifiziert B(I), W(I) und AL(I) wie folgt:
  • B(I) wird auf B(I) XOR IS(R) zurückgesetzt;
  • W(I) wird auf W(I) - 1 zurückgesetzt;
  • AL(I) wird auf AL(I) exklusive R zurückgesetzt.
  • In den vorstehenden Gleichungen wird angenommen, dass die Wertefunktion eine XOR-Funktion aller zugeordneten Werte dargestellt hat. Hiermit wird festgestellt, dass XOR dessen eigene Umkehrfunktion darstellt - wenn dies nicht der Fall wäre und eine andere Wertefunktion ursprünglich zur Berechnung des Ausgabesymbols verwendet worden wäre, so würde die Umkehrfunktion dieser Wertefunktion an dieser Stelle von der Reduzierungseinrichtung 415 verwendet. Hiermit sollte deutlich werden, dass für den Fall, dass die Werte für mehr als einen Assoziator bekannt sind, das Äquivalent der vorstehenden Gleichungen so berechnet werden kann, dass B(I) nur von etwaig bekannten zugeordneten Werten abhängig ist (und wobei W(I) und L(I) entsprechend angepasst werden).
  • Durch die Handlung der Reduzierungseinrichtung 415 werden die Gewichtungen der Ausgabesymbole in dem Ausgabesymbolpuffer 405 reduziert. Wenn die Gewichtung eines Ausgabesymbols auf Eins reduziert wird (oder ein anderer decodierbarer Zustand für andere Wertefunktionen auftritt), so wird das Ausgabesymbol ein Element der decodierbaren Menge, das in der Folge von der Wiederherstellungseinrichtung 420 bearbeitet werden kann. Wenn in der Praxis eine ausreichende Anzahl von Ausgabesymbolen empfangen worden ist, erzeugen die Reduzierungseinrichtung 415 und die Wiederherstellungseinrichtung 420 eine Kettenreaktionscodierung, wobei die Wiederherstellungseinrichtung 420 die decodierbare Menge so decodiert, dass mehr Eingabesymbole wiederhergestellt werden, wobei die Reduzierungseinrichtung 415 die neu wiederhergestellten Eingabesymbole verwendet, um mehr Ausgabesymbole zu reduzieren, so dass diese der decodierbaren Menge hinzugefügt werden und so weiter, bis alle Eingabesymbole aus der Eingabedatei wiederhergestellt worden sind.
  • Der Decodierer aus der Abbildung aus Fig. 4 stellt Eingabesymbole auf direktem Weg wieder her, ohne den Speicher, die Rechenzyklen oder die Übertragungszeit im größeren Umfang zu berücksichtigen. Wenn der Decodiererspeicher, die Decodierzeit oder die Übertragungszeit (welche die Anzahl der empfangenen Ausgabesymbole beschränkt) begrenzt sind, kann der Decodierer optimiert werden, so dass die begrenzten Ressourcen besser genutzt werden.
  • Ein effizienterer Decodierer
  • Die Abbildung aus Fig. 5 zeigt ein bevorzugtes Ausführungsbeispiel einer effizienteren Implementierung eines Decodierers 500 in näheren Einzelheiten. In diesem Fall wird eine XOR-Funktion für die Wertefunktion angenommen. Ähnliche Implementierungen gelten für andere Wertefunktionen als eine XOR-Funktion. In Bezug auf die Abbildung aus Fig. 5 umfasst der Decodierer 500 eine Ausgabesymbol-Datenstruktur 505 (nachstehend OSDS 505, eine Eingabesymbol-Datenstruktur (nachstehend ISDS 510), einen decodierbaren Mengenstapel 515 (nachstehend DSS 515), einen Empfangsorganisator 520 und einen Wiederherstellungsprozessor 525.
  • OSDS 505 ist eine Tabelle, die Informationen zu Ausgabesymbolen speichert, wobei die Reihe R der OSDS 505 Informationen über das R-te empfangene Ausgabesymbol speichert. Ein variables R verfolgt die Anzahl der empfangenen Ausgabesymbole und wird auf Null initialisiert. OSDS 505 speichert die Felder KEY (Schlüssel), VALUE (Wert), WEIGHT (Gewichtung) und XOR_POS für jede Reihe, wobei die Felder als in Spalten geordnet dargestellt sind. Das Feld KEY speichert den Schlüssel des Ausgabesymbols. Das Feld VALUE speichert den Ausgabesymbolwert, der während der Verarbeitung aktualisiert wird. Alle Ausgabesymbole, die letztendlich zur Wiederherstellung eines Eingabesymbols verwendet werden, unterliegen letztendlich einer Modifikation ihres Werts (VALUE) auf den wiederhergestellten Eingabesymbolwert. Das Feld WEIGHT speichert die ursprüngliche Gewichtung des Ausgabesymbols. Die Gewichtung (WEIGHT) eines Ausgabesymbols wird im Laufe der Zeit reduziert, bis sie Eins wird, und wobei sie danach zur Wiederherstellung eines Eingabesymbols verwendet werden kann. Das Feld XOR_POS speichert anfangs die XOR-Funktion für alle Positionen der Assoziatoren des Ausgabesymbols. Wenn die Gewichtung (WEIGHT) eines Ausgabesymbols Eins wird, so nimmt XOR_POS des Ausgabesymbols die Position des einen verbleibenden Assoziators an.
  • ISDS 510 ist eine Tabelle, die Informationen zu Eingabesymbolen speichert, wobei die Reihe P Informationen zu dem Eingabesymbol an der Position P speichert. Für jede Reihe weist ISDS 510 einen Speicher für ein Feld REC ROW auf, das letztendlich die Reihennummer in der OSDS 505 des Ausgabesymbols annimmt, das zur Wiederherstellung des Eingabesymbols verwendet wird, und mit einem Feld REC IND, das ursprünglich auf ein "Nein" für alle Werte initialisiert ist und anzeigt, ob Eingabesymbole wiederhergestellt worden sind oder nicht, sowie mit einem Feld RL. Wenn ein Eingabesymbol wiederhergestellt wird, wechselt REC_IND des Eingabesymbols auf "Ja". Die Spalte RL ist mit den Werten "leere Liste" initialisiert. Wenn Ausgabesymbole empfangen werden, die als Assoziator ein Eingabesymbol aufweisen, so wird die Reihennummer in OSDS 505 des Ausgabesymbols zu der Liste RL für das Eingabesymbol addiert.
  • DSS 515 ist ein Stapel, der Informationen zu der decodierbaren Menge speichert. Eine Variable S verfolgt die Größe der decodierbaren Menge und ist mit Null initialisiert. In DSS 515 speichert die Spalte OUT_ROW die Reihennummern von Ausgabesymbolen in OSDS 505 und die Spalte IN POS speichert die Positionen der Eingabesymbole, die wiederhergestellt werden können, in ISDS 510.
  • In einem Ausführungsbeispiel arbeitet der Decodierer 500 gemäß der folgenden Beschreibung und Darstellung in dem Flussdiagramm aus Fig. 6, wobei die entsprechenden Schritte aus der Abbildung aus Fig. 6 in der Beschreibung des Ablaufs in Klammern angegeben sind. Zuerst wird ISDS 510 gemäß der vorstehenden Beschreibung initialisiert, und R sowie S werden mit Null initialisiert (605). Wenn ein neues Ausgabesymbol empfangen wird (610), d. h. der Schlüssel I und der Ausgabesymbolwert B(I), so werden in der OSDS 505 KEY(R) auf I und VALUE(R) auf B(I) gesetzt (615). Danach wird der Empfangsorganisator 520 aufgerufen, um das empfangene Ausgabesymbol mit dem in der Reihe R der OSDS 505 gespeicherten Schlüssel I zu verarbeiten (620). Dies umfasst das Hinzufügen von Informationen zu OSDS 505 und DSS 515 unter entsprechender Verwendung der in ISDS 510 gespeicherten Informationen, wie dies in dem Flussdiagrarnm aus Fig. 7 dargestellt ist. Danach wird R um eins erhöht (625), so dass das nächste Ausgabesymbol in der nächsten Reihe von OSDS 505 gespeichert wird. Danach wird der Wiederherstellungsprozessor 525 aufgerufen, um Ausgabesymbole in der decodierbaren Menge zu verarbeiten und um die neuen Ausgabesymbole der decodierbaren Menge hinzuzufügen (630). Dies umfasst das Hinzufügen und Löschen aus der in DSS 515 gespeicherten decodierbaren Menge, die entsprechende Verwendung und Modifikation von Abschnitten der ISDS 510 und OSDS 505, wie dies in dem Flussdiagramm aus den Abbildungen der Fig. 8(a) und/oder 8(b) dargestellt ist. Der Decodierer 500 verfolgt die Anzahl der wiederhergestellten Eingabesymbole, und wenn diese Anzahl K erreicht, d. h. alle Eingabesymbole wiederhergestellt worden sind, so schaltet der Decodierer 500 erfolgreich ab, wobei er ansonsten zu dem Schritt 610 zurückspringt, um das nächste Ausgabesymbol zu empfangen, wie dies unter 635 und 640 dargestellt ist.
  • Die Abbildung aus Fig. 7 zeigt ein Flussdiagramm in Bezug auf die Abbildungen aus den Fig. 9-12, wobei das Flussdiagramm den Ablauf der Arbeitsweise des Empfangsorganisators 520 beschreibt. Wenn ein Ausgabesymbol mit dem Wert B(I) und dem Schlüssel I eingeht, führt der Empfangsorganisator 520 in Bezug auf die Abbildung aus Fig. 7 die folgenden Operationen aus. Die Gewichtung W(I) wird aus I und K (705) berechnet und die Liste AL(I) der Positionen von Assoziatoren wird aus I, W(I) und K berechnet (710). Die Abbildungen der Fig. 11 bis 12 zeigen die Einzelheiten einer Berechnung von W(I), und die Abbildungen der Fig. 9-10 zeigen die Einzelheiten der Berechnung von AL(I).
  • In erneutem Bezug au die Abbildung aus Fig. 7 wird der Wert von XL(I) als die XOR-Funktion aller Positionen in AL(I) berechnet (715). Danach wird für jede Position P in der Liste AL(I), wenn das Eingabesymbol P nicht wiederhergestellt wird, d. h., wenn REC_IND(P) = "Nein" in der ISDS 510, so wird R in der ISDS 510 zu der Liste RL(P) hinzugefügt, wobei wenn das Eingabesymbol P wiederhergestellt wird, d. h., wenn in der ISDS 510 REC IND(P) = "Ja" ist, so wird W(I) um Eins herabgesetzt und XL(I) wird auf XL(I) XOR P zurückgesetzt (720). Danach wird XOR_POS(R) auf XL(I) gesetzt und WEIGHT(R) wird in der OSDS 505 auf W(I) gesetzt (725). Danach wird WEIGHT(R) mit Eins verglichen (730). Wenn WEIGHT(R) gleich Eins ist, so wird das Ausgabesymbol zu der decodierbaren Menge addiert, d. h. OUT_ROW() wird auf R gesetzt und IN_POS(S) wird in der DSS 515 auf XOR_POS(R) gesetzt, und der Wert von S wird um Eins erhöht (735). Schließlich erfolgt eine Rücksetzung (740) des Empfangsorganisators.
  • Die Abbildung aus Fig. 8(a), die sich auf die Abbildungen der Fig. 9-12 bezieht, zeigt ein Flussdiagramm, das einen Ablauf für den Wiederherstellungsprozessor 525 beschreibt. In diesem Ablauf prüft der Wiederherstellungsprozessor 525 zuerst, ob die decodierbare Menge leer ist, d. h. ob S = 0 ist, und wenn dies der Fall ist, erfolgt ein unverzüglicher Rücksprung (805, 810). Wenn die decodierbare Menge nicht leer ist, wird S um Eins herabgesetzt (815) und die Reihennummer R' des Ausgabesymbols und die Position P des zugeordneten Eingabesymbols werden aus DSS 515 (820) geladen. Wenn das Eingabesymbol an der Position P bereits wiederhergestellt worden ist, d. h. wenn REC_IND(P) = "Ja" (825), so hält der Wiederherstellungsprozessor 525 die Verarbeitung dieses Elements der decodierbaren Menge an und fährt mit der Verarbeitung des nächsten Elements fort. Ansonsten wird das unter der Reihennummer R' in der OSDS 505 gespeicherte Ausgabesymbol zur Wiederherstellung des Eingabesymbols an der Position P in der ISDS 510 verwendet, und wobei dies durch das Setzen von REC_IND(P) auf "Ja" und von REC_ROW(P) auf R' in der ISDS 510 (830) angezeigt wird. Danach wird der ursprüngliche Schlüssel des Ausgabesymbols KEY(R') aus der OSDS 505 in I geladen (835), um die ursprüngliche Gewichtung W(I) und die ursprüngliche Liste der Assoziatoren AL(I) des Schlüssels (840, 845) zu berechnen.
  • In weiterem Bezug auf die Abbildung aus Fig. 8(a) wird der wiederhergestellte Wert des Eingabesymbols an der Position P als exklusives ODER des Ausgabesymbols und aller Assoziatoren des Ausgabesymbols ausschließlich des Eingabesymbols berechnet. Die Berechnung erfolgt unter Berücksichtigung aller Positionen P', die sich in AL(I) von P unterscheiden. Hiermit wird festgestellt, dass REC_ROW(P') in der ISDS 510 die Reihennummer des wiederhergestellten Werts für das Eingabesymbol an der Position P' speichert, und dass VALUE(REC_ROW(P')) in der OSDS 505 den wiederhergestellten Wert darstellt. Die Berechnung ist unter 850 aus Fig. 8(a) dargestellt, und der wiederhergestellte Wert für das Eingabesymbol an der Position P wird am Ende dieser Berechnung in VALUE(R') = VALUE(REC_ROW(P)) gespeichert.
  • Die Abbildung aus Fig. 8(b) zeigt eine Variation des Verfahrens aus Fig. 8(a). Dabei können anstatt der Durchführung der Schritte 830, 835, 840, 845 und 850 für jedes Ausgabesymbol während dieses verarbeitet wird, die Werte von R' und P in einer Ausführungsfolge zur späteren Verarbeitung gespeichert werden (865). Ein Beispiel für die verzögerte Ausführung der Verarbeitung ist in der Abbildung aus Fig. 8(c) dargestellt, einschließlich der durch die Bezugsziffern 870, 875, 880 und 885 bezeichneten Schritte. Bei dieser Variation wird das Flussdiagramm aus der Abbildung aus Fig. 6 durch Initialisierung von E auf Null in dem Schritt 605 modifiziert. Die verzögerte Verarbeitung der Ausführungsfolge kann nach dem Zeitpunkt der Bestimmung durch den Decodierer erfolgen, dass die empfangenen Symbole zur Decodierung der gesamten Datei ausreichen, wie etwa in Schritt 640, nachdem bekannt ist, dass alle Eingabe Symbole wiederherstellbar sind. In einigen Fällen, im Besonderen bei großen Eingabesymbolen, kann die Ausführung der Folge solange zurückgestellt werden, bis die Eingabedatei oder Teile dieser an dem Empfänger benötigt werden.
  • Für jede Variation, d. h. für die Abbildungen der Fig. 8(a) und 8(b) gilt, dass in dem Schritt 855 die Ausgabesymbole, die weiterhin das Eingabesymbol P als Assoziator aufweisen, so modifiziert werden, dass sie die Wiederherstellung des Eingabesymbols wiedergeben. Die Reihennummern dieser Ausgabesymbole in der OSDS 505 werden in RL(P) gespeichert. Für jede Reihennummer R" in RL(P) wird WEIGHT(R") um eins herabgesetzt und P einer XOR-Funktion in XOR_POS(R") unterzogen, um die Entfernung des Eingabesymbols an der Position P als Assoziator des Ausgabesymbols in der Reihe R" der OSDS 505 wiederzugeben. Wenn diese Modifikation bewirkt, dass das Ausgabesymbol in der Reihe R" der OSDS 505 eine Gewichtung von Eins annimmt, d. h. WEIGHT(R") = 1, so wird dieses Ausgabesymbol durch Festlegen von OUT_ROW(S) auf R", IN_POS(S) auf XOR_POS(R") und Erhöhen von S um Eins addiert. Schließlich wird der zum Speichern der Reihennummern der Ausgabesymbole in der Liste RL(P) verwendete Raum bzw. Platz zurück in einen freien Raum gesetzt (860), und die Verarbeitung fährt mit dem Schritt 805 fort.
  • Implementierung eines Assoziators
  • Die Abbildung von einem Ausgabesymbolschlüssel in zugeordnete Eingabesymbole (d. h. die Bestimmung der Gewichtung W(I) und der Liste AL(I) der Positionen der Assoziatoren für einen Schlüssel I) kann eine Vielzahl von Formen auf weisen. W(I) sollte durch den Codierer und den Decodierer für den gleichen Schlüssel I (entsprechend in dem Sender und in dem Empfänger) mit dem gleichen Wert ausgewählt werden. Ebenso sollte AL(I) so ausgewählt werden, dass Codierer und Decodierer für den gleichen Schlüssel I die gleiche Positionsliste aufweisen. Der Assoziator ist das Element, das AL(I) aus I und normalerweise W(I) und K berechnet bzw. erzeugt.
  • In einem Ausführungsbeispiel werden W(I) und AL(I) auf eine Art und Weise bestimmt, die ein Zufallsverfahren nachstellt. Zur Erfüllung der Anforderung, dass der Codierer und der Decodierer in Bezug auf den gleichen Schlüssel das gleiche Ergebnis liefern, könnte durch den Codierer und den Decodierer mit dem Schlüssel eine Pseudozufallsfolge erzeugt werden. An Stelle einer Pseudozufallsfolge kann zur Erzeugung von W(I) und/oder AL(I) auch eine tatsächlich zufällige Folge verwendet werden. Damit diese aber auch tatsächlich nützlich ist, muss die zur Erzeugung von W(I) und AL(I) verwendete Zufallsfolge dem Empfänger übermittelt werden.
  • In dem Decodierer aus der Abbildung aus Fig. 4 setzt der Ausgabesymbolpuffer 405 die Speicherung der Positionsliste der Assoziatoren jedes Ausgabesymbols voraus, d. h. die Speicherung in der mit AL(I) bezeichneten Spalte. Der effizientere Decodierer aus der Abbildung aus Fig. 5 kann auf diese Speicherung verzichten, da eine Liste der Assoziatoren bei Bedarf neu berechnet wird, wie dies zum Beispiel in den Abbildungen aus den Fig. 9-10 dargestellt ist. Die jeweilige Neuberechnung von Assoziatorenlisten zur Einsparung von Speicherplatz weist nur dann einen Vorteil auf, wenn die Berechnungen bei Bedarf schnell vorgenommen werden können.
  • Die Abbildung aus Fig. 9 zeigt ein bevorzugtes Ausführungsbeispiel des Assoziators 220, das gemäß dem Ablauf aus der Abbildung aus Fig. 10 arbeitet. Der Assoziator kann sowohl in dem Codierer als auch in dem Decodierer eingesetzt werden. Der Speicherplatz für AL(I) an dem Codierer stellt keinen besonders wichtigen Faktor dar, da der Codierer normalerweise nicht mehr als eine AL(I) gleichzeitig speichern muss, allerdings sollte der gleiche Prozess beim Codierer und Decodierer eingesetzt werden, um zu gewährleisten, dass die Werte für AL(I) in beiden Einrichtungen identisch sind.
  • Bei der Eingabe in den Assoziator 220 handelt es sich um einen Schlüssel I, die Anzahl der Eingabesymbole K und eine Gewichtung W(I). Bei der Ausgabe handelt es sich um eine Liste AL(I) der W(I) Positionen der Assoziatoren des Ausgabesymbols mit dem Schlüssel I. Wie dies in der Abbildung aus Fig. 9 dargestellt ist, umfasst der Assoziator eine Tabelle ASSOC_RBITS 905 mit zufälligen Bits und einen Rechner ASSOC_CALC 910. Vor der Erzeugung einer spezifischen Liste AL(I) wird die Größe der Eingabedatei so angepasst, dass die Anzahl der Eingabesymbole einer Primzahl entspricht. Wenn die Eingabedatei somit mit K Eingabesymbolen beginnt, so ist die kleinste Primzahl P, die größer oder gleich K ist, identifiziert. Wenn P größer ist als K, so werden der Eingabedatei P-K leere (z. B. auf Null gesetzte) Eingabesymbole hinzugefügt und K auf P gesetzt. Für die modifizierte Eingabedatei werden die Positionslisten AL(I) der Assoziatoren gemäß den Abbildungen aus den Fig. 9 und 10 berechnet.
  • In dem vorliegenden Ausführungsbeispiel arbeitet ASSOC_CALC 910 gemäß der nachstehenden Beschreibung und der Darstellung in dem Flussdiagramm aus Fig. 10. In dem ersten Schritt werden der Schlüssel I, die Anzahl der Eingabesymbole K und die Tabelle der Zufallsbits ASSOC_RBITS 905 zur Erzeugung von zwei ganzzahligen Werten X und Y verwendet, welche die Eigenschaft aufweisen, dass X mindestens Eins und höchstens K- 1 ist, und wobei Y mindestens Null und höchstens K-1 entspricht (1005). Vorzugsweise sind X und Y unabhängig voneinander und gleichmäßig in ihren entsprechenden Bereichen verteilt. Als nächstes wird ein Feld V mit W(I) Einträgen zur Speicherung initialisiert, wenn AL(I) als Elemente berechnet wird (1010). Da V nur eine temporäre Speicherung für eine Liste darstellt, nimmt es deutlich weniger Speicherplatz ein als die Spalte AL(I) des Ausgabesymbolpuffers 405 (siehe Fig. 4). V[0] (das erste Element der Liste AL(I)) wird auf Y gesetzt (1015). Danach wird für alle Werte von J von 1 bis W(I)-1 der Wert von V[J] auf (V[J - 1] + X)mod K gesetzt, wie dies in den Schritten 1020 bis 1050 dargestellt ist. Da K eine Primzahl ist und W(I) höchstens gleich K ist, sind alle Werte von V eindeutig. Gemäß der Abbildung kann es sich bei der Operation "mod K" um eine einfache Vergleichs- und Subtraktionsoperation handeln, d. h. die Schritte 1035 und 1040. Somit ist das Verfahren der Erzeugung einer Positionsliste von Assoziatoren eines bestimmten Ausgabesymbols besonders effizient.
  • Ein Vorteil des vorstehenden Ansatzes zur Berechnung von AL(I) ist es, dass es eine ausreichende Vielfalt der Verteilung der Positionen der Assoziatoren erzeugt, um sicherzustellen, dass der Decodierungsalgorithmus mit hoher Wahrscheinlichkeit bei minimalem Empfangs-Overhead wirksam ist (d. h. die Eingabedatei wird wiederhergestellt, nachdem nur etwas mehr als K Ausgabesymbole empfangen worden sind, wobei angenommen wird, dass die Eingabesymbole und die Ausgabesymbole die gleiche Länge aufweisen), wenn eine Verbindung mit einem geeigneten Auswahlverfahren von W(I) gegeben ist.
  • Implementierung einer Gewichtungs-Auswahleinrichtung
  • Die Leistungsfähigkeit und Effizienz des Codierers/Decodierers ist von der Verteilung der Gewichtungen abhängig, wobei bestimmte Verteilungen besser sind als andere. Die funktionalen Aspekte der Auswahl der Gewichtung werden nachstehend beschrieben, gefolgt von einer Beschreibung einiger wichtigen Gewichtungsverteilungen. Das Blockdiagramm aus Fig. 11 und das Flussdiagramm aus Fig. 12 werden zur Veranschaulichung dieser Konzepte verwendet.
  • Gemäß der Abbildung aus Fig. 11 umfasst die Gewichtungs- Auswahleinrichtung zwei Prozesse WT_INIT 1105 und WT_CALC 1110 sowie die zwei Tabellen WT_RBITS 1115 und WT_DISTRIB 1120. Der Prozess WT_INIT 1105 wird nur einmal aufgerufen, wenn der erste Schlüssel zur Initialisierung der Tabelle WT_DISTRIB 1120 eingegeben wird. Die Konstruktion von WT_DISTRIB 1120 ist ein wichtiger Aspekt des Systems und wird später im Text näher behandelt. Der Prozess WT_CALC 1110 wird bei jedem Aufruf zur Erzeugung einer Gewichtung W(I) auf der Basis eines Schlüssels I aufgerufen. Gemäß der Abbildung in dem Flussdiagramm aus Fig. 12 verwendet WT_CALC 1110 den Schlüsse und die in der Tabelle WT_RBITS gespeicherten Zufallsbits, um eine Zufallszahl R zu erzeugen (1205). Danach wird der Wert von R zur Auswahl einer Zufallszahl L in der Tabelle WT_DISTRIB 1120 verwendet.
  • Gemäß der Abbildung aus Fig. 11 handelt es sich bei den Einträgen in der Spalte RANGE von WT_DISTRIB 1120 um eine ansteigende Folge von positiven ganzen Zahlen, die mit dem Wert MAX_VAL enden. Die Menge der möglichen Werte für R sind die ganzen Zahlen zwischen Null und MAX_VAL-1. Eine gewünschte Eigenschaft ist es, dass R mit der gleichen Wahrscheinlichkeit jeden Wert des Bereichs der möglichen Werte darstellten kann. Der Wert von L wird durch Suchen in der Spalte RANGE bestimmt, bis ein L gefunden worden ist, dass RANGE(L - 1) &le; R < RANGE(L) erfüllt (1210). Nachdem ein L gefunden worden ist, wird der Wert von W(I) auf WT(L) gesetzt, wobei es sich um die zurückgeführte Gewichtung handelt (1215, 1220). In der Abbildung aus Fig. 11 gilt für die abgebildete Beispieltabelle, dass bei R gleich 38.500, L mit 4 festgestellt wird, und wobei W(I) auf WT(4) = 8 festgelegt wird.
  • Zu weiteren Variationen der Implementierung einer Gewichtungs- Auswahleinrichtung und eines Assoziators zählen die pseudozufällige Erzeugung von I sowie die direkte Erzeugung von W(I) und AL(I) aus I. Hieraus wird ersichtlich, dass W(I) durch Prüfung von AL(I) bestimmt werden kann, da W(I) der Anzahl von Assoziatoren von AL(I) entspricht. Aus der vorliegenden Beschreibung wird deutlich, dass viele andere Verfahren zur Erzeugung der Werte W(I) dem gerade beschriebenen System entsprechen, um eine Menge der Werte W(I) mit der durch WT_DISTRIB definierten Verteilung zu erzeugen.
  • Ein alternativer Decodierer
  • Beim Lesen der Offenbarung wird für den Fachmann erkennbar, dass ein Empfänger effizienter arbeiten kann als in den vorstehend beschriebenen Implementierungen. Der Empfänger kann zum Beispiel effizienter sein, wenn die Pakete gepuffert werden und die Wiederherstellungsregel erst nach Ankunft einer Paketgruppe angewandt werden würde. Diese Modifikation verkürzt die erforderliche Rechenzeit durch den Verzicht auf die wiederholte Durchführung unnötiger Operationen und reduziert den Overhead durch einen Kontextwechsel. Da der Decodierer im Besonderen nicht davon ausgehen kann, die ursprüngliche Datei aus K Eingabesymbolen wiederherzustellen, bevor nicht mindestens K Ausgabesymbole (unter der Annahme von Eingabe- und Ausgabesymbolen der gleichen Größe) in K Paketen (unter der Annahme von einem Symbol je Paket) ankommen, ist es sinnvoll vor Beginn des Decodierungsprozesses solange zu warten, bis mindestens K Pakete angekommen sind.
  • Die Abbildung aus Fig. 13 zeigt ein anderes Decodierungsverfahren, das die vorstehend ausgedrückten Konzepte aufweist und eine Modifikation des Verfahrens darstellt, das der Decodierer aus der Abbildung aus Fig. 6 verwendet. Die Hauptunterschied zwischen den beiden Verfahren ist es, dass das Verfahren aus Fig. 13 die Ausgabesymbole stapelweise empfängt, wie dies unter 1315 dargestellt ist. Die Größe des ersten Stapels ist mit K + A festgelegt, wobei A einen geringen Teil der Anzahl der Eingabesymbole K darstellt (1310). Nachdem der erste Stapel von Ausgabesymbolen empfangen worden ist werden die Ausgabesymbole gemäß der vorstehenden Beschreibung unter Verwendung des Empfangsorganisators 525 verarbeitet (1340), so dass die Ausgabesymbole vermischt mit dem Einsatz des Wiederherstellungsprozessors 520 (1350) zur Verarbeitung der decodierbaren Menge und Wiederherstellung von Eingabesymbolen aus Ausgabesymbolen mit einer reduzierten Gewichtung von Eins verarbeitet werden. Wenn die Wiederherstellung aller K Eingabesymbole unter Verwendung des ersten Stapels bzw. Batches von K + A Ausgabesymbolen nicht erreicht wird, so werden zusätzliche Stapel von G Ausgabesymbolen empfangen und verarbeitet, bis alle Eingabesymbole wiederhergestellt worden sind.
  • Vorteilhaft ist die Minimierung des erforderlichen Speichers für die Hilfsdatenstrukturen des Decodierers in dem größtmöglichen Ausmaß. Wie dies bereits vorstehend im Text beschrieben worden ist, ist der Speicher für die Assoziatorenliste für jedes Ausgabesymbol nicht erforderlich, da der Assoziator 220 zur schnellen Berechnung der erforderlichen Listen bei Bedarf verwendet werden kann. Ein weiterer Speicherbedarf betrifft für jedes noch nicht wiederhergestellte Eingabesymbol die Speicherung der Reihennummer in der OSDS 505 der Ausgabesymbole, die ein Eingabesymbol als Assoziator auf weisen, d. h. den Raum für die Listen aus der Spalte RL in der Tabelle ISDS 510 aus Fig. 5. Wie dies bereits vorstehend für den Schritt 855 aus Fig. 8 beschrieben worden ist, ist eine Einsatzmöglichkeit für diesen Speicher die schnelle Identifikation, welche Ausgabesymbole bei der Wiederherstellung eines bestimmten Ausgabesymbols reduziert werden können. Sofern dies nicht effizient erfolgt ist der für diese Listen erforderliche Speicher proportional zu der Gesamtanzahl von Assoziatoren für alle Ausgabesymbole, die zur Wiederherstellung aller Eingabesymbole verwendet werden.
  • Ein Vorsortierungsdecodierer
  • Nachstehend wird in Bezug auf die Abbildungen der Fig. 14 und 15 ein bevorzugteres Ausführungsbeispiel des Decodierers beschrieben. Die Abbildung aus Fig. 14 zeigt die Bestandteile, die der Decodierer umfasst, wobei es sich dabei um die gleichen Bestandteile wie in der Abbildung aus Fig. 5 handelt, mit der Ausnahme, dass zusätzlich eine Tabelle WEIGHT SORT 1405 und die EXECUTION LIST 1420 zur Speicherung der Ausführungsfolge gemäß der Beschreibung in Bezug auf die Abbildung aus Fig. 8(b) verwendet werden. Die Tabelle WEIGHT SORT wird zum Speichern der Reihennummern in der OSDS 505 der Ausgabesymbole verwendet, wenn diese sortiert in Reihenfolge ansteigender Gewichtungen empfangen werden. Die Spalte WT_VAL wird zur Speicherung der Gewichtungen verwendet, und die Spalte ROW_LIST wird zum Speichern der Reihennummern der Ausgabesymbole in OSDS 505 verwendet. Im Allgemeinen werden die Reihennummern aller Ausgabesymbole mit der Gewichtung WT_VAL(L) in ROW_LIST(L) gespeichert. Die Tabelle wird zur Verarbeitung des Stapels der Ausgabesymbole in der Reihenfolge ansteigender Gewichtungen verwendet, wie dies in dem Schritt 1520 aus Fig. 15 dargestellt ist. Ausgabesymbole mit niedriger Gewichtung sind weniger rechenintensiv in der Verwendung zur Wiederherstellung eines Eingabesymbols, und es ist für auftretende Ausgabesymbole mit höherer Gewichtung wahrscheinlich, dass die meisten ihrer Assoziatoren bereits wiederhergestellt wurden und somit wird erheblicher Verknüpfungsspeicherplatz eingespart (der Decodierer kann den von wiederhergestellten Eingabeverknüpfungen genutzten Platz wiederherstellen, und verarbeitete Ausgabesymbole weisen wenige noch nicht wiederhergestellte Assoziatoren auf).
  • Die stapelweise Verarbeitung der Ausgabesymbole in der Reihenfolge ansteigender Gewichtungen reduziert die Speicheranforderungen sowie die Anforderungen an die Verarbeitung.
  • Gemäß der Abbildung aus Fig. 15 können etwas mehr als K Ausgabesymbole (in der Abbildung bezeichnet durch K + A Ausgabesymbole) vor Beginn der Verarbeitung ankommen (1515). Hier wird von einem Ausgabesymbol je Paket, Eingabe- und Ausgabesymbolen der gleichen Größe und K Eingabesymbolen in der Eingabedatei ausgegangen. Zu Beginn wartet der Decodierer einfach auf den Empfang von K + A Ausgabesymbolen, da nicht davon ausgegangen werden kann, dass der Decodierer die Eingabedatei aus weniger als K + A Ausgabesymbolen wiederherstellen kann, und wobei er nicht in der Lage ist, eine willkürliche Eingabedatei aus weniger als K Ausgabesymbolen wiederherzustellen. In der Praxis hat sich 5 K als geeigneter Wert für A gezeigt.
  • Die Reihennummern in der OSDS 505 der empfangenen Ausgabesymbole werden in der Tabelle WEIGHT SORT 1405 aus Fig. 14 zur Verarbeitung der ansteigenden Gewichtung gespeichert, wie dies in dem Schritt 1515 aus Fig. 15 dargestellt ist. Wenn T die Anzahl der möglichen Gewichtungen der Ausgabesymbole darstellt, so weist die Liste ROW_LIST(L) für die Werte von L zwischen 1 und T alle empfangenen Ausgabesymbole mit der Gewichtung WT_VAL(L) auf, mit 1 = WT_VAL(1) < WT_VAL(2) < WT_VAL(3) < ... < WT_VAL(T), und wobei WT_VAL(T) die maximale Gewichtung eines Ausgabesymbols darstellt. Danach entspricht der Rest des Ablaufs des Decodierers aus der Abbildung auf Fig. 15 genau dem Decodierer aus der Abbildung aus Fig. 13, mit der Ausnahme, dass Ausgabesymbole in der Reihenfolge der zunehmenden Gewichtung gespeichert werden, wie dies in Schritt 1520 dargestellt ist.
  • Im Normalfall reichen K + A Ausgabesymbole für die Wiederherstellung aller Eingabesymbole aus. Einige Mengen von K + A Paketen reichen teilweise jedoch nicht für die Wiederherstellung aller Eingabesymbole aus. In diesen Fällen werden Stapel von G zusätzlichen Paketen empfangen und danach verarbeitet, bis alle Eingabesymbole wiederhergestellt sind. Eine gute Einstellung für G ist K.
  • Die Abbildungen der Fig. 16 bis 19 zeigen eine Momentaufnahme eines Beispiels für den Ablauf des in Bezug auf die Abbildung aus Fig. 15 beschriebenen Prozesses. In dem vorliegenden Beispiel wurden sechs Ausgabesymbole (16030, 16035, 16040, 16045, 16050, 16055) mit Assoziatoren (16000, 16005, 16010, 16015, 16020, 16025) empfangen, wie dies durch die Pfeillinien aus der Abbildung aus Fig. 16 dargestellt ist. Zu Beginn werden Ausgabesymbole mit den Werten A, D, A B D F, C, E F und A B empfangen (bei der Operation " " handelt es sich um eine XOR-Operation) und in der OSDS 505 gespeichert, wie dies in der Abbildung aus Fig. 17 dargestellt ist. Die Reihennummer in OSDS 505 wird in ROW_LIST in der Reihe gespeichert, die der Gewichtung des Ausgabesymbols entspricht, wie dies in der Abbildung aus Fig. 18 dargestellt ist. Die Ausgabesymbole mit der Gewichtung von Eins befinden sich in Reihe 0, Reihe 1 und Reihe 3 der OSDS 505. Somit weist ROW_LIST(0), die den Ausgabesymbolen mit der Gewichtung WT_VAL(0) = 1 entspricht, die Reihennummern 0, 1 und 3 auf, wie dies in der Abbildung aus Fig. 18 dargestellt ist. In ähnlicher Weise weist die ROW_LIST(1) 4 und 5 und ROW_LIST(3) 2 auf.
  • An dieser Stelle des Ablaufs wurden die ersten fünf Ausgabesymbole in der Reihenfolge der zunehmenden Gewichtung verarbeitet, wobei das sechste Ausgabesymbol in reihe 2 der OSDS 505 durch den Empfangsorganisator 520 verarbeitet worden ist, und wobei das sechste Ausgabesymbol kurz vor der Verarbeitung durch den Wiederherstellungsprozessor 525 steht. Die Ausgabesymbole in den Reihen 0, 1, 3 und 5 wurden bereits dem Plan bzw. der Folge hinzugefügt, um schließlich die Eingabesymbole an den Positionen 0, 3, 2 und 1 entsprechend wiederherzustellen. Das Ausgabesymbol in Reihe 4 der OSDS 505 weist zwei Assoziatoren an den Positionen 4 und 5 auf, die noch nicht wiederhergestellt worden sind, und somit bestehen Verbindungen von den Positionen 4 und 5 in der ISDS 510 zurück zu Reihe 4 in der OSDS 505. Das Ausgabesymbol in Reihe 2 der OSDS 505 weist vier Assoziatoren an den Positionen 0, 1, 2, 3 und 5 auf. Die drei Assoziatoren an den Positionen 0, 1 und 3 sind bereits als wiederhergestellt gekennzeichnet und somit besteht keine Verbindung von diesen zurück zu Reihe 2 (sie haben eine Reduzierung der Gewichtung dieses Ausgabesymbols von 4 auf 1 bewirkt, wodurch die Wiederherstellung der verbleibenden Eingabesymbole an den Positionen 4 und 5 ausgelöst wird, sobald der Wiederherstellungsprozessor 525 ausgeführt wird). Der Assoziator an Position 5 wurde noch nicht wiederhergestellt, und somit hat der Empfangsorganisator 520 eine Verknüpfung von Position 5 aus der ISDS 510 zu der Reihe 2 in der OSDS 505 hinzugefügt. Dies alles ist in der Abbildung aus Fig. 17 dargestellt. An dieser Stelle des Ablaufs befinden sich somit nur drei Verknüpfungen von Eingabesymbolen zurück zu Ausgabesymbolen, welche diese als Assoziatoren aufweisen, im Einsatz. Dies lässt sich gut mit der direkten Implementierung vergleichen, die eine Verknüpfung von jedem Eingabesymbol zu jedem Ausgabesymbol mit dem Eingabesymbol als Assoziator vergleichen. In dem vorliegenden Beispiel gibt es elf mögliche derartige Verknüpfungen.
  • Im Allgemeinen werden die Einsparungen des Speicherplatzes für Verknüpfungen unter Verwendung des Prozesses aus den Abbildungen der Fig. 14 und 15 im Vergleich zu dem in Bezug auf die Abbildung aus Fig. 13 beschriebenen Prozess deutlich reduziert. Die Platzeinsparungen entsprechen kennzeichnenderweise einem Faktor von 10 bis 15 in dem Verknüpfungsraum, wenn die Anzahl der Eingabesymbole gleich 50.000 ist. Der Grund für diese Reduzierung ist es, dass Ausgabesymbole mit einer geringeren Gewichtung wahrscheinlicher Eingabesymbole am Anfang des Prozesses als am Ende wiederherstellen, und wobei Ausgabesymbole mit höherer Gewichtung deutlich wahrscheinlicher Ausgabesymbole am Ende des Prozesses als am Anfang wiederherstellen. Somit ist es sinnvoll, die Ausgabesymbole in der Reihenfolge zunehmender Gewichtungen zu verarbeiten. Ein weiterer Vorteil des in Bezug auf die Abbildungen der Fig. 14 und 15 beschriebenen Prozesses im Vergleich zu dem Prozess aus Fig. 13 ist es, dass die Decodierung normalerweise 30% bis 40% schneller ist. Der rund dafür ist es, dass die Ausgabesymbole mit geringerer Gewichtung mit größerer Wahrscheinlichkeit zur Wiederherstellung von Eingabesymbolen verwendet werden als Ausgabesymbole mit höherer Gewichtung (da die Ausgabesymbole mit geringerer Gewichtung zuerst berücksichtigt werden), und da die Kosten für die Wiederherstellung eines bestimmten Eingabesymbols direkt von der Gewichtung des Ausgabesymbols abhängig sind, die für die Wiederherstellung verwendet wird.
  • Auswahl einer Gewichtungsverteilung
  • Eine wichtige Optimierung betrifft die Gestaltung des Codierungsverfahrens, so dass eine Eingabedatei mit so wenig Ausgabesymbolen wie möglich vollständig wiederhergestellt werden kann. Diese Optimierung ist hilfreich, wenn die Übertragungszeit und die Bandbreite teuer oder begrenzt sind, oder wenn eine Eingabedatei schnell decodiert werden muss, ohne auf zusätzliche Ausgabesymbole zu warten. Kennzeichnenderweise ist die ausreichende Anzahl von erforderlichen Ausgabesymbolen zur Wiederherstellung einer Eingabedatei etwas größer als die Anzahl der Eingabesymbole in der ursprünglichen Eingabedatei (unter der Annahme von Ein- und Ausgabesymbolen der gleichen Größe). Es kann gezeigt werden, dass eine willkürliche Eingabedatei nicht wiederhergestellt werden kann, wenn weniger Bits empfangen worden sind als die Eingabedatei aufweist. Somit ermöglicht eine perfekte Codierungsmethode die Wiederherstellung einer Eingabedatei aus jeder Anordnung von Ausgabesymbolen, die die gleiche Anzahl von Bits wie die Eingabedatei codieren, und ein Maß für die Codierungseffizienz ist die Tatsache, wie wenige Bits bei den erwarteten Bedingungen benötigt werden.
  • Bei dem Decodierer aus Fig. 5 wird die maximale Effizienz dann erreicht, wenn der Wiederherstellungsprozessor 525 das letzte unbekannte Eingabesymbol wiederherstellt, nachdem der Decodierer genau K Ausgabesymbole empfangen hat. Wenn mehr als K Ausgabesymbole von dem Decodierer bis zu dem Zeitpunkt empfangen worden sind, wenn alle Eingabesymbole wiederhergestellt worden sind, so wurden Ausgabesymbole empfangen, die für die Wiederherstellung der Eingabedatei nicht erforderlich waren oder nicht verwendet worden sind. Eine maximale Effizienz ist zwar angenehm, allerdings sollte dieses Ziel nicht durch das Risiko gefährdet werden, dass die DSS 515 leer ist, bevor die Wiederherstellung abgeschlossen ist. Bei maximaler Effizienz erreicht die Größe der decodierbaren Menge mit anderen Worten ausgedrückt genau dann Null, wenn die Wiederherstellung endet, wobei die Codierung/Decodierung jedoch so ausgerichtet sein sollte, dass nur eine geringe Wahrscheinlichkeit besteht, dass die Größe der decodierbaren Menge vor Ende der Wiederherstellung unter Verwendung von K + A Ausgabesymbolen Null erreicht, so dass zusätzliche Anordnungen bzw. Mengen von G Ausgabesymbolen nicht erforderlich sind.
  • Dieser Punkt ist in der Abbildung aus Fig. 20 dargestellt. Die Abbildung zeigt eine Darstellung der Größe einer decodierbaren Menge im Vergleich zu der Anzahl der wiederhergestellten Eingabesymbole, wenn der Decodierer mit K + A Ausgabesymbolen für eine nachstehend beschriebene ideale Verteilung arbeitet. In dem vorliegenden Beispiel gilt A = 0, d. h. bei der Anzahl der zum Decodieren aller K Eingabesymbole empfangenen Ausgabe Symbole handelt es sich um die geringst mögliche Anzahl (unter der Annahme, dass die Eingabesymbole und die Ausgabesymbole die gleiche Größe aufweisen). Hiermit wird festgestellt, dass die Abbildung für jede gegebene Funktion zur Bestimmung von Gewichtungen und Assoziatoren variieren kann sowie abhängig davon, welche bestimmten Ausgabesymbole empfangen werden. In dieser Darstellung entspricht die erwartete Größe der decodierbaren Menge zuerst Eins und verbleibt über den gesamten Wiederherstellungsprozess auf Eins. Bei dem erwarteten Verhalten gibt es in der decodierbaren Menge somit immer ein Ausgabesymbol, das zur Wiederherstellung des nächsten Eingabesymbols verwendet werden kann. Die Abbildung aus Fig. 20 zeigt ferner ein Beispiel für das tatsächliche Verhalten der Idealverteilung. Hiermit wird festgestellt, dass die decodierbare Menge in dem tatsächlichen Ablauf vor Abschluss der Wiederherstellung leer ist. Dieses tatsächliche Verhalten der Idealverteilung ist kennzeichnend, d. h. dass bei der Idealverteilung nahezu immer zufällige Schwankungen die decodierbare Menge leeren, bevor alle Eingabesymbole wiederhergestellt sind, und dies ist der Grund dafür, dass eine robustere Verteilung erforderlich ist, wie dies nachstehend im Text näher beschrieben wird.
  • Die Effizienz wird durch die Einschränkung der Häufigkeit verbessert, mit der ein decodierbares Mengenelement, das bei einer XOR-Wertefunktion nur ein zugeordnetes Eingabesymbol aufweist, ein bereits wiederhergestelltes Eingabe symbol als Assoziator aufweist. Erreicht werden kann dies durch entsprechend geeignete Auswahl der Funktion zur Erzeugung von W(I).
  • Währens es somit möglich ist, durch den Empfang einer ausreichenden Anzahl von Ausgabesymbolen eine Eingabedatei mit jedem gewünschten Grad der Sicherheit wiederherzustellen, wird der Entwurf eines Kettenreaktionscodierungs- Kommunikationssystems bevorzugt, so dass eine hohe Wahrscheinlichkeit zur Wiederherstellung von K Eingabesymbolen gegeben ist, die eine vollständige Eingabedatei mit nur K + A Ausgabesymbolen (in der Annahme, dass die Eingabesymbole und die Ausgabesymbole die gleichen Größe aufweisen) für einen geringen Wert von A umfasst. Der Mindestwert von A ist Null und kann durch einige Codierungsmethoden wie etwa die Reed- Solomon-Codierung erreicht werden, wobei jedoch durch das Zulassen eines kleinen Werts von ungleich Null für A ein verbessertes Kommunikationssystem erreicht werden kann.
  • Kleine Werte von A können bei der Kettenreaktionscodierung unter Verwendung der entsprechenden Verteilungen die Gewichtungsverteilung für Ausgabesymbole bestimmen, d. h. die Verteilung von W(I) für alle I und die Verteilung von Assoziatoren über die Ausgabesymbole, d. h. die Zugehörigkeit von AL(I) über alle I. Der Decodierungsprozess kann zwar unabhängig von der Gewichtungsverteilung und der Verteilung auf die ausgewählten Assoziatoren angewandt werden, wobei in den bevorzugten Ausführungsbeispielen jedoch die Gewichtungsverteilungen und die Verteilungen auf die ausgewählten Assoziatoren verwendet werden, die speziell für eine praktisch optimale Leistungsfähigkeit ausgewählt worden sind. Tatsächlich funktionieren zahlreiche Verteilungen gut, da geringfügige Abweichungen bezüglich der ausgewählten Verteilung sich in der Leistung nur geringfügig auswirken.
  • Nachstehend im Text wird die Methode zur Bestimmung der Verteilungen für ein bevorzugtes Ausführungsbeispiel beschrieben. Die tatsächlich verwendeten Verteilungen der Gewichtungen basieren auf einer mathematischen Idealverteilung. Bei der idealen Gewichtungsverteilung werden die Gewichtungen W(I) gemäß einer "idealen" Wahrscheinlichkeitsverteilung ausgewählt. Die geringste Gewichtung ist Eins und die größte Gewichtung entspricht K, wobei K gleich der Anzahl der Eingabesymbole ist. Bei der Idealverteilung wird eine dem Wert von i entsprechende Gewichtung mit der folgenden Wahrscheinlichkeit p ausgewählt:
  • für i = 1: P = 1/K; und
  • für i = 2, ..., K: p = 1/(i(i - 1)).
  • Nachdem eine Gewichtung W(I) ausgewählt worden ist, wird eine Liste AL(I) mit W(I) zugeordneten Eingabesymbolen unabhängig und einheitlich zufällig (oder bei Bedarf pseudozufällig) ausgewählt, wobei sichergestellt wird, dass sich alle ausgesuchten Assoziatoren voneinander unterscheiden. Somit wird der erste Assoziator zufällig aus den K Eingabesymbolen ausgewählt, die jeweils eine Auswahlwahrscheinlichkeit von 1/K aufweisen. Danach wird der zweite Assoziator (mit W > 1) zufällig aus den verbleibenden K-1 Symbolen ausgewählt. Die vorstehend dargestellte Wahrscheinlichkeitsverteilung der Gewichtung weist die Eigenschaft auf, dass bei einem Verhalten, das genau der Erwartung entspricht, genau K Ausgabesymbole zur Decodierung und Wiederherstellung aller Eingabesymbol ausreichen. Das erwartete Verhalten der Idealverteilung ist in der Abbildung aus Fig. 20 durch die durchgezogene Linie dargestellt. Das Verfahren verhält sich jedoch nicht immer derart, und zwar aufgrund der zufälligen Art der Auswahl der Gewichtungen und der Assoziatoren sowie der Verwendung einer willkürlichen Menge von Ausgabesymbolen in dem Decodierungsprozess. Ein Beispiel für ein tatsächliches Verhalten der Idealverteilung ist in der Abbildung aus Fig. 20 durch die gestrichelte Linie dargestellt. Somit muss die ideale Gewichtungsverteilung in der Praxis etwas modifiziert werden.
  • Im Allgemeinen lassen sich die besten Parameter für eine bestimmte Einstellung durch Computersimulation feststellen. Allerdings ist auch eine einfache Abwandlung der idealen Gewichtungsverteilung eine wirksame Option. Bei dieser einfachen Abwandlung wird die ideale Gewichtungsverteilung dadurch geringfügig modifiziert, dass die Wahrscheinlichkeit für Ausgabesymbole mit einer Gewichtung von Eins und von Ausgabesymbolen mit hoher Gewichtung geringfügig erhöht werden, um die Möglichkeit zu verringern, dass sich die decodierbare Menge leert, bevor die K + A Ausgabesymbole verarbeitet worden sind. Die zusätzliche Anzahl an Ausgabesymbolen mit einer Gewichtung von Eins verringert die Wahrscheinlichkeit, dass dem Prozess die Ausgabesymbole mit einer Gewichtung von Eins ausgehen (d. h. dass sich die decodierbare Menge leert), bevor der Wiederherstellungsprozess die Wiederherstellung der Eingabesymbole nahezu abgeschlossen hat. Die zusätzliche Anzahl von Ausgabesymbolen mit hoher Gewichtung erhöht die Wahrscheinlichkeit, dass gegen Ende des Wiederherstellungsprozesses für jedes noch nicht wiederhergestellte Eingabesymbol mindestens ein Ausgabesymbol gegeben ist, das dieses Eingabesymbol als eindeutigen verbleibenden Assoziator aufweist.
  • Im Besonderen ist die modifizierte Gewichtungsverteilung wie folgt gegeben:
  • für i = 1: p = n + R1/K;
  • für i = 2, ..., (K/R2 - 1): p = n/(i(i - 1)(1 - iR2/K); und
  • für i = K/R2, ..., K: p = n + HW(i).
  • Dabei entspricht K der Anzahl der Eingabe Symbole, wobei es sich bei R1 und R2 um veränderliche Parameter handelt, und wobei n einen verwendeten Normalisierungsfaktor darstellt, so dass die Werte von p in der Summe Eins ergeben.
  • Die Berechnung von HW(i) und Abtastwerten für R1 und R2 ist in Anhang A näher dargestellt. Dabei entsprechen die C++ Symbole nStartRippleSize, nRippleTartegSize und nSegments entsprechend R1, R2 und K in den obigen Gleichungen.
  • Diese modifizierte Verteilung entspricht der idealen mathematischen Gewichtungsverteilung, mit mehr Ausgabesymbolen mit einer Gewichtung von 1 und mit höherer Gewichtung und einer entsprechend neu skalierten Verteilung. Gemäß der Darstellung in der modifizierten Verteilung bestimmt R1 den anfänglichen Anteil der Ausgabesymbole mit einer Gewichtung von Eins sowie den Multiplikationsfaktor der höheren Wahrscheinlichkeit für Symbole mit einer Gewichtung von Eins, und R2 bestimmt die Grenze zwischen den "höheren" Gewichtungen und den "nicht so hohen" Gewichtungen.
  • Eine gute Auswahl von R1 und R2 ist allgemein von K abhängig und lässt sich empirisch bestimmen. Bei einem Beispiel, das sich in der Praxis als geeignet erwiesen hat, entspricht R1 dem 1,4-fachen der Quadratwurzel von K und R2 ist gleich Zwei plus dem Zweifachen der vierten Wurzel aus K. Für K = 4000 liefern R1 = 89 und R2 = 18 somit gute Ergebnisse; bei K gleich 64000, liefern die Einstellungen R1 = 354 und R2 = 34 gute Ergebnisse. Genauere Berechnungen von R1 und R2 sind in Anhang A dargestellt. Die Abbildung aus Fig. 21 zeigt, dass das erwartete Verhalten dieser Verteilung die decodierbare Menge über den gesamten Wiederherstellungsprozess in moderater Größe aufrecht erhält, so dass die zufälligen Abweichungen von dem erwarteten Verhalten bei tatsächlichen Abläufen die decodierbare Menge wahrscheinlich nicht leeren, bevor alle Eingabesymbole wiederhergestellt worden sind.
  • Die vorstehend beschriebenen Wiederherstellungsprozesse sind zwar dem für Tornado-Codes verwendeten Verfahren ähnlich, jedoch führt das zur Erzeugung des Codes verwendete, sich unterscheidende Verfahren zu außerordentlich unterschiedlichen Auswirkungen. Wie dies vorstehend im Text beschrieben worden ist, ist im Vergleich zu Tornado-Codes für die Kettenreaktionscodierung im Besonderen deutlich weniger Speicher erforderlich, und die Benutzerfreundlichkeit von Kettenreaktionscodes übertrifft die Benutzerfreundlichkeit von Tornado-Codes in den unterschiedlichsten Situationen, wobei dies möglicherweise mit gewissen Geschwindigkeitseinbußen einher geht. Die den Prozessen zugrunde liegenden mathematischen Details werden nachstehend näher beschrieben.
  • Eigenschaften einiger Kettenreaktionscodes
  • Die Anzahl der erzeugten und durch den Kanal übermittelten Ausgabesymbole ist bei der Kettenreaktionscodierung im Vergleich zu anderen Codierungsmethoden nicht begrenzt, da die Schlüssel den Eingabesymbolen nicht eins zu eins entsprechen müssen, und da die Anzahl der unterschiedlichen Werte von I nicht auf ein bestimmtes Verhältnis der Eingabesymbole beschränkt ist. Somit ist es selbst dann unwahrscheinlich, dass das Decodierungsverfahren fehlschlägt, wenn sich die decodierbare Menge leert, bevor die Eingabedatei wiederhergestellt worden ist, da der Decodierer so viele zusätzliche Ausgabesymbole sammeln kann, wie dies erforderlich ist, um mindestens ein zusätzliches Ausgabesymbol mit einer Gewichtung von Eins zu erhalten. Wenn das Ausgabesymbol mit einer Gewichtung von Eins empfangen wird, wird es Teil der decodierbaren Menge und kann durch den Kettenreaktionseffekt eine Reduzierung der bereits vorher empfangenen Ausgabesymbole bis auf eine Gewichtung von Eins bewirken, so dass diese wiederum zur Wiederherstellung von Eingabesymbolen verwendet werden können.
  • In den meisten vorstehend beschriebenen Beispielen codieren die Eingabesymbole und die Ausgabesymbole die gleiche Anzahl von Bits und jedes Ausgabesymbol wird in einem Paket platziert (ein Paket ist eine Transporteinheit, die entweder vollständig empfangen wird oder vollständig verloren geht). In einigen Ausführungsbeispielen wird das Kommunikationssystem derart modifiziert, dass jedes Paket mehrere Ausgabesymbole aufweist. Die Größe eines Ausgabesymbolwerts wird danach auf die Größe festgelegt, die durch die Größe der Eingabesymbolwerte bei der ursprünglichen Aufteilung der Datei in Eingabesymbole auf der Basis einer Reihe von Faktoren bestimmt wird. Das Decodierungsverfahren bleibt im Wesentlichen unverändert, mit der Ausnahme, dass Ausgabesymbole stapelweise beim Empfang jedes Pakets ankommen.
  • Die Einstellung der Eingabesymbol- und Ausgabesymbolgrößen wird für gewöhnlich durch die Größe der Datei und das Kommunikationssystem vorgegeben, über das die Ausgabesymbole übertragen werden. Wenn ein Kommunikationssystem zum Beispiel Datenbits in Pakete mit einer festgelegten Größe oder Bits anderweitig gruppiert, beginnt der Entwurf der Symbolgrößen mit der Paket- oder Gruppierungsgröße. Danach würde ein Entwickler festlegen, wie viele Ausgabesymbole in einem Paket oder in einer Gruppe transportiert werden, und dies bestimmt wiederum die Größe des Ausgabesymbols. Zur Vereinfachung würde der Entwickler die Größe des Eingabesymbols und die Größe des Ausgabesymbols identisch gestalten, wobei aber auch eine andere Eingabesymbolgröße möglich ist, wenn dies für die Eingabedaten praktischer ist.
  • Ein weiterer Faktor bei der Bestimmung der Eingabesymbolgröße ist die Auswahl der Eingabesymbolgröße, so dass die Anzahl K der Eingabesymbole groß genug ist, um den Empfangs-Overhead so gering wie möglich zu halten. Zum Beispiel führt K = 10.000 zu einem durchschnittlichen Empfangs-Overhead von 5% bis 10% bei moderaten Schwankungen, wobei K = 80.000 zu einem durchschnittlichen Empfangs-Overhead von 1% bis 2% bei sehr geringen Schwankungen führt. In einem Test mit 1.000.000 Versuchen mit K = 80.000 überschritt der Empfangs-Overhead zum Beispiel nie 4%.
  • Das vorstehend beschriebene Codierungsverfahren erzeugt einen Paketstrom, die Ausgabesymbole auf der Basis der ursprünglichen Datei aufweisen. Die Ausgabesymbole speichern eine codierte Form der Datei oder kurz die codierte Datei. Jedes Ausgabesymbol in dem Strom wird unabhängig von allen anderen Ausgabesymbolen erzeugt, und es gibt keine untere der obere Begrenzung der Anzahl der erzeugbaren Ausgabesymbole. Jedem Ausgabesymbol ist ein Schlüssel zugeordnet. Der Schlüssel und ein gewisser Anteil der Eingabedatei bestimmt den Wert des Ausgabesymbols. Nacheinander erzeugte Ausgabesymbole müssen keine aufeinanderfolgenden Schlüssel auf weisen, und bei einigen Anwendungen wird es bevorzugt, die Schlüsselfolge zufällig oder pseudozufällig zu erzeugen.
  • Die Kettenreaktionscodierung weist die Eigenschaft auf, dass bei einer möglichen Unterteilung der ursprünglichen Datei in K gleich große Eingabesymbole und wenn jeder Ausgabesymbolwert die gleiche Länge wie ein Eingabesymbolwert aufweist, die Datei durchschnittlich aus K + A Ausgabesymbolen wiederhergestellt werden kann, wobei A im Vergleich zu K klein ist. Zum Beispiel kann A für K = 10.000 gleich 500 sein. Da die jeweiligen Ausgabesymbole in zufälliger oder pseudozufälliger Reihenfolge erzeugt werden und der während der Übermittlung auftretende Verlust bestimmter Ausgabesymbole zufällig ist, existiert bezüglich der tatsächlichen Anzahl von Ausgabesymbolen, die für die Wiederherstellung der Eingabedatei erforderlich sind, eine gewisse Abweichung. In einigen Fällen, wenn eine bestimmte Sammlung von K + A Paketen zur Decodierung der vollständigen Eingabedatei ausreicht, so kann die Eingabedatei weiterhin wiederhergestellt werden, wenn der Empfänger mehr Pakete von einer oder mehreren Quellen von Ausgabepaketen erfassen kann.
  • Da die Anzahl der Ausgabesymbole nur durch die Auflösung von I begrenzt ist, sollten deutlich mehr als K + A Ausgabesymbole erzeugt werden können. Wenn I zum Beispiel eine 32-Bit-Ziffer ist, so können 4 Milliarden verschiedene Ausgabesymbole erzeugt werden, während die Datei vielleicht nur aus K = 50.000 Eingabesymbolen besteht. In der Praxis wird nur ein geringer Anteil der 4 Milliarden Ausgabesymbole erzeugt und übermittelt, und es ist praktisch sicher, dass eine Eingabedatei mit einem sehr geringen Anteil der möglichen Ausgabesymbole wiederhergestellt werden kann, und es besteht eine ausgezeichnete Wahrscheinlichkeit, dass die Eingabedatei mit nur etwas mehr als K Ausgabesymbolen wiederhergestellt werden kann (in der Annahme, dass die Eingabesymbolgröße gleich der Ausgabesymbolgröße ist).
  • Die durchschnittliche Anzahl der erforderlichen Rechenoperationen zur Erzeugung jedes Ausgabesymbols ist proportional zu log K, und somit ist die Gesamtanzahl der zur Decodierung und Wiederherstellung der Eingabedatei erforderlichen Rechenoperationen proportional zu K log K. Wie dies bereits vorstehend im Text beschrieben worden ist, existiert ein effizientes Decodierungsverfahren, das nur etwas mehr Speicher verwendet als den Speicher, der zum Speichern der Eingabedatei erforderlich ist (normalerweise etwa 15% mehr). Die obengenannten Zahlen offenbaren signifikante Reduzierungen der Operationen und des Speicherplatzes im Vergleich zu bislang bekannten Codierungstechniken.
  • Zum Beispiel sind Reed-Solomon-Codes ein Standardcode für Kommunikationsanwendungen. Bei Reed-Solomon-Codes wird die Eingabedatei in K Eingabesymbole unterteilt, ebenso wie bei der Kettenreaktionscodierung, wobei die K Eingabesymbole in den Reed-Solomon-Codes in N Ausgabesymbole codiert werden, wobei N kennzeichnenderweise vor Beginn des Codierungsverfahrens festgelegt wird. Dies steht im Gegensatz zu der vorliegenden Erfindung, die eine unbestimmte Anzahl von Ausgabesymbolen ermöglicht.
  • Ein Vorteil einer unbestimmten Anzahl von Ausgabesymbolen ist es, dass für den Fall, dass ein Empfänger mehr Ausgabesymbole als erwartet verpasst, und zwar entweder aufgrund eines schlechten Kanals oder dadurch, dass der Empfänger erst mit dem Empfang beginnt, nachdem einige Ausgabesymbole bereits übermittelt worden sind, der Empfänger etwas länger auf Empfang bleiben und mehr Ausgabesymbole empfangen kann. Da der Empfänger Aus gäbe Symbole erfassen kann, die von mehreren Codierern erzeugt werden, ist es ein weiterer Vorteil, dass jeder Codierer nur einen geringen Anteil der K Ausgabesymbole vorsehen muss, und wobei die Anzahl der Symbole eines Codierers davon abhängig sein kann, wie viele Codierer den Empfänger mit Ausgabesymbolen versorgen.
  • Reed-Solomon-Codes erfordern ferner deutlich mehr Zeit als Kettenreaktionscodes sowohl für die Codierung als auch für die Decodierung. Bei Reed-Solomon ist zum Beispiel die Anzahl der für die Erzeugung jedes Ausgabesymbols erforderlichen Rechenoperationen proportional zu K. Die Anzahl der für die Decodierung von Reed-Solomon-Codes erforderlichen Rechenoperationen ist davon abhängig, welche Ausgabesymbole den Empfänger erreichen, wobei die Anzahl dieser Operationen allgemein jedoch proportional zu K² ist. In der Praxis sind die zulässigen Werte für K und N somit sehr klein und liegen im zweistelligen Bereich bis in den niedrigen dreistelligen Bereich. Zum Beispiel werden auf CDs und CD-ROMs crossinterleaved (überkreuz verschachtelte) Reed-Solomon-Codes verwendet. Bei CDs verwendet ein Standardcode die Werte K = 24 und N = 28, während ein anderer Standardcode die Werte K = 28 und N = 32 verwendet. Bei CD-ROMs verwendet ein Standardcode die Werte K = 24 und N = 26, während ein anderer Standardcode die Werte K = 43 und N = 45 verwendet. Standardmäßige Reed- Solomon-Codes, die für die Satellitenübertragung von MPEG- Dateien (MPEG ist ein Dateiformat für Video- und Audio- Übertragungen) verwendet werden, arbeiten mit den Werten K = 188 und N = 204; wobei diese hohen Werte im Allgemeinen eine spezielle Hardware erforderlich machen.
  • Es sind auch schnellere Implementierungen von Reed-Solomon- Codes bekannt, die eine Codierung in der Zeit cK log K und eine Decodierung in der Zeit c'K (log K)² ermöglichen, wobei c und c' jedoch unzulässig große Konstanten darstellen, die diese Implementierungen langsamer machen als andere Implementierungen von Reed-Solomon-Codes für alle anderen als besonders große Werte von K, d. h. die höhere Effizienz ist nur für vier- bis fünfstellige Werte von K gegeben. Für Werte unterhalb des Übergangspunkts der Effizienz liegen, sind somit die andren Implementierungen der Reed-Solomon-Codes schneller. Obwohl die schnelleren Implementierungen für Werte von K oberhalb des Übergangspunkts schneller sind als die anderen Implementierungen, sind die schnelleren Implementierungen was die Größe anbelangt bei den Werten von K langsamer als Kettenreaktionscodes.
  • Aufgrund der Einschränkungen durch die Geschwindigkeit sind für Reed-Solomon-Codes allgemein nur sehr kleine Werte von K und N möglich. Deren Einsatz bei größeren Dateien setzt somit voraus, dass die Dateien in mehrere Unterdateien unterteilt werden können und jede Unterdatei einzeln codiert werden kann. Die Unterteilung verringert die Wirksamkeit der Codes zum Schutz gegen Paketverluste während der Übertragung.
  • Ein Merkmal der Reed-Solomon-Codes ist es, dass alle K unterschiedlichen Ausgabesymbole vom Empfänger zum Decodieren der Eingabedatei verwendet werden können. Es ist nachweisbar, dass mindestens K Ausgabesymbole zum Decodieren einer willkürlichen Eingabedatei erforderlich sind, und somit eignen sich Reed-Solomon-Codes diesbezüglich optimal, da K auch der maximalen Anzahl an Ausgabesymbolen entspricht, die für die Discodierung der Eingabedatei erforderlich sind. Die Kettenreaktionscodierung setzt im Gegensatz dazu allgemein K + A Pakete voraus, wobei A im Vergleich zu einem entsprechend ausgesuchten K klein ist. Bei den vorstehend beschriebenen Netzwerkanwendungen wird dieser Nachteil der möglicherweise erforderlichen A zusätzlichen Symbole deutlich durch den Geschwindigkeitsvorteil und die Möglichkeit aufgehoben, nahtlos größere Dateien zu bearbeiten.
  • Variationen des grundlegenden Kommunikationssystems
  • Vorstehend wurden Ausführungsbeispiele erfindungsgemäßer Kommunikationsgemäße für einen einzelnen Kanal näher beschrieben. Die Elemente dieser Ausführungsbeispiele können in vorteilhafter Weise auf den Einsatz von mehr als einem Kanal erweitert werden.
  • Die Abbildungen aus den Fig. 22-23 zeigen Systeme zwischen zwei Computern, die ein Kommunikationssystem gemäß der Abbildung aus Fig. 1 auf weisen. Das erste Beispiel (Fig. 22) weist einen Sendecomputer 2200 auf, der eine Eingabedatei 2210 über ein Netzwerk 2230 an einen Empfangscomputer 2220 sendet.
  • Das zweite Beispiel (Fig. 23) weist einen Sendecomputer 2300 auf, der eine Eingabedatei 2310 über einen drahtlosen Kanal 2330 an Empfangscomputer 2320 (nur einer dieser Computer ist abgebildet) sendet. An Stelle des Netzwerks 2330 kann jedes andere physikalische Kommunikationsmedium verwendet werden, wie etwa die Leitungen des Internet. Bei dem drahtlosen Kanal 2330 kann es sich um einen drahtlosen Funkkanal, eine Pager- Vermittlungsstelle, eine Satellitenstrecke, eine Infrarotstrecke oder dergleichen handeln. Die Konfiguration aus der Abbildung aus Fig. 23 kann auch in Verbindung mit verdrahteten oder nicht verdrahteten Medien verwendet werden, wenn ein Sender eine Eingabedatei an mehrere Empfänger sendet, wenn der Empfänger die Eingabedatei von mehreren Sendern empfängt oder wenn mehrere Empfänger die Eingabedatei von mehreren Sendern empfangen.
  • Beim Lesen der vorstehenden Beschreibung sollte deutlich werden, dass die vorstehende Methode der Kettenreaktionscodierung zur Übermittlung einer Datei über ein verlustreiches Übertragungsmedium als Strom von Paketdaten mit wünschenswerten Eigenschaften verwendet werden kann, wobei es sich bei dem Medium etwa um ein Computernetzwerk, das Internet, ein Mobilfunknetz oder ein Satellitennetz handeln kann. Eine derartige wünschenswerte Eigenschaft ist es, dass sobald ein Decodierungsagent eine beliebige Menge aus ausreichend vielen Paketen von dem Strom empfängt, dieser die ursprüngliche Datei außerordentlich schnell wiederherstellen kann. Die Kettenreaktionscodierung eignet sich auch für Situationen, in denen viele Agenten beteiligt sind, wie etwa wenn ein Sendeagent die Datei an eine Mehrzahl von Empfangsagenten in einer Multicast- oder Broadcasting-Umgebung sendet.
  • Die Kettenreaktionscodierungsmethode eignet sich auch in Situationen, in denen mehrere Sendeagenten die gleiche Datei an mehrere Empfangsagenten senden. Dies ermöglicht eine verbesserte Widerstandsfähigkeit gegen lokale Ausfälle bzw. Fehler der Netzwerkinfrastruktur. Ferner ermöglicht dies einen nahtlosen Wechsel der Empfangsagenten von dem Empfang von Paketen von einem Sendeagenten zu einem anderen. Ferner können Empfangsagenten schneller herunterladen, da sie gleichzeitig von mehr als einem Sendeagenten empfangen können.
  • Gemäß einem Aspekt führt das vorstehend beschriebene Kettenreaktionscodierungsverfahren das digitale Äquivalent eines holographischen Bilds durch, wobei jeder Teil einer Übertragung ein Bild der übermittelten Datei auf weist. Wenn es sich bei der Datei um eine Megabyte-Datei handelt, kann ein Benutzer einfach einen übermittelten Strom anzapfen, um willkürliche Daten in dem entsprechenden Megabyte-Ausmaß (sowie einen gewissen zusätzlichen Overhead) zu erhalten und die ursprüngliche Megabyte-Datei aus dem Megabyte zu decodieren.
  • Da die Kettenreaktionscodierung mit einer zufälligen Datenauswahl aus dem übermittelten Strom arbeitet, müssen Downloads nicht terminiert werden oder kohärent sein. Hiermit soll auf die Vorteile von Video-on-Demand in Verbindung mit der Kettenreaktionscodierung hingewiesen werden. Ein bestimmtes Video könnte als ununterbrochener Strom auf einem bestimmten Kanal ohne Koordination zwischen dem Empfänger und dem Sender gesendet werden. Der Empfänger einfach auf den Sendekanal für ein bestimmtes gewünschtes Video eingestellt und erfasst ausreichende Daten zur Wiederherstellung des ursprünglichen Videos, ohne dass ermittelt werden muss, wann die Übermittlung begonnen hat oder wie Kopien der verloren gegangenen Teile der Übertragung erhalten werden können.
  • Diese Konzepte sind in den Abbildungen der Fig. 24-25 dargestellt. Die Abbildung aus Fig. 24 zeigt eine Anordnung, in der ein Empfänger 2402 Daten von drei Sendern 2404 (einzeln mit "A", "B" und "C" bezeichnet) über drei Kanäle 2406 empfängt. Diese Anordnung kann zur Verdreifachung der für den Empfänger verfügbaren Bandbreite oder zur Behandlung von Sendern verwendet werden, die nicht lange genug zur Verfügung stehen, um eine vollständige Datei von einem Sender zu erhalten. Gemäß der Darstellung sendet jeder Sender 2404 einen Strom von Werten S(). Jeder Wert S() stellt ein Ausgabesymbol B(I) und einen Schlüssel I dar, dessen Verwendung vorstehend im Text beschrieben worden ist. Zum Beispiel ist der Wert S(A, nA) das "nA"-te Ausgabesymbol und der "nA"-te Schlüssel in einer Folge von an dem Sender 2402(A) erzeugten Ausgabesymbolen. Die Sequenz der Schlüssel von einem Sender unterscheidet sich vorzugsweise von der Folge der Schlüssel von den anderen Sendern, so dass die Sender Aufgaben nicht doppelt ausführen. Dies ist in der Abbildung aus Fig. 24 durch die Tatsache dargestellt, dass die Folge S() eine Funktion des Senders darstellt.
  • Hiermit wird festgestellt, dass die Sender 2402 nicht synchronisiert oder koordiniert werden müssen, um Aufgaben nicht doppelt auszuführen. Ohne Koordination ist es tatsächlich wahrscheinlich, dass jeder Sender sich an einer anderen Position in dessen Folge befindet (d. h. nA &ne; nB &ne; nc). Da eine zufällige Auswahl von K + A Ausgabesymbolen, unter Umständen mit einigen Stapeln von G zusätzlichen Ausgabesymbolen, zur Wiederherstellung einer Eingabedatei verwendet werden kann, sind die unkoordinierten Übertragungen nicht duplizierend sondern additiv.
  • Diese "Informations-Additivität" ist wiederum in der Abbildung aus Fig. 25 dargestellt. Dort werden Kopien einer Eingabedatei 2502 an eine Mehrzahl von Sendern 2504 vorgesehen (von denen in der Abbildung zwei dargestellt sind). Die Sender 2504 senden unabhängig voneinander aus dem Inhalt der Eingabedatei 2502 erzeugte Ausgabesymbole über die Kanäle 2506 an die Empfänger 2508. Wenn jeder Sender eine unterschiedliche Menge von Schlüsseln zur Symbolerzeugung verwendet, so sind die Ströme wahrscheinlich unabhängig und additiv (d. h. sie ergänzen den zur Wiederherstellung von Eingabesymbolen verwendeten Informationsvorrat) und nicht duplikativ. Jeder der beiden Sender muss unter Umständen nur (K + A)/2 Ausgabesymbole übermitteln, bevor der Decodierer des Empfängers die vollständige Eingabedatei wiederherstellen kann.
  • Unter Verwendung von zwei Empfängern und zwei Sendern kann die von einer Empfängereinheit 2510 empfangene Gesamtinformationsmenge bis zu dem Vierfachen der über einen Kanal 2506 verfügbaren Informationen betragen. Die Informationsmenge kann geringer sein als das Vierfache der Einzelkanalinformationen, wenn die Sender zum Beispiel die gleichen Daten an beide Empfänger senden. In diesem Fall ist die Informationsmenge an der Empfangseinheit 2510 mindestens doppelt so groß und häufig größer, wenn in einem Kanal Daten verloren gehen. Hiermit wird festgestellt, dass für den Fall, dass die Sender nur ein einziges Signal senden und sich die Empfänger zu unterschiedlichen Zeiten innerhalb des Empfangsbereichs befinden, ein Vorteil gegeben ist, dass mehr als ein Empfänger von jedem Sender empfängt. In der Abbildung aus Fig. 25 führt die Empfängereinheit 2510 die ähnliche Funktionen aus wie die Funktionen des Empfängers 150, des Decodierers 155, der Schlüssel-Wiederherstellungseinrichtung 160 und der Eingabedatei-Wiedervereinigungseinrichtung 165 aus der Abbildung aus Fig. 1.
  • In einigen Ausführungsbeispielen wird die Eingabedatei 2502 in einer Rechenvorrichtung mit zwei Codierern codiert, so dass die Rechenvorrichtung eine Ausgabe für einen Sender und eine andere Ausgabe für den anderen Sender vorsehen kann. Andere Variationen dieser Beispiele sollten bei einer Betrachtung der Offenbarung deutlich werden.
  • Hiermit wird festgestellt, dass die hierin verwendete Vorrichtung und das Verfahren zum Codieren auch in anderen Kommunikationssituationen verwendet werden können und nicht auf Kommunikationsnetzwerke wie das Internet beschränkt sind. zum Beispiel verwendet auch die Compact Disk-Technologie Lösch- und Fehlerkorrekturcodes zur Behandlung des Problems verkratzter Disks, und wobei die Technologie von der Nutzung von Kettenreaktionscodes zum Speichern von Informationen profitieren würde. Als weiteres Beispiel können Satellitensysteme Löschcodes als Ausgleich für Energieanforderungen für die Übertragung verwenden, wobei absichtlich mehr Fehler durch die reduzierte Leistung zugelassen werden, und wobei die Kettenreaktionscodierung für diese Anwendung nützlich wäre. Ferner wurden Löschcodes für die Entwicklung von RAID-Systemen (Redundant Arrays of Independent Disks) in Bezug auf die Zuverlässigkeit der Informationsspeicherung verwendet. Die vorliegende Erfindung kann sich somit auch in anderen Anwendungen als in den vorstehenden Beispielen als nützlich erweisen, wenn Codes zur Behandlung der Probleme potenziell verlustbehafteter oder fehlerhafter Daten eingesetzt werden.
  • In einigen bevorzugten Ausführungsbeispielen werden Anweisungen (oder Software) zur Ausführung der vorstehenden Kommunikationsprozesse an zwei oder mehr Mehrzweck- Rechenvorrichtungen vorgesehen, die über ein möglicherweise verlustbehaftetes Kommunikationsmedium kommunizieren. Die Anzahl der Vorrichtungen kann von einem Sender und einem Empfänger bis hin zu jeder beliebigen Anzahl von sendenden und/oder empfangenden Vorrichtungen reichen. Das die Vorrichtungen verbindende Medium kann verdrahtet, optisch, schnurlos oder dergleichen sein. Die vorstehend beschriebenen Kommunikationssysteme weisen viele Verwendungszwecke auf, die aus der vorliegenden Beschreibung deutlich werden sollten. ANHANG A. QUELLCODE

Claims (26)

1. Verfahren zur Erzeugung eines Ausgabesymbols, wobei das Ausgabesymbol aus einem Ausgabealphabet ausgewählt wird, und wobei das Ausgabesymbol derart beschaffen ist, dass eine Eingabedatei, welche eine geordnete Mehrzahl von Eingabesymbolen aufweist, die alle aus einem Eingabealphabet ausgewählt werden, aus einem Satz dieser Ausgabesymbole wiederhergestellt werden kann, wobei das Verfahren die folgenden Schritte umfasst:
Ermitteln eines Schlüssels I für das Ausgabesymbol, wobei der Schlüssel aus einem Schlüsselalphabet ausgewählt wird, und wobei die Anzahl der möglichen Schlüssel in dem Schlüsselalphabet deutlich größer ist als die Anzahl der Eingabesymbole in der Eingabedatei;
Berechnen einer Liste AL(I) gemäß einer vorbestimmten Funktion I, wobei AL(I) W(I) zugeordneter Eingabesymbole anzeigt, die dem Ausgabesymbol zugeordnet sind, und wobei Gewichtungen W positive ganze Zahlen darstellen, die zwischen mindestens zwei Werten variieren und größer sind als Eins für mindestens einen Wert von I; und
Erzeugen eines Ausgabesymbolwerts B(I) aus einer vorbestimmten Funktion der durch AL(I) angezeigten zugeordneten Eingabesymbole.
2. Verfahren nach Anspruch 1, wobei der Schritt des Ermittelns des Schlüssels I den Schritt des Berechnens des Schlüssels I gemäß einer Zufallsfunktion oder einer Pseudozufallsfunktion umfasst.
3. Verfahren nach Anspruch 1, wobei der Schritt des Berechnens den Schritt des Berechnens von W(I) gemäß einer Zufallsfunktion oder einer Pseudozufallsfunktion von I umfasst.
4. Verfahren nach Anspruch 1, wobei der Schritt des Berechnens den Schritt des Berechnens von AL(I) gemäß einer Zufallsfunktion oder einer Pseudozufallsfunktion von I umfasst.
5. Verfahren nach Anspruch 1, wobei der Schritt des Berechnens die folgenden Schritte umfasst:
Berechnen, gemäß einer vorbestimmten Funktion von I und einer Wahrscheinlichkeitsverteilung,
einer Gewichtung W(I), wobei die Wahrscheinlichkeitsverteilung mindestens zwei positive ganze Zahlen umfasst, von denen mindestens eine größer ist als Eins;
Berechnen eines Listeneintrags für die Liste AL(I); und
Wiederholen des Schritts des Berechnens des Listeneintrags für die Liste AL(I), bis W(I) Listeneinträge berechnet worden sind.
6. Verfahren nach Anspruch 5, wobei der Schritt des Berechnens von W(I) den Schritt des Bestimmens von W(I) umfasst, so dass W näherungsweise einer vorbestimmten Verteilung über das Schlüsselalphabet entspricht.
7. Verfahren nach Anspruch 6, wobei es sich bei der vorbestimmten Verteilung um eine Gleichverteilung handelt.
8. Verfahren nach Anspruch 6, wobei es sich bei der vorbestimmten Verteilung um eine Glockenkurvenverteilung handelt.
9. Verfahren nach Anspruch 6, wobei die vorbestimmte Verteilung derart gegeben ist, dass W = 1 eine Wahrscheinlichkeit von 1/K aufweist, wobei K die Anzahl der Eingabesymbole in der Eingabedatei darstellt, und wobei W = i eine Wahrscheinlichkeit von 1/i(i - 1) für i = 2, ... K aufweist.
10. Verfahren nach Anspruch 6, wobei die vorbestimmte Verteilung derart gegeben ist, dass bei gegebenen einstellbaren Parametern R1 und R2 und mit K gleich der Anzahl der Eingabesymbole in der Eingabedatei, die Gewichtung W = 1 eine Wahrscheinlichkeit aufweist, die proportional zu R1/K ist, wobei Gewichtungen in der niedergewichteten Klasse, die von der Gewichtung W = 2 bis zu der Gewichtung W = K/R2 - 1 reichen, eine Wahrscheinlichkeit aufweisen, die proportional ist zu 1/(W(W - 1)(1 - W·R2/K), und wobei die Gewichtungen in einer hochgewichteten Klasse, die von der Gewichtung W = K/R2 bis zu der Gewichtung W = K reichen, eine ausgewählte Wahrscheinlichkeitsverteilung auf weisen.
11. Verfahren nach Anspruch 1, wobei die vorbestimmte Funktion der durch AL(I) angezeigten zugeordneten Eingabesymbole eine exklusive ODER-Funktion (XOR) der durch AL(I) angezeigten Eingabesymbole darstellt.
12. Verfahren nach Anspruch 1, wobei es sich bei dem Eingabealphabet und dem Ausgabealphabet um das gleiche Alphabet handelt.
13. Verfahren nach Anspruch 1, wobei das Eingabealphabet 2Mi Symbole umfasst, und wobei jedes Eingabesymbol Mi Bits codiert, und wobei das Ausgabealphabet 2Mo Symbole umfasst, und wobei jedes Ausgabesymbol Mo Bits codiert.
14. Verfahren nach Anspruch 1, wobei jeder folgende Schlüssel I um Eins größer ist als der vorherige Schlüssel.
15. Verfähren zur Codierung einer Mehrzahl von Ausgabesymbole, die jeweils Anspruch 1 entsprechen, wobei das Verfahren ferner die folgenden Schritte umfasst:
Erzeugen eines Schlüssels I für jedes zu erzeugende Ausgabesymbol; und
Ausgeben jedes der erzeugten Ausgabesymbole als eine Ausgabefolge, die über einen Datenlöschkanal übermittelt wird.
16. Verfahren nach Anspruch 15, wobei jeder Schlüssel I unabhängig von den anderen ausgewählten Schlüsseln ausgewählt wird.
17. Verfahren nach Anspruch 1, wobei der Schritt des Berechnens von AL(I) die folgenden Schritte umfasst:
Kennzeichnen der Anzahl K an Eingabesymbolen in der Eingabedatei, zumindest näherungsweise, und einer Gewichtung W(I);
Bestimmen der kleinsten Primzahl P, die größer oder gleich K ist;
wenn P größer ist als K, wird die Eingabedatei mindestens logisch aufgefüllt mit P-K Auffüll-Eingabesymbolen;
Erzeugen einer ersten ganzen Zahl X, so dass 1 &le; X < P gilt, und einer zweiten ganzen Zahl Y, so dass 0 &le; Y < P gilt;
Festlegen jedes J-ten Eintrags in AL(I) auf ((Y + (J - 1) ·X) mod P) für jedes J von 1 bis W(I).
18. Verfahren nach Anspruch 17, wobei der Schritt des Festlegens des J-ten Eintrags in AL(I) für jedes J die folgenden Schritte umfasst:
Festlegen des ersten Eintrags V[J = 0] in einem Array von V bis Y;
Festlegen des J-ten Eintrags V[J] in dem Array V bis (V[J - 1] + X)mod P) für jedes J von 1 bis W(I) minus Eins; und
Verwenden des Array V als die Liste AL(I).
19. Verfahren zur Übermittlung von Daten von einer Quelle an ein Ziel über einen Paketkommunikationskanal, wobei das Verfahren die folgenden Schritte umfasst:
a) Anordnen der zu übermittelnden Daten als geordneter Satz von Eingabesymbolen, die alle aus einem Eingabealphabet ausgewählt werden und eine Position in den Daten aufweisen;
b) Erzeugen einer Mehrzahl von Ausgabesymbolen, die alle aus einem Ausgabealphabet ausgewählt werden, wobei jedes Ausgabesymbol der Mehrzahl von Ausgabesymbolen durch die folgenden Schritte erzeugt wird:
1) Auswahl eines Schlüssels I für das zu erzeugende Ausgabesymbol aus einem Schlüsselalphabet;
2) Bestimmen einer Gewichtung W(I) als eine Funktion von I, wobei die Gewichtungen W positive ganze zahlen darstellen, die zwischen mindestens zwei Werten variieren, dem Schlüsselalphabet zugehörig sind und für mindestens einige Schlüssel in dem Schlüsselalphabet größer sind als Eins;
3) Auswählen von W(I) der Eingabesymbole gemäß einer Funktion von I, so dass eine Liste AL(I) von W(I) Eingabesymbolen gebildet wird, die dem Ausgabe symbol zugeordnet sind; und
4) Berechnen eines Werts B(I) des Ausgabesymbols aus einer vorbestimmten Wertefunktion der zugeordneten W(I) Eingabesymbole;
c) Paketieren mindestens eines der Mehrzahl von Ausgabesymbolen in jedes einer Mehrzahl von Paketen;
d) Übermitteln der Mehrzahl von Paketen über den Paketkommunikationskanal;
e) Empfangen mindestens einiger der Mehrzahl von Paketen an dem Ziel; und
f) Decodieren der Daten aus der Mehrzahl der empfangenen Pakete.
20. Verfahren nach Anspruch 19, wobei der Schritt des Decodierens der Daten die folgenden Schritte umfasst:
1) Verarbeiten jedes empfangenen Ausgabesymbols durch die folgenden Schritte:
a) Bestimmen des Schlüssels I für das Ausgabesymbol;
b) Bestimmen der Gewichtung W(I) für das Ausgabe symbol; und
c) Bestimmen der W(I) zugeordneten Eingabesymbole für das Ausgabesymbol;
2) Bestimmen, ob ausreichende Informationen zum Decodieren der Eingabesymbole empfangen werden; und
3) Decodieren der Eingabesymbole, die aus den empfangenen Informationen decodiert werden können.
21. Verfahren nach Anspruch 20, wobei der Schritt des Bestimmens des Schlüssels I den Schritt der zumindest teilweisen Bestimmung des Schlüssels I aus den in Paketen zugeführten Daten umfasst, die über den Paketkommunikationskanal empfangen werden.
22. Verfahren nach Anspruch 20, wobei der Schritt des Decodierens die folgenden Schritte umfasst:
Sortieren der empfangenen Ausgabesymbole nach Gewichtung und
Verarbeiten der Ausgabesymbole nach Gewichtung, wobei die Symbole mit niedriger Gewichtung vor den Symbolen mit hoher Gewichtung verarbeitet werden.
23. Verfahren nach Anspruch 19, wobei der Schritt des Decodierens die folgenden Schritte umfasst:
1) Verarbeiten jedes empfangenen Ausgabesymbols durch die folgenden Schritte:
a) Bestimmen der Gewichtung W(I) für das Ausgabesymbol;
b) Bestimmen der Gewichtung W(I) zugeordneter Eingabesymbole für das Ausgabesymbol; und
c) Speichern des Werts B(I) des Ausgabesymbols in einer Ausgabesymboltabelle gemeinsam mit der Gewichtung W(I) und den Positionen von W(I), die dem Ausgabesymbol zugeordnet sind;
2) Empfangen zusätzlicher Ausgabesymbole und Verarbeiten dieser gemäß Schritt 1) und dessen Unterschritte;
3) und wobei für jedes Ausgabesymbol OS1 mit einer Gewichtung von Eins und nicht als verbrauchtes Ausgabesymbol gekennzeichnete Symbol, die folgenden Schritte ausgeführt werden:
a) Berechnen eines Eingabesymbols für eine Eingabesymbolposition gemäß OS1;
b) Kennzeichnen verbundener Ausgabesymbole in der Ausgabesymboltabelle, wobei es sich bei einem verbundenen Ausgabesymbol um ein Ausgabesymbol handelt, das eine Funktion des in Schritt 3)a) verarbeiteten Eingabesymbols darstellt;
c) Neuberechnen der verbundenen Ausgabesymbole unabhängig von dem in Schritt 3)a) verarbeiteten Eingabesymbol;
d) Herabsetzen der Gewichtungen der in dem Schritt 3)c) neuberechneten Ausgabesymbole um Eins; und
e) Bezeichnen von OS1 als verbrauchtes Ausgabesymbol; und
4) Wiederholen der vorstehenden Schritte 1) bis 3), bis der geordnete Satz von Eingabesymbolen am Ziel wiederhergestellt ist.
24. Verfahren nach Anspruch 23, wobei der Schritt des Bezeichnens einen Schritt der Zuweisung einer Gewichtung von Null zu dem verbrauchten Ausgabesymbol darstellt.
25. Verfahren nach Anspruch 23, wobei der Schritt des Bezeichnens den Schritt des Entfernens des verbrauchten Ausgabesymbols aus der Ausgabesymboltabelle umfasst.
26. Verfahren nach Anspruch 19, wobei der Schritt des Paketierens einen Schritt des Paketierens einer Mehrzahl von Ausgabe Symbolen in ein Paket darstellt, wobei das Verfahren ferner den Schritt des Verwendens einer Position eines Ausgabesymbols in einem Paket als Bestandteil des Schlüssels für das Ausgabesymbol umfasst.
DE69904621T 1998-09-23 1999-09-17 Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollen Expired - Lifetime DE69904621T2 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
US10147398P 1998-09-23 1998-09-23
US09/246,015 US6307487B1 (en) 1998-09-23 1999-02-05 Information additive code generator and decoder for communication systems
PCT/US1999/021574 WO2000018017A1 (en) 1998-09-23 1999-09-17 Lost packet recovery method for packet transmission protocols

Publications (2)

Publication Number Publication Date
DE69904621D1 DE69904621D1 (de) 2003-01-30
DE69904621T2 true DE69904621T2 (de) 2003-09-25

Family

ID=26798300

Family Applications (2)

Application Number Title Priority Date Filing Date
DE69904621T Expired - Lifetime DE69904621T2 (de) 1998-09-23 1999-09-17 Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollen
DE69941342T Expired - Lifetime DE69941342D1 (de) 1998-09-23 1999-09-17 Verfahren und System zum übertragen und empfangen von Information mit einem Kettenreaktionscode

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE69941342T Expired - Lifetime DE69941342D1 (de) 1998-09-23 1999-09-17 Verfahren und System zum übertragen und empfangen von Information mit einem Kettenreaktionscode

Country Status (14)

Country Link
US (7) US6307487B1 (de)
EP (4) EP1241795B1 (de)
JP (2) JP3976163B2 (de)
KR (1) KR100598662B1 (de)
AT (2) ATE230175T1 (de)
AU (1) AU767140B2 (de)
CA (1) CA2345237C (de)
DE (2) DE69904621T2 (de)
DK (1) DK2136473T3 (de)
ES (2) ES2401177T3 (de)
HK (2) HK1038995B (de)
IL (1) IL140705A0 (de)
PT (1) PT2136473E (de)
WO (1) WO2000018017A1 (de)

Families Citing this family (188)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6320520B1 (en) * 1998-09-23 2001-11-20 Digital Fountain Information additive group code generator and decoder for communications systems
US6307487B1 (en) 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7068729B2 (en) * 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US7243285B2 (en) * 1998-09-23 2007-07-10 Digital Fountain, Inc. Systems and methods for broadcasting information additive codes
DE19860531C1 (de) * 1998-12-30 2000-08-10 Univ Muenchen Tech Verfahren zur Übertragung codierter digitaler Signale
FR2799592B1 (fr) * 1999-10-12 2003-09-26 Thomson Csf Procede de construction et de codage simple et systematique de codes ldpc
US6704730B2 (en) 2000-02-18 2004-03-09 Avamar Technologies, Inc. Hash file system and method for use in a commonality factoring system
US7194504B2 (en) * 2000-02-18 2007-03-20 Avamar Technologies, Inc. System and method for representing and maintaining redundant data sets utilizing DNA transmission and transcription techniques
US7062648B2 (en) * 2000-02-18 2006-06-13 Avamar Technologies, Inc. System and method for redundant array network storage
US6826711B2 (en) 2000-02-18 2004-11-30 Avamar Technologies, Inc. System and method for data protection with multidimensional parity
US8335994B2 (en) * 2000-02-25 2012-12-18 Salmon Alagnak Llc Method and apparatus for providing content to a computing device
US8131867B1 (en) 2000-06-01 2012-03-06 Qualcomm Incorporated Dynamic layer congestion control for multicast transport
US6772217B1 (en) * 2000-08-23 2004-08-03 International Business Machines Corporation Internet backbone bandwidth enhancement by initiating an additional data stream when individual bandwidth are approximately equal to the backbone limit
US6486803B1 (en) * 2000-09-22 2002-11-26 Digital Fountain, Inc. On demand encoding with a window
US6411223B1 (en) * 2000-10-18 2002-06-25 Digital Fountain, Inc. Generating high weight encoding symbols using a basis
US6810398B2 (en) * 2000-11-06 2004-10-26 Avamar Technologies, Inc. System and method for unorchestrated determination of data sequences using sticky byte factoring to determine breakpoints in digital sequences
US7072971B2 (en) 2000-11-13 2006-07-04 Digital Foundation, Inc. Scheduling of multiple files for serving on a server
US7240358B2 (en) * 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
US7095729B2 (en) * 2000-12-22 2006-08-22 Intel Corporation Method for multimedia communication over packet channels
US7277950B1 (en) * 2000-12-29 2007-10-02 Swarmcast, Inc. Packet transfer mechanism over a peer to peer network
US20020129159A1 (en) * 2001-03-09 2002-09-12 Michael Luby Multi-output packet server with independent streams
US20030055915A1 (en) * 2001-09-14 2003-03-20 Ngo Kin Cuc Method and apparatus for transmitting data over a network
JP3808769B2 (ja) * 2001-12-27 2006-08-16 三菱電機株式会社 Ldpc符号用検査行列生成方法
CN100592641C (zh) * 2002-02-28 2010-02-24 三菱电机株式会社 Ldpc码用检查矩阵生成方法及检查矩阵生成装置
US6677864B2 (en) 2002-04-18 2004-01-13 Telefonaktiebolaget L.M. Ericsson Method for multicast over wireless networks
US9240810B2 (en) 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
EP2278719B1 (de) * 2002-06-11 2013-12-18 Digital Fountain, Inc. Decodieren von Kettenreaktionscodes durch Inaktivierung
JP4120461B2 (ja) * 2002-07-12 2008-07-16 住友電気工業株式会社 伝送データ生成方法及び伝送データ生成装置
JP4546246B2 (ja) 2002-10-05 2010-09-15 デジタル ファウンテン, インコーポレイテッド 連鎖的暗号化反応の系統的記号化および復号化
US7032166B2 (en) 2002-12-03 2006-04-18 Massachusetts Institute Of Technology Method and apparatus for protecting data
WO2006033652A1 (en) * 2003-02-14 2006-03-30 Digital Fountain, Inc. Systems and methods for broadcasting information additive codes
JP4337375B2 (ja) * 2003-03-14 2009-09-30 株式会社デンソー 情報配信サーバ、受信端末、情報配信システム、予約端末、および予約サーバ
US20040199669A1 (en) * 2003-04-04 2004-10-07 Riggs Nicholas Dale Apparatus and method for efficiently and securely transferring files over a communications network
US7337317B2 (en) 2003-07-03 2008-02-26 Hand Held Products, Inc. Memory data copying system for devices
CN1954501B (zh) 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
JP4685787B2 (ja) * 2003-10-08 2011-05-18 デジタル ファウンテン, インコーポレイテッド Fecベース信頼度制御プロトコル
US7266716B2 (en) * 2003-10-23 2007-09-04 Hewlett-Packard Development Company, L.P. Method and recovery of data using erasure coded data from stripe blocks
CN101582698B (zh) * 2003-12-01 2014-02-12 数字方敦股份有限公司 使用基于子码元的代码来保护数据不被删除
US7458003B2 (en) * 2003-12-01 2008-11-25 Qualcomm Incorporated Low-complexity, capacity-achieving code for communication systems
US7912159B2 (en) * 2004-01-26 2011-03-22 Hewlett-Packard Development Company, L.P. Enhanced denoising system
JP4506185B2 (ja) * 2004-02-06 2010-07-21 ソニー株式会社 受信装置および方法、並びにプログラム
FR2867925B1 (fr) * 2004-03-22 2006-05-19 Canon Kk Codage de canal adapte aux erreurs rafale
US7240236B2 (en) * 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
CN103124182B (zh) 2004-05-07 2017-05-10 数字方敦股份有限公司 文件下载和流系统
US7546342B2 (en) * 2004-05-14 2009-06-09 Microsoft Corporation Distributed hosting of web content using partial replication
US7203871B2 (en) * 2004-06-03 2007-04-10 Cisco Technology, Inc. Arrangement in a network node for secure storage and retrieval of encoded data distributed among multiple network nodes
US20060037037A1 (en) * 2004-06-14 2006-02-16 Tony Miranz System and method for providing virtual video on demand
DE102004063950B4 (de) * 2004-08-07 2009-02-19 Tropf, Hermann Kanalcodiervorrichtung
US7721184B2 (en) * 2004-08-11 2010-05-18 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
WO2006021909A1 (en) * 2004-08-27 2006-03-02 Koninklijke Philips Electronics N.V. Method of distributing multimedia content
US7533324B2 (en) * 2004-09-22 2009-05-12 Kencast, Inc. System, method and apparatus for FEC encoding and decoding
US7594154B2 (en) 2004-11-17 2009-09-22 Ramakrishna Vedantham Encoding and decoding modules with forward error correction
KR100703271B1 (ko) * 2004-11-23 2007-04-03 삼성전자주식회사 통합노드 프로세싱을 이용한 저밀도 패리티 검사 코드복호 방법 및 장치
US8270901B2 (en) * 2004-12-17 2012-09-18 Martin E. Hellman Dropout-resistant media broadcasting system
US7865917B2 (en) * 2004-12-17 2011-01-04 Martin E Hellman Security enhanced tiered subscription broadcast system
US8627354B2 (en) 2004-12-17 2014-01-07 Martin E. Hellman Tiered subscription broadcast system
US7474631B2 (en) * 2005-01-13 2009-01-06 International Business Machines Corporation On-demand group communication services with quality of service (QoS) guarantees
US7739580B1 (en) 2005-02-17 2010-06-15 Kencast, Inc. System, method and apparatus for reducing blockage losses on information distribution networks
US9176955B2 (en) 2005-03-09 2015-11-03 Vvond, Inc. Method and apparatus for sharing media files among network nodes
US8904463B2 (en) 2005-03-09 2014-12-02 Vudu, Inc. Live video broadcasting on distributed networks
US8219635B2 (en) 2005-03-09 2012-07-10 Vudu, Inc. Continuous data feeding in a distributed environment
US7698451B2 (en) 2005-03-09 2010-04-13 Vudu, Inc. Method and apparatus for instant playback of a movie title
US20080022343A1 (en) * 2006-07-24 2008-01-24 Vvond, Inc. Multiple audio streams
US7937379B2 (en) 2005-03-09 2011-05-03 Vudu, Inc. Fragmentation of a file for instant access
US20090019468A1 (en) * 2005-03-09 2009-01-15 Vvond, Llc Access control of media services over an open network
US20090025046A1 (en) * 2005-03-09 2009-01-22 Wond, Llc Hybrid architecture for media services
US7191215B2 (en) * 2005-03-09 2007-03-13 Marquee, Inc. Method and system for providing instantaneous media-on-demand services by transmitting contents in pieces from client machines
JP4917023B2 (ja) * 2005-03-31 2012-04-18 三菱電機株式会社 誤り訂正符号化装置
JP4814315B2 (ja) * 2005-05-04 2011-11-16 シーメンス エンタープライズ コミュニケーションズ ゲゼルシャフト ミット ベシュレンクテル ハフツング ウント コンパニー コマンディートゲゼルシャフト 訂正記号に割り当てられたインデックスを求める方法および装置
US20060265511A1 (en) * 2005-05-20 2006-11-23 Riggs Nicholas D Apparatus and method for efficiently and securely transferring files over a communications network
US7676735B2 (en) * 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
US8099511B1 (en) 2005-06-11 2012-01-17 Vudu, Inc. Instantaneous media-on-demand
US7840178B2 (en) * 2005-07-12 2010-11-23 Martin E. Hellman FM broadcast system competitive with satellite radio
US8223643B1 (en) 2005-09-06 2012-07-17 Kencast, Inc. Method for packet-level FEC encoding a stream of source packets using shifted interleaving
JP5045440B2 (ja) * 2005-09-07 2012-10-10 日本電気株式会社 データ伝送システム
JP4546387B2 (ja) * 2005-11-17 2010-09-15 富士通株式会社 バックアップシステム、方法及びプログラム
US20070133691A1 (en) * 2005-11-29 2007-06-14 Docomo Communications Laboratories Usa, Inc. Method and apparatus for layered rateless coding
US7613979B1 (en) 2005-12-07 2009-11-03 Sony Computer Entertainment Inc. Network communication protocol for large scale distribution of streaming content
US7596673B2 (en) * 2005-12-08 2009-09-29 Sony Corporation Failure tolerant data storage
KR100922960B1 (ko) * 2005-12-27 2009-10-22 삼성전자주식회사 다중 안테나들을 이용하는 무선 통신 시스템에서 전송 효율증대를 위한 신호 송수신 방법 및 그 시스템
JP4718340B2 (ja) * 2006-02-02 2011-07-06 富士通株式会社 ストレージシステム、制御方法及びプログラム
US7480848B2 (en) * 2006-02-10 2009-01-20 The Directv Group, Inc. Methods and apparatus to select tornado error correction parameters
EP1980074A4 (de) * 2006-02-13 2012-12-19 Digital Fountain Inc Kontinuierliche vorwärtsfehlerkorrektur-übertragung mit summierung paralleler datenströme zur berechnung der vorwärtsfehlerkorrektur
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
JP4808054B2 (ja) * 2006-03-17 2011-11-02 富士通株式会社 データ転送方法及び,これを適用する通信システム及びプログラム
JP4696008B2 (ja) * 2006-03-20 2011-06-08 富士通株式会社 Ip送信装置およびip送信方法
US8364891B2 (en) * 2006-04-04 2013-01-29 Permabit Technology Corporation Storage assignment technique for scalable and fault tolerant storage system
KR101381551B1 (ko) 2006-05-05 2014-04-11 하이버 인크 그룹 기반의 완료 및 증분 컴퓨터 파일 백업 시스템, 프로세스 및 장치
WO2007134196A2 (en) * 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US20070276951A1 (en) * 2006-05-25 2007-11-29 Nicholas Dale Riggs Apparatus and method for efficiently and securely transferring files over a communications network
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US20100211690A1 (en) * 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US8006160B2 (en) * 2006-06-29 2011-08-23 Digital Fountain, Inc. Efficient encoding and decoding methods for representing schedules and processing forward error correction codes
US7760699B1 (en) 2006-08-05 2010-07-20 Sandeep Malik System and method for efficient transmission of electronic information
US8296812B1 (en) 2006-09-01 2012-10-23 Vudu, Inc. Streaming video using erasure encoding
US7924761B1 (en) 2006-09-28 2011-04-12 Rockwell Collins, Inc. Method and apparatus for multihop network FEC encoding
US8707139B2 (en) * 2006-10-18 2014-04-22 Kencast, Inc. Systems, methods, apparatus, and computer program products for providing forward error correction with low latency
US8117514B2 (en) * 2006-11-13 2012-02-14 Qualcomm Incorporated Methods and apparatus for encoding data in a communication network
CN101563872B (zh) * 2006-12-14 2015-11-25 汤姆逊许可证公司 通信系统的无比率编码解码方法
CN101558592B (zh) * 2006-12-14 2012-07-04 汤姆逊许可证公司 通信系统中的链接编码/解码
EP2103025B1 (de) * 2006-12-14 2013-03-27 Thomson Licensing Arq mit adaptiver modulation für kommunikationssysteme
WO2008073144A1 (en) 2006-12-14 2008-06-19 Thomson Licensing Rateless encoding in communication systems
EP2103024B1 (de) * 2006-12-14 2018-04-25 Thomson Licensing Modulationsindikationsverfahren für kommunikationssysteme
US7839851B2 (en) * 2006-12-22 2010-11-23 Ntt Docomo, Inc. Method and apparatus for opportunistic multicasting with coded scheduling in wireless networks
TW200828328A (en) * 2006-12-28 2008-07-01 Genesys Logic Inc Method of improving accessing reliability of flash memory
US8181093B2 (en) * 2006-12-29 2012-05-15 Interdigital Technology Corporation Method and apparatus for transmitting and receiving multimedia broadcast multicast services via a dedicated downlink carrier
AU2008205320B2 (en) * 2007-01-08 2010-10-21 Interdigital Technology Corporation Method and apparatus for multicasting with feedback information
US20080205229A1 (en) * 2007-02-26 2008-08-28 Yung-Chih Li Method of identifying optical disc
US7949778B2 (en) * 2007-03-27 2011-05-24 Kencast, Inc. Systems, methods, apparatus and computer program products for providing packet-level FEC with higher throughput using user datagram protocol (UDP)
CN101296055B (zh) * 2007-04-29 2013-01-09 华为技术有限公司 数据包收发方法及装置
JP4487211B2 (ja) * 2007-06-01 2010-06-23 カシオ計算機株式会社 接続制御装置及び、ネットワーク接続制御プログラム
US7876865B2 (en) * 2007-06-08 2011-01-25 COM DEV International Ltd System and method for decoding automatic identification system signals
US20090161797A1 (en) * 2007-06-08 2009-06-25 Cowles Philip R Satellite detection of automatic identification system signals
US8635309B2 (en) 2007-08-09 2014-01-21 Hand Held Products, Inc. Methods and apparatus to change a feature set on data collection devices
EP2203836A4 (de) 2007-09-12 2014-11-05 Digital Fountain Inc Erzeugen und übermitteln von quellenidentifikationsinformationen zur ermöglichung einer zuverlässigen kommunikation
EP2066038A1 (de) 2007-11-30 2009-06-03 Deutsche Telekom AG Verfahren und System zur Konstruktion und Dekodierung ratenloser Codes mit Teilinformationen
US8442070B1 (en) * 2008-02-01 2013-05-14 Hobnob, Inc. Fractional threshold encoding and aggregation
US8418034B2 (en) * 2008-02-08 2013-04-09 Kencast, Inc. Systems, methods, apparatus and computer program products for highly reliable file delivery using compound and braided FEC encoding and decoding
EP2288991B8 (de) 2008-05-05 2018-02-28 Amplidata NV Verfahren zur speicherung eines datensatzes in einem verteilten speichersystem, verteiltes speichersystem und computerprogrammprodukt zur verwendung mit diesem verfahren
MX2010012117A (es) * 2008-05-07 2010-12-01 Digital Fountain Inc Manipulacion de canal rapida y proteccion de corriente de alta calidad sobre un canal de difusion.
KR101590633B1 (ko) * 2008-11-11 2016-02-02 삼성전자주식회사 슬라이스 단위로 분할된 동영상을 처리하는 동영상 부호화/복호화장치 및 동영상 부호화/복호화방법
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US20100263007A1 (en) * 2009-04-09 2010-10-14 Jinyun Zhang Method and Apparatus for Increasing Quality of IPTV Transmission
US9298722B2 (en) * 2009-07-16 2016-03-29 Novell, Inc. Optimal sequential (de)compression of digital data
KR20110011357A (ko) * 2009-07-28 2011-02-08 삼성전자주식회사 비트의 순서를 변경한 데이터의 부호화, 복호화 방법 및 장치
US9288010B2 (en) 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
US9015564B2 (en) 2009-08-19 2015-04-21 Qualcomm Incorporated Content delivery system with allocation of source data and repair data among HTTP servers
US8136018B2 (en) * 2009-08-24 2012-03-13 Sony Computer Entertainment Inc. Network communication protocol for large scale distribution of streaming content
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US8780788B2 (en) 2009-09-25 2014-07-15 Com Dev International Ltd. Systems and methods for decoding automatic identification system signals
US9136981B2 (en) 2010-03-03 2015-09-15 Qualcomm Incorporated Block aggregation of objects in a communication system
US8782734B2 (en) * 2010-03-10 2014-07-15 Novell, Inc. Semantic controls on data storage and access
KR101615384B1 (ko) * 2010-04-05 2016-04-25 삼성전자주식회사 통신 시스템에서의 채널 부호화 장치 및 방법
US8832103B2 (en) 2010-04-13 2014-09-09 Novell, Inc. Relevancy filter for new data based on underlying files
CN101826940A (zh) * 2010-04-19 2010-09-08 中兴通讯股份有限公司 一种对喷泉码中预译码集优化的方法和系统
US9225961B2 (en) 2010-05-13 2015-12-29 Qualcomm Incorporated Frame packing for asymmetric stereo video
US9331774B2 (en) 2010-06-09 2016-05-03 Exactearth Ltd. Systems and methods for segmenting a satellite field of view for detecting radio frequency signals
US9589164B2 (en) 2010-06-24 2017-03-07 Metrologic Instruments, Inc. Distinctive notice for different symbology information
US9189669B2 (en) 2010-06-24 2015-11-17 Metrologic Instruments, Inc. Distinctive notice for different symbology information
US9485546B2 (en) 2010-06-29 2016-11-01 Qualcomm Incorporated Signaling video samples for trick mode video representations
KR101005927B1 (ko) * 2010-07-05 2011-01-07 펜타시큐리티시스템 주식회사 웹 어플리케이션 공격 탐지 방법
US8918533B2 (en) 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
US9596447B2 (en) 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8806050B2 (en) 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
US20120047201A1 (en) 2010-08-20 2012-02-23 Nikhil Jain Apparatus and method of acquiring or distributing content
US8517269B2 (en) 2010-11-09 2013-08-27 Hand Held Products, Inc. Using a user'S application to configure user scanner
US8693501B2 (en) 2010-11-23 2014-04-08 The Chinese University Of Hong Kong Subset coding for communication systems
US9088888B2 (en) * 2010-12-10 2015-07-21 Mitsubishi Electric Research Laboratories, Inc. Secure wireless communication using rate-adaptive codes
WO2012089701A1 (en) 2010-12-27 2012-07-05 Amplidata Nv A distributed object storage system comprising performance optimizations
JP5529177B2 (ja) 2011-01-19 2014-06-25 ネイバー ビジネス プラットフォーム コーポレーション P2p基盤のストリーミングサービスでバッファリングを行うシステムおよび方法、並びにクライアントでバッファリングを処理するアプリケーションを配布するシステム
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US20170201271A9 (en) * 2011-06-21 2017-07-13 Centre National D'etudes Spatiales Method for encoding data in bursts
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
KR101933465B1 (ko) 2011-10-13 2019-01-11 삼성전자주식회사 이동 통신 시스템에서 패킷 송수신 장치 및 방법
JP5795446B2 (ja) 2011-11-01 2015-10-14 クゥアルコム・インコーポレイテッドQualcomm Incorporated Httpサーバの間でのソースデータおよび修復データの割り当てを伴うコンテンツ配送システム
US9130750B2 (en) * 2011-12-16 2015-09-08 Hughes Network Systems, Llc System and method for efficient retransmission over a satelline network
US9287897B2 (en) * 2012-01-30 2016-03-15 Broadcom Corporation Systematic rate-independent Reed-Solomon erasure codes
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery
US9015567B2 (en) 2012-04-12 2015-04-21 Com Dev International Ltd. Methods and systems for consistency checking and anomaly detection in automatic identification system signal data
US8608053B2 (en) 2012-04-30 2013-12-17 Honeywell International Inc. Mobile communication terminal configured to display multi-symbol decodable indicia
IN2014DN09106A (de) * 2012-05-03 2015-05-22 Ericsson Telefon Ab L M
US9413494B2 (en) 2013-01-17 2016-08-09 Qualcomm Incorporated FEC-based reliable transport control protocols for multipath streaming
BR112016002908B1 (pt) 2013-08-16 2021-11-03 Nippon Telegraph And Telephone Corporation Dispositivo para a decodificação de canais, e, método para a decodificação de canais
EP2863566B1 (de) 2013-10-18 2020-09-02 Université de Nantes Verfahren zur Rekonstruktion eines Datenblocks und Vorrichtung zur Verwendung davon
TWI523465B (zh) * 2013-12-24 2016-02-21 財團法人工業技術研究院 檔案傳輸系統和方法
US9311639B2 (en) 2014-02-11 2016-04-12 Digimarc Corporation Methods, apparatus and arrangements for device to device communication
US9596218B1 (en) 2014-03-03 2017-03-14 Google Inc. Methods and systems of encrypting messages using rateless codes
US10412151B2 (en) 2015-01-26 2019-09-10 Huawei Technologies Co., Ltd. Method and system for on-demand file repair
US10903858B2 (en) * 2015-05-27 2021-01-26 Quantum Corporation Dynamically variable error correcting code (ECC) system with hybrid rateless reed-solomon ECCs
US10009152B2 (en) * 2016-03-04 2018-06-26 Huawei Technologies Co., Ltd. System and method for rate-less multiple access
US10089189B2 (en) 2016-04-15 2018-10-02 Motorola Solutions, Inc. Devices and methods for receiving a data file in a communication system
TWI602409B (zh) 2016-08-15 2017-10-11 國立交通大學 資料傳輸方法與系統
WO2019010524A1 (en) * 2017-07-10 2019-01-17 The University Of Sydney METHOD AND APPARATUS FOR IMAGING A SCENE
US10417127B2 (en) * 2017-07-13 2019-09-17 International Business Machines Corporation Selective downstream cache processing for data access
US10419026B2 (en) 2017-11-27 2019-09-17 Goke Us Research Laboratory Method and apparatus for efficient data decoding
US10476524B2 (en) 2017-11-27 2019-11-12 Goke Us Research Laboratory Method and apparatus for efficient data decoding
US10771191B2 (en) 2018-03-09 2020-09-08 Kencast, Inc. System for highly reliable file delivery of using continuous FEC encoding/decoding
US10911013B2 (en) 2018-07-05 2021-02-02 Comcast Cable Communications, Llc Dynamic audio normalization process

Family Cites Families (550)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US3909721A (en) * 1972-01-31 1975-09-30 Signatron Signal processing system
US4365338A (en) * 1980-06-27 1982-12-21 Harris Corporation Technique for high rate digital transmission over a dynamic dispersive channel
US4965825A (en) 1981-11-03 1990-10-23 The Personalized Mass Media Corporation Signal processing apparatus and methods
US4589112A (en) * 1984-01-26 1986-05-13 International Business Machines Corporation System for multiple error detection with single and double bit error correction
US4901319A (en) 1988-03-18 1990-02-13 General Electric Company Transmission system with adaptive interleaving
GB8815978D0 (en) 1988-07-05 1988-08-10 British Telecomm Method & apparatus for encoding decoding & transmitting data in compressed form
US5136592A (en) 1989-06-28 1992-08-04 Digital Equipment Corporation Error detection and correction system for long burst errors
US5701582A (en) 1989-08-23 1997-12-23 Delta Beta Pty. Ltd. Method and apparatus for efficient transmissions of programs
US7594250B2 (en) 1992-04-02 2009-09-22 Debey Henry C Method and system of program transmission optimization using a redundant transmission sequence
US5421031A (en) 1989-08-23 1995-05-30 Delta Beta Pty. Ltd. Program transmission optimisation
US5329369A (en) 1990-06-01 1994-07-12 Thomson Consumer Electronics, Inc. Asymmetric picture compression
US5455823A (en) 1990-11-06 1995-10-03 Radio Satellite Corporation Integrated communications terminal
US5164963A (en) 1990-11-07 1992-11-17 At&T Bell Laboratories Coding for digital transmission
US5465318A (en) 1991-03-28 1995-11-07 Kurzweil Applied Intelligence, Inc. Method for generating a speech recognition model for a non-vocabulary utterance
US5379297A (en) 1992-04-09 1995-01-03 Network Equipment Technologies, Inc. Concurrent multi-channel segmentation and reassembly processors for asynchronous transfer mode
EP0543070A1 (de) * 1991-11-21 1993-05-26 International Business Machines Corporation Codierungsystem und -Verfahren, das quaternäre Codes anwendet
US5371532A (en) 1992-05-15 1994-12-06 Bell Communications Research, Inc. Communications architecture and method for distributing information services
US5425050A (en) 1992-10-23 1995-06-13 Massachusetts Institute Of Technology Television transmission system using spread spectrum and orthogonal frequency-division multiplex
US5372532A (en) 1993-01-26 1994-12-13 Robertson, Jr.; George W. Swivel head cap connector
EP0613249A1 (de) * 1993-02-12 1994-08-31 Altera Corporation Kundenspezifische Nachschlagetabelle mit einer verringerten Anzahl von Architektur Bits
DE4316297C1 (de) 1993-05-14 1994-04-07 Fraunhofer Ges Forschung Frequenzanalyseverfahren
AU665716B2 (en) 1993-07-05 1996-01-11 Mitsubishi Denki Kabushiki Kaisha A transmitter for encoding error correction codes and a receiver for decoding error correction codes on a transmission frame
US5590405A (en) 1993-10-29 1996-12-31 Lucent Technologies Inc. Communication technique employing variable information transmission
JP2576776B2 (ja) 1993-11-10 1997-01-29 日本電気株式会社 パケット伝送方法・パケット伝送装置
US5517508A (en) 1994-01-26 1996-05-14 Sony Corporation Method and apparatus for detection and error correction of packetized digital data
CA2140850C (en) 1994-02-24 1999-09-21 Howard Paul Katseff Networked system for display of multimedia presentations
US5566208A (en) 1994-03-17 1996-10-15 Philips Electronics North America Corp. Encoder buffer having an effective size which varies automatically with the channel bit-rate
US5432787A (en) 1994-03-24 1995-07-11 Loral Aerospace Corporation Packet data transmission system with adaptive data recovery method
FR2720503B1 (fr) * 1994-05-26 1996-06-21 Commissariat Energie Atomique Système de caractérisation thermomécanique de matériaux utilisant un dispositif de chauffage rapide par induction.
US5757415A (en) 1994-05-26 1998-05-26 Sony Corporation On-demand data transmission by dividing input data into blocks and each block into sub-blocks such that the sub-blocks are re-arranged for storage to data storage means
US5802394A (en) 1994-06-06 1998-09-01 Starlight Networks, Inc. Method for accessing one or more streams in a video storage system using multiple queues and maintaining continuity thereof
US5739864A (en) 1994-08-24 1998-04-14 Macrovision Corporation Apparatus for inserting blanked formatted fingerprint data (source ID, time/date) in to a video signal
US5568614A (en) 1994-07-29 1996-10-22 International Business Machines Corporation Data streaming between peer subsystems of a computer system
US5668948A (en) 1994-09-08 1997-09-16 International Business Machines Corporation Media streamer with control node enabling same isochronous streams to appear simultaneously at output ports or different streams to appear simultaneously at output ports
US5926205A (en) 1994-10-19 1999-07-20 Imedia Corporation Method and apparatus for encoding and formatting data representing a video program to provide multiple overlapping presentations of the video program
US5659614A (en) 1994-11-28 1997-08-19 Bailey, Iii; John E. Method and system for creating and storing a backup copy of file data stored on a computer
US5617541A (en) * 1994-12-21 1997-04-01 International Computer Science Institute System for packetizing data encoded corresponding to priority levels where reconstructed data corresponds to fractionalized priority level and received fractionalized packets
JP3614907B2 (ja) 1994-12-28 2005-01-26 株式会社東芝 データ再送制御方法及びデータ再送制御システム
EP0823153A4 (de) 1995-04-27 1999-10-20 Stevens Inst Technology Transportverfahren mit hoher integrität für zeitkritische multimedia-netzwerkanwendungen
US5835165A (en) 1995-06-07 1998-11-10 Lsi Logic Corporation Reduction of false locking code words in concatenated decoders
US5805825A (en) 1995-07-26 1998-09-08 Intel Corporation Method for semi-reliable, unidirectional broadcast information services
US6079041A (en) 1995-08-04 2000-06-20 Sanyo Electric Co., Ltd. Digital modulation circuit and digital demodulation circuit
US5754563A (en) 1995-09-11 1998-05-19 Ecc Technologies, Inc. Byte-parallel system for implementing reed-solomon error-correcting codes
KR0170298B1 (ko) 1995-10-10 1999-04-15 김광호 디지탈 비디오 테이프의 기록 방법
US5751336A (en) 1995-10-12 1998-05-12 International Business Machines Corporation Permutation based pyramid block transmission scheme for broadcasting in video-on-demand storage systems
JP3305183B2 (ja) 1996-01-12 2002-07-22 株式会社東芝 ディジタル放送受信端末装置
US6012159A (en) 1996-01-17 2000-01-04 Kencast, Inc. Method and system for error-free data transfer
US5852565A (en) 1996-01-30 1998-12-22 Demografx Temporal and resolution layering in advanced television
US5936659A (en) 1996-01-31 1999-08-10 Telcordia Technologies, Inc. Method for video delivery using pyramid broadcasting
US5903775A (en) 1996-06-06 1999-05-11 International Business Machines Corporation Method for the sequential transmission of compressed video information at varying data rates
US5745504A (en) 1996-06-25 1998-04-28 Telefonaktiebolaget Lm Ericsson Bit error resilient variable length code
US5940863A (en) 1996-07-26 1999-08-17 Zenith Electronics Corporation Apparatus for de-rotating and de-interleaving data including plural memory devices and plural modulo memory address generators
US5936949A (en) 1996-09-05 1999-08-10 Netro Corporation Wireless ATM metropolitan area network
KR100261706B1 (ko) 1996-12-17 2000-07-15 가나이 쓰도무 디지탈방송신호의 수신장치와 수신 및 기록재생장치
US6141053A (en) 1997-01-03 2000-10-31 Saukkonen; Jukka I. Method of optimizing bandwidth for transmitting compressed video data streams
US6011590A (en) 1997-01-03 2000-01-04 Ncr Corporation Method of transmitting compressed information to minimize buffer space
US6044485A (en) * 1997-01-03 2000-03-28 Ericsson Inc. Transmitter method and transmission system using adaptive coding based on channel characteristics
EP0854650A3 (de) 1997-01-17 2001-05-02 NOKIA TECHNOLOGY GmbH Verfahren zur Adressierung eines Dienstes in einem digitalen Videorundfunksystem
US5946357A (en) 1997-01-17 1999-08-31 Telefonaktiebolaget L M Ericsson Apparatus, and associated method, for transmitting and receiving a multi-stage, encoded and interleaved digital communication signal
US5983383A (en) 1997-01-17 1999-11-09 Qualcom Incorporated Method and apparatus for transmitting and receiving concatenated code data
US6014706A (en) 1997-01-30 2000-01-11 Microsoft Corporation Methods and apparatus for implementing control functions in a streamed video display system
KR20000075982A (ko) 1997-03-07 2000-12-26 다카노 야스아키 디지탈 방송 수신기 및 디스플레이 장치
US6115420A (en) 1997-03-14 2000-09-05 Microsoft Corporation Digital video signal encoder and encoding method
DE19716011A1 (de) 1997-04-17 1998-10-22 Abb Research Ltd Verfahren und Vorrichtung zur Informationsübertragung über Stromversorgungsleitungen
US6226259B1 (en) * 1997-04-29 2001-05-01 Canon Kabushiki Kaisha Device and method for transmitting information device and method for processing information
US5970098A (en) 1997-05-02 1999-10-19 Globespan Technologies, Inc. Multilevel encoder
US5844636A (en) 1997-05-13 1998-12-01 Hughes Electronics Corporation Method and apparatus for receiving and recording digital packet data
EP0933768A4 (de) 1997-05-19 2000-10-04 Sanyo Electric Co Digitale modulation und demodulation
JP4110593B2 (ja) * 1997-05-19 2008-07-02 ソニー株式会社 信号記録方法及び信号記録装置
JPH1141211A (ja) 1997-05-19 1999-02-12 Sanyo Electric Co Ltd ディジタル変調回路と変調方法、ディジタル復調回路と復調方法
US6128649A (en) 1997-06-02 2000-10-03 Nortel Networks Limited Dynamic selection of media streams for display
US6081907A (en) 1997-06-09 2000-06-27 Microsoft Corporation Data delivery system and method for delivering data and redundant information over a unidirectional network
US5917852A (en) 1997-06-11 1999-06-29 L-3 Communications Corporation Data scrambling system and method and communications system incorporating same
KR100240869B1 (ko) 1997-06-25 2000-01-15 윤종용 이중 다이버서티 시스템을 위한 데이터 전송 방법
US5933056A (en) * 1997-07-15 1999-08-03 Exar Corporation Single pole current mode common-mode feedback circuit
US6175944B1 (en) 1997-07-15 2001-01-16 Lucent Technologies Inc. Methods and apparatus for packetizing data for transmission through an erasure broadcast channel
US6047069A (en) 1997-07-17 2000-04-04 Hewlett-Packard Company Method and apparatus for preserving error correction capabilities during data encryption/decryption
US6904110B2 (en) 1997-07-31 2005-06-07 Francois Trans Channel equalization system and method
US6178536B1 (en) 1997-08-14 2001-01-23 International Business Machines Corporation Coding scheme for file backup and systems based thereon
FR2767940A1 (fr) 1997-08-29 1999-02-26 Canon Kk Procedes et dispositifs de codage et de decodage et appareils les mettant en oeuvre
EP0903955A1 (de) 1997-09-04 1999-03-24 STMicroelectronics S.r.l. PET-Dekodierer mit modularer Architektur für ATM-Netze
US6088330A (en) 1997-09-09 2000-07-11 Bruck; Joshua Reliable array of distributed computing nodes
US6134596A (en) 1997-09-18 2000-10-17 Microsoft Corporation Continuous media file server system and method for scheduling network resources to play multiple files having different data transmission rates
US6272658B1 (en) 1997-10-27 2001-08-07 Kencast, Inc. Method and system for reliable broadcasting of data files and streams
US6081918A (en) 1997-11-06 2000-06-27 Spielman; Daniel A. Loss resilient code with cascading series of redundant layers
US6195777B1 (en) 1997-11-06 2001-02-27 Compaq Computer Corporation Loss resilient code with double heavy tailed series of redundant layers
US6163870A (en) 1997-11-06 2000-12-19 Compaq Computer Corporation Message encoding with irregular graphing
US6073250A (en) 1997-11-06 2000-06-06 Luby; Michael G. Loss resilient decoding technique
US6081909A (en) 1997-11-06 2000-06-27 Digital Equipment Corporation Irregularly graphed encoding technique
JP3472115B2 (ja) 1997-11-25 2003-12-02 Kddi株式会社 マルチチャンネルを用いるビデオデータ伝送方法及びその装置
US6243846B1 (en) 1997-12-12 2001-06-05 3Com Corporation Forward error correction system for packet based data and real time media, using cross-wise parity calculation
US5870412A (en) 1997-12-12 1999-02-09 3Com Corporation Forward error correction system for packet based real time media
US6849803B1 (en) * 1998-01-15 2005-02-01 Arlington Industries, Inc. Electrical connector
US6097320A (en) * 1998-01-20 2000-08-01 Silicon Systems, Inc. Encoder/decoder system with suppressed error propagation
US6226301B1 (en) 1998-02-19 2001-05-01 Nokia Mobile Phones Ltd Method and apparatus for segmentation and assembly of data frames for retransmission in a telecommunications system
US6141788A (en) 1998-03-13 2000-10-31 Lucent Technologies Inc. Method and apparatus for forward error correction in packet networks
US6278716B1 (en) 1998-03-23 2001-08-21 University Of Massachusetts Multicast with proactive forward error correction
WO1999052282A1 (en) 1998-04-02 1999-10-14 Sarnoff Corporation Bursty data transmission of compressed video data
US6185265B1 (en) 1998-04-07 2001-02-06 Worldspace Management Corp. System for time division multiplexing broadcast channels with R-1/2 or R-3/4 convolutional coding for satellite transmission via on-board baseband processing payload or transparent payload
US6067646A (en) 1998-04-17 2000-05-23 Ameritech Corporation Method and system for adaptive interleaving
US6018359A (en) 1998-04-24 2000-01-25 Massachusetts Institute Of Technology System and method for multicast video-on-demand delivery system
US6445717B1 (en) 1998-05-01 2002-09-03 Niwot Networks, Inc. System for recovering lost information in a data stream
US6421387B1 (en) 1998-05-15 2002-07-16 North Carolina State University Methods and systems for forward error correction based loss recovery for interactive video transmission
US6937618B1 (en) * 1998-05-20 2005-08-30 Sony Corporation Separating device and method and signal receiving device and method
US6333926B1 (en) 1998-08-11 2001-12-25 Nortel Networks Limited Multiple user CDMA basestation modem
CN1342354A (zh) 1998-09-04 2002-03-27 美国电报电话公司 在一种多天线装置中组合信道编码和空间一分块编码
US6415326B1 (en) 1998-09-15 2002-07-02 Microsoft Corporation Timeline correlation between multiple timeline-altered media streams
US6307487B1 (en) * 1998-09-23 2001-10-23 Digital Fountain, Inc. Information additive code generator and decoder for communication systems
US7243285B2 (en) 1998-09-23 2007-07-10 Digital Fountain, Inc. Systems and methods for broadcasting information additive codes
US7068729B2 (en) 2001-12-21 2006-06-27 Digital Fountain, Inc. Multi-stage code generator and decoder for communication systems
US6320520B1 (en) 1998-09-23 2001-11-20 Digital Fountain Information additive group code generator and decoder for communications systems
US6704370B1 (en) 1998-10-09 2004-03-09 Nortel Networks Limited Interleaving methodology and apparatus for CDMA
IT1303735B1 (it) 1998-11-11 2001-02-23 Falorni Italia Farmaceutici S Acidi ialuronici reticolati e loro usi medici.
US6408128B1 (en) 1998-11-12 2002-06-18 Max Abecassis Replaying with supplementary information a segment of a video
US7157314B2 (en) 1998-11-16 2007-01-02 Sandisk Corporation Vertically stacked field programmable nonvolatile memory and method of fabrication
JP2000151426A (ja) 1998-11-17 2000-05-30 Toshiba Corp インターリーブ・デインターリーブ回路
US6166544A (en) 1998-11-25 2000-12-26 General Electric Company MR imaging system with interactive image contrast control
US6876623B1 (en) * 1998-12-02 2005-04-05 Agere Systems Inc. Tuning scheme for code division multiplex broadcasting system
PL192020B1 (pl) 1998-12-03 2006-08-31 Fraunhofer Ges Forschung Sposób i urządzenie do nadawania informacji oraz sposób i urządzenie do odbierania informacji
US6637031B1 (en) * 1998-12-04 2003-10-21 Microsoft Corporation Multimedia presentation latency minimization
US6496980B1 (en) 1998-12-07 2002-12-17 Intel Corporation Method of providing replay on demand for streaming digital multimedia
US6223324B1 (en) * 1999-01-05 2001-04-24 Agere Systems Guardian Corp. Multiple program unequal error protection for digital audio broadcasting and other applications
JP3926499B2 (ja) 1999-01-22 2007-06-06 株式会社日立国際電気 畳み込み符号軟判定復号方式の受信装置
US6618451B1 (en) 1999-02-13 2003-09-09 Altocom Inc Efficient reduced state maximum likelihood sequence estimator
US6041001A (en) 1999-02-25 2000-03-21 Lexar Media, Inc. Method of increasing data reliability of a flash memory device without compromising compatibility
AU2827400A (en) 1999-03-03 2000-09-21 Sony Corporation Transmitter, receiver, transmitter/receiver system, transmission method and reception method
US6785323B1 (en) 1999-11-22 2004-08-31 Ipr Licensing, Inc. Variable rate coding for forward link
US6466698B1 (en) 1999-03-25 2002-10-15 The United States Of America As Represented By The Secretary Of The Navy Efficient embedded image and video compression system using lifted wavelets
US6609223B1 (en) 1999-04-06 2003-08-19 Kencast, Inc. Method for packet-level fec encoding, in which on a source packet-by-source packet basis, the error correction contributions of a source packet to a plurality of wildcard packets are computed, and the source packet is transmitted thereafter
US6535920B1 (en) 1999-04-06 2003-03-18 Microsoft Corporation Analyzing, indexing and seeking of streaming information
JP3256517B2 (ja) 1999-04-06 2002-02-12 インターナショナル・ビジネス・マシーンズ・コーポレーション 符号化回路、回路、パリティ生成方法及び記憶媒体
US6804202B1 (en) 1999-04-08 2004-10-12 Lg Information And Communications, Ltd. Radio protocol for mobile communication system and method
US7885340B2 (en) 1999-04-27 2011-02-08 Realnetworks, Inc. System and method for generating multiple synchronized encoded representations of media data
FI113124B (fi) 1999-04-29 2004-02-27 Nokia Corp Tiedonsiirto
MY130203A (en) 1999-05-06 2007-06-29 Sony Corp Methods and apparatus for data processing, methods and apparatus for data reproducing and recording media
KR100416996B1 (ko) * 1999-05-10 2004-02-05 삼성전자주식회사 이동 통신시스템에서 라디오링크프로토콜에 따른 가변 길이의 데이터 송수신 장치 및 방법
US6229824B1 (en) 1999-05-26 2001-05-08 Xm Satellite Radio Inc. Method and apparatus for concatenated convolutional endcoding and interleaving
US6154452A (en) 1999-05-26 2000-11-28 Xm Satellite Radio Inc. Method and apparatus for continuous cross-channel interleaving
AU5140200A (en) 1999-05-26 2000-12-18 Enounce, Incorporated Method and apparatus for controlling time-scale modification during multi-media broadcasts
JP2000353969A (ja) 1999-06-11 2000-12-19 Sony Corp デジタル音声放送の受信機
US6577599B1 (en) 1999-06-30 2003-06-10 Sun Microsystems, Inc. Small-scale reliable multicasting
IL141800A0 (en) * 1999-07-06 2002-03-10 Samsung Electronics Co Ltd Rate matching device and method for a data communication system
US6643332B1 (en) 1999-07-09 2003-11-04 Lsi Logic Corporation Method and apparatus for multi-level coding of digital signals
US6279072B1 (en) 1999-07-22 2001-08-21 Micron Technology, Inc. Reconfigurable memory with selectable error correction storage
JP3451221B2 (ja) 1999-07-22 2003-09-29 日本無線株式会社 誤り訂正符号化装置、方法及び媒体、並びに誤り訂正符号復号装置、方法及び媒体
US6453440B1 (en) 1999-08-04 2002-09-17 Sun Microsystems, Inc. System and method for detecting double-bit errors and for correcting errors due to component failures
JP2001060934A (ja) 1999-08-20 2001-03-06 Matsushita Electric Ind Co Ltd Ofdm通信装置
US6430233B1 (en) * 1999-08-30 2002-08-06 Hughes Electronics Corporation Single-LNB satellite data receiver
US6332163B1 (en) 1999-09-01 2001-12-18 Accenture, Llp Method for providing communication services over a computer network system
JP4284774B2 (ja) 1999-09-07 2009-06-24 ソニー株式会社 送信装置、受信装置、通信システム、送信方法及び通信方法
US7529806B1 (en) 1999-11-04 2009-05-05 Koninklijke Philips Electronics N.V. Partitioning of MP3 content file for emulating streaming
EP1131930B1 (de) 1999-09-27 2007-01-17 Koninklijke Philips Electronics N.V. Aufteilung einer datei zur emulation eines datenstroms
JP2001094625A (ja) 1999-09-27 2001-04-06 Canon Inc データ通信装置、データ通信方法及び記憶媒体
US20050160272A1 (en) 1999-10-28 2005-07-21 Timecertain, Llc System and method for providing trusted time in content of digital data files
US6523147B1 (en) 1999-11-11 2003-02-18 Ibiquity Digital Corporation Method and apparatus for forward error correction coding for an AM in-band on-channel digital audio broadcasting system
US6678855B1 (en) 1999-12-02 2004-01-13 Microsoft Corporation Selecting K in a data transmission carousel using (N,K) forward error correction
US6748441B1 (en) 1999-12-02 2004-06-08 Microsoft Corporation Data carousel receiving and caching
US6798791B1 (en) 1999-12-16 2004-09-28 Agere Systems Inc Cluster frame synchronization scheme for a satellite digital audio radio system
US6487692B1 (en) 1999-12-21 2002-11-26 Lsi Logic Corporation Reed-Solomon decoder
US20020009137A1 (en) * 2000-02-01 2002-01-24 Nelson John E. Three-dimensional video broadcasting system
US6965636B1 (en) 2000-02-01 2005-11-15 2Wire, Inc. System and method for block error correction in packet-based digital communications
WO2001058130A2 (en) 2000-02-03 2001-08-09 Bandwiz, Inc. Coding method
IL140504A0 (en) 2000-02-03 2002-02-10 Bandwiz Inc Broadcast system
US7304990B2 (en) 2000-02-03 2007-12-04 Bandwiz Inc. Method of encoding and transmitting data over a communication medium through division and segmentation
JP2001251287A (ja) 2000-02-24 2001-09-14 Geneticware Corp Ltd ハードウエア保護内部秘匿鍵及び可変パスコードを利用する機密データ伝送方法
DE10009443A1 (de) 2000-02-29 2001-08-30 Philips Corp Intellectual Pty Empfänger und Verfahren zum Detektieren und Dekodieren eines DQPSK-modulierten und kanalkodierten Empfangssignals
US6765866B1 (en) 2000-02-29 2004-07-20 Mosaid Technologies, Inc. Link aggregation
US6384750B1 (en) * 2000-03-23 2002-05-07 Mosaid Technologies, Inc. Multi-stage lookup for translating between signals of different bit lengths
JP2001274776A (ja) 2000-03-24 2001-10-05 Toshiba Corp 情報データ伝送システムとその送信装置及び受信装置
US6510177B1 (en) * 2000-03-24 2003-01-21 Microsoft Corporation System and method for layered video coding enhancement
WO2001076077A2 (en) 2000-03-31 2001-10-11 Ted Szymanski Transmitter, receiver, and coding scheme to increase data rate and decrease bit error rate of an optical data link
US6473010B1 (en) 2000-04-04 2002-10-29 Marvell International, Ltd. Method and apparatus for determining error correction code failure rate for iterative decoding algorithms
US8572646B2 (en) 2000-04-07 2013-10-29 Visible World Inc. System and method for simultaneous broadcast for personalized messages
AU2001251353A1 (en) 2000-04-08 2001-10-23 Sun Microsystems, Inc. Streaming a single media track to multiple clients
US6631172B1 (en) 2000-05-01 2003-10-07 Lucent Technologies Inc. Efficient list decoding of Reed-Solomon codes for message recovery in the presence of high noise levels
US6742154B1 (en) * 2000-05-25 2004-05-25 Ciena Corporation Forward error correction codes for digital optical network optimization
US6738942B1 (en) 2000-06-02 2004-05-18 Vitesse Semiconductor Corporation Product code based forward error correction system
US6694476B1 (en) 2000-06-02 2004-02-17 Vitesse Semiconductor Corporation Reed-solomon encoder and decoder
GB2366159B (en) 2000-08-10 2003-10-08 Mitel Corp Combination reed-solomon and turbo coding
US6834342B2 (en) 2000-08-16 2004-12-21 Eecad, Inc. Method and system for secure communication over unstable public connections
KR100447162B1 (ko) 2000-08-19 2004-09-04 엘지전자 주식회사 래디오 링크 콘트롤(rlc)에서 프로토콜 데이터 유닛(pdu) 정보의 길이 지시자(li) 처리방법
JP2002073625A (ja) 2000-08-24 2002-03-12 Nippon Hoso Kyokai <Nhk> 放送番組に同期した情報提供の方法、サーバ及び媒体
US7340664B2 (en) 2000-09-20 2008-03-04 Lsi Logic Corporation Single engine turbo decoder with single frame size buffer for interleaving/deinterleaving
US7151754B1 (en) 2000-09-22 2006-12-19 Lucent Technologies Inc. Complete user datagram protocol (CUDP) for wireless multimedia packet networks using improved packet level forward error correction (FEC) coding
US7031257B1 (en) 2000-09-22 2006-04-18 Lucent Technologies Inc. Radio link protocol (RLP)/point-to-point protocol (PPP) design that passes corrupted data and error location information among layers in a wireless data transmission protocol
US6486803B1 (en) 2000-09-22 2002-11-26 Digital Fountain, Inc. On demand encoding with a window
US7490344B2 (en) 2000-09-29 2009-02-10 Visible World, Inc. System and method for seamless switching
US6411223B1 (en) * 2000-10-18 2002-06-25 Digital Fountain, Inc. Generating high weight encoding symbols using a basis
US7613183B1 (en) 2000-10-31 2009-11-03 Foundry Networks, Inc. System and method for router data aggregation and delivery
US6694478B1 (en) 2000-11-07 2004-02-17 Agere Systems Inc. Low delay channel codes for correcting bursts of lost packets
US6732325B1 (en) 2000-11-08 2004-05-04 Digeo, Inc. Error-correction with limited working storage
US20020133247A1 (en) 2000-11-11 2002-09-19 Smith Robert D. System and method for seamlessly switching between media streams
US7072971B2 (en) 2000-11-13 2006-07-04 Digital Foundation, Inc. Scheduling of multiple files for serving on a server
US7240358B2 (en) * 2000-12-08 2007-07-03 Digital Fountain, Inc. Methods and apparatus for scheduling, serving, receiving media-on demand for clients, servers arranged according to constraints on resources
CN1243442C (zh) 2000-12-15 2006-02-22 英国电讯有限公司 音频和/或视频资料的传输和接收
WO2002049343A1 (en) 2000-12-15 2002-06-20 British Telecommunications Public Limited Company Transmission and reception of audio and/or video material
US6850736B2 (en) * 2000-12-21 2005-02-01 Tropian, Inc. Method and apparatus for reception quality indication in wireless communication
US7143433B1 (en) 2000-12-27 2006-11-28 Infovalve Computing Inc. Video distribution system using dynamic segmenting of video data files
US20020085013A1 (en) 2000-12-29 2002-07-04 Lippincott Louis A. Scan synchronized dual frame buffer graphics subsystem
NO315887B1 (no) 2001-01-04 2003-11-03 Fast Search & Transfer As Fremgangsmater ved overforing og soking av videoinformasjon
US20080059532A1 (en) 2001-01-18 2008-03-06 Kazmi Syed N Method and system for managing digital content, including streaming media
DE10103387A1 (de) 2001-01-26 2002-08-01 Thorsten Nordhoff Windkraftanlage mit einer Einrichtung zur Hindernisbefeuerung bzw. Nachtkennzeichnung
FI118830B (fi) 2001-02-08 2008-03-31 Nokia Corp Tietovirran toisto
US6868083B2 (en) 2001-02-16 2005-03-15 Hewlett-Packard Development Company, L.P. Method and system for packet communication employing path diversity
US20020129159A1 (en) 2001-03-09 2002-09-12 Michael Luby Multi-output packet server with independent streams
KR100464360B1 (ko) 2001-03-30 2005-01-03 삼성전자주식회사 고속 패킷 데이터 전송 이동통신시스템에서 패킷 데이터채널에 대한 효율적인 에너지 분배 장치 및 방법
US20020143953A1 (en) 2001-04-03 2002-10-03 International Business Machines Corporation Automatic affinity within networks performing workload balancing
US6785836B2 (en) 2001-04-11 2004-08-31 Broadcom Corporation In-place data transformation for fault-tolerant disk storage systems
US6820221B2 (en) 2001-04-13 2004-11-16 Hewlett-Packard Development Company, L.P. System and method for detecting process and network failures in a distributed system
US7010052B2 (en) 2001-04-16 2006-03-07 The Ohio University Apparatus and method of CTCM encoding and decoding for a digital communication system
US7035468B2 (en) * 2001-04-20 2006-04-25 Front Porch Digital Inc. Methods and apparatus for archiving, indexing and accessing audio and video data
TWI246841B (en) 2001-04-22 2006-01-01 Koninkl Philips Electronics Nv Digital transmission system and method for transmitting digital signals
US20020191116A1 (en) 2001-04-24 2002-12-19 Damien Kessler System and data format for providing seamless stream switching in a digital video recorder
US6497479B1 (en) 2001-04-27 2002-12-24 Hewlett-Packard Company Higher organic inks with good reliability and drytime
US7962482B2 (en) 2001-05-16 2011-06-14 Pandora Media, Inc. Methods and systems for utilizing contextual feedback to generate and modify playlists
US6633856B2 (en) 2001-06-15 2003-10-14 Flarion Technologies, Inc. Methods and apparatus for decoding LDPC codes
US7076478B2 (en) 2001-06-26 2006-07-11 Microsoft Corporation Wrapper playlists on streaming media services
US6745364B2 (en) 2001-06-28 2004-06-01 Microsoft Corporation Negotiated/dynamic error correction for streamed media
JP2003018568A (ja) 2001-06-29 2003-01-17 Matsushita Electric Ind Co Ltd 再生システム、サーバ装置及び再生装置
US6895547B2 (en) 2001-07-11 2005-05-17 International Business Machines Corporation Method and apparatus for low density parity check encoding of data
US6928603B1 (en) 2001-07-19 2005-08-09 Adaptix, Inc. System and method for interference mitigation using adaptive forward error correction in a wireless RF data transmission system
US6961890B2 (en) 2001-08-16 2005-11-01 Hewlett-Packard Development Company, L.P. Dynamic variable-length error correction code
US7110412B2 (en) 2001-09-18 2006-09-19 Sbc Technology Resources, Inc. Method and system to transport high-quality video signals
FI115418B (fi) 2001-09-20 2005-04-29 Oplayo Oy Adaptiivinen mediavirta
US6990624B2 (en) 2001-10-12 2006-01-24 Agere Systems Inc. High speed syndrome-based FEC encoder and decoder and system using same
US7480703B2 (en) 2001-11-09 2009-01-20 Sony Corporation System, method, and computer program product for remotely determining the configuration of a multi-media content user based on response of the user
US7003712B2 (en) 2001-11-29 2006-02-21 Emin Martinian Apparatus and method for adaptive, multimode decoding
US7363354B2 (en) 2001-11-29 2008-04-22 Nokia Corporation System and method for identifying and accessing network services
JP2003174489A (ja) 2001-12-05 2003-06-20 Ntt Docomo Inc ストリーミング配信装置、ストリーミング配信方法
FI114527B (fi) 2002-01-23 2004-10-29 Nokia Corp Kuvakehysten ryhmittely videokoodauksessa
CN1288915C (zh) 2002-01-23 2006-12-06 诺基亚有限公司 视频序列的编码和解码方法及相关的视频编码器和解码器
US7483489B2 (en) 2002-01-30 2009-01-27 Nxp B.V. Streaming multimedia data over a network having a variable bandwith
WO2003071440A1 (en) 2002-02-15 2003-08-28 Digital Fountain, Inc. System and method for reliably communicating the content of a live data stream
JP4126928B2 (ja) 2002-02-28 2008-07-30 日本電気株式会社 プロキシサーバ及びプロキシ制御プログラム
JP4116470B2 (ja) 2002-03-06 2008-07-09 ヒューレット・パッカード・カンパニー メディア・ストリーミング配信システム
FR2837332A1 (fr) 2002-03-15 2003-09-19 Thomson Licensing Sa Dispositif et procede d'insertion de codes de correction d'erreurs et de reconstitution de flux de donnees, et produits correspondants
JP2005522965A (ja) * 2002-04-15 2005-07-28 ノキア コーポレイション 通信局のrlp論理層
US6677864B2 (en) 2002-04-18 2004-01-13 Telefonaktiebolaget L.M. Ericsson Method for multicast over wireless networks
JP3689063B2 (ja) 2002-04-19 2005-08-31 松下電器産業株式会社 データ受信装置及びデータ配信システム
JP3629008B2 (ja) 2002-04-19 2005-03-16 松下電器産業株式会社 データ受信装置及びデータ配信システム
WO2003092305A1 (en) 2002-04-25 2003-11-06 Sharp Kabushiki Kaisha Image encodder, image decoder, record medium, and image recorder
US20030204602A1 (en) 2002-04-26 2003-10-30 Hudson Michael D. Mediated multi-source peer content delivery network architecture
US7177658B2 (en) 2002-05-06 2007-02-13 Qualcomm, Incorporated Multi-media broadcast and multicast service (MBMS) in a wireless communications system
US7200388B2 (en) 2002-05-31 2007-04-03 Nokia Corporation Fragmented delivery of multimedia
EP2278719B1 (de) 2002-06-11 2013-12-18 Digital Fountain, Inc. Decodieren von Kettenreaktionscodes durch Inaktivierung
AU2002368007A1 (en) 2002-06-11 2003-12-22 Telefonaktiebolaget Lm Ericsson (Publ) Generation of mixed media streams
US9240810B2 (en) * 2002-06-11 2016-01-19 Digital Fountain, Inc. Systems and processes for decoding chain reaction codes through inactivation
US6956875B2 (en) 2002-06-19 2005-10-18 Atlinks Usa, Inc. Technique for communicating variable bit rate data over a constant bit rate link
JP4154569B2 (ja) 2002-07-10 2008-09-24 日本電気株式会社 画像圧縮伸長装置
JP4120461B2 (ja) 2002-07-12 2008-07-16 住友電気工業株式会社 伝送データ生成方法及び伝送データ生成装置
CA2492751C (en) 2002-07-16 2012-06-12 Nokia Corporation A method for random access and gradual picture refresh in video coding
JPWO2004019521A1 (ja) 2002-07-31 2005-12-15 シャープ株式会社 データ通信装置、その間欠通信方法、その方法を記載するプログラム、及びそのプログラムを記録する記録媒体
JP2004070712A (ja) 2002-08-07 2004-03-04 Nippon Telegr & Teleph Corp <Ntt> データ配信方法,データ配信システム,分割配信データ受信方法,分割配信データ受信装置および分割配信データ受信プログラム
EP1529389B1 (de) 2002-08-13 2016-03-16 Nokia Technologies Oy Symbolverschachtelung
US6985459B2 (en) * 2002-08-21 2006-01-10 Qualcomm Incorporated Early transmission and playout of packets in wireless communication systems
WO2004030273A1 (ja) 2002-09-27 2004-04-08 Fujitsu Limited データ配信方法、システム、伝送方法及びプログラム
JP3534742B1 (ja) 2002-10-03 2004-06-07 株式会社エヌ・ティ・ティ・ドコモ 動画像復号方法、動画像復号装置、及び動画像復号プログラム
JP4546246B2 (ja) 2002-10-05 2010-09-15 デジタル ファウンテン, インコーポレイテッド 連鎖的暗号化反応の系統的記号化および復号化
JP2004135013A (ja) 2002-10-10 2004-04-30 Matsushita Electric Ind Co Ltd 伝送装置及び伝送方法
FI116816B (fi) 2002-10-14 2006-02-28 Nokia Corp Median suoratoisto
US7289451B2 (en) * 2002-10-25 2007-10-30 Telefonaktiebolaget Lm Ericsson (Publ) Delay trading between communication links
US8320301B2 (en) * 2002-10-25 2012-11-27 Qualcomm Incorporated MIMO WLAN system
EP1559229A1 (de) * 2002-10-30 2005-08-03 Koninklijke Philips Electronics N.V. Adaptives vorwärtsfehlerkorrektursystem
JP2004165922A (ja) 2002-11-12 2004-06-10 Sony Corp 情報処理装置および方法、並びにプログラム
ATE410029T1 (de) 2002-11-18 2008-10-15 British Telecomm Videoübertragung
GB0226872D0 (en) 2002-11-18 2002-12-24 British Telecomm Video transmission
KR100502609B1 (ko) 2002-11-21 2005-07-20 한국전자통신연구원 Ldpc 코드를 이용한 부호화기 및 부호화 방법
US7086718B2 (en) 2002-11-23 2006-08-08 Silverbrook Research Pty Ltd Thermal ink jet printhead with high nozzle areal density
JP2004192140A (ja) 2002-12-09 2004-07-08 Sony Corp データ通信システム、データ送信装置、データ受信装置、および方法、並びにコンピュータ・プログラム
JP2004193992A (ja) 2002-12-11 2004-07-08 Sony Corp 情報処理システム、情報処理装置および方法、記録媒体、並びにプログラム
US8135073B2 (en) * 2002-12-19 2012-03-13 Trident Microsystems (Far East) Ltd Enhancing video images depending on prior image enhancements
US7164882B2 (en) * 2002-12-24 2007-01-16 Poltorak Alexander I Apparatus and method for facilitating a purchase using information provided on a media playing device
US7293222B2 (en) 2003-01-29 2007-11-06 Digital Fountain, Inc. Systems and processes for fast encoding of hamming codes
US7756002B2 (en) 2003-01-30 2010-07-13 Texas Instruments Incorporated Time-frequency interleaved orthogonal frequency division multiplexing ultra wide band physical layer
US7525994B2 (en) 2003-01-30 2009-04-28 Avaya Inc. Packet data flow identification for multiplexing
US7231404B2 (en) 2003-01-31 2007-06-12 Nokia Corporation Datacast file transmission with meta-data retention
US7062272B2 (en) 2003-02-18 2006-06-13 Qualcomm Incorporated Method and apparatus to track count of broadcast content recipients in a wireless telephone network
EP1455504B1 (de) 2003-03-07 2014-11-12 Samsung Electronics Co., Ltd. Vorrichtung und Verfahren zur Bearbeitung von Audiosignalen und computerlesbares Aufzeichnungsmedium zur Speicherung des Computerprogramms für das Verfahren
JP4173755B2 (ja) 2003-03-24 2008-10-29 富士通株式会社 データ伝送サーバ
US7610487B2 (en) 2003-03-27 2009-10-27 Microsoft Corporation Human input security codes
US7266147B2 (en) 2003-03-31 2007-09-04 Sharp Laboratories Of America, Inc. Hypothetical reference decoder
US7408486B2 (en) 2003-04-21 2008-08-05 Qbit Corporation System and method for using a microlet-based modem
JP2004343701A (ja) 2003-04-21 2004-12-02 Matsushita Electric Ind Co Ltd データ受信再生装置、データ受信再生方法及びデータ受信再生処理プログラム
US20050041736A1 (en) 2003-05-07 2005-02-24 Bernie Butler-Smith Stereoscopic television signal processing method, transmission system and viewer enhancements
KR100492567B1 (ko) 2003-05-13 2005-06-03 엘지전자 주식회사 이동통신 시스템의 http 기반 비디오 스트리밍 장치및 방법
US7113773B2 (en) 2003-05-16 2006-09-26 Qualcomm Incorporated Reliable reception of broadcast/multicast content
JP2004348824A (ja) 2003-05-21 2004-12-09 Toshiba Corp Eccエンコード方法、eccエンコード装置
EP1632081B1 (de) 2003-05-23 2016-08-17 Kirusa, Inc. Verfahren und system zum übermitteln einer daten-datei über ein netzwerk und telekonferenzen über ein fernsprechnetzwerk
JP2004362099A (ja) 2003-06-03 2004-12-24 Sony Corp サーバ装置、情報処理装置、および情報処理方法、並びにコンピュータ・プログラム
JP2006514806A (ja) 2003-06-07 2006-05-11 サムスン エレクトロニクス カンパニー リミテッド マルチメディアデータの提供装置及びその提供方法並びにその方法を記録した記録媒体
KR101003413B1 (ko) 2003-06-12 2010-12-23 엘지전자 주식회사 이동통신 단말기의 전송데이터 압축/해제 방법
US7603689B2 (en) 2003-06-13 2009-10-13 Microsoft Corporation Fast start-up for digital video streams
RU2265960C2 (ru) 2003-06-16 2005-12-10 Федеральное государственное унитарное предприятие "Калужский научно-исследовательский институт телемеханических устройств" Способ передачи информации с использованием адаптивного перемежения
US7391717B2 (en) * 2003-06-30 2008-06-24 Microsoft Corporation Streaming of variable bit rate multimedia content
US20050004997A1 (en) 2003-07-01 2005-01-06 Nokia Corporation Progressive downloading of timed multimedia content
US8149939B2 (en) * 2003-07-07 2012-04-03 Samsung Electronics Co., Ltd. System of robust DTV signal transmissions that legacy DTV receivers will disregard
US7254754B2 (en) 2003-07-14 2007-08-07 International Business Machines Corporation Raid 3+3
KR100532450B1 (ko) 2003-07-16 2005-11-30 삼성전자주식회사 에러에 대해 강인한 특성을 가지는 데이터 기록 방법,이에 적합한 데이터 재생 방법, 그리고 이에 적합한 장치들
US20050028067A1 (en) 2003-07-31 2005-02-03 Weirauch Charles R. Data with multiple sets of error correction codes
CN1871804B (zh) 2003-08-21 2010-09-01 高通股份有限公司 广播/多播内容的外部编码方法及其相关装置
US8694869B2 (en) 2003-08-21 2014-04-08 QUALCIMM Incorporated Methods for forward error correction coding above a radio link control layer and related apparatus
IL157886A0 (en) 2003-09-11 2009-02-11 Bamboo Mediacasting Ltd Secure multicast transmission
IL157885A0 (en) 2003-09-11 2004-03-28 Bamboo Mediacasting Ltd Iterative forward error correction
JP4183586B2 (ja) 2003-09-12 2008-11-19 三洋電機株式会社 映像表示装置
US7555006B2 (en) 2003-09-15 2009-06-30 The Directv Group, Inc. Method and system for adaptive transcoding and transrating in a video network
KR100608715B1 (ko) 2003-09-27 2006-08-04 엘지전자 주식회사 QoS보장형 멀티미디어 스트리밍 서비스 시스템 및 방법
DE60307852D1 (de) 2003-09-30 2006-10-05 Ericsson Telefon Ab L M In-place Entschachtelung von Daten
US7559004B1 (en) 2003-10-01 2009-07-07 Sandisk Corporation Dynamic redundant area configuration in a non-volatile memory system
CN1954501B (zh) * 2003-10-06 2010-06-16 数字方敦股份有限公司 通过通信信道接收从源发射的数据的方法
US7614071B2 (en) * 2003-10-10 2009-11-03 Microsoft Corporation Architecture for distributed sending of media data
US7516232B2 (en) * 2003-10-10 2009-04-07 Microsoft Corporation Media organization for distributed sending of media data
ATE479142T1 (de) 2003-10-14 2010-09-15 Panasonic Corp Datenumsetzer
US7650036B2 (en) * 2003-10-16 2010-01-19 Sharp Laboratories Of America, Inc. System and method for three-dimensional video coding
US7168030B2 (en) * 2003-10-17 2007-01-23 Telefonaktiebolaget Lm Ericsson (Publ) Turbo code decoder with parity information update
EP1528808A3 (de) 2003-10-27 2008-03-26 Matsushita Electric Industrial Co., Ltd. Gerät zum Empfangen eines Rundfunksignales
JP2005136546A (ja) 2003-10-29 2005-05-26 Sony Corp 送信装置および方法、記録媒体、並びにプログラム
DE602004011445T2 (de) 2003-11-03 2009-01-15 Broadcom Corp., Irvine FEC-Dekodierung mit dynamischen Parametern
US20050102371A1 (en) 2003-11-07 2005-05-12 Emre Aksu Streaming from a server to a client
CN101582698B (zh) 2003-12-01 2014-02-12 数字方敦股份有限公司 使用基于子码元的代码来保护数据不被删除
US7428669B2 (en) 2003-12-07 2008-09-23 Adaptive Spectrum And Signal Alignment, Inc. Adaptive FEC codeword management
US7574706B2 (en) 2003-12-15 2009-08-11 Microsoft Corporation System and method for managing and communicating software updates
US7590118B2 (en) 2003-12-23 2009-09-15 Agere Systems Inc. Frame aggregation format
JP4536383B2 (ja) 2004-01-16 2010-09-01 株式会社エヌ・ティ・ティ・ドコモ データ受信装置およびデータ受信方法
KR100770902B1 (ko) 2004-01-20 2007-10-26 삼성전자주식회사 고속 무선 데이터 시스템을 위한 가변 부호율의 오류 정정부호 생성 및 복호 장치 및 방법
KR100834750B1 (ko) 2004-01-29 2008-06-05 삼성전자주식회사 엔코더 단에서 스케일러빌리티를 제공하는 스케일러블비디오 코딩 장치 및 방법
JP4321284B2 (ja) 2004-02-03 2009-08-26 株式会社デンソー ストリーミングデータ送信装置、および情報配信システム
US7599294B2 (en) 2004-02-13 2009-10-06 Nokia Corporation Identification and re-transmission of missing parts
KR100596705B1 (ko) 2004-03-04 2006-07-04 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩 방법과 비디오 인코딩 시스템, 및 비디오 디코딩 방법과 비디오 디코딩 시스템
KR100586883B1 (ko) 2004-03-04 2006-06-08 삼성전자주식회사 비디오 스트리밍 서비스를 위한 비디오 코딩방법, 프리디코딩방법, 비디오 디코딩방법, 및 이를 위한 장치와, 이미지 필터링방법
US7609653B2 (en) 2004-03-08 2009-10-27 Microsoft Corporation Resolving partial media topologies
WO2005094020A1 (en) 2004-03-19 2005-10-06 Telefonaktiebolaget Lm Ericsson (Publ) Higher layer packet framing using rlp
US7240236B2 (en) 2004-03-23 2007-07-03 Archivas, Inc. Fixed content distributed data storage using permutation ring encoding
JP4433287B2 (ja) 2004-03-25 2010-03-17 ソニー株式会社 受信装置および方法、並びにプログラム
US8842175B2 (en) 2004-03-26 2014-09-23 Broadcom Corporation Anticipatory video signal reception and processing
US20050216472A1 (en) 2004-03-29 2005-09-29 David Leon Efficient multicast/broadcast distribution of formatted data
JP2007531199A (ja) 2004-03-30 2007-11-01 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ ディスクベースのマルチメディアコンテンツのための改良されたトリックモード実行をサポートするシステムおよび方法
TW200534875A (en) 2004-04-23 2005-11-01 Lonza Ag Personal care compositions and concentrates for making the same
FR2869744A1 (fr) 2004-04-29 2005-11-04 Thomson Licensing Sa Methode de transmission de paquets de donnees numeriques et appareil implementant la methode
US7633970B2 (en) 2004-05-07 2009-12-15 Agere Systems Inc. MAC header compression for use with frame aggregation
CN103124182B (zh) * 2004-05-07 2017-05-10 数字方敦股份有限公司 文件下载和流系统
US20050254575A1 (en) 2004-05-12 2005-11-17 Nokia Corporation Multiple interoperability points for scalable media coding and transmission
US20060037057A1 (en) 2004-05-24 2006-02-16 Sharp Laboratories Of America, Inc. Method and system of enabling trick play modes using HTTP GET
US8331445B2 (en) 2004-06-01 2012-12-11 Qualcomm Incorporated Method, apparatus, and system for enhancing robustness of predictive video codecs using a side-channel based on distributed source coding techniques
US20070110074A1 (en) 2004-06-04 2007-05-17 Bob Bradley System and Method for Synchronizing Media Presentation at Multiple Recipients
US7139660B2 (en) 2004-07-14 2006-11-21 General Motors Corporation System and method for changing motor vehicle personalization settings
US8112531B2 (en) 2004-07-14 2012-02-07 Nokia Corporation Grouping of session objects
US8544043B2 (en) 2004-07-21 2013-09-24 Qualcomm Incorporated Methods and apparatus for providing content information to content servers
US7409626B1 (en) 2004-07-28 2008-08-05 Ikanos Communications Inc Method and apparatus for determining codeword interleaver parameters
US7376150B2 (en) 2004-07-30 2008-05-20 Nokia Corporation Point-to-point repair response mechanism for point-to-multipoint transmission systems
US7590922B2 (en) 2004-07-30 2009-09-15 Nokia Corporation Point-to-point repair request mechanism for point-to-multipoint transmission systems
US7930184B2 (en) 2004-08-04 2011-04-19 Dts, Inc. Multi-channel audio coding/decoding of random access points and transients
US7721184B2 (en) 2004-08-11 2010-05-18 Digital Fountain, Inc. Method and apparatus for fast encoding of data symbols according to half-weight codes
JP4405875B2 (ja) 2004-08-25 2010-01-27 富士通株式会社 エラー訂正用データの生成方法及び生成装置並びに生成プログラム及び同プログラムを格納したコンピュータ読み取り可能な記録媒体
JP2006074335A (ja) 2004-09-01 2006-03-16 Nippon Telegr & Teleph Corp <Ntt> 伝送方法、伝送システム及び伝送装置
JP4576936B2 (ja) 2004-09-02 2010-11-10 ソニー株式会社 情報処理装置、情報記録媒体、コンテンツ管理システム、およびデータ処理方法、並びにコンピュータ・プログラム
JP2006115104A (ja) 2004-10-13 2006-04-27 Daiichikosho Co Ltd 高能率符号化された時系列情報をパケット化してリアルタイム・ストリーミング送信し受信再生する方法および装置
US7529984B2 (en) * 2004-11-16 2009-05-05 Infineon Technologies Ag Seamless change of depth of a general convolutional interleaver during transmission without loss of data
US7751324B2 (en) 2004-11-19 2010-07-06 Nokia Corporation Packet stream arrangement in multimedia transmission
BRPI0518304A2 (pt) 2004-11-22 2008-11-11 Thomson Res Funding Corp mÉtodo e aparelho para mudar canal em sistema dsl
BRPI0516632A (pt) 2004-12-02 2008-09-16 Thomson Licensing correção de erros antecipada e adaptativa
KR20060065482A (ko) 2004-12-10 2006-06-14 마이크로소프트 코포레이션 스트리밍 미디어 데이터의 코딩 비트 레이트의 제어 시스템및 프로세스
JP2006174032A (ja) 2004-12-15 2006-06-29 Sanyo Electric Co Ltd 画像データ伝送システム、画像データ受信装置及び画像データ送信装置
JP2006174045A (ja) 2004-12-15 2006-06-29 Ntt Communications Kk 画像配信装置、プログラム及び方法
US7398454B2 (en) 2004-12-21 2008-07-08 Tyco Telecommunications (Us) Inc. System and method for forward error correction decoding using soft information
JP4391409B2 (ja) 2004-12-24 2009-12-24 株式会社第一興商 高能率符号化された時系列情報をリアルタイム・ストリーミング送信し受信再生する方法と受信装置
JP2008530835A (ja) 2005-02-08 2008-08-07 テレフオンアクチーボラゲット エル エム エリクソン(パブル) パケット交換ネットワーク上のオンデマンドマルチチャネルストリーミングセッション
US7925097B2 (en) 2005-02-18 2011-04-12 Sanyo Electric Co., Ltd. Image display method, image coding apparatus, and image decoding apparatus
US7822139B2 (en) 2005-03-02 2010-10-26 Rohde & Schwarz Gmbh & Co. Kg Apparatus, systems, methods and computer products for providing a virtual enhanced training sequence
EP1856911A4 (de) 2005-03-07 2010-02-24 Ericsson Telefon Ab L M Multimedia-kanalvermittlung
US8028322B2 (en) 2005-03-14 2011-09-27 Time Warner Cable Inc. Method and apparatus for network content download and recording
US7219289B2 (en) 2005-03-15 2007-05-15 Tandberg Data Corporation Multiply redundant raid system and XOR-efficient method and apparatus for implementing the same
US7418649B2 (en) 2005-03-15 2008-08-26 Microsoft Corporation Efficient implementation of reed-solomon erasure resilient codes in high-rate applications
US7450064B2 (en) 2005-03-22 2008-11-11 Qualcomm, Incorporated Methods and systems for deriving seed position of a subscriber station in support of unassisted GPS-type position determination in a wireless communication system
JP4487028B2 (ja) 2005-03-31 2010-06-23 ブラザー工業株式会社 配信速度制御装置、配信システム、配信速度制御方法、及び配信速度制御用プログラム
US7715842B2 (en) 2005-04-09 2010-05-11 Lg Electronics Inc. Supporting handover of mobile terminal
JP2008536420A (ja) 2005-04-13 2008-09-04 ノキア コーポレイション スケーラビリティ情報の符号化、格納およびシグナリング
JP4515319B2 (ja) 2005-04-27 2010-07-28 株式会社日立製作所 コンピュータシステム
US7961700B2 (en) * 2005-04-28 2011-06-14 Qualcomm Incorporated Multi-carrier operation in data transmission systems
US8683066B2 (en) 2007-08-06 2014-03-25 DISH Digital L.L.C. Apparatus, system, and method for multi-bitrate content streaming
JP2006319743A (ja) 2005-05-13 2006-11-24 Toshiba Corp 受信装置
US8228994B2 (en) 2005-05-20 2012-07-24 Microsoft Corporation Multi-view video coding based on temporal and view decomposition
MX2007014744A (es) 2005-05-24 2008-02-14 Nokia Corp Metodo y aparatos para transmision/recepcion jerarquica en transmision digital.
US7644335B2 (en) 2005-06-10 2010-01-05 Qualcomm Incorporated In-place transformations with applications to encoding and decoding various classes of codes
US7676735B2 (en) 2005-06-10 2010-03-09 Digital Fountain Inc. Forward error-correcting (FEC) coding and streaming
JP2007013436A (ja) * 2005-06-29 2007-01-18 Toshiba Corp 符号化ストリーム再生装置
US20070006274A1 (en) 2005-06-30 2007-01-04 Toni Paila Transmission and reception of session packets
JP2007013675A (ja) 2005-06-30 2007-01-18 Sanyo Electric Co Ltd ストリーミング配信システム及びサーバ
US7725593B2 (en) * 2005-07-15 2010-05-25 Sony Corporation Scalable video coding (SVC) file format
US20070022215A1 (en) * 2005-07-19 2007-01-25 Singer David W Method and apparatus for media data transmission
ATE514246T1 (de) 2005-08-19 2011-07-15 Hewlett Packard Development Co Andeutung von verlorenen segmenten über schichtgrenzen
JP3996631B2 (ja) 2005-09-09 2007-10-24 松下電器産業株式会社 画像処理方法、画像記録方法、画像処理装置および画像ファイルフォーマット
US7924913B2 (en) 2005-09-15 2011-04-12 Microsoft Corporation Non-realtime data transcoding of multimedia content
US8879857B2 (en) 2005-09-27 2014-11-04 Qualcomm Incorporated Redundant data encoding methods and device
US20070078876A1 (en) 2005-09-30 2007-04-05 Yahoo! Inc. Generating a stream of media data containing portions of media files using location tags
CA2562212C (en) 2005-10-05 2012-07-10 Lg Electronics Inc. Method of processing traffic information and digital broadcast system
US7164370B1 (en) 2005-10-06 2007-01-16 Analog Devices, Inc. System and method for decoding data compressed in accordance with dictionary-based compression schemes
CN101317460A (zh) 2005-10-11 2008-12-03 诺基亚公司 用于有效的可伸缩流适配的系统和方法
CN100442858C (zh) 2005-10-11 2008-12-10 华为技术有限公司 分组网络中多媒体实时传输的唇同步方法及其装置
US7720096B2 (en) 2005-10-13 2010-05-18 Microsoft Corporation RTP payload format for VC-1
MY159176A (en) 2005-10-19 2016-12-30 Thomson Licensing Multi-view video coding using scalable video coding
JP4727401B2 (ja) 2005-12-02 2011-07-20 日本電信電話株式会社 無線マルチキャスト伝送システム、無線送信装置及び無線マルチキャスト伝送方法
FR2894421B1 (fr) 2005-12-07 2008-01-18 Canon Kk Procede et dispositif de decodage d'un flux video code suivant un codage hierarchique
KR100759823B1 (ko) 2005-12-08 2007-09-18 한국전자통신연구원 제로 복귀 신호 발생 장치 및 그 방법
JP4456064B2 (ja) 2005-12-21 2010-04-28 日本電信電話株式会社 パケット送信装置、受信装置、システム、およびプログラム
US20070157267A1 (en) 2005-12-30 2007-07-05 Intel Corporation Techniques to improve time seek operations
EP1969857B1 (de) 2006-01-05 2012-03-28 Telefonaktiebolaget LM Ericsson (publ) Verwaltung von medienbehälterdateien
US8214516B2 (en) 2006-01-06 2012-07-03 Google Inc. Dynamic media serving infrastructure
KR101029854B1 (ko) 2006-01-11 2011-04-15 노키아 코포레이션 스케일러블 비디오 코딩에서 픽쳐들의 역방향-호환 집합
KR100943914B1 (ko) 2006-01-12 2010-03-03 엘지전자 주식회사 다시점 비디오의 처리 방법 및 장치
WO2007086654A1 (en) 2006-01-25 2007-08-02 Lg Electronics Inc. Digital broadcasting system and method of processing data
RU2290768C1 (ru) 2006-01-30 2006-12-27 Общество с ограниченной ответственностью "Трафиклэнд" Система медиавещания в инфраструктуре оператора мобильной связи
US7262719B2 (en) * 2006-01-30 2007-08-28 International Business Machines Corporation Fast data stream decoding using apriori information
GB0602314D0 (en) 2006-02-06 2006-03-15 Ericsson Telefon Ab L M Transporting packets
US8990153B2 (en) 2006-02-07 2015-03-24 Dot Hill Systems Corporation Pull data replication model
EP1985022B1 (de) * 2006-02-08 2011-06-08 Thomson Licensing Dekodierung von raptor kodes
CN101686107B (zh) 2006-02-13 2014-08-13 数字方敦股份有限公司 使用可变fec开销和保护周期的流送和缓冲
US9270414B2 (en) * 2006-02-21 2016-02-23 Digital Fountain, Inc. Multiple-field based code generator and decoder for communications systems
US20070200949A1 (en) 2006-02-21 2007-08-30 Qualcomm Incorporated Rapid tuning in multimedia applications
JP2007228205A (ja) 2006-02-23 2007-09-06 Funai Electric Co Ltd ネットワークサーバ
US8320450B2 (en) 2006-03-29 2012-11-27 Vidyo, Inc. System and method for transcoding between scalable and non-scalable video codecs
US20090100496A1 (en) * 2006-04-24 2009-04-16 Andreas Bechtolsheim Media server system
US20080010153A1 (en) 2006-04-24 2008-01-10 Pugh-O'connor Archie Computer network provided digital content under an advertising and revenue sharing basis, such as music provided via the internet with time-shifted advertisements presented by a client resident application
US7640353B2 (en) 2006-04-27 2009-12-29 Microsoft Corporation Guided random seek support for media streaming
WO2007134196A2 (en) 2006-05-10 2007-11-22 Digital Fountain, Inc. Code generator and decoder using hybrid codes
US7525993B2 (en) 2006-05-24 2009-04-28 Newport Media, Inc. Robust transmission system and method for mobile television applications
US9432433B2 (en) 2006-06-09 2016-08-30 Qualcomm Incorporated Enhanced block-request streaming system using signaling or block creation
TWM302355U (en) 2006-06-09 2006-12-11 Jia-Bau Jeng Fixation and cushion structure of knee joint
US9419749B2 (en) 2009-08-19 2016-08-16 Qualcomm Incorporated Methods and apparatus employing FEC codes with permanent inactivation of symbols for encoding and decoding processes
US9178535B2 (en) 2006-06-09 2015-11-03 Digital Fountain, Inc. Dynamic stream interleaving and sub-stream based delivery
US9209934B2 (en) 2006-06-09 2015-12-08 Qualcomm Incorporated Enhanced block-request streaming using cooperative parallel HTTP and forward error correction
US20100211690A1 (en) 2009-02-13 2010-08-19 Digital Fountain, Inc. Block partitioning for a data stream
US9380096B2 (en) 2006-06-09 2016-06-28 Qualcomm Incorporated Enhanced block-request streaming system for handling low-latency streaming
US9386064B2 (en) 2006-06-09 2016-07-05 Qualcomm Incorporated Enhanced block-request streaming using URL templates and construction rules
JP2008011404A (ja) 2006-06-30 2008-01-17 Toshiba Corp コンテンツ処理装置及びコンテンツ処理方法
JP4392004B2 (ja) 2006-07-03 2009-12-24 インターナショナル・ビジネス・マシーンズ・コーポレーション パケット回復のための符号化および復号化技術
EP2302869A3 (de) 2006-07-20 2013-05-22 SanDisk Technologies Inc. Ein verbessertes Audio-visuelle Geräte und Spieler-System und Verfahren zur Verbreitung von Inhalten unter Verwendung der gleichen
US7711797B1 (en) 2006-07-31 2010-05-04 Juniper Networks, Inc. Optimizing batch size for prefetching data over wide area networks
US8209736B2 (en) 2006-08-23 2012-06-26 Mediatek Inc. Systems and methods for managing television (TV) signals
US20080066136A1 (en) 2006-08-24 2008-03-13 International Business Machines Corporation System and method for detecting topic shift boundaries in multimedia streams using joint audio, visual and text cues
RU2435235C2 (ru) 2006-08-24 2011-11-27 Нокиа Корпорейшн Система и способ указания взаимосвязей треков в мультимедийном файле
JP2008109637A (ja) * 2006-09-25 2008-05-08 Toshiba Corp 動画像符号化装置及びその方法
US8428013B2 (en) 2006-10-30 2013-04-23 Lg Electronics Inc. Method of performing random access in a wireless communcation system
JP2008118221A (ja) * 2006-10-31 2008-05-22 Toshiba Corp 復号装置及び復号方法
WO2008054100A1 (en) 2006-11-01 2008-05-08 Electronics And Telecommunications Research Institute Method and apparatus for decoding metadata used for playing stereoscopic contents
IN2014MN01853A (de) * 2006-11-14 2015-07-03 Qualcomm Inc
US8027328B2 (en) 2006-12-26 2011-09-27 Alcatel Lucent Header compression in a wireless communication network
ES2935410T3 (es) 2007-01-05 2023-03-06 Divx Llc Sistema de distribución de vídeo que incluye reproducción progresiva
US20080168516A1 (en) 2007-01-08 2008-07-10 Christopher Lance Flick Facilitating Random Access In Streaming Content
RU2009127603A (ru) 2007-01-09 2011-02-20 Нокиа Корпорейшн (Fi) Способ поддержки контроля версий файлов при исправлении файлов в mbms
WO2008084876A1 (en) * 2007-01-11 2008-07-17 Panasonic Corporation Method for trick playing on streamed and encrypted multimedia
US20080172430A1 (en) * 2007-01-11 2008-07-17 Andrew Thomas Thorstensen Fragmentation Compression Management
KR20080066408A (ko) 2007-01-12 2008-07-16 삼성전자주식회사 3차원 영상 처리 장치 및 방법
US9344362B2 (en) 2007-01-12 2016-05-17 University-Industry Cooperation Group Of Kyung Hee University Packet format of network abstraction layer unit, and algorithm and apparatus for video encoding and decoding using the format, QOS control algorithm and apparatus for IPV6 label switching using the format
US8126062B2 (en) * 2007-01-16 2012-02-28 Cisco Technology, Inc. Per multi-block partition breakpoint determining for hybrid variable length coding
US7721003B2 (en) 2007-02-02 2010-05-18 International Business Machines Corporation System and method to synchronize OSGi bundle inventories between an OSGi bundle server and a client
US20080192818A1 (en) 2007-02-09 2008-08-14 Dipietro Donald Vincent Systems and methods for securing media
US20080232357A1 (en) 2007-03-19 2008-09-25 Legend Silicon Corp. Ls digital fountain code
JP4838191B2 (ja) 2007-05-08 2011-12-14 シャープ株式会社 ファイル再生装置、ファイル再生方法、ファイル再生を実行させるプログラム及びそのプログラムを記録した記録媒体
JP2008283571A (ja) 2007-05-11 2008-11-20 Ntt Docomo Inc コンテンツ配信装置、コンテンツ配信システム、およびコンテンツ配信方法
US8275002B2 (en) 2007-05-14 2012-09-25 Samsung Electronics Co., Ltd. Broadcasting service transmitting apparatus and method and broadcasting service receiving apparatus and method for effectively accessing broadcasting service
WO2008144004A1 (en) 2007-05-16 2008-11-27 Thomson Licensing Apparatus and method for encoding and decoding signals
FR2917262A1 (fr) 2007-06-05 2008-12-12 Thomson Licensing Sas Dispositif et procede de codage d'un contenu video sous la forme d'un flux scalable.
US8487982B2 (en) 2007-06-07 2013-07-16 Reald Inc. Stereoplexing for film and video applications
EP2501137A3 (de) 2007-06-11 2012-12-12 Samsung Electronics Co., Ltd. Verfahren und Vorrichtung zur Erzeugung von Kopfzeileninformationen eines stereoskopischen Bildes
CN101690118B (zh) 2007-06-20 2013-08-28 艾利森电话股份有限公司 用于改进的媒体会话管理的方法和设备
CN101690229A (zh) 2007-06-26 2010-03-31 诺基亚公司 用于指示时间层切换点的系统和方法
US7917702B2 (en) 2007-07-10 2011-03-29 Qualcomm Incorporated Data prefetch throttle
JP2009027598A (ja) 2007-07-23 2009-02-05 Hitachi Ltd 映像配信サーバおよび映像配信方法
US8327403B1 (en) 2007-09-07 2012-12-04 United Video Properties, Inc. Systems and methods for providing remote program ordering on a user device via a web server
EP2203836A4 (de) 2007-09-12 2014-11-05 Digital Fountain Inc Erzeugen und übermitteln von quellenidentifikationsinformationen zur ermöglichung einer zuverlässigen kommunikation
US8233532B2 (en) 2007-09-21 2012-07-31 Fraunhofer-Gesellschaft Zur Foerderung Der Angewandten Forschung E.V. Information signal, apparatus and method for encoding an information content, and apparatus and method for error correcting an information signal
US8346959B2 (en) 2007-09-28 2013-01-01 Sharp Laboratories Of America, Inc. Client-controlled adaptive streaming
EP2046044B1 (de) 2007-10-01 2017-01-18 Cabot Communications Ltd Verfahren und Vorrichtung zum Streaming von digitalem Media-Inhalt und Kommunikationssystem
EP2181541B1 (de) * 2007-10-09 2018-12-05 Samsung Electronics Co., Ltd. Vorrichtung und verfahren zur erzeugung von mac pdu in einem mobilen kommunikationssystem
WO2009054907A2 (en) 2007-10-19 2009-04-30 Swarmcast, Inc. Media playback point seeking using data range requests
US8706907B2 (en) 2007-10-19 2014-04-22 Voxer Ip Llc Telecommunication and multimedia management method and apparatus
US20090125636A1 (en) 2007-11-13 2009-05-14 Qiong Li Payload allocation methods for scalable multimedia servers
WO2009065526A1 (en) 2007-11-23 2009-05-28 Media Patents S.L. A process for the on-line distribution of audiovisual contents with advertisements, advertisement management system, digital rights management system and audiovisual content player provided with said systems
US8543720B2 (en) 2007-12-05 2013-09-24 Google Inc. Dynamic bit rate scaling
JP5385598B2 (ja) 2007-12-17 2014-01-08 キヤノン株式会社 画像処理装置及び画像管理サーバ装置及びそれらの制御方法及びプログラム
US9313245B2 (en) * 2007-12-24 2016-04-12 Qualcomm Incorporated Adaptive streaming for on demand wireless services
KR101506217B1 (ko) 2008-01-31 2015-03-26 삼성전자주식회사 스테레오스코픽 영상의 부분 데이터 구간 재생을 위한스테레오스코픽 영상 데이터스트림 생성 방법과 장치, 및스테레오스코픽 영상의 부분 데이터 구간 재생 방법과 장치
EP2086237B1 (de) 2008-02-04 2012-06-27 Alcatel Lucent Verfahren und Vorrichtung zur Umordnung und Multiplexierung von Multimediapaketen aus Multimediaströmen in Bezug auf zusammenhängende Sitzungen
US8151174B2 (en) 2008-02-13 2012-04-03 Sunrise IP, LLC Block modulus coding (BMC) systems and methods for block coding with non-binary modulus
US20090219985A1 (en) 2008-02-28 2009-09-03 Vasanth Swaminathan Systems and Methods for Processing Multiple Projections of Video Data in a Single Video File
US7984097B2 (en) 2008-03-18 2011-07-19 Media Patents, S.L. Methods for transmitting multimedia files and advertisements
US8606996B2 (en) 2008-03-31 2013-12-10 Amazon Technologies, Inc. Cache optimization
US20090257508A1 (en) 2008-04-10 2009-10-15 Gaurav Aggarwal Method and system for enabling video trick modes
EP2263341B1 (de) 2008-04-14 2018-09-19 Amazon Technologies, Inc. Verfahren und vorrichtung zur durchürung von direktzugriffsprozeduren
WO2009127961A1 (en) * 2008-04-16 2009-10-22 Nokia Corporation Decoding order recovery in session multiplexing
US8855199B2 (en) 2008-04-21 2014-10-07 Nokia Corporation Method and device for video coding and decoding
MX2010012117A (es) 2008-05-07 2010-12-01 Digital Fountain Inc Manipulacion de canal rapida y proteccion de corriente de alta calidad sobre un canal de difusion.
US7979570B2 (en) 2008-05-12 2011-07-12 Swarmcast, Inc. Live media delivery over a packet-based computer network
JP5022301B2 (ja) 2008-05-19 2012-09-12 株式会社エヌ・ティ・ティ・ドコモ プロキシサーバおよび通信中継プログラム、並びに通信中継方法
CN101287107B (zh) 2008-05-29 2010-10-13 腾讯科技(深圳)有限公司 媒体文件的点播方法、系统和设备
US7860996B2 (en) 2008-05-30 2010-12-28 Microsoft Corporation Media streaming with seamless ad insertion
US20100011274A1 (en) * 2008-06-12 2010-01-14 Qualcomm Incorporated Hypothetical fec decoder and signalling for decoding control
US8775566B2 (en) 2008-06-21 2014-07-08 Microsoft Corporation File format for media distribution and presentation
US8387150B2 (en) 2008-06-27 2013-02-26 Microsoft Corporation Segmented media content rights management
US8468426B2 (en) 2008-07-02 2013-06-18 Apple Inc. Multimedia-aware quality-of-service and error correction provisioning
US8539092B2 (en) 2008-07-09 2013-09-17 Apple Inc. Video streaming using multiple channels
US20100153578A1 (en) 2008-07-16 2010-06-17 Nokia Corporation Method and Apparatus for Peer to Peer Streaming
US8638796B2 (en) * 2008-08-22 2014-01-28 Cisco Technology, Inc. Re-ordering segments of a large number of segmented service flows
KR101019634B1 (ko) 2008-09-04 2011-03-07 에스케이 텔레콤주식회사 미디어 전송 시스템 및 방법
US8325796B2 (en) 2008-09-11 2012-12-04 Google Inc. System and method for video coding using adaptive segmentation
US8370520B2 (en) * 2008-11-24 2013-02-05 Juniper Networks, Inc. Adaptive network content delivery system
US8099476B2 (en) 2008-12-31 2012-01-17 Apple Inc. Updatable real-time or near real-time streaming
US8743906B2 (en) * 2009-01-23 2014-06-03 Akamai Technologies, Inc. Scalable seamless digital video stream splicing
US9036714B2 (en) 2009-01-26 2015-05-19 Thomson Licensing Frame packing for video coding
KR101405019B1 (ko) 2009-01-29 2014-06-11 돌비 레버러토리즈 라이쎈싱 코오포레이션 다중 이미지들,예를 들면 스테레오스코픽을 서브―샘플링 및 인터리빙하기 위한 방법들 및 디바이스들
US9281847B2 (en) 2009-02-27 2016-03-08 Qualcomm Incorporated Mobile reception of digital video broadcasting—terrestrial services
US8621044B2 (en) 2009-03-16 2013-12-31 Microsoft Corporation Smooth, stateless client media streaming
US8909806B2 (en) 2009-03-16 2014-12-09 Microsoft Corporation Delivering cacheable streaming media presentations
EP2420068A4 (de) 2009-04-13 2012-08-08 Reald Inc Verschlüsselung, entschlüsselung und verteilung stereoskopischer videoinhalte mit verstärkter auflösung
US9807468B2 (en) 2009-06-16 2017-10-31 Microsoft Technology Licensing, Llc Byte range caching
US8903895B2 (en) 2009-07-22 2014-12-02 Xinlab, Inc. Method of streaming media to heterogeneous client devices
US8355433B2 (en) 2009-08-18 2013-01-15 Netflix, Inc. Encoding video streams for adaptive video streaming
US20120151302A1 (en) * 2010-12-10 2012-06-14 Qualcomm Incorporated Broadcast multimedia storage and access using page maps when asymmetric memory is used
US9288010B2 (en) * 2009-08-19 2016-03-15 Qualcomm Incorporated Universal file delivery methods for providing unequal error protection and bundled file delivery services
KR101598247B1 (ko) * 2009-09-02 2016-02-26 애플 인크. 무선 시스템들의 mac 패킷 데이터 유닛 구성
US9917874B2 (en) 2009-09-22 2018-03-13 Qualcomm Incorporated Enhanced block-request streaming using block partitioning or request controls for improved client-side handling
US20110096828A1 (en) * 2009-09-22 2011-04-28 Qualcomm Incorporated Enhanced block-request streaming using scalable encoding
US9438861B2 (en) 2009-10-06 2016-09-06 Microsoft Technology Licensing, Llc Integrating continuous and sparse streaming data
JP2011087103A (ja) 2009-10-15 2011-04-28 Sony Corp コンテンツ再生システム、コンテンツ再生装置、プログラム、コンテンツ再生方法、およびコンテンツサーバを提供
RU2622621C2 (ru) 2009-11-04 2017-06-16 Амотек Ко., Лтд. Система и способ для потоковой передачи воспроизводимого контента
KR101786051B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 제공 방법 및 장치와 데이터 수신 방법 및 장치
KR101786050B1 (ko) 2009-11-13 2017-10-16 삼성전자 주식회사 데이터 전송 방법 및 장치
CN101729857A (zh) 2009-11-24 2010-06-09 中兴通讯股份有限公司 一种接入视频服务的方法及视频播放系统
US8510375B2 (en) 2009-12-11 2013-08-13 Nokia Corporation Apparatus and methods for time mapping media segments in streaming media files
JP5824465B2 (ja) 2010-02-19 2015-11-25 テレフオンアクチーボラゲット エル エム エリクソン(パブル) Httpストリーミングにおける適応のための方法と装置
JP5996439B2 (ja) 2010-02-19 2016-09-21 テレフオンアクチーボラゲット エルエム エリクソン(パブル) Httpストリーミングにおける表現切り替えのための方法及び装置
JP5071495B2 (ja) 2010-03-04 2012-11-14 ウシオ電機株式会社 光源装置
WO2011112052A2 (ko) * 2010-03-11 2011-09-15 한국전자통신연구원 Mimo 시스템에서 데이터를 송수신하는 방법 및 장치
US9225961B2 (en) 2010-05-13 2015-12-29 Qualcomm Incorporated Frame packing for asymmetric stereo video
US9497290B2 (en) 2010-06-14 2016-11-15 Blackberry Limited Media presentation description delta file for HTTP streaming
US8918533B2 (en) * 2010-07-13 2014-12-23 Qualcomm Incorporated Video switching for streaming video data
US9185439B2 (en) * 2010-07-15 2015-11-10 Qualcomm Incorporated Signaling data for multiplexing video components
KR20120010089A (ko) 2010-07-20 2012-02-02 삼성전자주식회사 Http 기반의 멀티미디어 스트리밍 서비스의 품질 향상을 위한 방법 및 장치
US9131033B2 (en) 2010-07-20 2015-09-08 Qualcomm Incoporated Providing sequence data sets for streaming video data
US9596447B2 (en) * 2010-07-21 2017-03-14 Qualcomm Incorporated Providing frame packing type information for video coding
US8711933B2 (en) 2010-08-09 2014-04-29 Sony Computer Entertainment Inc. Random access point (RAP) formation using intra refreshing technique in video coding
US8806050B2 (en) * 2010-08-10 2014-08-12 Qualcomm Incorporated Manifest file updates for network streaming of coded multimedia data
KR101737325B1 (ko) * 2010-08-19 2017-05-22 삼성전자주식회사 멀티미디어 시스템에서 멀티미디어 서비스의 경험 품질 감소를 줄이는 방법 및 장치
US8615023B2 (en) 2010-10-27 2013-12-24 Electronics And Telecommunications Research Institute Apparatus and method for transmitting/receiving data in communication system
US8958375B2 (en) 2011-02-11 2015-02-17 Qualcomm Incorporated Framing for an improved radio link protocol including FEC
US20120208580A1 (en) 2011-02-11 2012-08-16 Qualcomm Incorporated Forward error correction scheduling for an improved radio link protocol
US9270299B2 (en) 2011-02-11 2016-02-23 Qualcomm Incorporated Encoding and decoding using elastic codes with flexible source block mapping
US9253233B2 (en) 2011-08-31 2016-02-02 Qualcomm Incorporated Switch signaling methods providing improved switching between representations for adaptive HTTP streaming
US9843844B2 (en) 2011-10-05 2017-12-12 Qualcomm Incorporated Network streaming of media data
US9294226B2 (en) 2012-03-26 2016-03-22 Qualcomm Incorporated Universal object delivery and template-based file delivery

Also Published As

Publication number Publication date
DE69941342D1 (de) 2009-10-08
US6373406B2 (en) 2002-04-16
US7812743B2 (en) 2010-10-12
EP2136473A2 (de) 2009-12-23
HK1038995B (zh) 2003-06-13
EP1116335B1 (de) 2002-12-18
US20060087456A1 (en) 2006-04-27
EP2136473B1 (de) 2013-01-16
CA2345237C (en) 2008-07-15
CA2345237A1 (en) 2000-03-30
EP2290826A2 (de) 2011-03-02
WO2000018017A1 (en) 2000-03-30
IL140705A0 (en) 2002-02-10
EP2290826B1 (de) 2012-11-07
ES2399220T3 (es) 2013-03-26
US9246633B2 (en) 2016-01-26
US20020190878A1 (en) 2002-12-19
US6614366B2 (en) 2003-09-02
ATE230175T1 (de) 2003-01-15
HK1139525A1 (en) 2010-09-17
KR20010089278A (ko) 2001-09-29
JP2005117633A (ja) 2005-04-28
ATE441251T1 (de) 2009-09-15
US20080034273A1 (en) 2008-02-07
US20010019310A1 (en) 2001-09-06
US7233264B2 (en) 2007-06-19
HK1038995A1 (en) 2002-04-04
DE69904621D1 (de) 2003-01-30
EP1241795B1 (de) 2009-08-26
WO2000018017A9 (en) 2001-12-20
PT2136473E (pt) 2013-03-25
AU6253699A (en) 2000-04-10
US20040021588A1 (en) 2004-02-05
ES2401177T3 (es) 2013-04-17
US20080180284A1 (en) 2008-07-31
JP3809957B2 (ja) 2006-08-16
EP2290826A3 (de) 2011-04-06
EP1241795A3 (de) 2003-05-21
EP1241795A2 (de) 2002-09-18
JP3976163B2 (ja) 2007-09-12
DK2136473T3 (da) 2013-03-18
EP1116335A1 (de) 2001-07-18
AU767140B2 (en) 2003-10-30
US6307487B1 (en) 2001-10-23
EP2136473A3 (de) 2010-10-27
KR100598662B1 (ko) 2006-07-13
JP2003501848A (ja) 2003-01-14
US7057534B2 (en) 2006-06-06

Similar Documents

Publication Publication Date Title
DE69904621T2 (de) Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollen
DE60029601T2 (de) Gruppenkettenreaktionskodierer mit variabler anzahl zugeordneter eingabedaten für jeden ausgaben gruppenkode
DE102009017540B4 (de) Verfahren zum Wiederherstellen verlorener und/oder beschädigter Daten
EP2369746B1 (de) Mehrstufiger code generator und dekodierer für kommunikationssysteme
DE602005003767T2 (de) Verfahren zum komprimieren einer menge korrelierter signale
DE60124568T2 (de) Hybrid-arq-verfahren für paketdatenübertragung
DE102010035210B4 (de) Verfahren zur Rückgewinnung verlorener Daten und zur Korrektur korrumpierter Daten
Zao et al. Design of optimal short-length LT codes using evolution strategies
DE69735982T2 (de) Datenempfänger
DE10024444A1 (de) Vorrichtung und Verfahren zur arithmetischen Codierung/Decodierung und computerlesbares Aufzeichnungsmedium
DE19539343A1 (de) Verfahren zur Fehlerbehandlung eines digitalen Bitdatenstroms, der von einem Sender zu einem Empfänger übertragen wird
DE69823307T2 (de) Digitales Übertragungssystem, Dekoder und Dekodierungsverfahren
DE60034009T2 (de) Verfahren zur Aktualisierung von Geheimschlüsseln in einem Datenkommunikationssystem
DE102004036383B4 (de) Codier-und Decodierverfahren , sowie Codier- und Decodiervorrichtungen
Abdulkhaleq et al. Mitigation of packet erasure using new fountain code design
DE102012203653B3 (de) Verfahren zum Wiederherstellen von verloren gegangenen und/oder beschädigten Daten
DE60033577T2 (de) Paketübertragung mit automatischem aufforderungsprotokoll mit verwendung von punktierten kodes
DE102011103631B4 (de) Verfahren zur Übertragung von Daten
EP1878153B1 (de) Verfahren und vorrichtung zum ermitteln von indizes die korrektursymbolen zugeordnet sind
DE102013218311B4 (de) Verfahren zum Wiederherstellen von verloren gegangenen und-/ oder beschädigten Daten
DE102010029113B4 (de) Verfahren zur Kanalcodierung von digitalen Daten
US20160191080A1 (en) Communication path decoding method and communication decoding device
DE102022117663B3 (de) Verfahren zur Übertragung einer IBLT-Datenstruktur und Benutzerendgerät
DE102005003914B3 (de) Fehlerschutzverfahren und Fehlerkorrekturverfahren, sowie Fehlerschutzvorrichtung und Fehlerkorrekturvorrichtung
DE102014214451B4 (de) Verfahren zum Wiederherstellen von verloren gegangenen und/oder beschädigten Daten

Legal Events

Date Code Title Description
8364 No opposition during term of opposition