Mercurial > libavcodec.hg
annotate opt.h @ 10320:44f31c1c9acc libavcodec
Make sure that dv encoder initializes all encoded packet data.
The specification does not say which value to use for unused
parts, so fill all unused bytes with 0xff, which is consistent
with what DV usually uses for reserved or unused parts.
author | reimar |
---|---|
date | Tue, 29 Sep 2009 19:17:18 +0000 |
parents | 2887f410011f |
children | 2d076fd5f927 |
rev | line source |
---|---|
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
1 /* |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
2 * AVOptions |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
3 * copyright (c) 2005 Michael Niedermayer <michaelni@gmx.at> |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
4 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3702
diff
changeset
|
5 * This file is part of FFmpeg. |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3702
diff
changeset
|
6 * |
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3702
diff
changeset
|
7 * FFmpeg is free software; you can redistribute it and/or |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
8 * modify it under the terms of the GNU Lesser General Public |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
9 * License as published by the Free Software Foundation; either |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3702
diff
changeset
|
10 * version 2.1 of the License, or (at your option) any later version. |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
11 * |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3702
diff
changeset
|
12 * FFmpeg is distributed in the hope that it will be useful, |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
15 * Lesser General Public License for more details. |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
16 * |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
17 * You should have received a copy of the GNU Lesser General Public |
3947
c8c591fe26f8
Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents:
3702
diff
changeset
|
18 * License along with FFmpeg; if not, write to the Free Software |
3699
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
20 */ |
c537a97eec66
Add official LGPL license headers to the files that were missing them.
diego
parents:
2967
diff
changeset
|
21 |
7760 | 22 #ifndef AVCODEC_OPT_H |
23 #define AVCODEC_OPT_H | |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
24 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
25 /** |
8718
e9d9d946f213
Use full internal pathname in doxygen @file directives.
diego
parents:
8579
diff
changeset
|
26 * @file libavcodec/opt.h |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
27 * AVOptions |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
28 */ |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
29 |
6395 | 30 #include "libavutil/rational.h" |
8579 | 31 #include "avcodec.h" |
5162 | 32 |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
33 enum AVOptionType{ |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
34 FF_OPT_TYPE_FLAGS, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
35 FF_OPT_TYPE_INT, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
36 FF_OPT_TYPE_INT64, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
37 FF_OPT_TYPE_DOUBLE, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
38 FF_OPT_TYPE_FLOAT, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
39 FF_OPT_TYPE_STRING, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
40 FF_OPT_TYPE_RATIONAL, |
6034
72bb141d9c05
Add FF_OPT_TYPE_BINARY and use it to add a cryptokey option
reimar
parents:
5830
diff
changeset
|
41 FF_OPT_TYPE_BINARY, ///< offset must point to a pointer immediately followed by an int for the length |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
42 FF_OPT_TYPE_CONST=128, |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
43 }; |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
44 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
45 /** |
7007 | 46 * AVOption |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
47 */ |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
48 typedef struct AVOption { |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
49 const char *name; |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
50 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
51 /** |
7007 | 52 * short English help text |
53 * @todo What about other languages? | |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
54 */ |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
55 const char *help; |
7086 | 56 |
57 /** | |
58 * The offset relative to the context structure where the option | |
7099 | 59 * value is stored. It should be 0 for named constants. |
7086 | 60 */ |
61 int offset; | |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
62 enum AVOptionType type; |
2967 | 63 |
7086 | 64 /** |
7175
4a635a1859f0
Clarify/simplify documentation for the default_val field in AVOption.
stefano
parents:
7099
diff
changeset
|
65 * the default value for scalar options |
7086 | 66 */ |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
67 double default_val; |
7086 | 68 double min; ///< minimum valid value for the option |
69 double max; ///< maximum valid value for the option | |
2967 | 70 |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
71 int flags; |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
72 #define AV_OPT_FLAG_ENCODING_PARAM 1 ///< a generic parameter which can be set by the user for muxing or encoding |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
73 #define AV_OPT_FLAG_DECODING_PARAM 2 ///< a generic parameter which can be set by the user for demuxing or decoding |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
74 #define AV_OPT_FLAG_METADATA 4 ///< some data extracted or inserted into the file like title, comment, ... |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
75 #define AV_OPT_FLAG_AUDIO_PARAM 8 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
76 #define AV_OPT_FLAG_VIDEO_PARAM 16 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
77 #define AV_OPT_FLAG_SUBTITLE_PARAM 32 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
78 //FIXME think about enc-audio, ... style flags |
7086 | 79 |
80 /** | |
81 * The logical unit to which the option belongs. Non-constant | |
82 * options and corresponding named constants share the same | |
83 * unit. May be NULL. | |
84 */ | |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
85 const char *unit; |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
86 } AVOption; |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
87 |
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
88 |
7205 | 89 /** |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9642
diff
changeset
|
90 * Looks for an option in obj. Looks only for the options which |
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9642
diff
changeset
|
91 * have the flags set as specified in mask and flags (that is, |
7205 | 92 * for which it is the case that opt->flags & mask == flags). |
93 * | |
94 * @param[in] obj a pointer to a struct whose first element is a | |
8309
f73e7117bf67
s/#AVClass/AVClass/, consistent with the rest of the doxy.
stefano
parents:
7760
diff
changeset
|
95 * pointer to an AVClass |
7205 | 96 * @param[in] name the name of the option to look for |
97 * @param[in] unit the unit of the option to look for, or any if NULL | |
98 * @return a pointer to the option found, or NULL if no option | |
99 * has been found | |
100 */ | |
4628
b0016ed89048
make av_find_opt() available to the public and add a mask+flags parameter to search for specific AVOptions
michael
parents:
4369
diff
changeset
|
101 const AVOption *av_find_opt(void *obj, const char *name, const char *unit, int mask, int flags); |
7224 | 102 |
8407
8903ad65c412
Put under #if LIBAVCODEC_VERSION_MAJOR < 53 the deprecated functions
stefano
parents:
8356
diff
changeset
|
103 #if LIBAVCODEC_VERSION_MAJOR < 53 |
7427 | 104 /** |
105 * @see av_set_string2() | |
106 */ | |
7224 | 107 attribute_deprecated const AVOption *av_set_string(void *obj, const char *name, const char *val); |
108 | |
109 /** | |
8356 | 110 * @return a pointer to the AVOption corresponding to the field set or |
9822
2887f410011f
Remove '\p', '\c' and '\e' doxygen markup from doxy, as it should
stefano
parents:
9642
diff
changeset
|
111 * NULL if no matching AVOption exists, or if the value val is not |
8356 | 112 * valid |
113 * @see av_set_string3() | |
114 */ | |
115 attribute_deprecated const AVOption *av_set_string2(void *obj, const char *name, const char *val, int alloc); | |
8407
8903ad65c412
Put under #if LIBAVCODEC_VERSION_MAJOR < 53 the deprecated functions
stefano
parents:
8356
diff
changeset
|
116 #endif |
8356 | 117 |
118 /** | |
7224 | 119 * Sets the field of obj with the given name to value. |
7427 | 120 * |
121 * @param[in] obj A struct whose first element is a pointer to an | |
122 * AVClass. | |
123 * @param[in] name the name of the field to set | |
124 * @param[in] val The value to set. If the field is not of a string | |
125 * type, then the given string is parsed. | |
126 * SI postfixes and some named scalars are supported. | |
127 * If the field is of a numeric type, it has to be a numeric or named | |
128 * scalar. Behavior with more than one scalar and +- infix operators | |
129 * is undefined. | |
130 * If the field is of a flags type, it has to be a sequence of numeric | |
131 * scalars or named flags separated by '+' or '-'. Prefixing a flag | |
132 * with '+' causes it to be set without affecting the other flags; | |
133 * similarly, '-' unsets a flag. | |
8356 | 134 * @param[out] o_out if non-NULL put here a pointer to the AVOption |
135 * found | |
7224 | 136 * @param alloc when 1 then the old value will be av_freed() and the |
137 * new av_strduped() | |
138 * when 0 then no av_free() nor av_strdup() will be used | |
9642 | 139 * @return 0 if the value has been set, or an AVERROR code in case of |
140 * error: | |
141 * AVERROR(ENOENT) if no matching option exists | |
142 * AVERROR(ERANGE) if the value is out of range | |
143 * AVERROR(EINVAL) if the value is not valid | |
7224 | 144 */ |
8356 | 145 int av_set_string3(void *obj, const char *name, const char *val, int alloc, const AVOption **o_out); |
7224 | 146 |
4369
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
147 const AVOption *av_set_double(void *obj, const char *name, double n); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
148 const AVOption *av_set_q(void *obj, const char *name, AVRational n); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
149 const AVOption *av_set_int(void *obj, const char *name, int64_t n); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
150 double av_get_double(void *obj, const char *name, const AVOption **o_out); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
151 AVRational av_get_q(void *obj, const char *name, const AVOption **o_out); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
152 int64_t av_get_int(void *obj, const char *name, const AVOption **o_out); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
153 const char *av_get_string(void *obj, const char *name, const AVOption **o_out, char *buf, int buf_len); |
e10acab2322a
Constantize AVOption, solve few warnings, patch from flameeyes@gentoo.org aka "the other Diego"
lu_zero
parents:
3947
diff
changeset
|
154 const AVOption *av_next_option(void *obj, const AVOption *last); |
2876 | 155 int av_opt_show(void *obj, void *av_log_obj); |
3702 | 156 void av_opt_set_defaults(void *s); |
4629
2faa1399dd68
add av_opt_set_defaults2() which sets just defaults from AVOptions whos flags match a user specified & mask = flags
michael
parents:
4628
diff
changeset
|
157 void av_opt_set_defaults2(void *s, int mask, int flags); |
2874
b6def74f5811
flags and named constants with type checking of course for AVOption
michael
parents:
diff
changeset
|
158 |
7760 | 159 #endif /* AVCODEC_OPT_H */ |