Statistics
| Branch: | Revision:

ffmpeg / libavcodec / tableprint.h @ 8eaa6e0e

History | View | Annotate | Download (2.33 KB)

1
/*
2
 * Generate a file for hardcoded tables
3
 *
4
 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
5
 *
6
 * This file is part of FFmpeg.
7
 *
8
 * FFmpeg is free software; you can redistribute it and/or
9
 * modify it under the terms of the GNU Lesser General Public
10
 * License as published by the Free Software Foundation; either
11
 * version 2.1 of the License, or (at your option) any later version.
12
 *
13
 * FFmpeg is distributed in the hope that it will be useful,
14
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
16
 * Lesser General Public License for more details.
17
 *
18
 * You should have received a copy of the GNU Lesser General Public
19
 * License along with FFmpeg; if not, write to the Free Software
20
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
21
 */
22

    
23
#ifndef AVCODEC_TABLEPRINT_H
24
#define AVCODEC_TABLEPRINT_H
25

    
26
#include <stdint.h>
27
#include <stdio.h>
28

    
29
#define WRITE_1D_FUNC_ARGV(name, type, linebrk, fmtstr, ...)\
30
void write_##name##_array(const type *data, int len)\
31
{\
32
    int i;\
33
    printf("   ");\
34
    for (i = 0; i < len - 1; i++) {\
35
       printf(" "fmtstr",", __VA_ARGS__);\
36
       if ((i & linebrk) == linebrk) printf("\n   ");\
37
    }\
38
    printf(" "fmtstr"\n", __VA_ARGS__);\
39
}
40

    
41
#define WRITE_1D_FUNC(name, type, fmtstr, linebrk)\
42
    WRITE_1D_FUNC_ARGV(name, type, linebrk, fmtstr, data[i])
43

    
44
#define WRITE_2D_FUNC(name, type)\
45
void write_##name##_2d_array(const void *arg, int len, int len2)\
46
{\
47
    const type *data = arg;\
48
    int i;\
49
    printf("    {\n");\
50
    for (i = 0; i < len; i++) {\
51
        write_##name##_array(data + i * len2, len2);\
52
        printf(i == len - 1 ? "    }\n" : "    }, {\n");\
53
    }\
54
}
55

    
56
/**
57
 * \defgroup printfuncs Predefined functions for printing tables
58
 *
59
 * \{
60
 */
61
void write_int8_array     (const int8_t   *, int);
62
void write_uint8_array    (const uint8_t  *, int);
63
void write_uint16_array   (const uint16_t *, int);
64
void write_uint32_array   (const uint32_t *, int);
65
void write_float_array    (const float    *, int);
66
void write_int8_2d_array  (const void *, int, int);
67
void write_uint8_2d_array (const void *, int, int);
68
void write_uint32_2d_array(const void *, int, int);
69
/** \} */ // end of printfuncs group
70

    
71
/** Write a standard file header */
72
void write_fileheader(void);
73

    
74
#endif /* AVCODEC_TABLEPRINT_H */