FFmpeg
options.c
Go to the documentation of this file.
1 /*
2  * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
3  *
4  * This file is part of FFmpeg.
5  *
6  * FFmpeg is free software; you can redistribute it and/or
7  * modify it under the terms of the GNU Lesser General Public
8  * License as published by the Free Software Foundation; either
9  * version 2.1 of the License, or (at your option) any later version.
10  *
11  * FFmpeg is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
14  * Lesser General Public License for more details.
15  *
16  * You should have received a copy of the GNU Lesser General Public
17  * License along with FFmpeg; if not, write to the Free Software
18  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
19  */
20 #include "avformat.h"
21 #include "avio_internal.h"
22 #include "demux.h"
23 #include "internal.h"
24 
25 #include "libavcodec/avcodec.h"
26 #include "libavcodec/codec_par.h"
27 
28 #include "libavutil/avassert.h"
29 #include "libavutil/internal.h"
30 #include "libavutil/intmath.h"
31 #include "libavutil/opt.h"
32 
33 /**
34  * @file
35  * Options definition for AVFormatContext.
36  */
37 
39 #include "options_table.h"
41 
42 static const char* format_to_name(void* ptr)
43 {
45  if(fc->iformat) return fc->iformat->name;
46  else if(fc->oformat) return fc->oformat->name;
47  else return "NULL";
48 }
49 
50 static void *format_child_next(void *obj, void *prev)
51 {
52  AVFormatContext *s = obj;
53  if (!prev && s->priv_data &&
54  ((s->iformat && s->iformat->priv_class) ||
55  s->oformat && s->oformat->priv_class))
56  return s->priv_data;
57  if (s->pb && s->pb->av_class && prev != s->pb)
58  return s->pb;
59  return NULL;
60 }
61 
62 enum {
67 
68 };
69 
70 #define ITER_STATE_SHIFT 16
71 
72 static const AVClass *format_child_class_iterate(void **iter)
73 {
74  // we use the low 16 bits of iter as the value to be passed to
75  // av_(de)muxer_iterate()
76  void *val = (void*)(((uintptr_t)*iter) & ((1 << ITER_STATE_SHIFT) - 1));
77  unsigned int state = ((uintptr_t)*iter) >> ITER_STATE_SHIFT;
78  const AVClass *ret = NULL;
79 
81  ret = &ff_avio_class;
82  state++;
83  goto finish;
84  }
85 
86  if (state == CHILD_CLASS_ITER_MUX) {
87  const AVOutputFormat *ofmt;
88 
89  while ((ofmt = av_muxer_iterate(&val))) {
90  ret = ofmt->priv_class;
91  if (ret)
92  goto finish;
93  }
94 
95  val = NULL;
96  state++;
97  }
98 
100  const AVInputFormat *ifmt;
101 
102  while ((ifmt = av_demuxer_iterate(&val))) {
103  ret = ifmt->priv_class;
104  if (ret)
105  goto finish;
106  }
107  val = NULL;
108  state++;
109  }
110 
111 finish:
112  // make sure none av_(de)muxer_iterate does not set the high bits of val
113  av_assert0(!((uintptr_t)val >> ITER_STATE_SHIFT));
114  *iter = (void*)((uintptr_t)val | (state << ITER_STATE_SHIFT));
115  return ret;
116 }
117 
118 static AVClassCategory get_category(void *ptr)
119 {
120  AVFormatContext* s = ptr;
121  if(s->iformat) return AV_CLASS_CATEGORY_DEMUXER;
122  else return AV_CLASS_CATEGORY_MUXER;
123 }
124 
126  .class_name = "AVFormatContext",
127  .item_name = format_to_name,
128  .option = avformat_options,
129  .version = LIBAVUTIL_VERSION_INT,
130  .child_next = format_child_next,
131  .child_class_iterate = format_child_class_iterate,
133  .get_category = get_category,
134 };
135 
137  const char *url, int flags, AVDictionary **options)
138 {
139  int loglevel;
140 
141  if (!strcmp(url, s->url) ||
142  s->iformat && !strcmp(s->iformat->name, "image2") ||
143  s->oformat && !strcmp(s->oformat->name, "image2")
144  ) {
145  loglevel = AV_LOG_DEBUG;
146  } else
147  loglevel = AV_LOG_INFO;
148 
149  av_log(s, loglevel, "Opening \'%s\' for %s\n", url, flags & AVIO_FLAG_WRITE ? "writing" : "reading");
150 
151  return ffio_open_whitelist(pb, url, flags, &s->interrupt_callback, options, s->protocol_whitelist, s->protocol_blacklist);
152 }
153 
155 {
156  avio_close(pb);
157 }
158 
160 {
161  return avio_close(pb);
162 }
163 
165 {
166  FFFormatContext *const si = av_mallocz(sizeof(*si));
168 
169  if (!si)
170  return NULL;
171 
172  s = &si->pub;
173  s->av_class = &av_format_context_class;
174  s->io_open = io_open_default;
175  s->io_close = ff_format_io_close_default;
176  s->io_close2= io_close2_default;
177 
179 
180  si->pkt = av_packet_alloc();
181  si->parse_pkt = av_packet_alloc();
182  if (!si->pkt || !si->parse_pkt) {
184  return NULL;
185  }
186 
188 
189  return s;
190 }
191 
193 {
195 }
196 
198 {
199  return &av_format_context_class;
200 }
201 
202 static const AVOption stream_options[] = {
203  { "disposition", NULL, offsetof(AVStream, disposition), AV_OPT_TYPE_FLAGS, { .i64 = 0 },
204  .flags = AV_OPT_FLAG_ENCODING_PARAM, .unit = "disposition" },
205  { "default", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEFAULT }, .unit = "disposition" },
206  { "dub", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DUB }, .unit = "disposition" },
207  { "original", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ORIGINAL }, .unit = "disposition" },
208  { "comment", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_COMMENT }, .unit = "disposition" },
209  { "lyrics", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_LYRICS }, .unit = "disposition" },
210  { "karaoke", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_KARAOKE }, .unit = "disposition" },
211  { "forced", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_FORCED }, .unit = "disposition" },
212  { "hearing_impaired", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_HEARING_IMPAIRED }, .unit = "disposition" },
213  { "visual_impaired", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_VISUAL_IMPAIRED }, .unit = "disposition" },
214  { "clean_effects", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CLEAN_EFFECTS }, .unit = "disposition" },
215  { "attached_pic", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_ATTACHED_PIC }, .unit = "disposition" },
216  { "timed_thumbnails", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_TIMED_THUMBNAILS }, .unit = "disposition" },
217  { "captions", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_CAPTIONS }, .unit = "disposition" },
218  { "descriptions", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DESCRIPTIONS }, .unit = "disposition" },
219  { "metadata", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_METADATA }, .unit = "disposition" },
220  { "dependent", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_DEPENDENT }, .unit = "disposition" },
221  { "still_image", .type = AV_OPT_TYPE_CONST, { .i64 = AV_DISPOSITION_STILL_IMAGE }, .unit = "disposition" },
222  { NULL }
223 };
224 
225 static const AVClass stream_class = {
226  .class_name = "AVStream",
227  .item_name = av_default_item_name,
228  .version = LIBAVUTIL_VERSION_INT,
229  .option = stream_options,
230 };
231 
233 {
234  return &stream_class;
235 }
236 
238 {
239  FFFormatContext *const si = ffformatcontext(s);
240  FFStream *sti;
241  AVStream *st;
242  AVStream **streams;
243 
244  if (s->nb_streams >= s->max_streams) {
245  av_log(s, AV_LOG_ERROR, "Number of streams exceeds max_streams parameter"
246  " (%d), see the documentation if you wish to increase it\n",
247  s->max_streams);
248  return NULL;
249  }
250  streams = av_realloc_array(s->streams, s->nb_streams + 1, sizeof(*streams));
251  if (!streams)
252  return NULL;
253  s->streams = streams;
254 
255  sti = av_mallocz(sizeof(*sti));
256  if (!sti)
257  return NULL;
258  st = &sti->pub;
259 
260 #if FF_API_AVSTREAM_CLASS
261  st->av_class = &stream_class;
262 #endif
263 
265  if (!st->codecpar)
266  goto fail;
267 
269  if (!sti->avctx)
270  goto fail;
271 
272  if (s->iformat) {
273  sti->info = av_mallocz(sizeof(*sti->info));
274  if (!sti->info)
275  goto fail;
276 
277 #if FF_API_R_FRAME_RATE
278  sti->info->last_dts = AV_NOPTS_VALUE;
279 #endif
282 
283  /* default pts setting is MPEG-like */
284  avpriv_set_pts_info(st, 33, 1, 90000);
285  /* we set the current DTS to 0 so that formats without any timestamps
286  * but durations get some timestamps, formats with some unknown
287  * timestamps have their first few packets buffered and the
288  * timestamps corrected before they are returned to the user */
289  sti->cur_dts = RELATIVE_TS_BASE;
290  } else {
291  sti->cur_dts = AV_NOPTS_VALUE;
292  }
293 
294  st->index = s->nb_streams;
296  st->duration = AV_NOPTS_VALUE;
297  sti->first_dts = AV_NOPTS_VALUE;
298  sti->probe_packets = s->max_probe_packets;
301 
304  for (int i = 0; i < MAX_REORDER_DELAY + 1; i++)
305  sti->pts_buffer[i] = AV_NOPTS_VALUE;
306 
307  st->sample_aspect_ratio = (AVRational) { 0, 1 };
308 
310 
311  sti->need_context_update = 1;
312 
313  s->streams[s->nb_streams++] = st;
314  return st;
315 fail:
316  ff_free_stream(&st);
317  return NULL;
318 }
319 
320 static int option_is_disposition(const AVOption *opt)
321 {
322  return opt->type == AV_OPT_TYPE_CONST &&
323  opt->unit && !strcmp(opt->unit, "disposition");
324 }
325 
326 int av_disposition_from_string(const char *disp)
327 {
328  for (const AVOption *opt = stream_options; opt->name; opt++)
329  if (option_is_disposition(opt) && !strcmp(disp, opt->name))
330  return opt->default_val.i64;
331  return AVERROR(EINVAL);
332 }
333 
334 const char *av_disposition_to_string(int disposition)
335 {
336  int val;
337 
338  if (disposition <= 0)
339  return NULL;
340 
341  val = 1 << ff_ctz(disposition);
342  for (const AVOption *opt = stream_options; opt->name; opt++)
343  if (option_is_disposition(opt) && opt->default_val.i64 == val)
344  return opt->name;
345 
346  return NULL;
347 }
FFStreamInfo::fps_last_dts
int64_t fps_last_dts
Definition: demux.h:54
AVCodec
AVCodec.
Definition: codec.h:204
FF_ENABLE_DEPRECATION_WARNINGS
#define FF_ENABLE_DEPRECATION_WARNINGS
Definition: internal.h:83
FFStream::inject_global_side_data
int inject_global_side_data
Internal data to inject global side data.
Definition: internal.h:355
ff_format_io_close_default
void ff_format_io_close_default(AVFormatContext *s, AVIOContext *pb)
Definition: options.c:154
AVERROR
Filter the word “frame” indicates either a video frame or a group of audio as stored in an AVFrame structure Format for each input and each output the list of supported formats For video that means pixel format For audio that means channel sample they are references to shared objects When the negotiation mechanism computes the intersection of the formats supported at each end of a all references to both lists are replaced with a reference to the intersection And when a single format is eventually chosen for a link amongst the remaining all references to the list are updated That means that if a filter requires that its input and output have the same format amongst a supported all it has to do is use a reference to the same list of formats query_formats can leave some formats unset and return AVERROR(EAGAIN) to cause the negotiation mechanism toagain later. That can be used by filters with complex requirements to use the format negotiated on one link to set the formats supported on another. Frame references ownership and permissions
opt.h
avformat_new_stream
AVStream * avformat_new_stream(AVFormatContext *s, const AVCodec *c)
Add a new stream to a media file.
Definition: options.c:237
av_opt_set_defaults
void av_opt_set_defaults(void *s)
Set the values of all AVOption fields to their default values.
Definition: opt.c:1459
ITER_STATE_SHIFT
#define ITER_STATE_SHIFT
Definition: options.c:70
avio_close
int avio_close(AVIOContext *s)
Close the resource accessed by the AVIOContext s and free it.
Definition: aviobuf.c:1255
FFStream::first_dts
int64_t first_dts
Timestamp corresponding to the last dts sync point.
Definition: internal.h:403
ff_ctz
#define ff_ctz
Definition: intmath.h:106
FFStream::last_IP_pts
int64_t last_IP_pts
Definition: internal.h:371
ffformatcontext
static av_always_inline FFFormatContext * ffformatcontext(AVFormatContext *s)
Definition: internal.h:192
AV_DISPOSITION_ATTACHED_PIC
#define AV_DISPOSITION_ATTACHED_PIC
The stream is stored in the file as an attached picture/"cover art" (e.g.
Definition: avformat.h:879
format_child_class_iterate
static const AVClass * format_child_class_iterate(void **iter)
Definition: options.c:72
avformat_get_class
const AVClass * avformat_get_class(void)
Get the AVClass for AVFormatContext.
Definition: options.c:197
AV_DISPOSITION_DEFAULT
#define AV_DISPOSITION_DEFAULT
The stream should be chosen by default among other streams of the same type, unless the user has expl...
Definition: avformat.h:826
AVOption
AVOption.
Definition: opt.h:251
AVFormatContext::duration_estimation_method
enum AVDurationEstimationMethod duration_estimation_method
The duration field can be estimated through various ways, and this field can be used to know how the ...
Definition: avformat.h:1602
ffio_open_whitelist
int ffio_open_whitelist(AVIOContext **s, const char *url, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options, const char *whitelist, const char *blacklist)
Definition: aviobuf.c:1228
fc
#define fc(width, name, range_min, range_max)
Definition: cbs_av1.c:551
ff_avio_class
const AVClass ff_avio_class
Definition: aviobuf.c:67
AVDictionary
Definition: dict.c:30
FFStream::last_dts_for_order_check
int64_t last_dts_for_order_check
Internal data to analyze DTS and detect faulty mpeg streams.
Definition: internal.h:348
av_disposition_to_string
const char * av_disposition_to_string(int disposition)
Definition: options.c:334
CHILD_CLASS_ITER_DONE
@ CHILD_CLASS_ITER_DONE
Definition: options.c:66
FFFormatContext::shortest_end
int64_t shortest_end
Timestamp of the end of the shortest stream.
Definition: internal.h:159
avpriv_set_pts_info
void avpriv_set_pts_info(AVStream *st, int pts_wrap_bits, unsigned int pts_num, unsigned int pts_den)
Set the time base and wrapping info for a given stream.
Definition: avformat.c:763
finish
static void finish(void)
Definition: movenc.c:342
fail
#define fail()
Definition: checkasm.h:131
FFStreamInfo::fps_first_dts
int64_t fps_first_dts
Those are used for average framerate estimation.
Definition: demux.h:52
AV_DISPOSITION_STILL_IMAGE
#define AV_DISPOSITION_STILL_IMAGE
The video stream contains still images.
Definition: avformat.h:918
AV_DISPOSITION_FORCED
#define AV_DISPOSITION_FORCED
Track should be used during playback by default.
Definition: avformat.h:859
val
static double val(void *priv, double ch)
Definition: aeval.c:77
AV_DISPOSITION_TIMED_THUMBNAILS
#define AV_DISPOSITION_TIMED_THUMBNAILS
The stream is sparse, and contains thumbnail images, often corresponding to chapter markers.
Definition: avformat.h:884
AVStream::duration
int64_t duration
Decoding: duration of the stream, in stream time base.
Definition: avformat.h:998
AV_PTS_WRAP_IGNORE
#define AV_PTS_WRAP_IGNORE
Options for behavior on timestamp wrap detection.
Definition: avformat.h:937
AV_DISPOSITION_CLEAN_EFFECTS
#define AV_DISPOSITION_CLEAN_EFFECTS
The audio stream contains music and sound effects without voice.
Definition: avformat.h:871
avassert.h
AV_LOG_ERROR
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
Definition: log.h:180
AVInputFormat
Definition: avformat.h:656
avcodec_alloc_context3
AVCodecContext * avcodec_alloc_context3(const AVCodec *codec)
Allocate an AVCodecContext and set its fields to default values.
Definition: options.c:149
s
#define s(width, name)
Definition: cbs_vp9.c:256
MAX_REORDER_DELAY
@ MAX_REORDER_DELAY
Definition: vaapi_encode.h:45
AV_OPT_FLAG_ENCODING_PARAM
#define AV_OPT_FLAG_ENCODING_PARAM
a generic parameter which can be set by the user for muxing or encoding
Definition: opt.h:281
FFStreamInfo::last_dts
int64_t last_dts
Definition: demux.h:31
av_realloc_array
void * av_realloc_array(void *ptr, size_t nmemb, size_t size)
Definition: mem.c:225
RELATIVE_TS_BASE
#define RELATIVE_TS_BASE
Definition: demux.h:64
av_assert0
#define av_assert0(cond)
assert() equivalent, that is always enabled.
Definition: avassert.h:37
AVIO_FLAG_WRITE
#define AVIO_FLAG_WRITE
write-only
Definition: avio.h:629
AV_LOG_DEBUG
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
Definition: log.h:201
ctx
AVFormatContext * ctx
Definition: movenc.c:48
CHILD_CLASS_ITER_MUX
@ CHILD_CLASS_ITER_MUX
Definition: options.c:64
CHILD_CLASS_ITER_DEMUX
@ CHILD_CLASS_ITER_DEMUX
Definition: options.c:65
AV_CLASS_CATEGORY_DEMUXER
@ AV_CLASS_CATEGORY_DEMUXER
Definition: log.h:33
FFFormatContext
Definition: internal.h:72
AVFormatContext
Format I/O context.
Definition: avformat.h:1213
FFStream::pub
AVStream pub
The public context.
Definition: internal.h:201
internal.h
AVStream::codecpar
AVCodecParameters * codecpar
Codec parameters associated with this stream.
Definition: avformat.h:1108
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
NULL
#define NULL
Definition: coverity.c:32
state
static struct @334 state
AVRational
Rational number (pair of numerator and denominator).
Definition: rational.h:58
avformat_options
static const AVOption avformat_options[]
Definition: options_table.h:36
AV_DISPOSITION_COMMENT
#define AV_DISPOSITION_COMMENT
The stream is a commentary track.
Definition: avformat.h:844
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:237
AVDurationEstimationMethod
AVDurationEstimationMethod
The duration of a video can be estimated through various ways, and this enum can be used to know how ...
Definition: avformat.h:1193
AV_DISPOSITION_METADATA
#define AV_DISPOSITION_METADATA
The subtitle stream contains time-aligned metadata that is not intended to be directly presented to t...
Definition: avformat.h:908
AV_DISPOSITION_ORIGINAL
#define AV_DISPOSITION_ORIGINAL
The stream is in original language.
Definition: avformat.h:840
AVOutputFormat::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: avformat.h:538
FFFormatContext::inject_global_side_data
int inject_global_side_data
Definition: internal.h:152
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
format_to_name
FF_DISABLE_DEPRECATION_WARNINGS static const FF_ENABLE_DEPRECATION_WARNINGS char * format_to_name(void *ptr)
Definition: options.c:42
av_disposition_from_string
int av_disposition_from_string(const char *disp)
Definition: options.c:326
options
const OptionDef options[]
AV_DISPOSITION_CAPTIONS
#define AV_DISPOSITION_CAPTIONS
The subtitle stream contains captions, providing a transcription and possibly a translation of audio.
Definition: avformat.h:897
AVIOContext
Bytestream IO Context.
Definition: avio.h:162
FFFormatContext::parse_pkt
AVPacket * parse_pkt
The generic code uses this as a temporary packet to parse packets or for muxing, especially flushing.
Definition: internal.h:135
avformat_alloc_context
AVFormatContext * avformat_alloc_context(void)
Allocate an AVFormatContext.
Definition: options.c:164
FFStream
Definition: internal.h:197
ff_free_stream
void ff_free_stream(AVStream **pst)
Frees a stream without modifying the corresponding AVFormatContext.
Definition: avformat.c:40
AVClass::category
AVClassCategory category
Category used for visualization (like color) This is only set if the category is equal for all object...
Definition: log.h:114
AV_NOPTS_VALUE
#define AV_NOPTS_VALUE
Undefined timestamp value.
Definition: avutil.h:248
AV_DISPOSITION_DUB
#define AV_DISPOSITION_DUB
The stream is not in original language.
Definition: avformat.h:834
av_demuxer_iterate
const AVInputFormat * av_demuxer_iterate(void **opaque)
Iterate over all registered demuxers.
Definition: allformats.c:573
AVOption::name
const char * name
Definition: opt.h:252
AVStream::sample_aspect_ratio
AVRational sample_aspect_ratio
sample aspect ratio (0 if unknown)
Definition: avformat.h:1017
AV_DISPOSITION_HEARING_IMPAIRED
#define AV_DISPOSITION_HEARING_IMPAIRED
The stream is intended for hearing impaired audiences.
Definition: avformat.h:863
FFStream::pts_wrap_behavior
int pts_wrap_behavior
Options for behavior, when a wrap is detected.
Definition: internal.h:328
av_packet_alloc
AVPacket * av_packet_alloc(void)
Allocate an AVPacket and set its fields to default values.
Definition: avpacket.c:62
FFStream::probe_packets
int probe_packets
Number of packets to buffer for codec probing.
Definition: internal.h:377
av_fmt_ctx_get_duration_estimation_method
enum AVDurationEstimationMethod av_fmt_ctx_get_duration_estimation_method(const AVFormatContext *ctx)
Returns the method used to set ctx->duration.
Definition: options.c:192
AV_LOG_INFO
#define AV_LOG_INFO
Standard information.
Definition: log.h:191
get_category
static AVClassCategory get_category(void *ptr)
Definition: options.c:118
AVClassCategory
AVClassCategory
Definition: log.h:28
AVOutputFormat
Definition: avformat.h:509
i
#define i(width, name, range_min, range_max)
Definition: cbs_h2645.c:269
avio_internal.h
internal.h
io_close2_default
static int io_close2_default(AVFormatContext *s, AVIOContext *pb)
Definition: options.c:159
AV_DISPOSITION_KARAOKE
#define AV_DISPOSITION_KARAOKE
The stream contains karaoke audio.
Definition: avformat.h:852
stream_class
static const AVClass stream_class
Definition: options.c:225
CHILD_CLASS_ITER_AVIO
@ CHILD_CLASS_ITER_AVIO
Definition: options.c:63
FFStream::pts_buffer
int64_t pts_buffer[MAX_REORDER_DELAY+1]
Definition: internal.h:343
av_mallocz
void * av_mallocz(size_t size)
Allocate a memory block with alignment suitable for all memory accesses (including vectors if availab...
Definition: mem.c:264
avcodec_parameters_alloc
AVCodecParameters * avcodec_parameters_alloc(void)
Allocate a new AVCodecParameters and set its fields to default values (unknown/invalid/0).
Definition: codec_par.c:53
demux.h
AV_DISPOSITION_DEPENDENT
#define AV_DISPOSITION_DEPENDENT
The audio stream is intended to be mixed with another stream before presentation.
Definition: avformat.h:914
avcodec.h
AV_DISPOSITION_VISUAL_IMPAIRED
#define AV_DISPOSITION_VISUAL_IMPAIRED
The stream is intended for visually impaired audiences.
Definition: avformat.h:867
ret
ret
Definition: filter_design.txt:187
AVStream
Stream structure.
Definition: avformat.h:948
AVClass::class_name
const char * class_name
The name of the class; usually it is the same name as the context structure type to which the AVClass...
Definition: log.h:71
avformat.h
AVOption::type
enum AVOptionType type
Definition: opt.h:265
AV_DISPOSITION_DESCRIPTIONS
#define AV_DISPOSITION_DESCRIPTIONS
The subtitle stream contains a textual description of the video content.
Definition: avformat.h:903
format_child_next
static void * format_child_next(void *obj, void *prev)
Definition: options.c:50
AVStream::index
int index
stream index in AVFormatContext
Definition: avformat.h:956
av_muxer_iterate
const AVOutputFormat * av_muxer_iterate(void **opaque)
Iterate over all registered muxers.
Definition: allformats.c:554
AV_CLASS_CATEGORY_MUXER
@ AV_CLASS_CATEGORY_MUXER
Definition: log.h:32
FFStream::avctx
AVCodecContext * avctx
The codec context used by avformat_find_stream_info, the parser, etc.
Definition: internal.h:224
avformat_free_context
void avformat_free_context(AVFormatContext *s)
Free an AVFormatContext and all its streams.
Definition: avformat.c:95
stream_options
static const AVOption stream_options[]
Definition: options.c:202
FFStream::info
struct FFStreamInfo * info
Stream information used internally by avformat_find_stream_info()
Definition: internal.h:250
io_open_default
static int io_open_default(AVFormatContext *s, AVIOContext **pb, const char *url, int flags, AVDictionary **options)
Definition: options.c:136
FF_DISABLE_DEPRECATION_WARNINGS
#define FF_DISABLE_DEPRECATION_WARNINGS
Definition: internal.h:82
AVOption::unit
const char * unit
The logical unit to which the option belongs.
Definition: opt.h:307
FFFormatContext::pkt
AVPacket * pkt
Used to hold temporary packets for the generic demuxing code.
Definition: internal.h:142
codec_par.h
FFStream::cur_dts
int64_t cur_dts
Definition: internal.h:404
AV_OPT_TYPE_FLAGS
@ AV_OPT_TYPE_FLAGS
Definition: opt.h:224
FFStream::need_context_update
int need_context_update
Whether the internal avctx needs to be updated from codecpar (after a late change to codecpar)
Definition: internal.h:241
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:561
options_table.h
av_log
#define av_log(a,...)
Definition: tableprint_vlc.h:27
AVStream::start_time
int64_t start_time
Decoding: pts of the first frame of the stream in presentation order, in stream time base.
Definition: avformat.h:988
av_stream_get_class
const AVClass * av_stream_get_class(void)
Get the AVClass for AVStream.
Definition: options.c:232
FFFormatContext::pub
AVFormatContext pub
The public context.
Definition: internal.h:76
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:234
option_is_disposition
static int option_is_disposition(const AVOption *opt)
Definition: options.c:320
FFStream::pts_wrap_reference
int64_t pts_wrap_reference
Internal data to check for wrapping of the time stamp.
Definition: internal.h:316
AVInputFormat::priv_class
const AVClass * priv_class
AVClass for the private context.
Definition: avformat.h:686
AV_DISPOSITION_LYRICS
#define AV_DISPOSITION_LYRICS
The stream contains song lyrics.
Definition: avformat.h:848
av_format_context_class
static const AVClass av_format_context_class
Definition: options.c:125
intmath.h