cmdutils.c File Reference

#include <string.h>
#include <stdlib.h>
#include <errno.h>
#include <math.h>
#include "config.h"
#include "libavformat/avformat.h"
#include "libavfilter/avfilter.h"
#include "libavdevice/avdevice.h"
#include "libswscale/swscale.h"
#include "libavutil/avstring.h"
#include "libavutil/mathematics.h"
#include "libavutil/parseutils.h"
#include "libavutil/pixdesc.h"
#include "libavutil/eval.h"
#include "libavutil/dict.h"
#include "libavutil/opt.h"
#include "cmdutils.h"
#include "version.h"

Go to the source code of this file.

Defines

#define FLAGS   (o->type == AV_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0
#define INDENT   1
#define SHOW_VERSION   2
#define SHOW_CONFIG   4
#define PRINT_LIB_INFO(libname, LIBNAME, flags, level)
#define sws_isSupportedInput(x)   0
#define sws_isSupportedOutput(x)   0

Functions

void init_opts (void)
 Initialize the cmdutils option system, in particular allocate the *_opts contexts.
void uninit_opts (void)
 Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.
void log_callback_help (void *ptr, int level, const char *fmt, va_list vl)
 Trivial log callback.
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.
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.
void show_help_options (const OptionDef *options, const char *msg, int mask, int value)
void show_help_children (const AVClass *class, int flags)
 Show help for all options with given flags in class and all its children.
static const OptionDeffind_option (const OptionDef *po, const char *name)
static void prepare_app_arguments (int *argc_ptr, char ***argv_ptr)
int parse_option (void *optctx, const char *opt, const char *arg, const OptionDef *options)
 Parse one given option.
void parse_options (void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *))
static int locate_option (int argc, char **argv, const OptionDef *options, const char *optname)
void parse_loglevel (int argc, char **argv, const OptionDef *options)
 Find the '-loglevel' option in the command line args and apply it.
int opt_default (const char *opt, const char *arg)
 Fallback for options that are not explicitly handled, these will be parsed through AVOptions.
int opt_loglevel (const char *opt, const char *arg)
 Set the libav* libraries log level.
int opt_timelimit (const char *opt, const char *arg)
 Limit the execution time.
void print_error (const char *filename, int err)
 Print an error message to stderr, indicating filename and a human readable description of the error code err.
static void print_all_libs_info (int flags, int level)
void show_banner (void)
 Print the program banner to stderr.
void show_version (void)
 Print the version of the program to stdout.
void show_license (void)
 Print the license of the program to stdout.
void show_formats (void)
 Print a listing containing all the formats supported by the program.
void show_codecs (void)
 Print a listing containing all the codecs supported by the program.
void show_bsfs (void)
 Print a listing containing all the bit stream filters supported by the program.
void show_protocols (void)
 Print a listing containing all the protocols supported by the program.
void show_filters (void)
 Print a listing containing all the filters supported by the program.
void show_pix_fmts (void)
 Print a listing containing all the pixel formats supported by the program.
int show_sample_fmts (const char *opt, const char *arg)
 Print a listing containing all the sample formats supported by the program.
int read_yesno (void)
 Return a positive value if a line read from standard input starts with [yY], otherwise return 0.
int cmdutils_read_file (const char *filename, char **bufptr, size_t *size)
 Read the file with name filename, and put its content in a newly allocated 0-terminated buffer.
void init_pts_correction (PtsCorrectionContext *ctx)
 Reset the state of the PtsCorrectionContext.
int64_t guess_correct_pts (PtsCorrectionContext *ctx, int64_t reordered_pts, int64_t dts)
 Attempt to guess proper monotonic timestamps for decoded video frames which might have incorrect times.
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 check_stream_specifier (AVFormatContext *s, AVStream *st, const char *spec)
 Check if the given stream matches a stream specifier.
AVDictionaryfilter_codec_opts (AVDictionary *opts, enum CodecID codec_id, AVFormatContext *s, AVStream *st)
 Filter out options for given codec.
AVDictionary ** setup_find_stream_info_opts (AVFormatContext *s, AVDictionary *codec_opts)
 Setup AVCodecContext options for avformat_find_stream_info().
void * grow_array (void *array, int elem_size, int *size, int new_size)
 Realloc array to hold new_size elements of elem_size.

Variables

struct SwsContextsws_opts
AVDictionaryformat_opts
AVDictionarycodec_opts
static const int this_year = 2012
static int warned_cfg = 1

Define Documentation

