58 #define D(name) case VA_FILTER_SCALING_ ## name: return #name 103 VAProcPipelineParameterBuffer
params;
136 input_frame, output_frame);
140 params.filter_flags |= ctx->
mode;
180 #define STRING_OPTION(var_name, func_name, default_value) do { \ 181 if (ctx->var_name ## _string) { \ 182 int var = av_ ## func_name ## _from_name(ctx->var_name ## _string); \ 184 av_log(avctx, AV_LOG_ERROR, "Invalid %s.\n", #var_name); \ 185 return AVERROR(EINVAL); \ 187 ctx->var_name = var; \ 189 ctx->var_name = default_value; \ 201 #define OFFSET(x) offsetof(ScaleVAAPIContext, x) 202 #define FLAGS (AV_OPT_FLAG_FILTERING_PARAM|AV_OPT_FLAG_VIDEO_PARAM) 204 {
"w",
"Output video width",
206 {
"h",
"Output video height",
208 {
"format",
"Output video format (software format of hardware frames)",
210 {
"mode",
"Scaling mode",
212 0, VA_FILTER_SCALING_NL_ANAMORPHIC,
FLAGS,
"mode" },
213 {
"default",
"Use the default (depend on the driver) scaling algorithm",
215 {
"fast",
"Use fast scaling algorithm",
217 {
"hq",
"Use high quality scaling algorithm",
219 {
"nl_anamorphic",
"Use nolinear anamorphic scaling algorithm",
223 {
"out_color_matrix",
"Output colour matrix coefficient set",
225 {
"out_range",
"Output colour range",
228 {
"full",
"Full range",
230 {
"limited",
"Limited range",
232 {
"jpeg",
"Full range",
234 {
"mpeg",
"Limited range",
236 {
"tv",
"Limited range",
238 {
"pc",
"Full range",
241 {
"out_color_primaries",
"Output colour primaries",
244 {
"out_color_transfer",
"Output colour transfer characteristics",
247 {
"out_chroma_location",
"Output chroma sample location",
276 .
name =
"scale_vaapi",
282 .
inputs = scale_vaapi_inputs,
283 .
outputs = scale_vaapi_outputs,
284 .priv_class = &scale_vaapi_class,
#define FF_FILTER_FLAG_HWFRAME_AWARE
The filter is aware of hardware frames, and any hardware frame context should not be automatically pr...
int ff_scale_eval_dimensions(void *log_ctx, const char *w_expr, const char *h_expr, AVFilterLink *inlink, AVFilterLink *outlink, int *ret_w, int *ret_h)
This structure describes decoded (raw) audio or video data.
char * output_format_string
int ff_vaapi_vpp_config_input(AVFilterLink *inlink)
Main libavfilter public API header.
Memory handling functions.
int ff_vaapi_vpp_config_output(AVFilterLink *outlink)
static av_cold int init(AVCodecContext *avctx)
int h
agreed upon image height
AVFILTER_DEFINE_CLASS(scale_vaapi)
AVFrame * ff_get_video_buffer(AVFilterLink *link, int w, int h)
Request a picture buffer with a specific set of permissions.
AVColorTransferCharacteristic
Color Transfer Characteristic.
const char * name
Pad name.
AVFilterLink ** inputs
array of pointers to input links
int ff_filter_frame(AVFilterLink *link, AVFrame *frame)
Send a frame of data to the next filter.
static av_cold int uninit(AVCodecContext *avctx)
AVFilter ff_vf_scale_vaapi
AVColorSpace
YUV colorspace type.
int64_t pts
Presentation timestamp in time_base units (time when frame should be shown to user).
AVColorPrimaries
Chromaticity coordinates of the source primaries.
static const AVOption scale_vaapi_options[]
A filter pad used for either input or output.
A link between two filters.
static av_cold int scale_vaapi_init(AVFilterContext *avctx)
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
char * colour_primaries_string
void av_frame_free(AVFrame **frame)
Free the frame and any dynamically allocated objects in it, e.g.
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification. ...
static int scale_vaapi_config_output(AVFilterLink *outlink)
void * priv
private data for use by the filter
enum AVColorRange color_range
MPEG vs JPEG YUV range.
#define AV_LOG_DEBUG
Stuff which is only useful for libav* developers.
enum AVColorSpace colorspace
YUV colorspace type.
simple assert() macros that are a bit more flexible than ISO C assert().
char * colour_transfer_string
static const AVFilterPad scale_vaapi_inputs[]
static const char * scale_vaapi_mode_name(int mode)
int w
agreed upon image width
char * chroma_location_string
void ff_vaapi_vpp_pipeline_uninit(AVFilterContext *avctx)
enum AVColorPrimaries colour_primaries
static const struct ColorPrimaries color_primaries[AVCOL_PRI_NB]
enum AVChromaLocation chroma_location
AVFilterContext * src
source filter
char * colour_matrix_string
static const AVFilterPad inputs[]
static const AVFilterPad outputs[]
the normal 2^n-1 "JPEG" YUV ranges
int format
format of the frame, -1 if unknown or unset Values correspond to enum AVPixelFormat for video frames...
enum AVColorTransferCharacteristic colour_transfer
#define STRING_OPTION(var_name, func_name, default_value)
static int output_frame(H264Context *h, AVFrame *dst, H264Picture *srcp)
Rational number (pair of numerator and denominator).
static const AVFilterPad scale_vaapi_outputs[]
const char * name
Filter name.
AVRational sample_aspect_ratio
agreed upon sample aspect ratio
enum AVChromaLocation chroma_location
AVFilterLink ** outputs
array of pointers to output links
enum AVPixelFormat output_format
int ff_vaapi_vpp_render_picture(AVFilterContext *avctx, VAProcPipelineParameterBuffer *params, AVFrame *output_frame)
the normal 219*2^(n-8) "MPEG" YUV ranges
const char const char * params
int ff_vaapi_vpp_query_formats(AVFilterContext *avctx)
static int query_formats(AVFilterContext *ctx)
void ff_vaapi_vpp_ctx_init(AVFilterContext *avctx)
AVFilterContext * dst
dest filter
enum AVColorPrimaries color_primaries
AVRational av_mul_q(AVRational b, AVRational c)
Multiply two rationals.
enum AVColorSpace colour_matrix
AVChromaLocation
Location of chroma samples.
enum AVColorTransferCharacteristic color_trc
int ff_vaapi_vpp_init_params(AVFilterContext *avctx, VAProcPipelineParameterBuffer *params, const AVFrame *input_frame, AVFrame *output_frame)
enum AVPixelFormat av_get_pix_fmt(const char *name)
Return the pixel format corresponding to name.
const char * av_get_pix_fmt_name(enum AVPixelFormat pix_fmt)
Return the short name for a pixel format, NULL in case pix_fmt is unknown.
static int scale_vaapi_filter_frame(AVFilterLink *inlink, AVFrame *input_frame)
mode
Use these values in ebur128_init (or'ed).
void(* pipeline_uninit)(AVFilterContext *avctx)
void ff_vaapi_vpp_ctx_uninit(AVFilterContext *avctx)
int av_frame_copy_props(AVFrame *dst, const AVFrame *src)
Copy only "metadata" fields from src to dst.