104 protocol->
next = NULL;
109 const char *filename,
int flags,
121 "Impossible to open the '%s' protocol for reading\n", up->
name);
126 "Impossible to open the '%s' protocol for writing\n", up->
name);
148 int proto_len= strlen(up->
name);
158 while(ret >= 0 && (key= strchr(p, sep)) && p<key && (val = strchr(key+1, sep))){
173 memmove(start, key+1, strlen(key));
213 #define URL_SCHEME_CHARS \
214 "abcdefghijklmnopqrstuvwxyz" \
215 "ABCDEFGHIJKLMNOPQRSTUVWXYZ" \
221 char proto_str[128], proto_nested[128], *ptr;
224 if (filename[proto_len] !=
':' &&
225 (filename[proto_len] !=
',' || !strchr(filename + proto_len + 1,
':')) ||
227 strcpy(proto_str,
"file");
230 FFMIN(proto_len + 1,
sizeof(proto_str)));
232 if ((ptr = strchr(proto_str,
',')))
234 av_strlcpy(proto_nested, proto_str,
sizeof(proto_nested));
235 if ((ptr = strchr(proto_nested,
'+')))
239 if (!strcmp(proto_str, up->
name))
242 !strcmp(proto_nested, up->
name))
254 if (!first_protocol) {
256 "Missing call to av_register_all()?\n");
265 av_log(NULL,
AV_LOG_WARNING,
"https protocol not found, recompile with openssl or gnutls enabled.\n");
275 if (options && (*puc)->prot->priv_data_class &&
290 int size,
int size_min,
296 int fast_retries = 5;
297 int64_t wait_since = 0;
300 while (len < size_min) {
303 ret = transfer_func(h, buf + len, size - len);
324 fast_retries =
FFMAX(fast_retries, 2);
397 return p ? p->
name : NULL;