Skip to content

Improve v2 usability, preview flow, and configuration without changing the core detection algorithm#158

Open
TheAutomatic wants to merge 36 commits intocirquit:v2from
TheAutomatic:v2.1
Open

Improve v2 usability, preview flow, and configuration without changing the core detection algorithm#158
TheAutomatic wants to merge 36 commits intocirquit:v2from
TheAutomatic:v2.1

Conversation

@TheAutomatic
Copy link
Copy Markdown

Hi,

I’ve spent a fair amount of time working on top of the v2 branch because I really like the project and wanted to make it easier to use day to day.

One important note up front: I did not intentionally change the core frame-duplication / framerate detection algorithm. I wasn’t trying to “improve” that part without fully understanding it, so I kept my changes focused on usability, preview/render flow, configuration, packaging, and CI.

This PR mainly includes:

  • YAML preset loading and more configurable GUI options
  • real-time preview and seek rendering improvements
  • redraw throttling so preview updates don’t run unnecessarily fast and drive GPU usage too high
  • async/profiling/export pipeline improvements
  • a lot of UI/layout polish, dark mode and translation fixes, and better multi-video behavior
  • FPS/frametime overlay fixes and readability improvements, especially in multi-video layouts
  • packaging / release / CI workflow cleanup
  • a few compatibility fixes around metadata handling, encoder probing, and video pipeline robustness

So the goal here was not to change how TRDrop decides what is a duplicate frame. The goal was to make the v2 branch easier to use, easier to test/package, and more stable in actual use.

I realize this is a fairly broad PR. If you’d prefer, I’m happy to split it into smaller PRs by area, for example:

  • GUI / usability
  • preview / rendering / performance
  • packaging / CI / release workflow

Thanks again for the project.

Replace hardcoded font size 12 with cfg.label_font_size (default 20)
in both FpsPlotConfig and FrametimePlotConfig.
…k mode

- Real-time preview: live composited frame display during processing
- Seek rendering: compositor renders full overlays on seek
- HEVC encoding: prefer hevc_videotoolbox/nvenc over h264, with fallback
- Export FPS: configurable via YAML (10-120 range, default: source fps)
- Multi-video fixes: multi-file picker, add/remove in READY state,
  FPS text positioned per-video region instead of all at top-left
- Video filenames: shown in top-right of each video region with color
- Dark mode: removed hardcoded colors, uses system QPalette
- Plot overlay: bold text with black outline (DF-style), scaled spacing
- QPainter state isolation: save/restore prevents rendering artifacts
- Default FPS text font_size increased to 0.048
- Example preset YAML template added
- Replace broken 5-stage FFmpeg filter pipeline with numba-accelerated
  256^3 3D LUT approach (PQ EOTF + BT.2020→BT.709 gamut + Reinhard
  tonemap + BT.709 OETF), ~13ms per 4K frame
- Mark output video stream as BT.709 SDR to prevent players from
  double-tonemapping
- Add comprehensive README.md (EN) and README_CN.md (CN) with usage
  guide, control bar reference, workflow, and HDR support docs
- Add full comments to trdrop_preset.example.yaml explaining every
  parameter
Add PyInstaller spec and runtime hook to produce a ~102MB standalone
Windows EXE. Icon path resolution is now freeze-aware via a new
frozen.py helper so source-tree runs on all platforms are unaffected.

Optimizations applied:
- Exclude numba test suite from bundle
- Exclude unused PyQt6 modules (QtPdf, QtSvg, QtNetwork, etc.)
- Strip unnecessary Qt plugins and translation files
- Runtime hook pre-loads FFmpeg DLLs in dependency order
chore(release): clean up unused code in GitHub release workflow
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