diff options
-rw-r--r-- | libmpdemux/demux_lavf.c | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/libmpdemux/demux_lavf.c b/libmpdemux/demux_lavf.c index 013db04170..3033af9918 100644 --- a/libmpdemux/demux_lavf.c +++ b/libmpdemux/demux_lavf.c @@ -800,6 +800,11 @@ static int demux_lavf_fill_buffer(demuxer_t *demux, demux_stream_t *dsds) return 1; } + // If the packet has pointers to temporary fields that could be + // overwritten/freed by next av_read_frame(), copy them to persistent + // allocations so we can safely queue the packet for any length of time. + if (av_dup_packet(pkt) < 0) + abort(); dp = new_demux_packet_fromdata(pkt->data, pkt->size); dp->avpacket = pkt; |