Improve v2 usability, preview flow, and configuration without changing the core detection algorithm#158
Improve v2 usability, preview flow, and configuration without changing the core detection algorithm#158TheAutomatic wants to merge 40 commits intocirquit:v2from
Conversation
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
…ata (MKV compatibility)
chore(release): clean up unused code in GitHub release workflow
… defaults with example yaml
Known issues:\n- frametime display still has layout/visibility problems in some multi-video cases\n- frametime overlay drawing may not currently take effect in all paths
PyAV's type stubs don't expose width/height/pix_fmt on CodecContext, but these attributes exist at runtime. Add type: ignore comments.
|
Hi, thanks for the contribution! I want to be very upfront about the state of the project - this is essentially a pet project that I ultimately want to bring into a useful shape, but life gets in the way. I can't guarantee that I will find time in the near future to parse to your proposed changes, but I do want to keep the flexibility to scrap ideas and rework the API if need be. In any way, I will definitely take all of your changes into consideration whenever I find the time to progress here and potentially build on top of them/include them. Please feel free to continue pushing to this branch rather than creating multiple PRs, this allows me to see your work holistically and understand your motivation/ideas behind the changes. |
|
Hi, I fully agree with your perspective on keeping the API flexible. To be completely frank, I'm pretty much a beginner when it comes to the complex coding parts. That's why my changes are strictly focused on the UI and usability layer. I didn't touch the core detection algorithm—and I don't plan to—simply because I don't have the technical depth to mess with it! My main motivation was just to provide a straightforward "click-and-play" experience so that I and some of my console-gaming friends can use the app effortlessly. I am more than happy to follow your suggestion and just keep pushing my updates to this single branch. That way, you'll have a holistic view of the changes in one place whenever you want to check them out. Lastly, even if you decide not to merge any of this code, I highly recommend downloading and trying out the new UI build just for fun, to see how the experience feels! Thanks again for the amazing foundational work on the v2 branch. Wishing you all the best with your work and life! |
Hi,
I’ve spent a fair amount of time working on top of the
v2branch 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:
So the goal here was not to change how TRDrop decides what is a duplicate frame. The goal was to make the
v2branch 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:
Thanks again for the project.