DE69904621T2 - Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollen - Google Patents
Verfahren zur wiederherstellung verlorener informationspackete bei packetübertragungsprotokollenInfo
- 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
Links
- 238000000034 method Methods 0.000 title claims description 119
- 238000012546 transfer Methods 0.000 title description 7
- 238000009826 distribution Methods 0.000 claims description 53
- 230000006854 communication Effects 0.000 claims description 45
- 238000004891 communication Methods 0.000 claims description 42
- 230000008569 process Effects 0.000 claims description 40
- 238000012545 processing Methods 0.000 claims description 17
- 238000004806 packaging method and process Methods 0.000 claims 2
- 238000009827 uniform distribution Methods 0.000 claims 1
- 230000005540 biological transmission Effects 0.000 abstract description 38
- 230000006870 function Effects 0.000 description 61
- 238000011084 recovery Methods 0.000 description 35
- 238000010586 diagram Methods 0.000 description 19
- 230000008901 benefit Effects 0.000 description 13
- 239000003795 chemical substances by application Substances 0.000 description 10
- TVZRAEYQIKYCPH-UHFFFAOYSA-N 3-(trimethylsilyl)propane-1-sulfonic acid Chemical compound C[Si](C)(C)CCCS(O)(=O)=O TVZRAEYQIKYCPH-UHFFFAOYSA-N 0.000 description 8
- 238000004364 calculation method Methods 0.000 description 8
- 239000003638 chemical reducing agent Substances 0.000 description 8
- 230000002829 reductive effect Effects 0.000 description 8
- 239000000654 additive Substances 0.000 description 7
- 230000000996 additive effect Effects 0.000 description 7
- 230000006399 behavior Effects 0.000 description 7
- 238000012986 modification Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012217 deletion Methods 0.000 description 5
- 230000037430 deletion Effects 0.000 description 5
- 230000001419 dependent effect Effects 0.000 description 5
- 230000007246 mechanism Effects 0.000 description 5
- 238000013461 design Methods 0.000 description 4
- 230000009467 reduction Effects 0.000 description 4
- 238000013507 mapping Methods 0.000 description 3
- 230000009471 action Effects 0.000 description 2
- 238000003491 array Methods 0.000 description 2
- 238000010276 construction Methods 0.000 description 2
- 238000012937 correction Methods 0.000 description 2
- 230000003111 delayed effect Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000007704 transition Effects 0.000 description 2
- 230000002411 adverse Effects 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003139 buffering effect Effects 0.000 description 1
- 238000004422 calculation algorithm Methods 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 238000005352 clarification Methods 0.000 description 1
- 230000001427 coherent effect Effects 0.000 description 1
- 230000001010 compromised effect Effects 0.000 description 1
- 238000005094 computer simulation Methods 0.000 description 1
- 238000012790 confirmation Methods 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 230000001934 delay Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000004193 electrokinetic chromatography Methods 0.000 description 1
- 238000002474 experimental method Methods 0.000 description 1
- 230000000670 limiting effect Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000007781 pre-processing Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 230000002441 reversible effect Effects 0.000 description 1
- 238000010187 selection method Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L7/00—Arrangements for synchronising receiver with transmitter
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0056—Systems characterized by the type of code used
- H04L1/0057—Block codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/03—Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
- H03M13/05—Error 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/11—Error 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/1102—Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
- H03M13/1191—Codes on graphs other than LDPC codes
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/373—Decoding 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
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3746—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with iterative decoding
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M13/00—Coding, 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/37—Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
- H03M13/3761—Decoding 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
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0041—Arrangements at the transmitter end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L1/00—Arrangements for detecting or preventing errors in the information received
- H04L1/004—Arrangements for detecting or preventing errors in the information received by using forward error control
- H04L1/0045—Arrangements at the receiver end
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L12/00—Data switching networks
- H04L12/02—Details
- H04L12/16—Arrangements for providing special services to substations
- H04L12/18—Arrangements for providing special services to substations for broadcast or conference, e.g. multicast
- H04L12/1836—Arrangements 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
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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.
- 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) ≤ 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.
- 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.
- 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.
- 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.
- 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.
- 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 ≠ nB ≠ 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 ≤ X < P
gilt, und einer zweiten ganzen Zahl Y, so dass 0 ≤ 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.
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)
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)
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 |
-
1999
- 1999-02-05 US US09/246,015 patent/US6307487B1/en not_active Expired - Lifetime
- 1999-09-17 WO PCT/US1999/021574 patent/WO2000018017A1/en active IP Right Grant
- 1999-09-17 ES ES09007850T patent/ES2401177T3/es not_active Expired - Lifetime
- 1999-09-17 DE DE69904621T patent/DE69904621T2/de not_active Expired - Lifetime
- 1999-09-17 EP EP02007488A patent/EP1241795B1/de not_active Expired - Lifetime
- 1999-09-17 JP JP2000571567A patent/JP3976163B2/ja not_active Expired - Lifetime
- 1999-09-17 CA CA002345237A patent/CA2345237C/en not_active Expired - Lifetime
- 1999-09-17 AT AT99949717T patent/ATE230175T1/de not_active IP Right Cessation
- 1999-09-17 KR KR1020017003774A patent/KR100598662B1/ko active IP Right Grant
- 1999-09-17 ES ES10011741T patent/ES2399220T3/es not_active Expired - Lifetime
- 1999-09-17 DE DE69941342T patent/DE69941342D1/de not_active Expired - Lifetime
- 1999-09-17 AU AU62536/99A patent/AU767140B2/en not_active Expired
- 1999-09-17 EP EP99949717A patent/EP1116335B1/de not_active Expired - Lifetime
- 1999-09-17 PT PT90078502T patent/PT2136473E/pt unknown
- 1999-09-17 EP EP09007850A patent/EP2136473B1/de not_active Expired - Lifetime
- 1999-09-17 AT AT02007488T patent/ATE441251T1/de not_active IP Right Cessation
- 1999-09-17 EP EP10011741A patent/EP2290826B1/de not_active Expired - Lifetime
- 1999-09-17 IL IL14070599A patent/IL140705A0/xx not_active IP Right Cessation
- 1999-09-17 DK DK09007850.2T patent/DK2136473T3/da active
-
2001
- 2001-01-08 US US09/757,078 patent/US6373406B2/en not_active Expired - Lifetime
-
2002
- 2002-01-02 HK HK02100001.5A patent/HK1038995B/zh not_active IP Right Cessation
- 2002-02-14 US US10/076,623 patent/US6614366B2/en not_active Expired - Lifetime
-
2003
- 2003-06-19 US US10/600,484 patent/US7057534B2/en not_active Expired - Lifetime
-
2004
- 2004-08-23 JP JP2004243000A patent/JP3809957B2/ja not_active Expired - Lifetime
-
2005
- 2005-09-13 US US11/226,919 patent/US7233264B2/en not_active Expired - Lifetime
-
2007
- 2007-04-23 US US11/738,866 patent/US9246633B2/en active Active
- 2007-08-20 US US11/841,954 patent/US7812743B2/en not_active Expired - Fee Related
-
2010
- 2010-06-23 HK HK10106200.1A patent/HK1139525A1/xx not_active IP Right Cessation
Also Published As
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 |