Subversion Repositories Kolibri OS

Rev

Go to most recent revision | Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 2012 Anton Khirnov
  3.  *
  4.  * This file is part of FFmpeg.
  5.  *
  6.  * FFmpeg is free software; you can redistribute it and/or
  7.  * modify it under the terms of the GNU Lesser General Public
  8.  * License as published by the Free Software Foundation; either
  9.  * version 2.1 of the License, or (at your option) any later version.
  10.  *
  11.  * FFmpeg is distributed in the hope that it will be useful,
  12.  * but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
  14.  * Lesser General Public License for more details.
  15.  *
  16.  * You should have received a copy of the GNU Lesser General Public
  17.  * License along with FFmpeg; if not, write to the Free Software
  18.  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  19.  */
  20.  
  21. /*
  22.  * generate texinfo manpages for avoptions
  23.  */
  24.  
  25. #include <stddef.h>
  26. #include <string.h>
  27. #include <float.h>
  28.  
  29. #include "libavformat/avformat.h"
  30. #include "libavformat/options_table.h"
  31. #include "libavcodec/avcodec.h"
  32. #include "libavcodec/options_table.h"
  33. #include "libavutil/opt.h"
  34.  
  35. static void print_usage(void)
  36. {
  37.     fprintf(stderr, "Usage: enum_options type\n"
  38.             "type: format codec\n");
  39.     exit(1);
  40. }
  41.  
  42. static void print_option(const AVOption *opts, const AVOption *o, int per_stream)
  43. {
  44.     if (!(o->flags & (AV_OPT_FLAG_DECODING_PARAM | AV_OPT_FLAG_ENCODING_PARAM)))
  45.         return;
  46.  
  47.     printf("@item -%s%s @var{", o->name, per_stream ? "[:stream_specifier]" : "");
  48.     switch (o->type) {
  49.     case AV_OPT_TYPE_BINARY:   printf("hexadecimal string"); break;
  50.     case AV_OPT_TYPE_STRING:   printf("string");             break;
  51.     case AV_OPT_TYPE_INT:
  52.     case AV_OPT_TYPE_INT64:    printf("integer");            break;
  53.     case AV_OPT_TYPE_FLOAT:
  54.     case AV_OPT_TYPE_DOUBLE:   printf("float");              break;
  55.     case AV_OPT_TYPE_RATIONAL: printf("rational number");    break;
  56.     case AV_OPT_TYPE_FLAGS:    printf("flags");              break;
  57.     default:                   printf("value");              break;
  58.     }
  59.     printf("} (@emph{");
  60.  
  61.     if (o->flags & AV_OPT_FLAG_DECODING_PARAM) {
  62.         printf("input");
  63.         if (o->flags & AV_OPT_FLAG_ENCODING_PARAM)
  64.             printf("/");
  65.     }
  66.     if (o->flags & AV_OPT_FLAG_ENCODING_PARAM) printf("output");
  67.     if (o->flags & AV_OPT_FLAG_AUDIO_PARAM)    printf(",audio");
  68.     if (o->flags & AV_OPT_FLAG_VIDEO_PARAM)    printf(",video");
  69.     if (o->flags & AV_OPT_FLAG_SUBTITLE_PARAM) printf(",subtitles");
  70.  
  71.     printf("})\n");
  72.     if (o->help)
  73.         printf("%s\n", o->help);
  74.  
  75.     if (o->unit) {
  76.         const AVOption *u;
  77.         printf("\nPossible values:\n@table @samp\n");
  78.  
  79.         for (u = opts; u->name; u++) {
  80.             if (u->type == AV_OPT_TYPE_CONST && u->unit && !strcmp(u->unit, o->unit))
  81.                 printf("@item %s\n%s\n", u->name, u->help ? u->help : "");
  82.         }
  83.         printf("@end table\n");
  84.     }
  85. }
  86.  
  87. static void show_opts(const AVOption *opts, int per_stream)
  88. {
  89.     const AVOption *o;
  90.  
  91.     printf("@table @option\n");
  92.     for (o = opts; o->name; o++) {
  93.         if (o->type != AV_OPT_TYPE_CONST)
  94.             print_option(opts, o, per_stream);
  95.     }
  96.     printf("@end table\n");
  97. }
  98.  
  99. static void show_format_opts(void)
  100. {
  101.     printf("@section Format AVOptions\n");
  102.     show_opts(avformat_options, 0);
  103. }
  104.  
  105. static void show_codec_opts(void)
  106. {
  107.     printf("@section Codec AVOptions\n");
  108.     show_opts(avcodec_options, 1);
  109. }
  110.  
  111. int main(int argc, char **argv)
  112. {
  113.     if (argc < 2)
  114.         print_usage();
  115.  
  116.     printf("@c DO NOT EDIT THIS FILE!\n"
  117.            "@c It was generated by print_options.\n\n");
  118.     if (!strcmp(argv[1], "format"))
  119.         show_format_opts();
  120.     else if (!strcmp(argv[1], "codec"))
  121.         show_codec_opts();
  122.     else
  123.         print_usage();
  124.  
  125.     return 0;
  126. }
  127.