OSDN Git Service

avtools: add -h demuxer/muxer
authorAnton Khirnov <anton@khirnov.net>
Tue, 14 Aug 2012 05:57:56 +0000 (07:57 +0200)
committerAnton Khirnov <anton@khirnov.net>
Sun, 19 Aug 2012 17:22:41 +0000 (19:22 +0200)
cmdutils.c
doc/avtools-common-opts.texi

index 55cf3f0..50076c2 100644 (file)
@@ -936,6 +936,57 @@ static void show_help_codec(const char *name, int encoder)
     }
 }
 
+static void show_help_demuxer(const char *name)
+{
+    const AVInputFormat *fmt = av_find_input_format(name);
+
+    if (!fmt) {
+        av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name);
+        return;
+    }
+
+    printf("Demuxer %s [%s]:\n", fmt->name, fmt->long_name);
+
+    if (fmt->extensions)
+        printf("    Common extensions: %s.\n", fmt->extensions);
+
+    if (fmt->priv_class)
+        show_help_children(fmt->priv_class, AV_OPT_FLAG_DECODING_PARAM);
+}
+
+static void show_help_muxer(const char *name)
+{
+    const AVCodecDescriptor *desc;
+    const AVOutputFormat *fmt = av_guess_format(name, NULL, NULL);
+
+    if (!fmt) {
+        av_log(NULL, AV_LOG_ERROR, "Unknown format '%s'.\n", name);
+        return;
+    }
+
+    printf("Muxer %s [%s]:\n", fmt->name, fmt->long_name);
+
+    if (fmt->extensions)
+        printf("    Common extensions: %s.\n", fmt->extensions);
+    if (fmt->mime_type)
+        printf("    Mime type: %s.\n", fmt->mime_type);
+    if (fmt->video_codec != AV_CODEC_ID_NONE &&
+        (desc = avcodec_descriptor_get(fmt->video_codec))) {
+        printf("    Default video codec: %s.\n", desc->name);
+    }
+    if (fmt->audio_codec != AV_CODEC_ID_NONE &&
+        (desc = avcodec_descriptor_get(fmt->audio_codec))) {
+        printf("    Default audio codec: %s.\n", desc->name);
+    }
+    if (fmt->subtitle_codec != AV_CODEC_ID_NONE &&
+        (desc = avcodec_descriptor_get(fmt->subtitle_codec))) {
+        printf("    Default subtitle codec: %s.\n", desc->name);
+    }
+
+    if (fmt->priv_class)
+        show_help_children(fmt->priv_class, AV_OPT_FLAG_ENCODING_PARAM);
+}
+
 int show_help(const char *opt, const char *arg)
 {
     char *topic, *par;
@@ -952,6 +1003,10 @@ int show_help(const char *opt, const char *arg)
         show_help_codec(par, 0);
     } else if (!strcmp(topic, "encoder")) {
         show_help_codec(par, 1);
+    } else if (!strcmp(topic, "demuxer")) {
+        show_help_demuxer(par);
+    } else if (!strcmp(topic, "muxer")) {
+        show_help_muxer(par);
     } else {
         show_help_default(topic, par);
     }
index eefb37b..d07505d 100644 (file)
@@ -64,6 +64,15 @@ Print detailed information about the decoder named @var{decoder_name}. Use the
 @item encoder=@var{encoder_name}
 Print detailed information about the encoder named @var{encoder_name}. Use the
 @option{-encoders} option to get a list of all encoders.
+
+@item demuxer=@var{demuxer_name}
+Print detailed information about the demuxer named @var{demuxer_name}. Use the
+@option{-formats} option to get a list of all demuxers and muxers.
+
+@item muxer=@var{muxer_name}
+Print detailed information about the muxer named @var{muxer_name}. Use the
+@option{-formats} option to get a list of all muxers and demuxers.
+
 @end table
 
 @item -version