[FFmpeg-cvslog] http: try to detect live akamai streams and dont enable seeking for them
Michael Niedermayer
git at videolan.org
Thu Jun 28 00:39:22 CEST 2012
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sun Jun 3 18:34:53 2012 +0200| [7803a040419f7abb82310fb02a109f6a411650d6] | committer: Michael Niedermayer
http: try to detect live akamai streams and dont enable seeking for them
Fixes ticket1320
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=7803a040419f7abb82310fb02a109f6a411650d6
---
libavformat/http.c | 6 +++++-
1 file changed, 5 insertions(+), 1 deletion(-)
diff --git a/libavformat/http.c b/libavformat/http.c
index 0314557..5355bdc 100644
--- a/libavformat/http.c
+++ b/libavformat/http.c
@@ -56,6 +56,7 @@ typedef struct {
int multiple_requests; /**< A flag which indicates if we use persistent connections. */
uint8_t *post_data;
int post_datalen;
+ int is_akamai;
} HTTPContext;
#define OFFSET(x) offsetof(HTTPContext, x)
@@ -317,7 +318,8 @@ static int process_line(URLContext *h, char *line, int line_count,
if ((slash = strchr(p, '/')) && strlen(slash) > 0)
s->filesize = strtoll(slash+1, NULL, 10);
}
- h->is_streamed = 0; /* we _can_ in fact seek */
+ if (!s->is_akamai || s->filesize != 2147483647)
+ h->is_streamed = 0; /* we _can_ in fact seek */
} else if (!av_strcasecmp(tag, "Accept-Ranges") && !strncmp(p, "bytes", 5)) {
h->is_streamed = 0;
} else if (!av_strcasecmp (tag, "Transfer-Encoding") && !av_strncasecmp(p, "chunked", 7)) {
@@ -332,6 +334,8 @@ static int process_line(URLContext *h, char *line, int line_count,
} else if (!av_strcasecmp (tag, "Connection")) {
if (!strcmp(p, "close"))
s->willclose = 1;
+ } else if (!av_strcasecmp (tag, "Server") && !av_strcasecmp (p, "AkamaiGHost")) {
+ s->is_akamai = 1;
}
}
return 1;
More information about the ffmpeg-cvslog
mailing list