Úloha 043: Implementace entropického kodeku v C#

Cílem je implementovat nějaký vhodný entropický kodek (kodér/dekodér) pomocí daného interface IEntropyCodec. Takto vzniklý modul bude moci být používán ve všech ostatních kompresních úlohách, např. 042compressionpre.

Jako příklad můžete použít již hotový kodek DeflateCodec umístěný v souboru common/CompressionBasic.cs nebo později plánovaný LZWCodec. Vlastní algoritmy můžete čerpat na internetu nebo je zkonvertovat z jazyku Java (moduly JaGrLib-u):

Technicky

Musíte svým modulem splnit interface IEntropyCodec, pokud si vyberete implementace aritmetického kódování s externím histogramem (datovým modelem třídy 0), bylo by vhodné splnit i další interface IEntropyHistogram.
Pokud nebudete moci implementovat kontexty (více instancí kodeku se sdíleným výstupním bufferem), můžete použít stejný systém jako v DeflateCodec - property Context tam nelze modifikovat. Obdobně postupujte v případě, že váš kodek nebude moci z nějakých vážných důvodů umět uživatelsky nastavovat velikost vstupní abecedy MaxSymbol (opět viz DeflateCodec, tam je trvale MaxSymbol == 255).

Termín

Bez omezení, můžete odevzdávat s jinou kompresní úlohou, v průvodním mailu na to upozorněte

Body

Podle obtížnosti implementace 15 až 25 bodů
maximum za plnou implementaci včetně kontextů..

Projekt

Visual Studio 2010 projekt: 042compressionpre (zde si můžete kodek vyzkoušet, nahraďte jím DeflateCodec)

Zdrojový soubor

Základ okopírujte z common/CompressionBasic.cs (třída DeflateCodec)
Na první řádku přidejte komentář se svým jménem!
Alespoň stručně popište metodu, kterou jste implementovali.


Copyright (C) 2011-2014 J.Pelikán, last change: 2019-05-09 17:52:59 +0200 (Thu, 09 May 2019)