FFmpeg
Loading...
Searching...
No Matches
vf_scale_cuda.c File Reference
#include <float.h>
#include <stdio.h>
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/common.h"
#include "libavutil/hwcontext.h"
#include "libavutil/hwcontext_cuda_internal.h"
#include "libavutil/cuda_check.h"
#include "libavutil/internal.h"
#include "libavutil/mem.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "libavutil/refstruct.h"
#include "libswscale/filters.h"
#include "avfilter.h"
#include "filters.h"
#include "scale_eval.h"
#include "video.h"
#include "cuda/load_helper.h"
#include "vf_scale_cuda.h"

Go to the source code of this file.

Data Structures

struct  format_entry
 
struct  CUDAScalePassPlan
 
struct  CUDAScaleFilter
 
struct  CUDATex
 
struct  CUDAScaleFilterSet
 
struct  CUDAScaleContext
 

Macros

#define DIV_UP(a, b)
 
#define BLOCKX   32
 
#define BLOCKY   16
 
#define CHECK_CU(x)
 
#define OFFSET(x)
 
#define FLAGS   (AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM)
 

Enumerations

enum  {
  INTERP_ALGO_DEFAULT , INTERP_ALGO_NEAREST , INTERP_ALGO_BILINEAR , INTERP_ALGO_BICUBIC ,
  INTERP_ALGO_LANCZOS , INTERP_ALGO_COUNT
}
 
enum  { FILTER_OUT , FILTER_TMP , FILTER_NB }
 
enum  { CUDA_SCALE_DIR_NONE = -1 , CUDA_SCALE_DIR_X , CUDA_SCALE_DIR_Y }
 
enum  { CUDA_SCALE_PLANE_PRIMARY = 1 << 0 , CUDA_SCALE_PLANE_CHROMA = 1 << 1 }
 

Functions

static int cudascale_plane_needs_scale (int in_size, int out_size, int in_sub, int out_sub)
 
static int cudascale_plane_is_downscaled (int in_size, int out_size, int in_sub, int out_sub)
 
static double cudascale_plane_virtual_size (int src_size, int in_size, int out_size, int in_sub, int out_sub)
 
static void cudascale_plan_passes (CUDAScalePassPlan *plan, int in_width, int in_height, int out_width, int out_height, int in_sub_x, int in_sub_y, int out_sub_x, int out_sub_y, int has_chroma)
 
static av_cold int cudascale_init (AVFilterContext *ctx)
 
static void filter_uninit (CudaFunctions *cu, CUDAScaleFilter *filter)
 
static void cuda_tex_uninit (CudaFunctions *cu, CUDATex *t)
 
static void filter_set_uninit (CudaFunctions *cu, CUDAScaleFilterSet *set)
 
static av_cold void cudascale_uninit (AVFilterContext *ctx)
 
static av_cold int init_hwframe_ctx (CUDAScaleContext *s, AVBufferRef *device_ctx, int width, int height)
 
static int inter_buf_init (AVFilterContext *ctx, CUDATex *tex, int out_width, int in_height, int use_float, unsigned int planes)
 
static int format_is_supported (enum AVPixelFormat fmt)
 
static const char * get_format_name (enum AVPixelFormat fmt)
 
static av_cold void set_format_info (AVFilterContext *ctx, enum AVPixelFormat in_format, enum AVPixelFormat out_format)
 
static av_cold int init_processing_chain (AVFilterContext *ctx, int in_width, int in_height, int out_width, int out_height)
 
static av_cold int cudascale_load_functions (AVFilterContext *ctx)
 
static int cudascale_filter_init (AVFilterContext *ctx, CUDAScaleFilter *f, int src_size, int dst_size, double virtual_size, int needs_scale)
 
static int cudascale_filter_set_init (AVFilterContext *ctx, CUDAScaleFilterSet *set, int in_width, int in_height, int normalize_crop)
 
static int cudascale_prepare_filter_set (AVFilterContext *ctx, int in_width, int in_height, int normalize_crop)
 
static av_cold int cudascale_setup_filters (AVFilterContext *ctx, int in_width, int in_height)
 
static av_cold int cudascale_config_props (AVFilterLink *outlink)
 
static int cudascale_frame_geometry (AVFilterContext *ctx, const AVFrame *frame, int *width, int *height, int *normalize_crop)
 
