-
GEBIET
-
Ausführungsformen der Erfindung betreffen im Allgemeinen das Feld der digitalen Datenübertragung über Computernetzwerke und insbesondere die Fehlerdetektion und -korrektur innerhalb eines Videokanals.
-
HINTERGRUND
-
Die Übertragung von Videodaten über (mit anderen Worten mittels) eines Videokanals in modernen digitalen Videoschnittstelle-Systemen unterliegt im Allgemeinen irgendeiner nicht-null (d.h. von Null verschiedenen) Bit-Fehlerrate. Moderne Videoschnittstellen-Standards, z.B. einer Hochauflösung-Multimedia-Schnittstelle (HDMI, engl.: „High-Definition Multimedia Interface“), einer Mobile-Hochauflösung-Verbindung (MHL, engl.: „Mobile High-Definition Link“) und andere Audio/Videoschnittstelle-Standards, unterstützen die Übertragung von unkomprimierten Videodaten und spezifizieren eine akzeptable Bit-Fehlerrate für die Übertragung der Videodaten. Ein gelegentlicher Bit-Fehler in übertragenen Videodaten resultiert in einem beschädigten Pixel der Videodaten. Allerdings ist die Fehlerrate von übertragenen Videodaten über einen Videokanal in einem digitalen Videoschnittstelle-System, basierend auf HDMI, MHL und anderen Audio/Videoschnittstelle-Standards, im Allgemeinen niedrig, so dass der gelegentliche Bit-Fehler in den übertragenen Videodaten für das menschliche Auge nicht sichtbar ist.
-
Die Entwicklung einer modernen digitalen Audio/Videoschnittstelle, z.B. einem Anzeigestrom-Kompressionsstandard (DSC, engl.: “Display Stream Compression Standard”), kann die Übertragung von komprimierten digitalen Videodaten unterstützen. Die Unterstützung der Übertragung von komprimierten digitalen Videodaten von einem modernen digitalen Videoschnittstelle-System tritt Herausforderungen in der Bereitstellung effizienter Fehlerdetektion und Korrektur in übertragenen digitalen Videodaten entgegen, da, wenn komprimierte digitale Videodaten übertragen werden, ein einzelner Bit-Fehler einen großen Block von Pixeln der digitalen Videodaten beschädigen kann und für das menschliche Auge sichtbar sein kann, selbst wenn der Fehler nicht wiederholt auftritt.
-
ÜBERBLICK
-
Hierin wird eine Lösung beschrieben zum Generieren von Fehlercodes für digitale Daten und zum Detektieren beschädigter Datenbits in den digitalen Daten auf einer Empfängerseite. Die Lösung organisiert Codewörter für die digitalen Daten in einem oder mehreren orthogonalen Datenblöcken, wobei jedes Codewort einen Datenabschnitt, welcher den Inhalt der digitalen Daten repräsentiert, und einen Fehlerkorrektur-Abschnitt zum Detektieren beschädigter Datenbits in dem Datenabschnitt aufweist. Mittels der Verwendung orthogonaler Datenblöcke ermöglicht die Lösung einer Senke-Vorrichtung, beschädigte Datenbits, welche in einem Datenblock aus einem einzelnen Übertragungsfehler resultieren, zu detektieren und zu korrigieren und beschädigte Datenbits, welche in einem Datenblock aus mehreren Übertragungsfehlern resultieren, zu detektieren.
-
Eine Quelle-Vorrichtung empfängt digitale Daten, welche unkomprimierte Videodaten und deren assoziierte Metadaten aufweisen, und komprimiert die Videodaten. Die Quelle-Vorrichtung generiert einen Fehlercode für jedes Datenwort, welches die komprimierten Videodaten repräsentiert, und jedes Datenwort, welches die mit den Videodaten assoziierten Metadaten (mit anderen Worten diesen zugehörigen Metadaten) repräsentiert. Das Datenwort und dessen korrespondierenden Fehlercodes werden zum Bilden eines Codeworts kombiniert. Die Quelle-Vorrichtung organisiert Codewörter der Videodaten und deren Metadaten in orthogonale Datenblöcke und überträgt die Datenblöcke zu einer Senke-Vorrichtung. Die Senke-Vorrichtung detektiert beschädigte Datenbits in den empfangenen Daten basierend auf einer Analyse der Fehlercodes der Codewörter in den Datenblöcken. Das Organisieren der Codewörter in orthogonalen Datenblöcken trägt dazu bei, beschädigte Datenbits in Datenblöcken zu isolieren und ermöglicht der Senke-Vorrichtung mehrere beschädigte Datenbits, welche aus einem einzelnen Übertragungsfehler resultieren, zu detektieren und zu korrigieren und mehrere beschädigte Datenbits, welche aus mehreren Übertragungsfehlern resultieren, zu detektieren.
-
KURZBESCHREIBUNG DER FIGUREN
-
Ausführungsformen der Erfindung werden beispielhaft und nicht limitierend in den Figuren der beigefügten Zeichnungen, in welchen gleiche Bezugszeichen auf ähnliche Elemente verweisen, veranschaulicht:
-
1 zeigt ein Blockdiagram, welches eine Videoschnittstelle-Umgebung gemäß einer Ausführungsform veranschaulicht.
-
2 zeigt ein Blockdiagram, welches ein Beispiel von digitalen leitungscodierten Codewörtern von Eingangsdaten während Übertragungsintervallen veranschaulicht, gemäß einer Ausführungsform.
-
3 zeigt ein Blockdiagram, welches einen beispielhaften orthogonalen Codeblock, welcher mehrere Codewörter aufweist, veranschaulicht gemäß einer Ausführungsform.
-
4A veranschaulicht ein erstes Beispiel, in dem keine Bit-Fehler in einem übertragenen orthogonalen Codeblock detektiert sind, gemäß einer Ausführungsform.
-
4B veranschaulicht ein zweites Beispiel, in dem Bit-Fehler in allen vertikalen Stellen einer einzelnen Spalte eines übertragenen orthogonalen Codeblocks detektiert sind, gemäß einer Ausführungsform.
-
4C veranschaulicht ein drittes Beispiel, in dem Bit-Fehler in einigen vertikalen Stellen einer einzelnen Spalte eines orthogonalen Codeblocks detektiert sind, gemäß einer Ausführungsform.
-
4D veranschaulicht ein viertes Beispiel, in dem Bit-Fehler in 2 vertikalen Spalten eines übertragenen orthogonalen Codeblocks detektiert sind, gemäß einer Ausführungsform.
-
5 zeigt ein Ablaufdiagram, welches einen Prozess zum Generieren von Fehlercodes für Eingangsdaten in einer Videoschnittstelle-Umgebung veranschaulicht, gemäß einer Ausführungsform
-
6 zeigt ein Ablaufdiagram, welche einen Prozess zum Detektieren und/oder Korrigieren beschädigter Datenbits in empfangenen digitalen Daten in einer Videoschnittstelle-Umgebung veranschaulicht, gemäß einer Ausführungsform.
-
DETAILLIERTE BESCHREIBUNG
-
Wie hierin verwendet, bezeichnen "Netzwerk" oder "Kommunikationsnetzwerk" ein Verbindungsnetzwerk zum Übertragen von digitalem Medieninhalt (aufweisend Musik, Audio/Video, Spiele, Fotos/Bilder, und Anderes) zwischen Vorrichtungen unter Verwendung irgendeiner Anzahl von Technologien, wie etwa seriell-ATA (SATA), einer Frame-Informationsstruktur (FIS, engl.: „Frame Informationen Structure“), usw. Ein Netzwerk weist eine lokales Netzwerk (LAN, engl.: „Local Area Network), ein Weitverkehrsnetz (WAN, engl.: „Wide Area Network“), ein großstädtisches Netzwerk (MAN, engl.: „Metropolitan Area Network“), ein Intranetz, das Internet, usw. auf. In einem Netzwerk können bestimmte Netzwerk-Vorrichtungen eine Quelle für digitalen Medieninhalt sein, wie etwa ein digitaler Fernseher-Tuner (mit anderen Worten ein TV-Tuner), ein Kabel-Beistellgerät (mit anderen Worten eine Kabel-Set-Top-Box), eine Handheld-Vorrichtung (z.B. ein persönlicher digitaler Assistent (PDA)), ein Videospeicher-Server und eine andere Quelle-Vorrichtung. Solche Vorrichtungen werden hierin bezeichnet als "Quelle-Vorrichtungen" oder "Übertragen-Vorrichtungen". Andere Vorrichtungen können digitalen Medieninhalt empfangen, anzeigen, verwenden oder speichern, wie etwa ein digitaler Fernseher, ein Heimtheater-System, ein Audiosystem, ein Spielesystem, ein Video- und Audiospeicher-Server und Ähnliches. Solche Vorrichtungen sind hierin bezeichnet als "Senke-Vorrichtungen" oder "Empfangen-Vorrichtungen".
-
Wie hierin verwendet, bezeichnet eine "Videoschnittstelle-Umgebung" eine Umgebung, welche eine Quelle-Vorrichtung und eine Senke-Vorrichtung aufweist, welche mittels eines Übertragungskanals gekoppelt sind zum Übertragen von Videodaten und Metadaten, welche mit den Videodaten assoziiert sind. Ein Beispiel einer Videoschnittstelle-Umgebung ist eine HDMI-Umgebung, in welcher eine Quelle-Vorrichtung (wie etwa ein DVD-Abspielgerät) eingerichtet ist einer Senke-Vorrichtung (wie etwa ein Fernsehgerät oder eine andere Anzeige) Medieninhalt, welcher gemäß einem HDMI Protokoll codiert ist, über einen (mit anderen Worten mittels eines) HDMI-Kanal oder einen MHL3-Kanal bereitzustellen.
-
Es sollte erwähnt sein, dass bestimmte Vorrichtungen mehrere Medienfunktionen (mit anderen Worten Mediafunktionen) ausführen können, wie etwa eine Kabel-Set-Top-Box, welche als ein Empfänger (Informationen von einem Kabel-Kopfende empfangend) wie auch als Überträger (Informationen zu einem TV übertragend) und andersherum dienen können. In einigen Ausführungsformen können die Quelle- und Senke-Vorrichtungen zusammen in einem einzelnen lokalen Netzwerk angeordnet sein. In anderen Ausführungsformen können die Vorrichtungen mehrere Netzwerksegmente überspannen, wie etwa zwischen lokalen Netzwerken tunnelnd. Es sollte erwähnt werden, dass obwohl das Generieren von Fehlercodes für digitale Daten und das Detektieren beschädigter Datenbits in empfangenen digitalen Daten hierin im Kontext mit einer Videoschnittstelle-Umgebung beschrieben wird, die Fehler-Generieren und -Detektieren Techniken, welche hierin beschrieben sind, auf andere Typen von digitalem Datentransfer zwischen einer Quelle-Vorrichtung und einer Senke-Vorrichtung anwendbar sind, wie etwa auf Netzwerkdaten in einer Netzwerkumgebung und auf Ähnliches.
-
1 zeigt ein Blockdiagram, welche eine Videoschnittstelle-Umgebung gemäß einer Ausführungsform veranschaulicht. Die Umgebung in 1 weist eine Quelle-Vorrichtung 100 auf, welche mit einer Senke-Vorrichtung 102 mittels eines Datenübertragungskanals 116 gekoppelt ist. Die Quelle-Vorrichtung 100 weist auf: ein Videokompression-Modul 112, ein Fehlercode-Generator 200 und einen digitalen Leitungscodierer 114. Die Senke-Vorrichtung 102 weist auf: einen digitalen Leitungsdecodierer 118, einen Blockpuffer 120, ein Fehlerkorrektur-Modul 122 und ein Videodekompression-Modul 124. Die Quelle-Vorrichtung 100 empfängt Eingangsdaten 104 und kombiniert die Eingangsdaten 104 mit Fehlercodes, und überträgt die kombinierten Daten über den (mit anderen Worten mittels des) Übertragungskanal 116 zu der Senke-Vorrichtung 102. Die Senke-Vorrichtung 102 detektiert Fehler in den empfangenen Daten und produziert Ausgangsdaten 106 (mit anderen Worten Ausgabedaten 106). Die Senke-Vorrichtung 102 detektiert und korrigiert beschädigte Datenbits in den empfangenen Daten, welche aus einem einzelnen Übertragungsfehler resultieren. Die Senke-Vorrichtung 102 detektiert und berichtet weiterhin beschädigte Datenbits in den empfangenen Daten, welche aus mehreren Übertragungsfehlern resultieren. Andere Ausführungsformen der Umgebung von 1 können verschiedene und/oder zusätzliche Komponenten aufweisen als die, die hierin veranschaulicht sind. Zum Beispiel kann der Datenübertragungskanal 116 irgendein geeigneter Typ von Video- oder Kommunikationskanal sein, wie etwa ein HDMI-Kanal, ein MHL-Kanal oder ein anderer Seriell-Typ Kanal.
-
In einer Ausführungsform weisen die Eingangsdaten 104 unkomprimierte Videodaten 110 und Metadaten 111, welche mit den Videodaten 110 assoziiert sind, auf. Beispiele von mit den Videodaten assoziierten Metadaten weisen auf: Hochkontrast-Metadaten (engl.: „high dynamic range“ Metadaten), welche einen Umfang der Videodaten beschreiben, und Videokompression-Metadaten, welche eine Charakteristik der Videodaten beschreiben, z.B. eine Länge des Videos, eine Bitrate und eine Bildgröße (mit anderen Worten Framegröße) des Videos und/oder eine Charakteristik des Codierens, welches zum Codieren von Videobildern der Videodaten verwendet wird, z.B. der Typ des Kompressionsalgorithmus. Die Eingangsdaten 104 können auf einem nicht-flüchtigen computerlesbaren Speichermedium gespeichert sein oder werden, wie etwa einem Datenspeicher (engl.: „memory“), oder von einer Quelle extern zu der Quelle-Vorrichtung 100 empfangen werden, zum Beispiel von einem externen Videoserver, welcher kommunikativ mit der Quelle-Vorrichtung 100 mittels des Internets oder irgendeinem anderen Typ eines Netzwerks gekoppelt ist.
-
Das Videokompression-Modul 112 ist eingerichtet zum digitalen Komprimieren eines Videos der Videodaten 110. Das Videokompression-Modul 112 kann eine Komprimierung unter Verwendung irgendeines bekannten Videocodierungsstandards implementieren, zum Beispiel eine Anzeigestrom-Komprimierung (DSC) der Videoelektronikstandard-Assoziation (VESA) und Ähnlichem. Ausführungsformen des Videokompression-Moduls 112 können irgendwelche Videokompression-Schemata verwenden, welche denen, die in der Technik befähigt sind, bekannt sind, zum Beispiel aufweisend eine diskrete Kosinus-Transformation (DCT), eine Wavelet-Transformation, eine Quantelung und eine Entropiecodierung. Das Videokompression-Modul 112 stellt dem Fehlercode-Generator 200 die komprimierten Videodaten für eine Fehlercode-Generierung bereit. Die Metadaten, welche mit den Videodaten 110 assoziiert sind, werden dem Fehlercode-Generator 200 zur Fehlercode-Generierung direkt bereitgestellt.
-
Der Fehlercode-Generator 200 generiert Fehlercodes für die komprimierten Videodaten und Metadaten, welche mit den Videodaten assoziiert sind. In einer Ausführungsform empfängt der Fehlercode-Generator 200 einen Abschnitt der komprimierten Videodaten von dem Videokompression-Modul 112 und generiert einen Fehlercode basierend auf dem Abschnitt der komprimierten Videodaten. In einer Ausführungsform weist ein Abschnitt der komprimierten Videodaten mehrere Datenwörter auf, von denen jedes mehrere Datenbits aufweist. Für jedes Datenwort generiert der Fehlercode-Generator 200 einen Fehlercode, welcher eine vorbestimmte Anzahl von Syndrombits (auch bezeichnet als "Paritätsbits") aufweist. Jedes Datenwort und dessen korrespondierender Fehlercode werden kombiniert zum Bilden eines Fehlerkorrektur-Codeworts (oder einfach "Codewort"). In einer Ausführungsform wird der Fehlercode, welcher mittels des Fehlercode-Generators 200 generiert wird, zu dem Datenwort hinzugefügt, z.B. unter Verwendung eines Multiplexers, bevor diese mittels des digital Leitungscodierers 114 leitungscodiert und über den Übertragungskanal 116 übertragen werden.
-
In einer Ausführungsform wendet der Fehlercode-Generator 200 einen Fehlerkorrektur-Algorithmus auf jedes Datenwort an zum Generieren der korrespondierenden Syndrombits. Beispiele des Fehlerkorrektur-Algorithmus, welcher von dem Fehlercode-Generator 200 verwendet werden kann, weisen auf: BCH-Codes, Reed-Solomon-Codes und Hamming-Fehlerkorrektur-Codes. Der Fehlercode-Generator 200 wählt einen Fehlerkorrektur-Algorithmus basierend auf einem oder mehreren Faktoren aus, z.B. aufweisend Charakteristiken des Algorithmus (wie etwa zyklisch oder nicht-zyklisch), Größe des Codeworts, Anzahl von Syndrombits und Anzahl von Fehlern innerhalb eines Codeworts, welche detektiert und korrigiert werden können.
-
Der Fehlercode-Generator 200 kann ferner eine Fehlercode-Effizienz berücksichtigen, wenn dieser einen Fehlerkorrektur-Algorithmus zur Verwendung auswählt. Die Fehlercode-Effizienz ist definiert als das Verhältnis der Größe eines Datenworts zu der Größe von dessen korrespondierenden Codewort. Zum Beispiel kann die Fehlercode-Effizienz 191/255 sein, z.B. 0.749, für ein Codewort, welches unter Verwendung eines BCH-Algorithmus generiert wird, der insgesamt 255 Bits für das Codewort aufweist, 191 Bits für das Datenwort, und bis zu 8 Fehler, welche von dem Fehlercode korrigiert werden können. In einem anderen Beispiel ist die Fehlercode-Effizienz 247/255, z.B. 0.968, für ein Codewort, welches unter Verwendung eines BCH-Algorithmus generiert wird, der insgesamt 255 Bits für das Codewort, 247 Bits für das Datenwort und 1 Fehler aufweist, der von dem Fehlercode korrigiert wird.
-
Der Fehlercode-Generator 200 generiert auf ähnliche Weise Fehlercodes für die Metadaten, welche mit den Videodaten assoziiert sind. Zum Beispiel empfängt der Fehlercode-Generator 200 einen Abschnitt der Metadaten, welche mit den Videodaten assoziiert sind. Der Abschnitt der empfangenen Metadaten weist mehrere Datenwörter auf, von denen jedes mehrere Datenbits aufweist. Für jedes Datenwort generiert der Fehlercode-Generator 200 einen Fehlercode, welcher eine vorbestimmte Anzahl von Syndrombits aufweist. Jedes Datenwort der Metadaten und dessen korrespondierender Fehlercode werden zum Bilden eines Fehlerkorrektur-Codeworts kombiniert.
-
Zum Verbessern der Code-Effizienz organisiert der Fehlercode-Generator 200 die Codewörter (z.B. die Codewörter für die komprimierten Videodaten und die Codewörter für die Metadaten, welche mit den Videodaten assoziiert sind) gemäß einer orthogonalen Datenorganisation-Struktur. In einer Ausführungsform organisiert der Fehlercode-Generator 200 die Codewörter in einem oder mehreren orthogonalen Datenblöcken. Jeder orthogonale Datenblock weist eine Anzahl von Codewörtern auf, von denen jedes eine Anzahl von Datenbits und korrespondierenden Syndrombits aufweist. Die Bits, welche in einer einzelnen vertikalen Spalte sind, werden zu dem digitalen Leitungscodierer gesendet, z.B. werden die Bits aus der ganz linken Spalte, welche 0, 1, 2, 3, 4, 5, 6, 7 benannt werden, als erstes zu dem digitalen Leitungscodierer gesandt. Danach werden als zweites dieselben Bits 0 bis 7 aus der zweiten Spalte zu dem digitalen Leitungscodierer gesandt, usw.
-
Das Organisieren der Codewörter in orthogonalen Datenblöcken ermöglicht eine effiziente Korrektur von mehreren Bit-Fehlern. Für das System, welches in 1 gezeigt ist, sind Fehler in der Übertragung Fehler in den leitungscodierten Daten, welche den digitalen Leitungsdecodierer 118 erreichen. Ein einzelner Bit-Fehler in einem Leitungscode, wie etwa einem 8b/10b TMDS-Code, kann nach dem Decodieren des beschädigten Leitungscodes in Fehlern in einigen oder allen der 8 Bits des Datensymbols resultieren. Die orthogonale Datenblock-Struktur verteilt diese mehreren Fehler über mehrere Codewörter, wo diese als ein einzelner Fehler pro Codewort auftreten können. Mehrere Codewörter werden zum Korrigieren der mehreren Fehler bereitgestellt. Jedes Codewort korrigiert einen einzelnen Fehler, was in weniger Syndrombits resultiert als wenn das Codewort mehrere Bit-Fehler pro Codewort korrigiert. Dies resultiert in der Fähigkeit mehrere Bit-Fehler in einem einzelnen 8 Bit Datensymbol zu korrigieren, wobei das Datensymbol aus einem beschädigten Leitungscode decodiert wurde, mit dem Nutzen einer Einzelbit-Fehlerkorrektur-Effizienz. Details der Fehlerdetektion und -korrektur sind ferner nachfolgend mit Bezug auf 4A–4D beschrieben.
-
Bezugnehmend auf 3, zeigt 3 ein Blockdiagram, welches einen beispielhaften orthogonalen Codeblock 304 veranschaulicht, welcher 8 Codewörter 304a–304h aufweist, gemäß einer Ausführungsform. Andere Ausführungsformen können eine andere Anzahl von Codewörtern in einem orthogonalen Datenblock aufweisen. Jedes von den Codewörtern, 304a–304h, weist insgesamt n Bits auf, welche zwischen Datenbits und Syndrombits aufgeteilt sind. Die Aufteilung der insgesamt n Bits unter den Datenbits und Syndrombits ist mittels des Fehlercode-Generators 200 konfigurierbar. Beispiele einer Bits-Aufteilung für ein Codewort von insgesamt 255 Bits weisen 191 Datenbits und 64 Syndrombits auf, welches bis zu 8 Fehlern innerhalb der insgesamt 255 Bits korrigieren kann. Ein anderes Beispiel ist 247 Datenbits und 8 Syndrombits, welches 1 Fehler innerhalb der insgesamt 255 Bits korrigieren kann. Der Fehlercode-Generator 200 sendet Bits der Codewörter von 1 vertikalen Spalte des orthogonalen Datenblocks 304 an derselben Bitposition (mit anderen Worten einer Spalte von Bits des orthogonalen Datenblocks 304), z.B. 8 vertikal ausgerichtete Bits der Codewörter 304a, 304b, 304c, 304d, 304e, 304f, 304g und 304h, an den digitalen Leitungscodierer 114 zum weiteren Prozessieren. Der Fehlercode-Generator 200 sendet die verbleibenden Bits des orthogonalen Datenblocks 304, 8 Bits zur selben Zeit, an den digitalen Leitungscodierer 114 zum weiteren Prozessieren.
-
Zurückverweisend zu 1 weist die Quelle-Vorrichtung 100 einen digitalen Leitungscodierer 114 zum Codieren der orthogonalen Datenblöcke von Codewörtern für die komprimierten Videodaten und deren assoziierte Metadaten auf. In einer Ausführungsform codiert der digitale Leitungscodierer 114 die Codewörter unter Verwendung einer 8b/10b Leitungscodierung gemäß dem TMDS-Standard. Andere Ausführungsformen des digitalen Leitungscodierers 114 können andere Leitungscodieren-Schemata verwenden, z.B. eine 16b/18b Leitungscodierung. Die 8b/10b Leitungscodierung bildet ein 8-Bit Datensymbol auf ein 10-Bit Symbol ab, was dazu beiträgt, ein DC-Gleichgewicht zu erreichen und ausreichende Zustandsänderungen bereitzustellen zum Ermöglichen akzeptabler Takt-Rückgewinnung auf einer Empfängerseite. Bei Anwendung auf das Beispiel, welches in 3 veranschaulicht ist, nimmt der digitale Leitungscodierer 114 eine Spalte der 8 Bits des orthogonalen Datenblocks 304 und codiert die 8 Bits in ein 10-Bit Datensymbol und überträgt die Bits des 10-Bit Datensymbols in Serie (mit anderen Worten seriell, d.h. der Reihe nach) zu der Senke-Vorrichtung 102. Der digitale Leitungscodierer 114 wiederholt den Codieren-Schritt auf alle verbleibenden Spalten des orthogonalen Datenblocks 304.
-
Der digitale Leitungscodierer 114 gibt die leitungscodierten Codewörter auf den Übertragungskanal 116 aus als ein serieller Bitstrom. In einer Ausführungsform werden die leitungscodierten Codewörter für die komprimierten Videodaten und die leitungscodierten Codewörter für die Metadaten, welche mit den komprimierten Videodaten assoziiert sind, während verschiedener Zeitintervalle ausgegeben. Zum Beispiel werden die leitungscodierten Codewörter für die komprimierten Videodaten während eines aktiven Intervalls ausgegeben und die leitungscodierten Codewörter für die Metadaten, welche mit den komprimierten Videodaten assoziiert sind, werden während Austastintervalle ausgegeben, wobei das aktive Intervall und das Austastintervall gemäß dem HDMI-Videoschnittstelle-Standard definiert sind. 2 zeigt ein Blockdiagram, welches ein Beispiel von leitungscodierten Codewörtern von Eingangsdaten während Übertragungsintervallen veranschaulicht, gemäß einer Ausführungsform.
-
Der digitale Leitungsdecodierer 118 der Senke-Vorrichtung 102 ist eingerichtet zum Empfangen und Decodieren der leitungscodierten Codewörter aus der Quelle-Vorrichtung 100. In einer Ausführungsform wendet der digitale Leitungsdecodierer 118 ein Leitungsdecodieren-Schema korrespondierend zu dem Leitungscodieren-Schema, welches von dem digitalen Leitungscodierer 114 verwendet wurde, an. Zum Beispiel konvertiert der digitale Leitungsdecodierer 118 ein 10-Bit Datensymbol in ein 8-Bit Datensymbol in Antwort auf die 8b/10b Leitungscodierung an der Quelle-Vorrichtung 110. Der Blockpuffer 120 ist ein Speicher oder ein anderes Speichermedium, welches zum Puffern der Codewörter eingerichtet ist, welche von dem digitalen Leitungsdecodierer 118 decodiert werden.
-
Das Videodekompression-Modul 124 ist eingerichtet zum Decodieren von Videodaten, welche von dem Fehlerkorrektur-Modul 122 empfangen werden. Der Decodieren-Prozess (mit anderen Worten Decodierungsprozess), welcher von dem Videodekompression-Modul 124 durchgeführt wird, ist eine Inversion jedes Durchgangs des Codieren-Prozesses, welcher von dem Videokompression-Modul 112 durchgeführt wird (ausgenommen des Quantifizierung-Durchgangs einer verlustbehafteten Komprimierung). Zum Beispiel führt das Videodekompression-Modul 124 einen Decodieren-Prozess gemäß dem DSC-Codierung-Standard durch in Antwort auf das Videokompression-Modul 112, welches das Videobild gemäß dem DSC-Codierung-Standard codiert.
-
Das Fehlerkorrektur-Modul 122 ist eingerichtet zum Empfangen von leitungsdecodierten Codewörtern aus dem Blockpuffer 120 und zum Detektieren und Korrigieren von Fehlern (z.B. von beschädigten Datenbits) in den Codewörtern. Die Übertragung der Videodaten über einen Videokanal in modernen digitalen Videoschnittstelle-Systemen unterliegt im Allgemeinen irgendeiner nicht-null Bit-Fehlerrate. Zum Beispiel kann ein einzelner Bit-Fehler in einem 10-Bit TMDS-Datensymbol, welcher über einen Übertragungskanal transportiert wird, z.B. dem Übertragungskanal 116, bis zu alle 8 Bits in den leitungsdecodierten Daten beschädigen. Mit den Codewörtern, welche in orthogonalen Datenblöcken organisiert sind, wird dem Fehlerkorrektur-Modul 122 ermöglicht, beschädigte Datenbits in den Codewörtern zu detektieren und mehrere beschädigte Datenbits, welche aus einem einzelnen TMDS-Übertragungsfehler resultieren, zu korrigieren.
-
In einer Ausführungsform detektiert das Fehlerkorrektur-Modul 122 einen oder mehrere Fehler in Codewörtern eines Datenblocks mittels Überprüfens der Werte der Syndrombits in jedem Codewort und unterscheidet zwischen den Werten der Syndrombits der Codewörter. In Antwort auf die Werte der Syndrombits von allen Codewörtern in dem Datenblock, welche ein vordefinierter Wert sind, was Fehlerfreiheit angibt, z.B. Null, ermittelt das Fehlerkorrektur-Modul 122, dass der Datenblock keine Fehler aufweist. In Antwort auf die Syndrombits von allen Codewörtern, welche nicht-null sind aber denselben Wert aufweisen, ermittelt das Fehlerkorrektur-Modul 122, dass der Datenblock 8 beschädigte Datenbits aufweist, welche aus einem einzelnen Übertragungsfehler resultieren. In Antwort auf die Syndrombits von mehreren Codewörtern (aber nicht allen Codewörtern), welche nicht-null sind, und den Syndrombits der verbleibenden Codewörter, welche den Wert von Null aufweisen, ermittelt das Fehlerkorrektur-Modul 122, dass der Datenblock eine Anzahl beschädigter Datenbits aufweist, welche aus einem einzelnen Übertragungsfehler resultieren, und die Anzahl der beschädigten Datenbits gleich ist zu der Anzahl der Codewörter, welche nicht-null Syndrombits aufweisen. In Antwort zu den Syndrombits von allen Codewörtern, welche nicht-null sind, und den nicht-null Werten der Syndrombits, welche verschieden sind, bestimmt das Fehlerkorrektur-Modul 122, dass es mehrere beschädigte Datenbits in dem Datenblock gibt, welche aus mehreren Übertragungsfehlern resultieren.
-
In Antwort auf beschädigte Datenbits, welche aus einem einzelnen Übertragungsfehler resultieren, korrigiert das Fehlerkorrektur-Modul 122 die beschädigten Datenbits in den Codewörtern. Irgendwelche Fehlerkorrektur-Schemata, welche denen bekannt sind, die in der Technik befähigt sind, können von dem Fehlerkorrektur-Modul 112 zum Korrigieren der beschädigten Datenbits verwendet werden. Zum Beispiel greift das Fehlerkorrektur-Modul 122 in Antwort auf Codewörter, welche beschädigte Datenbits in dem Datenblock aufweisen, welche aus einem einzelnen Übertragungsfehler resultieren, die Leitungsdecodierten Daten, welche in dem Blockpuffer 120 gespeichert sind, auf und korrigiert die beschädigten Bits mittels Ersetzens jedes beschädigten Bits mit seinem Inversen. In Antwort auf mehrere beschädigte Datenbits, welche aus mehreren Übertragungsfehlern resultieren, detektiert das Fehlerkorrektur-Modul 122 beschädigte Datenbits und berichtet die detektierten Fehler zum weiteren Prozessieren.
-
4A–4D veranschaulichen vier Beispiele von Bit-Fehlern, welche in übertragenen digitalen Daten von dem Fehlerkorrektur-Modul 122 detektiert sind, gemäß einer Ausführungsform. In den veranschaulichten Beispielen sind die übertragenen digitalen Daten leitungsdecodierte Symbole für die komprimierten Videodaten und deren assoziierte Metadaten; das Leitungsdecodieren-Schema, welches verwendet wird, ist die 10b/8b-Decodierung gemäß dem TMDS-Standard. Jedes Beispiel, welches in 4A bis 4D gezeigt ist, zeigt einen orthogonalen Datenblock von 8 Codewörtern.
-
4A veranschaulicht ein Beispiel, in dem es keine beschädigten Datenbits in irgendeinem Codewort des empfangenen orthogonalen Datenblocks gibt. Das Fehlerkorrektur-Modul 122 überprüft die Werte der Syndrombits in jedem Codewort. In Antwort auf die Werte der Syndrombits von allen Codewörtern in dem Datenblock, welche ein vorbestimmter Wert sind, was Fehlerfreiheit angibt, z.B. Null, ermittelt das Fehlerkorrektur-Modul 122, dass der Datenblock keine Fehler aufweist. In dem Beispiel, welches in 4A veranschaulicht ist, sind die Syndrombits 404 von allen 8 Codewörtern alle Null, was der Wert ist, welcher eine fehlerfreie Datenübertragung repräsentiert. Basierend auf den Werten der Syndrombits von allen 8 Codewörtern ermittelt das Fehlerkorrektur-Modul 122t, dass der Datenblock keine beschädigten Datenbits aufweist.
-
4B veranschaulicht ein zweites Beispiel, in dem es 8 beschädigte Datenbits in dem Datenblock gibt, welche aus einem einzelnen TMDS-Übertragungsfehler resultieren. Das Fehlerkorrektur-Modul 122 detektiert die beschädigten Datenbits mittels Überprüfens der Werte der Syndrombits in jedem Codewort und Vergleichens der Werte der Syndrombits. In dem Beispiel, welches in 4B veranschaulicht ist, sind die Syndrombits 404 von allen 8 Codewörtern alle nicht-null und weisen denselben Wert auf, z.B. den Wert "xyz". In Antwort auf die Syndrombits von allen Codewörtern, die nicht-null sind aber denselben Wert aufweisen, ermittelt das Fehlerkorrektur-Modul 122, dass der Datenblock 8 beschädigte Datenbits aufweist, welche aus einem einzelnen TMDS-Übertragungsfehler resultieren. Derselbe nicht-null Wert der Syndrombits in allen 8 Codewörtern gibt an, dass das beschädigte Datenbit in jedem Codewort bei derselben Bitposition in jedem Codewort angeordnet ist. Das Fehlerkorrektur-Modul 122 korrigiert die beschädigten Datenbits in allen 8 Codewörtern, z.B. mittels Umdrehens (mit anderen Worten Flippens) der beschädigten Datenbits in jedem Datenwort.
-
4C veranschaulicht ein drittes Beispiel, in dem nicht alle der 8 Codewörter beschädigte Datenbits aufweisen. Das Fehlerkorrektur-Modul 122 detektiert die beschädigten Datenbits mittels Überprüfens der Werte der Syndrombits in jedem Codewort und Vergleichens der Werte der Syndrombits. Basierend auf der Überprüfung und dem Vergleich detektiert das Fehlerkorrektur-Modul 122 3 Codewörter, welche nicht-null Syndrombits aber denselben Wert aufweisen, und die Syndrombits der verbleibenden 5 Codewörter, welche Null-Syndrombits aufweisen, was Fehlerfreiheit angibt. Die 3 Codewörter, welche nicht-null Syndrombits aufweisen, werden bestimmt, um ein beschädigtes Bit in jedem Codewort zu haben, welches aus einem einzelnen TMDS-Übertragungsfehler resultiert. Das Fehlerkorrektur-Modul 122 korrigiert die beschädigten Datenbits in den identifizierten 3 Codewörtern.
-
4D veranschaulicht ein viertes Beispiel, in dem der Datenblock mehrere beschädigte Datenbits aufweist, welche aus mehreren Übertragungsfehlern resultieren. In dem Beispiel, welches in 4D veranschaulicht ist, weisen alle 8 Codewörter zumindest ein beschädigtes Datenbit auf, was von den nicht-null Syndrombits von allen 8 Codewörtern angegeben wird (mit anderen Worten indiziert wird). In dem Beispiel, welches in 4D veranschaulicht wird, weisen zwei Codewörter mehrere beschädigte Datenbits in jedem Codewort auf, was von einem Wert der Syndrombits indiziert wird (z.B. dem Wert "abc") verschiedenen von den Syndrombits (z.B. dem Wert "xyz") der verbleibenden Codewörter. Zum Beispiel weist das Codewort 433 zwei beschädigte Datenbits auf, wobei dessen korrespondierende Syndrombits einen Wert von "abc" anstatt von "xyz" aufweisen. Basierend auf der Überprüfung (mit anderen Worten dem Überprüfen) und dem Vergleich (mit anderen Worten dem Vergleichen), detektiert das Fehlerkorrektur-Modul 122, dass der Datenblock 436 mehrere beschädigte Datenbits aufweist, welche aus mehreren TMDS-Übertragungsfehlern resultieren, und berichtet die Detektion zum weiteren Prozessieren.
-
5 zeigt ein Ablaufdiagram, welche einen Prozess zum Generieren von Fehlercodes für Eingangsdaten in einer Videoschnittstelle-Umgebung veranschaulicht, gemäß einer Ausführungsform. Zuerst empfängt 502 die Quelle-Vorrichtung 100 Eingangsdaten, welche unkomprimierte Videodaten und deren assoziierte Metadaten aufweisen. Ein Videokompression-Modul der Senke-Vorrichtung 100 komprimiert die Videodaten gemäß einem Videokompression Standard, z.B. VESA/DSC und stellt die komprimierten Videodaten einem Fehlercode-Generator der Quelle-Vorrichtung 110 zum Generieren von Syndrombits bereit. Die mit den Videodaten assoziierten Metadaten werden ebenso dem Fehlercode-Generator bereitgestellt zur Syndrombits-Generierung (mit anderen Worten zum Generieren von Syndrombits).
-
Der Fehlercode-Generator generiert Fehlercodes, welche eine Anzahl von Syndrombits aufweisen, für die komprimierten Videodaten und deren Metadaten jeweils einen Zeitabschnitt. In einer Ausführungsform weist ein Abschnitt der komprimierten Videodaten/Metadaten mehrere Datenwörter auf, von denen jedes eine vorbestimmte Anzahl von Datenbits aufweist. Für jedes Datenwort generiert 506 der Fehlercode-Generator einen Fehlercode, welcher mehrere Syndrombits aufweist, und kombiniert das Datenwort mit dessen korrespondierenden Fehlercodes zu einem Codewort. Die Größe des Codeworts ist konfigurierbar, z.B. auf 255 Bits insgesamt. Mehrere Codewörter werden in einem orthogonalen Datenblock organisiert, was dazu beiträgt, Übertragungsfehler in den Codewörtern zu isolieren.
-
Vor der Übertragung der orthogonalen Datenblöcke zu der Senke-Vorrichtung 102 leitungscodiert 510 ein digitaler Leitungscodierer der Quelle-Vorrichtung 100 die Codewörter, z.B. unter Verwendung einer 8b/10b Leitungscodierung des TMDS-Standards. Andere Leitungscodierung-Schemata, wie etwa 16b/18b, können von dem digitalen Leitungscodierer der Quelle-Vorrichtung 100 verwendet werden. Die Quelle-Vorrichtung 100 überträgt 512 die leitungscodierten Codewörter über einen Übertragungskanal, z.B. einer HDMI-Serial-Verbindung, zu der Senke-Vorrichtung 102.
-
6 zeigt ein Ablaufdiagram, welches einen Prozess zum Detektieren und/oder Korrigieren beschädigter Datenbits in empfangenen digitalen Daten in einer Videoschnittstelle-Umgebung veranschaulicht, gemäß einer Ausführungsform. Zuerst empfängt 602 die Senke-Vorrichtung 102 digitale Daten, z.B. eine Serie (und/oder Abfolge) von Codewörtern für Videodaten und deren assoziierte Metadaten, von der Senke-Vorrichtung 100. Ein digitaler Leitungsdecodierer der Senke-Vorrichtung 102 leitungsdecodiert 604 die empfangenen Daten gemäß einem digitalen Leitungsdecodieren-Schema, welches zu dem Leitungscodieren-Schema, welches von dem digitalen Leitungscodierer der Quelle-Vorrichtung 100 verwendet wird, korrespondiert. Die Senke-Vorrichtung 102 speichert 606 die leitungsdecodierten Daten auf einem Computer-Speichermedium, z.B. einem Blockpuffer 120. In einer Ausführungsform sind oder werden die leitungsdecodierten Daten in mehreren Datenblöcke gemäß einer Datenstruktur, z.B. einer orthogonal-Organisierung-Datenstruktur, organisiert. Jeder Datenblock weist mehrere Codewörter auf, z.B. 8 Codewörter.
-
Ein Fehlerkorrektur-Modul der Senke-Vorrichtung 102 analysiert 608 die Codewörter und detektiert 610 die beschädigten Datenbits in den Codewörtern von jedem Datenblock. In einer Ausführungsform detektiert das Fehlerkorrektur-Modul beschädigte Datenbits in den Codewörtern eines Datenblocks mittels Überprüfens der Syndrombits aller Codewörter des Datenblocks, Vergleichens der Syndrombits mit einem vorbestimmten Wert, welcher Fehlerfreiheit repräsentiert, und Vergleichens der Werte der Syndrombits der Codewörter untereinander. Basierend auf dem Überprüfen und Vergleichen detektiert das Fehlerkorrektur-Modul die beschädigten Bits in dem Datenblock, wie in 4A und 4D veranschaulicht.
-
In Antwort auf die beschädigten Datenbits eines Datenblocks, welche aus einem einzelnen Übertragungsfehler resultieren, z.B. einem Fehler in einem 10-Bit TMDS-Datensymbol, korrigiert 612 das Fehlerkorrektur-Modul die beschädigten Datenbits, z.B. mittels Umdrehens dieser Bits, welche als fehlerhaft ermittelt wurden. In Antwort auf die beschädigten Datenbits eines Datenblocks, welche aus mehreren Übertragungsfehlern resultieren, berichtet 614 das Fehlerkorrektur-Modul die Detektion von beschädigten Datenbits in dem Datenblock zum weiteren Prozessieren.
-
Die vorstehende Beschreibung der Ausführungsformen wurde zum Zweck der Veranschaulichung präsentiert; diese ist nicht angedacht, vollständig zu sein oder die Ausführungsformen auf die spezifischen offengelegten Formen zu beschränken. Personen, welche in der relevanten Technik befähigt sind, können wahrnehmen, dass viele Modifikationen und Variationen im Lichte der vorstehenden Offenlegung möglich sind.
-
Einige Abschnitte dieser Beschreibung beschreiben die Ausführungsformen hinsichtlich Algorithmen und symbolischen Repräsentationen von Behandlungen der Informationen. Diese algorithmischen Beschreibungen und Repräsentationen werden allgemein von denen, die in der Datenverarbeitungstechnik befähigt sind, zum effektiven Übertragen der Substanz ihrer Arbeit zu anderen, in der Technik befähigten, verwendet. Diese Behandlungen, obwohl funktionell, rechnerbetont oder logisch beschrieben, können verstanden werden als mittels Computerprogramen oder äquivalenten elektrischen Schaltkreisen, Mikrocode oder Ähnlichem implementiert zu werden. Darüber hinaus hat es sich gelegentlich als günstig erwiesen, sich auf diese Anordnung von Behandlungen als Module, ohne Verlust der Allgemeinheit, zu beziehen. Die beschrieben Behandlungen und deren assoziierte Module können verkörpert werden in Software, Firmware, Hardware oder irgendeiner Kombination davon.
-
Irgendwelche von den Schritten, Behandlungen oder Prozessen, welche hierin beschrieben sind, können mit einem oder mehreren Hardware- oder Softwaremodulen durchgeführt oder implementiert werden, allein oder in Kombination mit anderen Vorrichtungen. In einer Ausführungsform ist ein Softwaremodul mit einem Computerprogram-Produkt implementiert, welches ein computer-lesbares Medium, welches Computerprogram-Code aufweist, welcher von einem Computerprozessor zum Durchführen irgendeines oder aller der beschrieben Schritte, Behandlungen, oder Prozesse ausgeführt werden kann, aufweist.
-
Ausführungsformen können auch eine Vorrichtung zum Durchführen der hierin beschriebenen Behandlungen betreffen. Diese Vorrichtung kann speziell konstruiert sein für den benötigten Zweck und/oder diese kann eine Allzweck-rechnende Vorrichtung aufweisen, welche selektiv mittels eines Computerprograms aktiviert oder rekonfiguriert ist, welches in dem Computer gespeichert ist. Ein solches Computerprogram kann gespeichert werden in einem nicht-flüchtigen, greifbaren computerlesbaren Speichermedium oder irgendeinem Typ von Medium, welcher geeignet zu Speichern elektronischer Instruktionen, und welcher mit einem Computersystem-Bus gekoppelt werden kann. Darüber hinaus kann irgendein Computersystem, auf welches in der Beschreibung Bezug genommen wird, einen einzelnen Prozessor aufweisen oder kann eine Architektur zum Einsatz einer Mehrfach-Prozessor-Konstruktion aufweisen, um die Rechenkapazität zu vergrößern.
-
Ausführungsformen können auch ein Produkt betreffen, welches mittels eines hierin beschriebenen Rechenprozesses produziert wird. Ein solches Produkt kann Informationen aufweisen, welche aus einem Rechenprozess resultieren, wobei die Informationen auf einem nicht-flüchtigen, greifbaren, computerlesbaren Speichermedium gespeichert sein können, und irgendeine Ausführungsform eines Computerprogram-Produkts oder einer anderen hierin beschrieben Datenkombinationen aufweisen können.
-
Schließlicht wurde die Sprache, welche in der Beschreibung verwendet wurde, hauptsächlich zur Lesbarkeit und zum Lehrzweck ausgewählt, und diese kann nicht zum Umreißen oder Umschreiben des erfinderischen Gegenstands ausgewählt sein. Es ist daher angedacht, dass der Umfang der Ausführungsformen nicht von dieser detaillierten Beschreibung begrenzt ist, sondern vielmehr von den Ansprüchen, welche der hierauf basierenden Anmeldung beiliegen. Dementsprechend ist die Offenlegung der Ausführungsformen angedacht, veranschaulichend aber nicht beschränkend zu sein.