diff --git a/libavformat/mxfenc.c b/libavformat/mxfenc.c index 77f60f5874..66fd0963a2 100644 --- a/libavformat/mxfenc.c +++ b/libavformat/mxfenc.c @@ -2914,6 +2914,9 @@ static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket *out, AVPacket while (pktl) { if (!stream_count || pktl->pkt.stream_index == 0) break; + // update last packet in packet buffer + if (s->streams[pktl->pkt.stream_index]->last_in_packet_buffer != pktl) + s->streams[pktl->pkt.stream_index]->last_in_packet_buffer = pktl; last = pktl; pktl = pktl->next; stream_count--; @@ -2921,9 +2924,6 @@ static int mxf_interleave_get_packet(AVFormatContext *s, AVPacket *out, AVPacket // purge packet queue while (pktl) { AVPacketList *next = pktl->next; - - if(s->streams[pktl->pkt.stream_index]->last_in_packet_buffer == pktl) - s->streams[pktl->pkt.stream_index]->last_in_packet_buffer= NULL; av_packet_unref(&pktl->pkt); av_freep(&pktl); pktl = next;