annotate options.c @ 6048:e507a21a9566 libavformat

matroskaenc: Write codec time base as default duration for video tracks. This isn't exactly semantically equivalent, but the field has already been long abused to mean this, and writing it helps in determining a decent cfr time base when transcoding from a mkv where the video codec stores none (VP8).
author conrad
date Mon, 24 May 2010 08:58:19 +0000
parents 01f2dce260eb
children b8c470fec3f7
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
1 /*
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
2 * Copyright (c) 2000, 2001, 2002 Fabrice Bellard
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
3 *
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
4 * This file is part of FFmpeg.
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
5 *
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
6 * FFmpeg is free software; you can redistribute it and/or
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
7 * modify it under the terms of the GNU Lesser General Public
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
8 * License as published by the Free Software Foundation; either
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
9 * version 2.1 of the License, or (at your option) any later version.
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
10 *
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
11 * FFmpeg is distributed in the hope that it will be useful,
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
14 * Lesser General Public License for more details.
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
15 *
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
16 * You should have received a copy of the GNU Lesser General Public
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
17 * License along with FFmpeg; if not, write to the Free Software
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
19 */
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
20 #include "avformat.h"
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
21 #include "libavcodec/opt.h"
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
22
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
23 /**
5969
178de7695c6c Remove explicit filename from Doxygen @file commands.
diego
parents: 5914
diff changeset
24 * @file
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
25 * Options definition for AVFormatContext.
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
26 */
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
27
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
28 static const char* format_to_name(void* ptr)
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
29 {
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
30 AVFormatContext* fc = (AVFormatContext*) ptr;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
31 if(fc->iformat) return fc->iformat->name;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
32 else if(fc->oformat) return fc->oformat->name;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
33 else return "NULL";
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
34 }
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
35
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
36 #define OFFSET(x) offsetof(AVFormatContext,x)
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
37 #define DEFAULT 0 //should be NAN but it does not work as it is not a constant in glibc as required by ANSI/ISO C
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
38 //these names are too long to be readable
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
39 #define E AV_OPT_FLAG_ENCODING_PARAM
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
40 #define D AV_OPT_FLAG_DECODING_PARAM
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
41
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
42 static const AVOption options[]={
5071
b2aa396484d4 use AVFormatContext->probesize in av_find_stream_info and raise default to 5M
bcoudurier
parents: 4626
diff changeset
43 {"probesize", "set probing size", OFFSET(probesize), FF_OPT_TYPE_INT, 5000000, 32, INT_MAX, D},
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
44 {"muxrate", "set mux rate", OFFSET(mux_rate), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
45 {"packetsize", "set packet size", OFFSET(packet_size), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
46 {"fflags", NULL, OFFSET(flags), FF_OPT_TYPE_FLAGS, DEFAULT, INT_MIN, INT_MAX, D|E, "fflags"},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
47 {"ignidx", "ignore index", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_IGNIDX, INT_MIN, INT_MAX, D, "fflags"},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
48 {"genpts", "generate pts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_GENPTS, INT_MIN, INT_MAX, D, "fflags"},
5914
ae90b07a6f29 Add AVFMT_FLAG_NOFILLIN and AVFMT_FLAG_NOPARSE.
michael
parents: 5613
diff changeset
49 {"nofillin", "do not fill in missing values that can be exactly calculated", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_NOFILLIN, INT_MIN, INT_MAX, D, "fflags"},
ae90b07a6f29 Add AVFMT_FLAG_NOFILLIN and AVFMT_FLAG_NOPARSE.
michael
parents: 5613
diff changeset
50 {"noparse", "disable AVParsers, this needs nofillin too", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_NOPARSE, INT_MIN, INT_MAX, D, "fflags"},
5613
529c473fe20e Flag to ignore dts on frames that contain pts.
michael
parents: 5361
diff changeset
51 {"igndts", "ingore dts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_IGNDTS, INT_MIN, INT_MAX, D, "fflags"},
6010
01f2dce260eb Add a flag for enabling RTP hinting
mstorsjo
parents: 5987
diff changeset
52 {"rtphint", "add rtp hinting", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_RTP_HINT, INT_MIN, INT_MAX, E, "fflags"},
4626
166d293b44fa deprecate old metadata API
aurel
parents: 4405
diff changeset
53 #if LIBAVFORMAT_VERSION_INT < (53<<16)
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
54 {"track", " set the track number", OFFSET(track), FF_OPT_TYPE_INT, DEFAULT, 0, INT_MAX, E},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
55 {"year", "set the year", OFFSET(year), FF_OPT_TYPE_INT, DEFAULT, INT_MIN, INT_MAX, E},
4626
166d293b44fa deprecate old metadata API
aurel
parents: 4405
diff changeset
56 #endif
5361
ce002ddccf1b Increase default value for max_analyze_duration, fixes issue 1506, a regression.
cehoyos
parents: 5071
diff changeset
57 {"analyzeduration", "how many microseconds are analyzed to estimate duration", OFFSET(max_analyze_duration), FF_OPT_TYPE_INT, 5*AV_TIME_BASE, 0, INT_MAX, D},
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
58 {"cryptokey", "decryption key", OFFSET(key), FF_OPT_TYPE_BINARY, 0, 0, 0, D},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
59 {"indexmem", "max memory used for timestamp index (per stream)", OFFSET(max_index_size), FF_OPT_TYPE_INT, 1<<20, 0, INT_MAX, D},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
60 {"rtbufsize", "max memory used for buffering real-time frames", OFFSET(max_picture_buffer), FF_OPT_TYPE_INT, 3041280, 0, INT_MAX, D}, /* defaults to 1s of 15fps 352x288 YUYV422 video */
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
61 {"fdebug", "print specific debug info", OFFSET(debug), FF_OPT_TYPE_FLAGS, DEFAULT, 0, INT_MAX, E|D, "fdebug"},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
62 {"ts", NULL, 0, FF_OPT_TYPE_CONST, FF_FDEBUG_TS, INT_MIN, INT_MAX, E|D, "fdebug"},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
63 {NULL},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
64 };
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
65
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
66 #undef E
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
67 #undef D
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
68 #undef DEFAULT
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
69
5987
d5672e116fe4 Add version to AVClass so we can add to and use fields of AVClass without ABI issues.
michael
parents: 5969
diff changeset
70 static const AVClass av_format_context_class = { "AVFormatContext", format_to_name, options, LIBAVUTIL_VERSION_INT };
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
71
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
72 static void avformat_get_context_defaults(AVFormatContext *s)
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
73 {
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
74 memset(s, 0, sizeof(AVFormatContext));
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
75
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
76 s->av_class = &av_format_context_class;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
77
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
78 av_opt_set_defaults(s);
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
79 }
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
80
4405
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
81 AVFormatContext *avformat_alloc_context(void)
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
82 {
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
83 AVFormatContext *ic;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
84 ic = av_malloc(sizeof(AVFormatContext));
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
85 if (!ic) return ic;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
86 avformat_get_context_defaults(ic);
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
87 ic->av_class = &av_format_context_class;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
88 return ic;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
89 }
4405
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
90
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
91 #if LIBAVFORMAT_VERSION_MAJOR < 53
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
92 AVFormatContext *av_alloc_format_context(void)
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
93 {
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
94 return avformat_alloc_context();
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
95 }
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
96 #endif