mirror of https://git.ffmpeg.org/ffmpeg.git
applehttp: Use half the target duration as interval if the playlist didn't update
This is mandated in draft-pantos-http-live-streaming-07, section 6.3.4. Signed-off-by: Martin Storsjö <martin@martin.st>
This commit is contained in:
parent
356ae5f65b
commit
617475a95c
|
@ -376,7 +376,6 @@ static int read_data(void *opaque, uint8_t *buf, int buf_size)
|
|||
|
||||
restart:
|
||||
if (!v->input) {
|
||||
reload:
|
||||
/* If this is a live stream and the reload interval has elapsed since
|
||||
* the last playlist reload, reload the variant playlists now. */
|
||||
int64_t reload_interval = v->n_segments > 0 ?
|
||||
|
@ -384,10 +383,16 @@ reload:
|
|||
v->target_duration;
|
||||
reload_interval *= 1000000;
|
||||
|
||||
reload:
|
||||
if (!v->finished &&
|
||||
av_gettime() - v->last_load_time >= reload_interval &&
|
||||
(ret = parse_playlist(c, v->url, v, NULL)) < 0)
|
||||
av_gettime() - v->last_load_time >= reload_interval) {
|
||||
if ((ret = parse_playlist(c, v->url, v, NULL)) < 0)
|
||||
return ret;
|
||||
/* If we need to reload the playlist again below (if
|
||||
* there's still no more segments), switch to a reload
|
||||
* interval of half the target duration. */
|
||||
reload_interval = v->target_duration * 500000;
|
||||
}
|
||||
if (v->cur_seq_no < v->start_seq_no) {
|
||||
av_log(NULL, AV_LOG_WARNING,
|
||||
"skipping %d segments ahead, expired from playlists\n",
|
||||
|
|
Loading…
Reference in New Issue