diff --git a/libavcodec/lcevcdec.c b/libavcodec/lcevcdec.c index cea396325e..76bdbdbe07 100644 --- a/libavcodec/lcevcdec.c +++ b/libavcodec/lcevcdec.c @@ -132,8 +132,10 @@ static int lcevc_send_frame(void *logctx, FFLCEVCFrame *frame_ctx, const AVFrame #else res = LCEVC_SendDecoderBase(lcevc->decoder, in->pts, 0, picture, -1, NULL); #endif - if (res != LCEVC_Success) + if (res != LCEVC_Success) { + LCEVC_FreePicture(lcevc->decoder, picture); return AVERROR_EXTERNAL; + } memset(&picture, 0, sizeof(picture)); ret = alloc_enhanced_frame(logctx, frame_ctx, &picture); @@ -141,8 +143,10 @@ static int lcevc_send_frame(void *logctx, FFLCEVCFrame *frame_ctx, const AVFrame return ret; res = LCEVC_SendDecoderPicture(lcevc->decoder, picture); - if (res != LCEVC_Success) + if (res != LCEVC_Success) { + LCEVC_FreePicture(lcevc->decoder, picture); return AVERROR_EXTERNAL; + } return 0; } @@ -160,8 +164,10 @@ static int generate_output(void *logctx, FFLCEVCFrame *frame_ctx, AVFrame *out) return AVERROR_EXTERNAL; res = LCEVC_GetPictureDesc(lcevc->decoder, picture, &desc); - if (res != LCEVC_Success) + if (res != LCEVC_Success) { + LCEVC_FreePicture(lcevc->decoder, picture); return AVERROR_EXTERNAL; + } out->crop_top = desc.cropTop; out->crop_bottom = desc.cropBottom;