FFmpeg
Loading...
Searching...
No Matches
vf_v360_vulkan.c File Reference
#include "libavutil/opt.h"
#include "vulkan_filter.h"
#include "v360.h"
#include "filters.h"
#include "video.h"
#include "framesync.h"

Go to the source code of this file.

Data Structures

struct  PushData
 
struct  V360VulkanContext
 

Macros

#define degree2radian(degree)
 
#define radian2degree(radian)
 
#define OFFSET(x)
 
#define FLAGS   (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM)
 
#define DYNAMIC   (FLAGS | AV_OPT_FLAG_RUNTIME_PARAM)
 

Functions

static int get_rorder (char c)
 
static void multiply_matrix (float c[4][4], const float a[4][4], const float b[4][4])
 
static void calculate_iflat_range (int in, float ih_fov, float iv_fov, float *iflat_range)
 
static void calculate_flat_range (int out, float h_fov, float v_fov, float *flat_range)
 
static void calculate_rotation_matrix (float yaw, float pitch, float roll, float rot_mat[4][4], const int rotation_order[3])
 
static void config_params (AVFilterContext *ctx, AVFilterLink *inlink)
 
static av_cold int calculate_output_size (AVFilterContext *ctx)
 
static av_cold int init_filter (AVFilterContext *ctx, AVFrame *in)
 
static int v360_vulkan_filter_frame (FFFrameSync *fs)
 
static int v360_vulkan_activate (AVFilterContext *ctx)
 
static int process_command (AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
 
static av_cold int v360_vulkan_config_output (AVFilterLink *outlink)
 
static av_cold int v360_vulkan_init (AVFilterContext *avctx)
 
static void v360_vulkan_uninit (AVFilterContext *avctx)
 
 FRAMESYNC_DEFINE_CLASS (v360_vulkan, V360VulkanContext, fs)
 

Variables

const unsigned char ff_v360_comp_spv_data []
 
const unsigned int ff_v360_comp_spv_len
 
static const AVOption v360_vulkan_options []
 
static const AVFilterPad v360_vulkan_outputs []
 
const FFFilter ff_vf_v360_vulkan
 

Macro Definition Documentation

◆ degree2radian

#define degree2radian ( degree)
Value:
((degree) * M_PI / 180.f)
#define M_PI
Definition mathematics.h:67

Definition at line 88 of file vf_v360_vulkan.c.

Referenced by config_params().

◆ radian2degree

#define radian2degree ( radian)
Value:
((radian) * 180.f / M_PI)

Definition at line 89 of file vf_v360_vulkan.c.

Referenced by config_params().

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 692 of file vf_v360_vulkan.c.

◆ FLAGS

Definition at line 693 of file vf_v360_vulkan.c.

◆ DYNAMIC

#define DYNAMIC   (FLAGS | AV_OPT_FLAG_RUNTIME_PARAM)

Definition at line 694 of file vf_v360_vulkan.c.

Function Documentation

◆ get_rorder()

static int get_rorder ( char c)
static

Definition at line 59 of file vf_v360_vulkan.c.

Referenced by config_params().

◆ multiply_matrix()

static void multiply_matrix ( float c[4][4],
const float a[4][4],
const float b[4][4] )
static

Definition at line 76 of file vf_v360_vulkan.c.

Referenced by calculate_rotation_matrix().

◆ calculate_iflat_range()

static void calculate_iflat_range ( int in,
float ih_fov,
float iv_fov,
float * iflat_range )
inlinestatic

Definition at line 91 of file vf_v360_vulkan.c.

Referenced by config_params().

◆ calculate_flat_range()

static void calculate_flat_range ( int out,
float h_fov,
float v_fov,
float * flat_range )
inlinestatic

Definition at line 113 of file vf_v360_vulkan.c.

Referenced by config_params().

◆ calculate_rotation_matrix()

static void calculate_rotation_matrix ( float yaw,
float pitch,
float roll,
float rot_mat[4][4],
const int rotation_order[3] )
inlinestatic

Definition at line 135 of file vf_v360_vulkan.c.

Referenced by config_params().

◆ config_params()

static void config_params ( AVFilterContext * ctx,
AVFilterLink * inlink )
static

Definition at line 169 of file vf_v360_vulkan.c.

Referenced by process_command(), and v360_vulkan_config_output().

◆ calculate_output_size()

static av_cold int calculate_output_size ( AVFilterContext * ctx)
static

Definition at line 302 of file vf_v360_vulkan.c.

Referenced by v360_vulkan_config_output().

◆ init_filter()

static av_cold int init_filter ( AVFilterContext * ctx,
AVFrame * in )
static

Definition at line 439 of file vf_v360_vulkan.c.

Referenced by v360_vulkan_filter_frame().

◆ v360_vulkan_filter_frame()

static int v360_vulkan_filter_frame ( FFFrameSync * fs)
static

Definition at line 525 of file vf_v360_vulkan.c.

Referenced by v360_vulkan_config_output().

◆ v360_vulkan_activate()

static int v360_vulkan_activate ( AVFilterContext * ctx)
static

Definition at line 572 of file vf_v360_vulkan.c.

◆ process_command()

static int process_command ( AVFilterContext * ctx,
const char * cmd,
const char * args,
char * res,
int res_len,
int flags )
static

Definition at line 578 of file vf_v360_vulkan.c.

◆ v360_vulkan_config_output()

static av_cold int v360_vulkan_config_output ( AVFilterLink * outlink)
static

Definition at line 591 of file vf_v360_vulkan.c.

◆ v360_vulkan_init()

static av_cold int v360_vulkan_init ( AVFilterContext * avctx)
static

Definition at line 647 of file vf_v360_vulkan.c.

◆ v360_vulkan_uninit()

static void v360_vulkan_uninit ( AVFilterContext * avctx)
static

Definition at line 673 of file vf_v360_vulkan.c.

◆ FRAMESYNC_DEFINE_CLASS()

FRAMESYNC_DEFINE_CLASS ( v360_vulkan ,
V360VulkanContext ,
fs  )

Variable Documentation

◆ ff_v360_comp_spv_data

const unsigned char ff_v360_comp_spv_data[]
extern

Referenced by init_filter().

◆ ff_v360_comp_spv_len

const unsigned int ff_v360_comp_spv_len
extern

Referenced by init_filter().

◆ v360_vulkan_options

const AVOption v360_vulkan_options[]
static

Definition at line 695 of file vf_v360_vulkan.c.

◆ v360_vulkan_outputs

const AVFilterPad v360_vulkan_outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = v360_vulkan_config_output,
},
}
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static av_cold int v360_vulkan_config_output(AVFilterLink *outlink)

