|
|
@@ -1193,16 +1193,29 @@ int show_license(void *optctx, const char *opt, const char *arg) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int show_formats(void *optctx, const char *opt, const char *arg) |
|
|
|
static int is_device(const AVClass *avclass) |
|
|
|
{ |
|
|
|
if (!avclass) |
|
|
|
return 0; |
|
|
|
return avclass->category == AV_CLASS_CATEGORY_DEVICE_VIDEO_OUTPUT || |
|
|
|
avclass->category == AV_CLASS_CATEGORY_DEVICE_VIDEO_INPUT || |
|
|
|
avclass->category == AV_CLASS_CATEGORY_DEVICE_AUDIO_OUTPUT || |
|
|
|
avclass->category == AV_CLASS_CATEGORY_DEVICE_AUDIO_INPUT || |
|
|
|
avclass->category == AV_CLASS_CATEGORY_DEVICE_OUTPUT || |
|
|
|
avclass->category == AV_CLASS_CATEGORY_DEVICE_INPUT; |
|
|
|
} |
|
|
|
|
|
|
|
static int show_formats_devices(void *optctx, const char *opt, const char *arg, int device_only) |
|
|
|
{ |
|
|
|
AVInputFormat *ifmt = NULL; |
|
|
|
AVOutputFormat *ofmt = NULL; |
|
|
|
const char *last_name; |
|
|
|
int is_dev; |
|
|
|
|
|
|
|
printf("File formats:\n" |
|
|
|
printf("%s\n" |
|
|
|
" D. = Demuxing supported\n" |
|
|
|
" .E = Muxing supported\n" |
|
|
|
" --\n"); |
|
|
|
" --\n", device_only ? "Devices:" : "File formats:"); |
|
|
|
last_name = "000"; |
|
|
|
for (;;) { |
|
|
|
int decode = 0; |
|
|
@@ -1211,6 +1224,9 @@ int show_formats(void *optctx, const char *opt, const char *arg) |
|
|
|
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 == NULL || strcmp(ofmt->name, name) < 0) && |
|
|
|
strcmp(ofmt->name, last_name) > 0) { |
|
|
|
name = ofmt->name; |
|
|
@@ -1219,6 +1235,9 @@ int show_formats(void *optctx, const char *opt, const char *arg) |
|
|
|
} |
|
|
|
} |
|
|
|
while ((ifmt = av_iformat_next(ifmt))) { |
|
|
|
is_dev = is_device(ifmt->priv_class); |
|
|
|
if (!is_dev && device_only) |
|
|
|
continue; |
|
|
|
if ((name == NULL || strcmp(ifmt->name, name) < 0) && |
|
|
|
strcmp(ifmt->name, last_name) > 0) { |
|
|
|
name = ifmt->name; |
|
|
@@ -1241,6 +1260,16 @@ int show_formats(void *optctx, const char *opt, const char *arg) |
|
|
|
return 0; |
|
|
|
} |
|
|
|
|
|
|
|
int show_formats(void *optctx, const char *opt, const char *arg) |
|
|
|
{ |
|
|
|
return show_formats_devices(optctx, opt, arg, 0); |
|
|
|
} |
|
|
|
|
|
|
|
int show_devices(void *optctx, const char *opt, const char *arg) |
|
|
|
{ |
|
|
|
return show_formats_devices(optctx, opt, arg, 1); |
|
|
|
} |
|
|
|
|
|
|
|
#define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \ |
|
|
|
if (codec->field) { \ |
|
|
|
const type *p = codec->field; \ |
|
|
|