diff --git a/libavfilter/vf_libplacebo.c b/libavfilter/vf_libplacebo.c index 393a0126c1..42501c51f2 100644 --- a/libavfilter/vf_libplacebo.c +++ b/libavfilter/vf_libplacebo.c @@ -912,7 +912,9 @@ static void update_crops(AVFilterContext *ctx, LibplaceboInput *in, image->crop.y0 = av_expr_eval(s->crop_y_pexpr, s->var_values, NULL); image->crop.x1 = image->crop.x0 + s->var_values[VAR_CROP_W]; image->crop.y1 = image->crop.y0 + s->var_values[VAR_CROP_H]; - if (s->rotation % PL_ROTATION_180 == PL_ROTATION_90) { + + const pl_rotation rot_total = image->rotation - target->rotation; + if ((rot_total + PL_ROTATION_360) % PL_ROTATION_180 == PL_ROTATION_90) { /* Libplacebo expects the input crop relative to the actual frame * dimensions, so un-transpose them here */ FFSWAP(float, image->crop.x0, image->crop.y0);