#define FLAGS   (o->type == AV_OPT_TYPE_FLAGS) ? AV_DICT_APPEND : 0

Definition at line 366 of file cmdutils.c.

Referenced by opt_default().

#define INDENT   1

Definition at line 464 of file cmdutils.c.

Referenced by show_banner().

#define PRINT_LIB_INFO (   libname,
  LIBNAME,
  flags,
  level 
)
Value:
if (CONFIG_##LIBNAME) {                                             \
        const char *indent = flags & INDENT? "  " : "";                 \
        if (flags & SHOW_VERSION) {                                     \
            unsigned int version = libname##_version();                 \
            av_log(NULL, level, "%slib%-9s %2d.%3d.%2d / %2d.%3d.%2d\n",\
                   indent, #libname,                                    \
                   LIB##LIBNAME##_VERSION_MAJOR,                        \
                   LIB##LIBNAME##_VERSION_MINOR,                        \
                   LIB##LIBNAME##_VERSION_MICRO,                        \
                   version >> 16, version >> 8 & 0xff, version & 0xff); \
        }                                                               \
        if (flags & SHOW_CONFIG) {                                      \
            const char *cfg = libname##_configuration();                \
            if (strcmp(LIBAV_CONFIGURATION, cfg)) {                     \
                if (!warned_cfg) {                                      \
                    av_log(NULL, level,                                 \
                            "%sWARNING: library configuration mismatch\n", \
                            indent);                                    \
                    warned_cfg = 1;                                     \
                }                                                       \
                av_log(NULL, level, "%s%-11s configuration: %s\n",      \
                        indent, #libname, cfg);                         \
            }                                                           \
        }                                                               \
    }                                                                   \

Definition at line 468 of file cmdutils.c.

Referenced by print_all_libs_info().

#define SHOW_CONFIG   4

Definition at line 466 of file cmdutils.c.

Referenced by show_banner().

#define SHOW_VERSION   2

Definition at line 465 of file cmdutils.c.

Referenced by show_banner(), and show_version().

#define sws_isSupportedInput (   x  )     0
#define sws_isSupportedOutput (   x  )     0

Function Documentation

int check_stream_specifier ( AVFormatContext s,
AVStream st,
const char *  spec 
)

Check if the given stream matches a stream specifier.

Parameters:
s Corresponding format context.
st Stream from s to be checked.
spec A stream specifier of the [v|a|s|d]:[<stream index>] form.
Returns:
1 if the stream matches, 0 if it doesn't, <0 on error

Definition at line 904 of file cmdutils.c.

Referenced by copy_metadata(), filter_codec_opts(), opt_input_file(), opt_map(), and opt_output_file().

int cmdutils_read_file ( const char *  filename,
char **  bufptr,
size_t *  size 
)

Read the file with name filename, and put its content in a newly allocated 0-terminated buffer.

Parameters:
bufptr location where pointer to buffer is returned
size location where size of buffer is returned
Returns:
0 in case of success, a negative value corresponding to an AVERROR error code in case of failure.

Definition at line 806 of file cmdutils.c.

Referenced by transcode(), and transcode_init().

AVDictionary* filter_codec_opts ( AVDictionary opts,
enum CodecID  codec_id,
AVFormatContext s,
AVStream st 
)

Filter out options for given codec.

Create a new options dictionary containing only the options from opts which apply to the codec with ID codec_id.

Parameters:
s Corresponding format context.
st A stream from s for which the options should be filtered.
Returns:
a pointer to the created dictionary

Definition at line 957 of file cmdutils.c.

Referenced by add_input_streams(), new_output_stream(), opt_input_file(), setup_find_stream_info_opts(), and stream_component_open().

static const OptionDef* find_option ( const OptionDef po,
const char *  name 
) [static]

Definition at line 150 of file cmdutils.c.

Referenced by locate_option(), and parse_option().

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.

If is_path is non-zero, look for the file in the path preset_name. Otherwise search for a file named arg.avpreset in the directories $AVCONV_DATADIR (if set), $HOME/.avconv, and in the datadir defined at configuration time, in that order. If no such file is found and codec_name is defined, then search for a file named codec_name-preset_name.avpreset in the above-mentioned directories.

Parameters:
filename buffer where the name of the found filename is written
filename_size size in bytes of the filename buffer
preset_name name of the preset to search
is_path tell if preset_name is a filename path
codec_name name of the codec for which to look for the preset, may be NULL

Definition at line 871 of file cmdutils.c.

Referenced by avserver_opt_preset(), and opt_preset().

void* grow_array ( void *  array,
int  elem_size,
int *  size,
int  new_size 
)

Realloc array to hold new_size elements of elem_size.

Calls exit_program() on failure.

Parameters:
elem_size size in bytes of each element
size new element count will be written here
Returns:
reallocated array

Definition at line 1100 of file cmdutils.c.

Referenced by add_input_streams(), new_output_stream(), opt_attach(), opt_input_file(), opt_input_ts_scale(), opt_map(), opt_map_chapters(), opt_map_metadata(), opt_output_file(), opt_streamid(), and parse_option().

int64_t guess_correct_pts ( PtsCorrectionContext ctx,
int64_t  pts,
int64_t  dts 
)

Attempt to guess proper monotonic timestamps for decoded video frames which might have incorrect times.

Input timestamps may wrap around, in which case the output will as well.

Parameters:
pts the pts field of the decoded AVPacket, as passed through AVCodecContext.reordered_opaque
dts the dts field of the decoded AVPacket
Returns:
one of the input values, may be AV_NOPTS_VALUE

Definition at line 849 of file cmdutils.c.

Referenced by get_video_frame(), output_packet(), and transcode_video().

void init_opts ( void   ) 

Initialize the cmdutils option system, in particular allocate the *_opts contexts.

Definition at line 60 of file cmdutils.c.

Referenced by main(), opt_input_file(), opt_output_file(), and reset_options().

void init_pts_correction ( PtsCorrectionContext ctx  ) 

Reset the state of the PtsCorrectionContext.

Definition at line 843 of file cmdutils.c.

Referenced by get_video_frame(), init_input_stream(), and transcode().

static int locate_option ( int  argc,
char **  argv,
const OptionDef options,
const char *  optname 
) [static]

Definition at line 331 of file cmdutils.c.

Referenced by parse_loglevel().

void log_callback_help ( void *  ptr,
int  level,
const char *  fmt,
va_list  vl 
)

Trivial log callback.

Only suitable for show_help and similar since it lacks prefix handling.

Definition at line 78 of file cmdutils.c.

Referenced by show_help(), and show_version().

int opt_default ( const char *  opt,
const char *  arg 
)

Fallback for options that are not explicitly handled, these will be parsed through AVOptions.

Definition at line 367 of file cmdutils.c.

Referenced by opt_preset(), opt_target(), opt_video_channel(), and opt_video_standard().

int opt_loglevel ( const char *  opt,
const char *  arg 
)

Set the libav* libraries log level.

Definition at line 402 of file cmdutils.c.

Referenced by parse_loglevel().

int opt_timelimit ( const char *  opt,
const char *  arg 
)

Limit the execution time.

Definition at line 437 of file cmdutils.c.

void parse_loglevel ( int  argc,
char **  argv,
const OptionDef options 
)

Find the '-loglevel' option in the command line args and apply it.

Definition at line 357 of file cmdutils.c.

Referenced by main().

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.

Exit from the application if the string cannot be correctly parsed or the corresponding value is invalid.

Parameters:
context the context of the value to be set (e.g. the corresponding command line option name)
numstr the string to be parsed
type the type (OPT_INT64 or OPT_FLOAT) as which the string should be parsed
min the minimum valid accepted value
max the maximum valid accepted value

Definition at line 83 of file cmdutils.c.

Referenced by opt_audio_channels(), opt_audio_rate(), opt_debug(), opt_height(), opt_me_threshold(), opt_pass(), opt_qscale(), opt_streamid(), opt_thread_count(), opt_timelimit(), opt_top_field_first(), opt_verbose(), opt_vismv(), opt_vsync(), opt_width(), and parse_option().

int parse_option ( void *  optctx,
const char *  opt,
const char *  arg,
const OptionDef options 
)

Parse one given option.

Returns:
on success 1 if arg was consumed, 0 otherwise; negative number on error

Definition at line 224 of file cmdutils.c.

Referenced by opt_audio_codec(), opt_audio_frames(), opt_audio_qscale(), opt_audio_tag(), opt_data_codec(), opt_data_frames(), opt_subtitle_codec(), opt_subtitle_tag(), opt_target(), opt_video_codec(), opt_video_filters(), opt_video_frames(), opt_video_tag(), and parse_options().

void parse_options ( void *  optctx,
int  argc,
char **  argv,
const OptionDef options,
void(*)(void *, const char *)  parse_arg_function 
)

Definition at line 297 of file cmdutils.c.

Referenced by main().

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.

Exit from the application if the string cannot be correctly parsed.

Parameters:
context the context of the value to be set (e.g. the corresponding command line option name)
timestr the string to be parsed
is_duration a flag which tells how to interpret timestr, if not zero timestr is interpreted as a duration, otherwise as a date
See also:
parse_date()

Definition at line 104 of file cmdutils.c.

Referenced by opt_duration(), opt_input_ts_offset(), opt_recording_time(), opt_recording_timestamp(), opt_seek(), opt_start_time(), parse_forced_key_frames(), and parse_option().

static void prepare_app_arguments ( int *  argc_ptr,
char ***  argv_ptr 
) [inline, static]

Definition at line 218 of file cmdutils.c.

Referenced by parse_options().

static void print_all_libs_info ( int  flags,
int  level 
) [static]

Definition at line 495 of file cmdutils.c.

Referenced by show_banner(), and show_version().

void print_error ( const char *  filename,
int  err 
)

Print an error message to stderr, indicating filename and a human readable description of the error code err.

If strerror_r() is not available the use of this function in a multithreaded application may be unsafe.

See also:
av_strerror()

Definition at line 450 of file cmdutils.c.

Referenced by decode_thread(), open_input_file(), opt_input_file(), opt_output_file(), and write_frame().

int read_yesno ( void   ) 

Return a positive value if a line read from standard input starts with [yY], otherwise return 0.

Definition at line 795 of file cmdutils.c.

Referenced by assert_file_overwrite(), and opt_output_file().

AVDictionary** setup_find_stream_info_opts ( AVFormatContext s,
AVDictionary codec_opts 
)

Setup AVCodecContext options for avformat_find_stream_info().

Create an array of dictionaries, one dictionary for each stream contained in s. Each dictionary will contain the options from codec_opts which can be applied to the corresponding stream codec context.

Returns:
pointer to the created array of dictionaries, NULL if it cannot be created

Definition at line 1014 of file cmdutils.c.

Referenced by decode_thread(), and opt_input_file().

void show_banner ( void   ) 

Print the program banner to stderr.

The banner contents depend on the current version of the repository and of the libav* libraries used by the program.

Definition at line 508 of file cmdutils.c.

Referenced by main().

void show_bsfs ( void   ) 

Print a listing containing all the bit stream filters supported by the program.

Definition at line 719 of file cmdutils.c.

void show_codecs ( void   ) 

Print a listing containing all the codecs supported by the program.

Definition at line 642 of file cmdutils.c.

void show_filters ( void   ) 

Print a listing containing all the filters supported by the program.

Definition at line 743 of file cmdutils.c.

void show_formats ( void   ) 

Print a listing containing all the formats supported by the program.

Definition at line 595 of file cmdutils.c.

void show_help_children ( const AVClass class,
int  flags 
)

Show help for all options with given flags in class and all its children.

Definition at line 140 of file cmdutils.c.

Referenced by show_help(), and show_help_children().

void show_help_options ( const OptionDef options,
const char *  msg,
int  mask,
int  value 
)

Definition at line 116 of file cmdutils.c.

Referenced by show_help().

void show_license ( void   ) 

Print the license of the program to stdout.

The license depends on the license of the libraries compiled into the program.

Definition at line 526 of file cmdutils.c.

void show_pix_fmts ( void   ) 

Print a listing containing all the pixel formats supported by the program.

Definition at line 754 of file cmdutils.c.

Referenced by opt_frame_pix_fmt().

void show_protocols ( void   ) 

Print a listing containing all the protocols supported by the program.

Definition at line 729 of file cmdutils.c.

int show_sample_fmts ( const char *  opt,
const char *  arg 
)

Print a listing containing all the sample formats supported by the program.

Definition at line 786 of file cmdutils.c.

void show_version ( void   ) 

Print the version of the program to stdout.

The version message depends on the current versions of the repository and of the libav* libraries.

Definition at line 520 of file cmdutils.c.

void uninit_opts ( void   ) 

Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.

Definition at line 68 of file cmdutils.c.

Referenced by do_exit(), exit_program(), opt_input_file(), opt_output_file(), and reset_options().


Variable Documentation

Definition at line 55 of file cmdutils.c.

Referenced by new_output_stream(), and queue_picture().

const int this_year = 2012 [static]

Definition at line 58 of file cmdutils.c.

Referenced by show_banner().

int warned_cfg = 1 [static]

Definition at line 462 of file cmdutils.c.