-
Elektronische
Daten, einschließlich
Text, Graphiken, Sprache, Multimedia und andere Zeichenketten, können durch
Binärcodes
dargestellt werden, die derartige Informationen komprimieren. Eine
derartige Komprimierung reduziert die zum Speichern und/oder Senden
der Daten erforderliche Anzahl von Bits. Binärcodes unterschiedlicher oder
variabler Länge
können
verwendet werden, um unterschiedliche Zeichen in einem Datenbitstrom
darzustellen. Gemäß einigen
Techniken zur Komprimierung von Binärcodes werden häufiger auftretende
Zeichen innerhalb eines Bitstroms durch kürzere Codes dargestellt, und
weniger häufig
auftretende Codes werden durch Verwendung längerer Codes dargestellt. Ein
derartiges Schema kann als Variable Längencodierung (VLC) bezeichnet
werden.
-
Eine
Art eines VLC-Schemas kann Huffman-Codes umfassen. Huffman-Codes
können
zum Beispiel verwendet werden bei digitaler Videokomprimierung und
Informationsabruf für
Videocodierungsstandards, wie beispielsweise MicrosoftTM Windows
Media, MPEG-2, MPEG-4, H.263, H.264 und anderen derartigen Standards,
die VLC einsetzen.
-
Huffman-Codes
setzen Codewörter
variabler Länge
ein. Somit kann bei einigen Huffman-Decodierungsimplementierungen ein Bitstromsegment
des ankommenden Bitstroms nach einem „Nibble-für-Nibble"-Ansatz mit dem Inhalt einer Verweistabelle
(LUT) abgeglichen werden. Zum Beispiel kann ein Decoder ein erstes
Nibble mit fester Größe betrachten
und versuchen, dieses mit ersten Tabelleneinträgen in einer Huffman-Decodiertabelle
abzugleichen. Wird keine Übereinstimmung
gefunden, kann der Decoder ein zweites Nibble mit fester Größe betrachten
und versuchen, dieses mit zweiten Tabelleneinträgen abzugleichen und so weiter.
Ein derartiger Ansatz kann konzeptionell als eine Hash-Funktion
ausgelegt sein.
-
Bei
längeren
Huffman-Codewörtern
(zum Beispiel 23-Bit-Codewörter)
können
derartige Nibble-Schemata bis zu 6 Schritte und/oder Takte benötigen, um
die längsten
Huffman-Codewörter abzugleichen.
Längere Codewörter können in
einem derartigen Nibble-Schema den Decodierdurchsatz begrenzen.
-
Um
derartige Durchsatzbegrenzungen zu reduzieren, können Tabellen mit Huffman-Codewörtern in Kompakttabellen
neu abgebildet werden. Derartige Kompakttabellen können Decodieren
durch die Detektion von Lauflängen
eines bestimmten Binärwertes
(zum Beispiel 0 oder 1) vorsehen. Die Lauflängendetektion kann schneller
durchgeführt
werden als Nibble-für-Nibble-Ansätze. Eine
derartige Detektion kann mit dedizierter Hardware-Logik, Software
(zum Beispiel einem Detektor für
führende
Nullen (LZD)) oder Kombinationen derselben implementiert werden.
Darüber
hinaus können
längere
Läufe von
Binärwerten
eine schnelle Detektion durch dedizierte Hardware-Logik oder einen
Software-Detektor (zum Beispiel einem Detektor für führende Nullen (LZD)) oder eine
Kombination derselben erleichtern.
-
Die
Generierung von Kompakttabellen kann manuell durchgeführt werden.
Derartige Techniken sind jedoch arbeitsaufwändig und anfällig für das Entstehen
von Tabellenfehlern.
-
KURZBESCHREIBUNG DER ZEICHNUNGEN
-
1 veranschaulicht
eine Ausführungsform
einer Vorrichtung, die verwendet werden kann, um Kompakttabellen
zu generieren.
-
2 veranschaulicht
eine Ausführungsform
einer Komponente.
-
3 veranschaulicht
eine Ausführungsform
eines logischen Diagramms.
-
4A und 4B veranschaulichen
Ausführungsformen
logischer Diagramme.
-
5 ist
ein Diagramm einer beispielhaften Kompakttabellenanordnung.
-
6A bis 6C veranschaulichen
verschiedene Ausführungsformen.
-
7 ist
eine beispielhafte Ausführungsform
eines logischen Flusses.
-
8 ist
ein Diagramm einer Systemausführungsform.
-
AUSFÜHRLICHE BESCHREIBUNG
-
Verschiedene
Ausführungsformen
können
im Allgemeinen auf die Generierung und Verwendung von Codes gerichtet
sein. In einer Ausführungsform
schließt
zum Beispiel eine Vorrichtung ein Kompakttabellen-Generatormodul
und ein Speichermedium ein. Der Kompakttabellengenerator erzeugt
eine Kompaktcodetabelle, die mehrere in einer oder mehr Hierarchien
angeordnete Codewortgruppen aufweist. Jede dieser Codewortgruppen
schließt
eine Gruppenmaske ein, die einem oder mehr Codewörtern in einer Tabelle mit
Codes variabler Länge
entspricht. Das Speichermedium speichert Informationen zu den Codewortgruppen,
wie beispielsweise eine Gruppenmaske für jede der Codewortgruppen
und einen Code-Index für
jedes Codewort in der Tabelle mit Codes variabler Länge. Eine
derartige Erzeugung und Speicherung von Kompaktcodetabellen kann
automatisch durchgeführt
werden.
-
Auf
diese Weise kann ein schnelles und effizientes Decodieren erreicht
werden. Außerdem
kann eine effizientere Speicherung von Codetabellen realisiert werden.
Es können
auch andere Ausführungsformen
beschrieben und beansprucht sein.
-
Verschiedene
Ausführungsformen
können
ein oder mehr Elemente umfassen. Ein Element kann jede beliebige
Struktur umfassen, die angeordnet ist, um bestimmte Vorgänge durchzuführen. Jedes
Element kann als Hardware, Software oder Kombinationen derselben
implementiert sein, wie für
einen gegebenen Satz von Auslegungsparametern oder Leistungseinschränkungen
gewünscht.
Obwohl eine Ausführungsform
mit einer begrenzten Anzahl von Elementen in einer bestimmten Topologie
beispielhaft beschrieben sein kann, kann die Ausführungsform
größere oder
weniger Elemente in alternativen Topologien einschließen, wie
für eine
gegebene Implementierung gewünscht.
Es sei darauf hingewiesen, dass jede Bezugnahme auf „eine Ausführungsform" bedeutet, dass ein
bestimmtes Merkmal, eine bestimmte Struktur oder ein bestimmtes
Kennzeichen, das/die in Verbindung mit der Ausführungsform beschrieben ist,
in zumindest einer Ausführungsform
eingeschlossen ist. Das Auftreten der Formulierung „in einer
Ausführungsform" an verschiedenen
Stellen in der Patentschrift bezieht sich nicht notwendigerweise
auf dieselbe Ausführungsform.
-
1 ist
ein Blockdiagramm einer Vorrichtung 100, die verwendet
werden kann, um Kompakttabellen aus Huffman-Tabellen zu generieren.
Wie in 1 gezeigt, kann Vorrichtung 100 verschiedene
Elemente einschließen.
Zum Beispiel kann Vorrichtung 100 ein Kompakttabellen-Generatormodul 102 und
ein Speichermedium 104 einschließen. Diese Elemente können in
Hardware, Software, Firmware oder einer Kombination derselben implementiert
sein.
-
Vorrichtung 100 kann
Huffman-Codetabellen eins zu eins abbilden, sodass jede Huffman-Codetabelle mit ihren
vielen sich ändernden
Einsen und Nullen in einem langen Zweig geglättet wird zu nur Nullen oder
nur Einsen. Ein derartiges Glätten
erlaubt schnelles Decodieren, zum Beispiel durch Lauflängendecoderhardware.
-
Wie
in 1 gezeigt, empfängt Kompakttabellen-Generatormodul 102 eine
Huffman-Codetabelle 120 und
generiert eine entsprechende Kompakttabelle 122, die an
Speichermedium 104 gesendet werden kann. Kompakttabelle 122 kann
in verschiedenen Vorgängen
verwendet werden, wie beispielsweise Codieren und Decodieren von
Informationssequenzen.
-
Vorgänge für Ausführungsformen
können
weiterhin unter Bezugnahme auf die folgenden Figuren und beigefügten Beispiele
beschrieben sein. Einige der Figuren können einen logischen Fluss
einschließen.
Obwohl derartige hier dargestellte Figuren einen bestimmten logischen
Fluss einschließen
können,
ist ersichtlich, dass der logische Fluss nur ein Beispiel dafür bietet,
wie die allgemeine hier beschriebene Funktionalität implementiert
werden kann. Weiterhin muss der gegebene logische Fluss, sofern
nicht anderweitig angegeben, nicht notwendigerweise in der dargestellten
Reihenfolge ausgeführt
werden. Zusätzlich
kann der gegebene logische Fluss durch ein Hardware-Element, ein
von einem Prozessor ausgeführtes
Software-Element oder eine Kombination derselben implementiert sein.
Die Ausführungsformen
sind in diesem Zusammenhang nicht beschränkt.
-
2 ist
ein Diagramm eines logischen Flusses 200, den Ausführungsformen
wie beispielsweise Vorrichtung 100 bei der Generierung
von Kompakttabellen aus Tabellen mit Codes variabler Länge ausführen können.
-
Wie
in 2 gezeigt, empfangt ein Block 202 eine
Tabelle mit Codes variabler Länge,
wie beispielsweise eine Huffman-Tabelle. Aus dieser empfangenen
Codetabelle werden durch einen Block 204 eine oder mehr
Codewortgruppen generiert. Diese Gruppen sind in einer oder mehr
Hierarchien angeordnet. Zum Beispiel kann eine Hierarchie als eine
Baumstruktur angeordnet sein, umfassend eine übergeordnete Gruppe und eine
oder mehr Untergruppen. In derartigen Anordnungen können die übergeordnete
Gruppe und die Untergruppen jeweils eine oder mehr Untergruppen
aufweisen.
-
Bei
der Generierung jeder Codewortgruppe kann Block 204 weiterhin
entsprechende Informationen generieren. Zum Beispiel kann Block 204 für jede Codewortgruppe
eine Gruppenmaske generieren. Gruppenmasken können eingesetzt werden bei
der Ermittlung, ob weitere Codewort-Untergruppen zu generieren sind.
-
Zusätzlich zum
Einsatz bei der Generierung von Kompakttabellen können Gruppenmasken
weiterhin bei Decodierungsvorgängen
eingesetzt werden.
-
Ein
Block 206 speichert Informationen zu der Codewortgruppe.
Diese Informationen können
die Gruppenmaske für
jede Gruppe sowie die jeder Gruppe entsprechenden Code-Indizes einschließen. Die
Ausführungsformen
sind jedoch nicht auf diese Beispiele beschränkt.
-
3 ist
ein Blockdiagramm, das eine beispielhafte Implementierung 300 von
Codegeneratormodul 102 zeigt. Wie in 3 gezeigt,
kann Implementierung 300 verschiedene Elemente einschließen. Zum
Beispiel zeigt 3, dass Implementierung 300 ein
Speichermedium 302, ein Identifikationsmodul für übergeordnete
Gruppen 304, ein Gruppenanalysemodul 306 und ein
Tabellenschreibmodul 308 einschließen kann. Diese Elemente können in
Hardware, Software, Firmware oder einer Kombination derselben implementiert
sein.
-
Speichermedium 302 speichert
verschiedene bei der Generierung von Kompakttabellen verwendete Informationen.
Zum Beispiel kann Speichermedium 302 eine oder mehr Huffman-Codetabellen 320 speichern. Zusätzlich kann
Speichermedium 302 eine oder mehr entsprechende Kompakttabellen 330 speichern.
Speichermedium 302 kann auch verschiedene Formen von Informationen
während
der Kompakttabellengenerierung speichern. Zum Beispiel zeigt 3 Speichermedium,
das eine Gruppenmaske 322, eine Treffermaskenliste 324,
eine Indexliste 326 und eine Untergruppenliste 328 speichert.
-
Identifikationsmodul
für übergeordnete
Gruppen 304 identifiziert übergeordnete Anfangsgruppen
von Codewörtern
innerhalb einer Huffman-Codetabelle 320.
-
Gruppenanalysemodul 306 analysiert
eine oder mehr Codewortgruppen. Diese Analyse kann weitere Untergruppen
identifizieren, die bestimmten Gruppen entsprechen. Zusätzlich kann
diese Analyse die Generierung von Informationen umfassen. Derartige
Informationen können
Masken, Treffermaskenlisten und/oder Listen mit Indizes einschließen.
-
Kompakttabellenschreibmodul 308 formatiert
Tabelleneinträge
und gibt diese aus, und zwar gemäß einer
von Gruppenanalysemodul durchgeführten
Verarbeitung.
-
4A ist
ein Diagramm eines logischen Flusses, den Ausführungsformen wie beispielsweise
Vorrichtung 100 und/oder Implementierung 300 bei
der Generierung von Kompakttabellen aus Tabellen mit Codes variabler
Länge ausführen können.
-
Wie
in
4A gezeigt, empfangt ein Block
402 eine
Huffman-Codetabelle, die mehrere Codewörter mit variablen Längen einschließt. Die
Codewörter
in der Huffman-Codetabelle werden durch einen Block
403 sortiert.
Zum Durchführen
dieses Sortierens kann ein Gewichtsschema eingesetzt werden, da
die Codewörter verschiedene
Längen
aufweisen. Ein beispielhaftes Gewichtsschema weist einem Minimalgewicht
Leerstellen zu, einem Zwischengewicht den Bitwert „1" und einem Maximalgewicht
den Bitwert „0". Unten stehende
Tabellen 1-1 und 1-2 bieten ein Beispiel für eine derartige Sortierung.
Insbesondere zeigt Tabelle 1-1 unsortierte Huffman-Codewörter, und
Tabelle 1-2 zeigt diese Codewörter
sortiert.
Wert | Codewort |
1 | 0110 |
2 | 1011 |
3 | 101 |
4 | 001 |
5 | 01 |
Tabelle
1-1: Unsortierte Werte und Codewörter
Wert | Codewort |
5 | 01 |
3 | 101 |
4 | 001 |
2 | 1011 |
1 | 0110 |
Tabelle
1-2: Sortierte Werte und Codewörter
-
4A zeigt,
dass bei einem Block 404 eine Anfangsgruppe von Codewörtern zum
Verarbeiten ausgewählt
werden kann. Diese ausgewählte
Gruppe (hier als die aktuelle Gruppe bezeichnet) kann zum Beispiel eine
gesamte Tabelle mit Codewörtern
umfassen. Alternativ kann diese Anfangsgruppe einen Abschnitt der gesamten
Tabelle umfassen. Derartige Abschnitte können zum Beispiel mehrere Codewörter mit
dem gleichen Präfix
oder Anfangssatz von einem oder mehr Bits einschließen (zum
Beispiel den gleichen 4-Bit-Präfix).
-
Diesem
Anfang wird ein Anfangsserienindex (zum Beispiel ein Index Null)
zugewiesen. Somit kann diese Anfangsgruppe hier als „Gruppe
0" bezeichnet werden.
-
Bei
einem Block 406 wird die Gruppe Bit für Bit verarbeitet, um (gegebenenfalls)
eine oder mehr Untergruppen zu extrahieren. Derartigen extrahierten
Untergruppen werden Serienindizes in der Reihenfolge verliehen,
in der sie extrahiert werden. Weitere Einzelheiten zu einer beispielhaften
Verarbeitung einer Gruppe sind unten unter Bezugnahme auf 4B beschrieben.
-
Der
Fluss schließt
weiterhin einen Block 408 ein, der ermittelt, ob weitere
Gruppen (Untergruppen) zu verarbeiten sind. Ist dies der Fall, wählt ein
Block 410 eine nächste
Untergruppe zum Verarbeiten aus. Andernfalls fährt der Fluss mit einem Block 412 fort.
-
Bei
einem Block 410 kann die nächste Untergruppe gemäß einem
nächsten
ansteigenden Serienindex ausgewählt
werden. Wenn zuletzt bei Block 406 Gruppe 0 verarbeitet
wurde, dann würde
Block 410 somit Untergruppe 1 auswählen.
-
Nach
dieser Auswahl kehrt der Vorgang zum Verarbeiten der ausgewählten Untergruppe
zu Block 406 zurück.
Somit kann diese Verarbeitung weitere Untergruppen extrahieren,
denen ebenfalls in der Reihenfolge, in der sie extrahiert werden,
Serienindizes zugewiesen werden. Dementsprechend ist dieser durch
Block 408 bereitgestellte Fluss iterativ und wird fortgesetzt,
bis keine weiteren Untergruppen zum Verarbeiten vorhanden sind.
Wenn keine weiteren Untergruppen zum Verarbeiten vorhanden sind,
zeigt 4A, dass ein Block 412 eine
Kompakttabelle auf der Grundlage der bei Block 406 und 410 durchgeführten Verarbeitungen
generiert.
-
Wie
durch Block 406 angegeben, kann somit jede bestimmte Gruppe
von Codewörtern
sequenziell verarbeitet werden. Ein Beispiel für eine derartige Verarbeitung
wird nun unter Bezugnahme auf einen logischen Fluss 400 von 4B beschrieben.
Dieser Fluss kann durch Ausführungsformen,
wie beispielsweise Vorrichtung 100 und/oder Implementierung 300,
ausgeführt
werden.
-
4B zeigt,
dass bei einem Block 452 eine Maske für eine aktuelle Gruppe generiert
wird. Unter Bezugnahme auf 4A ist
die aktuelle Gruppe die zuletzt entweder von Block 404 oder
von Block 410 gewählte Gruppe.
Die Generierung dieser Maske kann das Identifizieren eines längsten Codewortes
in der aktuellen Gruppe und das Ausfüllen seiner rechten Seite (oder
seiner am wenigsten signifikanten Seite) mit einer „1" umfassen. Mitunter
kann eine aktuelle Gruppe mehr als ein längstes Codewort aufweisen.
Wenn dies eintritt, kann ein bestimmtes Codewort (zum Beispiel das
letzte Codewort in der sortierten Untergruppe) ausgewählt werden.
Wie in 4B gezeigt, wird die generierte
Maske bei einem Block 454 gespeichert.
-
Bei
einem Block 458 wird ein Satz maskierter Einträge generiert.
Die Generierung dieses Satzes kann das Vornehmen einer EXKLUSIV-ODER
(XOR)-Verknüpfung
mit jedem Tabelleneintrag in der aktuellen Gruppe und der bei Block 452 generierten
Maske umfassen. Für
diese XOR-Verknüpfungen
werden die am weitesten links befindlichen Bits der Tabelleneinträge an dem
am weitesten links befindlichen Bit der Maske ausgerichtet.
-
Wie
unten beschrieben, werden diese maskierten Einträge verarbeitet, um eine Treffermaskenliste (oder „Treffer
Masken Liste") für die aktuelle
Gruppe zu generieren. Die Treffermaskenliste ist eine Binärzahl, die
Bit für
Bit von rechts nach links geschrieben wird. Diese Liste identifiziert
die Stelle von nicht eindeutigen 1en. Daher kann die Treffermaskenliste
während
Kompakttabellengenerierungs- und/oder Decodierungsvorgängen eingesetzt
werden, um zu ermitteln, ob eine Lauflänge eines gegebenen Zeichens
(zum Beispiel Null oder mehr „0en") einen Wert in einer
aktuellen Gruppe identifiziert oder ob das Decodieren in einer Untergruppe
fortgeführt
werden muss.
-
Bei
einem Block 460 wird die am weitesten links befindliche
Bitposition als eine aktuelle Bitposition ausgewählt. Nach dieser Auswahl überprüft ein Block 462 jeden
der maskierten Einträge
an der aktuellen Bitposition. Wenn die überprüften Bits an einer bestimmten
Bitstelle des maskierten Ergebnisses eine „Eindeutige 1" ergeben, dann wird
diese Stelle als ein „TREFFER" betrachtet. Andernfalls
wird diese Stelle als ein „FEHLTREFFER" betrachtet. Eine
Eindeutige 1 tritt auf, wenn ein maskierter Eintrag eine „1" an der bestimmten
Bitstelle aufweist und keine weiteren Einträge der gleichen Größe oder
größer an dieser
Stelle eine „1" aufweisen.
-
Somit
fährt der
Vorgang, wie durch einen Block 464 angegeben, mit einem
Block 466 fort, wenn ein TREFFER erfolgt. Andernfalls fährt der
Vorgang mit einem Block 468 fort, wenn ein FEHLTREFFER
erfolgt.
-
Bei
Block 466 wird in die Treffer_Masken_Liste der Kompakttabelle
eine „0" eingefügt (die
einen Treffer anzeigt). Außerdem
wird der Index (zum Beispiel Tabelleneintragsnummer) des maskierten
Eintrags, der die Eindeutige 1 aufweist, in eine temporäre Index_Liste
eingefügt.
-
Im
Gegensatz dazu wird bei Block 468 in die Treffer_Maken_Liste
der Kompakttabelle eine „1" eingefügt (die
einen Fehltreffer anzeigt).
-
4B zeigt,
dass auf Block 468 ein Block 472 folgt. Bei diesem
Block wird ermittelt, ob die maskierten Einträge nicht eindeutige 1en an
der aktuellen Bitposition aufweisen. Ist dies der Fall, dann werden
diese Einträge
in eine neue Untergruppe eingefügt,
wie durch einen Block 474 angegeben. Dementsprechend kann Block 474 eine
derartige neue Untergruppe erzeugen.
-
Wie
in 4B gezeigt, wird bei einem Block 478 ermittelt,
ob die aktuelle Bitposition die letzte „1" der Maske erreicht hat (was bedeutet,
dass alle Einträge
der ausgewählten
Gruppe erschöpft
sind). Ist dies der Fall, dann wird die aktuelle Bitposition an
einem Block 479 um eine Position nach rechts bewegt. Im
Anschluss daran kehrt der Vorgang zu Block 462 zurück.
-
Wenn
jedoch die aktuelle Bitposition die letzte „1" der Maske erreicht hat, fährt der
Vorgang mit einem Block 480 fort. Bei diesem Block 480 werden
die Informationen an der (den) nächsten
verfügbaren
Stelle(en) in die Kompakttabelle geschrieben. Derartige Informationen
können
die Treffermaskenliste und die temporäre Indexliste für diese
Untergruppe einschließen.
-
Nunmehr
erneut Bezug nehmend auf 4A kann
nach diesem Fluss (bei Block 408) ermittelt werden, ob
(gegebenenfalls) neue Untergruppen noch nicht berücksichtigt
wurden. Wie oben beschrieben, können
derartige neue Untergruppen bei Block 474 von 4B erzeugt
werden. Wenn derartige Untergruppen aktuell existieren, dann kann
Block 410 von 4A eine dieser Untergruppen
als die aktuelle Gruppe auswählen.
Somit kann der Fluss von 4B erneut
stattfinden.
-
Wie
oben beschrieben, umfasst der Fluss von
4B das
Verarbeiten von Gruppen sowie die Identifizierung von Untergruppen.
Ein Beispiel für
ein derartiges Verarbeiten und eine derartige Identifizierung ist
im Anschluss angegeben. Dieses Beispiel umfasst eine beispielhafte
Gruppe 0, die Tabelle 2-1 unten stehend in unsortierter Reihenfolge
auflistet.
Index | Codewort |
0: | 01 |
1: | 101 |
2: | 000 |
3: | 11 |
4: | 0010 |
5: | 100 |
6: | 0011 |
Tabelle
2-1: Unsortierte Gruppe 0
-
Diese
Gruppe wird, wie unten stehend in Tabelle 2-2 angegeben, sortiert.
Außerdem
wird für
Gruppe 0 eine Gruppenmaske von 00100 generiert. Wie oben stehend
beschrieben, wird diese Maske aus dem Codewort am Ende der sortierten
Gruppe generiert (0010).
-
Wie
oben beschrieben, wird für
jedes Codewort Gruppe 0 ein Maskierungsvorgang durchgeführt. Die dritte
Spalte von Tabelle 2-2 gibt weiterhin die Ergebnisse dieser Maskierungsvorgänge an.
Index | Codewort | Maskiertes
Codewort |
3: | 11 | 11 |
1: | 101 | 100 |
5: | 100 | 101 |
0: | 01 | 01 |
2: | 000 | 001 |
6: | 0011 | 0001 |
4: | 0010 | 0000 |
Tabelle
2-2: Sortierte Gruppe 0
-
Nach
Durchführung
dieses Maskierungsvorgangs kann jede Bitposition der maskierten
Codewörter analysiert
werden, um Codewörter
zum Einfügen
in Untergruppen zu identifizieren sowie um Codewörter zum Zurückbehalten
in der aktuellen Gruppe zu identifizieren. Die folgende Beschreibung
gibt eine beispielhafte Analyse für jede Bitposition an.
-
Bezüglich der
am weitesten links befindlichen Bitposition gibt die dritte Spalte
von Tabelle 2-2
an, dass die maskierten Codewörter
für Indizes
1, 3 und 5 Fehltreffer sind, da sie jeweils eine 1 an dieser Position
aufweisen. Diese mehreren 1en bedeuten das Auftreten von nicht eindeutigen
1en an dieser Position. Daher wird für Indizes 1, 3 und 5 eine neue
Untergruppe (bezeichnet als Gruppe 1) erzeugt. Da an dieser Position
ein Fehltreffer auftritt, wird außerdem dem am weitesten rechts
befindlichen Bit der Treffermaskenliste eine 1 zugewiesen. Somit
ergeben sich nach Verarbeitung der am weitesten links befindlichen
Bitposition folgende aktuelle Gruppierungen und Treffermaskenliste.
Gruppe
0: | Indizes
0, 2, 4, 6 |
Gruppe
1: | Indizes
1, 3, 5 |
Treffer_Masken_Liste: | 1 |
-
An
der zweiten Bitposition von links tritt eine eindeutige 1 auf. Insbesondere
weist nur das maskierte Codewort für Index 0 an dieser Position
eine 1 auf. Dementsprechend werden keine neuen Untergruppen erzeugt,
und der entsprechenden Treffermaskenlistenposition wird eine 0 zugewiesen.
Die Ergebnisse nach Verarbeitung dieser Bitposition sind wie folgt
zusammengefasst.
Gruppe
0: | Indizes
0, 2, 4, 6 |
Gruppe
1: | Indizes
1, 3, 5 |
Treffer_Masken_Liste: | 01 |
-
Eine
eindeutige 1 tritt außerdem
an der dritten Bitposition von links auf. Speziell weist nur das
maskierte Codewort für
Index 2 an dieser Position eine 1 auf. Dementsprechend führt die
Verarbeitung dieser Position zu den folgenden Ergebnissen.
Gruppe
0: | Indizes
0, 2, 4, 6 |
Gruppe
1: | Indizes
1, 3, 5 |
Treffer_Masken_Liste: | 001 |
-
An
der vierten Bitposition von links tritt eine eindeutige 1 auf, da
nur das maskierte Codewort für
Index 5 eine 1 aufweist. Somit existieren nach Verarbeitung dieser
Bitposition die folgenden Gruppierungen und die folgende Treffermaskenliste.
Gruppe
0: | Indizes
0, 2, 4, 6 |
Gruppe
1: | Indizes
1, 3, 5 |
Treffer_Masken_Liste: | 0001 |
-
Wenn
das letzte (am weitesten rechts befindliche) Maskenbit erreicht
ist, weisen keine maskierten Codewörter Bits an dieser Position
auf. Der Treffermaskenliste wird für diese Stelle eine 0 zugewiesen,
und die aktuellen Gruppierungen ändern
sich nicht. Somit existieren bei Vollendung von Gruppe 0 die folgenden
Ergebnisse.
Gruppe
0: | Indizes
0, 2, 4, 6 |
Gruppe
1: | Indizes
1, 3, 5 |
Treffer_Masken_Liste: | 00001 |
-
An
diesem Punkt kann die Verarbeitung von Gruppe 1 erfolgen. Diese
Gruppe ist in unsortierter Reihenfolge in Tabelle 2-3 aufgelistet.
Index | Codewort |
1: | 101 |
3: | 11 |
5: | 100 |
Tabelle
2-3: Unsortierte Gruppe 1
-
Gruppe
1 wird in der in Tabelle 2-4 gezeigten Reihenfolge sortiert. Aus
dieser Sortierung wird für
Gruppe 1 eine Gruppenmaske von 1001 generiert. Wie oben beschrieben,
beruht diese Maske auf dem Codewort am Ende der sortierten Gruppe
(100). Wie bei Gruppe 0 wird für
jede Codewortgruppe 1 ein Maskierungsvorgang durchgeführt. Die
dritte Spalte von Tabelle 2-4 gibt die Ergebnisse dieser Maskierungsvorgänge an.
Index | Codewort | Maskiertes
Codewort |
3: | 11 | 01 |
1: | 101 | 001 |
5: | 100 | 000 |
Tabelle
2-4: Sortierte Gruppe 1
-
Nach
Beendigung des Maskierungsvorgangs kann jede Bitposition der maskierten
Codewörter
analysiert werden. Zum Beispiel gibt die dritte Spalte von Tabelle
2-2 an, dass sämtliche
maskierten Codewörter Fehltreffer
an der am weitesten links befindlichen Bitposition sind, da die
maskierten Codewörter
von Indizes 1, 3 und 5 an dieser Position jeweils ein Nullbit aufweisen.
Außerdem
werden an dieser Stelle keine neuen Untergruppen erzeugt, da an
dieser Position keine nicht Eindeutigen 1en vorhanden sind. Dementsprechend ist
die Treffermaskenliste für
Gruppe 1 aktuell wie unten gezeigt gesetzt.
-
Treffer_Masken_Liste: 1
-
An
der zweiten Bitposition von links zeigt Tabelle 2-4, dass ein Treffer
erfolgt. Dies ist darauf zurückzuführen, dass
an dieser Position für
das Index 3 entsprechende maskierte Codewort eine Eindeutige 1 existiert.
Somit wird die Treffermaskenliste für Gruppe 1 auf folgende Weise
aktualisiert.
-
Treffer_Masken_Liste: 01
-
Ein
Treffer erfolgt außerdem
an der dritten Bitposition von links, da an dieser Position für das Index
1 entsprechende Codewort eine Eindeutige 1 existiert.
-
Treffer_Masken_Liste: 001
-
Wenn
das letzte (am weitesten rechts befindliche) Maskenbit erreicht
ist, weisen an dieser Position keine maskierten Codewörter Bits
auf. Somit wird der Treffermaskenliste, wie oben beschrieben, für diese
Stelle eine 0 zugewiesen, und die aktuellen Gruppierungen ändern sich
nicht. Nach Beendigung von Gruppe 1 werden somit keine neuen Teilgruppen
erzeugt, und Gruppe 1 weist die folgende Treffermaskenliste auf.
-
Treffer_Masken_Liste: 0001
-
Somit
hat das oben stehende Beispiel die folgende Treffermaskenliste aus
den in Tabelle 2-1 aufgelisteten Codewörtern generiert.
-
Gruppe 0: 00001
-
Gruppe 1: 0001
-
Dementsprechend
kann, nachdem alle Gruppen (Gruppe 0 und Gruppe 1) identifiziert
und verarbeitet wurden, eine Kompakttabelle generiert werden.
-
In
Ausführungsformen
wird eine vorbestimmte Anzahl von Anfangsbits sämtlicher Huffman-Codewörter in
einer Huffman-Codetabelle als übergeordnete
Zweige für
Anfangsgruppen verwendet. Eine beispielhafte Anzahl von Anfangsbits
ist vier (also das erste Nibble der Huffman-Codewörter). Wenn
das 4-Bit-Anfangsnibble eingesetzt wird, existieren somit sechzehn
(also 24) übergeordnete Gruppen. Jede
dieser Gruppen wird verarbeitet, zum Beispiel wie oben unter Bezugnahme
auf 2 und 4 beschrieben.
Wie oben angegeben, kann eine derartige Verarbeitung weitere Untergruppen
aufzeigen.
-
Ausführungsformen
können
weiterhin Schutz gegen unzulässige
Codes bereitstellen. Huffman-Codetabellen, die zum Codieren und
Decodieren von Standardbitströmen
verwendet werden, sind mitunter unvollständig („unzulässig"). Zum Beispiel können einige Codewörter in
derartigen Tabellen fehlen, da diese nicht für Codierungszwecke benötigt werden.
Ein derartiges ungenutzte Codewort beziehungsweise Löcher in
Codetabellen können
zu Bitstromfehlern beim Decodieren führen.
-
Bei
der Generierung von Kompakttabellen kann Set-Partitionierung verwendet
werden, um die Löcher ungenutzter
Codewörter
zu detektieren und zu fixieren. Eine derartige Fixierung kann bei
konventionellen Huffman-Decodern auch durchgeführt werden, indem die Huffman-Codetabellen mit
ungenutzten Codewörtern aufgefüllt werden.
-
5 ist
ein Diagramm, das eine Anordnung einer Kompakttabelle 500 für eine Huffman-Codetabelle darstellt.
Wie in 5 gezeigt, kann ein erster Tabelleneintrag 502 eine
Maske für
jeden der übergeordneten Zweige
eines „Baums" enthalten. Wie oben
beschrieben, können
diese übergeordneten
Zweige oder Gruppen ermittelt werden durch Verwendung einer bestimmten
Anzahl von Anfangsbits aller Huffman-Codewörter in der Huffman-Codetabelle.
In Ausführungsformen
kann diese vorbestimmte Anzahl von Anfangsbits das erste 4-Bit-Nibble sämtlicher
Huffman-Codewörter
in der Huffman-Codetabelle sein. Somit umfasst in derartigen Ausführungsformen
erster Tabelleneintrag 502 sechzehn (also 24)
Masken für
sechzehn übergeordnete
Gruppen.
-
Ein
nächster
Tabelleneintrag 504 schließt Längen für jede/s der übergeordneten
Codewörter/Masken ein.
Außerdem
kann Tabelleneintrag 504 einen Maskentyp für jede/s
dieser Codewörter/Masken
einschließen.
-
5 zeigt
Kompakttabelle 500, die mehrere aufeinanderfolgende Tabelleneinträge 506 aufweist.
Diese Einträge
können
unterschiedliche Kombinationen von Masken, Treffermaskenlisten,
Sprungadressen und originalen Codetabellenindizes enthalten.
-
Während Decodierungsvorgängen werden
logische Verknüpfungen
(zum Beispiel XOR-Verknüpfungen)
zwischen (codierten) Eingangswerten und Masken vorgenommen, die
in Einträgen 506 gespeichert
sind. Das Ergebnis dieser Verknüpfungen
kann ein Offset zu anderen Einträgen 506 bereitstellen.
Diese anderen Einträge
wiederum können
einen Code-Index,
eine Sprungadresse und/oder eine weitere Maske enthalten.
-
Auf
der Grundlage des Inhalts derartiger anderer Einträge kann
die Durchquerung der Kompakttabelle fortgesetzt werden (zum Beispiel
durch logische Operationen mit Masken, Zugriff auf resultierende
Offsets und/oder Springen zu anderen Adressen). Die Durchquerung
kann bei dem Eintreffen von Code-Index in einem Eintrag 506 abgeschlossen
werden. An dieser Stelle kann eine neue Durchquerung auf der Grundlage weiterer
(codierter) Eingangsdaten beginnen.
-
Somit
bilden die Einträge
von Kompakttabelle 500 zusammen mehrschichtige und mehrfach
verknüpfte
Datenstrukturen mit einer sehr genauen Ordnung untereinander. Zum
Beispiel können
diese Datenstrukturen den rekursiven Baum-Zweig-Blatt-Strukturen
von Huffman-Codetabellen
oder Fraktalstrukturen folgen.
-
In
Ausführungsformen
können
superkompakte Tabellen erzeugt werden, die mehreren Codetabellen entsprechen.
Die Ausführungsformen
sind jedoch nicht auf diesen Zusammenhang beschränkt.
-
6A und 6B sind
Diagramme von Decodierungsimplementierungen. Insbesondere zeigt 6A eine
konventionelle Huffman-Decodierungsimplementierung 600.
Im Gegensatz dazu zeigt 6B eine
Huffman-Decodierungsimplementierung 650, die Kompakttabellen
einsetzt.
-
Wie
in 6A gezeigt, schließt Implementierung 600 eine
Huffman-Codetabelle 602 und einen Huffman-Decoder 604 ein.
Bei Empfang eines codierten Eingangsbitstroms 620 decodiert
Huffman-Decoder 604 den Bitstrom und gibt eine decodierte
Syntax 622 aus.
-
6B zeigt,
dass Implementierung 650 auch decodierte Syntax 622 aus
Eingangsbitstrom 620 generiert. Anstelle eines konventionellen
Huffman-Decoders setzt Implementierung 650 jedoch einen
schnellen Kompaktentropiedecoder 608 ein, um Bitstrom 620 effizient
zu decodieren. Insbesondere führt
Decoder 608 diese effiziente Decodierung durch unter Verwendung
einer Kompakttabelle 624, die von einem Kompakttabellengenerator 606 generiert
wird. Kompakttabelle 624 kann gemäß den hier beschriebenen Techniken
generiert werden. Somit kann Kompakttabellengenerator 606 zum
Beispiel die Anordnungen von 1 und/oder 3 einschließen.
-
Wie
in 6B gezeigt, schließt Decoder 608 Steuerlogik 610 und
Tabellenspeichereinheit 612 ein. Steuerlogik 610 kann
durchführen
Steuerlogik 610 kann in Hardware, Software, Firmware oder
einer Kombination derselben implementiert sein. Tabellenspeichereinheit 612 kann
mit einem Speichermedium, wie beispielsweise Speicher, implementiert
sein.
-
6B zeigt,
dass Tabellenspeichereinheit 612 Kompakttabelle 624 speichert.
Steuerlogik 610 kann auf diese Tabelle von Tabellenspeichereinheit 612 aus
zugreifen und verschiedene Vorgänge
durchführen. Diese
Vorgänge
können
logische Operationen wie beispielsweise XOR-Operationen zwischen
empfangenen Bitsequenzen und in Kompakttabelle 624 gespeicherten
Masken einschließen.
Darüber
hinaus können
derartige Operationen die Identifizierung von Präambeln (zum Beispiel der ersten
vier Bits in einem Codewort) zur Gruppenidentifizierung sowie die
Berechnung von Adressen innerhalb von Kompakttabelle einschließen. Derartige
Berechnungen können
zum Beispiel auf in Kompakttabelle 624 enthaltenen Sprungadressen
beruhen. Darüber
hinaus kann Steuerlogik Ergebnisse derartiger Vorgänge analysieren
sowie auf der Grundlage derartiger Operationen und derartiger Analyse decodierte
Syntax 622 generieren. Beispiele für Merkmale sind unter Bezugnahme
auf 7 angegeben.
-
In
Ausführungsformen
können
Kompakttabellen vorteilhaft verwendet werden, um Verschlüsselungs- und
Wasserzeichenmarkierungsmerkmale bereitzustellen. Zum Beispiel kann
anstelle einer gegebenen Standard-Huffman-Codetabelle ein Satz ersetzbarer
Huffman-Codetabellen
erzeugt werden. Der Prozess des Erzeugens derartiger Ersatztabellen
kann jedem beliebigen Prozess folgen, der an einem gegebenen Verschlüsselungs-
oder Wasserzeichenmarkierungsprozess beteiligt ist. Beispielsweise
können
derartige Ersatztabellen neue Tabellen sein, die der gegebenen Standardtabelle ähnlich sind,
oder durch Neuanordnen einiger Blätter der Codewörter mit
der gleichen Codelänge
oder Einsetzen der ungenutzten (oder unzulässigen) Codes in die Codetabellen
an einer sogenannten arbiträren
Position (Wasserzeichenmarkierung) und so weiter. Während des
Codierungsprozesses kann eine gegebene Standardtabelle gemäß einer
zuvor festgelegten Verschlüsselungs-
oder Wasserzeichenmarkierungsregel durch eine Ersatztabelle ersetzt
werden, und somit wird ein verschlüsselter oder wasserzeichenmarkierter
Bitstrom generiert.
-
Derartige
Verschlüsselungs-/Wasserzeichenmarkierungsregeln
können
an einen schnellen Kompaktdecoder gesendet werden (zum Beispiel
vor dem Decodieren derartiger verschlüsselter/wasserzeichenmarkierter
Bitströme).
Diese Regeln können über andere
Kommunikationsmedien oder andere Transportschichten gesendet werden
(zum Beispiel als Privatanwenderdaten). Dementsprechend kann der
schnelle Kompaktdecoder bei Empfang derartige Regeln verwenden,
um die Kompakttabelle(n) zum Decodieren neu anzuordnen. Eine derartige
Neuanordnung kann das Verschieben (oder Bewegen) von Code-Indizes
zwischen ihren aktuellen Positionen in einer Kompakttabelle umfassen.
-
Dementsprechend
veranschaulicht 6C eine Decodierungsimplementierung 660,
die ein Beispiel für
derartige Merkmale darstellt. Die Implementierung von 6C ist ähnlich derjenigen
von 6B. Jedoch wird in 6B der
Decoder 608 durch einen Decoder 608' ersetzt. Wie in 6B gezeigt,
schließt
Decoder 608' Steuerlogik 610' ein. Steuerlogik 610' kann die Vorgänge von
Steuerlogik 610 durchführen.
Jedoch kann Steuerlogik 610' weiterhin
Kompakttabelle 624 gemäß den hier
beschriebenen Verschlüsselungs-/Wasserzeichenmarkierungstechniken
neu anordnen.
-
6C zeigt
Steuerlogik 610',
die Neuanordnungsregel 614' empfangt.
Wie oben beschrieben, können
diese Regeln über
Kommunikationsmedien oder Transportschichten gesendet werden, die
nicht eingesetzt werden, um Eingangsbitstrom 620 zu empfangen.
Bei Empfang von Regeln 614' kann
Steuerlogik 610' Kompakttabelle 624 innerhalb
von Tabellenspeichereinheit 612 neu anordnen. Wie oben
beschrieben, kann eine derartige Neuanordnung das Verschieben von
Code-Indizes untereinander umfassen.
-
7 ist
ein Diagramm eines logischen Flusses 700, der bei der Decodierung
von mit variabler Länge codierten
Informationen, wie beispielsweise Huffman-codierten Informationen
(zum Beispiel Bitströmen),
eingesetzt werden kann. Zum Beispiel kann dieser logische Fluss
durch die Implementierung von 6B und 6C ausgeführt werden.
-
7 zeigt
einen Block 702, der eine Huffman-Codetabelle empfangt.
Aus dieser Tabelle generiert ein Block 704 eine entsprechende
Kompakttabelle. Unter Bezugnahme auf 6B kann
dieser Block mit Kompakttabellengenerator 606 implementiert
sein.
-
Bei
einem Block 706 wird ein Huffman-codierter Bitstrom empfangen.
Von einem Block 708 wird ein Präfix (also eine vorbestimmte
Anzahl von Anfangsbits) innerhalb des Bitstroms identifiziert. Wie
oben beschrieben, können
die Ausführungsformen
Vier-Bit-Präfixe
einsetzen. Es können
jedoch auch Präfixe
anderer Länge
eingesetzt werden.
-
Wie
in 7 gezeigt, wählt
ein Block 710 auf der Grundlage des identifizierten Präfixes einen
Tabelleneintrag aus. Dieser Tabelleneintrag entspricht einer übergeordneten
Gruppe (Gruppe 0).
-
Ein
Block 712 führt
einen Maskierungsvorgang (zum Beispiel eine EXKLUSIV-ODER-Operation) zwischen
einer nachfolgenden Anzahl von Bits nach dem Präfix und einer Maske in dem
ausgewählten
Tabelleneintrag durch. Diese Maske ist die übergeordnete Maske (Maske der
Gruppe 0) der/des
-
Das
Ergebnis dieses Maskierungsvorgangs wird von einem Block 714 analysiert.
Diese Analyse kann das Detektieren einer Lauflänge eines bestimmten Wertes
umfassen, wie beispielsweise einen Lauf von 0en.
-
Auf
der Grundlage der detektierten Lauflänge greift ein Block 716 auf
eine neue (auch als eine Sprungadresse bezeichnete) Adresse in der
Kompakttabelle zu.
-
Wie
in 7 gezeigt, ruft ein Block 718 eine Maske
aus der neuen Adresse ab und führt
einen Maskierungsvorgang zwischen einem oder mehr Bits in dem Bitstrom
und einer an der neuen Adresse gespeicherten Maske durch. Diese
Anzahl von Bits kann die oben unter Bezugnahme auf Block 712 genannte
nachfolgende Anzahl von Bits sein. Alternativ können ein oder mehr Bits aus
dieser nachfolgenden Anzahl von Bits stammen, die auf die von Block 716 ermittelte
Lauflänge
folgen.
-
Ein
Block 720 analysiert das Ergebnis dieses Maskierungsvorgangs.
Dies kann das Detektieren einer Lauflänge eines bestimmten Wertes
umfassen, wie beispielsweise einen Lauf von 0en. Auf der Grundlage
der detektierten Lauflänge
greift ein Block 722 auf eine neue (Sprung-)Adresse in
der Kompakttabelle zu.
-
Wie
durch einen Block 724 angegeben, wird ermittelt, ob der
Eintrag an dieser neuen Adresse einen Code-Index oder eine weitere
Maske aufweist. Wenn der Eintrag einen Code-Index aufweist, dann
wurde uncodierte Syntax identifiziert, die einem Codewort, auf das
zugegriffen wurde, entspricht. Somit kann der Vorgang zum Verarbeiten
von nachfolgenden Bits in dem codierten Bitstrom zu Block 708 zurückkehren.
Andernfalls ist weiteres Verarbeiten erforderlich, und der Vorgang
kehrt zu Block 718 zurück,
damit das Verarbeiten der Maske fortgesetzt werden kann.
-
8 veranschaulicht
eine Ausführungsform
eines Systems. Insbesondere veranschaulicht 8 ein System 800,
das repräsentativ
sein kann für
ein System oder eine Architektur, das/die zur Verwendung mit einer
oder mehr der hier beschriebenen Ausführungsformen geeignet ist.
-
Wie
in 8 gezeigt, kann System 800 eine Vorrichtung 802,
ein Kommunikationsnetz 804 und eine oder mehr ferne Vorrichtungen 806 einschließen. 8 zeigt,
dass Vorrichtung 802 die Elemente von 1 einschließen kann.
Weiterhin zeigt 8, dass Vorrichtung 802 einen
Decoder 803 einschließen
kann. Dieser Decoder kann schnelle Kompaktdecodierungstechniken
ausführen,
wie beispielsweise die oben unter Bezugnahme auf 7 beschriebenen.
Darüber
hinaus kann Decoder 803 die Merkmale von Decoder 608 und/oder 608' implementieren.
-
Zusätzlich kann
Vorrichtung 802 einen Speicher 808 einschließen, eine
Anwenderschnittstelle 810, eine Kommunikationsschnittstelle 812 und
eine Stromversorgung 814. Diese Elemente können gemäß verschiedenen
Techniken gekoppelt werden. Eine derartige Technik umfasst den Einsatz
von einer oder mehr Busschnittstellen.
-
Speicher 808 kann
Informationen in Form von Daten speichern. Zum Beispiel kann Speicher 808 in Speichermedium 104 enthaltene
Informationen speichern. Somit kann Speicher 808, obgleich
separat gezeigt, Speichermedium 104 umfassen.
-
Alternativ
oder zusätzlich
kann Speicher 808 Steuerlogik, Befehle und/oder Software-Komponenten speichern.
Diese Software-Komponenten schließen Befehle ein, die von einem
Prozessor ausgeführt
werden können.
Derartige Befehle können
Funktionalität
von einem oder mehr Elementen in System 800 bereitstellen.
-
Speicher 808 kann
implementiert sein durch Verwendung jedes beliebigen maschinenlesbaren
oder rechnerlesbaren Mediums, das in der Lage ist, Daten zu speichern,
einschließlich
sowohl flüchtiger
als auch nichtflüchtiger
Speicher. Zum Beispiel kann Speicher 808 Nur-Lese-Speicher (ROM), Direktzugriffsspeicher (RAM),
dynamisches RAM (DRAN), Doppeldatenraten-DRAN (DDRAM), synchrones
DRAN (SDRAM), statisches RAM (SRAM), programmierbares ROM (PROM),
löschbares
programmierbares ROM (EPROM), elektrisch löschbares programmierbares ROM
(EEPROM), Flash-Speicher, Polymerspeicher, wie beispielsweise ferroelektrischen
Polymerspeicher, Ovonik-Speicher, Phasenänderungs- oder ferroelektrischen Speicher, Silizium-Oxid-Nitrid-Oxid-Silizium-Speicher
(SONOS-Speicher),
Magnet- oder optische Karten oder jede andere Art von zum Speichern
von Informationen geeigneten Medien einschließen.
-
Anwenderschnittstelle 810 erleichtert
die Anwenderinteraktion mit Vorrichtung 802. Diese Interaktion kann
die Eingabe von Informationen durch einen Anwender einschließen. Diese
Interaktion kann auch die Ausgabe von Informationen, wie beispielsweise
Inhalte, an einen Anwender umfassen. Dementsprechend kann Anwenderschnittstelle 810 eine
oder mehr Vorrichtungen umfassen, wie beispielsweise ein Tastaturfeld,
einen Berührungsbildschirm,
ein Mikrofon und/oder einen Lautsprecher. Zusätzlich kann Anwenderschnittstelle 810 eine
Anzeige einschließen,
um Informationen auszugeben und/oder Bilder/Videos wiederzugeben,
die von Vorrichtung 802 verarbeitet wurden. Beispielhafte
Anzeigen schließen
Flüssigkristallanzeigen
(LCDs), Plasmaanzeigen und Videoanzeigen ein.
-
Kommunikationsschnittstelle 812 ermöglicht den
Austausch von Informationen mit anderen Vorrichtungen über Kommunikationsmedien,
wie beispielsweise Netzwerke. Diese Informationen können Inhalte,
wie beispielsweise Bild-, Video- und/oder Audioübertragungen – entweder
in codierten oder in uncodierten Formaten – einschließen.
-
Kommunikationsschnittstelle 812 kann
drahtlose oder drahtgebundene Kommunikation ermöglichen. Bei drahtloser Kommunikation
kann Kommunikationsschnittstelle 812 Komponenten wie beispielsweise
einen Transceiver, eine Antenne und Steuerlogik zum Ausführen von
Vorgängen
gemäß einem
oder mehr Kommunikationsprotokollen einschließen. Somit kann Kommunikationsschnittstelle 812 gemäß verschiedenen
Protokollen über
drahtlose Netze kommunizieren. Zum Beispiel können Vorrichtung 802 und
Vorrichtung(en) 806 gemäß verschiedenen
drahtlosen lokalen Netzprotokollen (WLAN-Protokollen) arbeiten, wie beispielsweise der
Protokollreihe IEEE 802.11, einschließlich dem IEEE 802.11a, 802.11b,
802.11e, 802.11g, 802.11n und so weiter. In einem weiteren Beispiel
können
diese Vorrichtungen gemäß verschiedenen
mobilen Breitband-Drahtloszugriffsprotokollen
(MBWA-Protokollen) für
drahtlose Stadtnetze (WMAN) arbeiten, wie beispielsweise einem Protokoll
aus der Protokollreihe IEEE 802.16 oder 802.20. In einem weiteren
Beispiel können
diese Vorrichtungen gemäß verschiedenen
drahtlosen persönlichen
Netzen (WPAN) arbeiten. Derartige Netze schließen zum Beispiel IEEE 802.16e,
Bluetooth und dergleichen ein. Außerdem können diese Vorrichtungen gemäß Protokollen
zur Weltweiten Interoperabilität
für Mikrowellenzugang
(WiMax) arbeiten, wie den durch IEEE 802.16 festgelegten.
-
Außerdem können diese
Vorrichtungen drahtlose zellulare Protokolle gemäß einem oder mehr Standards
nutzen. Bei diesen zellularen Standards kann es sich zum Beispiel
unter anderem um Mehrfachzugriff im Codemultiplex (CDMA), CDMA 2000,
Breitbandigen Mehrfachzugriff im Codemultiplex (W-CDMA), Enhanced
General Packet Radio Service (GPRS) handeln. Die Ausführungsformen
sind in diesem Zusammenhang jedoch nicht beschränkt.
-
Bei
drahtloser Kommunikation kann Kommunikationsschnittstelle 812 Komponenten
wie beispielsweise einen Transceiver und Steuerlogik zum Ausführen von
Vorgängen
gemäß einem
oder mehr Kommunikationsprotokollen einschließen. Beispiele für derartige
Kommunikationsprotokolle schließen
Protokolle für
Ethernet (zum Beispiel IEEE 802.3), Protokolle für dienstintegrierte digitale
Netze (ISDN-Protokolle), Protokolle für öffentliche Telefonnetze (PSTN-Protokolle)
und verschiedene Kabelprotokolle ein.
-
Zusätzlich kann
Kommunikationsschnittstelle 812 Eingangs-/Ausgangs-Adapter
(I/O-Adapter), physikalische
Konnektoren zum Verbinden des I/O-Adapters mit einem entsprechenden
drahtgebundenen Kommunikationsmedium, eine Netzwerkkarte (NIC),
Plattenkontroller, Videokontroller, Audiokontroller und so weiter einschließen. Beispiele
für drahtgebundene
Kommunikationsmedien können
einen Draht, ein Kabel, Metalladern, Leiterplatte (PCB), Rückwandplatine,
Schaltmatrix, Halbleitermaterial, paarig verdrillten Draht, Koaxialkabel,
Faseroptik und so weiter einschließen.
-
Stromversorgung 814 stellt
Betriebsleistung für
Elemente von Vorrichtung 802 bereit. Dementsprechend kann
Stromversorgung 814 eine Schnittstelle zu einer externen
Stromquelle wie beispielsweise eine Wechselstromquelle (AC-Quelle)
einschließen.
Zusätzlich
oder alternativ kann Stromversorgung 814 eine Batterie
einschließen.
Eine derartige Batterie kann wechselbar und/oder wiederaufladbar
sein. Jedoch sind die Ausführungsformen
nicht auf dieses Beispiel beschränkt.
-
Zahlreiche
spezifische Einzelheiten wurden hier dargelegt, um ein umfassendes
Verständnis
der Ausführungsformen
zu ermöglichen.
Für den
Fachmann wird jedoch ersichtlich sein, dass die Ausführungsformen auch
ohne diese spezifischen Einzelheiten praktisch umgesetzt werden
können.
In anderen Fällen
wurden hinreichend bekannte Vorgänge,
Komponenten und Schaltungen nicht im Einzelnen beschrieben, damit
die Ausführungsformen
klarer hervortreten. Es ist ersichtlich, dass die hier offenbarten
spezifischen strukturellen und funktionellen Einzelheiten repräsentativ
sein können
und nicht notwendigerweise den Umfang der Ausführungsformen beschränken.
-
Verschiedene
Ausführungsformen
können
unter Verwendung von Hardware-Elementen, Software-Elementen oder
einer Kombination derselben implementiert sein. Beispiele für Hardware-Elemente
können Prozessoren,
Mikroprozessoren, Schaltungen, Schaltungselemente (zum Beispiel
Transistoren, Widerstände, Kondensatoren,
Induktoren und so weiter), integrierte Schaltungen, anwendungsspezifische
integrierte Schaltungen (ASIC), programmierbare Logikschaltungen
(PLD) digitale Signalprozessoren (DSP), frei programmierbare logische
Anordnungen (FPGA), Logikgatter, Register, Halbleiterbauelement,
Chips, Mikrochips, Chip-Sätze
und so weiter einschließen.
Beispiele für
Software können
Software-Komponenten, Programme, Anwendungen, Computerprogramme,
Anwendungsprogramme, Systemprogramme, Maschinenprogramme, Betriebssystem-Software,
Middleware-, Firmware-, Software-Module, Routinen, Subroutinen,
Funktionen, Verfahren, Prozeduren, Software-Schnittstellen, Anwendungsprogrammschnittstellen
(API), Befehlssätze,
Rechencode, Rechnercode, Codesegmente, Rechnercodesegmente, Wörter, Werte,
Symbole oder eine Kombination derselben einschließen. Das
Ermitteln, ob eine Ausführungsform
unter Verwendung von Hardware-Elementen und/oder Software-Elementen
implementiert ist, kann gemäß einer
Anzahl von Faktoren variieren, wie beispielsweise gewünschter
Rechengeschwindigkeit, Leistungspegel, Wärmetoleranzen, Verarbeitungszyklusbilanz,
Eingangsdatenraten, Ausgangsdatenraten, Speicherressourcen, Datenbusgeschwindigkeiten
und anderen Auslegungs- oder Leistungsbeschränkungen.
-
Einige
Ausführungsformen
können
unter Verwendung der Ausdrücke „gekoppelt" und „verbunden" zusammen mit deren
Ableitungen beschrieben sein. Diese Begriffe sind nicht als Synonyme
füreinander
gedacht. Zum Beispiel können
einige Ausführungsformen
unter Verwendung der Begriffe „verbunden" und/oder „gekoppelt" beschrieben sein,
um anzugeben, dass zwei oder mehr Elemente in direktem physikalischen
oder elektrischen Kontakt miteinander stehen. Der Begriff „gekoppelt" kann jedoch auch
bedeuten, dass zwei oder mehr Elemente nicht in direktem Kontakt
miteinander stehen, jedoch dennoch zusammenarbeiten oder miteinander interagieren.
-
Einige
Ausführungsformen
können
zum Beispiel unter Verwendung eines maschinenlesbaren Mediums oder
Artikels implementiert sein, das/der einen Befehl oder einen Satz
von Befehlen speichern kann, der bei Ausführung durch eine Maschine die
Maschine dazu veranlassen kann, ein Verfahren und/oder Vorgänge gemäß den Ausführungsformen
auszuführen.
-
Eine
derartige Maschine kann zum Beispiel ein/e/geeignete/s/n Verarbeitungsplattform,
Rechenplattform, Rechenvorrichtung, Verarbeitungsvorrichtung, Rechensystem,
Verarbeitungssystem, Rechner, Prozessor oder dergleichen einschließen und
kann implementiert sein unter Verwendung einer geeigneten Kombination
aus Hardware und/oder Software. Das maschinenlesbare Medium oder
der maschinenlesbare Artikel kann zum Beispiel eine geeignete Art
von Speichereinheit (memory unit), Speichervorrichtung (memory device), Speicherartikel
(memory article), Speichermedium (memory medium), Speichervorrichtung
(storage device), Speicherartikel (storage article), Speichermedium
(storage medium) und/oder Speichereinheit (storage unit) einschließen, zum
Beispiel Speicher, wechselbare oder nicht wechselbare Medien, löschbare
oder nicht löschbare
Medien, beschreibbare oder wiederbeschreibbare Medien, digitale
oder analoge Medien, Festplatte, Diskette, Compact Disk Read Only
Memory (CD-ROM), beschreibbare Compact Disk (CD-R), überschreibbare Compact
Disk (CD-RW), optische Platte, Magnetmedien, magneto-optische Medien,
wechselbare Speicherkarten oder -platten, verschiedene Arten von
Digital Versatile Disk (DVD), ein Band, eine Kassette oder dergleichen.
Die Befehle können
eine geeignete Art von Code einschließen, wie beispielsweise Quellcode,
Kompilierercode, Interpretierercode, ausführbaren Code, statischen Code,
dynamischen Code, verschlüsselten Code
und dergleichen, implementiert unter Verwendung einer geeigneten
höheren,
niederen, objektorientierten, visuellen, Kompilierer- und/oder Interpretierer-Programmiersprache.
-
Sofern
nicht ausdrücklich
anders angegeben, ist ersichtlich, dass sich Begriffe wie „Verarbeiten", „Rechnen", „Berechnen", „Ermitteln" oder dergleichen
auf die Aktion und/oder Prozesse eines Rechners oder Rechensystems
oder eine ähnliche
elektronische Rechenvorrichtung beziehen, die als physikalische
Größen dargestellte
Daten (zum Beispiel elektronische) innerhalb der Register und/oder
Speicher des Rechensystems handhabt und/oder in andere Daten umwandelt,
die auf ähnliche
Weise als physikalische Größen innerhalb
der Speicher, Register oder anderen derartigen Informationsspeicher-, Übertragungs-
oder Anzeigevorrichtungen innerhalb der Speicher des Rechensystems
dargestellt sind. Die Ausführungsformen
sind in diesem Zusammenhang nicht beschränkt.
-
Obwohl
der Gegenstand der Erfindung in einer für strukturelle Merkmale und/oder
methodische Handlungen spezifischen Sprache beschrieben wurde, sei
darauf hingewiesen, dass der in den beigefügten Ansprüchen definierte Gegenstand
nicht notwendigerweise auf die oben beschriebenen spezifischen Merkmale
oder Handlungen beschränkt
ist. Vielmehr sind die oben beschriebenen spezifischen Merkmale
und Handlungen als Beispielformen von Implementierungen in den Ansprüchen offenbart.