Merge commit '2dd09ebf5597fd5e4a573bee9cccf21ae821f286'
authorMichael Niedermayer <michaelni@gmx.at>
Wed, 17 Sep 2014 17:59:10 +0000 (19:59 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Wed, 17 Sep 2014 17:59:10 +0000 (19:59 +0200)
* commit '2dd09ebf5597fd5e4a573bee9cccf21ae821f286':
  cmdutils: Print a more sensible message in show_filters() w/o libavfilter

Conflicts:
cmdutils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
cmdutils.c

diff --cc cmdutils.c
index 1143ea10d1467df845ec3766b664adf165e4cd0f,96b40f31a64f9c04b754018d18bd9efdcba76793..8bcc7ac913f898b2da94088b6d7232f6c4f1328d
@@@ -1543,44 -1161,14 +1543,46 @@@ int show_protocols(void *optctx, const 
  
  int show_filters(void *optctx, const char *opt, const char *arg)
  {
-     const AVFilter av_unused(*filter) = NULL;
+ #if CONFIG_AVFILTER
+     const AVFilter *filter = NULL;
 -
 -    printf("Filters:\n");
 -    while ((filter = avfilter_next(filter)))
 -        printf("%-16s %s\n", filter->name, filter->description);
 +    char descr[64], *descr_cur;
 +    int i, j;
 +    const AVFilterPad *pad;
 +
 +    printf("Filters:\n"
 +           "  T.. = Timeline support\n"
 +           "  .S. = Slice threading\n"
 +           "  ..C = Commmand support\n"
 +           "  A = Audio input/output\n"
 +           "  V = Video input/output\n"
 +           "  N = Dynamic number and/or type of input/output\n"
 +           "  | = Source or sink filter\n");
- #if CONFIG_AVFILTER
 +    while ((filter = avfilter_next(filter))) {
 +        descr_cur = descr;
 +        for (i = 0; i < 2; i++) {
 +            if (i) {
 +                *(descr_cur++) = '-';
 +                *(descr_cur++) = '>';
 +            }
 +            pad = i ? filter->outputs : filter->inputs;
 +            for (j = 0; pad && pad[j].name; j++) {
 +                if (descr_cur >= descr + sizeof(descr) - 4)
 +                    break;
 +                *(descr_cur++) = get_media_type_char(pad[j].type);
 +            }
 +            if (!j)
 +                *(descr_cur++) = ((!i && (filter->flags & AVFILTER_FLAG_DYNAMIC_INPUTS)) ||
 +                                  ( i && (filter->flags & AVFILTER_FLAG_DYNAMIC_OUTPUTS))) ? 'N' : '|';
 +        }
 +        *descr_cur = 0;
 +        printf(" %c%c%c %-16s %-10s %s\n",
 +               filter->flags & AVFILTER_FLAG_SUPPORT_TIMELINE ? 'T' : '.',
 +               filter->flags & AVFILTER_FLAG_SLICE_THREADS    ? 'S' : '.',
 +               filter->process_command                        ? 'C' : '.',
 +               filter->name, descr, filter->description);
 +    }
+ #else
+     printf("No filters available: libavfilter disabled\n");
  #endif
      return 0;
  }