[FFmpeg-devel,v2,2/2] cmdutils: add show_help_protocol for get protocol options

Submitted by Steven Liu on Nov. 27, 2019, 3:11 a.m.

Details

Message ID 20191127031158.13389-1-lq@chinaffmpeg.org
State New
Headers show

Commit Message

Steven Liu Nov. 27, 2019, 3:11 a.m.
Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
---
 fftools/cmdutils.c   | 18 ++++++++++++++++++
 fftools/ffmpeg_opt.c |  2 +-
 2 files changed, 19 insertions(+), 1 deletion(-)

Comments

lance.lmwang@gmail.com Nov. 27, 2019, 4:52 a.m.
On Wed, Nov 27, 2019 at 11:11:58AM +0800, Steven Liu wrote:
> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
> ---
>  fftools/cmdutils.c   | 18 ++++++++++++++++++
>  fftools/ffmpeg_opt.c |  2 +-
>  2 files changed, 19 insertions(+), 1 deletion(-)
> 
> diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
> index 84f98b7c04..96b823f74a 100644
> --- a/fftools/cmdutils.c
> +++ b/fftools/cmdutils.c
> @@ -1870,6 +1870,22 @@ static void show_help_demuxer(const char *name)
>          show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM);
>  }
>  
> +static void show_help_protocol(const char *name)
> +{
> +    const AVClass *proto_class = avio_protocol_get_class(name);
> +
> +    printf("Protocol [%s]:\n"
> +           " D. = Input supported\n"
> +           " .E = Output supported\n"
> +           " --\n", name);

It's better to move the print message after the next NULL pointer checking.

> +    if (!proto_class) {
> +        av_log(NULL, AV_LOG_ERROR, "Unknown protocol '%s'.\n", name);
> +        return;
> +    }
> +
> +    show_help_children(proto_class, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
> +}
> +
>  static void show_help_muxer(const char *name)
>  {
>      const AVCodecDescriptor *desc;
> @@ -2000,6 +2016,8 @@ int show_help(void *optctx, const char *opt, const char *arg)
>          show_help_demuxer(par);
>      } else if (!strcmp(topic, "muxer")) {
>          show_help_muxer(par);
> +    } else if (!strcmp(topic, "protocol")) {
> +        show_help_protocol(par);
>  #if CONFIG_AVFILTER
>      } else if (!strcmp(topic, "filter")) {
>          show_help_filter(par);
> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
> index 71063cc443..8d73fa8a78 100644
> --- a/fftools/ffmpeg_opt.c
> +++ b/fftools/ffmpeg_opt.c
> @@ -3194,7 +3194,7 @@ void show_help_default(const char *opt, const char *arg)
>             "    -h      -- print basic options\n"
>             "    -h long -- print more options\n"
>             "    -h full -- print all options (including all format and codec specific options, very long)\n"
> -           "    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf\n"
> +           "    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol\n"
>             "    See man %s for detailed description of the options.\n"
>             "\n", program_name);
>  
> -- 
> 2.15.1
> 
> 
> 
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
Steven Liu Nov. 27, 2019, 5:52 a.m.
> 在 2019年11月27日,12:52,Limin Wang <lance.lmwang@gmail.com> 写道:
> 
> On Wed, Nov 27, 2019 at 11:11:58AM +0800, Steven Liu wrote:
>> Signed-off-by: Steven Liu <lq@chinaffmpeg.org>
>> ---
>> fftools/cmdutils.c   | 18 ++++++++++++++++++
>> fftools/ffmpeg_opt.c |  2 +-
>> 2 files changed, 19 insertions(+), 1 deletion(-)
>> 
>> diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
>> index 84f98b7c04..96b823f74a 100644
>> --- a/fftools/cmdutils.c
>> +++ b/fftools/cmdutils.c
>> @@ -1870,6 +1870,22 @@ static void show_help_demuxer(const char *name)
>>         show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM);
>> }
>> 
>> +static void show_help_protocol(const char *name)
>> +{
>> +    const AVClass *proto_class = avio_protocol_get_class(name);
>> +
>> +    printf("Protocol [%s]:\n"
>> +           " D. = Input supported\n"
>> +           " .E = Output supported\n"
>> +           " --\n", name);
> 
> It's better to move the print message after the next NULL pointer checking.
I think i should remove it, because the encoder/muxer/decoder/demuxer have no this message too.
> 
>> +    if (!proto_class) {
>> +        av_log(NULL, AV_LOG_ERROR, "Unknown protocol '%s'.\n", name);
>> +        return;
>> +    }
>> +
>> +    show_help_children(proto_class, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
>> +}
>> +
>> static void show_help_muxer(const char *name)
>> {
>>     const AVCodecDescriptor *desc;
>> @@ -2000,6 +2016,8 @@ int show_help(void *optctx, const char *opt, const char *arg)
>>         show_help_demuxer(par);
>>     } else if (!strcmp(topic, "muxer")) {
>>         show_help_muxer(par);
>> +    } else if (!strcmp(topic, "protocol")) {
>> +        show_help_protocol(par);
>> #if CONFIG_AVFILTER
>>     } else if (!strcmp(topic, "filter")) {
>>         show_help_filter(par);
>> diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
>> index 71063cc443..8d73fa8a78 100644
>> --- a/fftools/ffmpeg_opt.c
>> +++ b/fftools/ffmpeg_opt.c
>> @@ -3194,7 +3194,7 @@ void show_help_default(const char *opt, const char *arg)
>>            "    -h      -- print basic options\n"
>>            "    -h long -- print more options\n"
>>            "    -h full -- print all options (including all format and codec specific options, very long)\n"
>> -           "    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf\n"
>> +           "    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol\n"
>>            "    See man %s for detailed description of the options.\n"
>>            "\n", program_name);
>> 
>> -- 
>> 2.15.1
>> 
>> 
>> 
>> _______________________________________________
>> ffmpeg-devel mailing list
>> ffmpeg-devel@ffmpeg.org
>> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
>> 
>> To unsubscribe, visit link above, or email
>> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel@ffmpeg.org
> https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
> 
> To unsubscribe, visit link above, or email
> ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

Thanks
Steven

Patch hide | download patch | download mbox

diff --git a/fftools/cmdutils.c b/fftools/cmdutils.c
index 84f98b7c04..96b823f74a 100644
--- a/fftools/cmdutils.c
+++ b/fftools/cmdutils.c
@@ -1870,6 +1870,22 @@  static void show_help_demuxer(const char *name)
         show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM);
 }
 
