Skip to content

Preserve source aspect ratio when scaling to output presets - #1

Open
5hihan wants to merge 1 commit into
SamG-Coder:mainfrom
5hihan:preserve-aspect-ratio
Open

5hihan wants to merge 1 commit into
SamG-Coder:mainfrom
5hihan:preserve-aspect-ratio

Conversation

@5hihan

@5hihan 5hihan commented Sep 2, 2026

Copy link
Copy Markdown

Summary

The 720p/1080p/4K presets were passed straight through as the DLSS output size and the FFmpeg encoder frame size, so any source that did not match the preset's aspect ratio was stretched (the README called this out as an open issue).

This treats the preset as a bounding box:

  • FitOutput in src/engine/video_job.cpp scales the source uniformly so the whole frame fits inside the preset, keeping the original aspect ratio.
  • Both dimensions are rounded to even values for NVENC / x265.
  • The fitted size drives the DLSS guide resolution, the raw frame buffer size, and the encoder -s argument.
  • The first progress phase now reads "Preparing WxH source for WxH output" so the UI shows the resolved size.
  • README updated to describe presets as bounding boxes.

Test plan

Built with VS 2019 Build Tools and run through the full DirectML + Streamline 2.13 DLSS-NR + NVENC pipeline on an RTX 5090:

Source Preset Output Exit
1280x534 3840x2160 3840x1602 0
1280x534 1280x720 1280x534 0
360x640 (portrait) 1920x1080 608x1080 0

Output dimensions confirmed with ffprobe.

🤖 Generated with Claude Code

https://claude.ai/code/session_01UuUXxriuaZkpLGNGDSYW4N

The 720p/1080p/4K presets were passed straight through as the DLSS output
size and the FFmpeg encoder frame size, so any source that did not match
the preset's aspect ratio was stretched. Treat the preset as a bounding box:
scale the source uniformly to fit inside it, round both dimensions to even
values for the encoders, and report the resolved size in the first progress
phase so the UI shows what will be produced.

Verified through the full DLSS pipeline: 1280x534 at 4K -> 3840x1602,
1280x534 at 720p -> 1280x534, 360x640 portrait at 1080p -> 608x1080.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01UuUXxriuaZkpLGNGDSYW4N
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant