[FFmpeg-devel] [PATCH] avformat/hls allow playback when some variant streams are unavailable
Michael Niedermayer
michael at niedermayer.cc
Thu Apr 13 19:24:33 EEST 2017
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.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 181 bytes
Desc: Digital signature
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20170413/cfd51746/attachment.sig>
More information about the ffmpeg-devel
mailing list