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.

Macros

#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().
voidgrow_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 = 2014
static int warned_cfg = 1

Macro Definition 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 469 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 473 of file cmdutils.c.

Referenced by print_all_libs_info().

#define SHOW_CONFIG   4

Definition at line 471 of file cmdutils.c.

Referenced by show_banner().

#define SHOW_VERSION   2

Definition at line 470 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
sCorresponding format context.
stStream from s to be checked.
specA 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 909 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
bufptrlocation where pointer to buffer is returned
sizelocation 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 811 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
sCorresponding format context.
stA stream from s for which the options should be filtered.
Returns
a pointer to the created dictionary

Definition at line 962 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
filenamebuffer where the name of the found filename is written
filename_sizesize in bytes of the filename buffer
preset_namename of the preset to search
is_pathtell if preset_name is a filename path
codec_namename of the codec for which to look for the preset, may be NULL

Definition at line 876 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_sizesize in bytes of each element
sizenew element count will be written here
Returns
reallocated array

Definition at line 1105 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
ptsthe pts field of the decoded AVPacket, as passed through AVCodecContext.reordered_opaque
dtsthe dts field of the decoded AVPacket
Returns
one of the input values, may be AV_NOPTS_VALUE

Definition at line 854 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 848 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 407 of file cmdutils.c.

Referenced by parse_loglevel().

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

Limit the execution time.

Definition at line 442 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
contextthe context of the value to be set (e.g. the corresponding command line option name)
numstrthe string to be parsed
typethe type (OPT_INT64 or OPT_FLOAT) as which the string should be parsed
minthe minimum valid accepted value
maxthe 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
contextthe context of the value to be set (e.g. the corresponding command line option name)
timestrthe string to be parsed
is_durationa 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 
)
inlinestatic

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 500 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 455 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 800 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 1019 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 513 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 724 of file cmdutils.c.

void show_codecs ( void  )

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

Definition at line 647 of file cmdutils.c.

void show_filters ( void  )

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

Definition at line 748 of file cmdutils.c.

void show_formats ( void  )

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

Definition at line 600 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 531 of file cmdutils.c.

void show_pix_fmts ( void  )

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

Definition at line 759 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 734 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 791 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 525 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

AVDictionary* format_opts

Definition at line 56 of file cmdutils.c.

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

struct SwsContext* sws_opts

Definition at line 55 of file cmdutils.c.

Referenced by new_output_stream(), and queue_picture().

const int this_year = 2014
static

Definition at line 58 of file cmdutils.c.

Referenced by show_banner().

int warned_cfg = 1
static

Definition at line 467 of file cmdutils.c.