@ -167,12 +167,17 @@ static int config_input(AVFilterLink *inlink)
NULL , NULL , NULL , NULL , NULL , 0 , ctx ) ) < 0 )
NULL , NULL , NULL , NULL , NULL , 0 , ctx ) ) < 0 )
goto eval_fail ;
goto eval_fail ;
s - > h = var_values [ VAR_OUT_H ] = var_values [ VAR_OH ] = res ;
s - > h = var_values [ VAR_OUT_H ] = var_values [ VAR_OH ] = res ;
if ( ! s - > h )
var_values [ VAR_OUT_H ] = var_values [ VAR_OH ] = s - > h = inlink - > h ;
/* evaluate the width again, as it may depend on the evaluated output height */
/* evaluate the width again, as it may depend on the evaluated output height */
if ( ( ret = av_expr_parse_and_eval ( & res , ( expr = s - > w_expr ) ,
if ( ( ret = av_expr_parse_and_eval ( & res , ( expr = s - > w_expr ) ,
var_names , var_values ,
var_names , var_values ,
NULL , NULL , NULL , NULL , NULL , 0 , ctx ) ) < 0 )
NULL , NULL , NULL , NULL , NULL , 0 , ctx ) ) < 0 )
goto eval_fail ;
goto eval_fail ;
s - > w = var_values [ VAR_OUT_W ] = var_values [ VAR_OW ] = res ;
s - > w = var_values [ VAR_OUT_W ] = var_values [ VAR_OW ] = res ;
if ( ! s - > w )
var_values [ VAR_OUT_W ] = var_values [ VAR_OW ] = s - > w = inlink - > w ;
/* evaluate x and y */
/* evaluate x and y */
av_expr_parse_and_eval ( & res , ( expr = s - > x_expr ) ,
av_expr_parse_and_eval ( & res , ( expr = s - > x_expr ) ,
@ -197,11 +202,6 @@ static int config_input(AVFilterLink *inlink)
return AVERROR ( EINVAL ) ;
return AVERROR ( EINVAL ) ;
}
}
if ( ! s - > w )
s - > w = inlink - > w ;
if ( ! s - > h )
s - > h = inlink - > h ;
s - > w & = ~ ( ( 1 < < s - > hsub ) - 1 ) ;
s - > w & = ~ ( ( 1 < < s - > hsub ) - 1 ) ;
s - > h & = ~ ( ( 1 < < s - > vsub ) - 1 ) ;
s - > h & = ~ ( ( 1 < < s - > vsub ) - 1 ) ;
s - > x & = ~ ( ( 1 < < s - > hsub ) - 1 ) ;
s - > x & = ~ ( ( 1 < < s - > hsub ) - 1 ) ;