annotate options.c @ 5870:b17b16b532ca libavformat

Parse options in the RTSP URL only from the last question mark onwards This helps if the URL (erroneously?) contains question marks within the path.
author mstorsjo
date Tue, 23 Mar 2010 07:59:23 +0000
parents 529c473fe20e
children ae90b07a6f29
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 /**
4331
49c1d3b27727 Use full internal pathname in doxygen @file directives.
diego
parents: 4188
diff changeset
24 * @file libavformat/options.c
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"},
5613
529c473fe20e Flag to ignore dts on frames that contain pts.
michael
parents: 5361
diff changeset
49 {"igndts", "ingore dts", 0, FF_OPT_TYPE_CONST, AVFMT_FLAG_IGNDTS, INT_MIN, INT_MAX, D, "fflags"},
4626
166d293b44fa deprecate old metadata API
aurel
parents: 4405
diff changeset
50 #if LIBAVFORMAT_VERSION_INT < (53<<16)
4188
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
51 {"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
52 {"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
53 #endif
5361
ce002ddccf1b Increase default value for max_analyze_duration, fixes issue 1506, a regression.
cehoyos
parents: 5071
diff changeset
54 {"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
55 {"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
56 {"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
57 {"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
58 {"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
59 {"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
60 {NULL},
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
61 };
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
62
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
63 #undef E
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
64 #undef D
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
65 #undef DEFAULT
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
66
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
67 static const AVClass av_format_context_class = { "AVFormatContext", format_to_name, options };
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
68
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
69 static void avformat_get_context_defaults(AVFormatContext *s)
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
70 {
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
71 memset(s, 0, sizeof(AVFormatContext));
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
72
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
73 s->av_class = &av_format_context_class;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
74
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
75 av_opt_set_defaults(s);
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
76 }
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
77
4405
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
78 AVFormatContext *avformat_alloc_context(void)
4188
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 AVFormatContext *ic;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
81 ic = av_malloc(sizeof(AVFormatContext));
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
82 if (!ic) return ic;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
83 avformat_get_context_defaults(ic);
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
84 ic->av_class = &av_format_context_class;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
85 return ic;
d2093f4132df Move the AVFormatContext options definition to a dedicated file,
stefano
parents:
diff changeset
86 }
4405
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
87
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
88 #if LIBAVFORMAT_VERSION_MAJOR < 53
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
89 AVFormatContext *av_alloc_format_context(void)
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 return avformat_alloc_context();
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
92 }
61319d92bc36 Deprecate av_malloc_format_context() in favor of
stefano
parents: 4331
diff changeset
93 #endif