esitarski / CrossMgr

Cyclo Cross Management Application
MIT License
40 stars 20 forks source link

CrossMgrVideo improvements #116

Open kimble4 opened 1 year ago

kimble4 commented 1 year ago

Several related improvements to CrossMgrVideo that are probably worth including in the official version:

Firstly, a widget that selects how the Triggerlist behaves when a new capture is made. Options are: 'Auto select' - the normal behaviour, where the latest trigger is selected automatically. 'Fast preview' - retrieves a single frame for the trigger from the database and draws it directly on the PhotoPanel, which is considerably faster (I'm seeing ~10ms vs up to a couple of seconds for ~400 frame triggers). The trigger is left un-selected in the list, so the user can click on it to load all the frames (switching to the Finish Strip view will also cause it to be loaded). 'Scroll triggers' - the trigger is added to the list, and the list scrolled to make it visible, but is neither previewed nor selected. 'Autoselect off' - the trigger is added to the list, but the current selection is unaffected. Useful if you want to review a trigger while captures may occur.

As part of implementing this, I've fixed the self.tsMax-related date issues described in #112 - the selected date is now reset properly to the current day when jumping to a new capture, and AutoSelect is disabled when selecting a historical date. Similarly, AustoSelect is disabled when filtering by bib.

I've removed a call to wx.CallAfter( self.onTriggerSelected ) when selecting a new trigger at the end of refreshTriggers(), because self.triggerList.Select() fires an event to do this already. This means onTriggerSelected() no longer runs twice after a refresh, which presumably improves performance.

Added support for single frame capture via joystick button 3 for completeness, and indicate in the name field when captures are triggered by the joystick (this was useful to me when testing a beam-break trigger device).

Also fixed a bug in the Compute Speed wizard where the image was rendered over the top of the wizard navigation controls on the second page. Added a combo-box selection of some standard wheel sizes (which I'd imagine the juniors and MTBers would also appreciate), and allow free-form entry of a wheel diameter in millimetres.

Further refinements:

Copying of the preview bitmap into the PhotoPanel at the start of capture in the appropriate AutoSelect modes, if the capture is close enough to realtime for it to show the rider passing. This provides excellent realtime feedback with no additional database load.

Capture status shown below the preview - The GUI now indicates that it's actually doing something when the capture is triggered by CrossMgr!

Ability to disable sequential bib numbers for manual/joystick captures - this is useful when operated stand-alone, but confusing when used in combination with CrossMgr.

Fixed the help HTML generation.

Preview update frequency is now adjusted to account for the actual camera frame rate, aiming for a constant 6fps.

I tested the above at a race on 2023-04-23. At no point did Windows mark CrossMgrVideo as 'Not Responding' (which I'd found was a problem since upgrading to a 60fps camera), and the better feedback on what was being captured was appreciated.

jezza323 commented 7 months ago

Same with this one @esitarski