diff options
author | Zhang Rui <bbcallen@gmail.com> | 2013-07-22 17:21:38 +0400 |
---|---|---|
committer | Michael Niedermayer <michaelni@gmx.at> | 2013-07-22 21:34:47 +0400 |
commit | 2a5891bb9dfe55145a2f7dc9bcea8dbeaf2abc5f (patch) | |
tree | db76163312f1532d6473864df87ef8896f7d0f67 /libavformat/hls.c | |
parent | 47d57f24e35f0e9694c615b81511dde4cda95c72 (diff) |
avformat/hls: parse EXTINF duration as floating-point number
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'libavformat/hls.c')
-rw-r--r-- | libavformat/hls.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/libavformat/hls.c b/libavformat/hls.c index 95bbd45be6..995dc9fa87 100644 --- a/libavformat/hls.c +++ b/libavformat/hls.c @@ -56,7 +56,7 @@ enum KeyType { }; struct segment { - int duration; + double duration; char url[MAX_URL_SIZE]; char key[MAX_URL_SIZE]; enum KeyType key_type; @@ -206,7 +206,8 @@ static void handle_key_args(struct key_info *info, const char *key, static int parse_playlist(HLSContext *c, const char *url, struct variant *var, AVIOContext *in) { - int ret = 0, duration = 0, is_segment = 0, is_variant = 0, bandwidth = 0; + int ret = 0, is_segment = 0, is_variant = 0, bandwidth = 0; + double duration = 0.0; enum KeyType key_type = KEY_NONE; uint8_t iv[16] = ""; int has_iv = 0; @@ -286,7 +287,7 @@ static int parse_playlist(HLSContext *c, const char *url, var->finished = 1; } else if (av_strstart(line, "#EXTINF:", &ptr)) { is_segment = 1; - duration = atoi(ptr); + duration = atof(ptr); } else if (av_strstart(line, "#", NULL)) { continue; } else if (line[0]) { @@ -523,7 +524,7 @@ static int hls_read_header(AVFormatContext *s) /* If this isn't a live stream, calculate the total duration of the * stream. */ if (c->variants[0]->finished) { - int64_t duration = 0; + double duration = 0.0; for (i = 0; i < c->variants[0]->n_segments; i++) duration += c->variants[0]->segments[i]->duration; s->duration = duration * AV_TIME_BASE; |