OLD | NEW |
1 /* | 1 /* |
2 * copyright (c) 2001 Fabrice Bellard | 2 * copyright (c) 2001 Fabrice Bellard |
3 * | 3 * |
4 * This file is part of FFmpeg. | 4 * This file is part of FFmpeg. |
5 * | 5 * |
6 * FFmpeg is free software; you can redistribute it and/or | 6 * FFmpeg is free software; you can redistribute it and/or |
7 * modify it under the terms of the GNU Lesser General Public | 7 * modify it under the terms of the GNU Lesser General Public |
8 * License as published by the Free Software Foundation; either | 8 * License as published by the Free Software Foundation; either |
9 * version 2.1 of the License, or (at your option) any later version. | 9 * version 2.1 of the License, or (at your option) any later version. |
10 * | 10 * |
11 * FFmpeg is distributed in the hope that it will be useful, | 11 * FFmpeg is distributed in the hope that it will be useful, |
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of | 12 * but WITHOUT ANY WARRANTY; without even the implied warranty of |
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU | 13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
14 * Lesser General Public License for more details. | 14 * Lesser General Public License for more details. |
15 * | 15 * |
16 * You should have received a copy of the GNU Lesser General Public | 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 | 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 | 18 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
19 */ | 19 */ |
20 | 20 |
21 #ifndef AVFORMAT_AVFORMAT_H | 21 #ifndef AVFORMAT_AVFORMAT_H |
22 #define AVFORMAT_AVFORMAT_H | 22 #define AVFORMAT_AVFORMAT_H |
23 | 23 |
24 #define LIBAVFORMAT_VERSION_MAJOR 52 | 24 #define LIBAVFORMAT_VERSION_MAJOR 52 |
25 #define LIBAVFORMAT_VERSION_MINOR 23 | 25 #define LIBAVFORMAT_VERSION_MINOR 32 |
26 #define LIBAVFORMAT_VERSION_MICRO 1 | 26 #define LIBAVFORMAT_VERSION_MICRO 0 |
27 | 27 |
28 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ | 28 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \ |
29 LIBAVFORMAT_VERSION_MINOR, \ | 29 LIBAVFORMAT_VERSION_MINOR, \ |
30 LIBAVFORMAT_VERSION_MICRO) | 30 LIBAVFORMAT_VERSION_MICRO) |
31 #define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ | 31 #define LIBAVFORMAT_VERSION AV_VERSION(LIBAVFORMAT_VERSION_MAJOR, \ |
32 LIBAVFORMAT_VERSION_MINOR, \ | 32 LIBAVFORMAT_VERSION_MINOR, \ |
33 LIBAVFORMAT_VERSION_MICRO) | 33 LIBAVFORMAT_VERSION_MICRO) |
34 #define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT | 34 #define LIBAVFORMAT_BUILD LIBAVFORMAT_VERSION_INT |
35 | 35 |
36 #define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) | 36 #define LIBAVFORMAT_IDENT "Lavf" AV_STRINGIFY(LIBAVFORMAT_VERSION) |
37 | 37 |
38 /** | 38 /** |
39 * Returns the LIBAVFORMAT_VERSION_INT constant. | 39 * Returns the LIBAVFORMAT_VERSION_INT constant. |
40 */ | 40 */ |
41 unsigned avformat_version(void); | 41 unsigned avformat_version(void); |
42 | 42 |
43 #include <time.h> | 43 #include <time.h> |
44 #include <stdio.h> /* FILE */ | 44 #include <stdio.h> /* FILE */ |
45 #include "libavcodec/avcodec.h" | 45 #include "libavcodec/avcodec.h" |
46 | 46 |
47 #include "avio.h" | 47 #include "avio.h" |
48 | 48 |
| 49 struct AVFormatContext; |
| 50 |
49 | 51 |
50 /* | 52 /* |
51 * Public Metadata API. | 53 * Public Metadata API. |
52 * The metadata API allows libavformat to export metadata tags to a client | 54 * The metadata API allows libavformat to export metadata tags to a client |
53 * application using a sequence of key/value pairs. | 55 * application using a sequence of key/value pairs. |
54 * Important concepts to keep in mind: | 56 * Important concepts to keep in mind: |
55 * 1. Keys are unique; there can never be 2 tags with the same key. This is | 57 * 1. Keys are unique; there can never be 2 tags with the same key. This is |
56 * also meant semantically, i.e., a demuxer should not knowingly produce | 58 * also meant semantically, i.e., a demuxer should not knowingly produce |
57 * several keys that are literally different but semantically identical. | 59 * several keys that are literally different but semantically identical. |
58 * E.g., key=Author5, key=Author6. In this example, all authors must be | 60 * E.g., key=Author5, key=Author6. In this example, all authors must be |
59 * placed in the same tag. | 61 * placed in the same tag. |
60 * 2. Metadata is flat, not hierarchical; there are no subtags. If you | 62 * 2. Metadata is flat, not hierarchical; there are no subtags. If you |
61 * want to store, e.g., the email address of the child of producer Alice | 63 * want to store, e.g., the email address of the child of producer Alice |
62 * and actor Bob, that could have key=alice_and_bobs_childs_email_address. | 64 * and actor Bob, that could have key=alice_and_bobs_childs_email_address. |
63 * 3. A tag whose value is localized for a particular language is appended | 65 * 3. A tag whose value is localized for a particular language is appended |
64 * with a dash character ('-') and the ISO 639 3-letter language code. | 66 * with a dash character ('-') and the ISO 639 3-letter language code. |
65 * For example: Author-ger=Michael, Author-eng=Mike | 67 * For example: Author-ger=Michael, Author-eng=Mike |
66 * The original/default language is in the unqualified "Author" tag. | 68 * The original/default language is in the unqualified "Author" tag. |
67 * A demuxer should set a default if it sets any translated tag. | 69 * A demuxer should set a default if it sets any translated tag. |
68 */ | 70 */ |
69 | 71 |
70 #define AV_METADATA_IGNORE_CASE 1 | 72 #define AV_METADATA_MATCH_CASE 1 |
71 #define AV_METADATA_IGNORE_SUFFIX 2 | 73 #define AV_METADATA_IGNORE_SUFFIX 2 |
72 | 74 |
73 typedef struct { | 75 typedef struct { |
74 char *key; | 76 char *key; |
75 char *value; | 77 char *value; |
76 }AVMetadataTag; | 78 }AVMetadataTag; |
77 | 79 |
78 typedef struct AVMetadata AVMetadata; | 80 typedef struct AVMetadata AVMetadata; |
| 81 typedef struct AVMetadataConv AVMetadataConv; |
79 | 82 |
80 /** | 83 /** |
81 * gets a metadata element with matching key. | 84 * Gets a metadata element with matching key. |
82 * @param prev set to the previous matching element to find the next. | 85 * @param prev Set to the previous matching element to find the next. |
83 * @param flags allows case as well as suffix insensitive comparissions. | 86 * @param flags Allows case as well as suffix-insensitive comparisons. |
84 * @return found tag or NULL, changing key or value leads to undefined behavior. | 87 * @return Found tag or NULL, changing key or value leads to undefined behavior. |
85 */ | 88 */ |
86 AVMetadataTag * | 89 AVMetadataTag * |
87 av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int f
lags); | 90 av_metadata_get(AVMetadata *m, const char *key, const AVMetadataTag *prev, int f
lags); |
88 | 91 |
89 /** | 92 /** |
90 * sets the given tag in m, overwriting an existing tag. | 93 * Sets the given tag in m, overwriting an existing tag. |
91 * @param tag tag to add to m, key and value will be av_strduped. | 94 * @param key tag key to add to m (will be av_strduped) |
92 * @return >= 0 if success otherwise error code that is <0. | 95 * @param value tag value to add to m (will be av_strduped) |
| 96 * @return >= 0 on success otherwise an error code <0 |
93 */ | 97 */ |
94 int av_metadata_set(AVMetadata **m, AVMetadataTag tag); | 98 int av_metadata_set(AVMetadata **pm, const char *key, const char *value); |
95 | 99 |
96 /** | 100 /** |
97 * Free all the memory allocated for an AVMetadata struct. | 101 * Convert all the metadata sets from ctx according to the source and |
| 102 * destination conversion tables. |
| 103 * @param d_conv destination tags format conversion table |
| 104 * @param s_conv source tags format conversion table |
| 105 */ |
| 106 void av_metadata_conv(struct AVFormatContext *ctx,const AVMetadataConv *d_conv, |
| 107 const AVMetadataConv *s_conv); |
| 108 |
| 109 /** |
| 110 * Frees all the memory allocated for an AVMetadata struct. |
98 */ | 111 */ |
99 void av_metadata_free(AVMetadata **m); | 112 void av_metadata_free(AVMetadata **m); |
100 | 113 |
101 | 114 |
102 /* packet functions */ | 115 /* packet functions */ |
103 | 116 |
104 typedef struct AVPacket { | 117 typedef struct AVPacket { |
105 /** | 118 /** |
106 * Presentation timestamp in time_base units. | 119 * Presentation timestamp in time_base units; the time at which the |
107 * This is the time at which the decompressed packet will be presented | 120 * decompressed packet will be presented to the user. |
108 * to the user. | |
109 * Can be AV_NOPTS_VALUE if it is not stored in the file. | 121 * Can be AV_NOPTS_VALUE if it is not stored in the file. |
110 * pts MUST be larger or equal to dts as presentation cannot happen before | 122 * pts MUST be larger or equal to dts as presentation cannot happen before |
111 * decompression, unless one wants to view hex dumps. Some formats misuse | 123 * decompression, unless one wants to view hex dumps. Some formats misuse |
112 * the terms dts and pts/cts to mean something different, these timestamps | 124 * the terms dts and pts/cts to mean something different. Such timestamps |
113 * must be converted to true pts/dts before they are stored in AVPacket. | 125 * must be converted to true pts/dts before they are stored in AVPacket. |
114 */ | 126 */ |
115 int64_t pts; | 127 int64_t pts; |
116 /** | 128 /** |
117 * Decompression timestamp in time_base units. | 129 * Decompression timestamp in time_base units; the time at which the |
118 * This is the time at which the packet is decompressed. | 130 * packet is decompressed. |
119 * Can be AV_NOPTS_VALUE if it is not stored in the file. | 131 * Can be AV_NOPTS_VALUE if it is not stored in the file. |
120 */ | 132 */ |
121 int64_t dts; | 133 int64_t dts; |
122 uint8_t *data; | 134 uint8_t *data; |
123 int size; | 135 int size; |
124 int stream_index; | 136 int stream_index; |
125 int flags; | 137 int flags; |
126 /** | 138 /** |
127 * Duration of this packet in time_base units, 0 if unknown. | 139 * Duration of this packet in time_base units, 0 if unknown. |
128 * Equals next_pts - this_pts in presentation order. | 140 * Equals next_pts - this_pts in presentation order. |
(...skipping 73 matching lines...) Loading... |
202 pkt->destruct(pkt); | 214 pkt->destruct(pkt); |
203 } | 215 } |
204 } | 216 } |
205 | 217 |
206 /*************************************************/ | 218 /*************************************************/ |
207 /* fractional numbers for exact pts handling */ | 219 /* fractional numbers for exact pts handling */ |
208 | 220 |
209 /** | 221 /** |
210 * The exact value of the fractional number is: 'val + num / den'. | 222 * The exact value of the fractional number is: 'val + num / den'. |
211 * num is assumed to be 0 <= num < den. | 223 * num is assumed to be 0 <= num < den. |
212 * @deprecated Use AVRational instead. | 224 */ |
213 */ | |
214 typedef struct AVFrac { | 225 typedef struct AVFrac { |
215 int64_t val, num, den; | 226 int64_t val, num, den; |
216 } AVFrac; | 227 } AVFrac; |
217 | 228 |
218 /*************************************************/ | 229 /*************************************************/ |
219 /* input/output formats */ | 230 /* input/output formats */ |
220 | 231 |
221 struct AVCodecTag; | 232 struct AVCodecTag; |
222 | 233 |
223 struct AVFormatContext; | |
224 | |
225 /** This structure contains the data a format has to probe a file. */ | 234 /** This structure contains the data a format has to probe a file. */ |
226 typedef struct AVProbeData { | 235 typedef struct AVProbeData { |
227 const char *filename; | 236 const char *filename; |
228 unsigned char *buf; | 237 unsigned char *buf; |
229 int buf_size; | 238 int buf_size; |
230 } AVProbeData; | 239 } AVProbeData; |
231 | 240 |
232 #define AVPROBE_SCORE_MAX 100 ///< Maximum score, half of that is
used for file-extension-based detection. | 241 #define AVPROBE_SCORE_MAX 100 ///< maximum score, half of that is
used for file-extension-based detection |
233 #define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the en
d of the probe buffer | 242 #define AVPROBE_PADDING_SIZE 32 ///< extra allocated bytes at the en
d of the probe buffer |
234 | 243 |
235 typedef struct AVFormatParameters { | 244 typedef struct AVFormatParameters { |
236 AVRational time_base; | 245 AVRational time_base; |
237 int sample_rate; | 246 int sample_rate; |
238 int channels; | 247 int channels; |
239 int width; | 248 int width; |
240 int height; | 249 int height; |
241 enum PixelFormat pix_fmt; | 250 enum PixelFormat pix_fmt; |
242 int channel; /**< Used to select DV channel. */ | 251 int channel; /**< Used to select DV channel. */ |
(...skipping 14 matching lines...) Loading... |
257 //! Demuxer will use url_fopen, no opened file should be provided by the caller. | 266 //! Demuxer will use url_fopen, no opened file should be provided by the caller. |
258 #define AVFMT_NOFILE 0x0001 | 267 #define AVFMT_NOFILE 0x0001 |
259 #define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ | 268 #define AVFMT_NEEDNUMBER 0x0002 /**< Needs '%d' in filename. */ |
260 #define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ | 269 #define AVFMT_SHOW_IDS 0x0008 /**< Show format stream IDs numbers. */ |
261 #define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for | 270 #define AVFMT_RAWPICTURE 0x0020 /**< Format wants AVPicture structure for |
262 raw picture data. */ | 271 raw picture data. */ |
263 #define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ | 272 #define AVFMT_GLOBALHEADER 0x0040 /**< Format wants global header. */ |
264 #define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestam
ps. */ | 273 #define AVFMT_NOTIMESTAMPS 0x0080 /**< Format does not need / have any timestam
ps. */ |
265 #define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ | 274 #define AVFMT_GENERIC_INDEX 0x0100 /**< Use generic index building code. */ |
266 #define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities.
*/ | 275 #define AVFMT_TS_DISCONT 0x0200 /**< Format allows timestamp discontinuities.
*/ |
| 276 #define AVFMT_VARIABLE_FPS 0x0400 /**< Format allows variable fps. */ |
267 | 277 |
268 typedef struct AVOutputFormat { | 278 typedef struct AVOutputFormat { |
269 const char *name; | 279 const char *name; |
270 /** | 280 /** |
271 * Descriptive name for the format, meant to be more human-readable | 281 * Descriptive name for the format, meant to be more human-readable |
272 * than \p name. You \e should use the NULL_IF_CONFIG_SMALL() macro | 282 * than \p name. You \e should use the NULL_IF_CONFIG_SMALL() macro |
273 * to define it. | 283 * to define it. |
274 */ | 284 */ |
275 const char *long_name; | 285 const char *long_name; |
276 const char *mime_type; | 286 const char *mime_type; |
277 const char *extensions; /**< comma-separated filename extensions */ | 287 const char *extensions; /**< comma-separated filename extensions */ |
278 /** Size of private data so that it can be allocated in the wrapper. */ | 288 /** size of private data so that it can be allocated in the wrapper */ |
279 int priv_data_size; | 289 int priv_data_size; |
280 /* output support */ | 290 /* output support */ |
281 enum CodecID audio_codec; /**< default audio codec */ | 291 enum CodecID audio_codec; /**< default audio codec */ |
282 enum CodecID video_codec; /**< default video codec */ | 292 enum CodecID video_codec; /**< default video codec */ |
283 int (*write_header)(struct AVFormatContext *); | 293 int (*write_header)(struct AVFormatContext *); |
284 int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); | 294 int (*write_packet)(struct AVFormatContext *, AVPacket *pkt); |
285 int (*write_trailer)(struct AVFormatContext *); | 295 int (*write_trailer)(struct AVFormatContext *); |
286 /** can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_GLOBALHEADER */ | 296 /** can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER, AVFMT_GLOBALHEADER */ |
287 int flags; | 297 int flags; |
288 /** Currently only used to set pixel format if not YUV420P. */ | 298 /** Currently only used to set pixel format if not YUV420P. */ |
289 int (*set_parameters)(struct AVFormatContext *, AVFormatParameters *); | 299 int (*set_parameters)(struct AVFormatContext *, AVFormatParameters *); |
290 int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, | 300 int (*interleave_packet)(struct AVFormatContext *, AVPacket *out, |
291 AVPacket *in, int flush); | 301 AVPacket *in, int flush); |
292 | 302 |
293 /** | 303 /** |
294 * List of supported codec_id-codec_tag pairs, ordered by "better | 304 * List of supported codec_id-codec_tag pairs, ordered by "better |
295 * choice first". The arrays are all CODEC_ID_NONE terminated. | 305 * choice first". The arrays are all terminated by CODEC_ID_NONE. |
296 */ | 306 */ |
297 const struct AVCodecTag * const *codec_tag; | 307 const struct AVCodecTag * const *codec_tag; |
298 | 308 |
299 enum CodecID subtitle_codec; /**< default subtitle codec */ | 309 enum CodecID subtitle_codec; /**< default subtitle codec */ |
300 | 310 |
| 311 const AVMetadataConv *metadata_conv; |
| 312 |
301 /* private fields */ | 313 /* private fields */ |
302 struct AVOutputFormat *next; | 314 struct AVOutputFormat *next; |
303 } AVOutputFormat; | 315 } AVOutputFormat; |
304 | 316 |
305 typedef struct AVInputFormat { | 317 typedef struct AVInputFormat { |
306 const char *name; | 318 const char *name; |
307 /** | 319 /** |
308 * Descriptive name for the format, meant to be more human-readable | 320 * Descriptive name for the format, meant to be more human-readable |
309 * than \p name. You \e should use the NULL_IF_CONFIG_SMALL() macro | 321 * than \p name. You \e should use the NULL_IF_CONFIG_SMALL() macro |
310 * to define it. | 322 * to define it. |
311 */ | 323 */ |
312 const char *long_name; | 324 const char *long_name; |
313 /** Size of private data so that it can be allocated in the wrapper. */ | 325 /** Size of private data so that it can be allocated in the wrapper. */ |
314 int priv_data_size; | 326 int priv_data_size; |
315 /** | 327 /** |
316 * Tell if a given file has a chance of being parsed by this format. | 328 * Tell if a given file has a chance of being parsed as this format. |
317 * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes | 329 * The buffer provided is guaranteed to be AVPROBE_PADDING_SIZE bytes |
318 * big so you do not have to check for that unless you need more. | 330 * big so you do not have to check for that unless you need more. |
319 */ | 331 */ |
320 int (*read_probe)(AVProbeData *); | 332 int (*read_probe)(AVProbeData *); |
321 /** Read the format header and initialize the AVFormatContext | 333 /** Read the format header and initialize the AVFormatContext |
322 structure. Return 0 if OK. 'ap' if non-NULL contains | 334 structure. Return 0 if OK. 'ap' if non-NULL contains |
323 additional parameters. Only used in raw format right | 335 additional parameters. Only used in raw format right |
324 now. 'av_new_stream' should be called to create new streams. */ | 336 now. 'av_new_stream' should be called to create new streams. */ |
325 int (*read_header)(struct AVFormatContext *, | 337 int (*read_header)(struct AVFormatContext *, |
326 AVFormatParameters *ap); | 338 AVFormatParameters *ap); |
327 /** Read one packet and put it in 'pkt'. pts and flags are also | 339 /** Read one packet and put it in 'pkt'. pts and flags are also |
328 set. 'av_new_stream' can be called only if the flag | 340 set. 'av_new_stream' can be called only if the flag |
329 AVFMTCTX_NOHEADER is used. */ | 341 AVFMTCTX_NOHEADER is used. */ |
330 int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); | 342 int (*read_packet)(struct AVFormatContext *, AVPacket *pkt); |
331 /** Close the stream. The AVFormatContext and AVStreams are not | 343 /** Close the stream. The AVFormatContext and AVStreams are not |
332 freed by this function */ | 344 freed by this function */ |
333 int (*read_close)(struct AVFormatContext *); | 345 int (*read_close)(struct AVFormatContext *); |
| 346 |
| 347 #if LIBAVFORMAT_VERSION_MAJOR < 53 |
334 /** | 348 /** |
335 * Seek to a given timestamp relative to the frames in | 349 * Seek to a given timestamp relative to the frames in |
336 * stream component stream_index. | 350 * stream component stream_index. |
337 * @param stream_index must not be -1 | 351 * @param stream_index Must not be -1. |
338 * @param flags selects which direction should be preferred if no exact | 352 * @param flags Selects which direction should be preferred if no exact |
339 * match is available | 353 * match is available. |
340 * @return >= 0 on success (but not necessarily the new offset) | 354 * @return >= 0 on success (but not necessarily the new offset) |
341 */ | 355 */ |
342 int (*read_seek)(struct AVFormatContext *, | 356 int (*read_seek)(struct AVFormatContext *, |
343 int stream_index, int64_t timestamp, int flags); | 357 int stream_index, int64_t timestamp, int flags); |
| 358 #endif |
344 /** | 359 /** |
345 * Gets the next timestamp in stream[stream_index].time_base units. | 360 * Gets the next timestamp in stream[stream_index].time_base units. |
346 * @return the timestamp or AV_NOPTS_VALUE if an error occurred | 361 * @return the timestamp or AV_NOPTS_VALUE if an error occurred |
347 */ | 362 */ |
348 int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, | 363 int64_t (*read_timestamp)(struct AVFormatContext *s, int stream_index, |
349 int64_t *pos, int64_t pos_limit); | 364 int64_t *pos, int64_t pos_limit); |
350 /** Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER. */ | 365 /** Can use flags: AVFMT_NOFILE, AVFMT_NEEDNUMBER. */ |
351 int flags; | 366 int flags; |
352 /** If extensions are defined, then no probe is done. You should | 367 /** If extensions are defined, then no probe is done. You should |
353 usually not use extension format guessing because it is not | 368 usually not use extension format guessing because it is not |
354 reliable enough */ | 369 reliable enough */ |
355 const char *extensions; | 370 const char *extensions; |
356 /** General purpose read-only value that the format can use. */ | 371 /** General purpose read-only value that the format can use. */ |
357 int value; | 372 int value; |
358 | 373 |
359 /** Start/resume playing - only meaningful if using a network-based format | 374 /** Start/resume playing - only meaningful if using a network-based format |
360 (RTSP). */ | 375 (RTSP). */ |
361 int (*read_play)(struct AVFormatContext *); | 376 int (*read_play)(struct AVFormatContext *); |
362 | 377 |
363 /** Pause playing - only meaningful if using a network-based format | 378 /** Pause playing - only meaningful if using a network-based format |
364 (RTSP). */ | 379 (RTSP). */ |
365 int (*read_pause)(struct AVFormatContext *); | 380 int (*read_pause)(struct AVFormatContext *); |
366 | 381 |
367 const struct AVCodecTag * const *codec_tag; | 382 const struct AVCodecTag * const *codec_tag; |
368 | 383 |
| 384 /** |
| 385 * Seek to timestamp ts. |
| 386 * Seeking will be done so that the point from which all active streams |
| 387 * can be presented successfully will be closest to ts and within min/max_ts
. |
| 388 * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL
. |
| 389 */ |
| 390 int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_t
s, int64_t ts, int64_t max_ts, int flags); |
| 391 |
| 392 const AVMetadataConv *metadata_conv; |
| 393 |
369 /* private fields */ | 394 /* private fields */ |
370 struct AVInputFormat *next; | 395 struct AVInputFormat *next; |
371 } AVInputFormat; | 396 } AVInputFormat; |
372 | 397 |
373 enum AVStreamParseType { | 398 enum AVStreamParseType { |
374 AVSTREAM_PARSE_NONE, | 399 AVSTREAM_PARSE_NONE, |
375 AVSTREAM_PARSE_FULL, /**< full parsing and repack */ | 400 AVSTREAM_PARSE_FULL, /**< full parsing and repack */ |
376 AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ | 401 AVSTREAM_PARSE_HEADERS, /**< Only parse headers, do not repack. */ |
377 AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps
for frames not starting on a packet boundary */ | 402 AVSTREAM_PARSE_TIMESTAMPS, /**< full parsing and interpolation of timestamps
for frames not starting on a packet boundary */ |
378 }; | 403 }; |
(...skipping 19 matching lines...) Loading... |
398 * New fields can be added to the end with minor version bumps. | 423 * New fields can be added to the end with minor version bumps. |
399 * Removal, reordering and changes to existing fields require a major | 424 * Removal, reordering and changes to existing fields require a major |
400 * version bump. | 425 * version bump. |
401 * sizeof(AVStream) must not be used outside libav*. | 426 * sizeof(AVStream) must not be used outside libav*. |
402 */ | 427 */ |
403 typedef struct AVStream { | 428 typedef struct AVStream { |
404 int index; /**< stream index in AVFormatContext */ | 429 int index; /**< stream index in AVFormatContext */ |
405 int id; /**< format-specific stream ID */ | 430 int id; /**< format-specific stream ID */ |
406 AVCodecContext *codec; /**< codec context */ | 431 AVCodecContext *codec; /**< codec context */ |
407 /** | 432 /** |
408 * Real base frame rate of the stream. | 433 * Real base framerate of the stream. |
409 * This is the lowest frame rate with which all timestamps can be | 434 * This is the lowest framerate with which all timestamps can be |
410 * represented accurately (it is the least common multiple of all | 435 * represented accurately (it is the least common multiple of all |
411 * frame rates in the stream). Note, this value is just a guess! | 436 * framerates in the stream). Note, this value is just a guess! |
412 * For example if the time base is 1/90000 and all frames have either | 437 * For example, if the time base is 1/90000 and all frames have either |
413 * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. | 438 * approximately 3600 or 1800 timer ticks, then r_frame_rate will be 50/1. |
414 */ | 439 */ |
415 AVRational r_frame_rate; | 440 AVRational r_frame_rate; |
416 void *priv_data; | 441 void *priv_data; |
417 | 442 |
418 /* internal data used in av_find_stream_info() */ | 443 /* internal data used in av_find_stream_info() */ |
419 int64_t first_dts; | 444 int64_t first_dts; |
420 /** encoding: pts generation when outputting stream */ | 445 /** encoding: pts generation when outputting stream */ |
421 struct AVFrac pts; | 446 struct AVFrac pts; |
422 | 447 |
423 /** | 448 /** |
424 * This is the fundamental unit of time (in seconds) in terms | 449 * This is the fundamental unit of time (in seconds) in terms |
425 * of which frame timestamps are represented. For fixed-fps content, | 450 * of which frame timestamps are represented. For fixed-fps content, |
426 * time base should be 1/frame rate and timestamp increments should be 1. | 451 * time base should be 1/framerate and timestamp increments should be 1. |
427 */ | 452 */ |
428 AVRational time_base; | 453 AVRational time_base; |
429 int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ | 454 int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */ |
430 /* ffmpeg.c private use */ | 455 /* ffmpeg.c private use */ |
431 int stream_copy; /**< If set, just copy stream. */ | 456 int stream_copy; /**< If set, just copy stream. */ |
432 enum AVDiscard discard; ///< Selects which packets can be discarded at will
and do not need to be demuxed. | 457 enum AVDiscard discard; ///< Selects which packets can be discarded at will
and do not need to be demuxed. |
433 //FIXME move stuff to a flags field? | 458 //FIXME move stuff to a flags field? |
434 /** Quality, as it has been removed from AVCodecContext and put in AVVideoFr
ame. | 459 /** Quality, as it has been removed from AVCodecContext and put in AVVideoFr
ame. |
435 * MN: dunno if that is the right place for it */ | 460 * MN: dunno if that is the right place for it */ |
436 float quality; | 461 float quality; |
437 /** | 462 /** |
438 * Decoding: pts of the first frame of the stream, in stream time base. | 463 * Decoding: pts of the first frame of the stream, in stream time base. |
439 * Only set this if you are absolutely 100% sure that the value you set | 464 * Only set this if you are absolutely 100% sure that the value you set |
440 * it to really is the pts of the first frame. | 465 * it to really is the pts of the first frame. |
441 * This may be undefined (AV_NOPTS_VALUE). | 466 * This may be undefined (AV_NOPTS_VALUE). |
442 * @note The ASF header does NOT contain a correct start_time the ASF | 467 * @note The ASF header does NOT contain a correct start_time the ASF |
443 * demuxer must NOT set this. | 468 * demuxer must NOT set this. |
444 */ | 469 */ |
445 int64_t start_time; | 470 int64_t start_time; |
446 /** | 471 /** |
447 * Decoding: duration of the stream, in stream time base. | 472 * Decoding: duration of the stream, in stream time base. |
448 * If a source file does not specify a duration, but does specify | 473 * If a source file does not specify a duration, but does specify |
449 * a bitrate, this value will be estimated from bitrate and file size. | 474 * a bitrate, this value will be estimated from bitrate and file size. |
450 */ | 475 */ |
451 int64_t duration; | 476 int64_t duration; |
452 | 477 |
| 478 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
453 char language[4]; /** ISO 639 3-letter language code (empty string if undefi
ned) */ | 479 char language[4]; /** ISO 639 3-letter language code (empty string if undefi
ned) */ |
| 480 #endif |
454 | 481 |
455 /* av_read_frame() support */ | 482 /* av_read_frame() support */ |
456 enum AVStreamParseType need_parsing; | 483 enum AVStreamParseType need_parsing; |
457 struct AVCodecParserContext *parser; | 484 struct AVCodecParserContext *parser; |
458 | 485 |
459 int64_t cur_dts; | 486 int64_t cur_dts; |
460 int last_IP_duration; | 487 int last_IP_duration; |
461 int64_t last_IP_pts; | 488 int64_t last_IP_pts; |
462 /* av_seek_frame() support */ | 489 /* av_seek_frame() support */ |
463 AVIndexEntry *index_entries; /**< Only used if the format does not | 490 AVIndexEntry *index_entries; /**< Only used if the format does not |
464 support seeking natively. */ | 491 support seeking natively. */ |
465 int nb_index_entries; | 492 int nb_index_entries; |
466 unsigned int index_entries_allocated_size; | 493 unsigned int index_entries_allocated_size; |
467 | 494 |
468 int64_t nb_frames; ///< number of frames in this stream if k
nown or 0 | 495 int64_t nb_frames; ///< number of frames in this stream if k
nown or 0 |
469 | 496 |
470 #if LIBAVFORMAT_VERSION_INT < (53<<16) | 497 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
471 int64_t unused[4+1]; | 498 int64_t unused[4+1]; |
472 #endif | |
473 | 499 |
474 char *filename; /**< source filename of the stream */ | 500 char *filename; /**< source filename of the stream */ |
| 501 #endif |
475 | 502 |
476 int disposition; /**< AV_DISPOSITION_* bit field */ | 503 int disposition; /**< AV_DISPOSITION_* bit field */ |
477 | 504 |
478 AVProbeData probe_data; | 505 AVProbeData probe_data; |
479 #define MAX_REORDER_DELAY 16 | 506 #define MAX_REORDER_DELAY 16 |
480 int64_t pts_buffer[MAX_REORDER_DELAY+1]; | 507 int64_t pts_buffer[MAX_REORDER_DELAY+1]; |
481 | 508 |
482 /** | 509 /** |
483 * sample aspect ratio (0 if unknown) | 510 * sample aspect ratio (0 if unknown) |
484 * - encoding: Set by user. | 511 * - encoding: Set by user. |
485 * - decoding: Set by libavformat. | 512 * - decoding: Set by libavformat. |
486 */ | 513 */ |
487 AVRational sample_aspect_ratio; | 514 AVRational sample_aspect_ratio; |
488 | 515 |
489 AVMetadata *metadata; | 516 AVMetadata *metadata; |
| 517 |
| 518 /* av_read_frame() support */ |
| 519 const uint8_t *cur_ptr; |
| 520 int cur_len; |
| 521 AVPacket cur_pkt; |
| 522 |
| 523 // Timestamp generation support: |
| 524 /** |
| 525 * Timestamp corresponding to the last dts sync point. |
| 526 * |
| 527 * Initialized when AVCodecParserContext.dts_sync_point >= 0 and |
| 528 * a DTS is received from the underlying container. Otherwise set to |
| 529 * AV_NOPTS_VALUE by default. |
| 530 */ |
| 531 int64_t reference_dts; |
490 } AVStream; | 532 } AVStream; |
491 | 533 |
492 #define AV_PROGRAM_RUNNING 1 | 534 #define AV_PROGRAM_RUNNING 1 |
493 | 535 |
494 /** | 536 /** |
495 * New fields can be added to the end with minor version bumps. | 537 * New fields can be added to the end with minor version bumps. |
496 * Removal, reordering and changes to existing fields require a major | 538 * Removal, reordering and changes to existing fields require a major |
497 * version bump. | 539 * version bump. |
498 * sizeof(AVProgram) must not be used outside libav*. | 540 * sizeof(AVProgram) must not be used outside libav*. |
499 */ | 541 */ |
500 typedef struct AVProgram { | 542 typedef struct AVProgram { |
501 int id; | 543 int id; |
| 544 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
502 char *provider_name; ///< network name for DVB streams | 545 char *provider_name; ///< network name for DVB streams |
503 char *name; ///< service name for DVB streams | 546 char *name; ///< service name for DVB streams |
| 547 #endif |
504 int flags; | 548 int flags; |
505 enum AVDiscard discard; ///< selects which program to discard and whi
ch to feed to the caller | 549 enum AVDiscard discard; ///< selects which program to discard and whi
ch to feed to the caller |
506 unsigned int *stream_index; | 550 unsigned int *stream_index; |
507 unsigned int nb_stream_indexes; | 551 unsigned int nb_stream_indexes; |
508 AVMetadata *metadata; | 552 AVMetadata *metadata; |
509 } AVProgram; | 553 } AVProgram; |
510 | 554 |
511 #define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present | 555 #define AVFMTCTX_NOHEADER 0x0001 /**< signal that no header is present |
512 (streams are added dynamically) */ | 556 (streams are added dynamically) */ |
513 | 557 |
514 typedef struct AVChapter { | 558 typedef struct AVChapter { |
515 int id; ///< unique ID to identify the chapter | 559 int id; ///< unique ID to identify the chapter |
516 AVRational time_base; ///< time base in which the start/end timestamps are
specified | 560 AVRational time_base; ///< time base in which the start/end timestamps are
specified |
517 int64_t start, end; ///< chapter start/end time in time_base units | 561 int64_t start, end; ///< chapter start/end time in time_base units |
| 562 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
518 char *title; ///< chapter title | 563 char *title; ///< chapter title |
| 564 #endif |
519 AVMetadata *metadata; | 565 AVMetadata *metadata; |
520 } AVChapter; | 566 } AVChapter; |
521 | 567 |
522 #define MAX_STREAMS 20 | 568 #define MAX_STREAMS 20 |
523 | 569 |
524 /** | 570 /** |
525 * Format I/O context. | 571 * Format I/O context. |
526 * New fields can be added to the end with minor version bumps. | 572 * New fields can be added to the end with minor version bumps. |
527 * Removal, reordering and changes to existing fields require a major | 573 * Removal, reordering and changes to existing fields require a major |
528 * version bump. | 574 * version bump. |
529 * sizeof(AVFormatContext) must not be used outside libav*. | 575 * sizeof(AVFormatContext) must not be used outside libav*. |
530 */ | 576 */ |
531 typedef struct AVFormatContext { | 577 typedef struct AVFormatContext { |
532 const AVClass *av_class; /**< Set by av_alloc_format_context. */ | 578 const AVClass *av_class; /**< Set by avformat_alloc_context. */ |
533 /* Can only be iformat or oformat, not both at the same time. */ | 579 /* Can only be iformat or oformat, not both at the same time. */ |
534 struct AVInputFormat *iformat; | 580 struct AVInputFormat *iformat; |
535 struct AVOutputFormat *oformat; | 581 struct AVOutputFormat *oformat; |
536 void *priv_data; | 582 void *priv_data; |
537 ByteIOContext *pb; | 583 ByteIOContext *pb; |
538 unsigned int nb_streams; | 584 unsigned int nb_streams; |
539 AVStream *streams[MAX_STREAMS]; | 585 AVStream *streams[MAX_STREAMS]; |
540 char filename[1024]; /**< input or output filename */ | 586 char filename[1024]; /**< input or output filename */ |
541 /* stream info */ | 587 /* stream info */ |
542 int64_t timestamp; | 588 int64_t timestamp; |
| 589 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
543 char title[512]; | 590 char title[512]; |
544 char author[512]; | 591 char author[512]; |
545 char copyright[512]; | 592 char copyright[512]; |
546 char comment[512]; | 593 char comment[512]; |
547 char album[512]; | 594 char album[512]; |
548 int year; /**< ID3 year, 0 if none */ | 595 int year; /**< ID3 year, 0 if none */ |
549 int track; /**< track number, 0 if none */ | 596 int track; /**< track number, 0 if none */ |
550 char genre[32]; /**< ID3 genre */ | 597 char genre[32]; /**< ID3 genre */ |
| 598 #endif |
551 | 599 |
552 int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */ | 600 int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */ |
553 /* private data for pts handling (do not modify directly). */ | 601 /* private data for pts handling (do not modify directly). */ |
554 /** This buffer is only needed when packets were already buffered but | 602 /** This buffer is only needed when packets were already buffered but |
555 not decoded, for example to get the codec parameters in MPEG | 603 not decoded, for example to get the codec parameters in MPEG |
556 streams. */ | 604 streams. */ |
557 struct AVPacketList *packet_buffer; | 605 struct AVPacketList *packet_buffer; |
558 | 606 |
559 /** Decoding: position of the first frame of the component, in | 607 /** Decoding: position of the first frame of the component, in |
560 AV_TIME_BASE fractional seconds. NEVER set this value directly: | 608 AV_TIME_BASE fractional seconds. NEVER set this value directly: |
561 It is deduced from the AVStream values. */ | 609 It is deduced from the AVStream values. */ |
562 int64_t start_time; | 610 int64_t start_time; |
563 /** Decoding: duration of the stream, in AV_TIME_BASE fractional | 611 /** Decoding: duration of the stream, in AV_TIME_BASE fractional |
564 seconds. NEVER set this value directly: it is deduced from the | 612 seconds. NEVER set this value directly: it is deduced from the |
565 AVStream values. */ | 613 AVStream values. */ |
566 int64_t duration; | 614 int64_t duration; |
567 /** decoding: total file size, 0 if unknown */ | 615 /** decoding: total file size, 0 if unknown */ |
568 int64_t file_size; | 616 int64_t file_size; |
569 /** Decoding: total stream bitrate in bit/s, 0 if not | 617 /** Decoding: total stream bitrate in bit/s, 0 if not |
570 available. Never set it directly if the file_size and the | 618 available. Never set it directly if the file_size and the |
571 duration are known as ffmpeg can compute it automatically. */ | 619 duration are known as FFmpeg can compute it automatically. */ |
572 int bit_rate; | 620 int bit_rate; |
573 | 621 |
574 /* av_read_frame() support */ | 622 /* av_read_frame() support */ |
575 AVStream *cur_st; | 623 AVStream *cur_st; |
576 const uint8_t *cur_ptr; | 624 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
577 int cur_len; | 625 const uint8_t *cur_ptr_deprecated; |
578 AVPacket cur_pkt; | 626 int cur_len_deprecated; |
| 627 AVPacket cur_pkt_deprecated; |
| 628 #endif |
579 | 629 |
580 /* av_seek_frame() support */ | 630 /* av_seek_frame() support */ |
581 int64_t data_offset; /** offset of the first packet */ | 631 int64_t data_offset; /** offset of the first packet */ |
582 int index_built; | 632 int index_built; |
583 | 633 |
584 int mux_rate; | 634 int mux_rate; |
585 int packet_size; | 635 int packet_size; |
586 int preload; | 636 int preload; |
587 int max_delay; | 637 int max_delay; |
588 | 638 |
589 #define AVFMT_NOOUTPUTLOOP -1 | 639 #define AVFMT_NOOUTPUTLOOP -1 |
590 #define AVFMT_INFINITEOUTPUTLOOP 0 | 640 #define AVFMT_INFINITEOUTPUTLOOP 0 |
591 /** number of times to loop output in formats that support it */ | 641 /** number of times to loop output in formats that support it */ |
592 int loop_output; | 642 int loop_output; |
593 | 643 |
594 int flags; | 644 int flags; |
595 #define AVFMT_FLAG_GENPTS 0x0001 ///< Generate pts if missing even if it r
equires parsing future frames. | 645 #define AVFMT_FLAG_GENPTS 0x0001 ///< Generate missing pts even if it requ
ires parsing future frames. |
596 #define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. | 646 #define AVFMT_FLAG_IGNIDX 0x0002 ///< Ignore index. |
597 #define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets fr
om input. | 647 #define AVFMT_FLAG_NONBLOCK 0x0004 ///< Do not block when reading packets fr
om input. |
598 | 648 |
599 int loop_input; | 649 int loop_input; |
600 /** Decoding: size of data to probe; encoding: unused. */ | 650 /** decoding: size of data to probe; encoding: unused. */ |
601 unsigned int probesize; | 651 unsigned int probesize; |
602 | 652 |
603 /** | 653 /** |
604 * Maximum time (in AV_TIME_BASE units) during which the input should | 654 * Maximum time (in AV_TIME_BASE units) during which the input should |
605 * be analyzed in av_find_stream_info(). | 655 * be analyzed in av_find_stream_info(). |
606 */ | 656 */ |
607 int max_analyze_duration; | 657 int max_analyze_duration; |
608 | 658 |
609 const uint8_t *key; | 659 const uint8_t *key; |
610 int keylen; | 660 int keylen; |
(...skipping 11 matching lines...) Loading... |
622 * Demuxing: Set by user. | 672 * Demuxing: Set by user. |
623 */ | 673 */ |
624 enum CodecID audio_codec_id; | 674 enum CodecID audio_codec_id; |
625 /** | 675 /** |
626 * Forced subtitle codec_id. | 676 * Forced subtitle codec_id. |
627 * Demuxing: Set by user. | 677 * Demuxing: Set by user. |
628 */ | 678 */ |
629 enum CodecID subtitle_codec_id; | 679 enum CodecID subtitle_codec_id; |
630 | 680 |
631 /** | 681 /** |
632 * Maximum amount of memory in bytes to use per stream for the index. | 682 * Maximum amount of memory in bytes to use for the index of each stream. |
633 * If the needed index exceeds this size, entries will be discarded as | 683 * If the index exceeds this size, entries will be discarded as |
634 * needed to maintain a smaller size. This can lead to slower or less | 684 * needed to maintain a smaller size. This can lead to slower or less |
635 * accurate seeking (depends on demuxer). | 685 * accurate seeking (depends on demuxer). |
636 * Demuxers for which a full in-memory index is mandatory will ignore | 686 * Demuxers for which a full in-memory index is mandatory will ignore |
637 * this. | 687 * this. |
638 * muxing : unused | 688 * muxing : unused |
639 * demuxing: set by user | 689 * demuxing: set by user |
640 */ | 690 */ |
641 unsigned int max_index_size; | 691 unsigned int max_index_size; |
642 | 692 |
643 /** | 693 /** |
(...skipping 28 matching lines...) Loading... |
672 typedef struct AVPacketList { | 722 typedef struct AVPacketList { |
673 AVPacket pkt; | 723 AVPacket pkt; |
674 struct AVPacketList *next; | 724 struct AVPacketList *next; |
675 } AVPacketList; | 725 } AVPacketList; |
676 | 726 |
677 #if LIBAVFORMAT_VERSION_INT < (53<<16) | 727 #if LIBAVFORMAT_VERSION_INT < (53<<16) |
678 extern AVInputFormat *first_iformat; | 728 extern AVInputFormat *first_iformat; |
679 extern AVOutputFormat *first_oformat; | 729 extern AVOutputFormat *first_oformat; |
680 #endif | 730 #endif |
681 | 731 |
| 732 /** |
| 733 * If f is NULL, returns the first registered input format, |
| 734 * if f is non-NULL, returns the next registered input format after f |
| 735 * or NULL if f is the last one. |
| 736 */ |
682 AVInputFormat *av_iformat_next(AVInputFormat *f); | 737 AVInputFormat *av_iformat_next(AVInputFormat *f); |
| 738 |
| 739 /** |
| 740 * If f is NULL, returns the first registered output format, |
| 741 * if f is non-NULL, returns the next registered output format after f |
| 742 * or NULL if f is the last one. |
| 743 */ |
683 AVOutputFormat *av_oformat_next(AVOutputFormat *f); | 744 AVOutputFormat *av_oformat_next(AVOutputFormat *f); |
684 | 745 |
685 enum CodecID av_guess_image2_codec(const char *filename); | 746 enum CodecID av_guess_image2_codec(const char *filename); |
686 | 747 |
687 /* XXX: use automatic init with either ELF sections or C file parser */ | 748 /* XXX: Use automatic init with either ELF sections or C file parser */ |
688 /* modules */ | 749 /* modules. */ |
689 | 750 |
690 /* utils.c */ | 751 /* utils.c */ |
691 void av_register_input_format(AVInputFormat *format); | 752 void av_register_input_format(AVInputFormat *format); |
692 void av_register_output_format(AVOutputFormat *format); | 753 void av_register_output_format(AVOutputFormat *format); |
693 AVOutputFormat *guess_stream_format(const char *short_name, | 754 AVOutputFormat *guess_stream_format(const char *short_name, |
694 const char *filename, | 755 const char *filename, |
695 const char *mime_type); | 756 const char *mime_type); |
696 AVOutputFormat *guess_format(const char *short_name, | 757 AVOutputFormat *guess_format(const char *short_name, |
697 const char *filename, | 758 const char *filename, |
698 const char *mime_type); | 759 const char *mime_type); |
(...skipping 44 matching lines...) Loading... |
743 * | 804 * |
744 * @param avcl A pointer to an arbitrary struct of which the first field is a | 805 * @param avcl A pointer to an arbitrary struct of which the first field is a |
745 * pointer to an AVClass struct. | 806 * pointer to an AVClass struct. |
746 * @param level The importance level of the message, lower values signifying | 807 * @param level The importance level of the message, lower values signifying |
747 * higher importance. | 808 * higher importance. |
748 * @param pkt packet to dump | 809 * @param pkt packet to dump |
749 * @param dump_payload True if the payload must be displayed, too. | 810 * @param dump_payload True if the payload must be displayed, too. |
750 */ | 811 */ |
751 void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload); | 812 void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt, int dump_payload); |
752 | 813 |
| 814 /** |
| 815 * Initialize libavformat and register all the muxers, demuxers and |
| 816 * protocols. If you do not call this function, then you can select |
| 817 * exactly which formats you want to support. |
| 818 * |
| 819 * @see av_register_input_format() |
| 820 * @see av_register_output_format() |
| 821 * @see av_register_protocol() |
| 822 */ |
753 void av_register_all(void); | 823 void av_register_all(void); |
754 | 824 |
755 /** codec tag <-> codec id */ | 825 /** codec tag <-> codec id */ |
756 enum CodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int
tag); | 826 enum CodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int
tag); |
757 unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum CodecI
D id); | 827 unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum CodecI
D id); |
758 | 828 |
759 /* media file input */ | 829 /* media file input */ |
760 | 830 |
761 /** | 831 /** |
762 * Finds AVInputFormat based on the short name of the input format. | 832 * Finds AVInputFormat based on the short name of the input format. |
(...skipping 25 matching lines...) Loading... |
788 * @param fmt If non-NULL, force the file format to use. | 858 * @param fmt If non-NULL, force the file format to use. |
789 * @param buf_size optional buffer size (zero if default is OK) | 859 * @param buf_size optional buffer size (zero if default is OK) |
790 * @param ap Additional parameters needed when opening the file | 860 * @param ap Additional parameters needed when opening the file |
791 * (NULL if default). | 861 * (NULL if default). |
792 * @return 0 if OK, AVERROR_xxx otherwise | 862 * @return 0 if OK, AVERROR_xxx otherwise |
793 */ | 863 */ |
794 int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, | 864 int av_open_input_file(AVFormatContext **ic_ptr, const char *filename, |
795 AVInputFormat *fmt, | 865 AVInputFormat *fmt, |
796 int buf_size, | 866 int buf_size, |
797 AVFormatParameters *ap); | 867 AVFormatParameters *ap); |
| 868 |
| 869 #if LIBAVFORMAT_VERSION_MAJOR < 53 |
| 870 /** |
| 871 * @deprecated Use avformat_alloc_context() instead. |
| 872 */ |
| 873 attribute_deprecated AVFormatContext *av_alloc_format_context(void); |
| 874 #endif |
| 875 |
798 /** | 876 /** |
799 * Allocate an AVFormatContext. | 877 * Allocate an AVFormatContext. |
800 * Can be freed with av_free() but do not forget to free everything you | 878 * Can be freed with av_free() but do not forget to free everything you |
801 * explicitly allocated as well! | 879 * explicitly allocated as well! |
802 */ | 880 */ |
803 AVFormatContext *av_alloc_format_context(void); | 881 AVFormatContext *avformat_alloc_context(void); |
804 | 882 |
805 /** | 883 /** |
806 * Read packets of a media file to get stream information. This | 884 * Read packets of a media file to get stream information. This |
807 * is useful for file formats with no headers such as MPEG. This | 885 * is useful for file formats with no headers such as MPEG. This |
808 * function also computes the real frame rate in case of MPEG-2 repeat | 886 * function also computes the real framerate in case of MPEG-2 repeat |
809 * frame mode. | 887 * frame mode. |
810 * The logical file position is not changed by this function; | 888 * The logical file position is not changed by this function; |
811 * examined packets may be buffered for later processing. | 889 * examined packets may be buffered for later processing. |
812 * | 890 * |
813 * @param ic media file handle | 891 * @param ic media file handle |
814 * @return >=0 if OK, AVERROR_xxx on error | 892 * @return >=0 if OK, AVERROR_xxx on error |
815 * @todo Let the user decide somehow what information is needed so that | 893 * @todo Let the user decide somehow what information is needed so that |
816 * we do not waste time getting stuff the user does not need. | 894 * we do not waste time getting stuff the user does not need. |
817 */ | 895 */ |
818 int av_find_stream_info(AVFormatContext *ic); | 896 int av_find_stream_info(AVFormatContext *ic); |
(...skipping 15 matching lines...) Loading... |
834 * | 912 * |
835 * The returned packet is valid | 913 * The returned packet is valid |
836 * until the next av_read_frame() or until av_close_input_file() and | 914 * until the next av_read_frame() or until av_close_input_file() and |
837 * must be freed with av_free_packet. For video, the packet contains | 915 * must be freed with av_free_packet. For video, the packet contains |
838 * exactly one frame. For audio, it contains an integer number of | 916 * exactly one frame. For audio, it contains an integer number of |
839 * frames if each frame has a known fixed size (e.g. PCM or ADPCM | 917 * frames if each frame has a known fixed size (e.g. PCM or ADPCM |
840 * data). If the audio frames have a variable size (e.g. MPEG audio), | 918 * data). If the audio frames have a variable size (e.g. MPEG audio), |
841 * then it contains one frame. | 919 * then it contains one frame. |
842 * | 920 * |
843 * pkt->pts, pkt->dts and pkt->duration are always set to correct | 921 * pkt->pts, pkt->dts and pkt->duration are always set to correct |
844 * values in AVStream.timebase units (and guessed if the format cannot | 922 * values in AVStream.time_base units (and guessed if the format cannot |
845 * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format | 923 * provide them). pkt->pts can be AV_NOPTS_VALUE if the video format |
846 * has B-frames, so it is better to rely on pkt->dts if you do not | 924 * has B-frames, so it is better to rely on pkt->dts if you do not |
847 * decompress the payload. | 925 * decompress the payload. |
848 * | 926 * |
849 * @return 0 if OK, < 0 on error or end of file | 927 * @return 0 if OK, < 0 on error or end of file |
850 */ | 928 */ |
851 int av_read_frame(AVFormatContext *s, AVPacket *pkt); | 929 int av_read_frame(AVFormatContext *s, AVPacket *pkt); |
852 | 930 |
853 /** | 931 /** |
854 * Seek to the key frame at timestamp. | 932 * Seek to the keyframe at timestamp. |
855 * 'timestamp' in 'stream_index'. | 933 * 'timestamp' in 'stream_index'. |
856 * @param stream_index If stream_index is (-1), a default | 934 * @param stream_index If stream_index is (-1), a default |
857 * stream is selected, and timestamp is automatically converted | 935 * stream is selected, and timestamp is automatically converted |
858 * from AV_TIME_BASE units to the stream specific time_base. | 936 * from AV_TIME_BASE units to the stream specific time_base. |
859 * @param timestamp Timestamp in AVStream.time_base units | 937 * @param timestamp Timestamp in AVStream.time_base units |
860 * or, if no stream is specified, in AV_TIME_BASE units. | 938 * or, if no stream is specified, in AV_TIME_BASE units. |
861 * @param flags flags which select direction and seeking mode | 939 * @param flags flags which select direction and seeking mode |
862 * @return >= 0 on success | 940 * @return >= 0 on success |
863 */ | 941 */ |
864 int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, | 942 int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp, |
865 int flags); | 943 int flags); |
866 | 944 |
867 /** | 945 /** |
868 * Start playing a network based stream (e.g. RTSP stream) at the | 946 * Seek to timestamp ts. |
| 947 * Seeking will be done so that the point from which all active streams |
| 948 * can be presented successfully will be closest to ts and within min/max_ts. |
| 949 * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL. |
| 950 * |
| 951 * If flags contain AVSEEK_FLAG_BYTE, then all timestamps are in bytes and |
| 952 * are the file position (this may not be supported by all demuxers). |
| 953 * If flags contain AVSEEK_FLAG_FRAME, then all timestamps are in frames |
| 954 * in the stream with stream_index (this may not be supported by all demuxers). |
| 955 * Otherwise all timestamps are in units of the stream selected by stream_index |
| 956 * or if stream_index is -1, in AV_TIME_BASE units. |
| 957 * If flags contain AVSEEK_FLAG_ANY, then non-keyframes are treated as |
| 958 * keyframes (this may not be supported by all demuxers). |
| 959 * |
| 960 * @param stream_index index of the stream which is used as time base reference |
| 961 * @param min_ts smallest acceptable timestamp |
| 962 * @param ts target timestamp |
| 963 * @param max_ts largest acceptable timestamp |
| 964 * @param flags flags |
| 965 * @returns >=0 on success, error code otherwise |
| 966 * |
| 967 * @NOTE This is part of the new seek API which is still under construction. |
| 968 * Thus do not use this yet. It may change at any time, do not expect |
| 969 * ABI compatibility yet! |
| 970 */ |
| 971 int avformat_seek_file(AVFormatContext *s, int stream_index, int64_t min_ts, int
64_t ts, int64_t max_ts, int flags); |
| 972 |
| 973 /** |
| 974 * Start playing a network-based stream (e.g. RTSP stream) at the |
869 * current position. | 975 * current position. |
870 */ | 976 */ |
871 int av_read_play(AVFormatContext *s); | 977 int av_read_play(AVFormatContext *s); |
872 | 978 |
873 /** | 979 /** |
874 * Pause a network based stream (e.g. RTSP stream). | 980 * Pause a network-based stream (e.g. RTSP stream). |
875 * | 981 * |
876 * Use av_read_play() to resume it. | 982 * Use av_read_play() to resume it. |
877 */ | 983 */ |
878 int av_read_pause(AVFormatContext *s); | 984 int av_read_pause(AVFormatContext *s); |
879 | 985 |
880 /** | 986 /** |
881 * Free a AVFormatContext allocated by av_open_input_stream. | 987 * Free a AVFormatContext allocated by av_open_input_stream. |
882 * @param s context to free | 988 * @param s context to free |
883 */ | 989 */ |
884 void av_close_input_stream(AVFormatContext *s); | 990 void av_close_input_stream(AVFormatContext *s); |
(...skipping 57 matching lines...) Loading... |
942 * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond | 1048 * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond |
943 * to the timestamp which is <= the requested one, if backward | 1049 * to the timestamp which is <= the requested one, if backward |
944 * is 0, then it will be >= | 1050 * is 0, then it will be >= |
945 * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise | 1051 * if AVSEEK_FLAG_ANY seek to any frame, only keyframes otherwise |
946 * @return < 0 if no such timestamp could be found | 1052 * @return < 0 if no such timestamp could be found |
947 */ | 1053 */ |
948 int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); | 1054 int av_index_search_timestamp(AVStream *st, int64_t timestamp, int flags); |
949 | 1055 |
950 /** | 1056 /** |
951 * Ensures the index uses less memory than the maximum specified in | 1057 * Ensures the index uses less memory than the maximum specified in |
952 * AVFormatContext.max_index_size, by discarding entries if it grows | 1058 * AVFormatContext.max_index_size by discarding entries if it grows |
953 * too large. | 1059 * too large. |
954 * This function is not part of the public API and should only be called | 1060 * This function is not part of the public API and should only be called |
955 * by demuxers. | 1061 * by demuxers. |
956 */ | 1062 */ |
957 void ff_reduce_index(AVFormatContext *s, int stream_index); | 1063 void ff_reduce_index(AVFormatContext *s, int stream_index); |
958 | 1064 |
959 /** | 1065 /** |
960 * Add an index entry into a sorted list. Update the entry if the list | 1066 * Add an index entry into a sorted list. Update the entry if the list |
961 * already contains it. | 1067 * already contains it. |
962 * | 1068 * |
(...skipping 60 matching lines...) Loading... |
1023 * @param pkt The packet, which contains the stream_index, buf/buf_size, | 1129 * @param pkt The packet, which contains the stream_index, buf/buf_size, |
1024 dts/pts, ... | 1130 dts/pts, ... |
1025 * @return < 0 on error, = 0 if OK, 1 if end of stream wanted | 1131 * @return < 0 on error, = 0 if OK, 1 if end of stream wanted |
1026 */ | 1132 */ |
1027 int av_write_frame(AVFormatContext *s, AVPacket *pkt); | 1133 int av_write_frame(AVFormatContext *s, AVPacket *pkt); |
1028 | 1134 |
1029 /** | 1135 /** |
1030 * Writes a packet to an output media file ensuring correct interleaving. | 1136 * Writes a packet to an output media file ensuring correct interleaving. |
1031 * | 1137 * |
1032 * The packet must contain one audio or video frame. | 1138 * The packet must contain one audio or video frame. |
1033 * If the packets are already correctly interleaved the application should | 1139 * If the packets are already correctly interleaved, the application should |
1034 * call av_write_frame() instead as it is slightly faster. It is also important | 1140 * call av_write_frame() instead as it is slightly faster. It is also important |
1035 * to keep in mind that completely non-interleaved input will need huge amounts | 1141 * to keep in mind that completely non-interleaved input will need huge amounts |
1036 * of memory to interleave with this, so it is preferable to interleave at the | 1142 * of memory to interleave with this, so it is preferable to interleave at the |
1037 * demuxer level. | 1143 * demuxer level. |
1038 * | 1144 * |
1039 * @param s media file handle | 1145 * @param s media file handle |
1040 * @param pkt The packet, which contains the stream_index, buf/buf_size, | 1146 * @param pkt The packet, which contains the stream_index, buf/buf_size, |
1041 dts/pts, ... | 1147 dts/pts, ... |
1042 * @return < 0 on error, = 0 if OK, 1 if end of stream wanted | 1148 * @return < 0 on error, = 0 if OK, 1 if end of stream wanted |
1043 */ | 1149 */ |
1044 int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); | 1150 int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt); |
1045 | 1151 |
1046 /** | 1152 /** |
1047 * Interleave a packet per dts in an output media file. | 1153 * Interleave a packet per dts in an output media file. |
1048 * | 1154 * |
1049 * Packets with pkt->destruct == av_destruct_packet will be freed inside this | 1155 * Packets with pkt->destruct == av_destruct_packet will be freed inside this |
1050 * function, so they cannot be used after it, note calling av_free_packet() | 1156 * function, so they cannot be used after it. Note that calling av_free_packet() |
1051 * on them is still safe. | 1157 * on them is still safe. |
1052 * | 1158 * |
1053 * @param s media file handle | 1159 * @param s media file handle |
1054 * @param out the interleaved packet will be output here | 1160 * @param out the interleaved packet will be output here |
1055 * @param in the input packet | 1161 * @param in the input packet |
1056 * @param flush 1 if no further packets are available as input and all | 1162 * @param flush 1 if no further packets are available as input and all |
1057 * remaining packets should be output | 1163 * remaining packets should be output |
1058 * @return 1 if a packet was output, 0 if no packet could be output, | 1164 * @return 1 if a packet was output, 0 if no packet could be output, |
1059 * < 0 if an error occurred | 1165 * < 0 if an error occurred |
1060 */ | 1166 */ |
(...skipping 18 matching lines...) Loading... |
1079 | 1185 |
1080 #if LIBAVFORMAT_VERSION_MAJOR < 53 | 1186 #if LIBAVFORMAT_VERSION_MAJOR < 53 |
1081 /** | 1187 /** |
1082 * Parses width and height out of string str. | 1188 * Parses width and height out of string str. |
1083 * @deprecated Use av_parse_video_frame_size instead. | 1189 * @deprecated Use av_parse_video_frame_size instead. |
1084 */ | 1190 */ |
1085 attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr, | 1191 attribute_deprecated int parse_image_size(int *width_ptr, int *height_ptr, |
1086 const char *str); | 1192 const char *str); |
1087 | 1193 |
1088 /** | 1194 /** |
1089 * Converts frame rate from string to a fraction. | 1195 * Converts framerate from a string to a fraction. |
1090 * @deprecated Use av_parse_video_frame_rate instead. | 1196 * @deprecated Use av_parse_video_frame_rate instead. |
1091 */ | 1197 */ |
1092 attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base, | 1198 attribute_deprecated int parse_frame_rate(int *frame_rate, int *frame_rate_base, |
1093 const char *arg); | 1199 const char *arg); |
1094 #endif | 1200 #endif |
1095 | 1201 |
1096 /** | 1202 /** |
1097 * Parses \p datestr and returns a corresponding number of microseconds. | 1203 * Parses \p datestr and returns a corresponding number of microseconds. |
1098 * @param datestr String representing a date or a duration. | 1204 * @param datestr String representing a date or a duration. |
1099 * - If a date the syntax is: | 1205 * - If a date the syntax is: |
(...skipping 20 matching lines...) Loading... |
1120 * date. | 1226 * date. |
1121 */ | 1227 */ |
1122 int64_t parse_date(const char *datestr, int duration); | 1228 int64_t parse_date(const char *datestr, int duration); |
1123 | 1229 |
1124 /** Gets the current time in microseconds. */ | 1230 /** Gets the current time in microseconds. */ |
1125 int64_t av_gettime(void); | 1231 int64_t av_gettime(void); |
1126 | 1232 |
1127 /* ffm-specific for ffserver */ | 1233 /* ffm-specific for ffserver */ |
1128 #define FFM_PACKET_SIZE 4096 | 1234 #define FFM_PACKET_SIZE 4096 |
1129 int64_t ffm_read_write_index(int fd); | 1235 int64_t ffm_read_write_index(int fd); |
1130 void ffm_write_write_index(int fd, int64_t pos); | 1236 int ffm_write_write_index(int fd, int64_t pos); |
1131 void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size); | 1237 void ffm_set_write_index(AVFormatContext *s, int64_t pos, int64_t file_size); |
1132 | 1238 |
1133 /** | 1239 /** |
1134 * Attempts to find a specific tag in a URL. | 1240 * Attempts to find a specific tag in a URL. |
1135 * | 1241 * |
1136 * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. | 1242 * syntax: '?tag1=val1&tag2=val2...'. Little URL decoding is done. |
1137 * Return 1 if found. | 1243 * Return 1 if found. |
1138 */ | 1244 */ |
1139 int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); | 1245 int find_info_tag(char *arg, int arg_size, const char *tag1, const char *info); |
1140 | 1246 |
1141 /** | 1247 /** |
1142 * Returns in 'buf' the path with '%d' replaced by number. | 1248 * Returns in 'buf' the path with '%d' replaced by a number. |
1143 * | 1249 * |
1144 * Also handles the '%0nd' format where 'n' is the total number | 1250 * Also handles the '%0nd' format where 'n' is the total number |
1145 * of digits and '%%'. | 1251 * of digits and '%%'. |
1146 * | 1252 * |
1147 * @param buf destination buffer | 1253 * @param buf destination buffer |
1148 * @param buf_size destination buffer size | 1254 * @param buf_size destination buffer size |
1149 * @param path numbered sequence string | 1255 * @param path numbered sequence string |
1150 * @param number frame number | 1256 * @param number frame number |
1151 * @return 0 if OK, -1 on format error | 1257 * @return 0 if OK, -1 on format error |
1152 */ | 1258 */ |
(...skipping 19 matching lines...) Loading... |
1172 * @param n_files number of AVCodecContexts contained in ac | 1278 * @param n_files number of AVCodecContexts contained in ac |
1173 * @param buff buffer where the SDP will be stored (must be allocated by | 1279 * @param buff buffer where the SDP will be stored (must be allocated by |
1174 * the caller) | 1280 * the caller) |
1175 * @param size the size of the buffer | 1281 * @param size the size of the buffer |
1176 * @return 0 if OK, AVERROR_xxx on error | 1282 * @return 0 if OK, AVERROR_xxx on error |
1177 */ | 1283 */ |
1178 int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size); | 1284 int avf_sdp_create(AVFormatContext *ac[], int n_files, char *buff, int size); |
1179 | 1285 |
1180 #ifdef HAVE_AV_CONFIG_H | 1286 #ifdef HAVE_AV_CONFIG_H |
1181 | 1287 |
1182 void ff_dynarray_add(unsigned long **tab_ptr, int *nb_ptr, unsigned long elem); | 1288 void ff_dynarray_add(intptr_t **tab_ptr, int *nb_ptr, intptr_t elem); |
1183 | 1289 |
1184 #ifdef __GNUC__ | 1290 #ifdef __GNUC__ |
1185 #define dynarray_add(tab, nb_ptr, elem)\ | 1291 #define dynarray_add(tab, nb_ptr, elem)\ |
1186 do {\ | 1292 do {\ |
1187 __typeof__(tab) _tab = (tab);\ | 1293 __typeof__(tab) _tab = (tab);\ |
1188 __typeof__(elem) _elem = (elem);\ | 1294 __typeof__(elem) _elem = (elem);\ |
1189 (void)sizeof(**_tab == _elem); /* check that types are compatible */\ | 1295 (void)sizeof(**_tab == _elem); /* check that types are compatible */\ |
1190 ff_dynarray_add((unsigned long **)_tab, nb_ptr, (unsigned long)_elem);\ | 1296 ff_dynarray_add((intptr_t **)_tab, nb_ptr, (intptr_t)_elem);\ |
1191 } while(0) | 1297 } while(0) |
1192 #else | 1298 #else |
1193 #define dynarray_add(tab, nb_ptr, elem)\ | 1299 #define dynarray_add(tab, nb_ptr, elem)\ |
1194 do {\ | 1300 do {\ |
1195 ff_dynarray_add((unsigned long **)(tab), nb_ptr, (unsigned long)(elem));\ | 1301 ff_dynarray_add((intptr_t **)(tab), nb_ptr, (intptr_t)(elem));\ |
1196 } while(0) | 1302 } while(0) |
1197 #endif | 1303 #endif |
1198 | 1304 |
1199 time_t mktimegm(struct tm *tm); | 1305 time_t mktimegm(struct tm *tm); |
1200 struct tm *brktimegm(time_t secs, struct tm *tm); | 1306 struct tm *brktimegm(time_t secs, struct tm *tm); |
1201 const char *small_strptime(const char *p, const char *fmt, | 1307 const char *small_strptime(const char *p, const char *fmt, |
1202 struct tm *dt); | 1308 struct tm *dt); |
1203 | 1309 |
1204 struct in_addr; | 1310 struct in_addr; |
1205 int resolve_host(struct in_addr *sin_addr, const char *hostname); | 1311 int resolve_host(struct in_addr *sin_addr, const char *hostname); |
1206 | 1312 |
1207 void url_split(char *proto, int proto_size, | 1313 void url_split(char *proto, int proto_size, |
1208 char *authorization, int authorization_size, | 1314 char *authorization, int authorization_size, |
1209 char *hostname, int hostname_size, | 1315 char *hostname, int hostname_size, |
1210 int *port_ptr, | 1316 int *port_ptr, |
1211 char *path, int path_size, | 1317 char *path, int path_size, |
1212 const char *url); | 1318 const char *url); |
1213 | 1319 |
1214 int match_ext(const char *filename, const char *extensions); | 1320 int match_ext(const char *filename, const char *extensions); |
1215 | 1321 |
1216 #endif /* HAVE_AV_CONFIG_H */ | 1322 #endif /* HAVE_AV_CONFIG_H */ |
1217 | 1323 |
1218 #endif /* AVFORMAT_AVFORMAT_H */ | 1324 #endif /* AVFORMAT_AVFORMAT_H */ |
OLD | NEW |