static int cuda_tex_map_frame (AVFilterContext *ctx, const AVFrame *frame, const int depths[4], const int channels[4], CUDATex *tex, int use_linear, int as_integer)
 
static int call_resize_kernel (AVFilterContext *ctx, CUfunction func, const CUtexObject src_tex[4], int src_left, int src_top, int src_width, int src_height, const CUdeviceptr out_data[4], int dst_width, int dst_height, int dst_pitch, int mpeg_range, const CUDAScaleFilter *filter)
 
static int scalecuda_resize (AVFilterContext *ctx, const CUDAScaleFilterSet *set, int pass, const CUDATex *out, const CUDATex *in)
 
static int cudascale_scale (AVFilterContext *ctx, AVFrame *out, AVFrame *in, int in_width, int in_height, int normalize_crop)
 
static int cudascale_filter_frame (AVFilterLink *link, AVFrame *in)
 
static AVFramecudascale_get_video_buffer (AVFilterLink *inlink, int w, int h)
 

Variables

static const struct format_entry supported_formats []
 
static const AVOption options []
 
static const AVClass cudascale_class
 
static const AVFilterPad cudascale_inputs []
 
static const AVFilterPad cudascale_outputs []
 
const FFFilter ff_vf_scale_cuda
 

Macro Definition Documentation

◆ DIV_UP

#define DIV_UP ( a,
b )
Value:
( ((a) + (b) - 1) / (b) )
int a
#define b
Definition input.c:43

Definition at line 77 of file vf_scale_cuda.c.

Referenced by call_resize_kernel().

◆ BLOCKX

#define BLOCKX   32

Definition at line 78 of file vf_scale_cuda.c.

◆ BLOCKY

#define BLOCKY   16

Definition at line 79 of file vf_scale_cuda.c.

◆ CHECK_CU

#define CHECK_CU ( x)
Value:
FF_CUDA_CHECK_DL(ctx, s->hwctx->internal->cuda_dl, x)
static AVFormatContext * ctx
#define s(width, name)
Definition cbs_vp9.c:198
#define FF_CUDA_CHECK_DL(avclass, cudl, x)
Convenience wrapper for ff_cuda_check when dynamically loading cuda symbols.
Definition cuda_check.h:65

Definition at line 81 of file vf_scale_cuda.c.

Referenced by call_resize_kernel(), cuda_tex_map_frame(), cudascale_filter_frame(), cudascale_filter_init(), cudascale_load_functions(), cudascale_prepare_filter_set(), cudascale_setup_filters(), cudascale_uninit(), and inter_buf_init().

◆ OFFSET

#define OFFSET ( x)
Value:

Definition at line 1374 of file vf_scale_cuda.c.

◆ FLAGS

Definition at line 1375 of file vf_scale_cuda.c.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
INTERP_ALGO_DEFAULT 
INTERP_ALGO_NEAREST 
INTERP_ALGO_BILINEAR 
INTERP_ALGO_BICUBIC 
INTERP_ALGO_LANCZOS 
INTERP_ALGO_COUNT 

Definition at line 83 of file vf_scale_cuda.c.

◆ anonymous enum

anonymous enum
Enumerator
FILTER_OUT 
FILTER_TMP 
FILTER_NB 

Definition at line 94 of file vf_scale_cuda.c.

◆ anonymous enum

anonymous enum
Enumerator
CUDA_SCALE_DIR_NONE 
CUDA_SCALE_DIR_X 
CUDA_SCALE_DIR_Y 

Definition at line 100 of file vf_scale_cuda.c.

◆ anonymous enum

anonymous enum
Enumerator
CUDA_SCALE_PLANE_PRIMARY 
CUDA_SCALE_PLANE_CHROMA 

Definition at line 106 of file vf_scale_cuda.c.

Function Documentation

◆ cudascale_plane_needs_scale()

static int cudascale_plane_needs_scale ( int in_size,
int out_size,
int in_sub,
int out_sub )
static

Definition at line 202 of file vf_scale_cuda.c.

Referenced by cudascale_plan_passes().

◆ cudascale_plane_is_downscaled()

static int cudascale_plane_is_downscaled ( int in_size,
int out_size,
int in_sub,
int out_sub )
static

Definition at line 209 of file vf_scale_cuda.c.

Referenced by init_processing_chain().

◆ cudascale_plane_virtual_size()

