Turns out libplacebo uses unrotated target crop in relation to source. Use dst rect from VO, instead of extracting it from pl_frame, to avoid another unrotating operation.
Unified · Split
| @@ -1134,8 +1134,8 @@ static void draw_frame(struct vo *vo, struct vo_frame *frame) · 1133 unmodified lines | ||
| 1134 | 1134 | p->target_params = (struct mp_image_params){ |
| 1135 | 1135 | .imgfmt_name = swframe.fbo->params.format |
| 1136 | 1136 | ? swframe.fbo->params.format->name : NULL, |
| 1137 | − .w = mp_rect_w(target.crop), | |
| 1138 | − .h = mp_rect_h(target.crop), | |
| 1137 | + .w = mp_rect_w(p->dst), | |
| 1138 | + .h = mp_rect_h(p->dst), | |
| 1139 | 1139 | .color = target.color, |
| 1140 | 1140 | .repr = target.repr, |
| 1141 | 1141 | .rotate = target.rotation, |