annotate avio.h @ 3044:410abc272c3b libavformat

Read match time delta in the frame header. We do not do anything with it as lavf does not really support it yet.
author michael
date Wed, 13 Feb 2008 20:17:28 +0000
parents 7ad207078047
children e38d5357f0d0
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
1306
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
1 /*
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
2 * unbuffered io for ffmpeg system
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
3 * copyright (c) 2001 Fabrice Bellard
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
4 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1306
diff changeset
5 * This file is part of FFmpeg.
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1306
diff changeset
6 *
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1306
diff changeset
7 * FFmpeg is free software; you can redistribute it and/or
1306
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
8 * modify it under the terms of the GNU Lesser General Public
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
9 * License as published by the Free Software Foundation; either
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1306
diff changeset
10 * version 2.1 of the License, or (at your option) any later version.
1306
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
11 *
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1306
diff changeset
12 * FFmpeg is distributed in the hope that it will be useful,
1306
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
13 * but WITHOUT ANY WARRANTY; without even the implied warranty of
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
15 * Lesser General Public License for more details.
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
16 *
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
17 * You should have received a copy of the GNU Lesser General Public
1358
0899bfe4105c Change license headers to say 'FFmpeg' instead of 'this program/this library'
diego
parents: 1306
diff changeset
18 * License along with FFmpeg; if not, write to the Free Software
1306
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
19 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
8bf9be9bb107 Add official LGPL license headers to the files that were missing them.
diego
parents: 1176
diff changeset
20 */
2620
792383dd085e Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 2598
diff changeset
21 #ifndef FFMPEG_AVIO_H
792383dd085e Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 2598
diff changeset
22 #define FFMPEG_AVIO_H
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
23
2171
a6d6b2b19341 include all prerequisites in header files
mru
parents: 2165
diff changeset
24 #include <stdint.h>
a6d6b2b19341 include all prerequisites in header files
mru
parents: 2165
diff changeset
25
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
26 /* output byte stream handling */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
27
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
28 typedef int64_t offset_t;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
29
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
30 /* unbuffered I/O */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
31
2849
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
32 /**
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
33 * URL Context.
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
34 * New fields can be added to the end with minor version bumps.
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
35 * Removal, reordering and changes to existing fields require a major
2849
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
36 * version bump.
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
37 * sizeof(URLContext) must not be used outside libav*.
2849
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
38 */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
39 struct URLContext {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
40 struct URLProtocol *prot;
885
da1d5db0ce5c COSMETICS: Remove all trailing whitespace.
diego
parents: 823
diff changeset
41 int flags;
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
42 int is_streamed; /**< true if streamed (no seek possible), default = false */
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
43 int max_packet_size; /**< if non zero, the stream is packetized with this max packet size */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
44 void *priv_data;
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
45 char *filename; /**< specified filename */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
46 };
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
47
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
48 typedef struct URLContext URLContext;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
49
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
50 typedef struct URLPollEntry {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
51 URLContext *handle;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
52 int events;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
53 int revents;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
54 } URLPollEntry;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
55
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
56 #define URL_RDONLY 0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
57 #define URL_WRONLY 1
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
58 #define URL_RDWR 2
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
59
177
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
60 typedef int URLInterruptCB(void);
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
61
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
62 int url_open(URLContext **h, const char *filename, int flags);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
63 int url_read(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
64 int url_write(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
65 offset_t url_seek(URLContext *h, offset_t pos, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
66 int url_close(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
67 int url_exist(const char *filename);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
68 offset_t url_filesize(URLContext *h);
1875
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
69
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
70 /**
1875
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
71 * Return the maximum packet size associated to packetized file
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
72 * handle. If the file is not packetized (stream like HTTP or file on
1875
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
73 * disk), then 0 is returned.
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
74 *
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
75 * @param h file handle
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
76 * @return maximum packet size in bytes
84ed710a9adc Move avio.h's url_get_max_packet_size() comment from source to header file.
takis
parents: 1874
diff changeset
77 */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
78 int url_get_max_packet_size(URLContext *h);
19
81e87c8de3dc added url_get_filename()
bellard
parents: 0
diff changeset
79 void url_get_filename(URLContext *h, char *buf, int buf_size);
81e87c8de3dc added url_get_filename()
bellard
parents: 0
diff changeset
80
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
81 /**
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
82 * The callback is called in blocking functions to test regulary if
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
83 * asynchronous interruption is needed. AVERROR(EINTR) is returned
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
84 * in this case by the interrupted function. 'NULL' means no interrupt
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
85 * callback is given.
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
86 */
177
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
87 void url_set_interrupt_cb(URLInterruptCB *interrupt_cb);
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
88
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
89 /* not implemented */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
90 int url_poll(URLPollEntry *poll_table, int n, int timeout);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
91
2839
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
92 /**
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
93 * Pause and resume playing - only meaningful if using a network streaming
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
94 * protocol (e.g. MMS).
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
95 * @param pause 1 for pause, 0 for resume
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
96 */
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
97 int av_url_read_pause(URLContext *h, int pause);
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
98
2778
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
99 /**
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
100 * Seek to a given timestamp relative to some component stream.
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
101 * Only meaningful if using a network streaming protocol (e.g. MMS.).
2778
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
102 * @param stream_index The stream index that the timestamp is relative to.
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
103 * If stream_index is (-1) the timestamp should be in AV_TIME_BASE
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
104 * units from the beginning of the presentation.
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
105 * If a stream_index >= 0 is used and the protocol does not support
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
106 * seeking based on component streams, the call will fail with ENOTSUP.
2852
5f2ec0e202b0 Fix Doxygen function parameter name.
diego
parents: 2851
diff changeset
107 * @param timestamp timestamp in AVStream.time_base units
2778
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
108 * or if there is no stream specified then in AV_TIME_BASE units.
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
109 * @param flags Optional combination of AVSEEK_FLAG_BACKWARD, AVSEEK_FLAG_BYTE
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
110 * and AVSEEK_FLAG_ANY. The protocol may silently ignore
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
111 * AVSEEK_FLAG_BACKWARD and AVSEEK_FLAG_ANY, but AVSEEK_FLAG_BYTE will
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
112 * fail with ENOTSUP if used and not supported.
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
113 * @return >= 0 on success
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
114 * @see AVInputFormat::read_seek
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
115 */
2840
f51675f78402 Make recently added and still unused read_seek functions return offset_t.
michael
parents: 2839
diff changeset
116 offset_t av_url_read_seek(URLContext *h,
2778
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
117 int stream_index, int64_t timestamp, int flags);
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
118
1614
72b0e694b2b7 AVSEEK_SIZE doxy
michael
parents: 1612
diff changeset
119 /**
2165
eac986610f47 misc typo fixes
diego
parents: 1876
diff changeset
120 * Passing this as the "whence" parameter to a seek function causes it to
eac986610f47 misc typo fixes
diego
parents: 1876
diff changeset
121 * return the filesize without seeking anywhere. Supporting this is optional.
eac986610f47 misc typo fixes
diego
parents: 1876
diff changeset
122 * If it is not supported then the seek function will return <0.
1614
72b0e694b2b7 AVSEEK_SIZE doxy
michael
parents: 1612
diff changeset
123 */
1612
a6eaa0762191 seekless filesize retrieving support in 7 lines of code, also doesnt break compatibility
michael
parents: 1358
diff changeset
124 #define AVSEEK_SIZE 0x10000
a6eaa0762191 seekless filesize retrieving support in 7 lines of code, also doesnt break compatibility
michael
parents: 1358
diff changeset
125
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
126 typedef struct URLProtocol {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
127 const char *name;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
128 int (*url_open)(URLContext *h, const char *filename, int flags);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
129 int (*url_read)(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
130 int (*url_write)(URLContext *h, unsigned char *buf, int size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
131 offset_t (*url_seek)(URLContext *h, offset_t pos, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
132 int (*url_close)(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
133 struct URLProtocol *next;
2839
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
134 int (*url_read_pause)(URLContext *h, int pause);
2840
f51675f78402 Make recently added and still unused read_seek functions return offset_t.
michael
parents: 2839
diff changeset
135 offset_t (*url_read_seek)(URLContext *h,
2778
50e2307414ee Extend URLProtocol with new function pointers and api functions for
andoma
parents: 2771
diff changeset
136 int stream_index, int64_t timestamp, int flags);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
137 } URLProtocol;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
138
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
139 extern URLProtocol *first_protocol;
177
16c4e43f34e5 added primitive aborting system
bellard
parents: 65
diff changeset
140 extern URLInterruptCB *url_interrupt_cb;
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
141
2812
173b5cb7efde av_*_next() API for libavformat
michael
parents: 2783
diff changeset
142 URLProtocol *av_protocol_next(URLProtocol *p);
173b5cb7efde av_*_next() API for libavformat
michael
parents: 2783
diff changeset
143
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
144 int register_protocol(URLProtocol *protocol);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
145
2849
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
146 /**
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
147 * Bytestream IO Context.
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
148 * New fields can be added to the end with minor version bumps.
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
149 * Removal, reordering and changes to existing fields require a major
2849
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
150 * version bump.
2851
979a885a7686 comment typo fixes
diego
parents: 2850
diff changeset
151 * sizeof(ByteIOContext) must not be used outside libav*.
2849
0182bdddc45e Document ByteIOContext and URLContext change rules.
michael
parents: 2840
diff changeset
152 */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
153 typedef struct {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
154 unsigned char *buffer;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
155 int buffer_size;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
156 unsigned char *buf_ptr, *buf_end;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
157 void *opaque;
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
158 int (*read_packet)(void *opaque, uint8_t *buf, int buf_size);
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
159 int (*write_packet)(void *opaque, uint8_t *buf, int buf_size);
778
4fbe04f998bf Fix url_fsize for large files patch by (Wolfram Gloger: wmglo, dent med uni-muenchen de)
michael
parents: 764
diff changeset
160 offset_t (*seek)(void *opaque, offset_t offset, int whence);
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
161 offset_t pos; /**< position in the file of the current buffer */
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
162 int must_flush; /**< true if the next seek should flush */
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
163 int eof_reached; /**< true if eof reached */
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
164 int write_flag; /**< true if open for writing */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
165 int is_streamed;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
166 int max_packet_size;
418
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
167 unsigned long checksum;
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
168 unsigned char *checksum_ptr;
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
169 unsigned long (*update_checksum)(unsigned long checksum, const uint8_t *buf, unsigned int size);
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
170 int error; ///< contains the error code or 0 if no error happened
2839
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
171 int (*read_pause)(void *opaque, int pause);
2840
f51675f78402 Make recently added and still unused read_seek functions return offset_t.
michael
parents: 2839
diff changeset
172 offset_t (*read_seek)(void *opaque,
2783
1a9db30c1d1c Extend ByteIOContext and add the buffered IO functions:
andoma
parents: 2778
diff changeset
173 int stream_index, int64_t timestamp, int flags);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
174 } ByteIOContext;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
175
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
176 int init_put_byte(ByteIOContext *s,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
177 unsigned char *buffer,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
178 int buffer_size,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
179 int write_flag,
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
180 void *opaque,
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
181 int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
182 int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
778
4fbe04f998bf Fix url_fsize for large files patch by (Wolfram Gloger: wmglo, dent med uni-muenchen de)
michael
parents: 764
diff changeset
183 offset_t (*seek)(void *opaque, offset_t offset, int whence));
2853
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
184 ByteIOContext *av_alloc_put_byte(
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
185 unsigned char *buffer,
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
186 int buffer_size,
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
187 int write_flag,
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
188 void *opaque,
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
189 int (*read_packet)(void *opaque, uint8_t *buf, int buf_size),
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
190 int (*write_packet)(void *opaque, uint8_t *buf, int buf_size),
7ad207078047 Add a av_alloc_put_byte function.
reimar
parents: 2852
diff changeset
191 offset_t (*seek)(void *opaque, offset_t offset, int whence));
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
192
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
193 void put_byte(ByteIOContext *s, int b);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
194 void put_buffer(ByteIOContext *s, const unsigned char *buf, int size);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
195 void put_le64(ByteIOContext *s, uint64_t val);
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
196 void put_be64(ByteIOContext *s, uint64_t val);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
197 void put_le32(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
198 void put_be32(ByteIOContext *s, unsigned int val);
937
a887adfe9dc5 add a Creative VOC (de)muxer
aurel
parents: 885
diff changeset
199 void put_le24(ByteIOContext *s, unsigned int val);
822
2614d3c1f415 kill duplicated get/put_be24()
michael
parents: 778
diff changeset
200 void put_be24(ByteIOContext *s, unsigned int val);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
201 void put_le16(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
202 void put_be16(ByteIOContext *s, unsigned int val);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
203 void put_tag(ByteIOContext *s, const char *tag);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
204
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
205 void put_strz(ByteIOContext *s, const char *buf);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
206
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
207 offset_t url_fseek(ByteIOContext *s, offset_t offset, int whence);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
208 void url_fskip(ByteIOContext *s, offset_t offset);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
209 offset_t url_ftell(ByteIOContext *s);
764
cdb845a57ae4 drop most url_fileno() calls (allows to use ByteIOContext directly in caller apps instead of URLProtocol)
aurel
parents: 554
diff changeset
210 offset_t url_fsize(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
211 int url_feof(ByteIOContext *s);
554
e1f17fcfb92c write error handling
michael
parents: 418
diff changeset
212 int url_ferror(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
213
2839
b51319dd86e5 Merge recently added and still unused play and pause functions.
michael
parents: 2834
diff changeset
214 int av_url_read_fpause(ByteIOContext *h, int pause);
2840
f51675f78402 Make recently added and still unused read_seek functions return offset_t.
michael
parents: 2839
diff changeset
215 offset_t av_url_read_fseek(ByteIOContext *h,
2783
1a9db30c1d1c Extend ByteIOContext and add the buffered IO functions:
andoma
parents: 2778
diff changeset
216 int stream_index, int64_t timestamp, int flags);
1a9db30c1d1c Extend ByteIOContext and add the buffered IO functions:
andoma
parents: 2778
diff changeset
217
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
218 #define URL_EOF (-1)
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
219 /** @note return URL_EOF (-1) if EOF */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
220 int url_fgetc(ByteIOContext *s);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
221
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
222 /** @warning currently size is limited */
206
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
223 #ifdef __GNUC__
265
786e8286ea4a Patch for attribute(printf) by (Michel Bardiaux <mbardiaux at peaktime dot be>)
michaelni
parents: 206
diff changeset
224 int url_fprintf(ByteIOContext *s, const char *fmt, ...) __attribute__ ((__format__ (__printf__, 2, 3)));
206
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
225 #else
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
226 int url_fprintf(ByteIOContext *s, const char *fmt, ...);
3a493a2e5bba libavformat/avio.h compilation problem in VisualC++ by (lethean at realtime dot ssu dot ac dot kr)
michaelni
parents: 177
diff changeset
227 #endif
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
228
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
229 /** @note unlike fgets, the EOL character is not returned and a whole
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
230 line is parsed. return NULL if first char read was EOF */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
231 char *url_fgets(ByteIOContext *s, char *buf, int buf_size);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
232
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
233 void put_flush_packet(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
234
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
235 int get_buffer(ByteIOContext *s, unsigned char *buf, int size);
389
e14fcd57ad2f decode latency patch by (Leon van Stuivenberg <l dot vanstuivenberg at chello dot nl>)
michael
parents: 265
diff changeset
236 int get_partial_buffer(ByteIOContext *s, unsigned char *buf, int size);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
237
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
238 /** @note return 0 if EOF, so you cannot use it if EOF handling is
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
239 necessary */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
240 int get_byte(ByteIOContext *s);
937
a887adfe9dc5 add a Creative VOC (de)muxer
aurel
parents: 885
diff changeset
241 unsigned int get_le24(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
242 unsigned int get_le32(ByteIOContext *s);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
243 uint64_t get_le64(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
244 unsigned int get_le16(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
245
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
246 char *get_strz(ByteIOContext *s, char *buf, int maxlen);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
247 unsigned int get_be16(ByteIOContext *s);
822
2614d3c1f415 kill duplicated get/put_be24()
michael
parents: 778
diff changeset
248 unsigned int get_be24(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
249 unsigned int get_be32(ByteIOContext *s);
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
250 uint64_t get_be64(ByteIOContext *s);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
251
2700
dfcac0102c34 Add ff_ prefix to get_v()
kostya
parents: 2699
diff changeset
252 uint64_t ff_get_v(ByteIOContext *bc);
2699
49c540731133 Make get_v() available to the other demuxers
kostya
parents: 2683
diff changeset
253
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
254 static inline int url_is_streamed(ByteIOContext *s)
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
255 {
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
256 return s->is_streamed;
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
257 }
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
258
2582
1f9d02d072a7 Documentation fix for url_f(d)open()
benoit
parents: 2542
diff changeset
259 /** @note when opened as read/write, the buffers are only used for
1f9d02d072a7 Documentation fix for url_f(d)open()
benoit
parents: 2542
diff changeset
260 writing */
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2748
diff changeset
261 int url_fdopen(ByteIOContext **s, URLContext *h);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
262
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
263 /** @warning must be called before any I/O */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
264 int url_setbufsize(ByteIOContext *s, int buf_size);
2598
fc7f8ee4700b Add functionality to set the direction of a ByteIOContext buffer.
benoit
parents: 2582
diff changeset
265 /** Reset the buffer for reading or writing.
fc7f8ee4700b Add functionality to set the direction of a ByteIOContext buffer.
benoit
parents: 2582
diff changeset
266 * @note Will drop any data currently in the buffer without transmitting it.
fc7f8ee4700b Add functionality to set the direction of a ByteIOContext buffer.
benoit
parents: 2582
diff changeset
267 * @param flags URL_RDONLY to set up the buffer for reading, or URL_WRONLY
fc7f8ee4700b Add functionality to set the direction of a ByteIOContext buffer.
benoit
parents: 2582
diff changeset
268 * to set up the buffer for writing. */
fc7f8ee4700b Add functionality to set the direction of a ByteIOContext buffer.
benoit
parents: 2582
diff changeset
269 int url_resetbuf(ByteIOContext *s, int flags);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
270
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
271 /** @note when opened as read/write, the buffers are only used for
2582
1f9d02d072a7 Documentation fix for url_f(d)open()
benoit
parents: 2542
diff changeset
272 writing */
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2748
diff changeset
273 int url_fopen(ByteIOContext **s, const char *filename, int flags);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
274 int url_fclose(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
275 URLContext *url_fileno(ByteIOContext *s);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
276
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
277 /**
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
278 * Return the maximum packet size associated to packetized buffered file
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
279 * handle. If the file is not packetized (stream like http or file on
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
280 * disk), then 0 is returned.
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
281 *
2747
2291661e6097 Fix Doxygen parameter name
takis
parents: 2700
diff changeset
282 * @param s buffered file handle
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
283 * @return maximum packet size in bytes
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
284 */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
285 int url_fget_max_packet_size(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
286
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2748
diff changeset
287 int url_open_buf(ByteIOContext **s, uint8_t *buf, int buf_size, int flags);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
288
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
289 /** return the written or read size */
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
290 int url_close_buf(ByteIOContext *s);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
291
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
292 /**
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
293 * Open a write only memory stream.
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
294 *
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
295 * @param s new IO context
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
296 * @return zero if no error.
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
297 */
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2748
diff changeset
298 int url_open_dyn_buf(ByteIOContext **s);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
299
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
300 /**
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
301 * Open a write only packetized memory stream with a maximum packet
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
302 * size of 'max_packet_size'. The stream is stored in a memory buffer
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
303 * with a big endian 4 byte header giving the packet size in bytes.
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
304 *
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
305 * @param s new IO context
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
306 * @param max_packet_size maximum packet size (must be > 0)
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
307 * @return zero if no error.
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
308 */
2771
d52c718e83f9 Use dynamically allocated ByteIOContext in AVFormatContext
andoma
parents: 2748
diff changeset
309 int url_open_dyn_packet_buf(ByteIOContext **s, int max_packet_size);
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
310
1876
247fdf49ffb8 Convert all the comment sections into Doxygen compatible comments, same for
takis
parents: 1875
diff changeset
311 /**
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
312 * Return the written size and a pointer to the buffer. The buffer
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
313 * must be freed with av_free().
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
314 * @param s IO context
2748
fdeb230c8ced Fix Doxygen parameter name
takis
parents: 2747
diff changeset
315 * @param pbuffer pointer to a byte buffer
1874
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
316 * @return the length of the byte buffer
3328f652d741 Move aviobuf.c comments to avio.h. By moving the aviobuf.c comments to avio.h,
takis
parents: 1787
diff changeset
317 */
65
a58a8a53eb46 * UINTX -> uintx_t INTX -> intx_t
kabi
parents: 19
diff changeset
318 int url_close_dyn_buf(ByteIOContext *s, uint8_t **pbuffer);
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
319
2683
153d6efc05b8 rename av_crc04C11DB7_update to ff_crc04C11DB7_update and move it to aviobuf.c so it can be reused by other (de)muxers
bcoudurier
parents: 2620
diff changeset
320 unsigned long ff_crc04C11DB7_update(unsigned long checksum, const uint8_t *buf, unsigned int len);
418
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
321 unsigned long get_checksum(ByteIOContext *s);
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
322 void init_checksum(ByteIOContext *s, unsigned long (*update_checksum)(unsigned long c, const uint8_t *p, unsigned int len), unsigned long checksum);
41da3366d341 checksuming for nut & nice checksum API for libavformat
michael
parents: 389
diff changeset
323
0
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
324 /* udp.c */
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
325 int udp_set_remote_url(URLContext *h, const char *uri);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
326 int udp_get_local_port(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
327 int udp_get_file_handle(URLContext *h);
05318cf2e886 renamed libav to libavformat
bellard
parents:
diff changeset
328
2620
792383dd085e Add FFMPEG_ prefix to all multiple inclusion guards.
diego
parents: 2598
diff changeset
329 #endif /* FFMPEG_AVIO_H */