- Removed focal_length_time_window parameter from ComputeParams and StabilizationParams as it is no longer needed.
- Updated smooth_focal_lengths_gaussian and smooth_focal_lengths_adaptive functions to enhance focal length smoothing logic.
- Introduced focal_length_fov_compensation function to apply focal length compensation in FOV calculations.
- Adjusted TimelineGyroChart to incorporate new series for focal lengths and smoothed focal lengths, ensuring consistent scaling.
- Modified UI components to reflect changes in focal length smoothing settings, including removal of the time window slider and updating the strength slider to a percentage scale.
- Cleaned up related code in stabilization and zooming modules to align with the new focal length smoothing approach.
- Save/load focal length smoothing settings (enabled, strength, time window) to project files
- Replace 'show on chart' checkbox with 'FL' button on timeline (next to Z button)
- Add conditional visibility for focal length UI elements based on video metadata
- Optimize performance with lazy evaluation of has_per_frame_focal_length property
- Only process focal length data when smoothing is enabled
- Cache focal length availability flag to avoid lock contention during video loading
- Add focal length smoothing to preset system
Implements focal length stabilization for cameras with dynamic lens metadata,
primarily Sony cameras. Smooths out abrupt zoom changes (zoom-ins and zoom-outs)
captured in camera metadata using Gaussian filtering.
Features:
- Gaussian filtering on raw focal length signal to create smooth curve
- Digital zoom compensation to match smoothed focal length
- Configurable smoothing strength (0.0 to 1.0, default 0.5)
- Configurable time window (0.1 to 5.0 seconds, default 1.0s)
- Real-time visualization in timeline chart (orange=raw, yellow=smoothed)
The smoothed focal length data is integrated into the FOV calculation pipeline
and applies digital compensation during frame transformation to stabilize the
perceived zoom level throughout the video.
Add a checkbox under the "Lens profile" section in the preset
settings selector. When checked, writes `plugin_disable_stretch: true`
to the exported .gyroflow preset file. This flag is read by the
OFX/Adobe plugins (see gyroflow/gyroflow-plugins#51) to automatically
enable "Disable Gyroflow's stretch" when loading the preset.
Unchecked by default since it's only needed when the NLE handles
anamorphic desqueeze (e.g. via Pixel Aspect Ratio in DaVinci Resolve).
Co-authored-by: Kyle <globalprojectscorp@users.noreply.github.com>
* auto horizon lock implemented
* Add optional tilt acceleration/deceleration limit to Automatic lock
- Added tilt_accel_limit field to HorizonLock struct with smart acceleration limiting
- Implemented exponential rate clamping in both gravity and non-gravity horizon lock branches
- Added optional UI checkbox 'Limit tilt acceleration' under Automatic lock settings
- Slider range: 0.1-30.0 °/s² with default 3.0 °/s² when enabled
- When disabled, uses unlimited acceleration (infinity) for backward compatibility
- Updated controller and core library to support the new parameter
- Properly loads/saves tilt_accel_limit in gyroflow project files
* Filtering of DIS Optical Flow Algorithm Results
Through the variance method, filter out the parts with weak texture in the results. Tests have shown that this can significantly improve the success rate of synchronization.
* Fix the memory leak problem when the number of feature points is 0.
Through the variance method, filter out the parts with weak texture in the results. Tests have shown that this can significantly improve the success rate of synchronization.