misc/winutils/include/libavutil/opt.h
author nemo
Sat, 31 Jan 2015 22:13:44 -0500
changeset 10810 931dd8f42763
parent 7813 7ac83d79b897
permissions -rw-r--r--
add some config params - speed,accel,delaytime,delayheight,nocake. water rise speed, water rise acceleration, time delay from start of turn for water rise, height delay for same, and disable cake. also set start boulder to indestructible
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
7813
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     1
/*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     2
 * AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     3
 * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at>
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     4
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     5
 * This file is part of Libav.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     6
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     7
 * Libav is free software; you can redistribute it and/or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     8
 * modify it under the terms of the GNU Lesser General Public
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
     9
 * License as published by the Free Software Foundation; either
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    10
 * version 2.1 of the License, or (at your option) any later version.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    11
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    12
 * Libav is distributed in the hope that it will be useful,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    13
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    14
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    15
 * Lesser General Public License for more details.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    16
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    17
 * You should have received a copy of the GNU Lesser General Public
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    18
 * License along with Libav; if not, write to the Free Software
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    19
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    20
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    21
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    22
#ifndef AVUTIL_OPT_H
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    23
#define AVUTIL_OPT_H
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    24
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    25
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    26
 * @file
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    27
 * AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    28
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    29
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    30
#include "rational.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    31
#include "avutil.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    32
#include "dict.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    33
#include "log.h"
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    34
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    35
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    36
 * @defgroup avoptions AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    37
 * @ingroup lavu_data
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    38
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    39
 * AVOptions provide a generic system to declare options on arbitrary structs
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    40
 * ("objects"). An option can have a help text, a type and a range of possible
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    41
 * values. Options may then be enumerated, read and written to.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    42
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    43
 * @section avoptions_implement Implementing AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    44
 * This section describes how to add AVOptions capabilities to a struct.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    45
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    46
 * All AVOptions-related information is stored in an AVClass. Therefore
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    47
 * the first member of the struct must be a pointer to an AVClass describing it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    48
 * The option field of the AVClass must be set to a NULL-terminated static array
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    49
 * of AVOptions. Each AVOption must have a non-empty name, a type, a default
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    50
 * value and for number-type AVOptions also a range of allowed values. It must
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    51
 * also declare an offset in bytes from the start of the struct, where the field
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    52
 * associated with this AVOption is located. Other fields in the AVOption struct
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    53
 * should also be set when applicable, but are not required.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    54
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    55
 * The following example illustrates an AVOptions-enabled struct:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    56
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    57
 * typedef struct test_struct {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    58
 *     AVClass *class;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    59
 *     int      int_opt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    60
 *     char    *str_opt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    61
 *     uint8_t *bin_opt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    62
 *     int      bin_len;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    63
 * } test_struct;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    64
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    65
 * static const AVOption options[] = {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    66
 *   { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    67
 *     AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    68
 *   { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    69
 *     AV_OPT_TYPE_STRING },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    70
 *   { "test_bin", "This is a test option of binary type.", offsetof(test_struct, bin_opt),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    71
 *     AV_OPT_TYPE_BINARY },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    72
 *   { NULL },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    73
 * };
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    74
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    75
 * static const AVClass test_class = {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    76
 *     .class_name = "test class",
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    77
 *     .item_name  = av_default_item_name,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    78
 *     .option     = options,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    79
 *     .version    = LIBAVUTIL_VERSION_INT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    80
 * };
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    81
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    82
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    83
 * Next, when allocating your struct, you must ensure that the AVClass pointer
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    84
 * is set to the correct value. Then, av_opt_set_defaults() must be called to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    85
 * initialize defaults. After that the struct is ready to be used with the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    86
 * AVOptions API.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    87
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    88
 * When cleaning up, you may use the av_opt_free() function to automatically
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    89
 * free all the allocated string and binary options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    90
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    91
 * Continuing with the above example:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    92
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    93
 * @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    94
 * test_struct *alloc_test_struct(void)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    95
 * {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    96
 *     test_struct *ret = av_malloc(sizeof(*ret));
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    97
 *     ret->class = &test_class;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    98
 *     av_opt_set_defaults(ret);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
    99
 *     return ret;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   100
 * }
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   101
 * void free_test_struct(test_struct **foo)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   102
 * {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   103
 *     av_opt_free(*foo);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   104
 *     av_freep(foo);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   105
 * }
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   106
 * @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   107
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   108
 * @subsection avoptions_implement_nesting Nesting
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   109
 *      It may happen that an AVOptions-enabled struct contains another
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   110
 *      AVOptions-enabled struct as a member (e.g. AVCodecContext in
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   111
 *      libavcodec exports generic options, while its priv_data field exports
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   112
 *      codec-specific options). In such a case, it is possible to set up the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   113
 *      parent struct to export a child's options. To do that, simply
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   114
 *      implement AVClass.child_next() and AVClass.child_class_next() in the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   115
 *      parent struct's AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   116
 *      Assuming that the test_struct from above now also contains a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   117
 *      child_struct field:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   118
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   119
 *      @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   120
 *      typedef struct child_struct {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   121
 *          AVClass *class;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   122
 *          int flags_opt;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   123
 *      } child_struct;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   124
 *      static const AVOption child_opts[] = {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   125
 *          { "test_flags", "This is a test option of flags type.",
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   126
 *            offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   127
 *          { NULL },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   128
 *      };
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   129
 *      static const AVClass child_class = {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   130
 *          .class_name = "child class",
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   131
 *          .item_name  = av_default_item_name,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   132
 *          .option     = child_opts,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   133
 *          .version    = LIBAVUTIL_VERSION_INT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   134
 *      };
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   135
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   136
 *      void *child_next(void *obj, void *prev)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   137
 *      {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   138
 *          test_struct *t = obj;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   139
 *          if (!prev && t->child_struct)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   140
 *              return t->child_struct;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   141
 *          return NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   142
 *      }
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   143
 *      const AVClass child_class_next(const AVClass *prev)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   144
 *      {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   145
 *          return prev ? NULL : &child_class;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   146
 *      }
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   147
 *      @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   148
 *      Putting child_next() and child_class_next() as defined above into
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   149
 *      test_class will now make child_struct's options accessible through
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   150
 *      test_struct (again, proper setup as described above needs to be done on
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   151
 *      child_struct right after it is created).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   152
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   153
 *      From the above example it might not be clear why both child_next()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   154
 *      and child_class_next() are needed. The distinction is that child_next()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   155
 *      iterates over actually existing objects, while child_class_next()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   156
 *      iterates over all possible child classes. E.g. if an AVCodecContext
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   157
 *      was initialized to use a codec which has private options, then its
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   158
 *      child_next() will return AVCodecContext.priv_data and finish
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   159
 *      iterating. OTOH child_class_next() on AVCodecContext.av_class will
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   160
 *      iterate over all available codecs with private options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   161
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   162
 * @subsection avoptions_implement_named_constants Named constants
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   163
 *      It is possible to create named constants for options. Simply set the unit
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   164
 *      field of the option the constants should apply to to a string and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   165
 *      create the constants themselves as options of type AV_OPT_TYPE_CONST
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   166
 *      with their unit field set to the same string.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   167
 *      Their default_val field should contain the value of the named
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   168
 *      constant.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   169
 *      For example, to add some named constants for the test_flags option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   170
 *      above, put the following into the child_opts array:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   171
 *      @code
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   172
 *      { "test_flags", "This is a test option of flags type.",
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   173
 *        offsetof(child_struct, flags_opt), AV_OPT_TYPE_FLAGS, { .i64 = 0 }, INT_MIN, INT_MAX, "test_unit" },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   174
 *      { "flag1", "This is a flag with value 16", 0, AV_OPT_TYPE_CONST, { .i64 = 16 }, 0, 0, "test_unit" },
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   175
 *      @endcode
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   176
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   177
 * @section avoptions_use Using AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   178
 * This section deals with accessing options in an AVOptions-enabled struct.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   179
 * Such structs in Libav are e.g. AVCodecContext in libavcodec or
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   180
 * AVFormatContext in libavformat.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   181
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   182
 * @subsection avoptions_use_examine Examining AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   183
 * The basic functions for examining options are av_opt_next(), which iterates
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   184
 * over all options defined for one object, and av_opt_find(), which searches
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   185
 * for an option with the given name.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   186
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   187
 * The situation is more complicated with nesting. An AVOptions-enabled struct
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   188
 * may have AVOptions-enabled children. Passing the AV_OPT_SEARCH_CHILDREN flag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   189
 * to av_opt_find() will make the function search children recursively.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   190
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   191
 * For enumerating there are basically two cases. The first is when you want to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   192
 * get all options that may potentially exist on the struct and its children
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   193
 * (e.g.  when constructing documentation). In that case you should call
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   194
 * av_opt_child_class_next() recursively on the parent struct's AVClass.  The
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   195
 * second case is when you have an already initialized struct with all its
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   196
 * children and you want to get all options that can be actually written or read
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   197
 * from it. In that case you should call av_opt_child_next() recursively (and
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   198
 * av_opt_next() on each result).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   199
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   200
 * @subsection avoptions_use_get_set Reading and writing AVOptions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   201
 * When setting options, you often have a string read directly from the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   202
 * user. In such a case, simply passing it to av_opt_set() is enough. For
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   203
 * non-string type options, av_opt_set() will parse the string according to the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   204
 * option type.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   205
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   206
 * Similarly av_opt_get() will read any option type and convert it to a string
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   207
 * which will be returned. Do not forget that the string is allocated, so you
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   208
 * have to free it with av_free().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   209
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   210
 * In some cases it may be more convenient to put all options into an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   211
 * AVDictionary and call av_opt_set_dict() on it. A specific case of this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   212
 * are the format/codec open functions in lavf/lavc which take a dictionary
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   213
 * filled with option as a parameter. This allows to set some options
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   214
 * that cannot be set otherwise, since e.g. the input file format is not known
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   215
 * before the file is actually opened.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   216
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   217
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   218
enum AVOptionType{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   219
    AV_OPT_TYPE_FLAGS,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   220
    AV_OPT_TYPE_INT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   221
    AV_OPT_TYPE_INT64,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   222
    AV_OPT_TYPE_DOUBLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   223
    AV_OPT_TYPE_FLOAT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   224
    AV_OPT_TYPE_STRING,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   225
    AV_OPT_TYPE_RATIONAL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   226
    AV_OPT_TYPE_BINARY,  ///< offset must point to a pointer immediately followed by an int for the length
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   227
    AV_OPT_TYPE_CONST = 128,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   228
#if FF_API_OLD_AVOPTIONS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   229
    FF_OPT_TYPE_FLAGS = 0,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   230
    FF_OPT_TYPE_INT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   231
    FF_OPT_TYPE_INT64,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   232
    FF_OPT_TYPE_DOUBLE,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   233
    FF_OPT_TYPE_FLOAT,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   234
    FF_OPT_TYPE_STRING,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   235
    FF_OPT_TYPE_RATIONAL,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   236
    FF_OPT_TYPE_BINARY,  ///< offset must point to a pointer immediately followed by an int for the length
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   237
    FF_OPT_TYPE_CONST=128,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   238
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   239
};
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   240
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   241
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   242
 * AVOption
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   243
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   244
typedef struct AVOption {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   245
    const char *name;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   246
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   247
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   248
     * short English help text
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   249
     * @todo What about other languages?
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   250
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   251
    const char *help;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   252
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   253
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   254
     * The offset relative to the context structure where the option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   255
     * value is stored. It should be 0 for named constants.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   256
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   257
    int offset;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   258
    enum AVOptionType type;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   259
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   260
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   261
     * the default value for scalar options
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   262
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   263
    union {
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   264
        int64_t i64;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   265
        double dbl;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   266
        const char *str;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   267
        /* TODO those are unused now */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   268
        AVRational q;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   269
    } default_val;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   270
    double min;                 ///< minimum valid value for the option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   271
    double max;                 ///< maximum valid value for the option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   272
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   273
    int flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   274
