mirror of https://github.com/mpv-player/mpv
demux_timeline: disable end-of-segment handling in DASH mode
Normal EDL needs to clip packets coming from the underlying demuxer to the segment range (including complicated stuff due to frame reordering). This is unwanted In pseudo-DASH mode. A broken or subtly incorrect manifest would lead to "bad stuff" happening. The intention of the pseudo-DASH mode is to literally concatenate fragments.
This commit is contained in:
parent
b157e22838
commit
8ba484f47c
|
@ -304,7 +304,7 @@ static bool d_read_packet(struct demuxer *demuxer, struct demux_packet **out_pkt
|
||||||
assert(seg && seg->d);
|
assert(seg && seg->d);
|
||||||
|
|
||||||
struct demux_packet *pkt = demux_read_any_packet(seg->d);
|
struct demux_packet *pkt = demux_read_any_packet(seg->d);
|
||||||
if (!pkt || pkt->pts >= seg->end)
|
if (!pkt || (!src->dash && pkt->pts >= seg->end))
|
||||||
src->eos_packets += 1;
|
src->eos_packets += 1;
|
||||||
|
|
||||||
update_slave_stats(demuxer, seg->d);
|
update_slave_stats(demuxer, seg->d);
|
||||||
|
@ -370,7 +370,7 @@ static bool d_read_packet(struct demuxer *demuxer, struct demux_packet **out_pkt
|
||||||
if (pkt->pos >= 0)
|
if (pkt->pos >= 0)
|
||||||
pkt->pos |= (seg->index & 0x7FFFULL) << 48;
|
pkt->pos |= (seg->index & 0x7FFFULL) << 48;
|
||||||
|
|
||||||
if (pkt->pts != MP_NOPTS_VALUE && pkt->pts >= seg->end) {
|
if (pkt->pts != MP_NOPTS_VALUE && !src->dash && pkt->pts >= seg->end) {
|
||||||
// Trust the keyframe flag. Might not always be a good idea, but will
|
// Trust the keyframe flag. Might not always be a good idea, but will
|
||||||
// be sufficient at least with mkv. The problem is that this flag is
|
// be sufficient at least with mkv. The problem is that this flag is
|
||||||
// not well-defined in libavformat and is container-dependent.
|
// not well-defined in libavformat and is container-dependent.
|
||||||
|
|
Loading…
Reference in New Issue