static double cudascale_plane_virtual_size ( int src_size,
int in_size,
int out_size,
int in_sub,
int out_sub )
static

Definition at line 216 of file vf_scale_cuda.c.

Referenced by cudascale_filter_set_init().

◆ cudascale_plan_passes()

static void cudascale_plan_passes ( CUDAScalePassPlan * plan,
int in_width,
int in_height,
int out_width,
int out_height,
int in_sub_x,
int in_sub_y,
int out_sub_x,
int out_sub_y,
int has_chroma )
static

Definition at line 224 of file vf_scale_cuda.c.

Referenced by cudascale_filter_set_init().

◆ cudascale_init()

static av_cold int cudascale_init ( AVFilterContext * ctx)
static

Definition at line 265 of file vf_scale_cuda.c.

◆ filter_uninit()

static void filter_uninit ( CudaFunctions * cu,
CUDAScaleFilter * filter )
static

Definition at line 280 of file vf_scale_cuda.c.

Referenced by filter_set_uninit().

◆ cuda_tex_uninit()

static void cuda_tex_uninit ( CudaFunctions * cu,
CUDATex * t )
static

◆ filter_set_uninit()

static void filter_set_uninit ( CudaFunctions * cu,
CUDAScaleFilterSet * set )
static

Definition at line 301 of file vf_scale_cuda.c.

Referenced by cudascale_prepare_filter_set(), and cudascale_uninit().

◆ cudascale_uninit()

static av_cold void cudascale_uninit ( AVFilterContext * ctx)
static

Definition at line 311 of file vf_scale_cuda.c.

◆ init_hwframe_ctx()

static av_cold int init_hwframe_ctx ( CUDAScaleContext * s,
AVBufferRef * device_ctx,
int width,
int height )
static

Definition at line 336 of file vf_scale_cuda.c.

Referenced by init_processing_chain().

◆ inter_buf_init()

static int inter_buf_init ( AVFilterContext * ctx,
CUDATex * tex,
int out_width,
int in_height,
int use_float,
unsigned int planes )
static

Definition at line 373 of file vf_scale_cuda.c.

Referenced by cudascale_filter_set_init().

◆ format_is_supported()

static int format_is_supported ( enum AVPixelFormat fmt)
static

Definition at line 444 of file vf_scale_cuda.c.

Referenced by init_processing_chain().

◆ get_format_name()

static const char * get_format_name ( enum AVPixelFormat fmt)
static

Definition at line 452 of file vf_scale_cuda.c.

Referenced by cudascale_load_functions().

◆ set_format_info()

static av_cold void set_format_info ( AVFilterContext * ctx,
enum AVPixelFormat in_format,
enum AVPixelFormat out_format )
static

Definition at line 460 of file vf_scale_cuda.c.

Referenced by init_processing_chain().

◆ init_processing_chain()

static av_cold int init_processing_chain ( AVFilterContext * ctx,
int in_width,
int in_height,
int out_width,
int out_height )
static

Definition at line 486 of file vf_scale_cuda.c.

Referenced by cudascale_config_props().

◆ cudascale_load_functions()

static av_cold int cudascale_load_functions ( AVFilterContext * ctx)
static

Definition at line 570 of file vf_scale_cuda.c.

Referenced by cudascale_config_props().

◆ cudascale_filter_init()

static int cudascale_filter_init ( AVFilterContext * ctx,
CUDAScaleFilter * f,
int src_size,
int dst_size,
double virtual_size,
int needs_scale )
static

Definition at line 695 of file vf_scale_cuda.c.

Referenced by cudascale_filter_set_init().

◆ cudascale_filter_set_init()

static int cudascale_filter_set_init ( AVFilterContext * ctx,
CUDAScaleFilterSet * set,
int in_width,
int in_height,
int normalize_crop )
static

Definition at line 781 of file vf_scale_cuda.c.

Referenced by cudascale_prepare_filter_set().

◆ cudascale_prepare_filter_set()

static int cudascale_prepare_filter_set ( AVFilterContext * ctx,
int in_width,
int in_height,
int normalize_crop )
static

Definition at line 888 of file vf_scale_cuda.c.

Referenced by cudascale_scale(), and cudascale_setup_filters().

◆ cudascale_setup_filters()

static av_cold int cudascale_setup_filters ( AVFilterContext * ctx,
int in_width,
int in_height )
static

Definition at line 930 of file vf_scale_cuda.c.

