#include "av1dec.h"
#include "vulkan_decode.h"
Go to the source code of this file.
|
static int | vk_av1_fill_pict (AVCodecContext *avctx, const AV1Frame **ref_src, VkVideoReferenceSlotInfoKHR *ref_slot, VkVideoPictureResourceInfoKHR *ref, VkVideoDecodeAV1DpbSlotInfoMESA *vkav1_ref, const AV1Frame *pic, int is_current, int has_grain, int dpb_slot_index) |
|
static int | vk_av1_create_params (AVCodecContext *avctx, AVBufferRef **buf) |
|
static int | vk_av1_start_frame (AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size) |
|
static int | vk_av1_decode_slice (AVCodecContext *avctx, const uint8_t *data, uint32_t size) |
|
static int | vk_av1_end_frame (AVCodecContext *avctx) |
|
static void | vk_av1_free_frame_priv (FFRefStructOpaque _hwctx, void *data) |
|
◆ MAX_TILES
◆ vk_av1_fill_pict()
◆ vk_av1_create_params()
◆ vk_av1_start_frame()
◆ vk_av1_decode_slice()
static int vk_av1_decode_slice |
( |
AVCodecContext * |
avctx, |
|
|
const uint8_t * |
data, |
|
|
uint32_t |
size |
|
) |
| |
|
static |
◆ vk_av1_end_frame()
◆ vk_av1_free_frame_priv()
◆ ff_vk_dec_av1_ext
const VkExtensionProperties ff_vk_dec_av1_ext |
◆ ff_av1_vulkan_hwaccel
Initial value:= {
.p.name = "av1_vulkan",
}
Definition at line 552 of file vulkan_av1.c.
static int vk_av1_start_frame(AVCodecContext *avctx, av_unused const uint8_t *buffer, av_unused uint32_t size)
@ AV_PIX_FMT_VULKAN
Vulkan hardware images.
static int vk_av1_end_frame(AVCodecContext *avctx)
int(* init)(AVBSFContext *ctx)
#define HWACCEL_CAP_ASYNC_SAFE
Header providing the internals of AVHWAccel.
int ff_vk_decode_uninit(AVCodecContext *avctx)
Free decoder.
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 av...
the pkt_dts and pkt_pts fields in AVFrame will work as usual Restrictions on codec whose streams don t reset across will not work because their bitstreams cannot be decoded in parallel *The contents of buffers must not be read before as well as code calling up to before the decode process starts Call have update_thread_context() run it in the next thread. Add AV_CODEC_CAP_FRAME_THREADS to the codec capabilities. There will be very little speed gain at this point but it should work. If there are inter-frame dependencies
void ff_vk_decode_flush(AVCodecContext *avctx)
Flush decoder.
int ff_vk_params_invalidate(AVCodecContext *avctx, int t, const uint8_t *b, uint32_t s)
Removes current session parameters to recreate them.
#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_SPEC_VERSION
int ff_vk_update_thread_context(AVCodecContext *dst, const AVCodecContext *src)
Synchronize the contexts between 2 threads.
void(* flush)(AVBSFContext *ctx)
int ff_vk_decode_init(AVCodecContext *avctx)
Initialize decoder.
static av_cold int uninit(AVCodecContext *avctx)
#define VK_STD_VULKAN_VIDEO_CODEC_AV1_DECODE_EXTENSION_NAME
static int vk_av1_decode_slice(AVCodecContext *avctx, const uint8_t *data, uint32_t size)
static void vk_av1_free_frame_priv(FFRefStructOpaque _hwctx, void *data)