diff --git a/demux/demux.c b/demux/demux.c index 1a2495e8a9..e5d7ad27d9 100644 --- a/demux/demux.c +++ b/demux/demux.c @@ -1297,6 +1297,10 @@ static void attempt_range_joining(struct demux_internal *in) struct demux_queue *q2 = next->streams[n]; struct demux_stream *ds = in->streams[n]->ds; + assert(ds->queue == q1); + + // First new packet that is appended to the current range. + struct demux_packet *join_point = q2->head; if (q2->head) { if (q1->head) { @@ -1326,6 +1330,10 @@ static void attempt_range_joining(struct demux_internal *in) add_index_entry(q1, q2->index[i]); q2->num_index = 0; + if (ds->selected && !ds->reader_head) + ds->reader_head = join_point; + ds->skip_to_keyframe = false; + recompute_buffers(ds); in->fw_bytes += ds->fw_bytes;