Message ID | 20230109071210.1829699-1-haihao.xiang@intel.com |
---|---|
State | Accepted |
Commit | 24a8e1e126dbe4316df3097c0b4e0b91bb7abb88 |
Headers | show |
Series | [FFmpeg-devel,1/8] lavfi/vf_vpp_qsv: add "a", "dar" and "sar" variables | expand |
Context | Check | Description |
---|---|---|
yinshiyou/make_loongarch64 | success | Make finished |
yinshiyou/make_fate_loongarch64 | success | Make fate finished |
andriy/make_x86 | success | Make finished |
andriy/make_fate_x86 | success | Make fate finished |
On Ma, 2023-01-09 at 15:12 +0800, Xiang, Haihao wrote: > From: Haihao Xiang <haihao.xiang@intel.com> > > Also fix the naming style in enum var_name. > > This is in preparation for reusing the code for other QSV filters. > > Signed-off-by: Haihao Xiang <haihao.xiang@intel.com> > --- > libavfilter/vf_vpp_qsv.c | 49 ++++++++++++++++++++++++---------------- > 1 file changed, 29 insertions(+), 20 deletions(-) > > diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c > index 317ae06c12..8d4227f841 100644 > --- a/libavfilter/vf_vpp_qsv.c > +++ b/libavfilter/vf_vpp_qsv.c > @@ -150,18 +150,22 @@ static const char *const var_names[] = { > "ch", > "cx", > "cy", > + "a", "dar", > + "sar", > NULL > }; > > enum var_name { > - VAR_iW, VAR_IN_W, > - VAR_iH, VAR_IN_H, > - VAR_oW, VAR_OUT_W, VAR_W, > - VAR_oH, VAR_OUT_H, VAR_H, > - CW, > - CH, > - CX, > - CY, > + VAR_IW, VAR_IN_W, > + VAR_IH, VAR_IN_H, > + VAR_OW, VAR_OUT_W, VAR_W, > + VAR_OH, VAR_OUT_H, VAR_H, > + VAR_CW, > + VAR_CH, > + VAR_CX, > + VAR_CY, > + VAR_A, VAR_DAR, > + VAR_SAR, > VAR_VARS_NB > }; > > @@ -193,39 +197,44 @@ static int eval_expr(AVFilterContext *ctx) > PASS_EXPR(cx_expr, vpp->cx); > PASS_EXPR(cy_expr, vpp->cy); > > - var_values[VAR_iW] = > + var_values[VAR_IW] = > var_values[VAR_IN_W] = ctx->inputs[0]->w; > > - var_values[VAR_iH] = > + var_values[VAR_IH] = > var_values[VAR_IN_H] = ctx->inputs[0]->h; > > + var_values[VAR_A] = (double)var_values[VAR_IN_W] / var_values[VAR_IN_H]; > + var_values[VAR_SAR] = ctx->inputs[0]->sample_aspect_ratio.num ? > + (double)ctx->inputs[0]->sample_aspect_ratio.num / ctx->inputs[0]- > >sample_aspect_ratio.den : 1; > + var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR]; > + > /* crop params */ > - CALC_EXPR(cw_expr, var_values[CW], vpp->crop_w); > - CALC_EXPR(ch_expr, var_values[CH], vpp->crop_h); > + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); > + CALC_EXPR(ch_expr, var_values[VAR_CH], vpp->crop_h); > > /* calc again in case cw is relative to ch */ > - CALC_EXPR(cw_expr, var_values[CW], vpp->crop_w); > + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); > > CALC_EXPR(w_expr, > - var_values[VAR_OUT_W] = var_values[VAR_oW] = var_values[VAR_W], > + var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], > vpp->out_width); > CALC_EXPR(h_expr, > - var_values[VAR_OUT_H] = var_values[VAR_oH] = var_values[VAR_H], > + var_values[VAR_OUT_H] = var_values[VAR_OH] = var_values[VAR_H], > vpp->out_height); > > /* calc again in case ow is relative to oh */ > CALC_EXPR(w_expr, > - var_values[VAR_OUT_W] = var_values[VAR_oW] = var_values[VAR_W], > + var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], > vpp->out_width); > > > - CALC_EXPR(cx_expr, var_values[CX], vpp->crop_x); > - CALC_EXPR(cy_expr, var_values[CY], vpp->crop_y); > + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); > + CALC_EXPR(cy_expr, var_values[VAR_CY], vpp->crop_y); > > /* calc again in case cx is relative to cy */ > - CALC_EXPR(cx_expr, var_values[CX], vpp->crop_x); > + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); > > - if ((vpp->crop_w != var_values[VAR_iW]) || (vpp->crop_h != > var_values[VAR_iH])) > + if ((vpp->crop_w != var_values[VAR_IW]) || (vpp->crop_h != > var_values[VAR_IH])) > vpp->use_crop = 1; > > release: Will apply, -Haihao
diff --git a/libavfilter/vf_vpp_qsv.c b/libavfilter/vf_vpp_qsv.c index 317ae06c12..8d4227f841 100644 --- a/libavfilter/vf_vpp_qsv.c +++ b/libavfilter/vf_vpp_qsv.c @@ -150,18 +150,22 @@ static const char *const var_names[] = { "ch", "cx", "cy", + "a", "dar", + "sar", NULL }; enum var_name { - VAR_iW, VAR_IN_W, - VAR_iH, VAR_IN_H, - VAR_oW, VAR_OUT_W, VAR_W, - VAR_oH, VAR_OUT_H, VAR_H, - CW, - CH, - CX, - CY, + VAR_IW, VAR_IN_W, + VAR_IH, VAR_IN_H, + VAR_OW, VAR_OUT_W, VAR_W, + VAR_OH, VAR_OUT_H, VAR_H, + VAR_CW, + VAR_CH, + VAR_CX, + VAR_CY, + VAR_A, VAR_DAR, + VAR_SAR, VAR_VARS_NB }; @@ -193,39 +197,44 @@ static int eval_expr(AVFilterContext *ctx) PASS_EXPR(cx_expr, vpp->cx); PASS_EXPR(cy_expr, vpp->cy); - var_values[VAR_iW] = + var_values[VAR_IW] = var_values[VAR_IN_W] = ctx->inputs[0]->w; - var_values[VAR_iH] = + var_values[VAR_IH] = var_values[VAR_IN_H] = ctx->inputs[0]->h; + var_values[VAR_A] = (double)var_values[VAR_IN_W] / var_values[VAR_IN_H]; + var_values[VAR_SAR] = ctx->inputs[0]->sample_aspect_ratio.num ? + (double)ctx->inputs[0]->sample_aspect_ratio.num / ctx->inputs[0]->sample_aspect_ratio.den : 1; + var_values[VAR_DAR] = var_values[VAR_A] * var_values[VAR_SAR]; + /* crop params */ - CALC_EXPR(cw_expr, var_values[CW], vpp->crop_w); - CALC_EXPR(ch_expr, var_values[CH], vpp->crop_h); + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); + CALC_EXPR(ch_expr, var_values[VAR_CH], vpp->crop_h); /* calc again in case cw is relative to ch */ - CALC_EXPR(cw_expr, var_values[CW], vpp->crop_w); + CALC_EXPR(cw_expr, var_values[VAR_CW], vpp->crop_w); CALC_EXPR(w_expr, - var_values[VAR_OUT_W] = var_values[VAR_oW] = var_values[VAR_W], + var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], vpp->out_width); CALC_EXPR(h_expr, - var_values[VAR_OUT_H] = var_values[VAR_oH] = var_values[VAR_H], + var_values[VAR_OUT_H] = var_values[VAR_OH] = var_values[VAR_H], vpp->out_height); /* calc again in case ow is relative to oh */ CALC_EXPR(w_expr, - var_values[VAR_OUT_W] = var_values[VAR_oW] = var_values[VAR_W], + var_values[VAR_OUT_W] = var_values[VAR_OW] = var_values[VAR_W], vpp->out_width); - CALC_EXPR(cx_expr, var_values[CX], vpp->crop_x); - CALC_EXPR(cy_expr, var_values[CY], vpp->crop_y); + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); + CALC_EXPR(cy_expr, var_values[VAR_CY], vpp->crop_y); /* calc again in case cx is relative to cy */ - CALC_EXPR(cx_expr, var_values[CX], vpp->crop_x); + CALC_EXPR(cx_expr, var_values[VAR_CX], vpp->crop_x); - if ((vpp->crop_w != var_values[VAR_iW]) || (vpp->crop_h != var_values[VAR_iH])) + if ((vpp->crop_w != var_values[VAR_IW]) || (vpp->crop_h != var_values[VAR_IH])) vpp->use_crop = 1; release: