Main Page
Related Pages
Modules
Data Structures
Files
Examples
File List
Globals
cmdutils.h
Go to the documentation of this file.
1
/*
2
* Various utilities for command line tools
3
* copyright (c) 2003 Fabrice Bellard
4
*
5
* This file is part of Libav.
6
*
7
* Libav is free software; you can redistribute it and/or
8
* modify it under the terms of the GNU Lesser General Public
9
* License as published by the Free Software Foundation; either
10
* version 2.1 of the License, or (at your option) any later version.
11
*
12
* Libav is distributed in the hope that it will be useful,
13
* but WITHOUT ANY WARRANTY; without even the implied warranty of
14
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
15
* Lesser General Public License for more details.
16
*
17
* You should have received a copy of the GNU Lesser General Public
18
* License along with Libav; if not, write to the Free Software
19
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20
*/
21
22
#ifndef LIBAV_CMDUTILS_H
23
#define LIBAV_CMDUTILS_H
24
25
#include <stdint.h>
26
27
#include "
libavcodec/avcodec.h
"
28
#include "
libavfilter/avfilter.h
"
29
#include "
libavformat/avformat.h
"
30
#include "
libswscale/swscale.h
"
31
35
extern
const
char
program_name
[];
36
40
extern
const
int
program_birth_year
;
41
42
extern
AVCodecContext
*
avcodec_opts
[
AVMEDIA_TYPE_NB
];
43
extern
AVFormatContext
*
avformat_opts
;
44
extern
struct
SwsContext
*
sws_opts
;
45
extern
AVDictionary
*
format_opts
, *
codec_opts
;
46
51
void
init_opts
(
void
);
56
void
uninit_opts
(
void
);
57
62
void
log_callback_help
(
void
* ptr,
int
level
,
const
char
* fmt, va_list vl);
63
68
int
opt_default
(
const
char
*opt,
const
char
*arg);
69
73
int
opt_loglevel
(
const
char
*opt,
const
char
*arg);
74
78
int
opt_timelimit
(
const
char
*opt,
const
char
*arg);
79
93
double
parse_number_or_die
(
const
char
*context,
const
char
*numstr,
int
type,
94
double
min
,
double
max);
95
110
int64_t
parse_time_or_die
(
const
char
*context,
const
char
*timestr,
111
int
is_duration);
112
113
typedef
struct
SpecifierOpt
{
114
char
*
specifier
;
115
union
{
116
uint8_t *
str
;
117
int
i
;
118
int64_t
i64
;
119
float
f
;
120
double
dbl
;
121
}
u
;
122
}
SpecifierOpt
;
123
124
typedef
struct
{
125
const
char
*
name
;
126
int
flags
;
127
#define HAS_ARG 0x0001
128
#define OPT_BOOL 0x0002
129
#define OPT_EXPERT 0x0004
130
#define OPT_STRING 0x0008
131
#define OPT_VIDEO 0x0010
132
#define OPT_AUDIO 0x0020
133
#define OPT_GRAB 0x0040
134
#define OPT_INT 0x0080
135
#define OPT_FLOAT 0x0100
136
#define OPT_SUBTITLE 0x0200
137
#define OPT_INT64 0x0400
138
#define OPT_EXIT 0x0800
139
#define OPT_DATA 0x1000
140
#define OPT_FUNC2 0x2000
141
#define OPT_OFFSET 0x4000
/* option is specified as an offset in a passed optctx */
142
#define OPT_SPEC 0x8000
/* option is to be stored in an array of SpecifierOpt.
143
Implies OPT_OFFSET. Next element after the offset is
144
an int containing element count in the array. */
145
#define OPT_TIME 0x10000
146
#define OPT_DOUBLE 0x20000
147
union
{
148
void
*dst_ptr;
149
int (*func_arg)(
const
char
*,
const
char
*);
150
int (*func2_arg)(
void
*,
const
char
*,
const
char
*);
151
size_t
off
;
152
} u;
153
const
char
*
help
;
154
const
char
*argname;
155
}
OptionDef
;
156
157
void
show_help_options
(
const
OptionDef
*
options
,
const
char
*msg,
int
mask
,
158
int
value);
159
164
void
show_help_children
(
const
AVClass
*
class
,
int
flags
);
165
176
void
parse_options
(
void
*optctx,
int
argc,
char
**argv,
const
OptionDef
*
options
,
177
void
(* parse_arg_function)(
void
*optctx,
const
char
*));
178
184
int
parse_option
(
void
*optctx,
const
char
*opt,
const
char
*arg,
185
const
OptionDef
*options);
186
190
void
parse_loglevel
(
int
argc,
char
**argv,
const
OptionDef
*options);
191
201
int
check_stream_specifier
(
AVFormatContext
*s,
AVStream
*st,
const
char
*spec);
202
213
AVDictionary
*
filter_codec_opts
(
AVDictionary
*opts,
enum
CodecID
codec_id
,
214
AVFormatContext
*s,
AVStream
*st);
215
227
AVDictionary
**
setup_find_stream_info_opts
(
AVFormatContext
*s,
228
AVDictionary
*codec_opts);
229
239
void
print_error
(
const
char
*filename,
int
err);
240
246
void
show_banner
(
void
);
247
253
void
show_version
(
void
);
254
259
void
show_license
(
void
);
260
265
void
show_formats
(
void
);
266
271
void
show_codecs
(
void
);
272
277
void
show_filters
(
void
);
278
283
void
show_bsfs
(
void
);
284
289
void
show_protocols
(
void
);
290
295
void
show_pix_fmts
(
void
);
296
301
int
show_sample_fmts
(
const
char
*opt,
const
char
*arg);
302
307
int
read_yesno
(
void
);
308
318
int
cmdutils_read_file
(
const
char
*filename,
char
**bufptr,
size_t
*
size
);
319
320
typedef
struct
{
321
int64_t num_faulty_pts;
322
int64_t num_faulty_dts;
323
int64_t last_pts;
324
int64_t last_dts;
325
}
PtsCorrectionContext
;
326
330
void
init_pts_correction
(
PtsCorrectionContext
*ctx);
331
342
int64_t
guess_correct_pts
(
PtsCorrectionContext
*ctx, int64_t pts, int64_t dts);
343
361
FILE *
get_preset_file
(
char
*filename,
size_t
filename_size,
362
const
char
*preset_name,
int
is_path,
const
char
*codec_name);
363
364
typedef
struct
{
365
enum
PixelFormat
pix_fmt
;
366
}
AVSinkContext
;
367
368
extern
AVFilter
avsink
;
369
376
int
get_filtered_video_frame
(
AVFilterContext
*sink,
AVFrame
*frame,
377
AVFilterBufferRef
**picref,
AVRational
*pts_tb);
378
383
void
exit_program
(
int
ret);
384
393
void
*
grow_array
(
void
*array,
int
elem_size,
int
*
size
,
int
new_size);
394
395
#endif
/* LIBAV_CMDUTILS_H */