Skip to content

Commit 09b3b9d

Browse files
committed
Add v2.0.0 and v2.0.0rc1 changelogs
Adds two new changelog entries under `changelog/`: a detailed `v2_0_0.md` covering major 2.0.0 features, improvements, and fixes (sync/triggering, multi-camera recording, timestamps, mono handling, processors, lifecycle, and diagnostics), plus `v2_0_0rc1.md` documenting the 2.0 RC1 rewrite highlights, release notes, contributor credits, and PR-based change log.
1 parent 743ce2e commit 09b3b9d

2 files changed

Lines changed: 214 additions & 0 deletions

File tree

‎changelog/v2_0_0.md‎

Lines changed: 159 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,159 @@
1+
# DeepLabCut-Live-GUI v2.0.0
2+
3+
This release expands hardware synchronization, high-throughput multi-camera recording, frame timestamp reporting, monochrome capture performance, and custom processor integration.
4+
It also improves data safety, camera lifecycle handling, diagnostics, and general GUI usability.
5+
6+
## Camera triggering and synchronization
7+
8+
### Added
9+
10+
- Added hardware trigger configuration for compatible **GenTL** and **Basler** cameras
11+
- Added trigger roles for common synchronization setups:
12+
- **Off / Free-run** for continuous acquisition
13+
- **External trigger** for cameras driven by an external hardware signal
14+
- **Follower** for cameras synchronized to a master camera or shared trigger source
15+
- **Master output** for free-running cameras that emit a synchronization signal
16+
- Added configuration fields for trigger selector, input source, signal activation, and frame read timeout
17+
- Includes a **Strict mode** to reject unsupported trigger configurations instead of applying them best-effort
18+
19+
### Changed
20+
21+
- Updated the camera configuration dialog with a dedicated trigger settings GUI section
22+
- Updated active camera labels to show trigger roles
23+
- Changed multi-camera startup ordering so external and follower cameras begin opening before free-running cameras and trigger-generating masters
24+
25+
## Multi-camera performance and recording
26+
27+
### Added
28+
29+
- Added a dedicated recording path for each active camera
30+
- Rather than being coupled upstream of inference and UI display, recording is now a fully independent, prioritized pipeline
31+
- This helps ensure that recording is not affected by inference or display slowdowns, and that each camera can be recorded at its full frame rate
32+
- Added additional recorder throughput, write latency, and buffer diagnostics.
33+
- Added an optional **Use faster encoding parameters** setting for supported FFmpeg software codecs.
34+
- At the cost of file size, this can help support very high frame rates and resolutions on multi-camera setups
35+
36+
### Changed
37+
38+
- Decoupled the GUI display rate from camera capture, pose inference, and recording rates
39+
- The GUI is now capped at 30 FPS for display, while cameras can run at their full frame rate for inference and recording.
40+
- Inference still ignores any stale frames.
41+
- Added support for better using each camera’s reported runtime frame rate when configuring its recorder
42+
- Moved recording dispatch and frame transformations closer to the camera worker to reduce the impact on GUI responsiveness
43+
44+
### Fixed
45+
46+
- Several logic and lifecycle fixes, which should help improve overall error handling and stability
47+
48+
## Frame timestamps and synchronization data
49+
50+
### Added
51+
52+
- Added optional hardware frame timestamp reporting for supported cameras
53+
- Added Basler camera timestamp-counter reporting with raw tick values and tick-frequency metadata when available
54+
- Added updated timestamp JSON schema with:
55+
- Per-frame software timestamps
56+
- Optional per-frame hardware timestamp values, supplied by cameras and SDK
57+
- Timestamp source, timebase, unit, and conversion metadata
58+
- Explicit frame indexes for written frames
59+
60+
### Changed
61+
62+
- Changed timestamp sidecars to describe software and hardware timestamp sources separately
63+
- Clarified the distinction between Unix wall-clock timestamps and device-specific camera-clock values
64+
- Changed timestamp recording so entries are added only for frames successfully written by the encoder
65+
- This should help the reliability of timestamp data for downstream analysis
66+
67+
### Fixed
68+
69+
- Improved timestamp consistency when frames are dropped before encoding
70+
71+
## Monochrome camera performance improvements
72+
73+
### Added
74+
75+
- Added a **Preserve mono frames** option for supported backends.
76+
- This avoids performance bottlenecks from unnecessary conversion of mono frames to color
77+
- Added camera output format settings and runtime format reporting
78+
- Added native monochrome frame support for compatible GenTL & Basler cameras
79+
- Added camera probing for detected pixel format, emitted frame format, and recommended mono handling.
80+
81+
### Changed
82+
83+
- Updated camera labels and diagnostics to indicate preserved mono output
84+
- Additional reporting when the camera’s pixel format differs from the frame format emitted to the application
85+
86+
## GUI and usability
87+
88+
### Added
89+
90+
- Added detected camera resolution, frame rate, pixel format, and output format to the camera configuration dialog
91+
- Added better recording path previews with session and run folder placeholders.
92+
- Added additional persistent preferences for recording names, processor selection, inference camera, and encoding options
93+
- Added **Help → View documentation** to open the DeepLabCut-Live-GUI documentation
94+
95+
### Changed
96+
97+
- Improved camera configuration, reset, discovery, and preview workflows
98+
- Improved camera and recorder status summaries
99+
- Improved recording session naming and container-aware filename handling
100+
101+
### Fixed
102+
103+
- Prevented recording and preview controls from becoming permanently disabled after failed stop operations
104+
- Improved cleanup when closing camera dialogs or the main application window
105+
- Improved handling of unavailable cameras loaded from a saved configuration
106+
- Improved configuration persistence and restoration across application sessions
107+
108+
## Custom processor workflows
109+
110+
### Added
111+
112+
- Added processor hooks for recording start and recording stop events
113+
- This allows custom data processing, saving, or cleanup to be performed in sync with the recording
114+
- NOTE: Stopping inference while recording is active may leave processor data unsaved or unpaired with the recording, depending on the processor implementation.
115+
- Added recording context communication with session, run folder, filename, and output file information
116+
- Added support for processor plugins that must be constructed in the inference worker
117+
- Added clearer processor status and recording state information in the GUI
118+
119+
### Changed
120+
121+
- Improved custom processor discovery, selection and settings persistence
122+
123+
### Fixed
124+
125+
- Improved processor cleanup and finalization when recording stop
126+
127+
## Camera and preview lifecycle
128+
129+
### Added
130+
131+
- Added better checks for cameras that are starting, running, or stopping to avoid unresponsive GUI states
132+
- Improved cancelling preview while cameras are still opening
133+
134+
### Changed
135+
136+
- Updated preview controls so **Stop Preview** remains available during camera startup
137+
- Preserved user-configured camera order for the tiled display
138+
139+
### Fixed
140+
141+
- Improved partial multi-camera startup behavior when some cameras open successfully and others fail
142+
- Separated stable internal camera identity from human-readable display labels
143+
- Prevented a camera from reporting a successful start after startup was cancelled
144+
- Improved cleanup of partially initialized backends and worker threads
145+
- Improved detection and rejection of duplicate camera configurations
146+
- Improved recovery when cameras disconnect, repeatedly return empty frames, or fail during startup
147+
- Improved controller shutdown finalization
148+
149+
## Reliability and diagnostics
150+
151+
### Added
152+
153+
- Added focused timing diagnostics for camera workers, controller dispatch, inference, and recording
154+
155+
### Fixed
156+
157+
- Improved handling of stale camera identities and GenTL producer paths
158+
- Improved best-effort cleanup without allowing cleanup errors to hide the original failure
159+
- Improved consistency between camera backend return values and downstream capture, inference, and recording code

