annotate lzw.h @ 12530:63edd10ad4bc libavcodec tip

Try to fix crashes introduced by r25218 r25218 made assumptions about the existence of past reference frames that weren't necessarily true.
author darkshikari
date Tue, 28 Sep 2010 09:06:22 +0000
parents 7dd2a45249a9
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
1 /*
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
2 * LZW decoder
8629
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 7760
diff changeset
3 * Copyright (c) 2003 Fabrice Bellard
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 7760
diff changeset
4 * Copyright (c) 2006 Konstantin Shishkov
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
5 *
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
6 * This file is part of FFmpeg.
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
7 *
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
12 *
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
16 * Lesser General Public License for more details.
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
17 *
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
21 */
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
22
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
23 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 11412
diff changeset
24 * @file
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
25 * @brief LZW decoding routines
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
26 * @author Fabrice Bellard
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
27 * Modified for use in TIFF by Konstantin Shishkov
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
28 */
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
29
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6218
diff changeset
30 #ifndef AVCODEC_LZW_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6218
diff changeset
31 #define AVCODEC_LZW_H
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
32
11412
811467079ec9 Add lots of missing includes
mru
parents: 10635
diff changeset
33 #include <stdint.h>
811467079ec9 Add lots of missing includes
mru
parents: 10635
diff changeset
34
10634
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
35 struct PutBitContext;
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
36
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
37 enum FF_LZW_MODES{
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
38 FF_LZW_GIF,
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
39 FF_LZW_TIFF
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
40 };
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
41
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
42 /* clients should not know what LZWState is */
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
43 typedef void LZWState;
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
44
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
45 /* first two functions de/allocate memory for LZWState */
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
46 void ff_lzw_decode_open(LZWState **p);
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
47 void ff_lzw_decode_close(LZWState **p);
6218
michael
parents: 5830
diff changeset
48 int ff_lzw_decode_init(LZWState *s, int csize, const uint8_t *buf, int buf_size, int mode);
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
49 int ff_lzw_decode(LZWState *s, uint8_t *buf, int len);
6218
michael
parents: 5830
diff changeset
50 const uint8_t* ff_lzw_cur_ptr(LZWState *lzw);
4080
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
51 void ff_lzw_decode_tail(LZWState *lzw);
f426c81afc9e LZW decoder as separate module plus TIFF LZW support
kostya
parents:
diff changeset
52
4798
c68b9a261f79 LZW encoder by Bartlomiej Wolowiec b.wolowiec students mimuw edu pl
michael
parents: 4080
diff changeset
53 /** LZW encode state */
c68b9a261f79 LZW encoder by Bartlomiej Wolowiec b.wolowiec students mimuw edu pl
michael
parents: 4080
diff changeset
54 struct LZWEncodeState;
c68b9a261f79 LZW encoder by Bartlomiej Wolowiec b.wolowiec students mimuw edu pl
michael
parents: 4080
diff changeset
55 extern const int ff_lzw_encode_state_size;
c68b9a261f79 LZW encoder by Bartlomiej Wolowiec b.wolowiec students mimuw edu pl
michael
parents: 4080
diff changeset
56
10634
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
57 void ff_lzw_encode_init(struct LZWEncodeState *s, uint8_t *outbuf, int outsize,
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
58 int maxbits, enum FF_LZW_MODES mode,
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
59 void (*lzw_put_bits)(struct PutBitContext *, int, unsigned int));
4798
c68b9a261f79 LZW encoder by Bartlomiej Wolowiec b.wolowiec students mimuw edu pl
michael
parents: 4080
diff changeset
60 int ff_lzw_encode(struct LZWEncodeState * s, const uint8_t * inbuf, int insize);
10634
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
61 int ff_lzw_encode_flush(struct LZWEncodeState *s,
e15eb76d9e47 use lzw compression in gif encoder
bcoudurier
parents: 9428
diff changeset
62 void (*lzw_flush_put_bits)(struct PutBitContext *));
4798
c68b9a261f79 LZW encoder by Bartlomiej Wolowiec b.wolowiec students mimuw edu pl
michael
parents: 4080
diff changeset
63
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 6218
diff changeset
64 #endif /* AVCODEC_LZW_H */