mirror of https://git.ffmpeg.org/ffmpeg.git
avcodec/vaapi: free slice_buffers when decoding failed
If vaEndPicture() failed in ff_vaapi_decode_issue(), free the pic->slice_buffers. Fixes the memory leak issue in ticket #7385 Signed-off-by: Linjie Fu <linjie.fu@intel.com> Signed-off-by: Mark Thompson <sw@jkqxz.net>
This commit is contained in:
parent
d5451a9b07
commit
0f9b298242
|
@ -200,12 +200,8 @@ int ff_vaapi_decode_issue(AVCodecContext *avctx,
|
|||
AV_VAAPI_DRIVER_QUIRK_RENDER_PARAM_BUFFERS)
|
||||
ff_vaapi_decode_destroy_buffers(avctx, pic);
|
||||
|
||||
pic->nb_param_buffers = 0;
|
||||
pic->nb_slices = 0;
|
||||
pic->slices_allocated = 0;
|
||||
av_freep(&pic->slice_buffers);
|
||||
|
||||
return 0;
|
||||
err = 0;
|
||||
goto exit;
|
||||
|
||||
fail_with_picture:
|
||||
vas = vaEndPicture(ctx->hwctx->display, ctx->va_context);
|
||||
|
@ -216,6 +212,12 @@ fail_with_picture:
|
|||
fail:
|
||||
ff_vaapi_decode_destroy_buffers(avctx, pic);
|
||||
fail_at_end:
|
||||
exit:
|
||||
pic->nb_param_buffers = 0;
|
||||
pic->nb_slices = 0;
|
||||
pic->slices_allocated = 0;
|
||||
av_freep(&pic->slice_buffers);
|
||||
|
||||
return err;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue