annotate mjpegenc.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
5028
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
1 /*
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
2 * MJPEG encoder
8629
04423b2f6e0b cosmetics: Remove pointless period after copyright statement non-sentences.
diego
parents: 7760
diff changeset
3 * Copyright (c) 2000, 2001 Fabrice Bellard
5028
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
4 * Copyright (c) 2003 Alex Beregszaszi
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
5 * Copyright (c) 2003-2004 Michael Niedermayer
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
6 *
5214
470601203f44 Group all copyright and author notices together.
diego
parents: 5029
diff changeset
7 * Support for external huffman table, various fixes (AVID workaround),
470601203f44 Group all copyright and author notices together.
diego
parents: 5029
diff changeset
8 * aspecting, new decode_frame mechanism and apple mjpeg-b support
470601203f44 Group all copyright and author notices together.
diego
parents: 5029
diff changeset
9 * by Alex Beregszaszi
470601203f44 Group all copyright and author notices together.
diego
parents: 5029
diff changeset
10 *
5028
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
11 * This file is part of FFmpeg.
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
12 *
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
13 * FFmpeg is free software; you can redistribute it and/or
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
14 * modify it under the terms of the GNU Lesser General Public
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
15 * License as published by the Free Software Foundation; either
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
16 * version 2.1 of the License, or (at your option) any later version.
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
17 *
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
18 * FFmpeg is distributed in the hope that it will be useful,
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
19 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
20 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
21 * Lesser General Public License for more details.
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
22 *
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
23 * You should have received a copy of the GNU Lesser General Public
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
24 * License along with FFmpeg; if not, write to the Free Software
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
25 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
26 */
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
27
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
28 /**
11644
7dd2a45249a9 Remove explicit filename from Doxygen @file commands.
diego
parents: 8718
diff changeset
29 * @file
5028
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
30 * MJPEG encoder.
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
31 */
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
32
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
33 #ifndef AVCODEC_MJPEGENC_H
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
34 #define AVCODEC_MJPEGENC_H
5028
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
35
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
36 #include "dsputil.h"
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
37 #include "mpegvideo.h"
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
38
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
39 typedef struct MJpegContext {
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
40 uint8_t huff_size_dc_luminance[12]; //FIXME use array [3] instead of lumi / chrom, for easier addressing
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
41 uint16_t huff_code_dc_luminance[12];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
42 uint8_t huff_size_dc_chrominance[12];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
43 uint16_t huff_code_dc_chrominance[12];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
44
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
45 uint8_t huff_size_ac_luminance[256];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
46 uint16_t huff_code_ac_luminance[256];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
47 uint8_t huff_size_ac_chrominance[256];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
48 uint16_t huff_code_ac_chrominance[256];
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
49 } MJpegContext;
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
50
5029
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
51 int ff_mjpeg_encode_init(MpegEncContext *s);
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
52 void ff_mjpeg_encode_close(MpegEncContext *s);
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
53 void ff_mjpeg_encode_picture_header(MpegEncContext *s);
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
54 void ff_mjpeg_encode_picture_trailer(MpegEncContext *s);
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
55 void ff_mjpeg_encode_stuffing(PutBitContext *pbc);
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
56 void ff_mjpeg_encode_dc(MpegEncContext *s, int val,
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
57 uint8_t *huff_size, uint16_t *huff_code);
dbaa06366c3c add a proper prefix to all mjpeg encoder exported functions
aurel
parents: 5028
diff changeset
58 void ff_mjpeg_encode_mb(MpegEncContext *s, DCTELEM block[6][64]);
5028
3d8a813666e4 split ljpeg encoder out of mjpeg.c
aurel
parents:
diff changeset
59
7760
c4a4495715dd Globally rename the header inclusion guard names.
stefano
parents: 5830
diff changeset
60 #endif /* AVCODEC_MJPEGENC_H */