DPCM/RLE/VLI - Grundlegendes
In diesem Kapitel werden die Grundlagen der DPCM, der VLI und der RLE erläutert
Differential Pulse Code Modulation (DPCM)
Bei diesem Verfahren macht man sich die Tatsache zunutze, daß die DC-Koeffizienten normalerweise nur sehr gering vom
vorhergehenden Wert abweichen und die Werte im Schnitt ziemlich groß sind. Deshalb kodiert man nur beim ersten DC-Wert den Wert
selbst und bei den nachfolgenden immer die Differenz zum Vorgänger. Diese Differenz (die normalerweise wesentlich
kleiner ist als der tatsächliche Wert) wird dann mit einem Variable Length Integer kodiert und spart somit Platz.

Variable Length Integer (VLI)
Beim VLI-Schritt werden jetzt für jeden Wert (AC und DC) nur so viele Bits verwendet, wie tatsächlich benötigt werden.
Bei Werten von -3 bis 3 währen das also 2 Bits (siehe Tabelle). Dadurch wird nochmals eine (verlustfreie) Kompression erreicht.
Bits |
Amplitude |
1 |
-1,1 |
2 |
-3,-2,2,3 |
3 |
-7..-4,4..7 |
4 |
-15..-8,8..15 |
5 |
-31..-16,16..31 |
6 |
-63..-32,32..63 |
7 |
-127..-64,64..127 |
8 |
-255..-128,128..255 |
9 |
-511..-256,256..511 |
10 |
-1023..-512,512..1023 |
Run Length Encoding (RLE)
Hier macht man sich längere Nullketten, die dann von einem von Null verschiedenen AC-Koeffizienten gefolgt werden, zu Nutzen.
Anstatt nämlich jeden Koeffizenten einzeln zu speichern, wird jeder
AC-Koeffizient, der nicht Null ist, in Kombination mit der Anzahl der Nullen,
die ihm vorausgegangen sind, angegeben. Dies geschieht mit Hilfe von 2 Symbolen:
Symbol 1: |
(Länge, Größe) |
Symbol 2: |
(Wert) |
Das erste Symbol enthält die Länge der Nullfolge und die Anzahl der Bits, die
benötigt werden, um Symbol 2 darzustellen.
In Symbol 2 ist dann der
AC-Koeffizient als VLI gespeichert.
ähnlich wird auch die Kodierung des DC-Koeffizienten, bzw. der errechneten
Differenz vorgenommen.
Symbol 1: |
(Größe) |
Symbol 2: |
(Wert) |
Zu beachten ist noch, daß nur maximal 15 Nullen hintereinander in einem Symbol kodiert werden, nämlich
als (15,0) und die restlichen dann in neuen Symbolen. Eine weitere Ausnahme ist wenn nur noch Nullen übrig sind, dann
wir das EOB Symblo gesetzt ((0,0)).