annotate ffmpeg/libavcodec/tableprint.h @ 13:844d341cf643 tip

Back up before ISMIR
author Yading Song <yading.song@eecs.qmul.ac.uk>
date Thu, 31 Oct 2013 13:17:06 +0000
parents 6840f77b83aa
children
rev   line source
yading@10 1 /*
yading@10 2 * Generate a file for hardcoded tables
yading@10 3 *
yading@10 4 * Copyright (c) 2009 Reimar Döffinger <Reimar.Doeffinger@gmx.de>
yading@10 5 *
yading@10 6 * This file is part of FFmpeg.
yading@10 7 *
yading@10 8 * FFmpeg is free software; you can redistribute it and/or
yading@10 9 * modify it under the terms of the GNU Lesser General Public
yading@10 10 * License as published by the Free Software Foundation; either
yading@10 11 * version 2.1 of the License, or (at your option) any later version.
yading@10 12 *
yading@10 13 * FFmpeg is distributed in the hope that it will be useful,
yading@10 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
yading@10 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
yading@10 16 * Lesser General Public License for more details.
yading@10 17 *
yading@10 18 * You should have received a copy of the GNU Lesser General Public
yading@10 19 * License along with FFmpeg; if not, write to the Free Software
yading@10 20 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
yading@10 21 */
yading@10 22
yading@10 23 #ifndef AVCODEC_TABLEPRINT_H
yading@10 24 #define AVCODEC_TABLEPRINT_H
yading@10 25
yading@10 26 #include <inttypes.h>
yading@10 27 #include <stdio.h>
yading@10 28
yading@10 29 #include "libavutil/common.h"
yading@10 30
yading@10 31 #define WRITE_1D_FUNC_ARGV(type, linebrk, fmtstr, ...)\
yading@10 32 void write_##type##_array(const type *data, int len)\
yading@10 33 {\
yading@10 34 int i;\
yading@10 35 printf(" ");\
yading@10 36 for (i = 0; i < len - 1; i++) {\
yading@10 37 printf(" "fmtstr",", __VA_ARGS__);\
yading@10 38 if ((i & linebrk) == linebrk) printf("\n ");\
yading@10 39 }\
yading@10 40 printf(" "fmtstr"\n", __VA_ARGS__);\
yading@10 41 }
yading@10 42
yading@10 43 #define WRITE_1D_FUNC(type, fmtstr, linebrk)\
yading@10 44 WRITE_1D_FUNC_ARGV(type, linebrk, fmtstr, data[i])
yading@10 45
yading@10 46 #define WRITE_2D_FUNC(type)\
yading@10 47 void write_##type##_2d_array(const void *arg, int len, int len2)\
yading@10 48 {\
yading@10 49 const type *data = arg;\
yading@10 50 int i;\
yading@10 51 printf(" {\n");\
yading@10 52 for (i = 0; i < len; i++) {\
yading@10 53 write_##type##_array(data + i * len2, len2);\
yading@10 54 printf(i == len - 1 ? " }\n" : " }, {\n");\
yading@10 55 }\
yading@10 56 }
yading@10 57
yading@10 58 /**
yading@10 59 * @name Predefined functions for printing tables
yading@10 60 *
yading@10 61 * @{
yading@10 62 */
yading@10 63 void write_int8_t_array (const int8_t *, int);
yading@10 64 void write_uint8_t_array (const uint8_t *, int);
yading@10 65 void write_uint16_t_array (const uint16_t *, int);
yading@10 66 void write_uint32_t_array (const uint32_t *, int);
yading@10 67 void write_float_array (const float *, int);
yading@10 68 void write_int8_t_2d_array (const void *, int, int);
yading@10 69 void write_uint8_t_2d_array (const void *, int, int);
yading@10 70 void write_uint32_t_2d_array(const void *, int, int);
yading@10 71 void write_float_2d_array (const void *, int, int);
yading@10 72 /** @} */ // end of printfuncs group
yading@10 73
yading@10 74 #define WRITE_ARRAY(prefix, type, name) \
yading@10 75 do { \
yading@10 76 const size_t array_size = FF_ARRAY_ELEMS(name); \
yading@10 77 printf(prefix" "#type" "#name"[%zu] = {\n", \
yading@10 78 array_size); \
yading@10 79 write_##type##_array(name, array_size); \
yading@10 80 printf("};\n"); \
yading@10 81 } while(0)
yading@10 82
yading@10 83 #define WRITE_2D_ARRAY(prefix, type, name) \
yading@10 84 do { \
yading@10 85 const size_t array_size1 = FF_ARRAY_ELEMS(name); \
yading@10 86 const size_t array_size2 = FF_ARRAY_ELEMS(name[0]); \
yading@10 87 printf(prefix" "#type" "#name"[%zu][%zu] = {\n", \
yading@10 88 array_size1, array_size2 ); \
yading@10 89 write_##type##_2d_array(name, array_size1, array_size2); \
yading@10 90 printf("};\n"); \
yading@10 91 } while(0)
yading@10 92
yading@10 93
yading@10 94 WRITE_1D_FUNC(int8_t, "%3"PRIi8, 15)
yading@10 95 WRITE_1D_FUNC(uint8_t, "0x%02"PRIx8, 15)
yading@10 96 WRITE_1D_FUNC(uint16_t, "0x%08"PRIx16, 7)
yading@10 97 WRITE_1D_FUNC(uint32_t, "0x%08"PRIx32, 7)
yading@10 98 WRITE_1D_FUNC(float, "%.18e", 3)
yading@10 99
yading@10 100 WRITE_2D_FUNC(int8_t)
yading@10 101 WRITE_2D_FUNC(uint8_t)
yading@10 102 WRITE_2D_FUNC(uint32_t)
yading@10 103 WRITE_2D_FUNC(float)
yading@10 104
yading@10 105 static inline void write_fileheader(void)
yading@10 106 {
yading@10 107 printf("/* This file was automatically generated. */\n");
yading@10 108 printf("#include <stdint.h>\n");
yading@10 109 }
yading@10 110
yading@10 111 #endif /* AVCODEC_TABLEPRINT_H */