#define AV_OPT_FLAG_ENCODING_PARAM  1   ///< a generic parameter which can be set by the user for muxing or encoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   275
#define AV_OPT_FLAG_DECODING_PARAM  2   ///< a generic parameter which can be set by the user for demuxing or decoding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   276
#define AV_OPT_FLAG_METADATA        4   ///< some data extracted or inserted into the file like title, comment, ...
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   277
#define AV_OPT_FLAG_AUDIO_PARAM     8
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   278
#define AV_OPT_FLAG_VIDEO_PARAM     16
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   279
#define AV_OPT_FLAG_SUBTITLE_PARAM  32
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   280
//FIXME think about enc-audio, ... style flags
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   281
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   282
    /**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   283
     * The logical unit to which the option belongs. Non-constant
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   284
     * options and corresponding named constants share the same
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   285
     * unit. May be NULL.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   286
     */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   287
    const char *unit;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   288
} AVOption;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   289
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   290
#if FF_API_FIND_OPT
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   291
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   292
 * Look for an option in obj. Look only for the options which
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   293
 * have the flags set as specified in mask and flags (that is,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   294
 * for which it is the case that opt->flags & mask == flags).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   295
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   296
 * @param[in] obj a pointer to a struct whose first element is a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   297
 * pointer to an AVClass
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   298
 * @param[in] name the name of the option to look for
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   299
 * @param[in] unit the unit of the option to look for, or any if NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   300
 * @return a pointer to the option found, or NULL if no option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   301
 * has been found
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   302
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   303
 * @deprecated use av_opt_find.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   304
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   305
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   306
const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   307
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   308
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   309
#if FF_API_OLD_AVOPTIONS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   310
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   311
 * Set the field of obj with the given name to value.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   312
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   313
 * @param[in] obj A struct whose first element is a pointer to an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   314
 * AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   315
 * @param[in] name the name of the field to set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   316
 * @param[in] val The value to set. If the field is not of a string
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   317
 * type, then the given string is parsed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   318
 * SI postfixes and some named scalars are supported.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   319
 * If the field is of a numeric type, it has to be a numeric or named
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   320
 * scalar. Behavior with more than one scalar and +- infix operators
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   321
 * is undefined.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   322
 * If the field is of a flags type, it has to be a sequence of numeric
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   323
 * scalars or named flags separated by '+' or '-'. Prefixing a flag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   324
 * with '+' causes it to be set without affecting the other flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   325
 * similarly, '-' unsets a flag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   326
 * @param[out] o_out if non-NULL put here a pointer to the AVOption
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   327
 * found
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   328
 * @param alloc this parameter is currently ignored
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   329
 * @return 0 if the value has been set, or an AVERROR code in case of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   330
 * error:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   331
 * AVERROR_OPTION_NOT_FOUND if no matching option exists
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   332
 * AVERROR(ERANGE) if the value is out of range
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   333
 * AVERROR(EINVAL) if the value is not valid
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   334
 * @deprecated use av_opt_set()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   335
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   336
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   337
int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   338
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   339
attribute_deprecated const AVOption *av_set_double(void *obj, const char *name, double n);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   340
attribute_deprecated const AVOption *av_set_q(void *obj, const char *name, AVRational n);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   341
attribute_deprecated const AVOption *av_set_int(void *obj, const char *name, int64_t n);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   342
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   343
attribute_deprecated double av_get_double(void *obj, const char *name, const AVOption **o_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   344
attribute_deprecated AVRational av_get_q(void *obj, const char *name, const AVOption **o_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   345
attribute_deprecated int64_t av_get_int(void *obj, const char *name, const AVOption **o_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   346
attribute_deprecated const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   347
attribute_deprecated const AVOption *av_next_option(void *obj, const AVOption *last);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   348
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   349
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   350
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   351
 * Show the obj options.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   352
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   353
 * @param req_flags requested flags for the options to show. Show only the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   354
 * options for which it is opt->flags & req_flags.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   355
 * @param rej_flags rejected flags for the options to show. Show only the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   356
 * options for which it is !(opt->flags & req_flags).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   357
 * @param av_log_obj log context to use for showing the options
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   358
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   359
int av_opt_show2(void *obj, void *av_log_obj, int req_flags, int rej_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   360
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   361
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   362
 * Set the values of all AVOption fields to their default values.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   363
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   364
 * @param s an AVOption-enabled struct (its first member must be a pointer to AVClass)
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   365
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   366
void av_opt_set_defaults(void *s);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   367
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   368
#if FF_API_OLD_AVOPTIONS
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   369
attribute_deprecated
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   370
void av_opt_set_defaults2(void *s, int mask, int flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   371
#endif
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   372
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   373
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   374
 * Parse the key/value pairs list in opts. For each key/value pair
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   375
 * found, stores the value in the field in ctx that is named like the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   376
 * key. ctx must be an AVClass context, storing is done using
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   377
 * AVOptions.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   378
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   379
 * @param key_val_sep a 0-terminated list of characters used to
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   380
 * separate key from value
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   381
 * @param pairs_sep a 0-terminated list of characters used to separate
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   382
 * two pairs from each other
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   383
 * @return the number of successfully set key/value pairs, or a negative
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   384
 * value corresponding to an AVERROR code in case of error:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   385
 * AVERROR(EINVAL) if opts cannot be parsed,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   386
 * the error code issued by av_set_string3() if a key/value pair
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   387
 * cannot be set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   388
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   389
int av_set_options_string(void *ctx, const char *opts,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   390
                          const char *key_val_sep, const char *pairs_sep);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   391
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   392
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   393
 * Free all string and binary options in obj.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   394
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   395
void av_opt_free(void *obj);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   396
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   397
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   398
 * Check whether a particular flag is set in a flags field.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   399
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   400
 * @param field_name the name of the flag field option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   401
 * @param flag_name the name of the flag to check
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   402
 * @return non-zero if the flag is set, zero if the flag isn't set,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   403
 *         isn't of the right type, or the flags field doesn't exist.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   404
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   405
int av_opt_flag_is_set(void *obj, const char *field_name, const char *flag_name);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   406
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   407
/*
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   408
 * Set all the options from a given dictionary on an object.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   409
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   410
 * @param obj a struct whose first element is a pointer to AVClass
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   411
 * @param options options to process. This dictionary will be freed and replaced
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   412
 *                by a new one containing all options not found in obj.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   413
 *                Of course this new dictionary needs to be freed by caller
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   414
 *                with av_dict_free().
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   415
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   416
 * @return 0 on success, a negative AVERROR if some option was found in obj,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   417
 *         but could not be set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   418
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   419
 * @see av_dict_copy()
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   420
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   421
int av_opt_set_dict(void *obj, struct AVDictionary **options);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   422
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   423
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   424
 * @defgroup opt_eval_funcs Evaluating option strings
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   425
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   426
 * This group of functions can be used to evaluate option strings
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   427
 * and get numbers out of them. They do the same thing as av_opt_set(),
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   428
 * except the result is written into the caller-supplied pointer.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   429
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   430
 * @param obj a struct whose first element is a pointer to AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   431
 * @param o an option for which the string is to be evaluated.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   432
 * @param val string to be evaluated.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   433
 * @param *_out value of the string will be written here.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   434
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   435
 * @return 0 on success, a negative number on failure.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   436
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   437
int av_opt_eval_flags (void *obj, const AVOption *o, const char *val, int        *flags_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   438
int av_opt_eval_int   (void *obj, const AVOption *o, const char *val, int        *int_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   439
int av_opt_eval_int64 (void *obj, const AVOption *o, const char *val, int64_t    *int64_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   440
int av_opt_eval_float (void *obj, const AVOption *o, const char *val, float      *float_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   441
int av_opt_eval_double(void *obj, const AVOption *o, const char *val, double     *double_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   442
int av_opt_eval_q     (void *obj, const AVOption *o, const char *val, AVRational *q_out);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   443
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   444
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   445
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   446
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   447
#define AV_OPT_SEARCH_CHILDREN   0x0001 /**< Search in possible children of the
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   448
                                             given object first. */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   449
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   450
 *  The obj passed to av_opt_find() is fake -- only a double pointer to AVClass
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   451
 *  instead of a required pointer to a struct containing AVClass. This is
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   452
 *  useful for searching for options without needing to allocate the corresponding
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   453
 *  object.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   454
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   455
#define AV_OPT_SEARCH_FAKE_OBJ   0x0002
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   456
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   457
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   458
 * Look for an option in an object. Consider only options which
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   459
 * have all the specified flags set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   460
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   461
 * @param[in] obj A pointer to a struct whose first element is a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   462
 *                pointer to an AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   463
 *                Alternatively a double pointer to an AVClass, if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   464
 *                AV_OPT_SEARCH_FAKE_OBJ search flag is set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   465
 * @param[in] name The name of the option to look for.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   466
 * @param[in] unit When searching for named constants, name of the unit
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   467
 *                 it belongs to.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   468
 * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   469
 * @param search_flags A combination of AV_OPT_SEARCH_*.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   470
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   471
 * @return A pointer to the option found, or NULL if no option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   472
 *         was found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   473
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   474
 * @note Options found with AV_OPT_SEARCH_CHILDREN flag may not be settable
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   475
 * directly with av_set_string3(). Use special calls which take an options
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   476
 * AVDictionary (e.g. avformat_open_input()) to set options found with this
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   477
 * flag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   478
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   479
const AVOption *av_opt_find(void *obj, const char *name, const char *unit,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   480
                            int opt_flags, int search_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   481
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   482
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   483
 * Look for an option in an object. Consider only options which
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   484
 * have all the specified flags set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   485
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   486
 * @param[in] obj A pointer to a struct whose first element is a
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   487
 *                pointer to an AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   488
 *                Alternatively a double pointer to an AVClass, if
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   489
 *                AV_OPT_SEARCH_FAKE_OBJ search flag is set.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   490
 * @param[in] name The name of the option to look for.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   491
 * @param[in] unit When searching for named constants, name of the unit
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   492
 *                 it belongs to.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   493
 * @param opt_flags Find only options with all the specified flags set (AV_OPT_FLAG).
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   494
 * @param search_flags A combination of AV_OPT_SEARCH_*.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   495
 * @param[out] target_obj if non-NULL, an object to which the option belongs will be
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   496
 * written here. It may be different from obj if AV_OPT_SEARCH_CHILDREN is present
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   497
 * in search_flags. This parameter is ignored if search_flags contain
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   498
 * AV_OPT_SEARCH_FAKE_OBJ.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   499
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   500
 * @return A pointer to the option found, or NULL if no option
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   501
 *         was found.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   502
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   503
const AVOption *av_opt_find2(void *obj, const char *name, const char *unit,
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   504
                             int opt_flags, int search_flags, void **target_obj);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   505
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   506
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   507
 * Iterate over all AVOptions belonging to obj.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   508
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   509
 * @param obj an AVOptions-enabled struct or a double pointer to an
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   510
 *            AVClass describing it.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   511
 * @param prev result of the previous call to av_opt_next() on this object
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   512
 *             or NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   513
 * @return next AVOption or NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   514
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   515
const AVOption *av_opt_next(void *obj, const AVOption *prev);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   516
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   517
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   518
 * Iterate over AVOptions-enabled children of obj.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   519
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   520
 * @param prev result of a previous call to this function or NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   521
 * @return next AVOptions-enabled child or NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   522
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   523
void *av_opt_child_next(void *obj, void *prev);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   524
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   525
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   526
 * Iterate over potential AVOptions-enabled children of parent.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   527
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   528
 * @param prev result of a previous call to this function or NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   529
 * @return AVClass corresponding to next potential child or NULL
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   530
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   531
const AVClass *av_opt_child_class_next(const AVClass *parent, const AVClass *prev);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   532
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   533
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   534
 * @defgroup opt_set_funcs Option setting functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   535
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   536
 * Those functions set the field of obj with the given name to value.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   537
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   538
 * @param[in] obj A struct whose first element is a pointer to an AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   539
 * @param[in] name the name of the field to set
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   540
 * @param[in] val The value to set. In case of av_opt_set() if the field is not
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   541
 * of a string type, then the given string is parsed.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   542
 * SI postfixes and some named scalars are supported.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   543
 * If the field is of a numeric type, it has to be a numeric or named
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   544
 * scalar. Behavior with more than one scalar and +- infix operators
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   545
 * is undefined.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   546
 * If the field is of a flags type, it has to be a sequence of numeric
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   547
 * scalars or named flags separated by '+' or '-'. Prefixing a flag
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   548
 * with '+' causes it to be set without affecting the other flags;
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   549
 * similarly, '-' unsets a flag.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   550
 * @param search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   551
 * is passed here, then the option may be set on a child of obj.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   552
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   553
 * @return 0 if the value has been set, or an AVERROR code in case of
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   554
 * error:
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   555
 * AVERROR_OPTION_NOT_FOUND if no matching option exists
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   556
 * AVERROR(ERANGE) if the value is out of range
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   557
 * AVERROR(EINVAL) if the value is not valid
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   558
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   559
int av_opt_set       (void *obj, const char *name, const char *val, int search_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   560
int av_opt_set_int   (void *obj, const char *name, int64_t     val, int search_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   561
int av_opt_set_double(void *obj, const char *name, double      val, int search_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   562
int av_opt_set_q     (void *obj, const char *name, AVRational  val, int search_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   563
int av_opt_set_bin   (void *obj, const char *name, const uint8_t *val, int size, int search_flags);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   564
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   565
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   566
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   567
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   568
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   569
 * @defgroup opt_get_funcs Option getting functions
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   570
 * @{
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   571
 * Those functions get a value of the option with the given name from an object.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   572
 *
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   573
 * @param[in] obj a struct whose first element is a pointer to an AVClass.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   574
 * @param[in] name name of the option to get.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   575
 * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   576
 * is passed here, then the option may be found in a child of obj.
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   577
 * @param[out] out_val value of the option will be written here
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   578
 * @return 0 on success, a negative error code otherwise
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   579
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   580
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   581
 * @note the returned string will av_malloc()ed and must be av_free()ed by the caller
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   582
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   583
int av_opt_get       (void *obj, const char *name, int search_flags, uint8_t   **out_val);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   584
int av_opt_get_int   (void *obj, const char *name, int search_flags, int64_t    *out_val);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   585
int av_opt_get_double(void *obj, const char *name, int search_flags, double     *out_val);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   586
int av_opt_get_q     (void *obj, const char *name, int search_flags, AVRational *out_val);
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   587
/**
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   588
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   589
 * @}
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   590
 */
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   591
7ac83d79b897 support video recording on windows with automation and headers
koda
parents:
diff changeset
   592
#endif /* AVUTIL_OPT_H */