Filter: 2013-11

Ringpuffer

Der Ringpuffer ist ein FIFO-artiger Datenspeicher, der meist ein Datenfeld fester Größe benutzt. Dadurch benötigen zeitkritische Abläufe, keinen Zugriff auf die Speicherverwaltung. Ringpuffer werden gerne, bei Audiotreibern, Eventsystemen oder zum Datenaustausch zwischen zwei nebenläufigen Prozessen benutzt.

Beispiel (Quellcode): ringbuffer.cpp
Download (Quellcode): ringbuffer.zip

Beschreibung

Ringpuffer Schaubild Durch zwei Zähler werden die Lese- und Schreibposition dargestellt. Wird ein Element ausgelesen, wird die Leseposition erhöht. Beim Hinzufügen eines Elements, erhöht sich die Schreibposition. Beim Erreichen des Datenfeldlimits, wird die Position auf den Anfang des Feldes zurückgesetzt. Alternativ kann auch ein Modulo oder eine andere Operation sicherstellen, dass die Position innerhalb des Datenfelds liegt und fortlaufend ist. Sind beide Positionen gleich, ist das Feld leer. Wären nach dem nächsten Hinzufügen beide Position gleich, ist das Feld voll.

Zum Austausch zwischen zwei Prozessen, bei denen einer der Daten…

Lauflängenkodierung

Bei vielen Kompressionsarten kommt, als Filter, die Lauflängenkodierung zum Einsatz. Sie ist sehr einfach, sehr schnell aber auch sehr spezialisiert, da bei ihr gleiche aufeinander folgende Symbole zusammengefasst werden. Diese Kodierung ist anzutreffen bei vielen Grafikformaten (inklusive JPEG).

Beispiel (Quellcode): rle.cpp
Download (Quellcode): rle.zip

Beschreibung

Lauflängenkodierung Schaubild Wie schon erwähnt, werden gleiche aufeinander folgende Symbole zusammengefasst. Dies geschieht oft durch einen Marker, ein Spezialsymbol oder durch eine andere Art von Metadaten innerhalb des Ausgabedatenstroms. Bei Kodierungsverfahren mit Codewörtern, lassen sich extra Codes verwenden. Die Länge der Symbolwiederholungen, die benötigt wird, um eine Datenkompression zu erreichen hängt vom Kodierungsverfahren ab. Bei einfachsten Implementationen, lohnt sich der Aufwand oft erst, wenn mindestens vier oder fünf gleiche aufeinander folgende Symbole möglich sind.

Wie bei eigentlich allen Kompressionsverfahren, kann auch bei RLE unter Umständen ü…