Definition at line 731 of file vf_v360_vulkan.c.

◆ ff_vf_v360_vulkan

const FFFilter ff_vf_v360_vulkan
Initial value:
= {
.p.name = "v360_vulkan",
.p.description = NULL_IF_CONFIG_SMALL("Convert 360 projection of video."),
.p.priv_class = &v360_vulkan_class,
.priv_size = sizeof(V360VulkanContext),
.preinit = v360_vulkan_framesync_preinit,
.flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
.process_command = process_command,
}
static int process_command(AVFilterContext *ctx, const char *cmd, const char *args, char *res, int res_len, int flags)
int(* init)(AVBSFContext *ctx)
Definition dts2pts.c:608
#define AVFILTER_FLAG_HWDEVICE
The filter can create hardware frames using AVFilterContext.hw_device_ctx.
Definition avfilter.h:193
#define AVFILTER_FLAG_DYNAMIC_INPUTS
The number of the filter inputs is not determined just by AVFilter.inputs.
Definition avfilter.h:161
static av_cold void uninit(AVBitStreamFilterContext *ctx)
static int activate(AVBitStreamFilterContext *ctx)
#define FILTER_OUTPUTS(array)
Definition filters.h:265
#define FF_FILTER_FLAG_HWFRAME_AWARE
The filter is aware of hardware frames, and any hardware frame context should not be automatically pr...
Definition filters.h:208
#define FILTER_SINGLE_PIXFMT(pix_fmt_)
Definition filters.h:254
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition internal.h:97
@ AV_PIX_FMT_VULKAN
Vulkan hardware images.
Definition pixfmt.h:379
static av_cold int preinit(AVBitStreamFilterContext *ctx)
Definition source.c:137
static int v360_vulkan_activate(AVFilterContext *ctx)
static const AVFilterPad v360_vulkan_outputs[]
static void v360_vulkan_uninit(AVFilterContext *avctx)
static av_cold int v360_vulkan_init(AVFilterContext *avctx)

Definition at line 739 of file vf_v360_vulkan.c.