Referenced by cudascale_config_props().

◆ cudascale_config_props()

static av_cold int cudascale_config_props ( AVFilterLink * outlink)
static

Definition at line 948 of file vf_scale_cuda.c.

◆ cudascale_frame_geometry()

static int cudascale_frame_geometry ( AVFilterContext * ctx,
const AVFrame * frame,
int * width,
int * height,
int * normalize_crop )
static

Definition at line 1024 of file vf_scale_cuda.c.

Referenced by cudascale_filter_frame().

◆ cuda_tex_map_frame()

static int cuda_tex_map_frame ( AVFilterContext * ctx,
const AVFrame * frame,
const int depths[4],
const int channels[4],
CUDATex * tex,
int use_linear,
int as_integer )
static

Definition at line 1055 of file vf_scale_cuda.c.

Referenced by cudascale_scale().

◆ call_resize_kernel()

static int call_resize_kernel ( AVFilterContext * ctx,
CUfunction func,
const CUtexObject src_tex[4],
int src_left,
int src_top,
int src_width,
int src_height,
const CUdeviceptr out_data[4],
int dst_width,
int dst_height,
int dst_pitch,
int mpeg_range,
const CUDAScaleFilter * filter )
static

Definition at line 1117 of file vf_scale_cuda.c.

Referenced by scalecuda_resize().

◆ scalecuda_resize()

static int scalecuda_resize ( AVFilterContext * ctx,
const CUDAScaleFilterSet * set,
int pass,
const CUDATex * out,
const CUDATex * in )
static

Definition at line 1164 of file vf_scale_cuda.c.

Referenced by cudascale_scale().

◆ cudascale_scale()

static int cudascale_scale ( AVFilterContext * ctx,
AVFrame * out,
AVFrame * in,
int in_width,
int in_height,
int normalize_crop )
static

Definition at line 1230 of file vf_scale_cuda.c.

Referenced by cudascale_filter_frame().

◆ cudascale_filter_frame()

static int cudascale_filter_frame ( AVFilterLink * link,
AVFrame * in )
static

Definition at line 1311 of file vf_scale_cuda.c.

◆ cudascale_get_video_buffer()

static AVFrame * cudascale_get_video_buffer ( AVFilterLink * inlink,
int w,
int h )
static

Definition at line 1365 of file vf_scale_cuda.c.

Variable Documentation

◆ supported_formats

const struct format_entry supported_formats[]
static
Initial value:
= {
{AV_PIX_FMT_YUV420P, "planar8"},
{AV_PIX_FMT_YUV422P, "planar8"},
{AV_PIX_FMT_YUV444P, "planar8"},
{AV_PIX_FMT_YUV420P10,"planar10"},
{AV_PIX_FMT_YUV422P10,"planar10"},
{AV_PIX_FMT_YUV444P10,"planar10"},
{AV_PIX_FMT_YUV444P16,"planar16"},
{AV_PIX_FMT_NV12, "semiplanar8"},
{AV_PIX_FMT_NV16, "semiplanar8"},
{AV_PIX_FMT_P010, "semiplanar10"},
{AV_PIX_FMT_P210, "semiplanar10"},
{AV_PIX_FMT_P012, "semiplanar16"},
{AV_PIX_FMT_P212, "semiplanar16"},
{AV_PIX_FMT_P016, "semiplanar16"},
{AV_PIX_FMT_P216, "semiplanar16"},
{AV_PIX_FMT_0RGB32, "bgr0"},
{AV_PIX_FMT_0BGR32, "rgb0"},
{AV_PIX_FMT_RGB32, "bgra"},
{AV_PIX_FMT_BGR32, "rgba"},
}
#define AV_PIX_FMT_0RGB32
Definition pixfmt.h:521
#define AV_PIX_FMT_P212
Definition pixfmt.h:624
#define AV_PIX_FMT_YUV420P10
Definition pixfmt.h:545
#define AV_PIX_FMT_P210
Definition pixfmt.h:622
#define AV_PIX_FMT_P012
Definition pixfmt.h:609
#define AV_PIX_FMT_P216
Definition pixfmt.h:626
#define AV_PIX_FMT_P010
Definition pixfmt.h:608
#define AV_PIX_FMT_P016
Definition pixfmt.h:610
#define AV_PIX_FMT_YUV422P10
Definition pixfmt.h:546
#define AV_PIX_FMT_YUV444P12MSB
Definition pixfmt.h:561
#define AV_PIX_FMT_BGR32
Definition pixfmt.h:519
@ AV_PIX_FMT_NV12
planar YUV 4:2:0, 12bpp, 1 plane for Y and 1 plane for the UV components, which are interleaved (firs...
Definition pixfmt.h:96
@ AV_PIX_FMT_YUV420P
planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples)
Definition pixfmt.h:73
@ AV_PIX_FMT_YUV422P
planar YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition pixfmt.h:77
@ AV_PIX_FMT_NV16
interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
Definition pixfmt.h:198
@ AV_PIX_FMT_YUV444P
planar YUV 4:4:4, 24bpp, (1 Cr & Cb sample per 1x1 Y samples)
Definition pixfmt.h:78
#define AV_PIX_FMT_YUV444P16
Definition pixfmt.h:558
#define AV_PIX_FMT_YUV444P10MSB
Definition pixfmt.h:560
#define AV_PIX_FMT_0BGR32
Definition pixfmt.h:522
#define AV_PIX_FMT_RGB32
Definition pixfmt.h:517
#define AV_PIX_FMT_YUV444P10
Definition pixfmt.h:548

