FFmpeg
libavcodec
tableprint_vlc.h
Go to the documentation of this file.
1
/*
2
* Helpers for generating hard-coded VLC tables
3
*
4
* Copyright (c) 2014 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_VLC_H
24
#define AVCODEC_TABLEPRINT_VLC_H
25
26
#define FFMPEG_CONFIG_H
27
#define AVUTIL_LOG_H
28
#define av_log(a, ...) while(0)
29
#define ff_dlog(a, ...) while(0)
30
#define AVUTIL_MEM_H
31
#define av_malloc(s) NULL
32
#define av_malloc_array(a, b) NULL
33
#define av_realloc_f(p, o, n) NULL
34
#define av_free(p) while(0)
35
#define av_freep(p) while(0)
36
#define AVUTIL_INTERNAL_H
37
#define avpriv_request_sample(...)
38
#include "
tableprint.h
"
39
#include "
get_bits.h
"
40
#include "
mathtables.c
"
41
#include "
libavutil/reverse.c
"
42
#include "
bitstream.c
"
43
44
#define REPLACE_DEFINE2(type) write_##type##_array
45
#define REPLACE_DEFINE(type) REPLACE_DEFINE2(type)
46
static
void
write_VLC_TYPE_array
(
const
VLC_TYPE
*p,
int
s
) {
47
REPLACE_DEFINE
(
VLC_TYPE
)(p,
s
);
48
}
49
50
WRITE_2D_FUNC
(
VLC_TYPE
)
51
52
static
void
write_vlc_type
(const
VLC
*vlc,
VLC_TYPE
(*base_table)[2], const
char
*base_table_name)
53
{
54
printf
(
" .bits = %i,\n"
, vlc->bits);
55
// Unfortunately need to cast away const currently
56
printf
(
" .table = (VLC_TYPE (*)[2])(%s + 0x%x),\n"
, base_table_name, (
int
)(vlc->table - base_table));
57
printf
(
" .table_size = 0x%x,\n"
, vlc->table_size);
58
printf
(
" .table_allocated = 0x%x,\n"
, vlc->table_allocated);
59
}
60
61
#define WRITE_VLC_TYPE(prefix, name, base_table) \
62
do { \
63
printf(prefix" VLC "#name" = {\n"); \
64
write_vlc_type(&name, base_table, #base_table); \
65
printf("};\n"); \
66
} while(0)
67
68
#define WRITE_VLC_ARRAY(prefix, name, base_table) \
69
do { \
70
int i; \
71
const size_t array_size = FF_ARRAY_ELEMS(name); \
72
printf(prefix" VLC "#name"[%"FMT"] = {{\n", \
73
array_size); \
74
for (i = 0; i < array_size; i++) { \
75
write_vlc_type(name + i, \
76
base_table, #base_table); \
77
if (i != array_size - 1) printf("}, {\n"); \
78
} \
79
printf("}};\n"); \
80
} while(0)
81
82
#endif
/* AVCODEC_TABLEPRINT_VLC_H */
tableprint.h
REPLACE_DEFINE
#define REPLACE_DEFINE(type)
Definition:
tableprint_vlc.h:45
VLC_TYPE
#define VLC_TYPE
Definition:
vlc.h:24
s
#define s(width, name)
Definition:
cbs_vp9.c:257
get_bits.h
write_VLC_TYPE_array
static void write_VLC_TYPE_array(const VLC_TYPE *p, int s)
Definition:
tableprint_vlc.h:46
mathtables.c
printf
printf("static const uint8_t my_array[100] = {\n")
write_vlc_type
static void write_vlc_type(const VLC *vlc, VLC_TYPE(*base_table)[2], const char *base_table_name)
Definition:
tableprint_vlc.h:52
bitstream.c
reverse.c
VLC
Definition:
vlc.h:26
WRITE_2D_FUNC
#define WRITE_2D_FUNC(type)
Definition:
tableprint.h:46
Generated on Wed Aug 24 2022 21:37:55 for FFmpeg by
1.8.17