ffmpeg: fix leak when decoding audio frames

removing the memset in _DecodeSomeAudioFramesIntoEmptyDecodedDataBuffer fixes #18654
also free correctly resources in AVCodecDecoder destructor.

Change-Id: I2d6de6b50ba6767f669eb765dad96d28d43100fb
Reviewed-on: https://review.haiku-os.org/c/haiku/+/7108
Reviewed-by: Adrien Destugues <[email protected]>
Tested-by: Commit checker robot <[email protected]>
This commit is contained in:
Jérôme Duval
2023-11-14 23:13:51 +00:00
committed by waddlesplash
parent c7360f4b02
commit 1b8870852e
@@ -154,12 +154,12 @@ AVCodecDecoder::~AVCodecDecoder()
free(fChunkBuffer);
free(fDecodedData);
av_free(fPostProcessedDecodedPicture);
av_free(fRawDecodedPicture);
av_frame_free(&fPostProcessedDecodedPicture);
av_frame_free(&fRawDecodedPicture);
av_free(fRawDecodedAudio->opaque);
av_free(fRawDecodedAudio);
av_free(fCodecContext);
av_free(fDecodedDataBuffer);
av_frame_free(&fRawDecodedAudio);
avcodec_free_context(&fCodecContext);
av_frame_free(&fDecodedDataBuffer);
av_frame_free(&fFilterFrame);
avfilter_graph_free(&fFilterGraph);
@@ -1123,8 +1123,7 @@ AVCodecDecoder::_DecodeSomeAudioFramesIntoEmptyDecodedDataBuffer()
{
assert(fDecodedDataBufferSize == 0);
memset(fDecodedDataBuffer, 0, sizeof(AVFrame));
av_frame_unref(fDecodedDataBuffer);
av_frame_unref(fDecodedDataBuffer);
fDecodedDataBufferOffset = 0;
int error = avcodec_receive_frame(fCodecContext, fDecodedDataBuffer);