avauddec: fix buffer leak when send packet failed

Part-of: <https://gitlab.freedesktop.org/gstreamer/gst-libav/-/merge_requests/81>
This commit is contained in:
Matej Knopp 2020-06-30 18:33:56 +02:00
parent f7371f8691
commit d84b922b7f

View File

@ -701,7 +701,7 @@ gst_ffmpegauddec_handle_frame (GstAudioDecoder * decoder, GstBuffer * inbuf)
gst_avpacket_init (&packet, data, size);
if (!packet.size)
goto done;
goto unmap;
if (avcodec_send_packet (ffmpegdec->context, &packet) < 0) {
goto send_packet_failed;
@ -722,14 +722,15 @@ gst_ffmpegauddec_handle_frame (GstAudioDecoder * decoder, GstBuffer * inbuf)
}
} while (got_frame);
gst_buffer_unmap (inbuf, &map);
gst_buffer_unref (inbuf);
if (is_header || got_any_frames) {
ret =
gst_audio_decoder_finish_frame (GST_AUDIO_DECODER (ffmpegdec), NULL, 1);
}
unmap:
gst_buffer_unmap (inbuf, &map);
gst_buffer_unref (inbuf);
done:
return ret;
@ -747,7 +748,7 @@ not_negotiated:
send_packet_failed:
{
GST_WARNING_OBJECT (ffmpegdec, "decoding error");
goto done;
goto unmap;
}
}