Skip to content

Investigate #148: frame rate + NR/Sharpen probe report and regression test - #151

Merged
StuartCameronCode merged 2 commits into
mainfrom
agentbob/6-weird-pipe
Nov 10, 2026
Merged

StuartCameronCode merged 2 commits into
mainfrom
agentbob/6-weird-pipe

Conversation

@StuartCameronCode

Copy link
Copy Markdown
Owner

Investigates #148: odd frames in frame-rate conversions that were combined with Noise Reduction and Sharpen.

Summary

The bug did not reproduce on macOS arm64, so this PR changes no pipeline code. It adds the evidence and a regression guard:

  • Probe report at docs/reports/issue-148-frame-rate-combined/: index.html, captioned images, and the scripts behind every number. It compares FlowFPS and RIFE with the frame-rate pass alone against frame rate plus the default Noise Reduction and Sharpen. The probes run the template's own {{#FRAME_RATE}} block, not a copy.
  • ENGINEERING_NOTES entry and a row in docs/reports/README.md.
  • Heavy regression test app/test/integration_frame_rate_combined_test.dart (FlowFPS + RIFE). Its metric is the share of pixels in each synthesized frame that are darker than both of the frame's real neighbours. It asserts two things against frame rate alone:
    • the mean stays within 0.05 points;
    • the worst single frame stays within 0.25 points, so a one-frame glitch can't hide in the mean.

Two candidate fixes were considered and declined, because neither had a measured defect behind it and either would change the output of every frame-rate job:

  • a clamp before RIFE;
  • a prefiltered FlowFPS motion search.

Testing

  • flutter analyze is clean.
  • The probe scripts were run on macOS arm64; their results are in the report.
  • The new heavy test has not yet run to completion. No Rust toolchain was available locally, and the installed 1.5.1 worker is incompatible with the 1.6.0 templates. Its first real run will be nightly.

Review closely

  • The first nightly results on all four platforms, especially RIFE on lavapipe and FlowFPS on MVTools v24 (Windows and macOS x64), before trusting the tolerances.
  • What the report leaves untested: MVTools v24, non-Apple Vulkan drivers, KNLMeans, and the real worker end to end. The metric's limits are stated beside the results: luma only, one clip, and motion inflates it.
  • Minor: scripts/run.sh exports VAPOURSYNTH_PLUGIN_PATH. It has been inert since R74, so it is harmless but misleading.

Follow-up

Ask the reporter on #148 for:

  • the clip;
  • the Frame Rate method and target;
  • the Noise Reduction and Sharpen methods;
  • their OS and GPU.

Refs #148

@StuartCameronCode
StuartCameronCode marked this pull request as ready for review November 10, 2026 06:34
StuartCameronCode and others added 2 commits November 10, 2026 18:17
Issue #148 reported black patches once Noise Reduction and Sharpen were added
to a frame rate conversion. It does not reproduce on macOS arm64: across 5
denoisers x 4 sharpeners x FlowFPS/RIFE x 8/10-bit, plus a fast pan and hard
cuts, the share of synthesized-frame pixels darker than both real neighbours
stays at the 0.001-0.005% noise floor with or without the filters. FlowFPS at
10/16-bit matches 8-bit, and RIFE's out-of-range input comes from the source,
not the sharpener. No pass is changed.

The new heavy test pins that on all four nightly platforms, which covers what
this machine could not: MVTools v24 (Windows, macOS x64) and RIFE on non-Apple
Vulkan drivers.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
The mean over ~40 synthesized frames moves only ~0.03 points for a black
block confined to one frame, under the 0.05 tolerance. Also assert the worst
single frame stays within 0.25 points of frame rate alone; note the
correction in the report and ENGINEERING_NOTES.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@StuartCameronCode
StuartCameronCode merged commit fd570ea into main Nov 10, 2026
4 checks passed
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