On Thu, Apr 13, 2017 at 04:14:46PM +0100, Tim Hunt wrote: > My last patch was slightly convoluted and really dumb. > > I suspect it impacts on a couple of checks for > variants[0]->playlists[0]->finished and the problem will be when a non live > stream has two variants using EXT-X-ENDLIST and the first stream in the > playlist is down? Not sure how to approach this, will look into it more > later. > > --- > libavformat/hls.c | 17 +++++++++++------ > 1 file changed, 11 insertions(+), 6 deletions(-) > > diff --git a/libavformat/hls.c b/libavformat/hls.c > index bac53a4..26b8751 100644 > --- a/libavformat/hls.c > +++ b/libavformat/hls.c > @@ -1611,7 +1611,7 @@ static int hls_read_header(AVFormatContext *s) > void *u = (s->flags & AVFMT_FLAG_CUSTOM_IO) ? NULL : s->pb; > HLSContext *c = s->priv_data; > int ret = 0, i; > - int highest_cur_seq_no = 0; > + int highest_cur_seq_no = 0, found_segments; > > c->ctx = s; > c->interrupt_callback = &s->interrupt_callback; > @@ -1652,14 +1652,20 @@ static int hls_read_header(AVFormatContext *s) > /* If the playlist only contained playlists (Master Playlist), > * parse each individual playlist. */ > if (c->n_playlists > 1 || c->playlists[0]->n_segments == 0) { > + found_segments = -1; > +
> for (i = 0; i < c->n_playlists; i++) { > struct playlist *pls = c->playlists[i]; > - if ((ret = parse_playlist(c, pls->url, pls, NULL)) < 0) > - goto fail; > + if (parse_playlist(c, pls->url, pls, NULL) == 0 && > pls->n_segments > 0) > + found_segments = 1; this patch is corrupted by newlines [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Old school: Use the lowest level language in which you can solve the problem conveniently. New school: Use the highest level language in which the latest supercomputer can solve the problem without the user falling asleep waiting.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel