# docs/Upscale.md
Upscale Module (Planned) - v0.1.2
The upscale-video command will provide high-quality resolution upscaling with minimal visual loss.
It will begin with traditional FFmpeg filters and later introduce machine learning based upscalers.
------------------------------------------------------------
Overview
------------------------------------------------------------
The goal of this module is to let users upscale existing videos to standardized modern resolutions such as:
- 720p (HD)
- 1080p (Full HD)
- 2160p (4K UHD)
The first release will use FFmpeg’s built-in scaling filters including lanczos, bicubic, and spline36.
Future updates will explore GPU and ML-based upscaling options such as Real-ESRGAN and waifu2x.
------------------------------------------------------------
Planned Syntax
------------------------------------------------------------
video-tools upscale-video --scale 1920x1080
Optional parameters:
--scale Specify custom resolution
--filter Choose scaling filter (lanczos, bicubic, spline36, bilinear)
--hevc Encode output with H.265 for reduced file size
--keep-audio Copy the original audio stream without re-encoding
------------------------------------------------------------
Default Behavior
------------------------------------------------------------
When no scale or filter is provided, the tool will automatically upscale to the next common resolution above the source.
Examples:
Input: 960x540 → Output: 1280x720
Input: 1280x720 → Output: 1920x1080
Input: 1440x1080 → Output: 1920x1080
The tool will retain the same aspect ratio and avoid unnecessary stretching or cropping.
------------------------------------------------------------
Technical Notes
------------------------------------------------------------
Example FFmpeg usage:
ffmpeg -i input.mp4 -vf scale=1920:1080:flags=lanczos -c:v libx264 -crf 18 -preset slow -c:a aac -b:a 192k output_1080p.mp4
Explanation:
scale=1920:1080:flags=lanczos performs resampling using the Lanczos algorithm for sharp, high-quality results.
Lanczos minimizes aliasing and ringing while retaining edge detail.
Future implementations may use zscale for improved color management or GPU-accelerated scaling with CUDA or Vulkan.
------------------------------------------------------------
Planned Features
------------------------------------------------------------
FFmpeg scaler (lanczos) Planned
zscale and bicubic scaling Planned
ML-based upscaling (Real-ESRGAN) Research stage
Auto-resolution detection Planned
GPU acceleration support Planned
Configurable quality presets Planned
HEVC and AV1 encoder options Planned
Batch folder upscaling mode Planned
------------------------------------------------------------
Example Future Commands
------------------------------------------------------------
Upscale to 1080p using default settings:
video-tools upscale-video "movie.mp4" "movie_1080p.mp4"
Upscale to 4K using HEVC and Lanczos filter:
video-tools upscale-video "movie.mp4" "movie_4k.mp4" --scale 3840x2160 --hevc --filter lanczos
Copy original audio without re-encoding:
video-tools upscale-video "documentary.mp4" "documentary_upscaled.mp4" --keep-audio
------------------------------------------------------------
End of File