|
|
|
@ -63,6 +63,7 @@ typedef struct { |
|
|
|
|
int post_datalen; |
|
|
|
|
int is_akamai; |
|
|
|
|
int rw_timeout; |
|
|
|
|
char *demuxer; |
|
|
|
|
} HTTPContext; |
|
|
|
|
|
|
|
|
|
#define OFFSET(x) offsetof(HTTPContext, x) |
|
|
|
@ -78,6 +79,7 @@ static const AVOption options[] = { |
|
|
|
|
{"multiple_requests", "use persistent connections", OFFSET(multiple_requests), AV_OPT_TYPE_INT, {.i64 = 0}, 0, 1, D|E }, |
|
|
|
|
{"post_data", "custom HTTP post data", OFFSET(post_data), AV_OPT_TYPE_BINARY, .flags = D|E }, |
|
|
|
|
{"timeout", "timeout of socket i/o operations", OFFSET(rw_timeout), AV_OPT_TYPE_INT, {.i64 = -1}, -1, INT_MAX, D|E }, |
|
|
|
|
{"demuxer", "", OFFSET(demuxer), AV_OPT_TYPE_STRING, {0}, 0, 0, 0 }, |
|
|
|
|
{NULL} |
|
|
|
|
}; |
|
|
|
|
#define HTTP_CLASS(flavor)\ |
|
|
|
@ -355,6 +357,10 @@ static int process_line(URLContext *h, char *line, int line_count, |
|
|
|
|
s->willclose = 1; |
|
|
|
|
} else if (!av_strcasecmp (tag, "Server") && !av_strcasecmp (p, "AkamaiGHost")) { |
|
|
|
|
s->is_akamai = 1; |
|
|
|
|
} else if (!av_strcasecmp (tag, "Content-Type")) { |
|
|
|
|
if (!av_strcasecmp (p, "audio/aacp")) { |
|
|
|
|
av_free(s->demuxer); s->demuxer = av_strdup("aac"); |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
return 1; |
|
|
|
|