Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
From: averne <averne381-at-gmail.com@ffmpeg.org>
To: ffmpeg-devel@ffmpeg.org
Cc: averne <averne381@gmail.com>
Subject: [FFmpeg-devel] [PATCH 3/3] vulkan/ffv1dec: fix FFVkSPIRVCompiler leak
Date: Tue, 10 Jun 2025 20:58:57 +0200
Message-ID: <20250610-vk-ffv1-leaks-v1-3-6bd045fc51e2@gmail.com> (raw)
In-Reply-To: <20250610-vk-ffv1-leaks-v1-0-6bd045fc51e2@gmail.com>

---
 libavcodec/vulkan_ffv1.c | 58 +++++++++++++++++++-----------------------------
 1 file changed, 23 insertions(+), 35 deletions(-)

diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c
index 8329b5d7dfad18de96884ea2c1f6f186682e430c..b02bc71683fd7d06dad3f4cf667ee3e8c57f3c83 100644
--- a/libavcodec/vulkan_ffv1.c
+++ b/libavcodec/vulkan_ffv1.c
@@ -1033,23 +1033,17 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx)
 
     /* Intermediate frame pool for RCT */
     for (int i = 0; i < 2; i++) { /* 16/32 bit */
-        err = init_indirect(avctx, &ctx->s, &fv->intermediate_frames_ref[i],
-                            i ? AV_PIX_FMT_GBRAP32 : AV_PIX_FMT_GBRAP16);
-        if (err < 0)
-            return err;
+        RET(init_indirect(avctx, &ctx->s, &fv->intermediate_frames_ref[i],
+                          i ? AV_PIX_FMT_GBRAP32 : AV_PIX_FMT_GBRAP16));
     }
 
     /* Setup shader */
-    err = init_setup_shader(f, &ctx->s, &ctx->exec_pool, spv, &fv->setup);
-    if (err < 0)
-        return err;
+    RET(init_setup_shader(f, &ctx->s, &ctx->exec_pool, spv, &fv->setup));
 
     /* Reset shaders */
     for (int i = 0; i < 2; i++) { /* AC/Golomb */
-        err = init_reset_shader(f, &ctx->s, &ctx->exec_pool,
-                                spv, &fv->reset[i], !i ? AC_RANGE_CUSTOM_TAB : 0);
-        if (err < 0)
-            return err;
+        RET(init_reset_shader(f, &ctx->s, &ctx->exec_pool,
+                              spv, &fv->reset[i], !i ? AC_RANGE_CUSTOM_TAB : 0));
     }
 
     /* Decode shaders */
@@ -1059,39 +1053,31 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx)
                 AVHWFramesContext *dec_frames_ctx;
                 dec_frames_ctx = k ? (AVHWFramesContext *)fv->intermediate_frames_ref[i]->data :
                                      (AVHWFramesContext *)avctx->hw_frames_ctx->data;
-                err = init_decode_shader(f, &ctx->s, &ctx->exec_pool,
-                                         spv, &fv->decode[i][j][k],
-                                         dec_frames_ctx,
-                                         (AVHWFramesContext *)avctx->hw_frames_ctx->data,
-                                         i,
-                                         !j ? AC_RANGE_CUSTOM_TAB : AC_GOLOMB_RICE,
-                                         k);
-                if (err < 0)
-                    return err;
+                RET(init_decode_shader(f, &ctx->s, &ctx->exec_pool,
+                                       spv, &fv->decode[i][j][k],
+                                       dec_frames_ctx,
+                                       (AVHWFramesContext *)avctx->hw_frames_ctx->data,
+                                       i,
+                                       !j ? AC_RANGE_CUSTOM_TAB : AC_GOLOMB_RICE,
+                                       k));
             }
         }
     }
 
     /* Range coder data */
-    err = ff_ffv1_vk_init_state_transition_data(&ctx->s,
-                                                &fv->rangecoder_static_buf,
-                                                f);
-    if (err < 0)
-        return err;
+    RET(ff_ffv1_vk_init_state_transition_data(&ctx->s,
+                                              &fv->rangecoder_static_buf,
+                                              f));
 
     /* Quantization table data */
-    err = ff_ffv1_vk_init_quant_table_data(&ctx->s,
-                                           &fv->quant_buf,
-                                           f);
-    if (err < 0)
-        return err;
+    RET(ff_ffv1_vk_init_quant_table_data(&ctx->s,
+                                         &fv->quant_buf,
+                                         f));
 
     /* CRC table buffer */
-    err = ff_ffv1_vk_init_crc_table_data(&ctx->s,
-                                         &fv->crc_tab_buf,
-                                         f);
-    if (err < 0)
-        return err;
+    RET(ff_ffv1_vk_init_crc_table_data(&ctx->s,
+                                       &fv->crc_tab_buf,
+                                       f));
 
     /* Update setup global descriptors */
     RET(ff_vk_shader_update_desc_buffer(&ctx->s, &ctx->exec_pool.contexts[0],
@@ -1124,6 +1110,8 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx)
     }
 
 fail:
+    spv->uninit(&spv);
+
     return err;
 }
 

-- 
2.49.0

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".

  parent reply	other threads:[~2025-06-10 18:59 UTC|newest]

Thread overview: 5+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-06-10 18:58 [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding averne
2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 1/3] vulkan: fix leak in FFVkExecPool averne
2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 2/3] vulkan/ffv1dec: fix leak in FFVulkanDecodeShared averne
2025-06-10 18:58 ` averne [this message]
2025-06-11  4:30 ` [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding Lynne

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20250610-vk-ffv1-leaks-v1-3-6bd045fc51e2@gmail.com \
    --to=averne381-at-gmail.com@ffmpeg.org \
    --cc=averne381@gmail.com \
    --cc=ffmpeg-devel@ffmpeg.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git