58 #if HAVE_SYS_RESOURCE_H
60 #include <sys/resource.h>
98 vfprintf(stdout, fmt, vl);
105 static int print_prefix = 1;
119 #if HAVE_SETDLLDIRECTORY && defined(_WIN32)
148 error =
"Expected number for %s but found: %s\n";
149 else if (d < min || d >
max)
150 error =
"The value for %s was %s which is not within %f - %f\n";
152 error =
"Expected int64 for %s but found %s\n";
154 error =
"Expected int for %s but found %s\n";
168 is_duration ?
"duration" :
"date", context, timestr);
175 int rej_flags,
int alt_flags)
184 if (((po->
flags & req_flags) != req_flags) ||
185 (alt_flags && !(po->
flags & alt_flags)) ||
186 (po->
flags & rej_flags))
198 printf(
"-%-17s %s\n", buf, po->
help);
230 #if HAVE_COMMANDLINETOARGVW && defined(_WIN32)
231 #include <shellapi.h>
233 static char** win32_argv_utf8 =
NULL;
234 static int win32_argc = 0;
247 int i, buffsize = 0,
offset = 0;
249 if (win32_argv_utf8) {
250 *argc_ptr = win32_argc;
251 *argv_ptr = win32_argv_utf8;
256 argv_w = CommandLineToArgvW(GetCommandLineW(), &win32_argc);
257 if (win32_argc <= 0 || !argv_w)
261 for (
i = 0;
i < win32_argc;
i++)
262 buffsize += WideCharToMultiByte(CP_UTF8, 0, argv_w[
i], -1,
265 win32_argv_utf8 =
av_mallocz(
sizeof(
char *) * (win32_argc + 1) + buffsize);
266 argstr_flat = (
char *)win32_argv_utf8 +
sizeof(
char *) * (win32_argc + 1);
267 if (!win32_argv_utf8) {
272 for (
i = 0;
i < win32_argc;
i++) {
273 win32_argv_utf8[
i] = &argstr_flat[
offset];
274 offset += WideCharToMultiByte(CP_UTF8, 0, argv_w[
i], -1,
278 win32_argv_utf8[
i] =
NULL;
281 *argc_ptr = win32_argc;
282 *argv_ptr = win32_argv_utf8;
302 char *p = strchr(opt,
':');
305 dstcount = (
int *)(so + 1);
306 *so =
grow_array(*so,
sizeof(**so), dstcount, *dstcount + 1);
310 (*so)[*dstcount - 1].specifier =
str;
311 dst = &(*so)[*dstcount - 1].u;
335 "Failed to set value '%s' for option '%s': %s\n",
353 if (!po->
name && opt[0] ==
'n' && opt[1] ==
'o') {
380 void (*parse_arg_function)(
void *,
const char*))
383 int optindex, handleoptions = 1, ret;
390 while (optindex < argc) {
391 opt = argv[optindex++];
393 if (handleoptions && opt[0] ==
'-' && opt[1] !=
'\0') {
394 if (opt[1] ==
'-' && opt[2] ==
'\0') {
404 if (parse_arg_function)
405 parse_arg_function(optctx, opt);
415 g->group_def->name,
g->arg);
417 for (
i = 0;
i <
g->nb_opts;
i++) {
420 if (
g->group_def->flags &&
421 !(
g->group_def->flags & o->
opt->
flags)) {
423 "%s %s -- you are trying to apply an input option to an "
424 "output file or vice versa. Move this option before the "
425 "file it belongs to.\n", o->
key, o->
opt->
help,
426 g->group_def->name,
g->arg);
449 for (
i = 1;
i < argc;
i++) {
450 const char *cur_opt = argv[
i];
452 if (*cur_opt++ !=
'-')
456 if (!po->
name && cur_opt[0] ==
'n' && cur_opt[1] ==
'o')
459 if ((!po->
name && !strcmp(cur_opt, optname)) ||
460 (po->
name && !strcmp(optname, po->
name)))
471 const unsigned char *p;
474 if (!((*p >=
'+' && *p <=
':') || (*p >=
'@' && *p <=
'Z') ||
475 *p ==
'_' || (*p >=
'a' && *p <=
'z')))
482 for (p =
a; *p; p++) {
483 if (*p ==
'\\' || *p ==
'"' || *p ==
'$' || *p ==
'`')
485 else if (*p < ' ' || *p >
'~')
511 if (idx && argv[idx + 1])
514 if ((env = getenv(
"FFREPORT")) || idx) {
519 for (
i = 0;
i < argc;
i++) {
532 int opt_flags,
int search_flags)
540 #define FLAGS (o->type == AV_OPT_TYPE_FLAGS && (arg[0]=='-' || arg[0]=='+')) ? AV_DICT_APPEND : 0
545 char opt_stripped[128];
548 #if CONFIG_AVRESAMPLE
554 #if CONFIG_SWRESAMPLE
558 if (!strcmp(opt,
"debug") || !strcmp(opt,
"fdebug"))
561 if (!(p = strchr(opt,
':')))
562 p = opt + strlen(opt);
563 av_strlcpy(opt_stripped, opt,
FFMIN(
sizeof(opt_stripped), p - opt + 1));
567 ((opt[0] ==
'v' || opt[0] ==
'a' || opt[0] ==
's') &&
585 if (!strcmp(opt,
"srcw") || !strcmp(opt,
"srch") ||
586 !strcmp(opt,
"dstw") || !strcmp(opt,
"dsth") ||
587 !strcmp(opt,
"src_format") || !strcmp(opt,
"dst_format")) {
588 av_log(
NULL,
AV_LOG_ERROR,
"Directly using swscale dimensions/format options is not supported, please use the -s or -pix_fmt options\n");
601 if (!consumed && !strcmp(opt,
"sws_flags")) {
606 #if CONFIG_SWRESAMPLE
620 #if CONFIG_AVRESAMPLE
643 for (
i = 0;
i < nb_groups;
i++) {
645 if (p->
sep && !strcmp(p->
sep, opt))
690 const char *
key,
const char *
val)
696 g->opts[
g->nb_opts - 1].opt = opt;
697 g->opts[
g->nb_opts - 1].key =
key;
698 g->opts[
g->nb_opts - 1].val =
val;
707 memset(octx, 0,
sizeof(*octx));
762 while (optindex < argc) {
763 const char *opt = argv[optindex++], *
arg;
769 if (opt[0] ==
'-' && opt[1] ==
'-' && !opt[2]) {
774 if (opt[0] !=
'-' || !opt[1] || dashdash+1 == optindex) {
781 #define GET_ARG(arg) \
783 arg = argv[optindex++]; \
785 av_log(NULL, AV_LOG_ERROR, "Missing argument for option '%s'.\n", opt);\
786 return AVERROR(EINVAL); \
804 arg = argv[optindex++];
818 if (argv[optindex]) {
822 "argument '%s'.\n", opt, argv[optindex]);
827 "with argument '%s'.\n", opt, argv[optindex]);
833 if (opt[0] ==
'n' && opt[1] ==
'o' &&
838 "argument 0.\n", po->
name, po->
help);
848 "command: may be ignored.\n");
869 const struct {
const char *
name;
int level; } log_levels[] = {
889 if (*token ==
'+' || *token ==
'-') {
897 if (!strncmp(token,
"repeat", 6)) {
904 }
else if (!strncmp(token,
"level", 5)) {
918 }
else if (*
arg ==
'+') {
925 if (!strcmp(log_levels[
i].
name,
arg)) {
926 level = log_levels[
i].level;
934 "Possible levels are numbers or:\n",
arg);
951 while ((
c = *(
template++))) {
953 if (!(
c = *(
template++)))
961 tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
962 tm->tm_hour, tm->tm_min, tm->tm_sec);
976 char *filename_template =
NULL;
979 int prog_loglevel, envlevel = 0;
987 tm = localtime(&now);
989 while (env && *env) {
993 "Failed to parse FFREPORT environment variable: %s\n",
1000 if (!strcmp(
key,
"file")) {
1002 filename_template =
val;
1004 }
else if (!strcmp(
key,
"level")) {
1036 filename.str, strerror(errno));
1041 "%s started on %04d-%02d-%02d at %02d:%02d:%02d\n"
1042 "Report written to \"%s\"\n"
1045 tm->tm_year + 1900, tm->tm_mon + 1, tm->tm_mday,
1046 tm->tm_hour, tm->tm_min, tm->tm_sec,
1062 max = strtol(
arg, &tail, 10);
1075 struct rlimit rl = { lim, lim + 1 };
1076 if (setrlimit(RLIMIT_CPU, &rl))
1077 perror(
"setrlimit");
1087 const char *errbuf_ptr = errbuf;
1097 #define SHOW_VERSION 2
1098 #define SHOW_CONFIG 0
1099 #define SHOW_COPYRIGHT 8
1101 #define PRINT_LIB_INFO(libname, LIBNAME, flags, level) \
1102 if (CONFIG_##LIBNAME) { \
1103 const char *indent = flags & INDENT? " " : ""; \
1104 if (flags & SHOW_VERSION) { \
1105 unsigned int version = libname##_version(); \
1106 av_log(NULL, level, \
1107 "%slib%-11s %2d.%3d.%3d / %2d.%3d.%3d\n", \
1109 LIB##LIBNAME##_VERSION_MAJOR, \
1110 LIB##LIBNAME##_VERSION_MINOR, \
1111 LIB##LIBNAME##_VERSION_MICRO, \
1112 AV_VERSION_MAJOR(version), AV_VERSION_MINOR(version),\
1113 AV_VERSION_MICRO(version)); \
1115 if (flags & SHOW_CONFIG) { \
1116 const char *cfg = libname##_configuration(); \
1117 if (strcmp(FFMPEG_CONFIGURATION, cfg)) { \
1118 if (!warned_cfg) { \
1119 av_log(NULL, level, \
1120 "%sWARNING: library configuration mismatch\n", \
1124 av_log(NULL, level, "%s%-11s configuration: %s\n", \
1125 indent, #libname, cfg); \
1161 char *conflist, *remove_tilde, *splitconf;
1165 while ((conflist = strstr(
str,
" --")) !=
NULL) {
1171 while ((remove_tilde = strstr(
str,
"pkg-config~")) !=
NULL) {
1172 remove_tilde[
sizeof(
"pkg-config~") - 2] =
' ';
1175 splitconf = strtok(
str,
"~");
1177 while (splitconf !=
NULL) {
1179 splitconf = strtok(
NULL,
"~");
1215 "This version of %s has nonfree parts compiled in.\n"
1216 "Therefore it is not legally redistributable.\n",
1220 "%s is free software; you can redistribute it and/or modify\n"
1221 "it under the terms of the GNU General Public License as published by\n"
1222 "the Free Software Foundation; either version 3 of the License, or\n"
1223 "(at your option) any later version.\n"
1225 "%s is distributed in the hope that it will be useful,\n"
1226 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
1227 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
1228 "GNU General Public License for more details.\n"
1230 "You should have received a copy of the GNU General Public License\n"
1231 "along with %s. If not, see <http://www.gnu.org/licenses/>.\n",
1235 "%s is free software; you can redistribute it and/or modify\n"
1236 "it under the terms of the GNU General Public License as published by\n"
1237 "the Free Software Foundation; either version 2 of the License, or\n"
1238 "(at your option) any later version.\n"
1240 "%s is distributed in the hope that it will be useful,\n"
1241 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
1242 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
1243 "GNU General Public License for more details.\n"
1245 "You should have received a copy of the GNU General Public License\n"
1246 "along with %s; if not, write to the Free Software\n"
1247 "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n",
1251 "%s is free software; you can redistribute it and/or modify\n"
1252 "it under the terms of the GNU Lesser General Public License as published by\n"
1253 "the Free Software Foundation; either version 3 of the License, or\n"
1254 "(at your option) any later version.\n"
1256 "%s is distributed in the hope that it will be useful,\n"
1257 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
1258 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n"
1259 "GNU Lesser General Public License for more details.\n"
1261 "You should have received a copy of the GNU Lesser General Public License\n"
1262 "along with %s. If not, see <http://www.gnu.org/licenses/>.\n",
1266 "%s is free software; you can redistribute it and/or\n"
1267 "modify it under the terms of the GNU Lesser General Public\n"
1268 "License as published by the Free Software Foundation; either\n"
1269 "version 2.1 of the License, or (at your option) any later version.\n"
1271 "%s is distributed in the hope that it will be useful,\n"
1272 "but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
1273 "MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU\n"
1274 "Lesser General Public License for more details.\n"
1276 "You should have received a copy of the GNU Lesser General Public\n"
1277 "License along with %s; if not, write to the Free Software\n"
1278 "Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA\n",
1294 void *ifmt_opaque =
NULL;
1296 void *ofmt_opaque =
NULL;
1298 const char *last_name;
1302 " D. = Demuxing supported\n"
1303 " .E = Muxing supported\n"
1304 " --\n", device_only ?
"Devices:" :
"File formats:");
1310 const char *long_name =
NULL;
1316 if (!is_dev && device_only)
1319 strcmp(ofmt->
name, last_name) > 0) {
1330 if (!is_dev && device_only)
1333 strcmp(ifmt->
name, last_name) > 0) {
1346 printf(
" %s%s %-15s %s\n",
1350 long_name ? long_name:
" ");
1375 #define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \
1376 if (codec->field) { \
1377 const type *p = codec->field; \
1379 printf(" Supported " list_name ":"); \
1380 while (*p != term) { \
1382 printf(" %s", name); \
1392 printf(
"%s %s [%s]:\n", encoder ?
"Encoder" :
"Decoder",
c->name,
1393 c->long_name ?
c->long_name :
"");
1395 printf(
" General capabilities: ");
1397 printf(
"horizband ");
1407 printf(
"subframes ");
1413 printf(
"paramchange ");
1415 printf(
"variable ");
1421 printf(
"avoidprobe ");
1423 printf(
"hardware ");
1426 if (!
c->capabilities)
1432 printf(
" Threading capabilities: ");
1441 default: printf(
"none");
break;
1447 printf(
" Supported hardware devices: ");
1448 for (
int i = 0;;
i++) {
1457 if (
c->supported_framerates) {
1460 printf(
" Supported framerates:");
1462 printf(
" %d/%d", fps->
num, fps->
den);
1476 if (
c->priv_class) {
1491 default:
return '?';
1512 return (*da)->type != (*db)->type ?
FFDIFFSIGN((*da)->type, (*db)->type) :
1513 strcmp((*da)->name, (*db)->name);
1520 unsigned nb_codecs = 0,
i = 0;
1542 printf(
" (%s: ", encoder ?
"encoders" :
"decoders");
1545 printf(
"%s ", codec->
name);
1556 " D..... = Decoding supported\n"
1557 " .E.... = Encoding supported\n"
1558 " ..V... = Video codec\n"
1559 " ..A... = Audio codec\n"
1560 " ..S... = Subtitle codec\n"
1561 " ...I.. = Intra frame-only codec\n"
1562 " ....L. = Lossy compression\n"
1563 " .....S = Lossless compression\n"
1565 for (
i = 0;
i < nb_codecs;
i++) {
1570 if (strstr(
desc->name,
"_deprecated"))
1582 printf(
" %-20s %s",
desc->name,
desc->long_name ?
desc->long_name :
"");
1587 if (strcmp(codec->
name,
desc->name)) {
1594 if (strcmp(codec->
name,
desc->name)) {
1614 " S..... = Subtitle\n"
1615 " .F.... = Frame-level multithreading\n"
1616 " ..S... = Slice-level multithreading\n"
1617 " ...X.. = Codec is experimental\n"
1618 " ....B. = Supports draw_horiz_band\n"
1619 " .....D = Supports direct rendering method 1\n"
1621 encoder ?
"Encoders" :
"Decoders");
1622 for (
i = 0;
i < nb_codecs;
i++) {
1636 if (strcmp(codec->
name,
desc->name))
1637 printf(
" (codec %s)",
desc->name);
1660 void *opaque =
NULL;
1662 printf(
"Bitstream filters:\n");
1664 printf(
"%s\n", bsf->
name);
1671 void *opaque =
NULL;
1674 printf(
"Supported file protocols:\n"
1677 printf(
" %s\n",
name);
1678 printf(
"Output:\n");
1680 printf(
" %s\n",
name);
1688 char descr[64], *descr_cur;
1689 void *opaque =
NULL;
1694 " T.. = Timeline support\n"
1695 " .S. = Slice threading\n"
1696 " ..C = Command support\n"
1697 " A = Audio input/output\n"
1698 " V = Video input/output\n"
1699 " N = Dynamic number and/or type of input/output\n"
1700 " | = Source or sink filter\n");
1703 for (
i = 0;
i < 2;
i++) {
1705 *(descr_cur++) =
'-';
1706 *(descr_cur++) =
'>';
1710 if (descr_cur >= descr +
sizeof(descr) - 4)
1719 printf(
" %c%c%c %-17s %-10s %s\n",
1722 filter->process_command ?
'C' :
'.',
1726 printf(
"No filters available: libavfilter disabled\n");
1737 printf(
"%-32s #RRGGBB\n",
"name");
1740 printf(
"%-32s #%02x%02x%02x\n",
name,
rgb[0],
rgb[1],
rgb[2]);
1749 printf(
"Pixel formats:\n"
1750 "I.... = Supported Input format for conversion\n"
1751 ".O... = Supported Output format for conversion\n"
1752 "..H.. = Hardware accelerated format\n"
1753 "...P. = Paletted format\n"
1754 "....B = Bitstream format\n"
1755 "FLAGS NAME NB_COMPONENTS BITS_PER_PIXEL\n"
1759 # define sws_isSupportedInput(x) 0
1760 # define sws_isSupportedOutput(x) 0
1765 printf(
"%c%c%c%c%c %-16s %d %2d\n",
1782 const char *
name, *descr;
1784 printf(
"Individual channels:\n"
1785 "NAME DESCRIPTION\n");
1786 for (
i = 0;
i < 63;
i++) {
1791 printf(
"%-14s %s\n",
name, descr);
1793 printf(
"\nStandard channel layouts:\n"
1794 "NAME DECOMPOSITION\n");
1797 printf(
"%-14s ",
name);
1798 for (j = 1; j; j <<= 1)
1842 "but no %s for it are available. FFmpeg might need to be "
1843 "recompiled with additional external libraries.\n",
1844 name, encoder ?
"encoders" :
"decoders");
1864 printf(
" Common extensions: %s.\n", fmt->
extensions);
1901 printf(
" Common extensions: %s.\n", fmt->
extensions);
1903 printf(
" Mime type: %s.\n", fmt->
mime_type);
1906 printf(
" Default video codec: %s.\n",
desc->name);
1910 printf(
" Default audio codec: %s.\n",
desc->name);
1914 printf(
" Default subtitle codec: %s.\n",
desc->name);
1922 static void show_help_filter(
const char *
name)
1936 printf(
"Filter %s\n",
f->name);
1938 printf(
" %s\n",
f->description);
1941 printf(
" slice threading supported\n");
1943 printf(
" Inputs:\n");
1945 for (
i = 0;
i < count;
i++) {
1950 printf(
" dynamic (depending on the options)\n");
1952 printf(
" none (source filter)\n");
1954 printf(
" Outputs:\n");
1956 for (
i = 0;
i < count;
i++) {
1961 printf(
" dynamic (depending on the options)\n");
1963 printf(
" none (sink filter)\n");
1969 printf(
"This filter has support for timeline through the 'enable' option.\n");
1972 "can not to satisfy request\n");
1989 printf(
"Bit stream filter %s\n", bsf->
name);
2004 par = strchr(topic,
'=');
2010 }
else if (!strcmp(topic,
"decoder")) {
2012 }
else if (!strcmp(topic,
"encoder")) {
2014 }
else if (!strcmp(topic,
"demuxer")) {
2016 }
else if (!strcmp(topic,
"muxer")) {
2018 }
else if (!strcmp(topic,
"protocol")) {
2021 }
else if (!strcmp(topic,
"filter")) {
2022 show_help_filter(par);
2024 }
else if (!strcmp(topic,
"bsf")) {
2039 while (
c !=
'\n' &&
c != EOF)
2046 const char *preset_name,
int is_path,
2047 const char *codec_name)
2051 const char *
base[3] = { getenv(
"FFMPEG_DATADIR"),
2056 av_strlcpy(filename, preset_name, filename_size);
2057 f = fopen(filename,
"r");
2059 #if HAVE_GETMODULEHANDLE && defined(_WIN32)
2060 char datadir[MAX_PATH], *ls;
2063 if (GetModuleFileNameA(GetModuleHandleA(
NULL), datadir,
sizeof(datadir) - 1))
2065 for (ls = datadir; ls < datadir + strlen(datadir); ls++)
2066 if (*ls ==
'\\') *ls =
'/';
2068 if (ls = strrchr(datadir,
'/'))
2071 strncat(datadir,
"/ffpresets",
sizeof(datadir) - 1 - strlen(datadir));
2076 for (
i = 0;
i < 3 && !
f;
i++) {
2079 snprintf(filename, filename_size,
"%s%s/%s.ffpreset",
base[
i],
2080 i != 1 ?
"" :
"/.ffmpeg", preset_name);
2081 f = fopen(filename,
"r");
2082 if (!
f && codec_name) {
2084 "%s%s/%s-%s.ffpreset",
2085 base[
i],
i != 1 ?
"" :
"/.ffmpeg", codec_name,
2087 f = fopen(filename,
"r");
2134 char *p = strchr(t->
key,
':');
2139 case 1: *p = 0;
break;
2150 else if (t->
key[0] == prefix &&
2172 "Could not alloc memory for stream options.\n");
2175 for (
i = 0;
i <
s->nb_streams;
i++)
2183 if (new_size >= INT_MAX / elem_size) {
2187 if (*
size < new_size) {
2193 memset(
tmp + *
size*elem_size, 0, (new_size-*
size) * elem_size);
2208 theta -= 360*
floor(theta/360 + 0.9/360);
2210 if (
fabs(theta - 90*
round(theta/90)) > 2)
2212 "If you want to help, upload a sample "
2213 "of this file to https://streams.videolan.org/upload/ "
2214 "and contact the ffmpeg-devel mailing list. (ffmpeg-devel@ffmpeg.org)");
2228 printf(
"Auto-detected sources for %s:\n", fmt->
name);
2231 printf(
"Cannot list sources. Not implemented.\n");
2236 printf(
"Cannot list sources.\n");
2258 printf(
"Auto-detected sinks for %s:\n", fmt->
name);
2261 printf(
"Cannot list sinks. Not implemented.\n");
2266 printf(
"Cannot list sinks.\n");
2284 char *opts_str =
NULL;
2289 if ((opts_str = strchr(*dev,
','))) {
2290 *(opts_str++) =
'\0';
2297 printf(
"\nDevice name is not provided.\n"
2298 "You can pass devicename[,opt1=val1[,opt2=val2...]] as an argument.\n\n");
2302 int show_sources(
void *optctx,
const char *opt,
const char *
arg)
2312 if ((ret = show_sinks_sources_parse_arg(
arg, &dev, &
opts)) < 0)
2318 if (!strcmp(fmt->
name,
"lavfi"))
2322 print_device_sources(fmt,
opts);
2330 print_device_sources(fmt,
opts);
2340 int show_sinks(
void *optctx,
const char *opt,
const char *
arg)
2350 if ((ret = show_sinks_sources_parse_arg(
arg, &dev, &
opts)) < 0)
2358 print_device_sinks(fmt,
opts);
2366 print_device_sinks(fmt,
opts);
static enum AVCodecID codec_ids[]
static enum AVSampleFormat sample_fmts[]
static double val(void *priv, double ch)
Macro definitions for various function/variable attributes.
simple assert() macros that are a bit more flexible than ISO C assert().
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Main libavdevice API header.
Main libavfilter public API header.
const char * avio_enum_protocols(void **opaque, int output)
Iterate through names of available protocols.
const AVClass * avio_protocol_get_class(const char *name)
Get AVClass by names of available protocols.
void av_bprintf(AVBPrint *buf, const char *fmt,...)
void av_bprint_init(AVBPrint *buf, unsigned size_init, unsigned size_max)
int av_bprint_finalize(AVBPrint *buf, char **ret_str)
Finalize a print buffer.
void av_bprint_chars(AVBPrint *buf, char c, unsigned n)
Append char c n times to a print buffer.
static int av_bprint_is_complete(const AVBPrint *buf)
Test if the print buffer is complete (not truncated).
#define AV_BPRINT_SIZE_AUTOMATIC
#define flags(name, subs,...)
#define fc(width, name, range_min, range_max)
#define us(width, name, range_min, range_max, subs,...)
static av_always_inline void filter(int16_t *output, ptrdiff_t out_stride, const int16_t *low, ptrdiff_t low_stride, const int16_t *high, ptrdiff_t high_stride, int len, int clip)
void exit_program(int ret)
Wraps exit with a program-specific cleanup routine.
static int match_group_separator(const OptionGroupDef *groups, int nb_groups, const char *opt)
int show_decoders(void *optctx, const char *opt, const char *arg)
Print a listing containing all the decoders supported by the program.
int opt_loglevel(void *optctx, const char *opt, const char *arg)
Set the libav* libraries log level.
AVDictionary * resample_opts
void show_help_children(const AVClass *class, int flags)
Show help for all options with given flags in class and all its children.
int opt_cpuflags(void *optctx, const char *opt, const char *arg)
Override the cpuflags.
static void prepare_app_arguments(int *argc_ptr, char ***argv_ptr)
void init_dynload(void)
Initialize dynamic library loading.
int parse_option(void *optctx, const char *opt, const char *arg, const OptionDef *options)
Parse one given option.
int show_help(void *optctx, const char *opt, const char *arg)
Generic -h handler common to all fftools.
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.
static const OptionDef * find_option(const OptionDef *po, const char *name)
static void log_callback_report(void *ptr, int level, const char *fmt, va_list vl)
static void show_help_bsf(const char *name)
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.
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...
static void show_help_codec(const char *name, int encoder)
int show_filters(void *optctx, const char *opt, const char *arg)
Print a listing containing all the filters supported by the program.
static void show_help_demuxer(const char *name)
int show_sample_fmts(void *optctx, 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.
static int report_file_level
static void print_codecs(int encoder)
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 show_muxers(void *optctx, const char *opt, const char *arg)
Print a listing containing all the muxers supported by the program (including devices).
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.
static int compare_codec_desc(const void *a, const void *b)
int show_bsfs(void *optctx, const char *opt, const char *arg)
Print a listing containing all the bit stream filters supported by the program.
static FILE * report_file
void * grow_array(void *array, int elem_size, int *size, int new_size)
Realloc array to hold new_size elements of elem_size.
static int write_option(void *optctx, const OptionDef *po, const char *opt, const char *arg)
static void print_all_libs_info(int flags, int level)
AVDictionary ** setup_find_stream_info_opts(AVFormatContext *s, AVDictionary *codec_opts)
Setup AVCodecContext options for avformat_find_stream_info().
int check_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the given stream matches a stream specifier.
static void(* program_exit)(int ret)
static void init_parse_context(OptionParseContext *octx, const OptionGroupDef *groups, int nb_groups)
static void add_opt(OptionParseContext *octx, const OptionDef *opt, const char *key, const char *val)
static void print_buildconf(int flags, int level)
#define PRINT_LIB_INFO(libname, LIBNAME, flags, level)
AVDictionary * filter_codec_opts(AVDictionary *opts, enum AVCodecID codec_id, AVFormatContext *s, AVStream *st, const AVCodec *codec)
Filter out options for given codec.
int show_layouts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the standard channel layouts supported by the program.
static void dump_argument(const char *a)
int show_encoders(void *optctx, const char *opt, const char *arg)
Print a listing containing all the encoders supported by the program.
static void finish_group(OptionParseContext *octx, int group_idx, const char *arg)
int show_version(void *optctx, const char *opt, const char *arg)
Print the version of the program to stdout.
static void expand_filename_template(AVBPrint *bp, const char *template, struct tm *tm)
void parse_loglevel(int argc, char **argv, const OptionDef *options)
Find the '-loglevel' option in the command line args and apply it.
static void show_help_protocol(const char *name)
static const AVCodec * next_codec_for_id(enum AVCodecID id, void **iter, int encoder)
void parse_options(void *optctx, int argc, char **argv, const OptionDef *options, void(*parse_arg_function)(void *, const char *))
static char get_media_type_char(enum AVMediaType type)
void uninit_parse_context(OptionParseContext *octx)
Free all allocated memory in an OptionParseContext.
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.
double get_rotation(AVStream *st)
void log_callback_help(void *ptr, int level, const char *fmt, va_list vl)
Trivial log callback.
AVDictionary * format_opts
void show_banner(int argc, char **argv, const OptionDef *options)
Print the program banner to stderr.
static void show_help_muxer(const char *name)
int opt_timelimit(void *optctx, const char *opt, const char *arg)
Limit the execution time.
int show_license(void *optctx, const char *opt, const char *arg)
Print the license of the program to stdout.
int show_codecs(void *optctx, const char *opt, const char *arg)
Print a listing containing all the codecs supported by the program.
int show_buildconf(void *optctx, const char *opt, const char *arg)
Print the build configuration of the program to stdout.
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 register_exit(void(*cb)(int ret))
Register a program-specific cleanup routine.
static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only, int muxdemuxers)
AVDictionary * codec_opts
int show_devices(void *optctx, const char *opt, const char *arg)
Print a listing containing all the devices supported by the program.
static void print_program_info(int flags, int level)
static unsigned get_codecs_sorted(const AVCodecDescriptor ***rcodecs)
void uninit_opts(void)
Uninitialize the cmdutils option system, in particular free the *_opts contexts and their contents.
static void print_codec(const AVCodec *c)
int show_formats(void *optctx, const char *opt, const char *arg)
Print a listing containing all the formats supported by the program (including devices).
#define sws_isSupportedOutput(x)
static int is_device(const AVClass *avclass)
int show_protocols(void *optctx, const char *opt, const char *arg)
Print a listing containing all the protocols supported by the program.
int parse_optgroup(void *optctx, OptionGroup *g)
Parse an options group and write results into optctx.
static const AVOption * opt_find(void *obj, const char *name, const char *unit, int opt_flags, int search_flags)
int opt_max_alloc(void *optctx, const char *opt, const char *arg)
static void check_options(const OptionDef *po)
int opt_report(void *optctx, const char *opt, const char *arg)
void init_opts(void)
Initialize the cmdutils option system, in particular allocate the *_opts contexts.
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.
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 int init_report(const char *env)
#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name)
int show_pix_fmts(void *optctx, const char *opt, const char *arg)
Print a listing containing all the pixel formats supported by the program.
int show_demuxers(void *optctx, const char *opt, const char *arg)
Print a listing containing all the demuxer supported by the program (including devices).
#define sws_isSupportedInput(x)
static void print_codecs_for_id(enum AVCodecID id, int encoder)
const char program_name[]
program name, defined by the program for show_version().
#define GET_SAMPLE_RATE_NAME(rate)
#define media_type_string
#define GET_CODEC_NAME(id)
#define GET_PIX_FMT_NAME(pix_fmt)
void show_help_default(const char *opt, const char *arg)
Per-fftool specific help handler.
#define GET_CH_LAYOUT_DESC(ch_layout)
#define GROW_ARRAY(array, nb_elems)
#define GET_SAMPLE_FMT_NAME(sample_fmt)
const int program_birth_year
program birth year, defined by the program for show_banner()
#define FFDIFFSIGN(x, y)
Comparator.
#define FFMPEG_CONFIGURATION
void av_force_cpu_flags(int arg)
Disables cpu detection and forces the specified flags.
int av_parse_cpu_caps(unsigned *flags, const char *s)
Parse CPU caps from a string and update the given AV_CPU_* flags based on that.
int av_get_cpu_flags(void)
Return the flags which specify extensions supported by the CPU.
static __device__ float fabs(float a)
static __device__ float floor(float a)
static struct codec_string codecs[]
static const uint16_t channel_layouts[7]
static void decode(AVCodecContext *dec_ctx, AVPacket *pkt, AVFrame *frame, FILE *outfile)
static enum AVPixelFormat pix_fmt
static void encode(AVCodecContext *ctx, AVFrame *frame, AVPacket *pkt, FILE *output)
double av_strtod(const char *numstr, char **tail)
Parse the string in numstr and return its value as a double.
simple arithmetic expression evaluator
const OptionDef options[]
int av_opt_get_key_value(const char **ropts, const char *key_val_sep, const char *pairs_sep, unsigned flags, char **rkey, char **rval)
Extract a key-value pair from the beginning of a string.
#define AV_OPT_SEARCH_CHILDREN
Search in possible children of the given object first.
#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...
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.
FF_ENABLE_DEPRECATION_WARNINGS const AVClass * av_opt_child_class_iterate(const AVClass *parent, void **iter)
Iterate over potential AVOptions-enabled children of parent.
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags)
Show the obj options.
int av_get_standard_channel_layout(unsigned index, uint64_t *layout, const char **name)
Get the value and name of a standard channel layout.
const char * av_get_channel_description(uint64_t channel)
Get the description of a given channel.
const char * av_get_channel_name(uint64_t channel)
Get the name of a given channel.
#define AV_CODEC_CAP_DRAW_HORIZ_BAND
Decoder can use draw_horiz_band callback.
#define AV_CODEC_PROP_LOSSY
Codec supports lossy compression.
const AVCodecDescriptor * avcodec_descriptor_get_by_name(const char *name)
AVCodec * avcodec_find_decoder(enum AVCodecID id)
Find a registered decoder with a matching codec ID.
#define AV_CODEC_CAP_TRUNCATED
int av_codec_is_encoder(const AVCodec *codec)
#define AV_CODEC_CAP_OTHER_THREADS
Codec supports multithreading through a method other than slice- or frame-level multithreading.
#define AV_CODEC_CAP_AVOID_PROBING
Decoder is not a preferred choice for probing.
#define AV_CODEC_CAP_VARIABLE_FRAME_SIZE
Audio encoder supports receiving a different number of samples in each call.
#define AV_CODEC_CAP_DELAY
Encoder or decoder requires flushing with NULL input at the end in order to give the complete and cor...
const AVCodecHWConfig * avcodec_get_hw_config(const AVCodec *codec, int index)
Retrieve supported hardware configurations for a codec.
#define AV_CODEC_PROP_LOSSLESS
Codec supports lossless compression.
#define AV_CODEC_CAP_DR1
Codec uses get_buffer() or get_encode_buffer() for allocating buffers and supports custom allocators.
#define AV_CODEC_CAP_SUBFRAMES
Codec can output multiple frames per AVPacket Normally demuxers return one frame at a time,...
int av_codec_is_decoder(const AVCodec *codec)
#define AV_CODEC_PROP_INTRA_ONLY
Codec uses only intra compression.
AVCodec * avcodec_find_decoder_by_name(const char *name)
Find a registered decoder with the specified name.
#define AV_CODEC_CAP_SLICE_THREADS
Codec supports slice-based (or partition-based) multithreading.
const AVCodec * av_codec_iterate(void **opaque)
Iterate over all registered codecs.
const AVCodecDescriptor * avcodec_descriptor_next(const AVCodecDescriptor *prev)
Iterate over all codec descriptors known to libavcodec.
AVCodec * avcodec_find_encoder(enum AVCodecID id)
Find a registered encoder with a matching codec ID.
AVCodec * avcodec_find_encoder_by_name(const char *name)
Find a registered encoder with the specified name.
AVCodecID
Identify the syntax and semantics of the bitstream.
const AVCodecDescriptor * avcodec_descriptor_get(enum AVCodecID id)
#define AV_CODEC_CAP_CHANNEL_CONF
Codec should fill in channel configuration and samplerate instead of container.
#define AV_CODEC_CAP_PARAM_CHANGE
Codec supports changed parameters at any point.
#define AV_CODEC_CAP_HARDWARE
Codec is backed by a hardware implementation.
#define AV_CODEC_CAP_SMALL_LAST_FRAME
Codec can be fed a final frame with a smaller size.
#define AV_CODEC_CAP_FRAME_THREADS
Codec supports frame-level multithreading.
const AVBitStreamFilter * av_bsf_get_by_name(const char *name)
const AVClass * avcodec_get_class(void)
Get the AVClass for AVCodecContext.
#define AV_CODEC_CAP_HYBRID
Codec is potentially backed by a hardware implementation, but not necessarily.
#define AV_CODEC_CAP_EXPERIMENTAL
Codec is experimental and is thus avoided in favor of non experimental encoders.
const AVBitStreamFilter * av_bsf_iterate(void **opaque)
Iterate over all registered bitstream filters.
@ AV_PKT_DATA_DISPLAYMATRIX
This side data contains a 3x3 transformation matrix describing an affine transformation that needs to...
int avdevice_list_input_sources(AVInputFormat *device, const char *device_name, AVDictionary *device_options, AVDeviceInfoList **device_list)
List devices.
int avdevice_list_output_sinks(AVOutputFormat *device, const char *device_name, AVDictionary *device_options, AVDeviceInfoList **device_list)
AVInputFormat * av_input_video_device_next(AVInputFormat *d)
Video input devices iterator.
AVInputFormat * av_input_audio_device_next(AVInputFormat *d)
Audio input devices iterator.
void avdevice_free_list_devices(AVDeviceInfoList **device_list)
Convenient function to free result of avdevice_list_devices().
AVOutputFormat * av_output_video_device_next(AVOutputFormat *d)
Video output devices iterator.
AVOutputFormat * av_output_audio_device_next(AVOutputFormat *d)
Audio output devices iterator.
const AVOutputFormat * av_muxer_iterate(void **opaque)
Iterate over all registered muxers.
uint8_t * av_stream_get_side_data(const AVStream *stream, enum AVPacketSideDataType type, size_t *size)
Get side information from stream.
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
const AVInputFormat * av_demuxer_iterate(void **opaque)
Iterate over all registered demuxers.
ff_const59 AVInputFormat * av_find_input_format(const char *short_name)
Find AVInputFormat based on the short name of the input format.
ff_const59 AVOutputFormat * av_guess_format(const char *short_name, const char *filename, const char *mime_type)
Return the output format in the list of registered output formats which best matches the provided par...
int avformat_match_stream_specifier(AVFormatContext *s, AVStream *st, const char *spec)
Check if the stream st contained in s is matched by the stream specifier spec.
const AVFilter * av_filter_iterate(void **opaque)
Iterate over all registered filters.
#define AVFILTER_FLAG_DYNAMIC_OUTPUTS
The number of the filter outputs is not determined just by AVFilter.outputs.
enum AVMediaType avfilter_pad_get_type(const AVFilterPad *pads, int pad_idx)
Get the type of an AVFilterPad.
const char * avfilter_pad_get_name(const AVFilterPad *pads, int pad_idx)
Get the name of an AVFilterPad.
#define AVFILTER_FLAG_SUPPORT_TIMELINE
Handy mask to test whether the filter supports or no the timeline feature (internally or generically)...
#define AVFILTER_FLAG_SLICE_THREADS
The filter supports multithreading by splitting frames into multiple parts and processing them concur...
const AVFilter * avfilter_get_by_name(const char *name)
Get a filter definition matching the given name.
int avfilter_pad_count(const AVFilterPad *pads)
Get the number of elements in a NULL-terminated array of AVFilterPads (e.g.
#define AVFILTER_FLAG_DYNAMIC_INPUTS
The number of the filter inputs is not determined just by AVFilter.inputs.
attribute_deprecated const AVClass * avresample_get_class(void)
void av_dict_free(AVDictionary **pm)
Free all the memory allocated for an AVDictionary struct and all keys and values.
#define AV_DICT_IGNORE_SUFFIX
Return first entry in a dictionary whose first part corresponds to the search key,...
int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags)
Set the given entry in *pm, overwriting an existing entry.
int av_dict_parse_string(AVDictionary **pm, const char *str, const char *key_val_sep, const char *pairs_sep, int flags)
Parse the key/value pairs list and add the parsed entries to a dictionary.
AVDictionaryEntry * av_dict_get(const AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags)
Get a dictionary entry with matching key.
int av_strerror(int errnum, char *errbuf, size_t errbuf_size)
Put a description of the AVERROR code errnum in errbuf.
#define av_err2str(errnum)
Convenience macro, the return value should be used only directly in function arguments but never stan...
#define AVERROR_OPTION_NOT_FOUND
Option not found.
#define AV_LOG_TRACE
Extremely verbose debugging, useful for libav* development.
#define AV_LOG_PANIC
Something went really wrong and we will crash now.
#define AV_LOG_QUIET
Print no output.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
#define AV_LOG_WARNING
Something somehow does not look correct.
#define AV_LOG_FATAL
Something went wrong and recovery is not possible.
#define AV_LOG_VERBOSE
Detailed information.
#define AV_LOG_INFO
Standard information.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
void av_log_set_callback(void(*callback)(void *, int, const char *, va_list))
Set the logging callback.
void av_log_set_level(int level)
Set the log level.
void av_log_default_callback(void *ptr, int level, const char *fmt, va_list vl)
Default logging callback.
#define AV_LOG_SKIP_REPEATED
Skip repeated messages, this requires the user app to use av_log() instead of (f)printf as the 2 woul...
int av_log_get_flags(void)
#define AV_LOG_PRINT_LEVEL
Include the log severity in messages originating from codecs.
int av_log_get_level(void)
Get the current log level.
void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl, char *line, int line_size, int *print_prefix)
Format a line of log the same way as the default callback.
void av_log_set_flags(int arg)
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
char * av_strdup(const char *s)
Duplicate a string.
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
Allocate, reallocate, or free an array.
void * av_calloc(size_t nmemb, size_t size)
Non-inlined equivalent of av_mallocz_array().
void * av_mallocz_array(size_t nmemb, size_t size)
Allocate a memory block for an array with av_mallocz().
void av_max_alloc(size_t max)
Set the maximum size that may be allocated in one block.
static void * av_x_if_null(const void *p, const void *x)
Return x default pointer in case p is NULL.
@ AVMEDIA_TYPE_ATTACHMENT
Opaque data information usually sparse.
@ AVMEDIA_TYPE_DATA
Opaque data information usually continuous.
char * av_get_sample_fmt_string(char *buf, int buf_size, enum AVSampleFormat sample_fmt)
Generate a string corresponding to the sample format with sample_fmt, or a header if sample_fmt is ne...
AVSampleFormat
Audio sample formats.
@ AV_SAMPLE_FMT_NB
Number of sample formats. DO NOT USE if linking dynamically.
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,...
int av_match_name(const char *name, const char *names)
Match instances of a name in a comma-separated list of names.
int av_strstart(const char *str, const char *pfx, const char **ptr)
Return non-zero if pfx is a prefix of str.
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 av_const int av_toupper(int c)
Locale-independent conversion of ASCII characters to uppercase.
double av_display_rotation_get(const int32_t matrix[9])
Extract the rotation component of the transformation matrix.
const AVClass * sws_get_class(void)
Get the AVClass for swsContext.
struct SwsContext * sws_alloc_context(void)
Allocate an empty SwsContext.
void sws_freeContext(struct SwsContext *swsContext)
Free the swscaler context swsContext.
const AVClass * swr_get_class(void)
Get the AVClass for SwrContext.
av_cold void swr_free(SwrContext **ss)
Free the given SwrContext and set the pointer to NULL.
av_cold struct SwrContext * swr_alloc(void)
Allocate SwrContext.
int av_opt_set(void *obj, const char *name, const char *val, int search_flags)
const char * av_hwdevice_get_type_name(enum AVHWDeviceType type)
Get the string name of an AVHWDeviceType.
Libavutil version macros.
static enum AVPixelFormat pix_fmts[]
Replacements for frequently missing libm functions.
static av_always_inline av_const double round(double x)
#define AV_IS_OUTPUT_DEVICE(category)
#define AV_IS_INPUT_DEVICE(category)
#define AV_OPT_FLAG_FILTERING_PARAM
a generic parameter which can be set by the user for filtering
#define AV_OPT_FLAG_BSF_PARAM
a generic parameter which can be set by the user for bit stream filtering
#define AV_OPT_FLAG_AUDIO_PARAM
#define AV_OPT_FLAG_DECODING_PARAM
a generic parameter which can be set by the user for demuxing or decoding
#define AV_OPT_FLAG_VIDEO_PARAM
#define AV_OPT_FLAG_ENCODING_PARAM
a generic parameter which can be set by the user for muxing or encoding
#define AV_OPT_FLAG_SUBTITLE_PARAM
const char * av_get_known_color_name(int color_idx, const uint8_t **rgbp)
Get the name of a color from the internal table of hard-coded named colors.
int av_parse_time(int64_t *timeval, const char *timestr, int duration)
Parse timestr and return in *time a corresponding number of microseconds.
enum AVPixelFormat av_pix_fmt_desc_get_id(const AVPixFmtDescriptor *desc)
const AVPixFmtDescriptor * av_pix_fmt_desc_next(const AVPixFmtDescriptor *prev)
Iterate over all pixel format descriptors known to libavutil.
int av_get_bits_per_pixel(const AVPixFmtDescriptor *pixdesc)
Return the number of bits per pixel used by the pixel format described by pixdesc.
#define AV_PIX_FMT_FLAG_BITSTREAM
All values of a component are bit-wise packed end to end.
#define AV_PIX_FMT_FLAG_HWACCEL
Pixel format is an HW accelerated format.
#define AV_PIX_FMT_FLAG_PAL
Pixel format has a palette in data[1], values are indexes in this palette.
AVPixelFormat
Pixel format.
typedef void(RENAME(mix_any_func_type))
static const SheerTable rgb[2]
#define FF_ARRAY_ELEMS(a)
const AVClass * priv_class
A class for the private data, used to declare bitstream filter private AVOptions.
Describe the class of an AVClass context structure.
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
This struct describes the properties of a single codec described by an AVCodecID.
enum AVHWDeviceType device_type
The device type associated with the configuration.
enum AVMediaType codec_type
General type of the encoded data.
const AVClass * priv_class
AVClass for the private context.
const char * long_name
Descriptive name for the codec, meant to be more human readable than name.
const char * name
Name of the codec implementation.
int capabilities
Codec capabilities.
int nb_devices
number of autodetected devices
int default_device
index of default device or -1 if no default
AVDeviceInfo ** devices
list of autodetected devices
char * device_description
human friendly name
char * device_name
device name, format depends on device
A filter pad used for either input or output.
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
uint64_t flags
Combination of AV_PIX_FMT_FLAG_...
uint8_t nb_components
The number of components each pixel has, (1-4)
Rational number (pair of numerator and denominator).
AVCodecParameters * codecpar
Codec parameters associated with this stream.
int(* func_arg)(void *, const char *, const char *)
const char * sep
Option to be used as group separator.
A list of option groups that all have the same group type (e.g.
const OptionGroupDef * group_def
const OptionGroupDef * group_def
AVDictionary * codec_opts
AVDictionary * format_opts
AVDictionary * resample_opts
An option extracted from the commandline.
The libswresample context.
libswresample public header
static int swscale(SwsContext *c, const uint8_t *src[], int srcStride[], int srcSliceY, int srcSliceH, uint8_t *dst[], int dstStride[])
static void error(const char *err)
static int array[MAX_W *MAX_W]
#define va_copy(dst, src)
static double cb(void *priv, double x, double y)
static const uint8_t offset[127][2]