Definition at line 53 of file vf_scale_cuda.c.

◆ options

const AVOption options[]
static
Initial value:
= {
{ "w", "Output video width", OFFSET(w_expr), AV_OPT_TYPE_STRING, { .str = "iw" }, .flags = FLAGS },
{ "h", "Output video height", OFFSET(h_expr), AV_OPT_TYPE_STRING, { .str = "ih" }, .flags = FLAGS },
{ "interp_algo", "Interpolation algorithm used for resizing", OFFSET(interp_algo), AV_OPT_TYPE_INT, { .i64 = INTERP_ALGO_DEFAULT }, 0, INTERP_ALGO_COUNT - 1, FLAGS, .unit = "interp_algo" },
{ "nearest", "nearest neighbour", 0, AV_OPT_TYPE_CONST, { .i64 = INTERP_ALGO_NEAREST }, 0, 0, FLAGS, .unit = "interp_algo" },
{ "bilinear", "bilinear", 0, AV_OPT_TYPE_CONST, { .i64 = INTERP_ALGO_BILINEAR }, 0, 0, FLAGS, .unit = "interp_algo" },
{ "bicubic", "bicubic", 0, AV_OPT_TYPE_CONST, { .i64 = INTERP_ALGO_BICUBIC }, 0, 0, FLAGS, .unit = "interp_algo" },
{ "lanczos", "lanczos", 0, AV_OPT_TYPE_CONST, { .i64 = INTERP_ALGO_LANCZOS }, 0, 0, FLAGS, .unit = "interp_algo" },
{ "format", "Output video pixel format", OFFSET(format), AV_OPT_TYPE_PIXEL_FMT, { .i64 = AV_PIX_FMT_NONE }, INT_MIN, INT_MAX, .flags=FLAGS },
{ "passthrough", "Do not process frames at all if parameters match", OFFSET(passthrough), AV_OPT_TYPE_BOOL, { .i64 = 1 }, 0, 1, FLAGS },
{ "use_filters", "Use generic filters instead of fixed function kernels", OFFSET(use_filters_opt), AV_OPT_TYPE_INT, { .i64 = -1 }, -1, 1, FLAGS, .unit = "use_filters" },
{ "auto", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = -1}, 0, 0, FLAGS, .unit = "use_filters" },
{ "param", "Algorithm-Specific parameter", OFFSET(param), AV_OPT_TYPE_FLOAT, { .dbl = SCALE_CUDA_PARAM_DEFAULT }, -FLT_MAX, FLT_MAX, FLAGS },
{ "force_original_aspect_ratio", "decrease or increase w/h if necessary to keep the original AR", OFFSET(force_original_aspect_ratio), AV_OPT_TYPE_INT, { .i64 = 0 }, 0, SCALE_FORCE_OAR_NB-1, FLAGS, .unit = "force_oar" },
{ "disable", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = SCALE_FORCE_OAR_DISABLE }, 0, 0, FLAGS, .unit = "force_oar" },
{ "decrease", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = SCALE_FORCE_OAR_DECREASE }, 0, 0, FLAGS, .unit = "force_oar" },
{ "increase", NULL, 0, AV_OPT_TYPE_CONST, {.i64 = SCALE_FORCE_OAR_INCREASE }, 0, 0, FLAGS, .unit = "force_oar" },
{ "force_divisible_by", "enforce that the output resolution is divisible by a defined integer when force_original_aspect_ratio is used", OFFSET(force_divisible_by), AV_OPT_TYPE_INT, { .i64 = 1 }, 1, 256, FLAGS },
{ "reset_sar", "reset SAR to 1 and scale to square pixels if scaling proportionally", OFFSET(reset_sar), AV_OPT_TYPE_BOOL, { .i64 = 0}, 0, 1, FLAGS },
{ NULL },
}
static const char *const format[]
Definition af_aiir.c:444
#define FLAGS
Definition cmdutils.c:598
#define NULL
Definition coverity.c:32
#define OFFSET(x)
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition opt.h:298
@ AV_OPT_TYPE_PIXEL_FMT
Underlying C type is enum AVPixelFormat.
Definition opt.h:306
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition opt.h:258
@ AV_OPT_TYPE_FLOAT
Underlying C type is float.
Definition opt.h:270
@ AV_OPT_TYPE_BOOL
Underlying C type is int.
Definition opt.h:326
@ AV_OPT_TYPE_STRING
Underlying C type is a uint8_t* that is either NULL or points to a C string allocated with the av_mal...
Definition opt.h:275
@ AV_PIX_FMT_NONE
Definition pixfmt.h:72
@ SCALE_FORCE_OAR_DISABLE
Definition scale_eval.h:25
@ SCALE_FORCE_OAR_NB
Definition scale_eval.h:28
@ SCALE_FORCE_OAR_INCREASE
Definition scale_eval.h:27
@ SCALE_FORCE_OAR_DECREASE
Definition scale_eval.h:26
@ INTERP_ALGO_LANCZOS
@ INTERP_ALGO_BICUBIC
@ INTERP_ALGO_DEFAULT
@ INTERP_ALGO_BILINEAR
@ INTERP_ALGO_COUNT
@ INTERP_ALGO_NEAREST
#define SCALE_CUDA_PARAM_DEFAULT

