Skip to content

Allow independent configuration of AcquisitionFrameRate for hardware triggering - #147

Open
michaelarusso wants to merge 1 commit into
basler:mainfrom
michaelarusso:fix-hardware-trigger-properties
Open

Allow independent configuration of AcquisitionFrameRate for hardware triggering#147
michaelarusso wants to merge 1 commit into
basler:mainfrom
michaelarusso:fix-hardware-trigger-properties

Conversation

@michaelarusso

Copy link
Copy Markdown

Allow independent configuration of AcquisitionFrameRate for hardware triggering

Problem:
When a camera operates with TriggerMode=On (using an external hardware trigger), forcing the camera's AcquisitionFrameRate to exactly match the negotiated GStreamer pipeline framerate capability causes frame drops and rate inconsistencies. This occurs because the clock of the external hardware trigger drifts relative to the Basler camera's internal clock, resulting in missed triggers when the strict timing window is violated.

Context:
In GenICam/Pylon, AcquisitionFrameRate is documented to act as an upper limit (throttling boundary) to prevent over-triggering, rather than a strict interval setting, especially when using external triggers. However, the plugin previously blacklisted these properties and unconditionally forced the camera's framerate to strictly mirror the GStreamer capability negotiated during caps resolution.

Solution:

  1. Removed property blacklisting: AcquisitionFrameRateEnable, AcquisitionFrameRate, and AcquisitionFrameRateAbs have been removed from the propfilter_set in gstpylonfeaturewalker.cpp. This allows users to correctly expose and configure these parameters directly via GStreamer element properties (e.g., cam::AcquisitionFrameRateEnable=True) or via PFS.
  2. Honoring user configuration: Modified the configuration logic in gst_pylon_set_configuration() to check if AcquisitionFrameRateEnable was previously enabled (either via a PFS config or element properties). If enabled, the plugin honors the pre-configured limit and skips overwriting it with the pipeline's arbitrary caps framerate.
  3. Fallback to caps: If the user does not explicitly configure these parameters, the plugin preserves its original behavior: it enables the property and derives the camera framerate directly from the downstream GStreamer caps negotiation.

thiesmoeller added a commit that referenced this pull request Jul 8, 2026
Merge architecture_refactor and Conan-based CI from update_build,
require pylon C++ SDK 12.2+, and bump the project to 2.0.0.

- Apply PR #147/#148 locally: hardware-trigger framerate and Jetson NVMM
paths
- Fix OffsetY caps on cameras without ROI, direct open by serial
(#138/#140)
- Relax PFS nodemap sanity check (#136/#141)
- Stabilize compat tests to compare static pylonsrc properties only
- Run state tests with PYLON_CAMEMU=1
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