mirror of
https://github.com/xenia-project/FFmpeg.git
synced 2024-11-28 05:50:43 +00:00
avformat/hls: parse EXTINF duration as floating-point number
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
This commit is contained in:
parent
47d57f24e3
commit
2a5891bb9d
@ -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;
|
||||
|
Loading…
Reference in New Issue
Block a user