This is an automated email from the git hooks/post-receive script.

Git pushed a commit to branch master
in repository ffmpeg.

commit 8fc0de2e5b88dbad1d8ec1be6474729fc0542b26
Author:     Lynne <[email protected]>
AuthorDate: Sat Aug 15 18:16:19 2026 +0900
Commit:     Lynne <[email protected]>
CommitDate: Sat Aug 15 18:34:14 2026 +0900

    vulkan_h264: move the session parameter structures off the stack
    
    Nearly 160KiB, which overflows musl's default 128KiB thread stack on
    its own.
    
    Fixes #22342.
---
 libavcodec/vulkan_h264.c | 33 ++++++++++++++++++++++-----------
 1 file changed, 22 insertions(+), 11 deletions(-)

diff --git a/libavcodec/vulkan_h264.c b/libavcodec/vulkan_h264.c
index 61b7a14bb2..0c50de4e84 100644
--- a/libavcodec/vulkan_h264.c
+++ b/libavcodec/vulkan_h264.c
@@ -16,6 +16,8 @@
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+#include "libavutil/mem.h"
+
 #include "h264dec.h"
 #include "h264_ps.h"
 
@@ -290,13 +292,8 @@ static void set_pps(const PPS *pps, const SPS *sps,
     };
 }
 
-static int vk_h264_create_params(AVCodecContext *avctx, 
VkVideoSessionParametersKHR **buf)
-{
-    int err;
-    FFVulkanDecodeContext *dec = avctx->internal->hwaccel_priv_data;
-    FFVulkanDecodeShared *ctx = dec->shared_ctx;
-    const H264Context *h = avctx->priv_data;
-
+/* Too large to put on the stack: musl's default thread stack is 128KiB */
+typedef struct VulkanH264Params {
     /* SPS */
     StdVideoH264ScalingLists vksps_scaling[MAX_SPS_COUNT];
     StdVideoH264HrdParameters vksps_vui_header[MAX_SPS_COUNT];
@@ -306,12 +303,24 @@ static int vk_h264_create_params(AVCodecContext *avctx, 
VkVideoSessionParameters
     /* PPS */
     StdVideoH264ScalingLists vkpps_scaling[MAX_PPS_COUNT];
     StdVideoH264PictureParameterSet vkpps[MAX_PPS_COUNT];
+} VulkanH264Params;
+
+static int vk_h264_create_params(AVCodecContext *avctx, 
VkVideoSessionParametersKHR **buf)
+{
+    int err;
+    FFVulkanDecodeContext *dec = avctx->internal->hwaccel_priv_data;
+    FFVulkanDecodeShared *ctx = dec->shared_ctx;
+    const H264Context *h = avctx->priv_data;
+
+    VulkanH264Params *par = av_malloc(sizeof(*par));
+    if (!par)
+        return AVERROR(ENOMEM);
 
     VkVideoDecodeH264SessionParametersAddInfoKHR h264_params_info = {
         .sType = 
VK_STRUCTURE_TYPE_VIDEO_DECODE_H264_SESSION_PARAMETERS_ADD_INFO_KHR,
-        .pStdSPSs = vksps,
+        .pStdSPSs = par->vksps,
         .stdSPSCount = 0,
-        .pStdPPSs = vkpps,
+        .pStdPPSs = par->vkpps,
         .stdPPSCount = 0,
     };
     VkVideoDecodeH264SessionParametersCreateInfoKHR h264_params = {
@@ -330,7 +339,8 @@ static int vk_h264_create_params(AVCodecContext *avctx, 
VkVideoSessionParameters
         if (h->ps.sps_list[i]) {
             const SPS *sps_l = h->ps.sps_list[i];
             int idx = h264_params_info.stdSPSCount;
-            set_sps(sps_l, &vksps_scaling[idx], &vksps_vui_header[idx], 
&vksps_vui[idx], &vksps[idx]);
+            set_sps(sps_l, &par->vksps_scaling[idx], 
&par->vksps_vui_header[idx],
+                    &par->vksps_vui[idx], &par->vksps[idx]);
             h264_params_info.stdSPSCount++;
         }
     }
@@ -340,7 +350,7 @@ static int vk_h264_create_params(AVCodecContext *avctx, 
VkVideoSessionParameters
         if (h->ps.pps_list[i]) {
             const PPS *pps_l = h->ps.pps_list[i];
             int idx = h264_params_info.stdPPSCount;
-            set_pps(pps_l, pps_l->sps, &vkpps_scaling[idx], &vkpps[idx]);
+            set_pps(pps_l, pps_l->sps, &par->vkpps_scaling[idx], 
&par->vkpps[idx]);
             h264_params_info.stdPPSCount++;
         }
     }
@@ -349,6 +359,7 @@ static int vk_h264_create_params(AVCodecContext *avctx, 
VkVideoSessionParameters
     h264_params.maxStdPPSCount = h264_params_info.stdPPSCount;
 
     err = ff_vk_decode_create_params(buf, avctx, ctx, &session_params_create);
+    av_free(par);
     if (err < 0)
         return err;
 

_______________________________________________
ffmpeg-cvslog mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to