1 /******************************************************************************
2 *
3 * Copyright (C) 2009, The Gentee Group. All rights reserved.
4 * This file is part of the Gentee open source project - http://www.gentee.com.
5 *
6 * THIS FILE IS PROVIDED UNDER THE TERMS OF THE GENTEE LICENSE ("AGREEMENT").
7 * ANY USE, REPRODUCTION OR DISTRIBUTION OF THIS FILE CONSTITUTES RECIPIENTS
8 * ACCEPTANCE OF THE AGREEMENT.
9 *
10 * Author: Alexey Krivonogov ( gentee )
11 *
12 ******************************************************************************/
13
14 #ifndef _LZGE_
15 #define _LZGE_
16
17 #include "..\Huffman\huffman.h"
18 // #include "..\GEA\gea.h"
19 #include "match.h"
20
21 #ifdef __cplusplus
22 extern "C" {
23 #endif // __cplusplus
24
25 //--------------------------------------------------------------------------
26 // Размер элементов закодированных по Хаффману, после которых идет
27 // сброс дерева
28 #define HUF_BLOCK 10000 // Размер блока хаффмана по умолчанию.
29 // Алфавит главного дерева Хаффмана
30 #define LZGE_ALPHABET 256
31 // Минимальная длина совпадения
32 #define MATCH_LEN 2
33 // Минимальное смещение
34 #define MIN_OFFSET 2
35 #define ALL_LEN 19 // Всего разбиение на длины
36 #define SLOT_LEN 18 // Разбиение для слотов
37
38 typedef struct
39 {
40 // Определяемые общие
41 dword hufblock; // Размер блока для построения дерева Хафмана
42 // Определяемые для сжатия
43 dword level; // Скорость сжатия от 1 до 10
44 // Вычисляемые параметры
45 dword numoff; // Количество элементов смещений из rng
46 dword maxbit; // Количество bit на размер окна
47 dword solidoff; // Смещение solid данных
48 dword mft[3]; // Последние базы смещений
49 dword userfunc; // Пользовательская функция
50 dword pgeaparam; // Указатель на geaparam
51 } slzge, * pslzge;
52
53 extern dword rngbits[];
54 extern dword rngmax[ 51 ];
55 extern dword rngmin[ 51 ];
56
57 extern dword lenmax[ 20 ];
58 extern dword lenmin[ 20 ];
59 extern dword lenbits[];
60
61
62 //--------------------------------------------------------------------------
63 // Common LZGE
64 dword STACKAPI lzge_bits( dword val );
65
66 dword STDCALL lzge_encode( pbyte in, dword size, pbyte out, pslzge lzge );
67 dword STDCALL lzge_decode( pbyte in, pbyte out, dword size, pslzge lzge );
68 void STDCALL lzge_ranges( pslzge lzge, dword maxoff );
69
70 //--------------------------------------------------------------------------
71
72 #ifdef __cplusplus
73 }
74 #endif // __cplusplus
75
76 #endif // _LZGE_
77
78