22 #ifndef FFTOOLS_CMDUTILS_H 
   23 #define FFTOOLS_CMDUTILS_H 
  127                            double min, 
double max);
 
  161 #define HAS_ARG    0x0001 
  162 #define OPT_BOOL   0x0002 
  163 #define OPT_EXPERT 0x0004 
  164 #define OPT_STRING 0x0008 
  165 #define OPT_VIDEO  0x0010 
  166 #define OPT_AUDIO  0x0020 
  167 #define OPT_INT    0x0080 
  168 #define OPT_FLOAT  0x0100 
  169 #define OPT_SUBTITLE 0x0200 
  170 #define OPT_INT64  0x0400 
  171 #define OPT_EXIT   0x0800 
  172 #define OPT_DATA   0x1000 
  173 #define OPT_PERFILE  0x2000      
  175 #define OPT_OFFSET 0x4000        
  176 #define OPT_SPEC   0x8000        
  179 #define OPT_TIME  0x10000 
  180 #define OPT_DOUBLE 0x20000 
  181 #define OPT_INPUT  0x40000 
  182 #define OPT_OUTPUT 0x80000 
  202                        int rej_flags, 
int alt_flags);
 
  205 #define CMDUTILS_COMMON_OPTIONS_AVDEVICE                                                                                \ 
  206     { "sources"    , OPT_EXIT | HAS_ARG, { .func_arg = show_sources },                                                  \ 
  207       "list sources of the input device", "device" },                                                                   \ 
  208     { "sinks"      , OPT_EXIT | HAS_ARG, { .func_arg = show_sinks },                                                    \ 
  209       "list sinks of the output device", "device" },                                                                    \ 
  212 #define CMDUTILS_COMMON_OPTIONS_AVDEVICE 
  215 #define CMDUTILS_COMMON_OPTIONS                                                                                         \ 
  216     { "L",           OPT_EXIT,             { .func_arg = show_license },     "show license" },                          \ 
  217     { "h",           OPT_EXIT,             { .func_arg = show_help },        "show help", "topic" },                    \ 
  218     { "?",           OPT_EXIT,             { .func_arg = show_help },        "show help", "topic" },                    \ 
  219     { "help",        OPT_EXIT,             { .func_arg = show_help },        "show help", "topic" },                    \ 
  220     { "-help",       OPT_EXIT,             { .func_arg = show_help },        "show help", "topic" },                    \ 
  221     { "version",     OPT_EXIT,             { .func_arg = show_version },     "show version" },                          \ 
  222     { "buildconf",   OPT_EXIT,             { .func_arg = show_buildconf },   "show build configuration" },              \ 
  223     { "formats",     OPT_EXIT,             { .func_arg = show_formats },     "show available formats" },                \ 
  224     { "muxers",      OPT_EXIT,             { .func_arg = show_muxers },      "show available muxers" },                 \ 
  225     { "demuxers",    OPT_EXIT,             { .func_arg = show_demuxers },    "show available demuxers" },               \ 
  226     { "devices",     OPT_EXIT,             { .func_arg = show_devices },     "show available devices" },                \ 
  227     { "codecs",      OPT_EXIT,             { .func_arg = show_codecs },      "show available codecs" },                 \ 
  228     { "decoders",    OPT_EXIT,             { .func_arg = show_decoders },    "show available decoders" },               \ 
  229     { "encoders",    OPT_EXIT,             { .func_arg = show_encoders },    "show available encoders" },               \ 
  230     { "bsfs",        OPT_EXIT,             { .func_arg = show_bsfs },        "show available bit stream filters" },     \ 
  231     { "protocols",   OPT_EXIT,             { .func_arg = show_protocols },   "show available protocols" },              \ 
  232     { "filters",     OPT_EXIT,             { .func_arg = show_filters },     "show available filters" },                \ 
  233     { "pix_fmts",    OPT_EXIT,             { .func_arg = show_pix_fmts },    "show available pixel formats" },          \ 
  234     { "layouts",     OPT_EXIT,             { .func_arg = show_layouts },     "show standard channel layouts" },         \ 
  235     { "sample_fmts", OPT_EXIT,             { .func_arg = show_sample_fmts }, "show available audio sample formats" },   \ 
  236     { "colors",      OPT_EXIT,             { .func_arg = show_colors },      "show available color names" },            \ 
  237     { "loglevel",    HAS_ARG,              { .func_arg = opt_loglevel },     "set logging level", "loglevel" },         \ 
  238     { "v",           HAS_ARG,              { .func_arg = opt_loglevel },     "set logging level", "loglevel" },         \ 
  239     { "report",      0,                    { (void*)opt_report },            "generate a report" },                     \ 
  240     { "max_alloc",   HAS_ARG,              { .func_arg = opt_max_alloc },    "set maximum size of a single allocated block", "bytes" }, \ 
  241     { "cpuflags",    HAS_ARG | OPT_EXPERT, { .func_arg = opt_cpuflags },     "force specific cpu flags", "flags" },     \ 
  242     { "hide_banner", OPT_BOOL | OPT_EXPERT, {&hide_banner},     "do not show program banner", "hide_banner" },          \ 
  243     CMDUTILS_COMMON_OPTIONS_AVDEVICE                                                                                    \ 
  260 int show_help(
void *optctx, 
const char *opt, 
const char *
arg);
 
  275                    void (* parse_arg_function)(
void *optctx, 
const char*));
 
  389                   const char *optname);
 
  506 int show_sinks(
void *optctx, 
const char *opt, 
const char *
arg);
 
  512 int show_sources(
void *optctx, 
const char *opt, 
const char *
arg);
 
  546 int show_bsfs(
void *optctx, 
const char *opt, 
const char *
arg);
 
  606                       const char *preset_name, 
