FFmpeg
Data Structures | Functions
vulkan_decode.h File Reference
#include "codec_id.h"
#include "decode.h"
#include "hwaccel_internal.h"
#include "internal.h"
#include "vulkan_video.h"

Go to the source code of this file.

Data Structures

struct  FFVulkanDecodeDescriptor
 
struct  FFVulkanDecodeProfileData
 
struct  FFVulkanDecodeShared
 
struct  FFVulkanDecodeContext
 
struct  FFVulkanDecodePicture
 

Functions

int ff_vk_decode_init (AVCodecContext *avctx)
 Initialize decoder. More...
 
int ff_vk_update_thread_context (AVCodecContext *dst, const AVCodecContext *src)
 Synchronize the contexts between 2 threads. More...
 
int ff_vk_frame_params (AVCodecContext *avctx, AVBufferRef *hw_frames_ctx)
 Initialize hw_frames_ctx with the parameters needed to decode the stream using the parameters from avctx. More...
 
int ff_vk_params_invalidate (AVCodecContext *avctx, int t, const uint8_t *b, uint32_t s)
 Removes current session parameters to recreate them. More...
 
int ff_vk_decode_prepare_frame (FFVulkanDecodeContext *dec, AVFrame *pic, FFVulkanDecodePicture *vkpic, int is_current, int alloc_dpb)
 Prepare a frame, creates the image view, and sets up the dpb fields. More...
 
int ff_vk_decode_add_slice (AVCodecContext *avctx, FFVulkanDecodePicture *vp, const uint8_t *data, size_t size, int add_startcode, uint32_t *nb_slices, const uint32_t **offsets)
 Add slice data to frame. More...
 
int ff_vk_decode_frame (AVCodecContext *avctx, AVFrame *pic, FFVulkanDecodePicture *vp, AVFrame *rpic[], FFVulkanDecodePicture *rvkp[])
 Decode a frame. More...
 
void ff_vk_decode_free_frame (AVHWDeviceContext *dev_ctx, FFVulkanDecodePicture *vp)
 Free a frame and its state. More...
 
int ff_vk_get_decode_buffer (FFVulkanDecodeContext *ctx, AVBufferRef **buf, void *create_pNext, size_t size)
 Get an FFVkBuffer suitable for decoding from. More...
 
int ff_vk_decode_create_params (AVBufferRef **par_ref, void *logctx, FFVulkanDecodeShared *ctx, const VkVideoSessionParametersCreateInfoKHR *session_params_create)
 Create VkVideoSessionParametersKHR wrapped in an AVBufferRef. More...
 
void ff_vk_decode_flush (AVCodecContext *avctx)
 Flush decoder. More...
 
int ff_vk_decode_uninit (AVCodecContext *avctx)
 Free decoder. More...
 

Function Documentation

◆ ff_vk_decode_init()

int ff_vk_decode_init ( AVCodecContext avctx)

Initialize decoder.

Definition at line 1108 of file vulkan_decode.c.

◆ ff_vk_update_thread_context()

int ff_vk_update_thread_context ( AVCodecContext dst,
const AVCodecContext src 
)

Synchronize the contexts between 2 threads.

Definition at line 80 of file vulkan_decode.c.

◆ ff_vk_frame_params()

int ff_vk_frame_params ( AVCodecContext avctx,
AVBufferRef hw_frames_ctx 
)

Initialize hw_frames_ctx with the parameters needed to decode the stream using the parameters from avctx.

NOTE: if avctx->internal->hwaccel_priv_data exists, will partially initialize the context.

Definition at line 1007 of file vulkan_decode.c.

◆ ff_vk_params_invalidate()

int ff_vk_params_invalidate ( AVCodecContext avctx,
int  t,
const uint8_t *  b,
uint32_t  s 
)

Removes current session parameters to recreate them.

Definition at line 121 of file vulkan_decode.c.

◆ ff_vk_decode_prepare_frame()

int ff_vk_decode_prepare_frame ( FFVulkanDecodeContext dec,
AVFrame pic,
FFVulkanDecodePicture vkpic,
int  is_current,
int  alloc_dpb 
)

Prepare a frame, creates the image view, and sets up the dpb fields.

Definition at line 187 of file vulkan_decode.c.

Referenced by vk_av1_fill_pict(), vk_h264_fill_pict(), and vk_hevc_fill_pict().

◆ ff_vk_decode_add_slice()

int ff_vk_decode_add_slice ( AVCodecContext avctx,
FFVulkanDecodePicture vp,
const uint8_t *  data,
size_t  size,
int  add_startcode,
uint32_t *  nb_slices,
const uint32_t **  offsets 
)

Add slice data to frame.

Definition at line 251 of file vulkan_decode.c.

Referenced by vk_av1_decode_slice(), vk_h264_decode_slice(), and vk_hevc_decode_slice().

◆ ff_vk_decode_frame()

int ff_vk_decode_frame ( AVCodecContext avctx,
AVFrame pic,
FFVulkanDecodePicture vp,
AVFrame rpic[],
FFVulkanDecodePicture rvkp[] 
)

Decode a frame.

Definition at line 343 of file vulkan_decode.c.

Referenced by vk_av1_end_frame(), vk_h264_end_frame(), and vk_hevc_end_frame().

◆ ff_vk_decode_free_frame()

void ff_vk_decode_free_frame ( AVHWDeviceContext dev_ctx,
FFVulkanDecodePicture vp 
)

Free a frame and its state.

Definition at line 573 of file vulkan_decode.c.

Referenced by vk_av1_free_frame_priv(), vk_h264_free_frame_priv(), and vk_hevc_free_frame_priv().

◆ ff_vk_get_decode_buffer()

int ff_vk_get_decode_buffer ( FFVulkanDecodeContext ctx,
AVBufferRef **  buf,
void *  create_pNext,
size_t  size 
)

Get an FFVkBuffer suitable for decoding from.

◆ ff_vk_decode_create_params()

int ff_vk_decode_create_params ( AVBufferRef **  par_ref,
void *  logctx,
FFVulkanDecodeShared ctx,
const VkVideoSessionParametersCreateInfoKHR *  session_params_create 
)

Create VkVideoSessionParametersKHR wrapped in an AVBufferRef.

Definition at line 1064 of file vulkan_decode.c.

Referenced by vk_av1_create_params(), vk_h264_create_params(), and vk_hevc_create_params().

◆ ff_vk_decode_flush()

void ff_vk_decode_flush ( AVCodecContext avctx)

Flush decoder.

Definition at line 313 of file vulkan_decode.c.

Referenced by ff_vk_decode_init().

◆ ff_vk_decode_uninit()

int ff_vk_decode_uninit ( AVCodecContext avctx)

Free decoder.

Definition at line 1093 of file vulkan_decode.c.

Referenced by ff_vk_decode_init().