FFmpeg
scale_eval.h
Go to the documentation of this file.
1 /*
2  * This file is part of FFmpeg.
3  *
4  * FFmpeg is free software; you can redistribute it and/or
5  * modify it under the terms of the GNU Lesser General Public
6  * License as published by the Free Software Foundation; either
7  * version 2.1 of the License, or (at your option) any later version.
8  *
9  * FFmpeg is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12  * Lesser General Public License for more details.
13  *
14  * You should have received a copy of the GNU Lesser General Public
15  * License along with FFmpeg; if not, write to the Free Software
16  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
17  */
18 
19 #ifndef AVFILTER_SCALE_EVAL_H
20 #define AVFILTER_SCALE_EVAL_H
21 
22 #include "avfilter.h"
23 
24 enum {
29 };
30 
31 /**
32  * Parse and evaluate string expressions for width and height. Upon success,
33  * ff_scale_adjust_dimensions must be called with evaluated width and height
34  * to obtain actual target dimensions.
35  *
36  * Returns 0 upon success, negative value if one of the expressions could
37  * not be parsed or if NaN was the result of their evaluation.
38  */
40  const char *w_expr, const char *h_expr,
41  AVFilterLink *inlink, AVFilterLink *outlink,
42  int *ret_w, int *ret_h);
43 
44 /**
45  * Transform evaluated width and height obtained from ff_scale_eval_dimensions
46  * into actual target width and height for scaling. Adjustment can occur if one
47  * or both of the evaluated values are of the form '-n' or if
48  * force_original_aspect_ratio is set. force_divisible_by is used only when
49  * force_original_aspect_ratio is set and must be at least 1.
50  * w_adj is the input SAR when the output dimensions are intended to be square
51  * pixels, else should be 1.
52  *
53  * Returns negative error code on error or non negative on success
54  */
56  int *ret_w, int *ret_h,
57  int force_original_aspect_ratio, int force_divisible_by,
58  double w_adj);
59 #endif
ff_scale_eval_dimensions
int ff_scale_eval_dimensions(void *ctx, const char *w_expr, const char *h_expr, AVFilterLink *inlink, AVFilterLink *outlink, int *ret_w, int *ret_h)
Parse and evaluate string expressions for width and height.
Definition: scale_eval.c:57
inlink
The exact code depends on how similar the blocks are and how related they are to the and needs to apply these operations to the correct inlink or outlink if there are several Macros are available to factor that when no extra processing is inlink
Definition: filter_design.txt:212
ff_scale_adjust_dimensions
int ff_scale_adjust_dimensions(AVFilterLink *inlink, int *ret_w, int *ret_h, int force_original_aspect_ratio, int force_divisible_by, double w_adj)
Transform evaluated width and height obtained from ff_scale_eval_dimensions into actual target width ...
Definition: scale_eval.c:113
SCALE_FORCE_OAR_NB
@ SCALE_FORCE_OAR_NB
Definition: scale_eval.h:28
ctx
AVFormatContext * ctx
Definition: movenc.c:49
SCALE_FORCE_OAR_DISABLE
@ SCALE_FORCE_OAR_DISABLE
Definition: scale_eval.h:25
SCALE_FORCE_OAR_INCREASE
@ SCALE_FORCE_OAR_INCREASE
Definition: scale_eval.h:27
avfilter.h
SCALE_FORCE_OAR_DECREASE
@ SCALE_FORCE_OAR_DECREASE
Definition: scale_eval.h:26