FFmpeg
|
#include <string.h>
#include <stdint.h>
#include <stdlib.h>
#include <errno.h>
#include <math.h>
#include "config.h"
#include "compat/va_copy.h"
#include "libavformat/avformat.h"
#include "libswscale/swscale.h"
#include "libswscale/version.h"
#include "libswresample/swresample.h"
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/channel_layout.h"
#include "libavutil/display.h"
#include "libavutil/getenv_utf8.h"
#include "libavutil/mathematics.h"
#include "libavutil/imgutils.h"
#include "libavutil/libm.h"
#include "libavutil/parseutils.h"
#include "libavutil/eval.h"
#include "libavutil/dict.h"
#include "libavutil/opt.h"
#include "cmdutils.h"
#include "fopen_utf8.h"
#include "opt_common.h"
Go to the source code of this file.
Macros | |
#define | FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0 |
#define | GET_ARG(arg) |
Functions | |
void | uninit_opts (void) |
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents. More... | |
void | log_callback_help (void *ptr, int level, const char *fmt, va_list vl) |
Trivial log callback. More... | |
void | init_dynload (void) |
Initialize dynamic library loading. More... | |
void | register_exit (void(*cb)(int ret)) |
Register a program-specific cleanup routine. More... | |
void | report_and_exit (int ret) |
Reports an error corresponding to the provided AVERROR code and calls exit_program() with the corresponding POSIX error code. More... | |
void | exit_program (int ret) |
Wraps exit with a program-specific cleanup routine. More... | |
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. More... | |
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. More... | |
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. More... | |
void | show_help_children (const AVClass *class, int flags) |
Show help for all options with given flags in class and all its children. More... | |
static const OptionDef * | find_option (const OptionDef *po, const char *name) |
static void | prepare_app_arguments (int *argc_ptr, char ***argv_ptr) |
static int | write_option (void *optctx, const OptionDef *po, const char *opt, const char *arg) |
int | parse_option (void *optctx, const char *opt, const char *arg, const OptionDef *options) |
Parse one given option. More... | |
void | parse_options (void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *)) |
int | parse_optgroup (void *optctx, OptionGroup *g) |
Parse an options group and write results into optctx. More... | |
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. More... | |
static void | dump_argument (FILE *report_file, const char *a) |
static void | check_options (const OptionDef *po) |
void | parse_loglevel (int argc, char **argv, const OptionDef *options) |
Find the '-loglevel' option in the command line args and apply it. More... | |
static const AVOption * | opt_find (void *obj, const char *name, const char *unit, int opt_flags, int search_flags) |
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. More... | |
static int | match_group_separator (const OptionGroupDef *groups, int nb_groups, const char *opt) |
static void | finish_group (OptionParseContext *octx, int group_idx, const char *arg) |
static void | add_opt (OptionParseContext *octx, const OptionDef *opt, const char *key, const char *val) |
static void | init_parse_context (OptionParseContext *octx, const OptionGroupDef *groups, int nb_groups) |
void | uninit_parse_context (OptionParseContext *octx) |
Free all allocated memory in an OptionParseContext. More... | |
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. More... | |
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. More... | |
int | read_yesno (void) |
Return a positive value if a line read from standard input starts with [yY], otherwise return 0. More... | |
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. More... | |
int | check_stream_specifier (AVFormatContext *s, AVStream *st, const char *spec) |
Check if the given stream matches a stream specifier. More... | |
AVDictionary * | filter_codec_opts (AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec) |
Filter out options for given codec. More... | |
AVDictionary ** | setup_find_stream_info_opts (AVFormatContext *s, AVDictionary *codec_opts) |
Setup AVCodecContext options for avformat_find_stream_info(). More... | |
void * | grow_array (void *array, int elem_size, int *size, int new_size) |
Realloc array to hold new_size elements of elem_size. More... | |
void * | allocate_array_elem (void *ptr, size_t elem_size, int *nb_elems) |
Atomically add a new element to an array of pointers, i.e. More... | |
double | get_rotation (int32_t *displaymatrix) |
Variables | |
AVDictionary * | sws_dict |
AVDictionary * | swr_opts |
AVDictionary * | format_opts |
AVDictionary * | codec_opts |
int | hide_banner = 0 |
static void(* | program_exit )(int ret) |
#define FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0 |
Definition at line 515 of file cmdutils.c.
#define GET_ARG | ( | arg | ) |
void uninit_opts | ( | void | ) |
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.
Definition at line 64 of file cmdutils.c.
Referenced by do_exit(), ffmpeg_cleanup(), main(), and uninit_parse_context().
void log_callback_help | ( | void * | ptr, |
int | level, | ||
const char * | fmt, | ||
va_list | vl | ||
) |
Trivial log callback.
Only suitable for opt_help and similar since it lacks prefix handling.
Definition at line 72 of file cmdutils.c.
Referenced by show_buildconf(), show_help(), show_help_default(), and show_version().
void init_dynload | ( | void | ) |
Register a program-specific cleanup routine.
Definition at line 88 of file cmdutils.c.
Referenced by main().
void report_and_exit | ( | int | ret | ) |
Reports an error corresponding to the provided AVERROR code and calls exit_program() with the corresponding POSIX error code.
Definition at line 93 of file cmdutils.c.
Referenced by add_input_streams(), allocate_array_elem(), choose_pix_fmts(), describe_filter_link(), do_subtitle_out(), get_codecs_sorted(), get_line(), grow_array(), ifile_open(), init_input_filter(), init_parse_context(), init_simple_filtergraph(), new_audio_stream(), new_output_stream(), new_video_stream(), of_add_programs(), open_input_file(), parse_forced_key_frames(), process_input(), process_subtitle(), set_channel_layout(), set_encoder_id(), and setup_find_stream_info_opts().
void exit_program | ( | int | ret | ) |
Wraps exit with a program-specific cleanup routine.
Definition at line 99 of file cmdutils.c.
Referenced by abort_codec_experimental(), add_display_matrix_to_stream(), add_input_streams(), apply_sync_offsets(), assert_avoptions(), assert_file_overwrite(), check_decode_result(), check_filter_outputs(), check_streamcopy_filters(), configure_output_filter(), copy_meta(), copy_metadata(), create_streams(), do_audio_out(), do_streamcopy(), do_subtitle_out(), do_video_out(), dump_attachment(), encode_frame(), filter_codec_opts(), find_codec_or_die(), flush_encoders(), get_ost_filters(), grow_array(), ifile_open(), init_input_filter(), init_output_filter(), init_output_stream(), init_output_stream_wrapper(), init_report(), main(), map_manual(), new_audio_stream(), new_data_stream(), new_output_stream(), new_subtitle_stream(), new_unknown_stream(), new_video_stream(), of_add_attachments(), of_add_metadata(), of_add_programs(), of_open(), of_output_packet(), opt_init_hw_device(), opt_input_file(), opt_loglevel(), opt_map(), opt_map_channel(), opt_max_alloc(), opt_output_file(), opt_preset(), opt_streamid(), opt_target(), opt_vstats(), parse_and_set_vsync(), parse_matrix_coeffs(), parse_meta_type(), parse_number_or_die(), parse_options(), parse_time_or_die(), process_input(), process_input_packet(), process_subtitle(), report_and_exit(), transcode(), update_video_stats(), validate_enc_avopt(), and write_option().
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.
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 107 of file cmdutils.c.
Referenced by opt_height(), opt_show_mode(), opt_show_optional_fields(), opt_streamid(), opt_width(), parse_and_set_vsync(), and write_option().
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.
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 |
Definition at line 128 of file cmdutils.c.
Referenced by opt_duration(), opt_recording_timestamp(), opt_seek(), opt_stats_period(), parse_forced_key_frames(), and write_option().
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.
options | a list of options |
msg | title of this group. Only printed if at least one option matches. |
req_flags | print only options which have all those flags set. |
rej_flags | don't print options which have any of those flags set. |
alt_flags | print only options that have at least one of those flags set |
Definition at line 140 of file cmdutils.c.
Referenced by show_help_default().
Show help for all options with given flags in class and all its children.
Definition at line 169 of file cmdutils.c.
Referenced by print_codec(), show_help_bsf(), show_help_children(), show_help_default(), show_help_demuxer(), show_help_muxer(), and show_help_protocol().
Definition at line 182 of file cmdutils.c.
Referenced by locate_option(), parse_option(), and split_commandline().
|
inlinestatic |
Definition at line 251 of file cmdutils.c.
Referenced by parse_options(), and split_commandline().
|
static |
Definition at line 257 of file cmdutils.c.
Referenced by parse_optgroup(), and parse_option().
Parse one given option.
Definition at line 312 of file cmdutils.c.
Referenced by opt_audio_codec(), opt_audio_filters(), opt_audio_frames(), opt_audio_qscale(), opt_data_codec(), opt_data_frames(), opt_old2new(), opt_qscale(), opt_recording_timestamp(), opt_subtitle_codec(), opt_target(), opt_timecode(), opt_video_codec(), opt_video_filters(), opt_video_frames(), 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 351 of file cmdutils.c.
Referenced by main().
int parse_optgroup | ( | void * | optctx, |
OptionGroup * | g | ||
) |
Parse an options group and write results into optctx.
optctx | an app-specific options context. NULL for global options group |
Definition at line 382 of file cmdutils.c.
Return index of option opt in argv or 0 if not found.
Definition at line 415 of file cmdutils.c.
Referenced by parse_loglevel(), and show_banner().
|
static |
Definition at line 441 of file cmdutils.c.
Referenced by parse_loglevel().
|
static |
Definition at line 465 of file cmdutils.c.
Referenced by parse_loglevel().
Find the '-loglevel' option in the command line args and apply it.
Definition at line 474 of file cmdutils.c.
Referenced by main().
|
static |
Definition at line 506 of file cmdutils.c.
Referenced by 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 at line 516 of file cmdutils.c.
Referenced by opt_default_new(), opt_target(), parse_option(), and split_commandline().
|
static |
Definition at line 588 of file cmdutils.c.
Referenced by split_commandline().
|
static |
Definition at line 608 of file cmdutils.c.
Referenced by split_commandline().
|
static |
Definition at line 636 of file cmdutils.c.
Referenced by split_commandline().
|
static |
Definition at line 648 of file cmdutils.c.
Referenced by split_commandline().
void uninit_parse_context | ( | OptionParseContext * | octx | ) |
Free all allocated memory in an OptionParseContext.
Definition at line 668 of file cmdutils.c.
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.
The commandline is assumed to be composed of options which either belong to a group (those with OPT_SPEC, OPT_OFFSET or OPT_PERFILE) or are global (everything else).
A group (defined by an OptionGroupDef struct) is a sequence of options terminated by either a group separator option (e.g. -i) or a parameter that is not an option (doesn't start with -). A group without a separator option must always be first in the supplied groups list.
All options within the same group are stored in one OptionGroup struct in an OptionGroupList, all groups with the same group definition are stored in one OptionGroupList in OptionParseContext.groups. The order of group lists is the same as the order of group definitions.
Definition at line 693 of file cmdutils.c.
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.
Definition at line 799 of file cmdutils.c.
Referenced by ifile_open(), of_open(), open_input_file(), process_input(), read_thread(), and write_packet().
int read_yesno | ( | void | ) |
Return a positive value if a line read from standard input starts with [yY], otherwise return 0.
Definition at line 804 of file cmdutils.c.
Referenced by assert_file_overwrite().
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.ffpreset in the directories $FFMPEG_DATADIR (if set), $HOME/.ffmpeg, and in the datadir defined at configuration time or in a "ffpresets" folder along the executable on win32, 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.
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 815 of file cmdutils.c.
Referenced by opt_preset().
int check_stream_specifier | ( | AVFormatContext * | s, |
AVStream * | st, | ||
const char * | spec | ||
) |
Check if the given stream matches a stream specifier.
s | Corresponding format context. |
st | Stream from s to be checked. |
spec | A stream specifier of the [v|a|s|d]:[<stream index>] form. |
Definition at line 887 of file cmdutils.c.
Referenced by copy_metadata(), filter_codec_opts(), ifile_open(), init_input_filter(), of_add_metadata(), and opt_map().
AVDictionary* filter_codec_opts | ( | AVDictionary * | opts, |
enum AVCodecID | codec_id, | ||
AVFormatContext * | s, | ||
AVStream * | st, | ||
const AVCodec * | codec | ||
) |
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.
opts | dictionary to place options in |
codec_id | ID of the codec that should be filtered for |
s | Corresponding format context. |
st | A stream from s for which the options should be filtered. |
codec | The particular codec for which the options should be filtered. If null, the default one is looked up according to the codec id. |
Definition at line 895 of file cmdutils.c.
Referenced by add_input_streams(), new_output_stream(), open_input_file(), setup_find_stream_info_opts(), and stream_component_open().
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.
Definition at line 953 of file cmdutils.c.
Referenced by ifile_open(), open_input_file(), and read_thread().
Realloc array to hold new_size elements of elem_size.
Calls exit() on failure.
array | array to reallocate |
elem_size | size in bytes of each element |
size | new element count will be written here |
new_size | number of elements to place in reallocated array |
Definition at line 970 of file cmdutils.c.
Referenced by opt_streamid(), and write_option().
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.
allocate a new entry, reallocate the array of pointers and make the new last member of this array point to the newly allocated buffer. Calls exit() on failure.
array | array of pointers to reallocate |
elem_size | size of the new element to allocate |
nb_elems | pointer to the number of elements of the array array; *nb_elems will be incremented by one by this function. |
Definition at line 987 of file cmdutils.c.
Referenced by ifile_open(), mux_alloc(), and mux_stream_alloc().
Definition at line 997 of file cmdutils.c.
Referenced by configure_input_video_filter().
AVDictionary* sws_dict |
Definition at line 58 of file cmdutils.c.
Referenced by finish_group(), opt_default(), and uninit_opts().
AVDictionary* swr_opts |
Definition at line 59 of file cmdutils.c.
Referenced by finish_group(), opt_default(), and uninit_opts().
AVDictionary* format_opts |
Definition at line 60 of file cmdutils.c.
Referenced by finish_group(), main(), open_input_file(), opt_default(), opt_default_new(), opt_target(), read_thread(), split_commandline(), and uninit_opts().
AVDictionary * codec_opts |
Definition at line 60 of file cmdutils.c.
Referenced by finish_group(), open_input_file(), opt_default(), opt_default_new(), opt_target(), read_thread(), setup_find_stream_info_opts(), split_commandline(), stream_component_open(), and uninit_opts().
int hide_banner = 0 |
Definition at line 62 of file cmdutils.c.
Referenced by parse_loglevel(), and show_banner().
Definition at line 86 of file cmdutils.c.
Referenced by exit_program(), and register_exit().