Message ID | 20161104071723.13422-1-lq@chinaffmpeg.org |
---|---|
State | Superseded |
Headers | show |
On Fri, Nov 04, 2016 at 03:17:23PM +0800, Steven Liu wrote: > add -muxers and -demuxers parameters to list the dexmuers and muxers > > Signed-off-by: Steven Liu <lingjiujianke@gmail.com> > --- > cmdutils.c | 60 +++++++++++++++++++++++++++++++------------------- > cmdutils.h | 14 ++++++++++++ > cmdutils_common_opts.h | 2 ++ > 3 files changed, 53 insertions(+), 23 deletions(-) > > diff --git a/cmdutils.c b/cmdutils.c > index 469c2d5..63a46f3 100644 > --- a/cmdutils.c > +++ b/cmdutils.c > @@ -1251,7 +1251,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 +1269,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 != 2) { > + 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 != 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 (name && strcmp(ifmt->name, name) == 0) > + decode = 1; > } > - if (name && strcmp(ifmt->name, name) == 0) > - decode = 1; > } > if (!name) > break; > @@ -1308,12 +1312,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, 0); > +} > + > +int show_muxers(void *optctx, const char *opt, const char *arg) > +{ > + return show_formats_devices(optctx, opt, arg, 0, 1); > +} > + > +int show_demuxers(void *optctx, const char *opt, const char *arg) > +{ > + return show_formats_devices(optctx, opt, arg, 0, 2); ^ please use named constants, #define or enum, not just litteral numbers like 2 it may be confusing to some readers what they mean [...]
2016-11-04 19:36 GMT+08:00 Michael Niedermayer <michael@niedermayer.cc>: > On Fri, Nov 04, 2016 at 03:17:23PM +0800, Steven Liu wrote: > > add -muxers and -demuxers parameters to list the dexmuers and muxers > > > > Signed-off-by: Steven Liu <lingjiujianke@gmail.com> > > --- > > cmdutils.c | 60 ++++++++++++++++++++++++++++++ > +------------------- > > cmdutils.h | 14 ++++++++++++ > > cmdutils_common_opts.h | 2 ++ > > 3 files changed, 53 insertions(+), 23 deletions(-) > > > > diff --git a/cmdutils.c b/cmdutils.c > > index 469c2d5..63a46f3 100644 > > --- a/cmdutils.c > > +++ b/cmdutils.c > > @@ -1251,7 +1251,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 +1269,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 != 2) { > > + 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 != 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 (name && strcmp(ifmt->name, name) == 0) > > + decode = 1; > > } > > - if (name && strcmp(ifmt->name, name) == 0) > > - decode = 1; > > } > > if (!name) > > break; > > @@ -1308,12 +1312,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, 0); > > +} > > + > > +int show_muxers(void *optctx, const char *opt, const char *arg) > > +{ > > + return show_formats_devices(optctx, opt, arg, 0, 1); > > +} > > + > > +int show_demuxers(void *optctx, const char *opt, const char *arg) > > +{ > > + return show_formats_devices(optctx, opt, arg, 0, 2); > ^ > please use named constants, #define or enum, not just litteral numbers > like 2 > > it may be confusing to some readers what they mean > ok, update at patch v1 > > [...] > > -- > Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB > > Avoid a single point of failure, be that a person or equipment. > > _______________________________________________ > ffmpeg-devel mailing list > ffmpeg-devel@ffmpeg.org > http://ffmpeg.org/mailman/listinfo/ffmpeg-devel > >
diff --git a/cmdutils.c b/cmdutils.c index 469c2d5..63a46f3 100644 --- a/cmdutils.c +++ b/cmdutils.c @@ -1251,7 +1251,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 +1269,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 != 2) { + 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 != 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 (name && strcmp(ifmt->name, name) == 0) + decode = 1; } - if (name && strcmp(ifmt->name, name) == 0) - decode = 1; } if (!name) break; @@ -1308,12 +1312,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, 0); +} + +int show_muxers(void *optctx, const char *opt, const char *arg) +{ + return show_formats_devices(optctx, opt, arg, 0, 1); +} + +int show_demuxers(void *optctx, const char *opt, const char *arg) +{ + return show_formats_devices(optctx, opt, arg, 0, 2); } 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, 0); } #define PRINT_CODEC_SUPPORTED(codec, field, type, list_name, term, get_name) \ diff --git a/cmdutils.h b/cmdutils.h index 1b96aa4..e75d8d3 100644 --- a/cmdutils.h +++ b/cmdutils.h @@ -442,6 +442,20 @@ int show_license(void *optctx, const char *opt, const char *arg); int show_formats(void *optctx, const char *opt, const char *arg); /** + * Print a listing containing all the muxers supported by the + * program (including devices). + * This option processing function does not utilize the arguments. + */ +int show_muxers(void *optctx, const char *opt, const char *arg); + +/** + * Print a listing containing all the demuxer supported by the + * program (including devices). + * This option processing function does not utilize the arguments. + */ +int show_demuxers(void *optctx, const char *opt, const char *arg); + +/** * Print a listing containing all the devices supported by the * program. * This option processing function does not utilize the arguments. diff --git a/cmdutils_common_opts.h b/cmdutils_common_opts.h index 758dac1..f7c1ca4 100644 --- a/cmdutils_common_opts.h +++ b/cmdutils_common_opts.h @@ -6,6 +6,8 @@ { "version" , OPT_EXIT, {.func_arg = show_version}, "show version" }, { "buildconf" , OPT_EXIT, {.func_arg = show_buildconf}, "show build configuration" }, { "formats" , OPT_EXIT, {.func_arg = show_formats }, "show available formats" }, + { "muxers" , OPT_EXIT, {.func_arg = show_muxers }, "show available muxers" }, + { "demuxers" , OPT_EXIT, {.func_arg = show_demuxers }, "show available demuxers" }, { "devices" , OPT_EXIT, {.func_arg = show_devices }, "show available devices" }, { "codecs" , OPT_EXIT, {.func_arg = show_codecs }, "show available codecs" }, { "decoders" , OPT_EXIT, {.func_arg = show_decoders }, "show available decoders" },
add -muxers and -demuxers parameters to list the dexmuers and muxers Signed-off-by: Steven Liu <lingjiujianke@gmail.com> --- cmdutils.c | 60 +++++++++++++++++++++++++++++++------------------- cmdutils.h | 14 ++++++++++++ cmdutils_common_opts.h | 2 ++ 3 files changed, 53 insertions(+), 23 deletions(-)