[FFmpeg-devel] [PATCH] ffmpeg_opt: Add -hwaccels option that lists all supported hwaccels

Ganesh Ajjanagadde gajjanag at mit.edu
Wed Aug 26 02:19:59 CEST 2015


On Tue, Aug 25, 2015 at 7:47 PM, Timothy Gu <timothygu99 at gmail.com> wrote:
> ---
>  doc/ffmpeg.texi |  4 ++++
>  ffmpeg_opt.c    | 14 ++++++++++++++
>  2 files changed, 18 insertions(+)
>
> diff --git a/doc/ffmpeg.texi b/doc/ffmpeg.texi
> index 51a4ec5..e1d8562 100644
> --- a/doc/ffmpeg.texi
> +++ b/doc/ffmpeg.texi
> @@ -698,6 +698,10 @@ is not specified, the value of the @var{DISPLAY} environment variable is used
>  For DXVA2, this option should contain the number of the display adapter to use.
>  If this option is not specified, the default adapter is used.
>  @end table
> +
> + at item -hwaccels
> +List all hardware acceleration methods supported in this build of avconv.
> +
>  @end table
>
>  @section Audio Options
> diff --git a/ffmpeg_opt.c b/ffmpeg_opt.c
> index a369224..b8b9022 100644
> --- a/ffmpeg_opt.c
> +++ b/ffmpeg_opt.c
> @@ -205,6 +205,18 @@ static int opt_video_standard(void *optctx, const char *opt, const char *arg)
>      return opt_default(optctx, "standard", arg);
>  }
>
> +static int show_hwaccels(void *optctx, const char *opt, const char *arg)
> +{
> +    int i;
> +
> +    printf("Hardware acceleration methods:\n");
> +    for (i = 0; i < FF_ARRAY_ELEMS(hwaccels) - 1; i++) {
> +        printf("%s\n", hwaccels[i].name);
> +    }
> +    printf("\n");
> +    return 0;
> +}

For consistency, prefix with an opt_?
Also, you always return a 0, making return value useless.
I understand this is done to match the func_arg signature.
Maybe you could check the return value of printf?
I do note that almost none of ffmpeg is that meticulous about these things,
but check out:
https://www.irill.org/events/ghm-gnu-hackers-meeting/videos/jim-meyering-goodbye-world-the-perils-of-relying-on-output-streams-in-c

> +
>  static int opt_audio_codec(void *optctx, const char *opt, const char *arg)
>  {
>      OptionsContext *o = optctx;
> @@ -3241,6 +3253,8 @@ const OptionDef options[] = {
>  #if CONFIG_VDA || CONFIG_VIDEOTOOLBOX
>      { "videotoolbox_pixfmt", HAS_ARG | OPT_STRING | OPT_EXPERT, { &videotoolbox_pixfmt}, "" },
>  #endif
> +    { "hwaccels",         OPT_EXIT,                                              { .func_arg = show_hwaccels },
> +        "show available HW acceleration methods" },
>      { "autorotate",       HAS_ARG | OPT_BOOL | OPT_SPEC |
>                            OPT_EXPERT | OPT_INPUT,                                { .off = OFFSET(autorotate) },
>          "automatically insert correct rotate filters" },
> --
> 1.9.1
>
> _______________________________________________
> ffmpeg-devel mailing list
> ffmpeg-devel at ffmpeg.org
> http://ffmpeg.org/mailman/listinfo/ffmpeg-devel


More information about the ffmpeg-devel mailing list