FFmpeg
Loading...
Searching...
No Matches
vulkan_encode.c File Reference
#include "libavutil/mem.h"
#include "libavutil/avassert.h"
#include "vulkan_encode.h"
#include "config.h"
#include "libavutil/vulkan_loader.h"

Go to the source code of this file.

Functions

static void vulkan_encode_free_pic (FFVulkanEncodeContext *ctx, FFHWBaseEncodePicture *pic)
 
av_cold void ff_vulkan_encode_uninit (FFVulkanEncodeContext *ctx)
 Uninitialize encoder.
 
static int vulkan_encode_init (AVCodecContext *avctx, FFHWBaseEncodePicture *pic)
 
static int vulkan_encode_free (AVCodecContext *avctx, FFHWBaseEncodePicture *pic)
 
static int init_pic_rc (AVCodecContext *avctx, FFHWBaseEncodePicture *pic, VkVideoEncodeRateControlInfoKHR *rc_info, VkVideoEncodeRateControlLayerInfoKHR *rc_layer)
 
static int vulkan_encode_issue (AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic)
 
static void pkt_buf_free (void *opaque, uint8_t *data)
 
static void vulkan_encode_wait (AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic)
 
static int vulkan_encode_output (AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic, AVPacket *pkt)
 
int ff_vulkan_encode_receive_packet (AVCodecContext *avctx, AVPacket *pkt)
 Encode.
 
static void vulkan_encode_recon_free (void *opaque, uint8_t *data)
 
static int vulkan_encode_get_recon_frame (AVCodecContext *avctx, AVFrame *frame)
 
static int vulkan_encode_create_dpb (AVCodecContext *avctx, FFVulkanEncodeContext *ctx)
 
static av_cold int init_rc (AVCodecContext *avctx, FFVulkanEncodeContext *ctx)
 
av_cold int ff_vulkan_write_global_header (AVCodecContext *avctx, FFVulkanEncodeContext *ctx)
 Write out the extradata in case its needed.
 
av_cold int ff_vulkan_encode_init (AVCodecContext *avctx, FFVulkanEncodeContext *ctx, const FFVulkanEncodeDescriptor *vk_desc, const FFVulkanCodec *codec, void *codec_caps, void *quality_pnext)
 Initialize encoder.
 
int ff_vulkan_encode_create_session_params (AVCodecContext *avctx, FFVulkanEncodeContext *ctx, void *codec_params_pnext)
 Create session parameters.
 

Variables

const AVCodecHWConfigInternal *const ff_vulkan_encode_hw_configs []
 Paperwork.
 
static const FFHWEncodePictureOperation vulkan_base_encode_ops
 

Function Documentation

◆ vulkan_encode_free_pic()

static void vulkan_encode_free_pic ( FFVulkanEncodeContext * ctx,
FFHWBaseEncodePicture * pic )
static

Definition at line 31 of file vulkan_encode.c.

Referenced by ff_vulkan_encode_uninit(), and vulkan_encode_free().

◆ ff_vulkan_encode_uninit()

av_cold void ff_vulkan_encode_uninit ( FFVulkanEncodeContext * ctx)

Uninitialize encoder.

Definition at line 47 of file vulkan_encode.c.

Referenced by vulkan_encode_av1_close(), vulkan_encode_h264_close(), and vulkan_encode_h265_close().

◆ vulkan_encode_init()

static int vulkan_encode_init ( AVCodecContext * avctx,
FFHWBaseEncodePicture * pic )
static

Definition at line 75 of file vulkan_encode.c.

◆ vulkan_encode_free()

static int vulkan_encode_free ( AVCodecContext * avctx,
FFHWBaseEncodePicture * pic )
static

Definition at line 113 of file vulkan_encode.c.

◆ init_pic_rc()

static int init_pic_rc ( AVCodecContext * avctx,
FFHWBaseEncodePicture * pic,
VkVideoEncodeRateControlInfoKHR * rc_info,
VkVideoEncodeRateControlLayerInfoKHR * rc_layer )
static

Definition at line 122 of file vulkan_encode.c.

Referenced by vulkan_encode_issue().

◆ vulkan_encode_issue()

static int vulkan_encode_issue ( AVCodecContext * avctx,
FFHWBaseEncodePicture * base_pic )
static

Definition at line 148 of file vulkan_encode.c.

