From mboxrd@z Thu Jan  1 00:00:00 1970
Return-Path: <ffmpeg-devel-bounces@ffmpeg.org>
Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100])
	by master.gitmailbox.com (Postfix) with ESMTPS id EBC734BE42
	for <ffmpegdev@gitmailbox.com>; Mon, 31 Mar 2025 02:38:07 +0000 (UTC)
Received: from [127.0.1.1] (localhost [127.0.0.1])
	by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EB1AD687CC2;
	Mon, 31 Mar 2025 05:38:02 +0300 (EEST)
Received: from vidala.pars.ee (vidala.pars.ee [116.203.72.101])
 by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C71CC687BE0
 for <ffmpeg-devel@ffmpeg.org>; Mon, 31 Mar 2025 05:37:56 +0300 (EEST)
DKIM-Signature: v=1; a=rsa-sha256; s=202405r; d=lynne.ee; c=relaxed/relaxed;
 h=Message-ID:Date:Subject:To:From; t=1743388674; bh=bhhXYLpfHf2ic24xEzt1ATP
 n/cIL/HvbU3v9eUiqM4s=; b=oU7PKJ40gPDhluRSJU+mWnU0uRgo4q523RQVVkRMvzr+7Q6pd3
 B3r3t1+ocRjzW3bcIc+oLqX6JqmPHUXvKPJmmi4TZmbMkgRJF+HCEvUszIYYyaSsg5iXg8m4AKE
 LruLtQJ2paLHcsIUf7pbjxbEkQn4+RDC0lBJDUgrl+wWK5MnUwMvHNXTxjzcNeAVe3UL7VhiDE3
 3NT0UA8Barr6S/8NITzb8qLgacYnVL8IjyAST8CXPtLIChMTYmI6HpKZJoZ4Wf15C8xtz7J+aup
 VJV3rrhcqR2AyBE9Y7XKqqXzwHJwP+y+9Fz0QgAidbD9vDw6ydwxiLge8Bv+9XeCJGg==;
DKIM-Signature: v=1; a=ed25519-sha256; s=202405e; d=lynne.ee; c=relaxed/relaxed;
 h=Message-ID:Date:Subject:To:From; t=1743388674; bh=bhhXYLpfHf2ic24xEzt1ATP
 n/cIL/HvbU3v9eUiqM4s=; b=sFyfIAg4SEX8FicWz3r6sRC5205jjYt5PT1lWlggLU8jJKCP7H
 +MQQJHbzhVG4qpG8MNS4nieFbG8iByBlQHCg==;
From: Lynne <dev@lynne.ee>
To: ffmpeg-devel@ffmpeg.org
Date: Mon, 31 Mar 2025 04:37:39 +0200
Message-ID: <20250331023753.285499-3-dev@lynne.ee>
X-Mailer: git-send-email 2.49.0
In-Reply-To: <20250331023753.285499-1-dev@lynne.ee>
References: <20250331023753.285499-1-dev@lynne.ee>
MIME-Version: 1.0
Subject: [FFmpeg-devel] [PATCH 3/6] vulkan_decode: move temporary Vulkan
 structs into each codec
X-BeenThere: ffmpeg-devel@ffmpeg.org
X-Mailman-Version: 2.1.29
Precedence: list
List-Id: FFmpeg development discussions and patches <ffmpeg-devel.ffmpeg.org>
List-Unsubscribe: <https://ffmpeg.org/mailman/options/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=unsubscribe>
List-Archive: <https://ffmpeg.org/pipermail/ffmpeg-devel>
List-Post: <mailto:ffmpeg-devel@ffmpeg.org>
List-Help: <mailto:ffmpeg-devel-request@ffmpeg.org?subject=help>
List-Subscribe: <https://ffmpeg.org/mailman/listinfo/ffmpeg-devel>,
 <mailto:ffmpeg-devel-request@ffmpeg.org?subject=subscribe>
