@@ -255,15 +255,17 @@ VkResult VkVideoEncoderAV1::ProcessDpb(VkSharedBaseObj<VkVideoEncodeFrameInfo>&
255255 if (encodeFrameInfo->setupImageResource != nullptr ) {
256256 assert (setupImageViewPictureResource);
257257 m_dpbAV1->FillStdReferenceInfo ((uint8_t ) dpbIndx, &pFrameInfo->stdReferenceInfo [numReferenceSlots]);
258- pFrameInfo->dpbSlotInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
259- pFrameInfo->dpbSlotInfo [numReferenceSlots].pNext = nullptr ;
260- pFrameInfo->dpbSlotInfo [numReferenceSlots].pStdReferenceInfo = &pFrameInfo->stdReferenceInfo [numReferenceSlots];
261258
262259 pFrameInfo->referenceSlotsInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR;
263- pFrameInfo->referenceSlotsInfo [numReferenceSlots].pNext = &pFrameInfo-> dpbSlotInfo [numReferenceSlots] ;
260+ pFrameInfo->referenceSlotsInfo [numReferenceSlots].pNext = nullptr ;
264261 pFrameInfo->referenceSlotsInfo [numReferenceSlots].slotIndex = dpbIndx;
265262 pFrameInfo->referenceSlotsInfo [numReferenceSlots].pPictureResource = setupImageViewPictureResource;
266263
264+ pFrameInfo->dpbSlotInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
265+ pFrameInfo->dpbSlotInfo [numReferenceSlots].pNext = nullptr ;
266+ pFrameInfo->dpbSlotInfo [numReferenceSlots].pStdReferenceInfo = &pFrameInfo->stdReferenceInfo [numReferenceSlots];
267+ vk::ChainNextVkStruct (pFrameInfo->referenceSlotsInfo [numReferenceSlots], pFrameInfo->dpbSlotInfo [numReferenceSlots]);
268+
267269 pFrameInfo->setupReferenceSlotInfo = pFrameInfo->referenceSlotsInfo [numReferenceSlots];
268270 pFrameInfo->encodeInfo .pSetupReferenceSlot = &pFrameInfo->setupReferenceSlotInfo ;
269271
@@ -315,26 +317,28 @@ VkResult VkVideoEncoderAV1::ProcessDpb(VkSharedBaseObj<VkVideoEncodeFrameInfo>&
315317 }
316318
317319 m_dpbAV1->FillStdReferenceInfo ((uint8_t )dpbIdx, &pFrameInfo->stdReferenceInfo [numReferenceSlots]);
320+
321+ pFrameInfo->dpbImageResources [numReferenceSlots] = dpbImageView;
322+
323+ pFrameInfo->referenceSlotsInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR;
324+ pFrameInfo->referenceSlotsInfo [numReferenceSlots].pNext = nullptr ;
325+ pFrameInfo->referenceSlotsInfo [numReferenceSlots].slotIndex = dpbIdx;
326+ pFrameInfo->referenceSlotsInfo [numReferenceSlots].pPictureResource =
327+ pFrameInfo->dpbImageResources [numReferenceSlots]->GetPictureResourceInfo ();
318328
319329 pFrameInfo->dpbSlotInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
320330 pFrameInfo->dpbSlotInfo [numReferenceSlots].pNext = nullptr ;
321331 pFrameInfo->dpbSlotInfo [numReferenceSlots].pStdReferenceInfo = &pFrameInfo->stdReferenceInfo [numReferenceSlots];
332+ vk::ChainNextVkStruct (pFrameInfo->referenceSlotsInfo [numReferenceSlots], pFrameInfo->dpbSlotInfo [numReferenceSlots]);
322333
323334 if (isIntraRefreshFrame) {
324335 pFrameInfo->referenceIntraRefreshInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_INTRA_REFRESH_INFO_KHR;
336+ pFrameInfo->referenceIntraRefreshInfo [numReferenceSlots].pNext = nullptr ;
325337 pFrameInfo->referenceIntraRefreshInfo [numReferenceSlots].dirtyIntraRefreshRegions =
326338 m_dpbAV1->GetDirtyIntraRefreshRegions ((int8_t )dpbIdx);
327-
328- pFrameInfo->dpbSlotInfo [numReferenceSlots].pNext = &pFrameInfo->referenceIntraRefreshInfo [numReferenceSlots];
339+ vk::ChainNextVkStruct (pFrameInfo->referenceSlotsInfo [numReferenceSlots], pFrameInfo->referenceIntraRefreshInfo [numReferenceSlots]);
329340 }
330341
331- pFrameInfo->referenceSlotsInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR;
332- pFrameInfo->referenceSlotsInfo [numReferenceSlots].pNext = &pFrameInfo->dpbSlotInfo [numReferenceSlots];
333- pFrameInfo->referenceSlotsInfo [numReferenceSlots].slotIndex = dpbIdx;
334- pFrameInfo->dpbImageResources [numReferenceSlots] = dpbImageView;
335- pFrameInfo->referenceSlotsInfo [numReferenceSlots].pPictureResource =
336- pFrameInfo->dpbImageResources [numReferenceSlots]->GetPictureResourceInfo ();
337-
338342 if (refNameMinus1 == pFrameInfo->stdPictureInfo .primary_ref_frame ) {
339343 primaryRefCdfOnly = false ;
340344 }
@@ -404,18 +408,20 @@ VkResult VkVideoEncoderAV1::ProcessDpb(VkSharedBaseObj<VkVideoEncodeFrameInfo>&
404408 } else {
405409 // reference itself is not present. Add it to the referenceSlotInfo and udpate referenceNameSlotIndices
406410 m_dpbAV1->FillStdReferenceInfo ((uint8_t )dpbIdx, &pFrameInfo->stdReferenceInfo [numReferenceSlots]);
407-
408- pFrameInfo->dpbSlotInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
409- pFrameInfo->dpbSlotInfo [numReferenceSlots].pNext = nullptr ;
410- pFrameInfo->dpbSlotInfo [numReferenceSlots].pStdReferenceInfo = &pFrameInfo->stdReferenceInfo [numReferenceSlots];
411+
412+ pFrameInfo->dpbImageResources [numReferenceSlots] = dpbImageView;
411413
412414 pFrameInfo->referenceSlotsInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_REFERENCE_SLOT_INFO_KHR;
413- pFrameInfo->referenceSlotsInfo [numReferenceSlots].pNext = &pFrameInfo-> dpbSlotInfo [numReferenceSlots] ;
415+ pFrameInfo->referenceSlotsInfo [numReferenceSlots].pNext = nullptr ;
414416 pFrameInfo->referenceSlotsInfo [numReferenceSlots].slotIndex = dpbIdx;
415- pFrameInfo->dpbImageResources [numReferenceSlots] = dpbImageView;
416417 pFrameInfo->referenceSlotsInfo [numReferenceSlots].pPictureResource =
417418 pFrameInfo->dpbImageResources [numReferenceSlots]->GetPictureResourceInfo ();
418419
420+ pFrameInfo->dpbSlotInfo [numReferenceSlots].sType = VK_STRUCTURE_TYPE_VIDEO_ENCODE_AV1_DPB_SLOT_INFO_KHR;
421+ pFrameInfo->dpbSlotInfo [numReferenceSlots].pNext = nullptr ;
422+ pFrameInfo->dpbSlotInfo [numReferenceSlots].pStdReferenceInfo = &pFrameInfo->stdReferenceInfo [numReferenceSlots];
423+ vk::ChainNextVkStruct (pFrameInfo->referenceSlotsInfo [numReferenceSlots], pFrameInfo->dpbSlotInfo [numReferenceSlots]);
424+
419425 assert (pFrameInfo->pictureInfo .referenceNameSlotIndices [pFrameInfo->stdPictureInfo .primary_ref_frame ] == -1 );
420426 pFrameInfo->pictureInfo .referenceNameSlotIndices [pFrameInfo->stdPictureInfo .primary_ref_frame ] = dpbIdx;
421427
0 commit comments