107 const char *w_expr,
const char *h_expr,
109 int *ret_w,
int *ret_h)
115 int factor_w, factor_h;
136 var_values[
VAR_A] = (double) inlink->
w / inlink->
h;
161 eval_w = var_values[
VAR_OUT_W] = var_values[
VAR_OW] = (
int) res == 0 ? inlink->
w : (
int) res;
167 eval_h = var_values[
VAR_OUT_H] = var_values[
VAR_OH] = (
int) res == 0 ? inlink->
h : (
int) res;
173 eval_w = (
int) res == 0 ? inlink->
w : (
int) res;
189 if (w < 0 && h < 0) {
198 w =
av_rescale(h, inlink->
w, inlink->
h * factor_w) * factor_w;
200 h =
av_rescale(w, inlink->
h, inlink->
w * factor_h) * factor_h;
209 "Error when evaluating the expression '%s'.\n"
210 "Maybe the expression for out_w:'%s' or for out_h:'%s' is self-referencing.\n",
211 expr, w_expr, h_expr);
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)
const AVPixFmtDescriptor * av_pix_fmt_desc_get(enum AVPixelFormat pix_fmt)
int h
agreed upon image height
uint8_t log2_chroma_w
Amount to shift the luma width right to find the chroma width.
AVFilterLink ** inputs
array of pointers to input links
A link between two filters.
int av_expr_parse_and_eval(double *d, const char *s, const char *const *const_names, const double *const_values, const char *const *func1_names, double(*const *funcs1)(void *, double), const char *const *func2_names, double(*const *funcs2)(void *, double, double), void *opaque, int log_offset, void *log_ctx)
Parse and evaluate an expression.
#define AV_LOG_ERROR
Something went wrong and cannot losslessly be recovered.
uint8_t log2_chroma_h
Amount to shift the luma height right to find the chroma height.
int w
agreed upon image width
unsigned nb_inputs
number of input pads
int64_t av_rescale(int64_t a, int64_t b, int64_t c)
Rescale a 64-bit integer with rounding to nearest.
AVFilterContext * src
source filter
int format
agreed upon media format
Descriptor that unambiguously describes how the bits of a pixel are stored in the up to 4 data planes...
AVRational sample_aspect_ratio
agreed upon sample aspect ratio
static const char *const var_names[]
static const char *const var_names_scale2ref[]
This must be kept in sync with var_names so that it is always a complete list of var_names with the s...
simple arithmetic expression evaluator