annotate tableprint.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 263b4ef7ad87
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
1 /*
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
2 * Generate a file for hardcoded tables
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
3 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
5 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
6 * This file is part of FFmpeg.
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
7 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
8 * FFmpeg is free software; you can redistribute it and/or
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
9 * modify it under the terms of the GNU Lesser General Public
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
10 * License as published by the Free Software Foundation; either
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
11 * version 2.1 of the License, or (at your option) any later version.
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
12 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
13 * FFmpeg is distributed in the hope that it will be useful,
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
16 * Lesser General Public License for more details.
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
17 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
18 * You should have received a copy of the GNU Lesser General Public
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
19 * License along with FFmpeg; if not, write to the Free Software
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
21 */
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
22
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
23 #ifndef AVCODEC_TABLEPRINT_H
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
24 #define AVCODEC_TABLEPRINT_H
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
25
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
26 #include <stdint.h>
11522
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
27 #include <stdio.h>
11980
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
28 #include "libavutil/common.h"
11522
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
29
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
30 #define WRITE_1D_FUNC_ARGV(type, linebrk, fmtstr, ...)\
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
31 void write_##type##_array(const type *data, int len)\
11522
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
32 {\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
33 int i;\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
34 printf(" ");\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
35 for (i = 0; i < len - 1; i++) {\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
36 printf(" "fmtstr",", __VA_ARGS__);\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
37 if ((i & linebrk) == linebrk) printf("\n ");\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
38 }\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
39 printf(" "fmtstr"\n", __VA_ARGS__);\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
40 }
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
41
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
42 #define WRITE_1D_FUNC(type, fmtstr, linebrk)\
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
43 WRITE_1D_FUNC_ARGV(type, linebrk, fmtstr, data[i])
11522
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
44
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
45 #define WRITE_2D_FUNC(type)\
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
46 void write_##type##_2d_array(const void *arg, int len, int len2)\
11522
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
47 {\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
48 const type *data = arg;\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
49 int i;\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
50 printf(" {\n");\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
51 for (i = 0; i < len; i++) {\
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
52 write_##type##_array(data + i * len2, len2);\
11522
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
53 printf(i == len - 1 ? " }\n" : " }, {\n");\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
54 }\
db3588eb254a Extend and move macros to create table printing functions to header.
reimar
parents: 11487
diff changeset
55 }
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
56
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
57 /**
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
58 * \defgroup printfuncs Predefined functions for printing tables
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
59 *
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
60 * \{
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
61 */
11979
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
62 void write_int8_t_array (const int8_t *, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
63 void write_uint8_t_array (const uint8_t *, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
64 void write_uint16_t_array (const uint16_t *, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
65 void write_uint32_t_array (const uint32_t *, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
66 void write_float_array (const float *, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
67 void write_int8_t_2d_array (const void *, int, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
68 void write_uint8_t_2d_array (const void *, int, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
69 void write_uint32_t_2d_array(const void *, int, int);
59f399926c12 tableprint: use the type name as-is for the functions' names.
flameeyes
parents: 11714
diff changeset
70 void write_float_2d_array (const void *, int, int);
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
71 /** \} */ // end of printfuncs group
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
72
11570
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11522
diff changeset
73 /** Write a standard file header */
e03e3df6fb7d Change/simplify the tableprint/tablegen API.
reimar
parents: 11522
diff changeset
74 void write_fileheader(void);
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
75
11980
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
76 #define WRITE_ARRAY(prefix, type, name) \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
77 do { \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
78 const size_t array_size = FF_ARRAY_ELEMS(name); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
79 printf(prefix" "#type" "#name"[%zu] = {\n", \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
80 array_size); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
81 write_##type##_array(name, array_size); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
82 printf("};\n"); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
83 } while(0)
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
84
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
85 #define WRITE_2D_ARRAY(prefix, type, name) \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
86 do { \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
87 const size_t array_size1 = FF_ARRAY_ELEMS(name); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
88 const size_t array_size2 = FF_ARRAY_ELEMS(name[0]); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
89 printf(prefix" "#type" "#name"[%zu][%zu] = {\n", \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
90 array_size1, array_size2 ); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
91 write_##type##_2d_array(name, array_size1, array_size2); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
92 printf("};\n"); \
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
93 } while(0)
263b4ef7ad87 tablegen: implement and use WRITE_ARRAY macros
flameeyes
parents: 11979
diff changeset
94
10469
23ca6d60184d Add support for hardcoding the mpegaudiodec tables.
reimar
parents:
diff changeset
95 #endif /* AVCODEC_TABLEPRINT_H */