int is_path, 
const char *codec_name);
 
  620 #define media_type_string av_get_media_type_string 
  622 #define GROW_ARRAY(array, nb_elems)\ 
  623     array = grow_array(array, sizeof(*array), &nb_elems, nb_elems + 1) 
  625 #define GET_PIX_FMT_NAME(pix_fmt)\ 
  626     const char *name = av_get_pix_fmt_name(pix_fmt); 
  628 #define GET_CODEC_NAME(id)\ 
  629     const char *name = avcodec_descriptor_get(id)->name; 
  631 #define GET_SAMPLE_FMT_NAME(sample_fmt)\ 
  632     const char *name = av_get_sample_fmt_name(sample_fmt) 
  634 #define GET_SAMPLE_RATE_NAME(rate)\ 
  636     snprintf(name, sizeof(name), "%d", rate); 
  638 #define GET_CH_LAYOUT_NAME(ch_layout)\ 
  640     snprintf(name, sizeof(name), "0x%"PRIx64, ch_layout); 
  642 #define GET_CH_LAYOUT_DESC(ch_layout)\ 
  644     av_get_channel_layout_string(name, sizeof(name), 0, ch_layout); 
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. 
int show_bsfs(void *optctx, const char *opt, const char *arg)
Print a listing containing all the bit stream filters supported by the program. 
int opt_codec_debug(void *optctx, const char *opt, const char *arg)
AVDictionary * resample_opts
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the pixel formats supported by the program. 
const char * name
< group name 
int parse_optgroup(void *optctx, OptionGroup *g)
Parse an options group and write results into optctx. 
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the given stream matches a stream specifier. 
void uninit_parse_context(OptionParseContext *octx)
Free all allocated memory in an OptionParseContext. 
int(* func_arg)(void *, const char *, const char *)
Main libavfilter public API header. 
AVCodecContext * avcodec_opts[AVMEDIA_TYPE_NB]
const char * sep
Option to be used as group separator. 
int show_decoders(void *optctx, const char *opt, const char *arg)
Print a listing containing all the decoders supported by the program. 
void register_exit(void(*cb)(int ret))
Register a program-specific cleanup routine. 
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
AVDictionary * format_opts
static double cb(void *priv, double x, double y)
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. 
static const OptionGroupDef groups[]
int opt_timelimit(void *optctx, const char *opt, const char *arg)
Limit the execution time. 
int show_protocols(void *optctx, const char *opt, const char *arg)
Print a listing containing all the protocols supported by the program. 
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Find the '-loglevel' option in the command line args and apply it. 
void uninit_opts(void)
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents...
int flags
Option flags that must be set on each option that is applied to this group. 
int show_license(void *optctx, const char *opt, const char *arg)
Print the license of the program to stdout. 
AVCodecID
Identify the syntax and semantics of the bitstream. 
int show_layouts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the standard channel layouts supported by the program. 
int show_buildconf(void *optctx, const char *opt, const char *arg)
Print the build configuration of the program to stdout. 
void init_opts(void)
Initialize the cmdutils option system, in particular allocate the *_opts contexts. 
int show_demuxers(void *optctx, const char *opt, const char *arg)
Print a listing containing all the demuxer supported by the program (including devices). 
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. 
const int program_birth_year
program birth year, defined by the program for show_banner() 
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Setup AVCodecContext options for avformat_find_stream_info(). 
const OptionGroupDef * group_def
A list of option groups that all have the same group type (e.g. 
void show_help_default(const char *opt, const char *arg)
Per-fftool specific help handler. 
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. 
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Parse one given option. 
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...
char * specifier
stream/chapter/program/... 
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Set the libav* libraries log level. 
int opt_report(const char *opt)
union SpecifierOpt::@22 u
int show_version(void *optctx, const char *opt, const char *arg)
Print the version of the program to stdout. 
void show_banner(int argc, char **argv, const OptionDef *options)
Print the program banner to stderr. 
Libavcodec external API header. 
int show_formats(void *optctx, const char *opt, const char *arg)
Print a listing containing all the formats supported by the program (including devices). 
main external API structure. 
int show_devices(void *optctx, const char *opt, const char *arg)
Print a listing containing all the devices supported by the program. 
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...
AVDictionary * codec_opts
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, AVCodec *codec)
Filter out options for given codec. 
const OptionGroupDef * group_def
Describe the class of an AVClass context structure. 
int show_codecs(void *optctx, const char *opt, const char *arg)
Print a listing containing all the codecs supported by the program. 
#define flags(name, subs,...)
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. 
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. 
void exit_program(int ret) av_noreturn
Wraps exit with a program-specific cleanup routine. 
int show_muxers(void *optctx, const char *opt, const char *arg)
Print a listing containing all the muxers supported by the program (including devices). 
An option extracted from the commandline. 
const OptionDef options[]
AVDictionary * format_opts
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. 
AVFormatContext * avformat_opts
void * grow_array(void *array, int elem_size, int *size, int new_size)
Realloc array to hold new_size elements of elem_size. 
int show_encoders(void *optctx, const char *opt, const char *arg)
Print a listing containing all the encoders supported by the program. 
void show_help_children(const AVClass *class, int flags)
Show help for all options with given flags in class and all its children. 
int show_help(void *optctx, const char *opt, const char *arg)
Generic -h handler common to all fftools. 
AVDictionary * resample_opts
int show_sample_fmts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the sample formats supported by the program. 
AVDictionary * codec_opts
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
Trivial log callback. 
double get_rotation(AVStream *st)
static int array[MAX_W *MAX_W]
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...
int show_filters(void *optctx, const char *opt, const char *arg)
Print a listing containing all the filters supported by the program. 
void init_dynload(void)
Initialize dynamic library loading. 
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Override the cpuflags. 
int read_yesno(void)
Return a positive value if a line read from standard input starts with [yY], otherwise return 0...
const char program_name[]
program name, defined by the program for show_version().