[FFmpeg-devel] libavcodec: add Vulkan common video code

Anton Khirnov anton at khirnov.net
Thu May 18 11:34:29 EEST 2023


> commit 3257feba101053b0b3689147c1a8850f68448f62
> Author: Lynne <dev at lynne.ee>
> Date:   Sun Dec 18 08:31:03 2022 +0100
> 
>     libavcodec: add Vulkan common video code
> 
> +static AVBufferRef *alloc_data_buf(void *opaque, size_t size)
> +{
> +    uint8_t *buf = av_mallocz(size);
> +    if (!buf)
> +        return NULL;
> +
> +    return av_buffer_create(buf, size, free_data_buf, opaque, 0);

leaks buf on av_buffer_create() failure.

> +av_cold int ff_vk_video_common_init(void *log, FFVulkanContext *s,
> +                                    FFVkVideoCommon *common,
> +                                    VkVideoSessionCreateInfoKHR *session_create)
> +{
> +    int err;
> +    VkResult ret;
> +    FFVulkanFunctions *vk = &s->vkfn;
> +    VkMemoryRequirements2 *mem_req = NULL;
> +    VkVideoSessionMemoryRequirementsKHR *mem = NULL;
> +    VkBindVideoSessionMemoryInfoKHR *bind_mem = NULL;
> +
> +    /* Create session */
> +    ret = vk->CreateVideoSessionKHR(s->hwctx->act_dev, session_create,
> +                                    s->hwctx->alloc, &common->session);
> +    if (ret != VK_SUCCESS)
> +        return AVERROR_EXTERNAL;
> +
> +    /* Get memory requirements */
> +    ret = vk->GetVideoSessionMemoryRequirementsKHR(s->hwctx->act_dev,
> +                                                   common->session,
> +                                                   &common->nb_mem,
> +                                                   NULL);
> +    if (ret != VK_SUCCESS) {
> +        err = AVERROR_EXTERNAL;
> +        goto fail;
> +    }
> +
> +    /* Allocate all memory needed to actually allocate memory */
> +    common->mem = av_mallocz(sizeof(*common->mem)*common->nb_mem);

av_calloc(), same below

-- 
Anton Khirnov


More information about the ffmpeg-devel mailing list