◆ pkt_buf_free()

static void pkt_buf_free ( void * opaque,
uint8_t * data )
static

Definition at line 471 of file vulkan_encode.c.

Referenced by vulkan_encode_output().

◆ vulkan_encode_wait()

static void vulkan_encode_wait ( AVCodecContext * avctx,
FFHWBaseEncodePicture * base_pic )
static

Definition at line 476 of file vulkan_encode.c.

Referenced by vulkan_encode_output().

◆ vulkan_encode_output()

static int vulkan_encode_output ( AVCodecContext * avctx,
FFHWBaseEncodePicture * base_pic,
AVPacket * pkt )
static

Definition at line 491 of file vulkan_encode.c.

◆ ff_vulkan_encode_receive_packet()

int ff_vulkan_encode_receive_packet ( AVCodecContext * avctx,
AVPacket * pkt )

Encode.

Definition at line 613 of file vulkan_encode.c.

◆ vulkan_encode_recon_free()

static void vulkan_encode_recon_free ( void * opaque,
uint8_t * data )
static

Definition at line 619 of file vulkan_encode.c.

Referenced by vulkan_encode_get_recon_frame().

◆ vulkan_encode_get_recon_frame()

static int vulkan_encode_get_recon_frame ( AVCodecContext * avctx,
AVFrame * frame )
static

Definition at line 626 of file vulkan_encode.c.

Referenced by vulkan_encode_create_dpb().

◆ vulkan_encode_create_dpb()

static int vulkan_encode_create_dpb ( AVCodecContext * avctx,
FFVulkanEncodeContext * ctx )
static

Definition at line 647 of file vulkan_encode.c.

Referenced by ff_vulkan_encode_init().

◆ init_rc()

static av_cold int init_rc ( AVCodecContext * avctx,
FFVulkanEncodeContext * ctx )
static

Definition at line 719 of file vulkan_encode.c.

Referenced by ff_vulkan_encode_init().

◆ ff_vulkan_write_global_header()

av_cold int ff_vulkan_write_global_header ( AVCodecContext * avctx,
FFVulkanEncodeContext * ctx )

Write out the extradata in case its needed.

Definition at line 780 of file vulkan_encode.c.

Referenced by vulkan_encode_h264_init(), and vulkan_encode_h265_init().

◆ ff_vulkan_encode_init()

av_cold int ff_vulkan_encode_init ( AVCodecContext * avctx,
FFVulkanEncodeContext * ctx,
const FFVulkanEncodeDescriptor * vk_desc,
const FFVulkanCodec * codec,
void * codec_caps,
void * quality_pnext )

Initialize encoder.

Definition at line 810 of file vulkan_encode.c.

Referenced by vulkan_encode_av1_init(), vulkan_encode_h264_init(), and vulkan_encode_h265_init().

◆ ff_vulkan_encode_create_session_params()

int ff_vulkan_encode_create_session_params ( AVCodecContext * avctx,
FFVulkanEncodeContext * ctx,
void * codec_params_pnext )

Create session parameters.

Definition at line 1141 of file vulkan_encode.c.

Referenced by create_session_params(), create_session_params(), and create_session_params().

Variable Documentation

◆ ff_vulkan_encode_hw_configs

const AVCodecHWConfigInternal* const ff_vulkan_encode_hw_configs[]
Initial value:
= {
HW_CONFIG_ENCODER_FRAMES(VULKAN, VULKAN),
}
#define NULL
Definition coverity.c:32
#define HW_CONFIG_ENCODER_FRAMES(format, device_type_)
Definition hwconfig.h:100

Paperwork.

Definition at line 26 of file vulkan_encode.c.

◆ vulkan_base_encode_ops

const FFHWEncodePictureOperation vulkan_base_encode_ops
static
Initial value:
= {
.priv_size = sizeof(FFVulkanEncodePicture),
}
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
static int vulkan_encode_init(AVCodecContext *avctx, FFHWBaseEncodePicture *pic)
static int vulkan_encode_free(AVCodecContext *avctx, FFHWBaseEncodePicture *pic)
static int vulkan_encode_output(AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic, AVPacket *pkt)
static int vulkan_encode_issue(AVCodecContext *avctx, FFHWBaseEncodePicture *base_pic)

Definition at line 605 of file vulkan_encode.c.

Referenced by ff_vulkan_encode_init().