|
|
@@ -1878,6 +1878,7 @@ static int hls_read_header(AVFormatContext *s) |
|
|
|
/* Open the demuxer for each playlist */ |
|
|
|
for (i = 0; i < c->n_playlists; i++) { |
|
|
|
struct playlist *pls = c->playlists[i]; |
|
|
|
char *url; |
|
|
|
ff_const59 AVInputFormat *in_fmt = NULL; |
|
|
|
|
|
|
|
if (!(pls->ctx = avformat_alloc_context())) { |
|
|
@@ -1914,8 +1915,9 @@ static int hls_read_header(AVFormatContext *s) |
|
|
|
ffio_init_context(&pls->pb, pls->read_buffer, INITIAL_BUFFER_SIZE, 0, pls, |
|
|
|
read_data, NULL, NULL); |
|
|
|
pls->pb.seekable = 0; |
|
|
|
ret = av_probe_input_buffer(&pls->pb, &in_fmt, pls->segments[0]->url, |
|
|
|
NULL, 0, 0); |
|
|
|
url = av_strdup(pls->segments[0]->url); |
|
|
|
ret = av_probe_input_buffer(&pls->pb, &in_fmt, url, NULL, 0, 0); |
|
|
|
av_free(url); |
|
|
|
if (ret < 0) { |
|
|
|
/* Free the ctx - it isn't initialized properly at this point, |
|
|
|
* so avformat_close_input shouldn't be called. If |
|
|
|