diff options
-rw-r--r-- | video/decode/dec_video.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/video/decode/dec_video.c b/video/decode/dec_video.c index e8a57749ab..fc0b090962 100644 --- a/video/decode/dec_video.c +++ b/video/decode/dec_video.c @@ -363,9 +363,10 @@ void video_work(struct dec_video *d_video) return; if (d_video->header->attached_picture) { + struct demux_packet *packet = + demux_copy_packet(d_video->header->attached_picture); if (d_video->current_state == DATA_AGAIN && !d_video->cover_art_mpi) { - d_video->cover_art_mpi = - decode_packet(d_video, d_video->header->attached_picture, 0); + d_video->cover_art_mpi = decode_packet(d_video, packet, 0); // Might need flush. if (!d_video->cover_art_mpi) d_video->cover_art_mpi = decode_packet(d_video, NULL, 0); @@ -375,6 +376,7 @@ void video_work(struct dec_video *d_video) d_video->current_mpi = mp_image_new_ref(d_video->cover_art_mpi); // (DATA_OK is returned the first time, when current_mpi is sill set) d_video->current_state = DATA_EOF; + talloc_free(packet); return; } |