|
|
|
@@ -204,6 +204,7 @@ typedef struct HLSContext { |
|
|
|
AVDictionary *avio_opts; |
|
|
|
int strict_std_compliance; |
|
|
|
char *allowed_extensions; |
|
|
|
int max_reload; |
|
|
|
} HLSContext; |
|
|
|
|
|
|
|
static int read_chomp_line(AVIOContext *s, char *buf, int maxlen) |
|
|
|
@@ -1254,6 +1255,7 @@ static int read_data(void *opaque, uint8_t *buf, int buf_size) |
|
|
|
HLSContext *c = v->parent->priv_data; |
|
|
|
int ret, i; |
|
|
|
int just_opened = 0; |
|
|
|
int reload_count = 0; |
|
|
|
|
|
|
|
restart: |
|
|
|
if (!v->needed) |
|
|
|
@@ -1285,6 +1287,9 @@ restart: |
|
|
|
reload_interval = default_reload_interval(v); |
|
|
|
|
|
|
|
reload: |
|
|
|
reload_count++; |
|
|
|
if (reload_count > c->max_reload) |
|
|
|
return AVERROR_EOF; |
|
|
|
if (!v->finished && |
|
|
|
av_gettime_relative() - v->last_load_time >= reload_interval) { |
|
|
|
if ((ret = parse_playlist(c, v->url, v, NULL)) < 0) { |
|
|
|
@@ -2062,6 +2067,8 @@ static const AVOption hls_options[] = { |
|
|
|
OFFSET(allowed_extensions), AV_OPT_TYPE_STRING, |
|
|
|
{.str = "3gp,aac,avi,flac,mkv,m3u8,m4a,m4s,m4v,mpg,mov,mp2,mp3,mp4,mpeg,mpegts,ogg,ogv,oga,ts,vob,wav"}, |
|
|
|
INT_MIN, INT_MAX, FLAGS}, |
|
|
|
{"max_reload", "Maximum number of times a insufficient list is attempted to be reloaded", |
|
|
|
OFFSET(max_reload), AV_OPT_TYPE_INT, {.i64 = 1000}, 0, INT_MAX, FLAGS}, |
|
|
|
{NULL} |
|
|
|
}; |
|
|
|
|
|
|
|
|