annotate bmp.h @ 6443:e3adb7e96812 libavcodec

Detect and prevent reading over the end of counts_*. We pass the error through a context variable as this is simpler and i think also faster, but the return value of functions could be used instead of course. The code also ensures as a side effect that the AC decoder state does not become invalid. This fixes all known crashes. And outputs nothing in case of an error instead of random noise.
author michael
date Tue, 04 Mar 2008 21:58:34 +0000
parents 1d83e9c34641
children c4a4495715dd
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4415
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
1 /*
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
2 * internals for BMP codecs
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
3 * Copyright (c) 2005 Mans Rullgard
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
4 *
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
5 * This file is part of FFmpeg.
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
6 *
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
9 * License as published by the Free Software Foundation; either
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
11 *
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
15 * Lesser General Public License for more details.
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
16 *
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
20 */
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
21
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5169
diff changeset
22 #ifndef FFMPEG_BMP_H
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5169
diff changeset
23 #define FFMPEG_BMP_H
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5162
diff changeset
24
5162
4394344397d8 include all prerequisites in header files
mru
parents: 4415
diff changeset
25 #include "avcodec.h"
4394344397d8 include all prerequisites in header files
mru
parents: 4415
diff changeset
26
4415
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
27 typedef struct BMPContext {
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
28 AVFrame picture;
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
29 } BMPContext;
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
30
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
31 typedef enum {
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
32 BMP_RGB =0,
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
33 BMP_RLE8 =1,
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
34 BMP_RLE4 =2,
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
35 BMP_BITFIELDS =3,
f792b146869b Segregate code common to BMP decoder and future encoder
diego
parents:
diff changeset
36 } BiCompression;
5163
9ecbfc0c82bf add multiple inclusion guards to headers
mru
parents: 5162
diff changeset
37
5830
1d83e9c34641 Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 5169
diff changeset
38 #endif /* FFMPEG_BMP_H */