Go to the documentation of this file.
72 vfprintf(stdout, fmt, vl);
77 #if HAVE_SETDLLDIRECTORY && defined(_WIN32)
91 error =
"Expected number for %s but found: %s\n";
92 else if (d < min || d >
max)
93 error =
"The value for %s was %s which is not within %f - %f\n";
95 error =
"Expected int64 for %s but found %s\n";
97 error =
"Expected int for %s but found %s\n";
117 if (((po->
flags & req_flags) != req_flags) ||
118 (po->
flags & rej_flags))
128 av_strlcat(buf,
"[:<stream_spec>]",
sizeof(buf));
170 #if HAVE_COMMANDLINETOARGVW && defined(_WIN32)
171 #include <shellapi.h>
173 static char** win32_argv_utf8 =
NULL;
174 static int win32_argc = 0;
187 int i, buffsize = 0,
offset = 0;
189 if (win32_argv_utf8) {
190 *argc_ptr = win32_argc;
191 *argv_ptr = win32_argv_utf8;
196 argv_w = CommandLineToArgvW(GetCommandLineW(), &win32_argc);
197 if (win32_argc <= 0 || !argv_w)
201 for (
i = 0;
i < win32_argc;
i++)
202 buffsize += WideCharToMultiByte(CP_UTF8, 0, argv_w[
i], -1,
205 win32_argv_utf8 =
av_mallocz(
sizeof(
char *) * (win32_argc + 1) + buffsize);
206 argstr_flat = (
char *)win32_argv_utf8 +
sizeof(
char *) * (win32_argc + 1);
207 if (!win32_argv_utf8) {
212 for (
i = 0;
i < win32_argc;
i++) {
213 win32_argv_utf8[
i] = &argstr_flat[
offset];
214 offset += WideCharToMultiByte(CP_UTF8, 0, argv_w[
i], -1,
218 win32_argv_utf8[
i] =
NULL;
221 *argc_ptr = win32_argc;
222 *argv_ptr = win32_argv_utf8;
247 char *arg_allocated =
NULL;
260 "Requested to load an argument from file for a bool option '%s'\n",
266 if (!arg_allocated) {
268 "Error reading the value for option '%s' from file: %s\n",
277 char *p = strchr(opt,
':');
290 sol->opt[sol->nb_opt - 1].specifier = str;
299 dst = &sol->opt[sol->nb_opt - 1].u;
306 arg_allocated =
NULL;
349 *(
double *)
dst = num;
355 if ((strcmp(opt,
"init_hw_device") != 0) || (strcmp(
arg,
"list") != 0)) {
357 "Failed to set value '%s' for option '%s': %s\n",
383 .
name =
"AVOption passthrough",
393 if (!po->
name && opt[0] ==
'n' && opt[1] ==
'o') {
420 int (*parse_arg_function)(
void *,
const char*))
423 int optindex, handleoptions = 1,
ret;
430 while (optindex < argc) {
431 opt = argv[optindex++];
433 if (handleoptions && opt[0] ==
'-' && opt[1] !=
'\0') {
434 if (opt[1] ==
'-' && opt[2] ==
'\0') {
444 if (parse_arg_function) {
445 ret = parse_arg_function(optctx, opt);
460 g->group_def->name,
g->arg);
462 for (
i = 0;
i <
g->nb_opts;
i++) {
465 if (
g->group_def->flags &&
466 !(
g->group_def->flags & o->
opt->
flags)) {
468 "%s %s -- you are trying to apply an input option to an "
469 "output file or vice versa. Move this option before the "
470 "file it belongs to.\n", o->
key, o->
opt->
help,
471 g->group_def->name,
g->arg);
494 for (
i = 1;
i < argc;
i++) {
495 const char *cur_opt = argv[
i];
497 if (!(cur_opt[0] ==
'-' && cur_opt[1]))
502 if (!po->
name && cur_opt[0] ==
'n' && cur_opt[1] ==
'o')
505 if ((!po->
name && !strcmp(cur_opt, optname)) ||
506 (po->
name && !strcmp(optname, po->
name)))
517 const unsigned char *p;
520 if (!((*p >=
'+' && *p <=
':') || (*p >=
'@' && *p <=
'Z') ||
521 *p ==
'_' || (*p >=
'a' && *p <=
'z')))
528 for (p =
a; *p; p++) {
529 if (*p ==
'\\' || *p ==
'"' || *p ==
'$' || *p ==
'`')
531 else if (*p < ' ' || *p >
'~')
565 if (idx && argv[idx + 1])
575 for (
i = 0;
i < argc;
i++) {
589 int opt_flags,
int search_flags)
597 #define FLAGS ((o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0)
602 char opt_stripped[128];
608 #if CONFIG_SWRESAMPLE
612 if (!strcmp(opt,
"debug") || !strcmp(opt,
"fdebug"))
615 if (!(p = strchr(opt,
':')))
616 p = opt + strlen(opt);
617 av_strlcpy(opt_stripped, opt,
FFMIN(
sizeof(opt_stripped), p - opt + 1));
621 ((opt[0] ==
'v' || opt[0] ==
'a' || opt[0] ==
's') &&
636 if (!strcmp(opt,
"srcw") || !strcmp(opt,
"srch") ||
637 !strcmp(opt,
"dstw") || !strcmp(opt,
"dsth") ||
638 !strcmp(opt,
"src_format") || !strcmp(opt,
"dst_format")) {
639 av_log(
NULL,
AV_LOG_ERROR,
"Directly using swscale dimensions/format options is not supported, please use the -s or -pix_fmt options\n");
647 if (!consumed && !strcmp(opt,
"sws_flags")) {
652 #if CONFIG_SWRESAMPLE
675 for (
i = 0;
i < nb_groups;
i++) {
677 if (p->
sep && !strcmp(p->
sep, opt))
725 const char *
key,
const char *
val)
735 g->opts[
g->nb_opts - 1].opt = opt;
736 g->opts[
g->nb_opts - 1].key =
key;
737 g->opts[
g->nb_opts - 1].val =
val;
748 memset(octx, 0,
sizeof(*octx));
806 while (optindex < argc) {
807 const char *opt = argv[optindex++], *
arg;
813 if (opt[0] ==
'-' && opt[1] ==
'-' && !opt[2]) {
818 if (opt[0] !=
'-' || !opt[1] || dashdash+1 == optindex) {
828 #define GET_ARG(arg) \
830 arg = argv[optindex++]; \
832 av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'.\n", opt);\
833 return AVERROR(EINVAL); \
839 if (group_idx >= 0) {
855 arg = argv[optindex++];
872 if (argv[optindex]) {
876 "argument '%s'.\n", opt, argv[optindex]);
881 "with argument '%s'.\n", opt, argv[optindex]);
887 if (opt[0] ==
'n' && opt[1] ==
'o' &&
895 "argument 0.\n", po->
name, po->
help);
905 "command: may be ignored.\n");
917 while (
c !=
'\n' &&
c != EOF)
924 const char *preset_name,
int is_path,
925 const char *codec_name)
929 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
930 char *datadir =
NULL;
933 char *env_ffmpeg_datadir =
getenv_utf8(
"FFMPEG_DATADIR");
934 const char *
base[3] = { env_ffmpeg_datadir,
939 av_strlcpy(filename, preset_name, filename_size);
942 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
943 wchar_t *datadir_w = get_module_filename(
NULL);
946 if (wchartoutf8(datadir_w, &datadir))
953 for (ls = datadir; *ls; ls++)
954 if (*ls ==
'\\') *ls =
'/';
956 if (ls = strrchr(datadir,
'/'))
958 ptrdiff_t datadir_len = ls - datadir;
959 size_t desired_size = datadir_len + strlen(
"/ffpresets") + 1;
961 datadir, desired_size,
sizeof *datadir);
963 datadir = new_datadir;
964 datadir[datadir_len] = 0;
965 strncat(datadir,
"/ffpresets", desired_size - 1 - datadir_len);
971 for (
i = 0;
i < 3 && !
f;
i++) {
974 snprintf(filename, filename_size,
"%s%s/%s.ffpreset",
base[
i],
975 i != 1 ?
"" :
"/.ffmpeg", preset_name);
977 if (!
f && codec_name) {
979 "%s%s/%s-%s.ffpreset",
980 base[
i],
i != 1 ?
"" :
"/.ffmpeg", codec_name,
987 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
997 return (
c >=
'0' &&
c <=
'9') ||
998 (
c >=
'A' &&
c <=
'Z') ||
999 (
c >=
'a' &&
c <=
'z');
1008 memset(
ss, 0,
sizeof(*
ss));
1012 int allow_remainder,
void *logctx)
1017 memset(
ss, 0,
sizeof(*
ss));
1026 if (*spec <= '9' && *spec >=
'0') {
1027 ss->idx = strtol(spec, &endptr, 0);
1033 "Parsed index: %d; remainder: %s\n",
ss->idx, spec);
1037 }
else if ((*spec ==
'v' || *spec ==
'a' || *spec ==
's' ||
1038 *spec ==
'd' || *spec ==
't' || *spec ==
'V') &&
1053 ss->no_apic = 1;
break;
1059 }
else if (*spec ==
'g' && *(spec + 1) ==
':') {
1061 goto multiple_stream_lists;
1064 if (*spec ==
'#' || (*spec ==
'i' && *(spec + 1) ==
':')) {
1067 spec += 1 + (*spec ==
'i');
1071 ss->list_id = strtol(spec, &endptr, 0);
1072 if (spec == endptr) {
1081 }
else if (*spec ==
'p' && *(spec + 1) ==
':') {
1083 goto multiple_stream_lists;
1088 ss->list_id = strtol(spec, &endptr, 0);
1089 if (spec == endptr) {
1097 "Parsed program ID: %"PRId64
"; remainder: %s\n",
ss->list_id, spec);
1098 }
else if (!strncmp(spec,
"disp:", 5)) {
1106 if (
ss->disposition) {
1115 spec[
len] ==
'_' || spec[
len] ==
'+';
len++)
1134 "Parsed disposition: 0x%x; remainder: %s\n",
ss->disposition, spec);
1135 }
else if (*spec ==
'#' ||
1136 (*spec ==
'i' && *(spec + 1) ==
':')) {
1138 goto multiple_stream_lists;
1142 spec += 1 + (*spec ==
'i');
1143 ss->list_id = strtol(spec, &endptr, 0);
1144 if (spec == endptr) {
1152 "Parsed stream ID: %"PRId64
"; remainder: %s\n",
ss->list_id, spec);
1156 }
else if (*spec ==
'm' && *(spec + 1) ==
':') {
1161 if (!
ss->meta_key) {
1168 if (!
ss->meta_val) {
1175 "Parsed metadata: %s:%s; remainder: %s",
ss->meta_key,
1176 ss->meta_val ?
ss->meta_val :
"<any value>", spec);
1180 }
else if (*spec ==
'u' && (*(spec + 1) ==
'\0' || *(spec + 1) ==
':')) {
1181 ss->usable_only = 1;
1195 if (!allow_remainder) {
1197 "Trailing garbage at the end of a stream specifier: %s\n",
1207 if (!
ss->remainder) {
1215 multiple_stream_lists:
1217 "Cannot combine multiple program/group designators in a "
1218 "single stream specifier");
1235 switch (
ss->stream_list) {
1240 if (st->
id !=
ss->list_id)
1242 start_stream = st->
index;
1246 start_stream =
ss->idx >= 0 ? 0 : st->
index;
1250 for (
unsigned i = 0;
i <
s->nb_programs;
i++) {
1251 if (
s->programs[
i]->id ==
ss->list_id) {
1258 " stream specifier can never match\n",
ss->list_id);
1264 for (
unsigned i = 0;
i <
s->nb_stream_groups;
i++) {
1265 if (
ss->list_id ==
s->stream_groups[
i]->id) {
1266 g =
s->stream_groups[
i];
1273 ss->list_id >= 0 &&
ss->list_id <
s->nb_stream_groups)
1274 g =
s->stream_groups[
ss->list_id];
1278 PRId64
" exists, stream specifier can never match\n",
1289 const AVStream *candidate =
s->streams[
g ?
g->streams[
i]->index :
1303 if (
ss->meta_val && strcmp(
tag->value,
ss->meta_val))
1307 if (
ss->usable_only) {
1325 if (
ss->disposition &&
1329 if (st == candidate)
1330 return ss->idx < 0 ||
ss->idx == nb_matched;
1380 char *p = strchr(t->
key,
':');
1402 }
else if (t->
key[0] == prefix &&
1412 if (used && opts_used)
1436 for (
int i = 0;
i <
s->nb_streams;
i++) {
1445 for (
int i = 0;
i <
s->nb_streams;
i++)
1453 if (new_size >= INT_MAX / elem_size) {
1457 if (*
size < new_size) {
1461 memset(
tmp + *
size*elem_size, 0, (new_size-*
size) * elem_size);
1485 theta -= 360*
floor(theta/360 + 0.9/360);
1487 if (
fabs(theta - 90*
round(theta/90)) > 2)
1489 "If you want to help, upload a sample "
1490 "of this file to https://streams.videolan.org/upload/ "
1491 "and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)");
static void error(const char *err)
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
static FILE * fopen_utf8(const char *path, const char *mode)
void show_help_options(const OptionDef *options, const char *msg, int req_flags, int rej_flags)
Print help for all options matching specified flags.
const OptionGroupDef * group_def
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_BPRINT_SIZE_UNLIMITED
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 name
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
double get_rotation(const int32_t *displaymatrix)
enum AVMediaType codec_type
General type of the encoded data.
unsigned int nb_stream_indexes
int check_avoptions(AVDictionary *m)
const AVClass * av_opt_child_class_iterate(const AVClass *parent, void **iter)
Iterate over potential AVOptions-enabled children of parent.
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
This struct describes the properties of an encoded stream.
const AVClass * priv_class
AVClass for the private context.
int stream_specifier_parse(StreamSpecifier *ss, const char *spec, int allow_remainder, void *logctx)
Parse a stream specifier string into a form suitable for matching.
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
int init_report(const char *env, FILE **file)
int parse_number(const char *context, const char *numstr, enum OptionType type, double min, double max, double *dst)
Parse a string and return its corresponding value as a double.
int avio_open(AVIOContext **s, const char *filename, int flags)
Create and initialize a AVIOContext for accessing the resource indicated by url.
AVDictionary * format_opts
int grow_array(void **array, int elem_size, int *size, int new_size)
Realloc array to hold new_size elements of elem_size.
#define AV_LOG_VERBOSE
Detailed information.
static void freeenv_utf8(char *var)
void show_help_children(const AVClass *class, int flags)
Show help for all options with given flags in class and all its children.
int flags
A combination of AV_OPT_FLAG_*.
static int finish_group(OptionParseContext *octx, int group_idx, const char *arg)
int nb_channels
Number of channels in this layout.
size_t av_strlcatf(char *dst, size_t size, const char *fmt,...)
static int opt_has_arg(const OptionDef *o)
void stream_specifier_uninit(StreamSpecifier *ss)
A list of option groups that all have the same group type (e.g.
static int init_parse_context(OptionParseContext *octx, const OptionGroupDef *groups, int nb_groups)
#define AVERROR_OPTION_NOT_FOUND
Option not found.
An option extracted from the commandline.
static double val(void *priv, double ch)
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
const AVClass * sws_get_class(void)
Get the AVClass for SwsContext.
const OptionGroupDef * group_def
#define ss(width, name, subs,...)
#define AV_OPT_FLAG_AUDIO_PARAM
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the given stream matches a stream specifier.
trying all byte sequences megabyte in length and selecting the best looking sequence will yield cases to try But first
#define AV_LOG_TRACE
Extremely verbose debugging, useful for libav* development.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
AVDictionary * codec_opts
static void check_options(const OptionDef *po)
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
static FILE * report_file
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.
int avio_read_to_bprint(AVIOContext *h, struct AVBPrint *pb, size_t max_size)
Read contents of h into print buffer, up to max_size bytes, or up to EOF.
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
static __device__ float floor(float a)
#define fc(width, name, range_min, range_max)
#define av_assert0(cond)
assert() equivalent, that is always enabled.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
@ AVMEDIA_TYPE_DATA
Opaque data information usually continuous.
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
void init_dynload(void)
Initialize dynamic library loading.
AVDictionary * format_opts
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Describe the class of an AVClass context structure.
const AVClass * avcodec_get_class(void)
Get the AVClass for AVCodecContext.
static __device__ float fabs(float a)
static int add_opt(OptionParseContext *octx, const OptionDef *opt, const char *key, const char *val)
static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
const AVClass * swr_get_class(void)
Get the AVClass for SwrContext.
int filter_codec_opts(const AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec, AVDictionary **dst, AVDictionary **opts_used)
Filter out options for given codec.
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Set the libav* libraries log level.
static char * getenv_utf8(const char *varname)
unsigned int * stream_index
#define AV_OPT_SEARCH_FAKE_OBJ
The obj passed to av_opt_find() is fake – only a double pointer to AVClass instead of a required poin...
int av_parse_time(int64_t *timeval, const char *timestr, int duration)
Parse timestr and return in *time a corresponding number of microseconds.
unsigned stream_specifier_match(const StreamSpecifier *ss, const AVFormatContext *s, const AVStream *st, void *logctx)
AVChannelLayout ch_layout
Audio only.
#define AV_OPT_FLAG_ENCODING_PARAM
A generic parameter which can be set by the user for muxing or encoding.
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
int sample_rate
Audio only.
AVCodecID
Identify the syntax and semantics of the bitstream.
char * file_read(const char *filename)
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.
AVDictionary * codec_opts
const AVOption * av_opt_find(void *obj, const char *name, const char *unit, int opt_flags, int search_flags)
Look for an option in an object.
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
uint8_t ptrdiff_t const uint8_t ptrdiff_t int intptr_t intptr_t int int16_t * dst
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
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.
void uninit_opts(void)
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.
printf("static const uint8_t my_array[100] = {\n")
@ AVMEDIA_TYPE_UNKNOWN
Usually treated as AVMEDIA_TYPE_DATA.
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.
The reader does not expect b to be semantically here and if the code is changed by maybe adding a a division or other the signedness will almost certainly be mistaken To avoid this confusion a new type was SUINT is the C unsigned type but it holds a signed int to use the same example SUINT a
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 offset
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
int av_strstart(const char *str, const char *pfx, const char **ptr)
Return non-zero if pfx is a prefix of str.
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags)
Show the obj options.
void av_log_set_level(int level)
Set the log level.
#define i(width, name, range_min, range_max)
static av_always_inline av_const double round(double x)
int setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *local_codec_opts, AVDictionary ***dst)
Setup AVCodecContext options for avformat_find_stream_info().
#define AV_OPT_FLAG_SUBTITLE_PARAM
int parse_options(void *optctx, int argc, char **argv, const OptionDef *options, int(*parse_arg_function)(void *, const char *))
static av_const int av_toupper(int c)
Locale-independent conversion of ASCII characters to uppercase.
@ AVMEDIA_TYPE_ATTACHMENT
Opaque data information usually sparse.
#define AV_OPT_FLAG_VIDEO_PARAM
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
New fields can be added to the end with minor version bumps.
int cmdutils_isalnum(char c)
void * av_calloc(size_t nmemb, size_t size)
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Find the '-loglevel' option in the command line args and apply it.
int av_opt_eval_flags(void *obj, const AVOption *o, const char *val, int *flags_out)
int disposition
Stream disposition - a combination of AV_DISPOSITION_* flags.
static int array[MAX_W *MAX_W]
int id
Format-specific stream ID.
#define AV_LOG_FATAL
Something went wrong and recovery is not possible.
int read_yesno(void)
Return a positive value if a line read from standard input starts with [yY], otherwise return 0.
double av_strtod(const char *numstr, char **tail)
Parse the string in numstr and return its value as a double.
size_t av_strlcat(char *dst, const char *src, size_t size)
Append the string src to the string dst, but to a total length of no more than size - 1 bytes,...
void uninit_parse_context(OptionParseContext *octx)
Free all allocated memory in an OptionParseContext.
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
Trivial log callback.
void remove_avoptions(AVDictionary **a, AVDictionary *b)
#define AV_DICT_MATCH_CASE
Only get an entry with exact-case key match.
int av_dynarray_add_nofree(void *tab_ptr, int *nb_ptr, void *elem)
Add an element to a dynamic array.
const char * av_get_media_type_string(enum AVMediaType media_type)
Return a string describing the media_type enum, NULL if media_type is unknown.
int index
stream index in AVFormatContext
#define OPT_FLAG_PERSTREAM
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Parse one given option.
char * av_get_token(const char **buf, const char *term)
Unescape the given string until a non escaped terminating char, and return the token corresponding to...
static int write_option(void *optctx, const OptionDef *po, const char *opt, const char *arg, const OptionDef *defs)
#define GROW_ARRAY(array, nb_elems)
int parse_optgroup(void *optctx, OptionGroup *g, const OptionDef *defs)
Parse an options group and write results into optctx.
#define AVIO_FLAG_READ
read-only
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 * av_strdup(const char *s)
Duplicate a string.
#define AV_OPT_FLAG_DECODING_PARAM
A generic parameter which can be set by the user for demuxing or decoding.
const char * sep
Option to be used as group separator.
int avio_closep(AVIOContext **s)
Close the resource accessed by the AVIOContext *s, free it and set the pointer pointing to it to NULL...
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
size_t av_strlcpy(char *dst, const char *src, size_t size)
Copy the string src to dst, but no more than size - 1 bytes, and null-terminate dst.
static const OptionDef * find_option(const OptionDef *po, const char *name)
#define AVERROR_EXIT
Immediate exit was requested; the called function should not be restarted.
const AVClass * av_stream_get_class(void)
Get the AVClass for AVStream.
char * av_strndup(const char *s, size_t len)
Duplicate a substring of a string.
const AVDictionaryEntry * av_dict_iterate(const AVDictionary *m, const AVDictionaryEntry *prev)
Iterate over a dictionary.
static void dump_argument(FILE *report_file, const char *a)
static int match_group_separator(const OptionGroupDef *groups, int nb_groups, const char *opt)
int(* func_arg)(void *, const char *, const char *)
static const AVOption * opt_find(void *obj, const char *name, const char *unit, int opt_flags, int search_flags)
double av_display_rotation_get(const int32_t matrix[9])
Extract the rotation component of the transformation matrix.