FFmpeg
Main Page
Related Pages
Modules
Namespaces
Data Structures
Files
Examples
File List
Globals
All
Data Structures
Namespaces
Files
Functions
Variables
Typedefs
Enumerations
Enumerator
Macros
Groups
Pages
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, ...)
29
#define av_dlog(a, ...)
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)
35
#define av_freep(p)
36
#define AVCODEC_AVCODEC_H
37
#include "
tableprint.h
"
38
#include "
get_bits.h
"
39
#include "
mathtables.c
"
40
#include "
bitstream.c
"
41
42
#define REPLACE_DEFINE2(type) write_##type##_array
43
#define REPLACE_DEFINE(type) REPLACE_DEFINE2(type)
44
static
void
write_VLC_TYPE_array
(
const
VLC_TYPE
*p,
int
s
) {
45
REPLACE_DEFINE
(
VLC_TYPE
)(p,
s
);
46
}
47
48
WRITE_2D_FUNC
(
VLC_TYPE
)
49
50
static
void
write_vlc_type
(const
VLC
*vlc,
VLC_TYPE
(*base_table)[2], const
char
*base_table_name)
51
{
52
printf(
" .bits = %i,\n"
, vlc->bits);
53
// Unfortunately need to cast away const currently
54
printf(
" .table = (VLC_TYPE (*)[2])(%s + 0x%x),\n"
, base_table_name, (
int
)(vlc->table - base_table));
55
printf(
" .table_size = 0x%x,\n"
, vlc->table_size);
56
printf(
" .table_allocated = 0x%x,\n"
, vlc->table_allocated);
57
}
58
59
#define WRITE_VLC_TYPE(prefix, name, base_table) \
60
do { \
61
printf(prefix" VLC "#name" = {\n"); \
62
write_vlc_type(&name, base_table, #base_table); \
63
printf("};\n"); \
64
} while(0)
65
66
#define WRITE_VLC_ARRAY(prefix, name, base_table) \
67
do { \
68
int i; \
69
const size_t array_size = FF_ARRAY_ELEMS(name); \
70
printf(prefix" VLC "#name"[%"FMT"] = {{\n", \
71
array_size); \
72
for (i = 0; i < array_size; i++) { \
73
write_vlc_type(name + i, \
74
base_table, #base_table); \
75
if (i != array_size - 1) printf("}, {\n"); \
76
} \
77
printf("}};\n"); \
78
} while(0)
79
80
#endif
/* AVCODEC_TABLEPRINT_VLC_H */
Generated on Sun Mar 8 2015 02:35:00 for FFmpeg by
1.8.2