+static void show_help_protocol(const char *name)
+{
+    const AVClass *proto_class = avio_protocol_get_class(name);
+
+    printf("Protocol [%s]:\n"
+           " D. = Input supported\n"
+           " .E = Output supported\n"
+           " --\n", name);
+    if (!proto_class) {
+        av_log(NULL, AV_LOG_ERROR, "Unknown protocol '%s'.\n", name);
+        return;
+    }
+
+    show_help_children(proto_class, AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM);
+}
+
 static void show_help_muxer(const char *name)
 {
     const AVCodecDescriptor *desc;
@@ -2000,6 +2016,8 @@  int show_help(void *optctx, const char *opt, const char *arg)
         show_help_demuxer(par);
     } else if (!strcmp(topic, "muxer")) {
         show_help_muxer(par);
+    } else if (!strcmp(topic, "protocol")) {
+        show_help_protocol(par);
 #if CONFIG_AVFILTER
     } else if (!strcmp(topic, "filter")) {
         show_help_filter(par);
diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c
index 71063cc443..8d73fa8a78 100644
--- a/fftools/ffmpeg_opt.c
+++ b/fftools/ffmpeg_opt.c
@@ -3194,7 +3194,7 @@  void show_help_default(const char *opt, const char *arg)
            "    -h      -- print basic options\n"
            "    -h long -- print more options\n"
            "    -h full -- print all options (including all format and codec specific options, very long)\n"
-           "    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf\n"
+           "    -h type=name -- print all options for the named decoder/encoder/demuxer/muxer/filter/bsf/protocol\n"
            "    See man %s for detailed description of the options.\n"
            "\n", program_name);