Skip to content
Newer
Older
100644 603 lines (522 sloc) 18.9 KB
f5a9018 @DonDiego Add missing license headers.
DonDiego authored
1 /*
2 * Various utilities for command line tools
3 * copyright (c) 2003 Fabrice Bellard
4 *
5 * This file is part of FFmpeg.
6 *
7 * FFmpeg 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 * FFmpeg 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 FFmpeg; if not, write to the Free Software
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
20 */
21
5b21bda @DonDiego Add FFMPEG_ prefix to all multiple inclusion guards.
DonDiego authored
22 #ifndef FFMPEG_CMDUTILS_H
23 #define FFMPEG_CMDUTILS_H
01310af added ffplay utility
Fabrice Bellard authored
24
ea91e77 @DonDiego Clean up #includes in cmdutils.h.
DonDiego authored
25 #include <stdint.h>
26
8dd435f @michaelni cmdutils: include config.h, fix "is not defined" warning due to CONFI…
michaelni authored
27 #include "config.h"
95137bb @DonDiego Fix 'make checkheaders', based on a patch by Diego Pettenò, flameeyes…
DonDiego authored
28 #include "libavcodec/avcodec.h"
ea91e77 @DonDiego Clean up #includes in cmdutils.h.
DonDiego authored
29 #include "libavfilter/avfilter.h"
95137bb @DonDiego Fix 'make checkheaders', based on a patch by Diego Pettenò, flameeyes…
DonDiego authored
30 #include "libavformat/avformat.h"
31 #include "libswscale/swscale.h"
f0a838e @DonDiego Add missing #includes to fix 'make checkheaders'.
DonDiego authored
32
e116977 @johnpeeb cmdutils: replace usages of "#ifdef __MINGW32__" with "#ifdef _WIN32"…
johnpeeb authored
33 #ifdef _WIN32
25c32d0 @cehoyos cmdutils: move "#undef main" from ffplay.c to cmdutils.h
cehoyos authored
34 #undef main /* We don't want SDL to override our main() */
35 #endif
36
60b5a74 Export and document in cmdutils.h the function parse_number_or_die().
Stefano Sabatini authored
37 /**
64555bd @michaelni Do not pass program_name as argument to show_version(), this allows some
michaelni authored
38 * program name, defined by the program for show_version().
39 */
40 extern const char program_name[];
41
42 /**
ea9c581 Simplify show_banner() so that it does not require arguments, similar
Stefano Sabatini authored
43 * program birth year, defined by the program for show_banner()
44 */
45 extern const int program_birth_year;
46
72415b2 Define AVMediaType enum, and use it instead of enum CodecType, which
Stefano Sabatini authored
47 extern AVCodecContext *avcodec_opts[AVMEDIA_TYPE_NB];
85663ef @michaelni Move opt_default() and set_context_opts() to cmdutils so it can be us…
michaelni authored
48 extern AVFormatContext *avformat_opts;
49 extern struct SwsContext *sws_opts;
ad89952 @michaelni ffmpeg: use a AVDictionary instead of the context to move swr paramet…
michaelni authored
50 extern AVDictionary *swr_opts;
5c7db09 @justinruggles avconv: pass libavresample options to AVFilterGraph
justinruggles authored
51 extern AVDictionary *format_opts, *codec_opts, *resample_opts;
b4c89c9 Allow hiding the banner.
Carl Eugen Hoyos authored
52 extern int hide_banner;
85663ef @michaelni Move opt_default() and set_context_opts() to cmdutils so it can be us…
michaelni authored
53
54 /**
636ced8 @lu-zero cmdutils: wrap exit explicitly
lu-zero authored
55 * Register a program-specific cleanup routine.
56 */
57 void register_exit(void (*cb)(int ret));
58
59 /**
60 * Wraps exit with a program-specific cleanup routine.
61 */
85698be @lu-zero cmdutils: Mark exit_program as av_noreturn
lu-zero authored
62 void exit_program(int ret) av_noreturn;
636ced8 @lu-zero cmdutils: wrap exit explicitly
lu-zero authored
63
64 /**
a5c33fa @rdoeffinger Add init and uninit functions to cmdutils, reduces code duplication
rdoeffinger authored
65 * Initialize the cmdutils option system, in particular
66 * allocate the *_opts contexts.
67 */
68 void init_opts(void);
69 /**
70 * Uninitialize the cmdutils option system, in particular
71 * free the *_opts contexts and their contents.
72 */
73 void uninit_opts(void);
74
75 /**
1790d3b Move log_callback_help to cmdutils.[hc], for allowing sharing.
Stefano Sabatini authored
76 * Trivial log callback.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
77 * Only suitable for opt_help and similar since it lacks prefix handling.
1790d3b Move log_callback_help to cmdutils.[hc], for allowing sharing.
Stefano Sabatini authored
78 */
79 void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
80
81 /**
cf47a6a @michaelni Merge commit 'f825d42bccdb9f89669a586951de7f66a81e80a5'
michaelni authored
82 * Override the cpuflags.
f825d42 @lu-zero avplay: Accept cpuflags option
lu-zero authored
83 */
84 int opt_cpuflags(void *optctx, const char *opt, const char *arg);
85
86 /**
b743889 Fix typo: explixitly -> explicitly.
Stefano Sabatini authored
87 * Fallback for options that are not explicitly handled, these will be
85663ef @michaelni Move opt_default() and set_context_opts() to cmdutils so it can be us…
michaelni authored
88 * parsed through AVOptions.
89 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
90 int opt_default(void *optctx, const char *opt, const char *arg);
85663ef @michaelni Move opt_default() and set_context_opts() to cmdutils so it can be us…
michaelni authored
91
ea9c581 Simplify show_banner() so that it does not require arguments, similar
Stefano Sabatini authored
92 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
93 * Set the libav* libraries log level.
4c97a6f Move opt_loglevel() from ffmpeg.c to cmdutils.c.
Stefano Sabatini authored
94 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
95 int opt_loglevel(void *optctx, const char *opt, const char *arg);
4c97a6f Move opt_loglevel() from ffmpeg.c to cmdutils.c.
Stefano Sabatini authored
96
337ce55 fftools: add -report option.
Nicolas George authored
97 int opt_report(const char *opt);
841bf0e @michaelni cmdutils: allow specifying the file for -report
michaelni authored
98
98298eb @michaelni Merge commit 'ec36aa69448f20a78d8c4588265022e0b2272ab5'
michaelni authored
99 int opt_max_alloc(void *optctx, const char *opt, const char *arg);
c48f67f @michaelni ff*: add -max_alloc command line option
michaelni authored
100
98298eb @michaelni Merge commit 'ec36aa69448f20a78d8c4588265022e0b2272ab5'
michaelni authored
101 int opt_codec_debug(void *optctx, const char *opt, const char *arg);
e9adeee @michaelni cmdutils: Fix loglevel for -debug
michaelni authored
102
64f73ac cmdutils & opencl: add -opencl_bench option to test and show availabl…
Lenny Wang authored
103 #if CONFIG_OPENCL
d757f75 @highgod cmdutils: add opencl command line options to ffmpeg
highgod authored
104 int opt_opencl(void *optctx, const char *opt, const char *arg);
105
64f73ac cmdutils & opencl: add -opencl_bench option to test and show availabl…
Lenny Wang authored
106 int opt_opencl_bench(void *optctx, const char *opt, const char *arg);
107 #endif
108
4c97a6f Move opt_loglevel() from ffmpeg.c to cmdutils.c.
Stefano Sabatini authored
109 /**
ffcc6e2 @mansr Add -timelimit option
mansr authored
110 * Limit the execution time.
111 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
112 int opt_timelimit(void *optctx, const char *opt, const char *arg);
ffcc6e2 @mansr Add -timelimit option
mansr authored
113
114 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
115 * Parse a string and return its corresponding value as a double.
116 * Exit from the application if the string cannot be correctly
1506750 @DonDiego Improve wording/grammar of Doxygen comments.
DonDiego authored
117 * parsed or the corresponding value is invalid.
60b5a74 Export and document in cmdutils.h the function parse_number_or_die().
Stefano Sabatini authored
118 *
119 * @param context the context of the value to be set (e.g. the
da9cea7 @DonDiego Fix a bunch of common typos.
DonDiego authored
120 * corresponding command line option name)
60b5a74 Export and document in cmdutils.h the function parse_number_or_die().
Stefano Sabatini authored
121 * @param numstr the string to be parsed
122 * @param type the type (OPT_INT64 or OPT_FLOAT) as which the
123 * string should be parsed
1506750 @DonDiego Improve wording/grammar of Doxygen comments.
DonDiego authored
124 * @param min the minimum valid accepted value
125 * @param max the maximum valid accepted value
60b5a74 Export and document in cmdutils.h the function parse_number_or_die().
Stefano Sabatini authored
126 */
0184bbe @gnarula avprobe, cmdutils: K&R formatting cosmetics
gnarula authored
127 double parse_number_or_die(const char *context, const char *numstr, int type,
128 double min, double max);
60b5a74 Export and document in cmdutils.h the function parse_number_or_die().
Stefano Sabatini authored
129
7542157 Export parse_time_or_die from ffmpeg.c to cmdutils.c
Stefano Sabatini authored
130 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
131 * Parse a string specifying a time and return its corresponding
132 * value as a number of microseconds. Exit from the application if
7542157 Export parse_time_or_die from ffmpeg.c to cmdutils.c
Stefano Sabatini authored
133 * the string cannot be correctly parsed.
134 *
135 * @param context the context of the value to be set (e.g. the
da9cea7 @DonDiego Fix a bunch of common typos.
DonDiego authored
136 * corresponding command line option name)
7542157 Export parse_time_or_die from ffmpeg.c to cmdutils.c
Stefano Sabatini authored
137 * @param timestr the string to be parsed
bf7e799 Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
Stefano Sabatini authored
138 * @param is_duration a flag which tells how to interpret timestr, if
139 * not zero timestr is interpreted as a duration, otherwise as a
7542157 Export parse_time_or_die from ffmpeg.c to cmdutils.c
Stefano Sabatini authored
140 * date
141 *
3ac85be @richardpl lavf: remove nonexistent symbols
richardpl authored
142 * @see av_parse_time()
7542157 Export parse_time_or_die from ffmpeg.c to cmdutils.c
Stefano Sabatini authored
143 */
0184bbe @gnarula avprobe, cmdutils: K&R formatting cosmetics
gnarula authored
144 int64_t parse_time_or_die(const char *context, const char *timestr,
145 int is_duration);
7542157 Export parse_time_or_die from ffmpeg.c to cmdutils.c
Stefano Sabatini authored
146
6361c5e @elenril cmdutils: allow storing per-stream/chapter/.... options in a generic way
elenril authored
147 typedef struct SpecifierOpt {
148 char *specifier; /**< stream/chapter/program/... specifier */
149 union {
150 uint8_t *str;
151 int i;
152 int64_t i64;
153 float f;
33f75d7 @elenril avconv: move ts scale to options context.
elenril authored
154 double dbl;
6361c5e @elenril cmdutils: allow storing per-stream/chapter/.... options in a generic way
elenril authored
155 } u;
156 } SpecifierOpt;
157
e4cbf75 @DonDiego Give all anonymously typedeffed structs in headers a name
DonDiego authored
158 typedef struct OptionDef {
01310af added ffplay utility
Fabrice Bellard authored
159 const char *name;
160 int flags;
161 #define HAS_ARG 0x0001
162 #define OPT_BOOL 0x0002
163 #define OPT_EXPERT 0x0004
164 #define OPT_STRING 0x0008
02d504a more sections in help - copyright fixes
Fabrice Bellard authored
165 #define OPT_VIDEO 0x0010
166 #define OPT_AUDIO 0x0020
26d4f26 @michaelni OPT_INT
michaelni authored
167 #define OPT_INT 0x0080
394c4d7 @michaelni 1000l (copy & paste)
michaelni authored
168 #define OPT_FLOAT 0x0100
ae27975 subtitle option
Fabrice Bellard authored
169 #define OPT_SUBTITLE 0x0200
eb8bc57 cmdutils: remove OPT_FUNC2
Stefano Sabatini authored
170 #define OPT_INT64 0x0400
171 #define OPT_EXIT 0x0800
172 #define OPT_DATA 0x1000
98298eb @michaelni Merge commit 'ec36aa69448f20a78d8c4588265022e0b2272ab5'
michaelni authored
173 #define OPT_PERFILE 0x2000 /* the option is per-file (currently ffmpeg-only).
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
174 implied by OPT_OFFSET or OPT_SPEC */
7cc8d63 @elenril cmdutils: add support for caller-provided option context.
elenril authored
175 #define OPT_OFFSET 0x4000 /* option is specified as an offset in a passed optctx */
6361c5e @elenril cmdutils: allow storing per-stream/chapter/.... options in a generic way
elenril authored
176 #define OPT_SPEC 0x8000 /* option is to be stored in an array of SpecifierOpt.
177 Implies OPT_OFFSET. Next element after the offset is
178 an int containing element count in the array. */
6b779cc @elenril avconv: move start_time, recording_time and input_ts_offset to option…
elenril authored
179 #define OPT_TIME 0x10000
33f75d7 @elenril avconv: move ts scale to options context.
elenril authored
180 #define OPT_DOUBLE 0x20000
9d3009c @elenril avconv: print an error on applying options of the wrong type.
elenril authored
181 #define OPT_INPUT 0x40000
182 #define OPT_OUTPUT 0x80000
ae27975 subtitle option
Fabrice Bellard authored
183 union {
7efe05a @elenril cmdutils: declare only one pointer type in OptionDef
elenril authored
184 void *dst_ptr;
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
185 int (*func_arg)(void *, const char *, const char *);
7cc8d63 @elenril cmdutils: add support for caller-provided option context.
elenril authored
186 size_t off;
01310af added ffplay utility
Fabrice Bellard authored
187 } u;
188 const char *help;
189 const char *argname;
190 } OptionDef;
191
7c50121 @elenril cmdutils: change semantics of show_help_options() and document it.
elenril authored
192 /**
193 * Print help for all options matching specified flags.
194 *
195 * @param options a list of options
196 * @param msg title of this group. Only printed if at least one option matches.
197 * @param req_flags print only options which have all those flags set.
198 * @param rej_flags don't print options which have any of those flags set.
f9fada2 @elenril avconv: split printing "main options" into global and per-file.
elenril authored
199 * @param alt_flags print only options that have at least one of those flags set
7c50121 @elenril cmdutils: change semantics of show_help_options() and document it.
elenril authored
200 */
201 void show_help_options(const OptionDef *options, const char *msg, int req_flags,
f9fada2 @elenril avconv: split printing "main options" into global and per-file.
elenril authored
202 int rej_flags, int alt_flags);
60a9966 Make cmdutils.c:parse_options accept as argument a function to parse
Stefano Sabatini authored
203
204 /**
7a6cd99 @elenril cmdutils/avtools: simplify show_help() by using av_opt_child_class_ne…
elenril authored
205 * Show help for all options with given flags in class and all its
206 * children.
207 */
208 void show_help_children(const AVClass *class, int flags);
209
210 /**
7d8ad6c @ubitux cmdutils: avtool -> fftool
ubitux authored
211 * Per-fftool specific help handler. Implemented in each
212 * fftool, called by show_help().
a3ad68d @elenril cmdutils: extend -h to allow printing codec details.
elenril authored
213 */
214 void show_help_default(const char *opt, const char *arg);
215
216 /**
7d8ad6c @ubitux cmdutils: avtool -> fftool
ubitux authored
217 * Generic -h handler common to all fftools.
a3ad68d @elenril cmdutils: extend -h to allow printing codec details.
elenril authored
218 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
219 int show_help(void *optctx, const char *opt, const char *arg);
a3ad68d @elenril cmdutils: extend -h to allow printing codec details.
elenril authored
220
221 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
222 * Parse the command line arguments.
7cc8d63 @elenril cmdutils: add support for caller-provided option context.
elenril authored
223 *
224 * @param optctx an opaque options context
02e4275 @DonDiego avconv_opt, cmdutils: Add missing function parameter Doxygen
DonDiego authored
225 * @param argc number of command line arguments
226 * @param argv values of command line arguments
60a9966 Make cmdutils.c:parse_options accept as argument a function to parse
Stefano Sabatini authored
227 * @param options Array with the definitions required to interpret every
0baf34d @DonDiego Remove angular brackets from Doxygen comments; Doxygen confuses them …
DonDiego authored
228 * option of the form: -option_name [argument]
60a9966 Make cmdutils.c:parse_options accept as argument a function to parse
Stefano Sabatini authored
229 * @param parse_arg_function Name of the function called to process every
230 * argument without a leading option name flag. NULL if such arguments do
231 * not have to be processed.
232 */
7cc8d63 @elenril cmdutils: add support for caller-provided option context.
elenril authored
233 void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
234 void (* parse_arg_function)(void *optctx, const char*));
60a9966 Make cmdutils.c:parse_options accept as argument a function to parse
Stefano Sabatini authored
235
8d787f8 Document cmdutils.c:print_error().
Stefano Sabatini authored
236 /**
2f8e586 @elenril cmdutils: split per-option code out of parse_options().
elenril authored
237 * Parse one given option.
238 *
239 * @return on success 1 if arg was consumed, 0 otherwise; negative number on error
240 */
0184bbe @gnarula avprobe, cmdutils: K&R formatting cosmetics
gnarula authored
241 int parse_option(void *optctx, const char *opt, const char *arg,
242 const OptionDef *options);
60a9966 Make cmdutils.c:parse_options accept as argument a function to parse
Stefano Sabatini authored
243
8d787f8 Document cmdutils.c:print_error().
Stefano Sabatini authored
244 /**
8c9af5b @elenril cmdutils: add a commandline pre-parser.
elenril authored
245 * An option extracted from the commandline.
246 * Cannot use AVDictionary because of options like -map which can be
247 * used multiple times.
248 */
249 typedef struct Option {
250 const OptionDef *opt;
251 const char *key;
252 const char *val;
253 } Option;
254
255 typedef struct OptionGroupDef {
256 /**< group name */
257 const char *name;
258 /**
259 * Option to be used as group separator. Can be NULL for groups which
33f9b24 @michaelni Merge commit '8c9af5b2051b9927f845c7afdfeb30b82670ee77'
michaelni authored
260 * are terminated by a non-option argument (e.g. ffmpeg output files)
8c9af5b @elenril cmdutils: add a commandline pre-parser.
elenril authored
261 */
262 const char *sep;
9d3009c @elenril avconv: print an error on applying options of the wrong type.
elenril authored
263 /**
264 * Option flags that must be set on each option that is
265 * applied to this group
266 */
267 int flags;
8c9af5b @elenril cmdutils: add a commandline pre-parser.
elenril authored
268 } OptionGroupDef;
269
270 typedef struct OptionGroup {
271 const OptionGroupDef *group_def;
272 const char *arg;
273
274 Option *opts;
275 int nb_opts;
276
277 AVDictionary *codec_opts;
278 AVDictionary *format_opts;
5c7db09 @justinruggles avconv: pass libavresample options to AVFilterGraph
justinruggles authored
279 AVDictionary *resample_opts;
8c9af5b @elenril cmdutils: add a commandline pre-parser.
elenril authored
280 struct SwsContext *sws_opts;
ad89952 @michaelni ffmpeg: use a AVDictionary instead of the context to move swr paramet…
michaelni authored
281 AVDictionary *swr_opts;
8c9af5b @elenril cmdutils: add a commandline pre-parser.
elenril authored
282 } OptionGroup;
283
284 /**
285 * A list of option groups that all have the same group type
286 * (e.g. input files or output files)
287 */
288 typedef struct OptionGroupList {
289 const OptionGroupDef *group_def;
290
291 OptionGroup *groups;
292 int nb_groups;
293 } OptionGroupList;
294
295 typedef struct OptionParseContext {
296 OptionGroup global_opts;
297
298 OptionGroupList *groups;
299 int nb_groups;
300
301 /* parsing state */
302 OptionGroup cur_group;
303 } OptionParseContext;
304
305 /**
306 * Parse an options group and write results into optctx.
307 *
308 * @param optctx an app-specific options context. NULL for global options group
309 */
310 int parse_optgroup(void *optctx, OptionGroup *g);
311
312 /**
313 * Split the commandline into an intermediate form convenient for further
314 * processing.
315 *
316 * The commandline is assumed to be composed of options which either belong to a
317 * group (those with OPT_SPEC, OPT_OFFSET or OPT_PERFILE) or are global
318 * (everything else).
319 *
320 * A group (defined by an OptionGroupDef struct) is a sequence of options
321 * terminated by either a group separator option (e.g. -i) or a parameter that
322 * is not an option (doesn't start with -). A group without a separator option
323 * must always be first in the supplied groups list.
324 *
325 * All options within the same group are stored in one OptionGroup struct in an
326 * OptionGroupList, all groups with the same group definition are stored in one
327 * OptionGroupList in OptionParseContext.groups. The order of group lists is the
328 * same as the order of group definitions.
329 */
330 int split_commandline(OptionParseContext *octx, int argc, char *argv[],
331 const OptionDef *options,
c661cb6 @elenril cmdutils: pass number of groups to split_commandline().
elenril authored
332 const OptionGroupDef *groups, int nb_groups);
8c9af5b @elenril cmdutils: add a commandline pre-parser.
elenril authored
333
334 /**
335 * Free all allocated memory in an OptionParseContext.
336 */
337 void uninit_parse_context(OptionParseContext *octx);
338
339 /**
da9cea7 @DonDiego Fix a bunch of common typos.
DonDiego authored
340 * Find the '-loglevel' option in the command line args and apply it.
182cbe4 @elenril avtools: parse loglevel before all the other options.
elenril authored
341 */
342 void parse_loglevel(int argc, char **argv, const OptionDef *options);
343
344 /**
4138cd2 @elenril avconv: add -cpuflags option for setting supported cpuflags.
elenril authored
345 * Return index of option opt in argv or 0 if not found.
346 */
347 int locate_option(int argc, char **argv, const OptionDef *options,
348 const char *optname);
349
350 /**
d4863fc @elenril cmdutils: allow precisely specifying a stream for AVOptions.
elenril authored
351 * Check if the given stream matches a stream specifier.
352 *
353 * @param s Corresponding format context.
354 * @param st Stream from s to be checked.
e873c03 @DonDiego misc Doxygen markup improvements
DonDiego authored
355 * @param spec A stream specifier of the [v|a|s|d]:[\<stream index\>] form.
d4863fc @elenril cmdutils: allow precisely specifying a stream for AVOptions.
elenril authored
356 *
357 * @return 1 if the stream matches, 0 if it doesn't, <0 on error
358 */
359 int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec);
360
361 /**
8c8eab8 @elenril cmdutils: store all codec options in one dict instead of video/audio/sub
elenril authored
362 * Filter out options for given codec.
ce23ca8 cmdutils: clarify documentation for filter_codec_opts()
Stefano Sabatini authored
363 *
364 * Create a new options dictionary containing only the options from
365 * opts which apply to the codec with ID codec_id.
366 *
02e4275 @DonDiego avconv_opt, cmdutils: Add missing function parameter Doxygen
DonDiego authored
367 * @param opts dictionary to place options in
368 * @param codec_id ID of the codec that should be filtered for
d4863fc @elenril cmdutils: allow precisely specifying a stream for AVOptions.
elenril authored
369 * @param s Corresponding format context.
370 * @param st A stream from s for which the options should be filtered.
d3ed1c9 @mstorsjo cmdutils: Pass the actual chosen encoder to filter_codec_opts
mstorsjo authored
371 * @param codec The particular codec for which the options should be filtered.
372 * If null, the default one is looked up according to the codec id.
ce23ca8 cmdutils: clarify documentation for filter_codec_opts()
Stefano Sabatini authored
373 * @return a pointer to the created dictionary
8c8eab8 @elenril cmdutils: store all codec options in one dict instead of video/audio/sub
elenril authored
374 */
36ef536 @elenril Replace all CODEC_ID_* with AV_CODEC_ID_*
elenril authored
375 AVDictionary *filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id,
d3ed1c9 @mstorsjo cmdutils: Pass the actual chosen encoder to filter_codec_opts
mstorsjo authored
376 AVFormatContext *s, AVStream *st, AVCodec *codec);
8c8eab8 @elenril cmdutils: store all codec options in one dict instead of video/audio/sub
elenril authored
377
7cea06d cmdutils: clarify documentation for setup_find_stream_info_opts()
Stefano Sabatini authored
378 /**
379 * Setup AVCodecContext options for avformat_find_stream_info().
380 *
381 * Create an array of dictionaries, one dictionary for each stream
382 * contained in s.
383 * Each dictionary will contain the options from codec_opts which can
384 * be applied to the corresponding stream codec context.
385 *
386 * @return pointer to the created array of dictionaries, NULL if it
387 * cannot be created
3009f52 @elenril ffplay: use new avcodec_open2 and avformat_find_stream_info API.
elenril authored
388 */
0184bbe @gnarula avprobe, cmdutils: K&R formatting cosmetics
gnarula authored
389 AVDictionary **setup_find_stream_info_opts(AVFormatContext *s,
390 AVDictionary *codec_opts);
85663ef @michaelni Move opt_default() and set_context_opts() to cmdutils so it can be us…
michaelni authored
391
8d787f8 Document cmdutils.c:print_error().
Stefano Sabatini authored
392 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
393 * Print an error message to stderr, indicating filename and a human
8d787f8 Document cmdutils.c:print_error().
Stefano Sabatini authored
394 * readable description of the error code err.
395 *
396 * If strerror_r() is not available the use of this function in a
397 * multithreaded application may be unsafe.
398 *
399 * @see av_strerror()
400 */
01310af added ffplay utility
Fabrice Bellard authored
401 void print_error(const char *filename, int err);
402
f35917b Implement the cmdutils.c show_license function.
Stefano Sabatini authored
403 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
404 * Print the program banner to stderr. The banner contents depend on the
1506750 @DonDiego Improve wording/grammar of Doxygen comments.
DonDiego authored
405 * current version of the repository and of the libav* libraries used by
406 * the program.
86074ed Implement common show version and banner.
Stefano Sabatini authored
407 */
452406b @michaelni ff*: Fix duplicatedly printed version info with -version
michaelni authored
408 void show_banner(int argc, char **argv, const OptionDef *options);
86074ed Implement common show version and banner.
Stefano Sabatini authored
409
410 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
411 * Print the version of the program to stdout. The version message
86074ed Implement common show version and banner.
Stefano Sabatini authored
412 * depends on the current versions of the repository and of the libav*
413 * libraries.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
414 * This option processing function does not utilize the arguments.
86074ed Implement common show version and banner.
Stefano Sabatini authored
415 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
416 int show_version(void *optctx, const char *opt, const char *arg);
86074ed Implement common show version and banner.
Stefano Sabatini authored
417
418 /**
69cf626 @qyot27 cmdutils: Add -buildconf option.
qyot27 authored
419 * Print the build configuration of the program to stdout. The contents
420 * depend on the definition of FFMPEG_CONFIGURATION.
421 * This option processing function does not utilize the arguments.
422 */
423 int show_buildconf(void *optctx, const char *opt, const char *arg);
424
425 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
426 * Print the license of the program to stdout. The license depends on
1506750 @DonDiego Improve wording/grammar of Doxygen comments.
DonDiego authored
427 * the license of the libraries compiled into the program.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
428 * This option processing function does not utilize the arguments.
f35917b Implement the cmdutils.c show_license function.
Stefano Sabatini authored
429 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
430 int show_license(void *optctx, const char *opt, const char *arg);
f35917b Implement the cmdutils.c show_license function.
Stefano Sabatini authored
431
ba9880c Move show_formats() to cmdutils.c.
Stefano Sabatini authored
432 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
433 * Print a listing containing all the formats supported by the
8518da2 ffmpeg: add -devices param
Lukasz Marek authored
434 * program (including devices).
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
435 * This option processing function does not utilize the arguments.
ba9880c Move show_formats() to cmdutils.c.
Stefano Sabatini authored
436 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
437 int show_formats(void *optctx, const char *opt, const char *arg);
ba9880c Move show_formats() to cmdutils.c.
Stefano Sabatini authored
438
090b61b Implement read_yesno().
Stefano Sabatini authored
439 /**
8518da2 ffmpeg: add -devices param
Lukasz Marek authored
440 * Print a listing containing all the devices supported by the
441 * program.
442 * This option processing function does not utilize the arguments.
443 */
444 int show_devices(void *optctx, const char *opt, const char *arg);
445
5f55819 opts: add list device sources/sinks options
Lukasz Marek authored
446 #if CONFIG_AVDEVICE
447 /**
448 * Print a listing containing audodetected sinks of the output device.
449 * Device name with options may be passed as an argument to limit results.
450 */
451 int show_sinks(void *optctx, const char *opt, const char *arg);
452
453 /**
454 * Print a listing containing audodetected sources of the input device.
455 * Device name with options may be passed as an argument to limit results.
456 */
457 int show_sources(void *optctx, const char *opt, const char *arg);
458 #endif
459
8518da2 ffmpeg: add -devices param
Lukasz Marek authored
460 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
461 * Print a listing containing all the codecs supported by the
8447f0b @michaelni Split show_formats().
michaelni authored
462 * program.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
463 * This option processing function does not utilize the arguments.
8447f0b @michaelni Split show_formats().
michaelni authored
464 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
465 int show_codecs(void *optctx, const char *opt, const char *arg);
8447f0b @michaelni Split show_formats().
michaelni authored
466
467 /**
7c10194 @elenril cmdutils: refactor -codecs option.
elenril authored
468 * Print a listing containing all the decoders supported by the
469 * program.
470 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
471 int show_decoders(void *optctx, const char *opt, const char *arg);
7c10194 @elenril cmdutils: refactor -codecs option.
elenril authored
472
473 /**
474 * Print a listing containing all the encoders supported by the
475 * program.
476 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
477 int show_encoders(void *optctx, const char *opt, const char *arg);
8447f0b @michaelni Split show_formats().
michaelni authored
478
479 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
480 * Print a listing containing all the filters supported by the
62d7566 Implement a -filters option, listing all the available libavfilter
Stefano Sabatini authored
481 * program.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
482 * This option processing function does not utilize the arguments.
62d7566 Implement a -filters option, listing all the available libavfilter
Stefano Sabatini authored
483 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
484 int show_filters(void *optctx, const char *opt, const char *arg);
62d7566 Implement a -filters option, listing all the available libavfilter
Stefano Sabatini authored
485
486 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
487 * Print a listing containing all the bit stream filters supported by the
8447f0b @michaelni Split show_formats().
michaelni authored
488 * program.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
489 * This option processing function does not utilize the arguments.
8447f0b @michaelni Split show_formats().
michaelni authored
490 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
491 int show_bsfs(void *optctx, const char *opt, const char *arg);
8447f0b @michaelni Split show_formats().
michaelni authored
492
493 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
494 * Print a listing containing all the protocols supported by the
8447f0b @michaelni Split show_formats().
michaelni authored
495 * program.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
496 * This option processing function does not utilize the arguments.
8447f0b @michaelni Split show_formats().
michaelni authored
497 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
498 int show_protocols(void *optctx, const char *opt, const char *arg);
8447f0b @michaelni Split show_formats().
michaelni authored
499
500 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
501 * Print a listing containing all the pixel formats supported by the
3f7bb42 Implement a -pix_fmts option for listing all the supported pixel
Stefano Sabatini authored
502 * program.
a099183 Make all option parsing functions match the function pointer type thr…
Jeff Downs authored
503 * This option processing function does not utilize the arguments.
3f7bb42 Implement a -pix_fmts option for listing all the supported pixel
Stefano Sabatini authored
504 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
505 int show_pix_fmts(void *optctx, const char *opt, const char *arg);
3f7bb42 Implement a -pix_fmts option for listing all the supported pixel
Stefano Sabatini authored
506
507 /**
786dadc cmdutils: add -layouts option.
Nicolas George authored
508 * Print a listing containing all the standard channel layouts supported by
509 * the program.
510 * This option processing function does not utilize the arguments.
511 */
98298eb @michaelni Merge commit 'ec36aa69448f20a78d8c4588265022e0b2272ab5'
michaelni authored
512 int show_layouts(void *optctx, const char *opt, const char *arg);
786dadc cmdutils: add -layouts option.
Nicolas George authored
513
514 /**
05bffc1 @elenril avconv: move audio_sample_fmt to options context.
elenril authored
515 * Print a listing containing all the sample formats supported by the
516 * program.
517 */
11d957f @elenril avtools: remove the distinction between func_arg and func2_arg.
elenril authored
518 int show_sample_fmts(void *optctx, const char *opt, const char *arg);
3f7bb42 Implement a -pix_fmts option for listing all the supported pixel
Stefano Sabatini authored
519
520 /**
4e26828 @saste cmdutils: add -colors option
saste authored
521 * Print a listing containing all the color names and values recognized
522 * by the program.
523 */
6baf9c4 @saste cmdutils: fix expected signature for show_colors() function
saste authored
524 int show_colors(void *optctx, const char *opt, const char *arg);
4e26828 @saste cmdutils: add -colors option
saste authored
525
526 /**
48966b0 @mansr Grammar fixes
mansr authored
527 * Return a positive value if a line read from standard input
528 * starts with [yY], otherwise return 0.
090b61b Implement read_yesno().
Stefano Sabatini authored
529 */
530 int read_yesno(void);
531
458b062 Implement cmdutils.c:read_file(), and use it in ffmpeg.c for reading
Stefano Sabatini authored
532 /**
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
533 * Read the file with name filename, and put its content in a newly
458b062 Implement cmdutils.c:read_file(), and use it in ffmpeg.c for reading
Stefano Sabatini authored
534 * allocated 0-terminated buffer.
535 *
02e4275 @DonDiego avconv_opt, cmdutils: Add missing function parameter Doxygen
DonDiego authored
536 * @param filename file to read from
49bd8e4 @mansr Fix grammar errors in documentation
mansr authored
537 * @param bufptr location where pointer to buffer is returned
538 * @param size location where size of buffer is returned
d5ec8ba @michaelni Do not leave positive values undefined when negative are defined as e…
michaelni authored
539 * @return >= 0 in case of success, a negative value corresponding to an
458b062 Implement cmdutils.c:read_file(), and use it in ffmpeg.c for reading
Stefano Sabatini authored
540 * AVERROR error code in case of failure.
541 */
0217099 @mstorsjo cmdutils: Rename read_file to cmdutils_read_file
mstorsjo authored
542 int cmdutils_read_file(const char *filename, char **bufptr, size_t *size);
458b062 Implement cmdutils.c:read_file(), and use it in ffmpeg.c for reading
Stefano Sabatini authored
543
6e87293 Implement get_preset_file() in cmdutils.h and use it to factorize code
Stefano Sabatini authored
544 /**
545 * Get a file corresponding to a preset file.
546 *
547 * If is_path is non-zero, look for the file in the path preset_name.
548 * Otherwise search for a file named arg.ffpreset in the directories
549 * $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined
1b30e4f preset dir for win32
Gianluigi Tiesi authored
550 * at configuration time or in a "ffpresets" folder along the executable
551 * on win32, in that order. If no such file is found and
6e87293 Implement get_preset_file() in cmdutils.h and use it to factorize code
Stefano Sabatini authored
552 * codec_name is defined, then search for a file named
050dc12 Read preset files with suffix .avpreset
Reinhard Tartler authored
553 * codec_name-preset_name.avpreset in the above-mentioned directories.
6e87293 Implement get_preset_file() in cmdutils.h and use it to factorize code
Stefano Sabatini authored
554 *
555 * @param filename buffer where the name of the found filename is written
556 * @param filename_size size in bytes of the filename buffer
557 * @param preset_name name of the preset to search
558 * @param is_path tell if preset_name is a filename path
559 * @param codec_name name of the codec for which to look for the
560 * preset, may be NULL
561 */
562 FILE *get_preset_file(char *filename, size_t filename_size,
563 const char *preset_name, int is_path, const char *codec_name);
564
dad09ff @elenril cmdutils: move exit_program() declaration to cmdutils from avconv
elenril authored
565 /**
cac651c @elenril cmdutils: move grow_array() from avconv to cmdutils.
elenril authored
566 * Realloc array to hold new_size elements of elem_size.
5e3f997 @Flameeyes Use atexit() instead of defining a custom exit_program() interface.
Flameeyes authored
567 * Calls exit() on failure.
cac651c @elenril cmdutils: move grow_array() from avconv to cmdutils.
elenril authored
568 *
02e4275 @DonDiego avconv_opt, cmdutils: Add missing function parameter Doxygen
DonDiego authored
569 * @param array array to reallocate
cac651c @elenril cmdutils: move grow_array() from avconv to cmdutils.
elenril authored
570 * @param elem_size size in bytes of each element
571 * @param size new element count will be written here
02e4275 @DonDiego avconv_opt, cmdutils: Add missing function parameter Doxygen
DonDiego authored
572 * @param new_size number of elements to place in reallocated array
cac651c @elenril cmdutils: move grow_array() from avconv to cmdutils.
elenril authored
573 * @return reallocated array
574 */
575 void *grow_array(void *array, int elem_size, int *size, int new_size);
576
608d860 @michaelni Merge commit 'e19e8aeeaaff3d4bc8f6065764c93f0298782ac6'
michaelni authored
577 #define media_type_string av_get_media_type_string
e19e8ae @elenril avtools: move media_type_string() from avprobe to cmdutils.
elenril authored
578
10bca66 @elenril cmdutils: add a macro to simplify grow_array() calls.
elenril authored
579 #define GROW_ARRAY(array, nb_elems)\
580 array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
581
a3ad68d @elenril cmdutils: extend -h to allow printing codec details.
elenril authored
582 #define GET_PIX_FMT_NAME(pix_fmt)\
583 const char *name = av_get_pix_fmt_name(pix_fmt);
584
585 #define GET_SAMPLE_FMT_NAME(sample_fmt)\
586 const char *name = av_get_sample_fmt_name(sample_fmt)
587
588 #define GET_SAMPLE_RATE_NAME(rate)\
589 char name[16];\
590 snprintf(name, sizeof(name), "%d", rate);
591
592 #define GET_CH_LAYOUT_NAME(ch_layout)\
593 char name[16];\
594 snprintf(name, sizeof(name), "0x%"PRIx64, ch_layout);
595
596 #define GET_CH_LAYOUT_DESC(ch_layout)\
597 char name[128];\
598 av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
599
4351c28 @michaelni ffplay&cmdutils:Factor get_rotation() code out
michaelni authored
600 double get_rotation(AVStream *st);
601
90705aa @michaelni cmdutils.h: Project name cleanup
michaelni authored
602 #endif /* CMDUTILS_H */
Something went wrong with that request. Please try again.