# docs/Upscale.md
# Upscale Module (Planned) — v0.1.0
The `upscale-video` command will provide loss-minimized video upscaling.
---
## Overview
This module will allow upscaling of existing videos to higher resolutions such as:
- 720p (HD)
- 1080p (Full HD)
- 2160p (4K)
It will begin with FFmpeg’s native scaling filters and may later support machine learning-based methods.
---
## Planned Syntax
```bash
video-tools upscale-video --scale 1920x1080
```
Optional parameters:
```
--scale Set explicit resolution
--filter Choose scaling filter (lanczos, bicubic, spline36)
--hevc Encode using H.265 for smaller output
--keep-audio Copy original audio stream without re-encoding
```
---
## Default Behavior
If no explicit resolution is provided, the tool will upscale intelligently to the nearest standard resolution above the source.
**Examples:**
- Input: 960×540 → Output: 1280×720
- Input: 1280×720 → Output: 1920×1080
---
## Technical Notes
### FFmpeg Filter Example
```bash
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 high-quality resampling.
- `lanczos` produces sharp, low-artifact results.
- Future versions may introduce `zscale` or machine-learning upscalers.
---
## Planned Features
| Feature | Status |
|----------|--------|
| FFmpeg scaler (`lanczos`) | 🔜 Planned |
| ML-based upscaling (Real-ESRGAN / waifu2x) | 🚧 Research |
| Auto-resolution detection | 🔜 Planned |
| GPU acceleration support | 🔜 Planned |
| Configurable presets | 🔜 Planned |
---
End of File