|
|
|
@ -75,6 +75,12 @@ static FILE *report_file; |
|
|
|
|
static int report_file_level = AV_LOG_DEBUG; |
|
|
|
|
int hide_banner = 0; |
|
|
|
|
|
|
|
|
|
enum show_muxdemuxers { |
|
|
|
|
SHOW_DEFAULT, |
|
|
|
|
SHOW_DEMUXERS, |
|
|
|
|
SHOW_MUXERS, |
|
|
|
|
}; |
|
|
|
|
|
|
|
|
|
void init_opts(void) |
|
|
|
|
{ |
|
|
|
|
av_dict_set(&sws_dict, "flags", "bicubic", 0); |
|
|
|
@ -1251,7 +1257,7 @@ static int is_device(const AVClass *avclass) |
|
|
|
|
return AV_IS_INPUT_DEVICE(avclass->category) || AV_IS_OUTPUT_DEVICE(avclass->category); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only) |
|
|
|
|
static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only, int muxdemuxers) |
|
|
|
|
{ |
|
|
|
|
AVInputFormat *ifmt = NULL; |
|
|
|
|
AVOutputFormat *ofmt = NULL; |
|
|
|
@ -1269,29 +1275,33 @@ static int show_formats_devices(void *optctx, const char *opt, const char *arg, |
|
|
|
|
const char *name = NULL; |
|
|
|
|
const char *long_name = NULL; |
|
|
|
|
|
|
|
|
|
while ((ofmt = av_oformat_next(ofmt))) { |
|
|
|
|
is_dev = is_device(ofmt->priv_class); |
|
|
|
|
if (!is_dev && device_only) |
|
|
|
|
continue; |
|
|
|
|
if ((!name || strcmp(ofmt->name, name) < 0) && |
|
|
|
|
strcmp(ofmt->name, last_name) > 0) { |
|
|
|
|
name = ofmt->name; |
|
|
|
|
long_name = ofmt->long_name; |
|
|
|
|
encode = 1; |
|
|
|
|
if (muxdemuxers !=SHOW_DEMUXERS) { |
|
|
|
|
while ((ofmt = av_oformat_next(ofmt))) { |
|
|
|
|
is_dev = is_device(ofmt->priv_class); |
|
|
|
|
if (!is_dev && device_only) |
|
|
|
|
continue; |
|
|
|
|
if ((!name || strcmp(ofmt->name, name) < 0) && |
|
|
|
|
strcmp(ofmt->name, last_name) > 0) { |
|
|
|
|
name = ofmt->name; |
|
|
|
|
long_name = ofmt->long_name; |
|
|
|
|
encode = 1; |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
while ((ifmt = av_iformat_next(ifmt))) { |
|
|
|
|
is_dev = is_device(ifmt->priv_class); |
|
|
|
|
if (!is_dev && device_only) |
|
|
|
|
continue; |
|
|
|
|
if ((!name || strcmp(ifmt->name, name) < 0) && |
|
|
|
|
strcmp(ifmt->name, last_name) > 0) { |
|
|
|
|
name = ifmt->name; |
|
|
|
|
long_name = ifmt->long_name; |
|
|
|
|
encode = 0; |
|
|
|
|
if (muxdemuxers != SHOW_MUXERS) { |
|
|
|
|
while ((ifmt = av_iformat_next(ifmt))) { |
|
|
|
|
is_dev = is_device(ifmt->priv_class); |
|
|
|
|
if (!is_dev && device_only) |
|
|
|
|
continue; |
|
|
|
|
if ((!name || strcmp(ifmt->name, name) < 0) && |
|
|
|
|
strcmp(ifmt->name, last_name) > 0) { |
|
|
|
|
name = ifmt->name; |
|
|
|
|
long_name = ifmt->long_name; |
|
|
|
|
encode = 0; |
|
|
|
|
} |
|
|
|
|
if (name && strcmp(ifmt->name, name) == 0) |
|
|
|
|
decode = 1; |
|
|
|
|
} |
|
|
|
|
if (name && strcmp(ifmt->name, name) == 0) |
|
|
|
|
decode = 1; |
|
|
|
|
} |
|
|
|
|
if (!name) |
|
|
|
|
break; |
|
|
|
@ -1308,12 +1318,22 @@ static int show_formats_devices(void *optctx, const char *opt, const char *arg, |
|
|
|
|
|
|
|
|
|
int show_formats(void *optctx, const char *opt, const char *arg) |
|
|
|
|
{ |
|
|
|
|
return show_formats_devices(optctx, opt, arg, 0); |
|
|
|
|
return show_formats_devices(optctx, opt, arg, 0, SHOW_DEFAULT); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int show_muxers(void *optctx, const char *opt, const char *arg) |
|
|
|
|
{ |
|
|
|
|
return show_formats_devices(optctx, opt, arg, 0, SHOW_MUXERS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int show_demuxers(void *optctx, const char *opt, const char *arg) |
|
|
|
|
{ |
|
|
|
|
return show_formats_devices(optctx, opt, arg, 0, SHOW_DEMUXERS); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
int show_devices(void *optctx, const char *opt, const char *arg) |
|
|
|
|
{ |
|
|
|
|
return show_formats_devices(optctx, opt, arg, 1); |
|
|
|
|
return show_formats_devices(optctx, opt, arg, 1, SHOW_DEFAULT); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \ |
|
|
|
|