Definition at line 1376 of file vf_scale_cuda.c.

◆ cudascale_class

const AVClass cudascale_class
static
Initial value:
= {
.class_name = "cudascale",
.item_name = av_default_item_name,
.option = options,
}
const char * av_default_item_name(void *ptr)
Return the context name.
Definition log.c:241
#define LIBAVUTIL_VERSION_INT
Definition version.h:85

Definition at line 1398 of file vf_scale_cuda.c.

◆ cudascale_inputs

const AVFilterPad cudascale_inputs[]
static
Initial value:
= {
{
.name = "default",
.filter_frame = cudascale_filter_frame,
.get_buffer.video = cudascale_get_video_buffer,
},
}
@ AVMEDIA_TYPE_VIDEO
Definition avutil.h:200
static AVFrame * cudascale_get_video_buffer(AVFilterLink *inlink, int w, int h)
static int cudascale_filter_frame(AVFilterLink *link, AVFrame *in)

Definition at line 1405 of file vf_scale_cuda.c.

◆ cudascale_outputs

const AVFilterPad cudascale_outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = cudascale_config_props,
},
}
static av_cold int cudascale_config_props(AVFilterLink *outlink)

Definition at line 1414 of file vf_scale_cuda.c.

◆ ff_vf_scale_cuda

const FFFilter ff_vf_scale_cuda
Initial value:
= {
.p.name = "scale_cuda",
.p.description = NULL_IF_CONFIG_SMALL("GPU accelerated video resizer"),
.p.priv_class = &cudascale_class,
.init = cudascale_init,
.uninit = cudascale_uninit,
.priv_size = sizeof(CUDAScaleContext),
.flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
}
#define FILTER_INPUTS(array)
Definition filters.h:264
#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:88
@ AV_PIX_FMT_CUDA
HW acceleration through CUDA.
Definition pixfmt.h:260
static av_cold void cudascale_uninit(AVFilterContext *ctx)
static av_cold int cudascale_init(AVFilterContext *ctx)
static const AVClass cudascale_class
static const AVFilterPad cudascale_outputs[]
static const AVFilterPad cudascale_inputs[]

Definition at line 1422 of file vf_scale_cuda.c.