MIUncompContextHuffman

定義

#include <nitro/mi/uncomp_stream.h>
typedef struct { u8* destp; // 4B s32 destCount; // 4B u8* treep; // 4B u32 srcTmp; // 4B u32 destTmp; // 4B s16 treeSize; // 2B u8 srcTmpCnt; // 1B u8 destTmpCnt; // 1B u8 bitSize; // 1B u8 _padding2[3]; // 3B u8 tree[0x200]; // 512B // 計 540B } MIUncompContextHuffman;

説明

ハフマン圧縮されたデータをカードから読み込みながら順次ストリーミング展開をおこなう際に、
データ展開状況を保存しておくためのコンテキスト構造体です。
MI_InitUncompContextHuffman()でコンテキストの初期化をおこない、MI_ReadUncompHuffman()でこのコンテキストを使用して展開状況を保管します。

圧縮データが4bit符号化されたものであれば、treeメンバの配列サイズが32バイトあれば問題ありませんので、sizeof( MIUncompContextHufffman ) よりも、480バイト少ない領域しか与えていなくても構いません。
8bit符号化されたものであれば512バイト必要ですので構造体のサイズを削ることはできません。

destp 展開したデータの書き込み先領域へのポインタ
destCount 残り書き込みサイズ
treep ハフマン符号テーブル、カレントポインタ退避用
srcTmp 読み込み途中のデータの退避用
destTmp 書き込み途中のデータ退避用
treeSize ハフマン符号テーブルサイズの退避用
srcTmpCnt 読み込み途中のデータサイズ退避用
destTmpCnt 書き込み途中のデータサイズ退避用
bitSize 符号化ビットサイズ
tree ハフマン符号テーブルの読み込み用バッファ

参照

MI_InitUncompContextHuffman, MI_ReadUncompHuffman, MIUncompContextLZ,MIUncompContextRL

履歴

2004/11/30 初版