FFmpeg
url.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 /**
20  * @file
21  * unbuffered private I/O API
22  */
23 
24 #ifndef AVFORMAT_URL_H
25 #define AVFORMAT_URL_H
26 
27 #include "avio.h"
28 
29 #include "libavutil/dict.h"
30 #include "libavutil/log.h"
31 
32 #define URL_PROTOCOL_FLAG_NESTED_SCHEME 1 /*< The protocol name can be the first part of a nested protocol scheme */
33 #define URL_PROTOCOL_FLAG_NETWORK 2 /*< The protocol uses network */
34 
35 extern const AVClass ffurl_context_class;
36 
37 typedef struct URLContext {
38  const AVClass *av_class; /**< information for av_log(). Set by url_open(). */
39  const struct URLProtocol *prot;
40  void *priv_data;
41  char *filename; /**< specified URL */
42  int flags;
43  int max_packet_size; /**< if non zero, the stream is packetized with this max packet size */
44  int is_streamed; /**< true if streamed (no seek possible), default = false */
47  int64_t rw_timeout; /**< maximum time to wait for (network) read/write operation completion, in mcs */
48  const char *protocol_whitelist;
49  const char *protocol_blacklist;
50  int min_packet_size; /**< if non zero, the stream is packetized with this min packet size */
51 } URLContext;
52 
53 typedef struct URLProtocol {
54  const char *name;
55  int (*url_open)( URLContext *h, const char *url, int flags);
56  /**
57  * This callback is to be used by protocols which open further nested
58  * protocols. options are then to be passed to ffurl_open_whitelist()
59  * or ffurl_connect() for those nested protocols.
60  */
61  int (*url_open2)(URLContext *h, const char *url, int flags, AVDictionary **options);
64 
65  /**
66  * Read data from the protocol.
67  * If data is immediately available (even less than size), EOF is
68  * reached or an error occurs (including EINTR), return immediately.
69  * Otherwise:
70  * In non-blocking mode, return AVERROR(EAGAIN) immediately.
71  * In blocking mode, wait for data/EOF/error with a short timeout (0.1s),
72  * and return AVERROR(EAGAIN) on timeout.
73  * Checking interrupt_callback, looping on EINTR and EAGAIN and until
74  * enough data has been read is left to the calling function; see
75  * retry_transfer_wrapper in avio.c.
76  */
77  int (*url_read)( URLContext *h, unsigned char *buf, int size);
78  int (*url_write)(URLContext *h, const unsigned char *buf, int size);
79  int64_t (*url_seek)( URLContext *h, int64_t pos, int whence);
81  int (*url_read_pause)(URLContext *h, int pause);
82  int64_t (*url_read_seek)(URLContext *h, int stream_index,
83  int64_t timestamp, int flags);
86  int *numhandles);
91  int flags;
97  int (*url_move)(URLContext *h_src, URLContext *h_dst);
98  const char *default_whitelist;
99 } URLProtocol;
100 
101 /**
102  * Create a URLContext for accessing to the resource indicated by
103  * url, but do not initiate the connection yet.
104  *
105  * @param puc pointer to the location where, in case of success, the
106  * function puts the pointer to the created URLContext
107  * @param flags flags which control how the resource indicated by url
108  * is to be opened
109  * @param int_cb interrupt callback to use for the URLContext, may be
110  * NULL
111  * @return >= 0 in case of success, a negative value corresponding to an
112  * AVERROR code in case of failure
113  */
114 int ffurl_alloc(URLContext **puc, const char *filename, int flags,
115  const AVIOInterruptCB *int_cb);
116 
117 /**
118  * Connect an URLContext that has been allocated by ffurl_alloc
119  *
120  * @param options A dictionary filled with options for nested protocols,
121  * i.e. it will be passed to url_open2() for protocols implementing it.
122  * This parameter will be destroyed and replaced with a dict containing options
123  * that were not found. May be NULL.
124  */
126 
127 /**
128  * Create an URLContext for accessing to the resource indicated by
129  * url, and open it.
130  *
131  * @param puc pointer to the location where, in case of success, the
132  * function puts the pointer to the created URLContext
133  * @param flags flags which control how the resource indicated by url
134  * is to be opened
135  * @param int_cb interrupt callback to use for the URLContext, may be
136  * NULL
137  * @param options A dictionary filled with protocol-private options. On return
138  * this parameter will be destroyed and replaced with a dict containing options
139  * that were not found. May be NULL.
140  * @param parent An enclosing URLContext, whose generic options should
141  * be applied to this URLContext as well.
142  * @return >= 0 in case of success, a negative value corresponding to an
143  * AVERROR code in case of failure
144  */
145 int ffurl_open_whitelist(URLContext **puc, const char *filename, int flags,
147  const char *whitelist, const char* blacklist,
148  URLContext *parent);
149 
150 /**
151  * Accept an URLContext c on an URLContext s
152  *
153  * @param s server context
154  * @param c client context, must be unallocated.
155  * @return >= 0 on success, ff_neterrno() on failure.
156  */
158 
159 /**
160  * Perform one step of the protocol handshake to accept a new client.
161  * See avio_handshake() for details.
162  * Implementations should try to return decreasing values.
163  * If the protocol uses an underlying protocol, the underlying handshake is
164  * usually the first step, and the return value can be:
165  * (largest value for this protocol) + (return value from other protocol)
166  *
167  * @param c the client context
168  * @return >= 0 on success or a negative value corresponding
169  * to an AVERROR code on failure
170  */
172 
173 int ffurl_read2(void *urlcontext, uint8_t *buf, int size);
174 /**
175  * Read up to size bytes from the resource accessed by h, and store
176  * the read bytes in buf.
177  *
178  * @return The number of bytes actually read, or a negative value
179  * corresponding to an AVERROR code in case of error. A value of zero
180  * indicates that it is not possible to read more from the accessed
181  * resource (except if the value of the size argument is also zero).
182  */
183 static inline int ffurl_read(URLContext *h, uint8_t *buf, int size)
184 {
185  return ffurl_read2(h, buf, size);
186 }
187 
188 /**
189  * Read as many bytes as possible (up to size), calling the
190  * read function multiple times if necessary.
191  * This makes special short-read handling in applications
192  * unnecessary, if the return value is < size then it is
193  * certain there was either an error or the end of file was reached.
194  */
195 int ffurl_read_complete(URLContext *h, unsigned char *buf, int size);
196 
197 #if FF_API_AVIO_WRITE_NONCONST
198 int ffurl_write2(void *urlcontext, uint8_t *buf, int size);
199 #else
200 int ffurl_write2(void *urlcontext, const uint8_t *buf, int size);
201 #endif
202 /**
203  * Write size bytes from buf to the resource accessed by h.
204  *
205  * @return the number of bytes actually written, or a negative value
206  * corresponding to an AVERROR code in case of failure
207  */
208 static inline int ffurl_write(URLContext *h, const uint8_t *buf, int size)
209 {
210 #if FF_API_AVIO_WRITE_NONCONST
211  return ffurl_write2(h, (uint8_t*)buf, size);
212 #else
213  return ffurl_write2(h, buf, size);
214 #endif
215 }
216 
217 int64_t ffurl_seek2(void *urlcontext, int64_t pos, int whence);
218 /**
219  * Change the position that will be used by the next read/write
220  * operation on the resource accessed by h.
221  *
222  * @param pos specifies the new position to set
223  * @param whence specifies how pos should be interpreted, it must be
224  * one of SEEK_SET (seek from the beginning), SEEK_CUR (seek from the
225  * current position), SEEK_END (seek from the end), or AVSEEK_SIZE
226  * (return the filesize of the requested resource, pos is ignored).
227  * @return a negative value corresponding to an AVERROR code in case
228  * of failure, or the resulting file position, measured in bytes from
229  * the beginning of the file. You can use this feature together with
230  * SEEK_CUR to read the current file position.
231  */
232 static inline int64_t ffurl_seek(URLContext *h, int64_t pos, int whence)
233 {
234  return ffurl_seek2(h, pos, whence);
235 }
236 
237 /**
238  * Close the resource accessed by the URLContext h, and free the
239  * memory used by it. Also set the URLContext pointer to NULL.
240  *
241  * @return a negative value if an error condition occurred, 0
242  * otherwise
243  */
244 int ffurl_closep(URLContext **h);
245 int ffurl_close(URLContext *h);
246 
247 /**
248  * Return the filesize of the resource accessed by h, AVERROR(ENOSYS)
249  * if the operation is not supported by h, or another negative value
250  * corresponding to an AVERROR error code in case of failure.
251  */
252 int64_t ffurl_size(URLContext *h);
253 
254 /**
255  * Return the file descriptor associated with this URL. For RTP, this
256  * will return only the RTP file descriptor, not the RTCP file descriptor.
257  *
258  * @return the file descriptor associated with this URL, or <0 on error.
259  */
261 
262 /**
263  * Return the file descriptors associated with this URL.
264  *
265  * @return 0 on success or <0 on error.
266  */
267 int ffurl_get_multi_file_handle(URLContext *h, int **handles, int *numhandles);
268 
269 /**
270  * Return the current short seek threshold value for this URL.
271  *
272  * @return threshold (>0) on success or <=0 on error.
273  */
274 int ffurl_get_short_seek(void *urlcontext);
275 
276 /**
277  * Signal the URLContext that we are done reading or writing the stream.
278  *
279  * @param h pointer to the resource
280  * @param flags flags which control how the resource indicated by url
281  * is to be shutdown
282  *
283  * @return a negative value if an error condition occurred, 0
284  * otherwise
285  */
286 int ffurl_shutdown(URLContext *h, int flags);
287 
288 /**
289  * Check if the user has requested to interrupt a blocking function
290  * associated with cb.
291  */
293 
294 /* udp.c */
295 int ff_udp_set_remote_url(URLContext *h, const char *uri);
297 
298 /**
299  * Assemble a URL string from components. This is the reverse operation
300  * of av_url_split.
301  *
302  * Note, this requires networking to be initialized, so the caller must
303  * ensure ff_network_init has been called.
304  *
305  * @see av_url_split
306  *
307  * @param str the buffer to fill with the url
308  * @param size the size of the str buffer
309  * @param proto the protocol identifier, if null, the separator
310  * after the identifier is left out, too
311  * @param authorization an optional authorization string, may be null.
312  * An empty string is treated the same as a null string.
313  * @param hostname the host name string
314  * @param port the port number, left out from the string if negative
315  * @param fmt a generic format string for everything to add after the
316  * host/port, may be null
317  * @return the number of characters written to the destination buffer
318  */
319 int ff_url_join(char *str, int size, const char *proto,
320  const char *authorization, const char *hostname,
321  int port, const char *fmt, ...) av_printf_format(7, 8);
322 
323 /**
324  * Convert a relative url into an absolute url, given a base url.
325  *
326  * @param buf the buffer where output absolute url is written
327  * @param size the size of buf
328  * @param base the base url, may be equal to buf.
329  * @param rel the new url, which is interpreted relative to base
330  * @param handle_dos_paths handle DOS paths for file or unspecified protocol
331  */
332 int ff_make_absolute_url2(char *buf, int size, const char *base,
333  const char *rel, int handle_dos_paths);
334 
335 /**
336  * Convert a relative url into an absolute url, given a base url.
337  *
338  * Same as ff_make_absolute_url2 with handle_dos_paths being equal to
339  * HAVE_DOS_PATHS config variable.
340  */
341 int ff_make_absolute_url(char *buf, int size, const char *base,
342  const char *rel);
343 
344 /**
345  * Allocate directory entry with default values.
346  *
347  * @return entry or NULL on error
348  */
350 
351 const AVClass *ff_urlcontext_child_class_iterate(void **iter);
352 
353 /**
354  * Construct a list of protocols matching a given whitelist and/or blacklist.
355  *
356  * @param whitelist a comma-separated list of allowed protocol names or NULL. If
357  * this is a non-empty string, only protocols in this list will
358  * be included.
359  * @param blacklist a comma-separated list of forbidden protocol names or NULL.
360  * If this is a non-empty string, all protocols in this list
361  * will be excluded.
362  *
363  * @return a NULL-terminated array of matching protocols. The array must be
364  * freed by the caller.
365  */
366 const URLProtocol **ffurl_get_protocols(const char *whitelist,
367  const char *blacklist);
368 
369 typedef struct URLComponents {
370  const char *url; /**< whole URL, for reference */
371  const char *scheme; /**< possibly including lavf-specific options */
372  const char *authority; /**< "//" if it is a real URL */
373  const char *userinfo; /**< including final '@' if present */
374  const char *host;
375  const char *port; /**< including initial ':' if present */
376  const char *path;
377  const char *query; /**< including initial '?' if present */
378  const char *fragment; /**< including initial '#' if present */
379  const char *end;
380 } URLComponents;
381 
382 #define url_component_end_scheme authority
383 #define url_component_end_authority userinfo
384 #define url_component_end_userinfo host
385 #define url_component_end_host port
386 #define url_component_end_port path
387 #define url_component_end_path query
388 #define url_component_end_query fragment
389 #define url_component_end_fragment end
390 #define url_component_end_authority_full path
391 
392 #define URL_COMPONENT_HAVE(uc, component) \
393  ((uc).url_component_end_##component > (uc).component)
394 
395 /**
396  * Parse an URL to find the components.
397  *
398  * Each component runs until the start of the next component,
399  * possibly including a mandatory delimiter.
400  *
401  * @param uc structure to fill with pointers to the components.
402  * @param url URL to parse.
403  * @param end end of the URL, or NULL to parse to the end of string.
404  *
405  * @return >= 0 for success or an AVERROR code, especially if the URL is
406  * malformed.
407  */
408 int ff_url_decompose(URLComponents *uc, const char *url, const char *end);
409 
410 /**
411  * Move or rename a resource.
412  *
413  * @note url_src and url_dst should share the same protocol and authority.
414  *
415  * @param url_src url to resource to be moved
416  * @param url_dst new url to resource if the operation succeeded
417  * @return >=0 on success or negative on error.
418  */
419 int ffurl_move(const char *url_src, const char *url_dst);
420 
421 /**
422  * Delete a resource.
423  *
424  * @param url resource to be deleted.
425  * @return >=0 on success or negative on error.
426  */
427 int ffurl_delete(const char *url);
428 
429 #endif /* AVFORMAT_URL_H */
URLProtocol::url_get_multi_file_handle
int(* url_get_multi_file_handle)(URLContext *h, int **handles, int *numhandles)
Definition: url.h:85
ffurl_seek
static int64_t ffurl_seek(URLContext *h, int64_t pos, int whence)
Change the position that will be used by the next read/write operation on the resource accessed by h.
Definition: url.h:232
ffurl_closep
int ffurl_closep(URLContext **h)
Close the resource accessed by the URLContext h, and free the memory used by it.
Definition: avio.c:439
URLProtocol::url_get_file_handle
int(* url_get_file_handle)(URLContext *h)
Definition: url.h:84
ffurl_seek2
int64_t ffurl_seek2(void *urlcontext, int64_t pos, int whence)
Definition: avio.c:428
URLContext::filename
char * filename
specified URL
Definition: url.h:41
URLProtocol::url_read
int(* url_read)(URLContext *h, unsigned char *buf, int size)
Read data from the protocol.
Definition: url.h:77
cb
static double cb(void *priv, double x, double y)
Definition: vf_geq.c:241
URLComponents::url
const char * url
whole URL, for reference
Definition: url.h:370
URLProtocol::url_close_dir
int(* url_close_dir)(URLContext *h)
Definition: url.h:95
ffurl_read2
int ffurl_read2(void *urlcontext, uint8_t *buf, int size)
Definition: avio.c:395
ffurl_size
int64_t ffurl_size(URLContext *h)
Return the filesize of the resource accessed by h, AVERROR(ENOSYS) if the operation is not supported ...
Definition: avio.c:612
ffurl_write
static int ffurl_write(URLContext *h, const uint8_t *buf, int size)
Write size bytes from buf to the resource accessed by h.
Definition: url.h:208
URLComponents
Definition: url.h:369
ffurl_connect
int ffurl_connect(URLContext *uc, AVDictionary **options)
Connect an URLContext that has been allocated by ffurl_alloc.
Definition: avio.c:160
ff_make_absolute_url
int ff_make_absolute_url(char *buf, int size, const char *base, const char *rel)
Convert a relative url into an absolute url, given a base url.
Definition: url.c:321
URLContext::max_packet_size
int max_packet_size
if non zero, the stream is packetized with this max packet size
Definition: url.h:43
URLProtocol::url_delete
int(* url_delete)(URLContext *h)
Definition: url.h:96
URLComponents::path
const char * path
Definition: url.h:376
ffurl_get_multi_file_handle
int ffurl_get_multi_file_handle(URLContext *h, int **handles, int *numhandles)
Return the file descriptors associated with this URL.
Definition: avio.c:634
base
uint8_t base
Definition: vp3data.h:128
ffurl_accept
int ffurl_accept(URLContext *s, URLContext **c)
Accept an URLContext c on an URLContext s.
Definition: avio.c:220
AVDictionary
Definition: dict.c:34
URLContext::min_packet_size
int min_packet_size
if non zero, the stream is packetized with this min packet size
Definition: url.h:50
URLProtocol
Definition: url.h:53
URLComponents::fragment
const char * fragment
including initial '#' if present
Definition: url.h:378
AVIOInterruptCB
Callback for checking whether to abort blocking functions.
Definition: avio.h:59
URLContext::is_connected
int is_connected
Definition: url.h:45
ffurl_delete
int ffurl_delete(const char *url)
Delete a resource.
Definition: avio.c:516
ffurl_shutdown
int ffurl_shutdown(URLContext *h, int flags)
Signal the URLContext that we are done reading or writing the stream.
Definition: avio.c:660
ff_alloc_dir_entry
AVIODirEntry * ff_alloc_dir_entry(void)
Allocate directory entry with default values.
Definition: url.c:327
URLProtocol::url_read_pause
int(* url_read_pause)(URLContext *h, int pause)
Definition: url.h:81
URLProtocol::url_open
int(* url_open)(URLContext *h, const char *url, int flags)
Definition: url.h:55
URLProtocol::url_accept
int(* url_accept)(URLContext *s, URLContext **c)
Definition: url.h:62
URLContext::priv_data
void * priv_data
Definition: url.h:40
URLProtocol::flags
int flags
Definition: url.h:91
mask
static const uint16_t mask[17]
Definition: lzw.c:38
URLProtocol::url_close
int(* url_close)(URLContext *h)
Definition: url.h:80
s
#define s(width, name)
Definition: cbs_vp9.c:198
URLContext::flags
int flags
Definition: url.h:42
URLComponents::query
const char * query
including initial '?' if present
Definition: url.h:377
AVClass
Describe the class of an AVClass context structure.
Definition: log.h:66
URLContext::protocol_whitelist
const char * protocol_whitelist
Definition: url.h:48
ffurl_get_protocols
const URLProtocol ** ffurl_get_protocols(const char *whitelist, const char *blacklist)
Construct a list of protocols matching a given whitelist and/or blacklist.
Definition: protocols.c:123
URLContext::protocol_blacklist
const char * protocol_blacklist
Definition: url.h:49
URLComponents::authority
const char * authority
"//" if it is a real URL
Definition: url.h:372
URLComponents::end
const char * end
Definition: url.h:379
av_printf_format
#define av_printf_format(fmtpos, attrpos)
Definition: attributes.h:161
ff_make_absolute_url2
int int ff_make_absolute_url2(char *buf, int size, const char *base, const char *rel, int handle_dos_paths)
Convert a relative url into an absolute url, given a base url.
Definition: url.c:195
c
Undefined Behavior In the C some operations are like signed integer dereferencing freed accessing outside allocated Undefined Behavior must not occur in a C it is not safe even if the output of undefined operations is unused The unsafety may seem nit picking but Optimizing compilers have in fact optimized code on the assumption that no undefined Behavior occurs Optimizing code based on wrong assumptions can and has in some cases lead to effects beyond the output of computations The signed integer overflow problem in speed critical code Code which is highly optimized and works with signed integers sometimes has the problem that often the output of the computation does not c
Definition: undefined.txt:32
ffurl_read_complete
int ffurl_read_complete(URLContext *h, unsigned char *buf, int size)
Read as many bytes as possible (up to size), calling the read function multiple times if necessary.
Definition: avio.c:404
ffurl_get_file_handle
int ffurl_get_file_handle(URLContext *h)
Return the file descriptor associated with this URL.
Definition: avio.c:627
options
const OptionDef options[]
URLComponents::host
const char * host
Definition: url.h:374
URLProtocol::priv_data_class
const AVClass * priv_data_class
Definition: url.h:89
ffurl_alloc
int ffurl_alloc(URLContext **puc, const char *filename, int flags, const AVIOInterruptCB *int_cb)
Create a URLContext for accessing to the resource indicated by url, but do not initiate the connectio...
Definition: avio.c:287
size
int size
Definition: twinvq_data.h:10344
AVIODirEntry
Describes single entry of the directory.
Definition: avio.h:87
avio.h
URLProtocol::name
const char * name
Definition: url.h:54
URLProtocol::default_whitelist
const char * default_whitelist
Definition: url.h:98
URLContext::rw_timeout
int64_t rw_timeout
maximum time to wait for (network) read/write operation completion, in mcs
Definition: url.h:47
URLProtocol::url_seek
int64_t(* url_seek)(URLContext *h, int64_t pos, int whence)
Definition: url.h:79
ffurl_get_short_seek
int ffurl_get_short_seek(void *urlcontext)
Return the current short seek threshold value for this URL.
Definition: avio.c:651
URLContext
Definition: url.h:37
log.h
ffurl_handshake
int ffurl_handshake(URLContext *c)
Perform one step of the protocol handshake to accept a new client.
Definition: avio.c:228
URLContext::prot
const struct URLProtocol * prot
Definition: url.h:39
URLProtocol::url_handshake
int(* url_handshake)(URLContext *c)
Definition: url.h:63
URLProtocol::url_open_dir
int(* url_open_dir)(URLContext *h)
Definition: url.h:93
int_cb
const AVIOInterruptCB int_cb
Definition: ffmpeg.c:346
URLComponents::port
const char * port
including initial ':' if present
Definition: url.h:375
ffurl_move
int ffurl_move(const char *url_src, const char *url_dst)
Move or rename a resource.
Definition: avio.c:494
ffurl_close
int ffurl_close(URLContext *h)
Definition: avio.c:462
URLComponents::userinfo
const char * userinfo
including final '@' if present
Definition: url.h:373
URLContext::interrupt_callback
AVIOInterruptCB interrupt_callback
Definition: url.h:46
pos
unsigned int pos
Definition: spdifenc.c:413
dict.h
URLProtocol::url_move
int(* url_move)(URLContext *h_src, URLContext *h_dst)
Definition: url.h:97
ff_udp_get_local_port
int ff_udp_get_local_port(URLContext *h)
Return the local port used by the UDP connection.
Definition: udp.c:464
URLProtocol::url_check
int(* url_check)(URLContext *h, int mask)
Definition: url.h:92
URLComponents::scheme
const char * scheme
possibly including lavf-specific options
Definition: url.h:371
URLProtocol::url_read_dir
int(* url_read_dir)(URLContext *h, AVIODirEntry **next)
Definition: url.h:94
ffurl_open_whitelist
int ffurl_open_whitelist(URLContext **puc, const char *filename, int flags, const AVIOInterruptCB *int_cb, AVDictionary **options, const char *whitelist, const char *blacklist, URLContext *parent)
Create an URLContext for accessing to the resource indicated by url, and open it.
Definition: avio.c:300
URLProtocol::url_get_short_seek
int(* url_get_short_seek)(URLContext *h)
Definition: url.h:87
URLContext::av_class
const AVClass * av_class
information for av_log().
Definition: url.h:38
ff_urlcontext_child_class_iterate
const AVClass * ff_urlcontext_child_class_iterate(void **iter)
Definition: protocols.c:83
URLProtocol::url_shutdown
int(* url_shutdown)(URLContext *h, int flags)
Definition: url.h:88
URLContext::is_streamed
int is_streamed
true if streamed (no seek possible), default = false
Definition: url.h:44
ff_check_interrupt
int ff_check_interrupt(AVIOInterruptCB *cb)
Check if the user has requested to interrupt a blocking function associated with cb.
Definition: avio.c:667
ffurl_write2
int ffurl_write2(void *urlcontext, const uint8_t *buf, int size)
Definition: avio.c:414
URLProtocol::url_read_seek
int64_t(* url_read_seek)(URLContext *h, int stream_index, int64_t timestamp, int flags)
Definition: url.h:82
ff_udp_set_remote_url
int ff_udp_set_remote_url(URLContext *h, const char *uri)
If no filename is given to av_open_input_file because you want to get the local port first,...
Definition: udp.c:425
URLProtocol::priv_data_size
int priv_data_size
Definition: url.h:90
URLProtocol::url_write
int(* url_write)(URLContext *h, const unsigned char *buf, int size)
Definition: url.h:78
ff_url_decompose
int ff_url_decompose(URLComponents *uc, const char *url, const char *end)
Parse an URL to find the components.
Definition: url.c:91
flags
#define flags(name, subs,...)
Definition: cbs_av1.c:474
ffurl_context_class
const AVClass ffurl_context_class
Definition: avio.c:63
h
h
Definition: vp9dsp_template.c:2038
int
int
Definition: ffmpeg_filter.c:368
URLProtocol::url_open2
int(* url_open2)(URLContext *h, const char *url, int flags, AVDictionary **options)
This callback is to be used by protocols which open further nested protocols.
Definition: url.h:61
ff_url_join
int ff_url_join(char *str, int size, const char *proto, const char *authorization, const char *hostname, int port, const char *fmt,...) av_printf_format(7
Assemble a URL string from components.
ffurl_read
static int ffurl_read(URLContext *h, uint8_t *buf, int size)
Read up to size bytes from the resource accessed by h, and store the read bytes in buf.
Definition: url.h:183