Feature Request: Interactive Pre-Filter Zoom (VLC-style) with Script Control
Summary
Request for a true source-region zoom mechanism in mpv that operates before the video filter chain, enabling interactive zoom/pan that behaves like VLC’s “interactive zoom” while remaining fully compatible with mpv’s advanced rendering pipeline (HDR, shaders, VPP, etc.).
Problem
Current mpv zoom mechanisms:
video-zoom
video-pan-x/y
video-crop
all operate at the VO/display stage, not on the source frame before filtering.
This leads to:
- zoom being applied after scaling, filtering, and shader processing
- effectively magnifying an already processed frame
- visible quality degradation compared to crop + resample approaches
Desired Behavior
Introduce a zoom system that behaves as:
decode
→ select source region (interactive crop)
→ apply video filters (e.g. d3d11vpp, scaling)
→ apply shaders (libplacebo)
→ display
Instead of current behavior:
decode
→ filters
→ shaders
→ display
→ then zoom/pan (display transform)
Key Requirements
1. Pre-filter crop/zoom stage
- Ability to define a dynamic crop region of the source frame
- This crop should occur before
vf filters, including:
d3d11vpp
- scaling filters
- tone mapping / HDR processing
2. Interactive control (scriptable)
Expose the crop/zoom region via properties accessible from Lua.
Example (conceptual):
video-source-crop-x
video-source-crop-y
video-source-crop-w
video-source-crop-h
or normalized:
video-source-center-x
video-source-center-y
video-source-zoom
These should be:
- writable at runtime
- fast enough for continuous updates (mouse drag)
3. GPU-friendly implementation
4. Maintain full pipeline compatibility
Must work correctly with:
- HDR tone mapping
- custom shaders (
glsl-shaders)
- scaling algorithms
- existing
vf chains
Motivation / Use Case
Modern mpv setups often include:
- hardware scaling (e.g. Intel VPP)
- multi-pass shader pipelines
- HDR processing
- advanced playback (streams, URLs, capture)
In these setups, current zoom:
- breaks visual fidelity
- feels inferior to VLC’s interactive zoom
- cannot leverage the existing high-quality pipeline
VLC’s zoom works because it:
- crops source region
- resamples it through its pipeline
- keeps interaction smooth and visually consistent
mpv currently lacks an equivalent mechanism.
Why existing solutions are insufficient
video-zoom
- display-space scaling only
- does not re-run filters on the selected region
video-crop
- VO-side crop, not pre-filter
- not suitable for interactive updates
dynamic vf=crop
- requires filter chain updates
- too heavy for real-time interaction
shaders
- operate post-filter
- cannot move processing earlier in the pipeline
Proposed Direction (non-binding)
Any of the following would satisfy the requirement:
- a dedicated pre-filter crop stage
- a hardware-accelerated crop region selection
- a libplacebo-integrated source-region sampling control
As long as:
- it happens before filters
- it is scriptable
- it supports real-time interaction
Additional Notes
This feature would enable:
- true VLC-style zoom in mpv
- higher-quality inspection workflows
- better usability for high-resolution content
- improved integration with advanced pipelines already present in mpv
Conclusion
mpv already provides one of the most powerful playback pipelines available.
This feature would fill a key gap by enabling interactive source-region zoom that fully leverages that pipeline instead of bypassing it.
Feature Request: Interactive Pre-Filter Zoom (VLC-style) with Script Control
Summary
Request for a true source-region zoom mechanism in mpv that operates before the video filter chain, enabling interactive zoom/pan that behaves like VLC’s “interactive zoom” while remaining fully compatible with mpv’s advanced rendering pipeline (HDR, shaders, VPP, etc.).
Problem
Current mpv zoom mechanisms:
video-zoomvideo-pan-x/yvideo-cropall operate at the VO/display stage, not on the source frame before filtering.
This leads to:
Desired Behavior
Introduce a zoom system that behaves as:
Instead of current behavior:
Key Requirements
1. Pre-filter crop/zoom stage
vffilters, including:d3d11vpp2. Interactive control (scriptable)
Expose the crop/zoom region via properties accessible from Lua.
Example (conceptual):
or normalized:
These should be:
3. GPU-friendly implementation
Should integrate cleanly with hardware paths:
d3d11vppvaapinvdec/ CUDAvo=gpu-next/ libplaceboMust avoid:
4. Maintain full pipeline compatibility
Must work correctly with:
glsl-shaders)vfchainsMotivation / Use Case
Modern mpv setups often include:
In these setups, current zoom:
VLC’s zoom works because it:
mpv currently lacks an equivalent mechanism.
Why existing solutions are insufficient
video-zoomvideo-cropdynamic
vf=cropshaders
Proposed Direction (non-binding)
Any of the following would satisfy the requirement:
As long as:
Additional Notes
This feature would enable:
Conclusion
mpv already provides one of the most powerful playback pipelines available.
This feature would fill a key gap by enabling interactive source-region zoom that fully leverages that pipeline instead of bypassing it.