summaryrefslogtreecommitdiff
path: root/cmdutils.c
diff options
context:
space:
mode:
authorSteven Liu <lq@chinaffmpeg.org>2016-11-04 20:20:25 +0800
committerMichael Niedermayer <michael@niedermayer.cc>2016-11-08 01:56:31 +0100
commitacd87dfc05b5c4d8ebf6832fe7c0aa13b9cc0c5f (patch)
tree38aa40f706bef575f2479eb6c1627a8c8063a4ca /cmdutils.c
parent0cf6853804675c99573889670b3447af4de1a3f3 (diff)
cmdutils: add show_demuxers and show_muxers
add -muxers and -demuxers parameters to list the dexmuers and muxers Signed-off-by: Michael Niedermayer <michael@niedermayer.cc>
Diffstat (limited to 'cmdutils.c')
-rw-r--r--cmdutils.c66
1 files changed, 43 insertions, 23 deletions
diff --git a/cmdutils.c b/cmdutils.c
index 469c2d557c..44fe64ce76 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -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) \