[FFmpeg-cvslog] hls: Return all packets from a previous variant before moving on to the next one
Martin Storsjö
git at videolan.org
Mon Jul 29 14:03:34 CEST 2013
ffmpeg | branch: master | Martin Storsjö <martin at martin.st> | Sun Jul 28 20:09:31 2013 +0300| [eb33ba04e03d9f36e23fffd442510c824be709c3] | committer: Martin Storsjö
hls: Return all packets from a previous variant before moving on to the next one
This serves as a safeguard; normally we want to use the dts
comparison to interleave packets from all active variants. If that
dts comparison for some reason doesn't work as intended, make sure
that all packets in all variants for a certain sequence number have
been returned before moving on to the next one.
Signed-off-by: Martin Storsjö <martin at martin.st>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=eb33ba04e03d9f36e23fffd442510c824be709c3
---
libavformat/hls.c | 7 +++++--
1 file changed, 5 insertions(+), 2 deletions(-)
diff --git a/libavformat/hls.c b/libavformat/hls.c
index 0d691ec..464faee 100644
--- a/libavformat/hls.c
+++ b/libavformat/hls.c
@@ -638,10 +638,13 @@ start:
}
}
}
- /* Check if this stream has the packet with the lowest dts */
+ /* Check if this stream still is on an earlier segment number, or
+ * has the packet with the lowest dts */
if (var->pkt.data) {
if (minvariant < 0 ||
- var->pkt.dts < c->variants[minvariant]->pkt.dts)
+ var->cur_seq_no < c->variants[minvariant]->cur_seq_no ||
+ (var->cur_seq_no == c->variants[minvariant]->cur_seq_no &&
+ var->pkt.dts < c->variants[minvariant]->pkt.dts))
minvariant = i;
}
}
More information about the ffmpeg-cvslog
mailing list