00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023 #ifndef AVCODEC_TABLEPRINT_H
00024 #define AVCODEC_TABLEPRINT_H
00025
00026 #include <stdint.h>
00027 #include <stdio.h>
00028 #include "libavutil/common.h"
00029
00030 #define WRITE_1D_FUNC_ARGV(type, linebrk, fmtstr, ...)\
00031 void write_##type##_array(const type *data, int len)\
00032 {\
00033 int i;\
00034 printf(" ");\
00035 for (i = 0; i < len - 1; i++) {\
00036 printf(" "fmtstr",", __VA_ARGS__);\
00037 if ((i & linebrk) == linebrk) printf("\n ");\
00038 }\
00039 printf(" "fmtstr"\n", __VA_ARGS__);\
00040 }
00041
00042 #define WRITE_1D_FUNC(type, fmtstr, linebrk)\
00043 WRITE_1D_FUNC_ARGV(type, linebrk, fmtstr, data[i])
00044
00045 #define WRITE_2D_FUNC(type)\
00046 void write_##type##_2d_array(const void *arg, int len, int len2)\
00047 {\
00048 const type *data = arg;\
00049 int i;\
00050 printf(" {\n");\
00051 for (i = 0; i < len; i++) {\
00052 write_##type##_array(data + i * len2, len2);\
00053 printf(i == len - 1 ? " }\n" : " }, {\n");\
00054 }\
00055 }
00056
00062 void write_int8_t_array (const int8_t *, int);
00063 void write_uint8_t_array (const uint8_t *, int);
00064 void write_uint16_t_array (const uint16_t *, int);
00065 void write_uint32_t_array (const uint32_t *, int);
00066 void write_float_array (const float *, int);
00067 void write_int8_t_2d_array (const void *, int, int);
00068 void write_uint8_t_2d_array (const void *, int, int);
00069 void write_uint32_t_2d_array(const void *, int, int);
00070 void write_float_2d_array (const void *, int, int);
00072
00074 void write_fileheader(void);
00075
00076 #define WRITE_ARRAY(prefix, type, name) \
00077 do { \
00078 const size_t array_size = FF_ARRAY_ELEMS(name); \
00079 printf(prefix" "#type" "#name"[%zu] = {\n", \
00080 array_size); \
00081 write_##type##_array(name, array_size); \
00082 printf("};\n"); \
00083 } while(0)
00084
00085 #define WRITE_2D_ARRAY(prefix, type, name) \
00086 do { \
00087 const size_t array_size1 = FF_ARRAY_ELEMS(name); \
00088 const size_t array_size2 = FF_ARRAY_ELEMS(name[0]); \
00089 printf(prefix" "#type" "#name"[%zu][%zu] = {\n", \
00090 array_size1, array_size2 ); \
00091 write_##type##_2d_array(name, array_size1, array_size2); \
00092 printf("};\n"); \
00093 } while(0)
00094
00095 #endif