FFmpeg
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 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 
22 #ifndef FFTOOLS_CMDUTILS_H
23 #define FFTOOLS_CMDUTILS_H
24 
25 #include <stdint.h>
26 
27 #include "config.h"
28 #include "libavcodec/avcodec.h"
29 #include "libavfilter/avfilter.h"
30 #include "libavformat/avformat.h"
31 #include "libswscale/swscale.h"
32 
33 #ifdef _WIN32
34 #undef main /* We don't want SDL to override our main() */
35 #endif
36 
37 /**
38  * program name, defined by the program for show_version().
39  */
40 extern const char program_name[];
41 
42 /**
43  * program birth year, defined by the program for show_banner()
44  */
45 extern const int program_birth_year;
46 
49 extern AVDictionary *sws_dict;
50 extern AVDictionary *swr_opts;
52 extern int hide_banner;
53 
54 /**
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  */
62 void exit_program(int ret) av_noreturn;
63 
64 /**
65  * Initialize dynamic library loading
66  */
67 void init_dynload(void);
68 
69 /**
70  * Initialize the cmdutils option system, in particular
71  * allocate the *_opts contexts.
72  */
73 void init_opts(void);
74 /**
75  * Uninitialize the cmdutils option system, in particular
76  * free the *_opts contexts and their contents.
77  */
78 void uninit_opts(void);
79 
80 /**
81  * Trivial log callback.
82  * Only suitable for opt_help and similar since it lacks prefix handling.
83  */
84 void log_callback_help(void* ptr, int level, const char* fmt, va_list vl);
85 
86 /**
87  * Override the cpuflags.
88  */
89 int opt_cpuflags(void *optctx, const char *opt, const char *arg);
90 
91 /**
92  * Override the cpucount.
93  */
94 int opt_cpucount(void *optctx, const char *opt, const char *arg);
95 
96 /**
97  * Fallback for options that are not explicitly handled, these will be
98  * parsed through AVOptions.
99  */
100 int opt_default(void *optctx, const char *opt, const char *arg);
101 
102 /**
103  * Set the libav* libraries log level.
104  */
105 int opt_loglevel(void *optctx, const char *opt, const char *arg);
106 
107 int opt_report(void *optctx, const char *opt, const char *arg);
108 
109 int opt_max_alloc(void *optctx, const char *opt, const char *arg);
110 
111 int opt_codec_debug(void *optctx, const char *opt, const char *arg);
112 
113 /**
114  * Limit the execution time.
115  */
116 int opt_timelimit(void *optctx, const char *opt, const char *arg);
117 
118 /**
119  * Parse a string and return its corresponding value as a double.
120  * Exit from the application if the string cannot be correctly
121  * parsed or the corresponding value is invalid.
122  *
123  * @param context the context of the value to be set (e.g. the
124  * corresponding command line option name)
125  * @param numstr the string to be parsed
126  * @param type the type (OPT_INT64 or OPT_FLOAT) as which the
127  * string should be parsed
128  * @param min the minimum valid accepted value
129  * @param max the maximum valid accepted value
130  */
131 double parse_number_or_die(const char *context, const char *numstr, int type,
132  double min, double max);
133 
134 /**
135  * Parse a string specifying a time and return its corresponding
136  * value as a number of microseconds. Exit from the application if
137  * the string cannot be correctly parsed.
138  *
139  * @param context the context of the value to be set (e.g. the
140  * corresponding command line option name)
141  * @param timestr the string to be parsed
142  * @param is_duration a flag which tells how to interpret timestr, if
143  * not zero timestr is interpreted as a duration, otherwise as a
144  * date
145  *
146  * @see av_parse_time()
147  */
148 int64_t parse_time_or_die(const char *context, const char *timestr,
149  int is_duration);
150 
151 typedef struct SpecifierOpt {
152  char *specifier; /**< stream/chapter/program/... specifier */
153  union {
154  uint8_t *str;
155  int i;
156  int64_t i64;
157  uint64_t ui64;
158  float f;
159  double dbl;
160  } u;
161 } SpecifierOpt;
162 
163 typedef struct OptionDef {
164  const char *name;
165  int flags;
166 #define HAS_ARG 0x0001
167 #define OPT_BOOL 0x0002
168 #define OPT_EXPERT 0x0004
169 #define OPT_STRING 0x0008
170 #define OPT_VIDEO 0x0010
171 #define OPT_AUDIO 0x0020
172 #define OPT_INT 0x0080
173 #define OPT_FLOAT 0x0100
174 #define OPT_SUBTITLE 0x0200
175 #define OPT_INT64 0x0400
176 #define OPT_EXIT 0x0800
177 #define OPT_DATA 0x1000
178 #define OPT_PERFILE 0x2000 /* the option is per-file (currently ffmpeg-only).
179  implied by OPT_OFFSET or OPT_SPEC */
180 #define OPT_OFFSET 0x4000 /* option is specified as an offset in a passed optctx */
181 #define OPT_SPEC 0x8000 /* option is to be stored in an array of SpecifierOpt.
182  Implies OPT_OFFSET. Next element after the offset is
183  an int containing element count in the array. */
184 #define OPT_TIME 0x10000
185 #define OPT_DOUBLE 0x20000
186 #define OPT_INPUT 0x40000
187 #define OPT_OUTPUT 0x80000
188  union {
189  void *dst_ptr;
190  int (*func_arg)(void *, const char *, const char *);
191  size_t off;
192  } u;
193  const char *help;
194  const char *argname;
195 } OptionDef;
196 
197 /**
198  * Print help for all options matching specified flags.
199  *
200  * @param options a list of options
201  * @param msg title of this group. Only printed if at least one option matches.
202  * @param req_flags print only options which have all those flags set.
203  * @param rej_flags don't print options which have any of those flags set.
204  * @param alt_flags print only options that have at least one of those flags set
205  */
206 void show_help_options(const OptionDef *options, const char *msg, int req_flags,
207  int rej_flags, int alt_flags);
208 
209 #if CONFIG_AVDEVICE
210 #define CMDUTILS_COMMON_OPTIONS_AVDEVICE \
211  { "sources" , OPT_EXIT | HAS_ARG, { .func_arg = show_sources }, \
212  "list sources of the input device", "device" }, \
213  { "sinks" , OPT_EXIT | HAS_ARG, { .func_arg = show_sinks }, \
214  "list sinks of the output device", "device" }, \
215 
216 #else
217 #define CMDUTILS_COMMON_OPTIONS_AVDEVICE
218 #endif
219 
220 #define CMDUTILS_COMMON_OPTIONS \
221  { "L", OPT_EXIT, { .func_arg = show_license }, "show license" }, \
222  { "h", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" }, \
223  { "?", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" }, \
224  { "help", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" }, \
225  { "-help", OPT_EXIT, { .func_arg = show_help }, "show help", "topic" }, \
226  { "version", OPT_EXIT, { .func_arg = show_version }, "show version" }, \
227  { "buildconf", OPT_EXIT, { .func_arg = show_buildconf }, "show build configuration" }, \
228  { "formats", OPT_EXIT, { .func_arg = show_formats }, "show available formats" }, \
229  { "muxers", OPT_EXIT, { .func_arg = show_muxers }, "show available muxers" }, \
230  { "demuxers", OPT_EXIT, { .func_arg = show_demuxers }, "show available demuxers" }, \
231  { "devices", OPT_EXIT, { .func_arg = show_devices }, "show available devices" }, \
232  { "codecs", OPT_EXIT, { .func_arg = show_codecs }, "show available codecs" }, \
233  { "decoders", OPT_EXIT, { .func_arg = show_decoders }, "show available decoders" }, \
234  { "encoders", OPT_EXIT, { .func_arg = show_encoders }, "show available encoders" }, \
235  { "bsfs", OPT_EXIT, { .func_arg = show_bsfs }, "show available bit stream filters" }, \
236  { "protocols", OPT_EXIT, { .func_arg = show_protocols }, "show available protocols" }, \
237  { "filters", OPT_EXIT, { .func_arg = show_filters }, "show available filters" }, \
238  { "pix_fmts", OPT_EXIT, { .func_arg = show_pix_fmts }, "show available pixel formats" }, \
239  { "layouts", OPT_EXIT, { .func_arg = show_layouts }, "show standard channel layouts" }, \
240  { "sample_fmts", OPT_EXIT, { .func_arg = show_sample_fmts }, "show available audio sample formats" }, \
241  { "dispositions", OPT_EXIT, { .func_arg = show_dispositions}, "show available stream dispositions" }, \
242  { "colors", OPT_EXIT, { .func_arg = show_colors }, "show available color names" }, \
243  { "loglevel", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" }, \
244  { "v", HAS_ARG, { .func_arg = opt_loglevel }, "set logging level", "loglevel" }, \
245  { "report", 0, { .func_arg = opt_report }, "generate a report" }, \
246  { "max_alloc", HAS_ARG, { .func_arg = opt_max_alloc }, "set maximum size of a single allocated block", "bytes" }, \
247  { "cpuflags", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags }, "force specific cpu flags", "flags" }, \
248  { "cpucount", HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpucount }, "force specific cpu count", "count" }, \
249  { "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner}, "do not show program banner", "hide_banner" }, \
250  CMDUTILS_COMMON_OPTIONS_AVDEVICE \
251 
252 /**
253  * Show help for all options with given flags in class and all its
254  * children.
255  */
256 void show_help_children(const AVClass *class, int flags);
257 
258 /**
259  * Per-fftool specific help handler. Implemented in each
260  * fftool, called by show_help().
261  */
262 void show_help_default(const char *opt, const char *arg);
263 
264 /**
265  * Generic -h handler common to all fftools.
266  */
267 int show_help(void *optctx, const char *opt, const char *arg);
268 
269 /**
270  * Parse the command line arguments.
271  *
272  * @param optctx an opaque options context
273  * @param argc number of command line arguments
274  * @param argv values of command line arguments
275  * @param options Array with the definitions required to interpret every
276  * option of the form: -option_name [argument]
277  * @param parse_arg_function Name of the function called to process every
278  * argument without a leading option name flag. NULL if such arguments do
279  * not have to be processed.
280  */
281 void parse_options(void *optctx, int argc, char **argv, const OptionDef *options,
282  void (* parse_arg_function)(void *optctx, const char*));
283 
284 /**
285  * Parse one given option.
286  *
287  * @return on success 1 if arg was consumed, 0 otherwise; negative number on error
288  */
289 int parse_option(void *optctx, const char *opt, const char *arg,
290  const OptionDef *options);
291 
292 /**
293  * An option extracted from the commandline.
294  * Cannot use AVDictionary because of options like -map which can be
295  * used multiple times.
296  */
297 typedef struct Option {
298  const OptionDef *opt;
299  const char *key;
300  const char *val;
301 } Option;
302 
303 typedef struct OptionGroupDef {
304  /**< group name */
305  const char *name;
306  /**
307  * Option to be used as group separator. Can be NULL for groups which
308  * are terminated by a non-option argument (e.g. ffmpeg output files)
309  */
310  const char *sep;
311  /**
312  * Option flags that must be set on each option that is
313  * applied to this group
314  */
315  int flags;
317 
318 typedef struct OptionGroup {
320  const char *arg;
321 
323  int nb_opts;
324 
329 } OptionGroup;
330 
331 /**
332  * A list of option groups that all have the same group type
333  * (e.g. input files or output files)
334  */
335 typedef struct OptionGroupList {
337 
341 
342 typedef struct OptionParseContext {
344 
347 
348  /* parsing state */
351 
352 /**
353  * Parse an options group and write results into optctx.
354  *
355  * @param optctx an app-specific options context. NULL for global options group
356  */
357 int parse_optgroup(void *optctx, OptionGroup *g);
358 
359 /**
360  * Split the commandline into an intermediate form convenient for further
361  * processing.
362  *
363  * The commandline is assumed to be composed of options which either belong to a
364  * group (those with OPT_SPEC, OPT_OFFSET or OPT_PERFILE) or are global
365  * (everything else).
366  *
367  * A group (defined by an OptionGroupDef struct) is a sequence of options
368  * terminated by either a group separator option (e.g. -i) or a parameter that
369  * is not an option (doesn't start with -). A group without a separator option
370  * must always be first in the supplied groups list.
371  *
372  * All options within the same group are stored in one OptionGroup struct in an
373  * OptionGroupList, all groups with the same group definition are stored in one
374  * OptionGroupList in OptionParseContext.groups. The order of group lists is the
375  * same as the order of group definitions.
376  */
377 int split_commandline(OptionParseContext *octx, int argc, char *argv[],
378  const OptionDef *options,
379  const OptionGroupDef *groups, int nb_groups);
380 
381 /**
382  * Free all allocated memory in an OptionParseContext.
383  */
385 
386 /**
387  * Find the '-loglevel' option in the command line args and apply it.
388  */
389 void parse_loglevel(int argc, char **argv, const OptionDef *options);
390 
391 /**
392  * Return index of option opt in argv or 0 if not found.
393  */
394 int locate_option(int argc, char **argv, const OptionDef *options,
395  const char *optname);
396 
397 /**
398  * Check if the given stream matches a stream specifier.
399  *
400  * @param s Corresponding format context.
401  * @param st Stream from s to be checked.
402  * @param spec A stream specifier of the [v|a|s|d]:[<stream index>] form.
403  *
404  * @return 1 if the stream matches, 0 if it doesn't, <0 on error
405  */
406 int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec);
407 
408 /**
409  * Filter out options for given codec.
410  *
411  * Create a new options dictionary containing only the options from
412  * opts which apply to the codec with ID codec_id.
413  *
414  * @param opts dictionary to place options in
415  * @param codec_id ID of the codec that should be filtered for
416  * @param s Corresponding format context.
417  * @param st A stream from s for which the options should be filtered.
418  * @param codec The particular codec for which the options should be filtered.
419  * If null, the default one is looked up according to the codec id.
420  * @return a pointer to the created dictionary
421  */
423  AVFormatContext *s, AVStream *st, const AVCodec *codec);
424 
425 /**
426  * Setup AVCodecContext options for avformat_find_stream_info().
427  *
428  * Create an array of dictionaries, one dictionary for each stream
429  * contained in s.
430  * Each dictionary will contain the options from codec_opts which can
431  * be applied to the corresponding stream codec context.
432  *
433  * @return pointer to the created array of dictionaries.
434  * Calls exit() on failure.
435  */
438 
439 /**
440  * Print an error message to stderr, indicating filename and a human
441  * readable description of the error code err.
442  *
443  * If strerror_r() is not available the use of this function in a
444  * multithreaded application may be unsafe.
445  *
446  * @see av_strerror()
447  */
448 void print_error(const char *filename, int err);
449 
450 /**
451  * Print the program banner to stderr. The banner contents depend on the
452  * current version of the repository and of the libav* libraries used by
453  * the program.
454  */
455 void show_banner(int argc, char **argv, const OptionDef *options);
456 
457 /**
458  * Print the version of the program to stdout. The version message
459  * depends on the current versions of the repository and of the libav*
460  * libraries.
461  * This option processing function does not utilize the arguments.
462  */
463 int show_version(void *optctx, const char *opt, const char *arg);
464 
465 /**
466  * Print the build configuration of the program to stdout. The contents
467  * depend on the definition of FFMPEG_CONFIGURATION.
468  * This option processing function does not utilize the arguments.
469  */
470 int show_buildconf(void *optctx, const char *opt, const char *arg);
471 
472 /**
473  * Print the license of the program to stdout. The license depends on
474  * the license of the libraries compiled into the program.
475  * This option processing function does not utilize the arguments.
476  */
477 int show_license(void *optctx, const char *opt, const char *arg);
478 
479 /**
480  * Print a listing containing all the formats supported by the
481  * program (including devices).
482  * This option processing function does not utilize the arguments.
483  */
484 int show_formats(void *optctx, const char *opt, const char *arg);
485 
486 /**
487  * Print a listing containing all the muxers supported by the
488  * program (including devices).
489  * This option processing function does not utilize the arguments.
490  */
491 int show_muxers(void *optctx, const char *opt, const char *arg);
492 
493 /**
494  * Print a listing containing all the demuxer supported by the
495  * program (including devices).
496  * This option processing function does not utilize the arguments.
497  */
498 int show_demuxers(void *optctx, const char *opt, const char *arg);
499 
500 /**
501  * Print a listing containing all the devices supported by the
502  * program.
503  * This option processing function does not utilize the arguments.
504  */
505 int show_devices(void *optctx, const char *opt, const char *arg);
506 
507 #if CONFIG_AVDEVICE
508 /**
509  * Print a listing containing autodetected sinks of the output device.
510  * Device name with options may be passed as an argument to limit results.
511  */
512 int show_sinks(void *optctx, const char *opt, const char *arg);
513 
514 /**
515  * Print a listing containing autodetected sources of the input device.
516  * Device name with options may be passed as an argument to limit results.
517  */
518 int show_sources(void *optctx, const char *opt, const char *arg);
519 #endif
520 
521 /**
522  * Print a listing containing all the codecs supported by the
523  * program.
524  * This option processing function does not utilize the arguments.
525  */
526 int show_codecs(void *optctx, const char *opt, const char *arg);
527 
528 /**
529  * Print a listing containing all the decoders supported by the
530  * program.
531  */
532 int show_decoders(void *optctx, const char *opt, const char *arg);
533 
534 /**
535  * Print a listing containing all the encoders supported by the
536  * program.
537  */
538 int show_encoders(void *optctx, const char *opt, const char *arg);
539 
540 /**
541  * Print a listing containing all the filters supported by the
542  * program.
543  * This option processing function does not utilize the arguments.
544  */
545 int show_filters(void *optctx, const char *opt, const char *arg);
546 
547 /**
548  * Print a listing containing all the bit stream filters supported by the
549  * program.
550  * This option processing function does not utilize the arguments.
551  */
552 int show_bsfs(void *optctx, const char *opt, const char *arg);
553 
554 /**
555  * Print a listing containing all the protocols supported by the
556  * program.
557  * This option processing function does not utilize the arguments.
558  */
559 int show_protocols(void *optctx, const char *opt, const char *arg);
560 
561 /**
562  * Print a listing containing all the pixel formats supported by the
563  * program.
564  * This option processing function does not utilize the arguments.
565  */
566 int show_pix_fmts(void *optctx, const char *opt, const char *arg);
567 
568 /**
569  * Print a listing containing all the standard channel layouts supported by
570  * the program.
571  * This option processing function does not utilize the arguments.
572  */
573 int show_layouts(void *optctx, const char *opt, const char *arg);
574 
575 /**
576  * Print a listing containing all the sample formats supported by the
577  * program.
578  */
579 int show_sample_fmts(void *optctx, const char *opt, const char *arg);
580 
581 /**
582  * Print a listing containing all supported stream dispositions.
583  */
584 int show_dispositions(void *optctx, const char *opt, const char *arg);
585 
586 /**
587  * Print a listing containing all the color names and values recognized
588  * by the program.
589  */
590 int show_colors(void *optctx, const char *opt, const char *arg);
591 
592 /**
593  * Return a positive value if a line read from standard input
594  * starts with [yY], otherwise return 0.
595  */
596 int read_yesno(void);
597 
598 /**
599  * Get a file corresponding to a preset file.
600  *
601  * If is_path is non-zero, look for the file in the path preset_name.
602  * Otherwise search for a file named arg.ffpreset in the directories
603  * $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined
604  * at configuration time or in a "ffpresets" folder along the executable
605  * on win32, in that order. If no such file is found and
606  * codec_name is defined, then search for a file named
607  * codec_name-preset_name.avpreset in the above-mentioned directories.
608  *
609  * @param filename buffer where the name of the found filename is written
610  * @param filename_size size in bytes of the filename buffer
611  * @param preset_name name of the preset to search
612  * @param is_path tell if preset_name is a filename path
613  * @param codec_name name of the codec for which to look for the
614  * preset, may be NULL
615  */
616 FILE *get_preset_file(char *filename, size_t filename_size,
617  const char *preset_name, int is_path, const char *codec_name);
618 
619 /**
620  * Realloc array to hold new_size elements of elem_size.
621  * Calls exit() on failure.
622  *
623  * @param array array to reallocate
624  * @param elem_size size in bytes of each element
625  * @param size new element count will be written here
626  * @param new_size number of elements to place in reallocated array
627  * @return reallocated array
628  */
629 void *grow_array(void *array, int elem_size, int *size, int new_size);
630 
631 /**
632  * Atomically add a new element to an array of pointers, i.e. allocate
633  * a new entry, reallocate the array of pointers and make the new last
634  * member of this array point to the newly allocated buffer.
635  * Calls exit() on failure.
636  *
637  * @param array array of pointers to reallocate
638  * @param elem_size size of the new element to allocate
639  * @param nb_elems pointer to the number of elements of the array array;
640  * *nb_elems will be incremented by one by this function.
641  * @return pointer to the newly allocated entry
642  */
643 void *allocate_array_elem(void *array, size_t elem_size, int *nb_elems);
644 
645 #define media_type_string av_get_media_type_string
646 
647 #define GROW_ARRAY(array, nb_elems)\
648  array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1)
649 
650 #define ALLOC_ARRAY_ELEM(array, nb_elems)\
651  allocate_array_elem(&array, sizeof(*array[0]), &nb_elems)
652 
653 #define GET_PIX_FMT_NAME(pix_fmt)\
654  const char *name = av_get_pix_fmt_name(pix_fmt);
655 
656 #define GET_CODEC_NAME(id)\
657  const char *name = avcodec_descriptor_get(id)->name;
658 
659 #define GET_SAMPLE_FMT_NAME(sample_fmt)\
660  const char *name = av_get_sample_fmt_name(sample_fmt)
661 
662 #define GET_SAMPLE_RATE_NAME(rate)\
663  char name[16];\
664  snprintf(name, sizeof(name), "%d", rate);
665 
666 #define GET_CH_LAYOUT_NAME(ch_layout)\
667  char name[16];\
668  snprintf(name, sizeof(name), "0x%"PRIx64, ch_layout);
669 
670 #define GET_CH_LAYOUT_DESC(ch_layout)\
671  char name[128];\
672  av_get_channel_layout_string(name, sizeof(name), 0, ch_layout);
673 
674 double get_rotation(int32_t *displaymatrix);
675 
676 #endif /* FFTOOLS_CMDUTILS_H */
AVCodec
AVCodec.
Definition: codec.h:202
OptionGroup::group_def
const OptionGroupDef * group_def
Definition: cmdutils.h:316
setup_find_stream_info_opts
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Setup AVCodecContext options for avformat_find_stream_info().
Definition: cmdutils.c:2178
show_help_default
void show_help_default(const char *opt, const char *arg)
Per-fftool specific help handler.
Definition: ffmpeg_opt.c:3313
level
uint8_t level
Definition: svq3.c:204
OptionDef::off
size_t off
Definition: cmdutils.h:188
cb
static double cb(void *priv, double x, double y)
Definition: vf_geq.c:215
get_rotation
double get_rotation(int32_t *displaymatrix)
Definition: cmdutils.c:2229
SpecifierOpt::ui64
uint64_t ui64
Definition: cmdutils.h:157
program_name
const char program_name[]
program name, defined by the program for show_version().
Definition: ffmpeg.c:109
sws_dict
AVDictionary * sws_dict
Definition: cmdutils.c:69
OptionGroupList::groups
OptionGroup * groups
Definition: cmdutils.h:335
OptionDef::dst_ptr
void * dst_ptr
Definition: cmdutils.h:186
OptionGroupList::nb_groups
int nb_groups
Definition: cmdutils.h:336
codec_opts
AVDictionary * codec_opts
Definition: cmdutils.h:51
opt_timelimit
int opt_timelimit(void *optctx, const char *opt, const char *arg)
Limit the execution time.
Definition: cmdutils.c:1074
parse_time_or_die
int64_t parse_time_or_die(const char *context, const char *timestr, int is_duration)
Parse a string specifying a time and return its corresponding value as a number of microseconds.
Definition: cmdutils.c:157
OptionGroup::swr_opts
AVDictionary * swr_opts
Definition: cmdutils.h:325
av_noreturn
#define av_noreturn
Definition: attributes.h:170
max
#define max(a, b)
Definition: cuda_runtime.h:33
AVDictionary
Definition: dict.c:30
get_preset_file
FILE * get_preset_file(char *filename, size_t filename_size, const char *preset_name, int is_path, const char *codec_name)
Get a file corresponding to a preset file.
Definition: cmdutils.c:2062
OptionDef
Definition: cmdutils.h:163
SpecifierOpt::i
int i
Definition: cmdutils.h:155
OptionGroupList
A list of option groups that all have the same group type (e.g.
Definition: cmdutils.h:332
OptionParseContext
Definition: cmdutils.h:339
Option
An option extracted from the commandline.
Definition: cmdutils.h:294
parse_number_or_die
double parse_number_or_die(const char *context, const char *numstr, int type, double min, double max)
Parse a string and return its corresponding value as a double.
Definition: cmdutils.c:136
type
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf type
Definition: writing_filters.txt:86
OptionGroup::nb_opts
int nb_opts
Definition: cmdutils.h:320
OptionGroupList::group_def
const OptionGroupDef * group_def
Definition: cmdutils.h:333
OptionDef::help
const char * help
Definition: cmdutils.h:190
show_layouts
int show_layouts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the standard channel layouts supported by the program.
Definition: cmdutils.c:1785
OptionGroupDef
Definition: cmdutils.h:300
avcodec_opts
AVCodecContext * avcodec_opts[AVMEDIA_TYPE_NB]
OptionGroup::codec_opts
AVDictionary * codec_opts
Definition: cmdutils.h:322
OptionGroupDef::flags
int flags
Option flags that must be set on each option that is applied to this group.
Definition: cmdutils.h:312
grow_array
void * grow_array(void *array, int elem_size, int *size, int new_size)
Realloc array to hold new_size elements of elem_size.
Definition: cmdutils.c:2198
SpecifierOpt::specifier
char * specifier
stream/chapter/program/...
Definition: cmdutils.h:152
s
#define s(width, name)
Definition: cbs_vp9.c:257
OptionDef::argname
const char * argname
Definition: cmdutils.h:191
uninit_opts
void uninit_opts(void)
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.
Definition: cmdutils.c:83
g
const char * g
Definition: vf_curves.c:117
Option::key
const char * key
Definition: cmdutils.h:296
print_error
void print_error(const char *filename, int err)
Print an error message to stderr, indicating filename and a human readable description of the error c...
Definition: cmdutils.c:1087
allocate_array_elem
void * allocate_array_elem(void *array, size_t elem_size, int *nb_elems)
Atomically add a new element to an array of pointers, i.e.
Definition: cmdutils.c:2217
AVMEDIA_TYPE_NB
@ AVMEDIA_TYPE_NB
Definition: avutil.h:206
init_dynload
void init_dynload(void)
Initialize dynamic library loading.
Definition: cmdutils.c:112
show_help_children
void show_help_children(const AVClass *class, int flags)
Show help for all options with given flags in class and all its children.
Definition: cmdutils.c:198
parse_options
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *optctx, const char *))
Parse the command line arguments.
codec_id
enum AVCodecID codec_id
Definition: vaapi_decode.c:369
arg
const char * arg
Definition: jacosubdec.c:67
OptionGroupDef::name
const char * name
< group name
Definition: cmdutils.h:302
context
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf default minimum maximum flags name is the option keep it simple and lowercase description are in without and describe what they for example set the foo of the bar offset is the offset of the field in your context
Definition: writing_filters.txt:91
AVFormatContext
Format I/O context.
Definition: avformat.h:1200
opts
AVDictionary * opts
Definition: movenc.c:50
OptionGroup::format_opts
AVDictionary * format_opts
Definition: cmdutils.h:323
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
OptionParseContext::global_opts
OptionGroup global_opts
Definition: cmdutils.h:340
Option::opt
const OptionDef * opt
Definition: cmdutils.h:295
swr_opts
AVDictionary * swr_opts
Definition: cmdutils.c:70
show_encoders
int show_encoders(void *optctx, const char *opt, const char *arg)
Print a listing containing all the encoders supported by the program.
Definition: cmdutils.c:1651
filter_codec_opts
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
Filter out options for given codec.
Definition: cmdutils.c:2120
show_version
int show_version(void *optctx, const char *opt, const char *arg)
Print the version of the program to stdout.
Definition: cmdutils.c:1196
show_pix_fmts
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the pixel formats supported by the program.
Definition: cmdutils.c:1747
OptionGroup::opts
Option * opts
Definition: cmdutils.h:319
OptionGroup
Definition: cmdutils.h:315
parse_optgroup
int parse_optgroup(void *optctx, OptionGroup *g)
Parse an options group and write results into optctx.
Definition: cmdutils.c:405
AVCodecID
AVCodecID
Identify the syntax and semantics of the bitstream.
Definition: codec_id.h:47
check_stream_specifier
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the given stream matches a stream specifier.
Definition: cmdutils.c:2112
read_yesno
int read_yesno(void)
Return a positive value if a line read from standard input starts with [yY], otherwise return 0.
Definition: cmdutils.c:2051
show_license
int show_license(void *optctx, const char *opt, const char *arg)
Print the license of the program to stdout.
Definition: cmdutils.c:1213
options
const OptionDef options[]
opt_codec_debug
int opt_codec_debug(void *optctx, const char *opt, const char *arg)
show_demuxers
int show_demuxers(void *optctx, const char *opt, const char *arg)
Print a listing containing all the demuxer supported by the program (including devices).
Definition: cmdutils.c:1367
opt_cpuflags
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Override the cpuflags.
Definition: cmdutils.c:834
size
int size
Definition: twinvq_data.h:10344
show_devices
int show_devices(void *optctx, const char *opt, const char *arg)
Print a listing containing all the devices supported by the program.
Definition: cmdutils.c:1372
show_banner
void show_banner(int argc, char **argv, const OptionDef *options)
Print the program banner to stderr.
Definition: cmdutils.c:1185
register_exit
void register_exit(void(*cb)(int ret))
Register a program-specific cleanup routine.
Definition: cmdutils.c:123
uninit_parse_context
void uninit_parse_context(OptionParseContext *octx)
Free all allocated memory in an OptionParseContext.
Definition: cmdutils.c:703
exit_program
void exit_program(int ret) av_noreturn
Wraps exit with a program-specific cleanup routine.
Definition: cmdutils.c:128
show_decoders
int show_decoders(void *optctx, const char *opt, const char *arg)
Print a listing containing all the decoders supported by the program.
Definition: cmdutils.c:1645
opt_loglevel
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Set the libav* libraries log level.
Definition: cmdutils.c:872
opt_max_alloc
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
Definition: cmdutils.c:1060
parse_loglevel
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Find the '-loglevel' option in the command line args and apply it.
Definition: cmdutils.c:497
show_muxers
int show_muxers(void *optctx, const char *opt, const char *arg)
Print a listing containing all the muxers supported by the program (including devices).
Definition: cmdutils.c:1362
opt_default
int opt_default(void *optctx, const char *opt, const char *arg)
Fallback for options that are not explicitly handled, these will be parsed through AVOptions.
Definition: cmdutils.c:536
format_opts
AVDictionary * format_opts
Definition: cmdutils.c:71
OptionParseContext::groups
OptionGroupList * groups
Definition: cmdutils.h:342
show_protocols
int show_protocols(void *optctx, const char *opt, const char *arg)
Print a listing containing all the protocols supported by the program.
Definition: cmdutils.c:1669
OptionDef::u
union OptionDef::@1 u
avcodec.h
SpecifierOpt::i64
int64_t i64
Definition: cmdutils.h:156
OptionGroup::sws_dict
AVDictionary * sws_dict
Definition: cmdutils.h:324
SpecifierOpt
Definition: cmdutils.h:151
split_commandline
int split_commandline(OptionParseContext *octx, int argc, char *argv[], const OptionDef *options, const OptionGroupDef *groups, int nb_groups)
Split the commandline into an intermediate form convenient for further processing.
Definition: cmdutils.c:728
array
static int array[MAX_W *MAX_W]
Definition: jpeg2000dwt.c:106
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:935
hide_banner
int hide_banner
Definition: cmdutils.c:75
OptionGroup::arg
const char * arg
Definition: cmdutils.h:317
avformat.h
show_help
int show_help(void *optctx, const char *opt, const char *arg)
Generic -h handler common to all fftools.
Definition: cmdutils.c:2013
AVCodecContext
main external API structure.
Definition: avcodec.h:383
SpecifierOpt::str
uint8_t * str
Definition: cmdutils.h:154
show_formats
int show_formats(void *optctx, const char *opt, const char *arg)
Print a listing containing all the formats supported by the program (including devices).
Definition: cmdutils.c:1357
avfilter.h
show_colors
int show_colors(void *optctx, const char *opt, const char *arg)
Print a listing containing all the color names and values recognized by the program.
Definition: cmdutils.c:1733
show_codecs
int show_codecs(void *optctx, const char *opt, const char *arg)
Print a listing containing all the codecs supported by the program.
Definition: cmdutils.c:1550
show_filters
int show_filters(void *optctx, const char *opt, const char *arg)
Print a listing containing all the filters supported by the program.
Definition: cmdutils.c:1684
show_buildconf
int show_buildconf(void *optctx, const char *opt, const char *arg)
Print the build configuration of the program to stdout.
Definition: cmdutils.c:1205
Option::val
const char * val
Definition: cmdutils.h:297
show_dispositions
int show_dispositions(void *optctx, const char *opt, const char *arg)
Print a listing containing all supported stream dispositions.
Definition: cmdutils.c:1823
SpecifierOpt::u
union SpecifierOpt::@0 u
OptionDef::name
const char * name
Definition: cmdutils.h:164
show_sample_fmts
int show_sample_fmts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the sample formats supported by the program.
Definition: cmdutils.c:1814
SpecifierOpt::dbl
double dbl
Definition: cmdutils.h:159
init_opts
void init_opts(void)
Initialize the cmdutils option system, in particular allocate the *_opts contexts.
OptionGroupDef::sep
const char * sep
Option to be used as group separator.
Definition: cmdutils.h:307
show_bsfs
int show_bsfs(void *optctx, const char *opt, const char *arg)
Print a listing containing all the bit stream filters supported by the program.
Definition: cmdutils.c:1657
log_callback_help
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
Trivial log callback.
Definition: cmdutils.c:91
int32_t
int32_t
Definition: audioconvert.c:56
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
opt_report
int opt_report(void *optctx, const char *opt, const char *arg)
Definition: cmdutils.c:1055
OptionParseContext::nb_groups
int nb_groups
Definition: cmdutils.h:343
parse_option
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Parse one given option.
Definition: cmdutils.c:341
avformat_opts
AVFormatContext * avformat_opts
locate_option
int locate_option(int argc, char **argv, const OptionDef *options, const char *optname)
Return index of option opt in argv or 0 if not found.
Definition: cmdutils.c:438
int
int
Definition: ffmpeg_filter.c:153
opt_cpucount
int opt_cpucount(void *optctx, const char *opt, const char *arg)
Override the cpucount.
Definition: cmdutils.c:846
OptionParseContext::cur_group
OptionGroup cur_group
Definition: cmdutils.h:346
SpecifierOpt::f
float f
Definition: cmdutils.h:158
swscale.h
OptionDef::func_arg
int(* func_arg)(void *, const char *, const char *)
Definition: cmdutils.h:187
show_help_options
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags, int alt_flags)
Print help for all options matching specified flags.
Definition: cmdutils.c:169
program_birth_year
const int program_birth_year
program birth year, defined by the program for show_banner()
Definition: ffmpeg.c:110
min
float min
Definition: vorbis_enc_data.h:429
OptionDef::flags
int flags
Definition: cmdutils.h:165