misc/winutils/include/libavutil/opt.h
author koda
Fri, 05 Apr 2013 22:57:31 +0200
changeset 8874 8121ce2b0a88
parent 7813 7ac83d79b897
permissions -rw-r--r--
fix displaying the right version of windows in system info
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 */