annotate dv_tablegen.c @ 12494:94eaea836bf4 libavcodec

Check avctx width/height more thoroughly (e.g. all values 0 except width would have been accepted before). Also do not fail if they are invalid but instead override them to 0. This allows decoding e.g. MPEG video when only the container values are corrupted. For encoding a value of 0,0 of course makes no sense, but was allowed through before and will be caught by an extra check in the encode function.
author reimar
date Wed, 15 Sep 2010 04:46:55 +0000
parents 59f399926c12
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
11523
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
1 /*
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
2 * Generate a header file for hardcoded DV tables
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
3 *
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
4 * Copyright (c) 2010 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
5 *
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
6 * This file is part of FFmpeg.
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
7 *
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
12 *
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
16 * Lesser General Public License for more details.
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
17 *
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
21 */
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
22
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
23 #include <stdlib.h>
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
24 #define CONFIG_HARDCODED_TABLES 0
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
25 #ifndef CONFIG_SMALL
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
26 #error CONFIG_SMALL must be defined to generate tables
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
27 #endif
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
28 #include "dv_tablegen.h"
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
29 #include "tableprint.h"
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
30 #include <inttypes.h>
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
31
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11570
diff changeset
32 WRITE_1D_FUNC_ARGV(dv_vlc_pair, 7,
11523
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
33 "{0x%"PRIx32", %"PRId8"}", data[i].vlc, data[i].size)
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11570
diff changeset
34 WRITE_2D_FUNC(dv_vlc_pair)
11523
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
35
11570
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
36 int main(void)
11523
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
37 {
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
38 dv_vlc_map_tableinit();
11570
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
39
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
40 write_fileheader();
11523
3367dd5913a0 Add support for hard-coding the 256kB large dv_vlc_map table.
reimar
parents:
diff changeset
41
11570
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
42 printf("static const struct dv_vlc_pair dv_vlc_map[DV_VLC_MAP_RUN_SIZE][DV_VLC_MAP_LEV_SIZE] = {\n");
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11570
diff changeset
43 write_dv_vlc_pair_2d_array(dv_vlc_map, DV_VLC_MAP_RUN_SIZE, DV_VLC_MAP_LEV_SIZE);
11570
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
44 printf("};\n");
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
45
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
46 return 0;
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11523
diff changeset
47 }