FFmpeg
libavcodec
mlz.h
1
/*
2
* Copyright (c) 2016 Umair Khan <omerjerk@gmail.com>
3
*
4
* This file is part of FFmpeg.
5
*
6
* FFmpeg is free software; you can redistribute it and/or
7
* modify it under the terms of the GNU Lesser General Public
8
* License as published by the Free Software Foundation; either
9
* version 2.1 of the License, or (at your option) any later version.
10
*
11
* FFmpeg is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14
* Lesser General Public License for more details.
15
*
16
* You should have received a copy of the GNU Lesser General Public
17
* License along with FFmpeg; if not, write to the Free Software
18
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19
*/
20
21
#ifndef AVCODEC_MLZ_H
22
#define AVCODEC_MLZ_H
23
24
#include "
get_bits.h
"
25
26
#define CODE_UNSET -1
27
#define CODE_BIT_INIT 9
28
#define DIC_INDEX_INIT 512 // 2^9
29
#define DIC_INDEX_MAX 32768 // 2^15
30
#define FLUSH_CODE 256
31
#define FREEZE_CODE 257
32
#define FIRST_CODE 258
33
#define MAX_CODE 32767
34
#define TABLE_SIZE 35023 // TABLE_SIZE must be a prime number
35
38
typedef
struct
MLZDict
{
39
int
string_code;
40
int
parent_code;
41
int
char_code;
42
int
match_len;
43
}
MLZDict
;
44
47
typedef
struct
MLZ
{
48
int
dic_code_bit;
49
int
current_dic_index_max;
50
unsigned
int
bump_code;
51
unsigned
int
flush_code;
52
int
next_code;
53
int
freeze_flag;
54
MLZDict
* dict;
55
void
* context;
56
}
MLZ
;
57
60
void
ff_mlz_init_dict(
void
* context,
MLZ
*mlz);
61
64
void
ff_mlz_flush_dict(
MLZ
*dict);
65
68
int
ff_mlz_decompression(
MLZ
* mlz,
GetBitContext
* gb,
int
size,
unsigned
char
*buff);
69
70
#endif
/*AVCODEC_MLZ_H*/
MLZDict
Dictionary structure for mlz decompression.
Definition:
mlz.h:38
get_bits.h
bitstream reader API header.
MLZ
MLZ data strucure.
Definition:
mlz.h:47
GetBitContext
Definition:
get_bits.h:56
Generated by
1.8.12