‎changelog/v2_0_0rc1.md‎

Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
Version 2.0 is a major rewrite of the application from scratch, delivering a redesigned GUI powered by the latest DLC-Live pose estimation workflows.
2+
3+
## New in 2.0
4+
5+
- New GUI rebuilt from the ground up using PySide6
6+
- PyTorch support for DeepLabCut Live inference
7+
- New camera backends for broader hardware support and more flexible acquisition setups
8+
9+
## Highlights
10+
11+
Improved experience for live preview, inference, and recording
12+
Better support for multi-camera experimental workflows
13+
Modernized architecture to support future extensions and backend improvements
14+
15+
## Notes
16+
17+
This is a major update and may differ from previous versions in setup, supported workflows, and backend behavior.
18+
Please review the [updated documentation](https://deeplabcut.github.io/DeepLabCut/docs/dlc-live/dlc-live-gui/index.html) for installation, camera configuration, and model compatibility.
19+
20+
## Credits
21+
* @arturoptophys PySide6 rewrite, new preview, controls & camera backends
22+
* @C-Achard Production polish, UI/UX improvements, camera backends improvements, documentation
23+
* @deruyter92 Code review, testing and feedback
24+
* @MMathisLab Project lead
25+
26+
---
27+
28+
## What's Changed
29+
* Support Basler camera a2A2590-60umBAS (and other Basler cameras, untested) by @antortjim in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/11
30+
* Basler camera support by @MMathisLab in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/12
31+
* Relax python version upper bound by @jeylau in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/20
32+
* Upgrade Aravis backend features and testing by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/42
33+
* Improving testing coverage and pre-commit checks before release by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/43
34+
* Refactor camera config dialog and reduce code duplication by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/46
35+
* Final UI tweaks by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/47
36+
* Improve camera config loading UX and improve Basler backend by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/45
37+
* Upgrade Gentl backend by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/44
38+
* README update for PySide6 version by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/50
39+
* Add standardized linting workflow and config by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/53
40+
* Upgrade Gentl backend cti discovery by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/51
41+
* Pre-release cleanup for PySide6 GUI by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/54
42+
* Update dlclive requirement & add deploy workflow by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/48
43+
* Deploy workflow candidate for 2.0.0rc1 by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/55
44+
* Upgrade PySide6 multi-camera GUI by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/38
45+
* Remove .coveragerc (duplicated in pyproject.toml) by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/61
46+
* Trigger CI on main/master pushes and tags by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/62
47+
* Add docs link to README by @C-Achard in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/63
48+
49+
## New Contributors
50+
* @antortjim made their first contribution in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/11
51+
* @MMathisLab made their first contribution in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/12
52+
* @jeylau made their first contribution in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/20
53+
* @C-Achard made their first contribution in https://github.com/DeepLabCut/DeepLabCut-live-GUI/pull/42
54+
55+
**Full Changelog**: https://github.com/DeepLabCut/DeepLabCut-live-GUI/compare/v1.0...v2.0.0rc1

0 commit comments

Comments
 (0)