1
0
mirror of https://github.com/FFmpeg/FFmpeg.git synced 2025-11-23 21:54:53 +02:00

vulkan_prores: fix buffer leaks on error

This commit is contained in:
Lynne
2025-11-12 00:30:41 +01:00
parent d12bb4a2a5
commit 418235e98a

View File

@@ -212,9 +212,10 @@ static int vk_prores_end_frame(AVCodecContext *avctx)
RET(ff_vk_exec_mirror_sem_value(&ctx->s, exec, &vp->sem, &vp->sem_value, RET(ff_vk_exec_mirror_sem_value(&ctx->s, exec, &vp->sem, &vp->sem_value,
pr->frame)); pr->frame));
RET(ff_vk_exec_add_dep_buf(&ctx->s, exec, RET(ff_vk_exec_add_dep_buf(&ctx->s, exec, &vp->slices_buf, 1, 0));
(AVBufferRef *[]){ vp->slices_buf, pp->metadata_buf, }, vp->slices_buf = NULL;
2, 0)); RET(ff_vk_exec_add_dep_buf(&ctx->s, exec, &pp->metadata_buf, 1, 0));
pp->metadata_buf = NULL;
/* Transfer ownership to the exec context */ /* Transfer ownership to the exec context */
vp->slices_buf = pp->metadata_buf = NULL; vp->slices_buf = pp->metadata_buf = NULL;
@@ -572,8 +573,12 @@ static void vk_prores_free_frame_priv(AVRefStructOpaque _hwctx, void *data)
{ {
AVHWDeviceContext *dev_ctx = _hwctx.nc; AVHWDeviceContext *dev_ctx = _hwctx.nc;
ProresVulkanDecodePicture *pp = data; ProresVulkanDecodePicture *pp = data;
FFVulkanDecodePicture *vp = &pp->vp;
ff_vk_decode_free_frame(dev_ctx, &pp->vp); ff_vk_decode_free_frame(dev_ctx, &pp->vp);
av_buffer_unref(&vp->slices_buf);
av_buffer_unref(&pp->metadata_buf);
} }
const FFHWAccel ff_prores_vulkan_hwaccel = { const FFHWAccel ff_prores_vulkan_hwaccel = {