Libav
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
, *
resample_opts
;
46
50
void
register_exit
(
void
(*cb)(
int
ret));
51
55
void
exit_program
(
int
ret);
56
61
void
init_opts
(
void
);
66
void
uninit_opts
(
void
);
67
72
void
log_callback_help
(
void
* ptr,
int
level
,
const
char
* fmt, va_list vl);
73
77
int
opt_cpuflags
(
void
*optctx,
const
char
*opt,
const
char
*arg);
78
83
int
opt_default
(
void
*optctx,
const
char
*opt,
const
char
*arg);
84
88
int
opt_loglevel
(
void
*optctx,
const
char
*opt,
const
char
*arg);
89
93
int
opt_timelimit
(
void
*optctx,
const
char
*opt,
const
char
*arg);
94
108
double
parse_number_or_die
(
const
char
*context,
const
char
*numstr,
int
type,
109
double
min
,
double
max);
110
125
int64_t
parse_time_or_die
(
const
char
*context,
const
char
*timestr,
126
int
is_duration);
127
128
typedef
struct
SpecifierOpt
{
129
char
*
specifier
;
130
union
{
131
uint8_t
*
str
;
132
int
i
;
133
int64_t
i64
;
134
float
f
;
135
double
dbl
;
136
}
u
;
137
}
SpecifierOpt
;
138
139
typedef
struct
OptionDef
{
140
const
char
*
name
;
141
int
flags
;
142
#define HAS_ARG 0x0001
143
#define OPT_BOOL 0x0002
144
#define OPT_EXPERT 0x0004
145
#define OPT_STRING 0x0008
146
#define OPT_VIDEO 0x0010
147
#define OPT_AUDIO 0x0020
148
#define OPT_INT 0x0080
149
#define OPT_FLOAT 0x0100
150
#define OPT_SUBTITLE 0x0200
151
#define OPT_INT64 0x0400
152
#define OPT_EXIT 0x0800
153
#define OPT_DATA 0x1000
154
#define OPT_PERFILE 0x2000
/* the option is per-file (currently avconv-only).
155
implied by OPT_OFFSET or OPT_SPEC */
156
#define OPT_OFFSET 0x4000
/* option is specified as an offset in a passed optctx */
157
#define OPT_SPEC 0x8000
/* option is to be stored in an array of SpecifierOpt.
158
Implies OPT_OFFSET. Next element after the offset is
159
an int containing element count in the array. */
160
#define OPT_TIME 0x10000
161
#define OPT_DOUBLE 0x20000
162
#define OPT_INPUT 0x40000
163
#define OPT_OUTPUT 0x80000
164
union
{
165
void
*
dst_ptr
;
166
int (*
func_arg
)(
void
*,
const
char
*,
const
char
*);
167
size_t
off
;
168
}
u
;
169
const
char
*
help
;
170
const
char
*
argname
;
171
}
OptionDef
;
172
182
void
show_help_options
(
const
OptionDef
*
options
,
const
char
*msg,
int
req_flags,
183
int
rej_flags,
int
alt_flags);
184
189
void
show_help_children
(
const
AVClass
*
class
,
int
flags
);
190
195
void
show_help_default
(
const
char
*opt,
const
char
*arg);
196
200
int
show_help
(
void
*optctx,
const
char
*opt,
const
char
*arg);
201
214
void
parse_options
(
void
*optctx,
int
argc,
char
**argv,
const
OptionDef
*
options
,
215
void
(* parse_arg_function)(
void
*optctx,
const
char
*));
216
222
int
parse_option
(
void
*optctx,
const
char
*opt,
const
char
*arg,
223
const
OptionDef
*options);
224
230
typedef
struct
Option
{
231
const
OptionDef
*
opt
;
232
const
char
*
key
;
233
const
char
*
val
;
234
}
Option
;
235
236
typedef
struct
OptionGroupDef
{
238
const
char
*
name
;
243
const
char
*
sep
;
248
int
flags
;
249
}
OptionGroupDef
;
250
251
typedef
struct
OptionGroup
{
252
const
OptionGroupDef
*
group_def
;
253
const
char
*
arg
;
254
255
Option
*
opts
;
256
int
nb_opts
;
257
258
AVDictionary
*
codec_opts
;
259
AVDictionary
*
format_opts
;
260
AVDictionary
*
resample_opts
;
261
struct
SwsContext
*
sws_opts
;
262
}
OptionGroup
;
263
268
typedef
struct
OptionGroupList
{
269
const
OptionGroupDef
*
group_def
;
270
271
OptionGroup
*
groups
;
272
int
nb_groups
;
273
}
OptionGroupList
;
274
275
typedef
struct
OptionParseContext
{
276
OptionGroup
global_opts
;
277
278
OptionGroupList
*
groups
;
279
int
nb_groups
;
280
281
/* parsing state */
282
OptionGroup
cur_group
;
283
}
OptionParseContext
;
284
290
int
parse_optgroup
(
void
*optctx,
OptionGroup
*
g
);
291
310
int
split_commandline
(
OptionParseContext
*
octx
,
int
argc,
char
*argv[],
311
const
OptionDef
*options,
312
const
OptionGroupDef
*
groups
,
int
nb_groups);
313
317
void
uninit_parse_context
(
OptionParseContext
*
octx
);
318
322
void
parse_loglevel
(
int
argc,
char
**argv,
const
OptionDef
*options);
323
327
int
locate_option
(
int
argc,
char
**argv,
const
OptionDef
*options,
328
const
char
*optname);
329
339
int
check_stream_specifier
(
AVFormatContext
*s,
AVStream
*st,
const
char
*spec);
340
355
AVDictionary
*
filter_codec_opts
(
AVDictionary
*opts,
enum
AVCodecID
codec_id
,
356
AVFormatContext
*s,
AVStream
*st,
AVCodec
*codec);
357
369
AVDictionary
**
setup_find_stream_info_opts
(
AVFormatContext
*s,
370
AVDictionary
*codec_opts);
371
381
void
print_error
(
const
char
*filename,
int
err);
382
388
void
show_banner
(
void
);
389
395
int
show_version
(
void
*optctx,
const
char
*opt,
const
char
*arg);
396
401
int
show_license
(
void
*optctx,
const
char
*opt,
const
char
*arg);
402
407
int
show_formats
(
void
*optctx,
const
char
*opt,
const
char
*arg);
408
413
int
show_codecs
(
void
*optctx,
const
char
*opt,
const
char
*arg);
414
419
int
show_decoders
(
void
*optctx,
const
char
*opt,
const
char
*arg);
420
425
int
show_encoders
(
void
*optctx,
const
char
*opt,
const
char
*arg);
426
431
int
show_filters
(
void
*optctx,
const
char
*opt,
const
char
*arg);
432
437
int
show_bsfs
(
void
*optctx,
const
char
*opt,
const
char
*arg);
438
443
int
show_protocols
(
void
*optctx,
const
char
*opt,
const
char
*arg);
444
449
int
show_pix_fmts
(
void
*optctx,
const
char
*opt,
const
char
*arg);
450
455
int
show_sample_fmts
(
void
*optctx,
const
char
*opt,
const
char
*arg);
456
461
int
read_yesno
(
void
);
462
473
int
cmdutils_read_file
(
const
char
*filename,
char
**bufptr,
size_t
*
size
);
474
475
typedef
struct
PtsCorrectionContext
{
476
int64_t
num_faulty_pts
;
477
int64_t
num_faulty_dts
;
478
int64_t
last_pts
;
479
int64_t
last_dts
;
480
}
PtsCorrectionContext
;
481
485
void
init_pts_correction
(
PtsCorrectionContext
*ctx);
486
498
int64_t
guess_correct_pts
(
PtsCorrectionContext
*ctx, int64_t pts, int64_t dts);
499
517
FILE *
get_preset_file
(
char
*filename,
size_t
filename_size,
518
const
char
*preset_name,
int
is_path,
const
char
*codec_name);
519
530
void
*
grow_array
(
void
*array,
int
elem_size,
int
*
size
,
int
new_size);
531
535
const
char
*
media_type_string
(
enum
AVMediaType
media_type);
536
537
#define GROW_ARRAY(array, nb_elems)\
538
array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
539
540
#define GET_PIX_FMT_NAME(pix_fmt)\
541
const char *name = av_get_pix_fmt_name(pix_fmt);
542
543
#define GET_SAMPLE_FMT_NAME(sample_fmt)\
544
const char *name = av_get_sample_fmt_name(sample_fmt)
545
546
#define GET_SAMPLE_RATE_NAME(rate)\
547
char name[16];\
548
snprintf(name, sizeof(name), "%d", rate);
549
550
#define GET_CH_LAYOUT_NAME(ch_layout)\
551
char name[16];\
552
snprintf(name, sizeof(name), "0x%"PRIx64, ch_layout);
553
554
#define GET_CH_LAYOUT_DESC(ch_layout)\
555
char name[128];\
556
av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
557
558
#endif
/* LIBAV_CMDUTILS_H */
Generated on Thu Sep 30 2021 23:03:07 for Libav by
1.8.1.2