Reply-To: FFmpeg development discussions and patches <ffmpeg-devel@ffmpeg.org>
Cc: Lynne <dev@lynne.ee>
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: 7bit
Errors-To: ffmpeg-devel-bounces@ffmpeg.org
Sender: "ffmpeg-devel" <ffmpeg-devel-bounces@ffmpeg.org>
Archived-At: <https://master.gitmailbox.com/ffmpegdev/20250331023753.285499-3-dev@lynne.ee/>
List-Archive: <https://master.gitmailbox.com/ffmpegdev/>
List-Post: <mailto:ffmpegdev@gitmailbox.com>

Required for next refactor.
---
 libavcodec/vulkan_av1.c    | 30 +++++++++++++++++++++---------
 libavcodec/vulkan_decode.c | 20 ++++++++++----------
 libavcodec/vulkan_decode.h | 13 +------------
 libavcodec/vulkan_h264.c   | 32 ++++++++++++++++++++++----------
 libavcodec/vulkan_hevc.c   | 28 ++++++++++++++++++++--------
 5 files changed, 74 insertions(+), 49 deletions(-)

diff --git a/libavcodec/vulkan_av1.c b/libavcodec/vulkan_av1.c
index 115db8badb..c4ae0bb2ab 100644
--- a/libavcodec/vulkan_av1.c
+++ b/libavcodec/vulkan_av1.c
@@ -66,6 +66,17 @@ typedef struct AV1VulkanDecodePicture {
     StdVideoDecodeAV1ReferenceInfo      std_refs  [AV1_NUM_REF_FRAMES];
     VkVideoDecodeAV1DpbSlotInfoKHR      vkav1_refs[AV1_NUM_REF_FRAMES];
 
+    /* Current picture */
+    VkVideoPictureResourceInfoKHR   ref;
+    VkVideoReferenceSlotInfoKHR     ref_slot;
+
+    /* Picture refs. H264 has the maximum number of refs (36) of any supported codec. */
+    VkVideoPictureResourceInfoKHR   refs     [36];
+    VkVideoReferenceSlotInfoKHR     ref_slots[36];
+
+    /* Main decoding struct */
+    VkVideoDecodeInfoKHR            decode_info;
+
     uint8_t frame_id_set;
     uint8_t frame_id;
     uint8_t ref_frame_sign_bias_mask;
@@ -295,7 +306,7 @@ static int vk_av1_start_frame(AVCodecContext          *avctx,
             continue;
 
         for (int j = 0; j < ref_count; j++) {
-            if (vp->ref_slots[j].slotIndex == hp->frame_id) {
+            if (ap->ref_slots[j].slotIndex == hp->frame_id) {
                 found = 1;
                 break;
             }
@@ -303,8 +314,8 @@ static int vk_av1_start_frame(AVCodecContext          *avctx,
         if (found)
             continue;
 
-        err = vk_av1_fill_pict(avctx, &ap->ref_src[ref_count], &vp->ref_slots[ref_count],
-                               &vp->refs[ref_count], &ap->std_refs[ref_count], &ap->vkav1_refs[ref_count],
+        err = vk_av1_fill_pict(avctx, &ap->ref_src[ref_count], &ap->ref_slots[ref_count],
+                               &ap->refs[ref_count], &ap->std_refs[ref_count], &ap->vkav1_refs[ref_count],
                                ref_frame, 0, 0, ref_frame->order_hints);
         if (err < 0)
             return err;
@@ -312,7 +323,7 @@ static int vk_av1_start_frame(AVCodecContext          *avctx,
         ref_count++;
     }
 
-    err = vk_av1_fill_pict(avctx, NULL, &vp->ref_slot, &vp->ref,
+    err = vk_av1_fill_pict(avctx, NULL, &ap->ref_slot, &ap->ref,
                            &ap->std_ref,
                            &ap->vkav1_ref,
                            pic, 1, apply_grain, NULL);
@@ -339,13 +350,13 @@ static int vk_av1_start_frame(AVCodecContext          *avctx,
             ap->av1_pic_info.referenceNameSlotIndices[i] = hp->frame_id;
     }
 
-    vp->decode_info = (VkVideoDecodeInfoKHR) {
+    ap->decode_info = (VkVideoDecodeInfoKHR) {
         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR,
         .pNext = &ap->av1_pic_info,
         .flags = 0x0,
-        .pSetupReferenceSlot = &vp->ref_slot,
+        .pSetupReferenceSlot = &ap->ref_slot,
         .referenceSlotCount = ref_count,
-        .pReferenceSlots = vp->ref_slots,
+        .pReferenceSlots = ap->ref_slots,
         .dstPictureResource = (VkVideoPictureResourceInfoKHR) {
             .sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR,
             .codedOffset = (VkOffset2D){ 0, 0 },
@@ -618,7 +629,7 @@ static int vk_av1_end_frame(AVCodecContext *avctx)
             return err;
     }
 
-    for (int i = 0; i < vp->decode_info.referenceSlotCount; i++) {
+    for (int i = 0; i < ap->decode_info.referenceSlotCount; i++) {
         const AV1Frame *rp = ap->ref_src[i];
         AV1VulkanDecodePicture *rhp = rp->hwaccel_picture_private;
 
@@ -629,7 +640,8 @@ static int vk_av1_end_frame(AVCodecContext *avctx)
     av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i tiles\n",
            vp->slices_size, ap->av1_pic_info.tileCount);
 
-    return ff_vk_decode_frame(avctx, pic->f, vp, rav, rvp);
+    return ff_vk_decode_frame(avctx, &ap->decode_info,
+                              pic->f, vp, rav, rvp);
 }
 
 static void vk_av1_free_frame_priv(AVRefStructOpaque _hwctx, void *data)
diff --git a/libavcodec/vulkan_decode.c b/libavcodec/vulkan_decode.c
index 48a206e3c0..058efe3037 100644
--- a/libavcodec/vulkan_decode.c
+++ b/libavcodec/vulkan_decode.c
@@ -354,7 +354,7 @@ void ff_vk_decode_flush(AVCodecContext *avctx)
     ff_vk_exec_submit(&ctx->s, exec);
 }
 
-int ff_vk_decode_frame(AVCodecContext *avctx,
+int ff_vk_decode_frame(AVCodecContext *avctx, VkVideoDecodeInfoKHR *decode_info,
                        AVFrame *pic,    FFVulkanDecodePicture *vp,
                        AVFrame *rpic[], FFVulkanDecodePicture *rvkp[])
 {
@@ -379,8 +379,8 @@ int ff_vk_decode_frame(AVCodecContext *avctx,
         .videoSessionParameters = dec->session_params ?
                                   *((VkVideoSessionParametersKHR *)dec->session_params->data) :
                                   VK_NULL_HANDLE,
-        .referenceSlotCount = vp->decode_info.referenceSlotCount,
-        .pReferenceSlots = vp->decode_info.pReferenceSlots,
+        .referenceSlotCount = decode_info->referenceSlotCount,
+        .pReferenceSlots = decode_info->pReferenceSlots,
     };
     VkVideoEndCodingInfoKHR decode_end = {
         .sType = VK_STRUCTURE_TYPE_VIDEO_END_CODING_INFO_KHR,
@@ -396,7 +396,7 @@ int ff_vk_decode_frame(AVCodecContext *avctx,
     /* The current decoding reference has to be bound as an inactive reference */
     VkVideoReferenceSlotInfoKHR *cur_vk_ref;
     cur_vk_ref = (void *)&decode_start.pReferenceSlots[decode_start.referenceSlotCount];
-    cur_vk_ref[0] = vp->ref_slot;
+    cur_vk_ref[0] = *decode_info->pSetupReferenceSlot;
     cur_vk_ref[0].slotIndex = -1;
     decode_start.referenceSlotCount++;
 
@@ -420,9 +420,9 @@ int ff_vk_decode_frame(AVCodecContext *avctx,
         }
     }
 
-    vp->decode_info.srcBuffer       = sd_buf->buf;
-    vp->decode_info.srcBufferOffset = 0;
-    vp->decode_info.srcBufferRange  = data_size;
+    decode_info->srcBuffer       = sd_buf->buf;
+    decode_info->srcBufferOffset = 0;
+    decode_info->srcBufferRange  = data_size;
 
     /* Start command buffer recording */
     err = ff_vk_exec_start(&ctx->s, exec);
@@ -488,7 +488,7 @@ int ff_vk_decode_frame(AVCodecContext *avctx,
     if (!layered_dpb) {
         /* All references (apart from the current) for non-layered refs */
 
-        for (int i = 0; i < vp->decode_info.referenceSlotCount; i++) {
+        for (int i = 0; i < decode_info->referenceSlotCount; i++) {
             AVFrame *ref_frame = rpic[i];
             FFVulkanDecodePicture *rvp = rvkp[i];
             AVFrame *ref = rvp->dpb_frame ? rvp->dpb_frame : ref_frame;
@@ -533,7 +533,7 @@ int ff_vk_decode_frame(AVCodecContext *avctx,
                                         &img_bar[nb_img_bar], &nb_img_bar);
             }
         }
-    } else if (vp->decode_info.referenceSlotCount ||
+    } else if (decode_info->referenceSlotCount ||
                vp->view.out[0] != vp->view.ref[0]) {
         /* Single barrier for a single layered ref */
         err = ff_vk_exec_add_dep_frame(&ctx->s, exec, ctx->common.layered_frame,
@@ -553,7 +553,7 @@ int ff_vk_decode_frame(AVCodecContext *avctx,
 
     /* Start, use parameters, decode and end decoding */
     vk->CmdBeginVideoCodingKHR(cmd_buf, &decode_start);
-    vk->CmdDecodeVideoKHR(cmd_buf, &vp->decode_info);
+    vk->CmdDecodeVideoKHR(cmd_buf, decode_info);
     vk->CmdEndVideoCodingKHR(cmd_buf, &decode_end);
 
     /* End recording and submit for execution */
diff --git a/libavcodec/vulkan_decode.h b/libavcodec/vulkan_decode.h
index 4bd755c1f6..6c3e1486b0 100644
--- a/libavcodec/vulkan_decode.h
+++ b/libavcodec/vulkan_decode.h
@@ -96,17 +96,6 @@ typedef struct FFVulkanDecodePicture {
     VkSemaphore                     sem;
     uint64_t                        sem_value;
 
-    /* Current picture */
-    VkVideoPictureResourceInfoKHR   ref;
-    VkVideoReferenceSlotInfoKHR     ref_slot;
-
-    /* Picture refs. H264 has the maximum number of refs (36) of any supported codec. */
-    VkVideoPictureResourceInfoKHR   refs     [36];
-    VkVideoReferenceSlotInfoKHR     ref_slots[36];
-
-    /* Main decoding struct */
-    VkVideoDecodeInfoKHR            decode_info;
-
     /* Slice data */
     AVBufferRef                    *slices_buf;
     size_t                          slices_size;
@@ -165,7 +154,7 @@ int ff_vk_decode_add_slice(AVCodecContext *avctx, FFVulkanDecodePicture *vp,
 /**
  * Decode a frame.
  */
-int ff_vk_decode_frame(AVCodecContext *avctx,
+int ff_vk_decode_frame(AVCodecContext *avctx, VkVideoDecodeInfoKHR *decode_info,
                        AVFrame *pic,    FFVulkanDecodePicture *vp,
                        AVFrame *rpic[], FFVulkanDecodePicture *rvkp[]);
 
diff --git a/libavcodec/vulkan_h264.c b/libavcodec/vulkan_h264.c
index d950c6948f..71a9c06801 100644
--- a/libavcodec/vulkan_h264.c
+++ b/libavcodec/vulkan_h264.c
@@ -47,6 +47,17 @@ typedef struct H264VulkanDecodePicture {
     /* Current picture (contd.) */
     StdVideoDecodeH264PictureInfo   h264pic;
     VkVideoDecodeH264PictureInfoKHR h264_pic_info;
+
+    /* Current picture */
+    VkVideoPictureResourceInfoKHR   ref;
+    VkVideoReferenceSlotInfoKHR     ref_slot;
+
+    /* Picture refs. H264 has the maximum number of refs (36) of any supported codec. */
+    VkVideoPictureResourceInfoKHR   refs     [36];
+    VkVideoReferenceSlotInfoKHR     ref_slots[36];
+
+    /* Main decoding struct */
+    VkVideoDecodeInfoKHR            decode_info;
 } H264VulkanDecodePicture;
 
 const static int h264_scaling_list8_order[] = { 0, 3, 1, 4, 2, 5 };
@@ -380,7 +391,7 @@ static int vk_h264_start_frame(AVCodecContext          *avctx,
         }
     }
 
-    err = vk_h264_fill_pict(avctx, NULL, &vp->ref_slot, &vp->ref,
+    err = vk_h264_fill_pict(avctx, NULL, &hp->ref_slot, &hp->ref,
                             &hp->vkh264_ref, &hp->h264_ref, pic, 1,
                             h->DPB[dpb_slot_index].field_picture,
                             h->DPB[dpb_slot_index].reference,
@@ -397,8 +408,8 @@ static int vk_h264_start_frame(AVCodecContext          *avctx,
                 break;
             }
         }
-        err = vk_h264_fill_pict(avctx, &hp->ref_src[i], &vp->ref_slots[i],
-                                &vp->refs[i], &hp->vkh264_refs[i],
+        err = vk_h264_fill_pict(avctx, &hp->ref_src[i], &hp->ref_slots[i],
+                                &hp->refs[i], &hp->vkh264_refs[i],
                                 &hp->h264_refs[i], h->short_ref[i], 0,
                                 h->DPB[dpb_slot_index].field_picture,
                                 h->DPB[dpb_slot_index].reference,
@@ -420,8 +431,8 @@ static int vk_h264_start_frame(AVCodecContext          *avctx,
                 break;
             }
         }
-        err = vk_h264_fill_pict(avctx, &hp->ref_src[i], &vp->ref_slots[i],
-                                &vp->refs[i], &hp->vkh264_refs[i],
+        err = vk_h264_fill_pict(avctx, &hp->ref_src[i], &hp->ref_slots[i],
+                                &hp->refs[i], &hp->vkh264_refs[i],
                                 &hp->h264_refs[i], h->long_ref[r], 0,
                                 h->DPB[dpb_slot_index].field_picture,
                                 h->DPB[dpb_slot_index].reference,
@@ -454,13 +465,13 @@ static int vk_h264_start_frame(AVCodecContext          *avctx,
         .pStdPictureInfo = &hp->h264pic,
     };
 
-    vp->decode_info = (VkVideoDecodeInfoKHR) {
+    hp->decode_info = (VkVideoDecodeInfoKHR) {
         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR,
         .pNext = &hp->h264_pic_info,
         .flags = 0x0,
-        .pSetupReferenceSlot = &vp->ref_slot,
+        .pSetupReferenceSlot = &hp->ref_slot,
         .referenceSlotCount = h->short_ref_count + h->long_ref_count,
-        .pReferenceSlots = vp->ref_slots,
+        .pReferenceSlots = hp->ref_slots,
         .dstPictureResource = (VkVideoPictureResourceInfoKHR) {
             .sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR,
             .codedOffset = (VkOffset2D){ 0, 0 },
@@ -545,7 +556,7 @@ static int vk_h264_end_frame(AVCodecContext *avctx)
         hp->h264pic.pic_parameter_set_id = pic->pps->pps_id;
     }
 
-    for (int i = 0; i < vp->decode_info.referenceSlotCount; i++) {
+    for (int i = 0; i < hp->decode_info.referenceSlotCount; i++) {
         H264Picture *rp = hp->ref_src[i];
         H264VulkanDecodePicture *rhp = rp->hwaccel_picture_private;
 
@@ -556,7 +567,8 @@ static int vk_h264_end_frame(AVCodecContext *avctx)
     av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i slices\n",
            vp->slices_size, hp->h264_pic_info.sliceCount);
 
-    return ff_vk_decode_frame(avctx, pic->f, vp, rav, rvp);
+    return ff_vk_decode_frame(avctx, &hp->decode_info,
+                              pic->f, vp, rav, rvp);
 }
 
 static void vk_h264_free_frame_priv(AVRefStructOpaque _hwctx, void *data)
diff --git a/libavcodec/vulkan_hevc.c b/libavcodec/vulkan_hevc.c
index bc43591e19..e83f8346a0 100644
--- a/libavcodec/vulkan_hevc.c
+++ b/libavcodec/vulkan_hevc.c
@@ -127,6 +127,17 @@ typedef struct HEVCVulkanDecodePicture {
     /* Current picture (contd.) */
     StdVideoDecodeH265PictureInfo   h265pic;
     VkVideoDecodeH265PictureInfoKHR h265_pic_info;
+
+    /* Current picture */
+    VkVideoPictureResourceInfoKHR   ref;
+    VkVideoReferenceSlotInfoKHR     ref_slot;
+
+    /* Picture refs. H264 has the maximum number of refs (36) of any supported codec. */
+    VkVideoPictureResourceInfoKHR   refs     [36];
+    VkVideoReferenceSlotInfoKHR     ref_slots[36];
+
+    /* Main decoding struct */
+    VkVideoDecodeInfoKHR            decode_info;
 } HEVCVulkanDecodePicture;
 
 static int vk_hevc_fill_pict(AVCodecContext *avctx, HEVCFrame **ref_src,
@@ -749,7 +760,7 @@ static int vk_hevc_start_frame(AVCodecContext          *avctx,
             continue;
 
         if (ref == pic) {
-            err = vk_hevc_fill_pict(avctx, NULL, &vp->ref_slot, &vp->ref,
+            err = vk_hevc_fill_pict(avctx, NULL, &hp->ref_slot, &hp->ref,
                                     &hp->vkh265_ref, &hp->h265_ref, pic, 1, i);
             if (err < 0)
                 return err;
@@ -757,8 +768,8 @@ static int vk_hevc_start_frame(AVCodecContext          *avctx,
             continue;
         }
 
-        err = vk_hevc_fill_pict(avctx, &hp->ref_src[idx], &vp->ref_slots[idx],
-                                &vp->refs[idx], &hp->vkh265_refs[idx],
+        err = vk_hevc_fill_pict(avctx, &hp->ref_src[idx], &hp->ref_slots[idx],
+                                &hp->refs[idx], &hp->vkh265_refs[idx],
                                 &hp->h265_refs[idx], (HEVCFrame *)ref, 0, i);
         if (err < 0)
             return err;
@@ -806,13 +817,13 @@ static int vk_hevc_start_frame(AVCodecContext          *avctx,
         .sliceSegmentCount = 0,
     };
 
-    vp->decode_info = (VkVideoDecodeInfoKHR) {
+    hp->decode_info = (VkVideoDecodeInfoKHR) {
         .sType = VK_STRUCTURE_TYPE_VIDEO_DECODE_INFO_KHR,
         .pNext = &hp->h265_pic_info,
         .flags = 0x0,
-        .pSetupReferenceSlot = &vp->ref_slot,
+        .pSetupReferenceSlot = &hp->ref_slot,
         .referenceSlotCount = nb_refs,
-        .pReferenceSlots = vp->ref_slots,
+        .pReferenceSlots = hp->ref_slots,
         .dstPictureResource = (VkVideoPictureResourceInfoKHR) {
             .sType = VK_STRUCTURE_TYPE_VIDEO_PICTURE_RESOURCE_INFO_KHR,
             .codedOffset = (VkOffset2D){ 0, 0 },
@@ -915,7 +926,7 @@ static int vk_hevc_end_frame(AVCodecContext *avctx)
         hp->h265pic.pps_pic_parameter_set_id = pps->pps_id;
     }
 
-    for (int i = 0; i < vp->decode_info.referenceSlotCount; i++) {
+    for (int i = 0; i < hp->decode_info.referenceSlotCount; i++) {
         HEVCVulkanDecodePicture *rfhp = hp->ref_src[i]->hwaccel_picture_private;
         rav[i] = hp->ref_src[i]->f;
         rvp[i] = &rfhp->vp;
@@ -924,7 +935,8 @@ static int vk_hevc_end_frame(AVCodecContext *avctx)
     av_log(avctx, AV_LOG_VERBOSE, "Decoding frame, %"SIZE_SPECIFIER" bytes, %i slices\n",
            vp->slices_size, hp->h265_pic_info.sliceSegmentCount);
 
-    return ff_vk_decode_frame(avctx, pic->f, vp, rav, rvp);
+    return ff_vk_decode_frame(avctx, &hp->decode_info,
+                              pic->f, vp, rav, rvp);
 }
 
 static void vk_hevc_free_frame_priv(AVRefStructOpaque _hwctx, void *data)
-- 
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".