Hello.
I’m trying to get video from FLIR’s USB3 camera using Aravis.
I was able to get the image and get the pipeline working to the end as follows: At this time, the exposure time and gain value could be specified manually.
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/ aravissrc camera-name=“FLIR-01323567” exposure=20000 gain=45 ! video/x-bayer,width=2448,height=2048,framerate=15/2 ! bayer2rgb ! videoconvert ! xvimagesink
However, there is a delay in the images displayed in this pipeline. I think this is because the camera has buffers for multiple frames, and by default, the images acquired at a slightly earlier timing are sent.
FLIR’s SDK (c ++) allows to select the camera buffer mode.
When I set the buffer mode to “NewestOnly” in a c ++ program as follows, there is no delay.
ptrHandlingMode-> GetEntryByName (“NewestOnly”)
My question is, how can I use Aravis to specify the mode of the camera’s buffer? about it. It would be nice if you could specify it with a simple description, such as the exposure time and gain value.
Is it not possible to use Aravis to specify the mode of FLIR’s USB3 camera buffer? Is there a way to find out if that is the case?
We would like to hear your comments.
Hi,
Is there a feature listed by arv-tool-0.8 features
that is supposed to handle Handling Mode ?
If so, you can set it using the features
aravissrc gstreamer plugin parameter.
Let’s say the feature is named BufferMode
, you may use:
gst-launch-1.0 --gst-plugin-path=/usr/local/lib/ aravissrc camera-name=“FLIR-01323567” exposure=20000 gain=45 features="BufferMode=NewestOnly" ! video/x-bayer,width=2448,height=2048,framerate=15/2 ! bayer2rgb ! videoconvert ! xvimagesink
Hello, Emmanuel
Thank you for your reply.
I tried it immediately. Unfortunately, I couldn’t find “Handling Mode”.
Is it reasonable to convince that the “Handling Mode” item cannot be set with this FLIR camera?
Please let me know if there is anything else you should try.
I’m sorry to say that it’s very long, but the results are quoted below.
shuono@shuono-DAIV-NG4300:~$ arv-tool-0.8 features
FLIR-0132356A (USB3)
Category : 'Root'
Category : 'AcquisitionControl'
Enumeration : 'AcquisitionMode'
EnumEntry : 'MultiFrame'
EnumEntry : 'SingleFrame'
EnumEntry : 'Continuous'
Command : 'AcquisitionStart'
Command : 'AcquisitionStop'
Integer : 'AcquisitionFrameCount'
Integer : 'AcquisitionBurstFrameCount'
Enumeration : 'ExposureMode'
EnumEntry : 'TriggerWidth'
EnumEntry : 'Timed'
Float : 'ExposureTime'
Enumeration : 'ExposureAuto'
EnumEntry : 'Continuous' (Not available)
EnumEntry : 'Once' (Not available)
EnumEntry : 'Off'
Float : 'AcquisitionFrameRate'
Float : 'AcquisitionResultingFrameRate'
Boolean : 'AcquisitionFrameRateEnable'
Float : 'AcquisitionLineRate'
Enumeration : 'TriggerSelector'
* TriggerMode
* TriggerSoftware
* TriggerSource
* TriggerActivation
* TriggerOverlap
* TriggerDelay
EnumEntry : 'FrameBurstStart'
EnumEntry : 'FrameStart'
EnumEntry : 'AcquisitionStart'
Enumeration : 'TriggerMode'
EnumEntry : 'On'
EnumEntry : 'Off'
Command : 'TriggerSoftware'
Enumeration : 'TriggerSource'
EnumEntry : 'LogicBlock1'
EnumEntry : 'LogicBlock0'
EnumEntry : 'Counter1End'
EnumEntry : 'Counter0End'
EnumEntry : 'Counter1Start'
EnumEntry : 'Counter0Start'
EnumEntry : 'UserOutput3'
EnumEntry : 'UserOutput2'
EnumEntry : 'UserOutput1'
EnumEntry : 'UserOutput0'
EnumEntry : 'Line3'
EnumEntry : 'Line2'
EnumEntry : 'Line0'
EnumEntry : 'Software'
Enumeration : 'TriggerActivation' (Not available)
EnumEntry : 'AnyEdge'
EnumEntry : 'RisingEdge'
EnumEntry : 'FallingEdge'
EnumEntry : 'LevelHigh'
EnumEntry : 'LevelLow'
Enumeration : 'TriggerOverlap'
EnumEntry : 'ReadOut'
EnumEntry : 'Off'
Float : 'TriggerDelay'
Enumeration : 'SensorShutterMode'
EnumEntry : 'Global'
...
Category : 'DeviceControl'
Enumeration : 'DeviceTemperatureSelector'
* DeviceTemperature
EnumEntry : 'Sensor'
Enumeration : 'DeviceScanType'
EnumEntry : 'Areascan'
Enumeration : 'DeviceSensorChroma'
EnumEntry : 'PolarizationColor'
EnumEntry : 'PolarizationMono'
EnumEntry : 'NIR'
EnumEntry : 'RGB'
EnumEntry : 'Mono'
StringReg : 'DeviceVendorName'
StringReg : 'DeviceModelName'
StringReg : 'SensorDescription'
StringReg : 'DeviceManufacturerInfo'
StringReg : 'DeviceVersion'
StringReg : 'DeviceFirmwareVersion'
StringReg : 'DeviceSerialNumber'
StringReg : 'DeviceID'
StringReg : 'DeviceUserID'
Enumeration : 'DeviceTLType'
EnumEntry : 'Custom'
EnumEntry : 'USB3Vision'
EnumEntry : 'CoaXPress'
EnumEntry : 'CameraLinkHS'
EnumEntry : 'CameraLink'
EnumEntry : 'GigEVision'
Integer : 'DeviceGenCPVersionMajor'
Integer : 'DeviceGenCPVersionMinor'
Integer : 'DeviceMaxThroughput'
Integer : 'DeviceLinkSpeed'
Integer : 'DeviceLinkThroughputLimit'
Float : 'DeviceLinkBandwidthReserve'
Integer : 'DeviceLinkCurrentThroughput'
Command : 'DeviceReset'
Enumeration : 'DeviceIndicatorMode'
EnumEntry : 'ErrorStatus'
EnumEntry : 'Active'
EnumEntry : 'Inactive'
Float : 'DeviceTemperature'
Command : 'TimestampLatch'
Integer : 'TimestampLatchValue'
Integer : 'TimestampIncrement'
Enumeration : 'DevicePowerSupplySelector'
* PowerSupplyVoltage
* PowerSupplyCurrent
EnumEntry : 'External'
Float : 'PowerSupplyVoltage'
Float : 'PowerSupplyCurrent'
Integer : 'DeviceUptime'
Integer : 'LinkUptime'
Integer : 'EnumerationCount'
Command : 'FactoryReset'
Integer : 'MaxDeviceResetTime'
Category : 'TransportLayerControl'
Integer : 'PayloadSize'
Integer : 'TLParamsLocked'
Category : 'USB3Vision'
Integer : 'U3VMaxDeviceResponseTime'
Integer : 'U3VMessageChannelID'
Integer : 'U3VAccessPrivilege'
Integer : 'U3VVersionMajor'
Integer : 'U3VVersionMinor'
Integer : 'U3VCPCapability'
* U3VCPSIRMAvailable
* U3VCPEIRMAvailable
* U3VCPIIDC2Available
Boolean : 'U3VCPSIRMAvailable'
Boolean : 'U3VCPEIRMAvailable'
Boolean : 'U3VCPIIDC2Available'
Integer : 'U3VMaxCommandTransferLength'
Integer : 'U3VMaxAcknowledgeTransferLength'
Integer : 'U3VNumberOfStreamChannels'
Enumeration : 'U3VCurrentSpeed'
EnumEntry : 'SuperSpeed'
EnumEntry : 'HighSpeed'
EnumEntry : 'FullSpeed'
EnumEntry : 'LowSpeed'
Integer : 'LinkErrorCount'
Integer : 'LinkRecoveryCount'
Category : 'SequencerControl'
Enumeration : 'SequencerMode'
EnumEntry : 'On'
EnumEntry : 'Off'
Enumeration : 'SequencerConfigurationMode'
EnumEntry : 'On'
EnumEntry : 'Off'
Enumeration : 'SequencerConfigurationValid'
EnumEntry : 'Yes'
EnumEntry : 'No'
Command : 'SequencerConfigurationReset'
Enumeration : 'SequencerFeatureSelector'
* SequencerFeatureEnable
EnumEntry : 'Height'
EnumEntry : 'Width'
EnumEntry : 'OffsetY'
EnumEntry : 'OffsetX'
EnumEntry : 'Gain'
EnumEntry : 'ExposureTime'
Boolean : 'SequencerFeatureEnable'
Integer : 'SequencerSetStart'
Integer : 'SequencerSetActive' (Not available)
Integer : 'SequencerSetSelector'
* SequencerSetValid
* SequencerSetSave
* SequencerSetLoad
* SequencerPathSelector
* SequencerTriggerSource
* SequencerTriggerActivation
* SequencerSetNext
Enumeration : 'SequencerSetValid'
EnumEntry : 'Yes'
EnumEntry : 'No'
Command : 'SequencerSetSave'
Command : 'SequencerSetLoad'
Integer : 'SequencerPathSelector'
* SequencerTriggerSource
* SequencerTriggerActivation
* SequencerSetNext
Enumeration : 'SequencerTriggerSource'
EnumEntry : 'FrameStart'
EnumEntry : 'Off'
Enumeration : 'SequencerTriggerActivation' (Not available)
EnumEntry : 'LevelLow' (Not available)
EnumEntry : 'LevelHigh' (Not available)
EnumEntry : 'AnyEdge' (Not available)
EnumEntry : 'FallingEdge' (Not available)
EnumEntry : 'RisingEdge' (Not available)
Integer : 'SequencerSetNext' (Not available)
...
Category : 'UserSetControl'
Enumeration : 'UserSetSelector'
* UserSetLoad
* UserSetSave
EnumEntry : 'UserSet1'
EnumEntry : 'UserSet0'
EnumEntry : 'Default'
Command : 'UserSetLoad'
Command : 'UserSetSave'
Enumeration : 'UserSetDefault'
EnumEntry : 'UserSet1'
EnumEntry : 'UserSet0'
EnumEntry : 'Default'
Enumeration : 'UserSetFeatureSelector'
EnumEntry : 'Width'
EnumEntry : 'V3_3EnableLine3'
EnumEntry : 'V3_3EnableLine2'
EnumEntry : 'V3_3EnableLine1'
EnumEntry : 'V3_3EnableLine0'
EnumEntry : 'UserOutputValueAll'
EnumEntry : 'TriggerSourceFrameStart'
EnumEntry : 'TriggerSourceFrameBurstStart'
EnumEntry : 'TriggerSourceAcquisitionStart'
EnumEntry : 'TriggerOverlapFrameStart'
EnumEntry : 'TriggerOverlapFrameBurstStart'
EnumEntry : 'TriggerOverlapAcquisitionStart'
EnumEntry : 'TriggerModeFrameStart'
EnumEntry : 'TriggerModeFrameBurstStart'
EnumEntry : 'TriggerModeAcquisitionStart'
EnumEntry : 'TriggerDelayFrameStart'
EnumEntry : 'TriggerDelayFrameBurstStart'
EnumEntry : 'TriggerDelayAcquisitionStart'
EnumEntry : 'TriggerActivationFrameStart'
EnumEntry : 'TriggerActivationFrameBurstStart'
EnumEntry : 'TriggerActivationAcquisitionStart'
EnumEntry : 'TransferOperationMode'
EnumEntry : 'TransferControlMode'
EnumEntry : 'TransferBlockCount'
EnumEntry : 'TestPatternSensor'
EnumEntry : 'TestPatternPipelineStart'
EnumEntry : 'SharpeningThreshold'
EnumEntry : 'SharpeningEnable'
EnumEntry : 'SharpeningAuto'
EnumEntry : 'Sharpening'
EnumEntry : 'SerialPortStopBitsSerialPort0'
EnumEntry : 'SerialPortSourceSerialPort0'
EnumEntry : 'SerialPortParitySerialPort0'
EnumEntry : 'SerialPortDataBitsSerialPort0'
EnumEntry : 'SerialPortBaudRateSerialPort0'
EnumEntry : 'SensorShutterMode'
EnumEntry : 'SaturationEnable'
EnumEntry : 'Saturation'
EnumEntry : 'RgbTransformLightSource'
EnumEntry : 'ReverseY'
EnumEntry : 'ReverseX'
EnumEntry : 'PixelFormat'
EnumEntry : 'OffsetY'
EnumEntry : 'OffsetX'
EnumEntry : 'MultiRoiWidthROI7'
EnumEntry : 'MultiRoiWidthROI6'
EnumEntry : 'MultiRoiWidthROI5'
EnumEntry : 'MultiRoiWidthROI4'
EnumEntry : 'MultiRoiWidthROI3'
EnumEntry : 'MultiRoiWidthROI2'
EnumEntry : 'MultiRoiWidthROI1'
EnumEntry : 'MultiRoiWidthROI0'
EnumEntry : 'MultiRoiOffsetYROI7'
EnumEntry : 'MultiRoiOffsetYROI6'
EnumEntry : 'MultiRoiOffsetYROI5'
EnumEntry : 'MultiRoiOffsetYROI4'
EnumEntry : 'MultiRoiOffsetYROI3'
EnumEntry : 'MultiRoiOffsetYROI2'
EnumEntry : 'MultiRoiOffsetYROI1'
EnumEntry : 'MultiRoiOffsetYROI0'
EnumEntry : 'MultiRoiOffsetXROI7'
EnumEntry : 'MultiRoiOffsetXROI6'
EnumEntry : 'MultiRoiOffsetXROI5'
EnumEntry : 'MultiRoiOffsetXROI4'
EnumEntry : 'MultiRoiOffsetXROI3'
EnumEntry : 'MultiRoiOffsetXROI2'
EnumEntry : 'MultiRoiOffsetXROI1'
EnumEntry : 'MultiRoiOffsetXROI0'
EnumEntry : 'MultiRoiHeightROI7'
EnumEntry : 'MultiRoiHeightROI6'
EnumEntry : 'MultiRoiHeightROI5'
EnumEntry : 'MultiRoiHeightROI4'
EnumEntry : 'MultiRoiHeightROI3'
EnumEntry : 'MultiRoiHeightROI2'
EnumEntry : 'MultiRoiHeightROI1'
EnumEntry : 'MultiRoiHeightROI0'
EnumEntry : 'MultiRoiFeatureEnable'
EnumEntry : 'MultiRoiEnableROI7'
EnumEntry : 'MultiRoiEnableROI6'
EnumEntry : 'MultiRoiEnableROI5'
EnumEntry : 'MultiRoiEnableROI4'
EnumEntry : 'MultiRoiEnableROI3'
EnumEntry : 'MultiRoiEnableROI2'
EnumEntry : 'MultiRoiEnableROI1'
EnumEntry : 'MultiRoiEnableROI0'
EnumEntry : 'LogicBlockLUTOutputValueAllLogicBlock1Value'
EnumEntry : 'LogicBlockLUTOutputValueAllLogicBlock1Enable'
EnumEntry : 'LogicBlockLUTOutputValueAllLogicBlock0Value'
EnumEntry : 'LogicBlockLUTOutputValueAllLogicBlock0Enable'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock1Input3'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock1Input2'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock1Input1'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock1Input0'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock0Input3'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock0Input2'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock0Input1'
EnumEntry : 'LogicBlockLUTInputSourceLogicBlock0Input0'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock1Input3'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock1Input2'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock1Input1'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock1Input0'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock0Input3'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock0Input2'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock0Input1'
EnumEntry : 'LogicBlockLUTInputActivationLogicBlock0Input0'
EnumEntry : 'LineSourceLine3'
EnumEntry : 'LineSourceLine2'
EnumEntry : 'LineSourceLine1'
EnumEntry : 'LineSourceLine0'
EnumEntry : 'LineModeLine3'
EnumEntry : 'LineModeLine2'
EnumEntry : 'LineModeLine1'
EnumEntry : 'LineModeLine0'
EnumEntry : 'LineInverterLine3'
EnumEntry : 'LineInverterLine2'
EnumEntry : 'LineInverterLine1'
EnumEntry : 'LineInverterLine0'
EnumEntry : 'LineFilterWidthLine3Deglitch'
EnumEntry : 'LineFilterWidthLine3Debounce'
EnumEntry : 'LineFilterWidthLine2Deglitch'
EnumEntry : 'LineFilterWidthLine2Debounce'
EnumEntry : 'LineFilterWidthLine1Deglitch'
EnumEntry : 'LineFilterWidthLine1Debounce'
EnumEntry : 'LineFilterWidthLine0Deglitch'
EnumEntry : 'LineFilterWidthLine0Debounce'
EnumEntry : 'LUTEnable'
EnumEntry : 'IspEnable'
EnumEntry : 'Height'
EnumEntry : 'GammaEnable'
EnumEntry : 'Gamma'
EnumEntry : 'GainAuto'
EnumEntry : 'GainAll'
EnumEntry : 'FfcMode'
EnumEntry : 'FfcEnable'
EnumEntry : 'ExposureTime'
EnumEntry : 'ExposureMode'
EnumEntry : 'ExposureAuto'
EnumEntry : 'ExposureActiveMode'
EnumEntry : 'EventNotificationSerialPortReceive'
EnumEntry : 'EventNotificationExposureEnd'
EnumEntry : 'EventNotificationError'
EnumEntry : 'EvCompensationRaw'
EnumEntry : 'DeviceLinkThroughputLimit'
EnumEntry : 'DeviceLinkBandwidthReserve'
EnumEntry : 'DeviceIndicatorMode'
EnumEntry : 'DefectCorrectionMode'
EnumEntry : 'DefectCorrectStaticEnable'
EnumEntry : 'DecimationVerticalAll'
EnumEntry : 'DecimationHorizontalAll'
EnumEntry : 'CounterTriggerSourceCounter1'
EnumEntry : 'CounterTriggerSourceCounter0'
EnumEntry : 'CounterTriggerActivationCounter1'
EnumEntry : 'CounterTriggerActivationCounter0'
EnumEntry : 'CounterResetSourceCounter1'
EnumEntry : 'CounterResetSourceCounter0'
EnumEntry : 'CounterResetActivationCounter1'
EnumEntry : 'CounterResetActivationCounter0'
EnumEntry : 'CounterEventSourceCounter1'
EnumEntry : 'CounterEventSourceCounter0'
EnumEntry : 'CounterEventActivationCounter1'
EnumEntry : 'CounterEventActivationCounter0'
EnumEntry : 'CounterDurationCounter1'
EnumEntry : 'CounterDurationCounter0'
EnumEntry : 'CounterDelayCounter1'
EnumEntry : 'CounterDelayCounter0'
EnumEntry : 'ColorTransformationEnable'
EnumEntry : 'ChunkModeActive'
EnumEntry : 'ChunkEnableAll'
EnumEntry : 'BlackLevelClampingEnable'
EnumEntry : 'BlackLevelAll'
EnumEntry : 'BinningVerticalMode'
EnumEntry : 'BinningVerticalAll'
EnumEntry : 'BinningHorizontalMode'
EnumEntry : 'BinningHorizontalAll'
EnumEntry : 'BalanceWhiteAutoUpperLimit'
EnumEntry : 'BalanceWhiteAutoProfile'
EnumEntry : 'BalanceWhiteAutoLowerLimit'
EnumEntry : 'BalanceWhiteAutoDamping'
EnumEntry : 'BalanceWhiteAuto'
EnumEntry : 'BalanceRatioRed'
EnumEntry : 'BalanceRatioBlue'
EnumEntry : 'AutoExposureTargetGreyValueAuto'
EnumEntry : 'AutoExposureTargetGreyValue'
EnumEntry : 'AutoExposureMeteringMode'
EnumEntry : 'AutoExposureLightingMode'
EnumEntry : 'AutoExposureGreyValueUpperLimit'
EnumEntry : 'AutoExposureGreyValueLowerLimit'
EnumEntry : 'AutoExposureGainUpperLimit'
EnumEntry : 'AutoExposureGainLowerLimit'
EnumEntry : 'AutoExposureExposureTimeUpperLimit'
EnumEntry : 'AutoExposureExposureTimeLowerLimit'
EnumEntry : 'AutoExposureEVCompensation'
EnumEntry : 'AutoExposureControlPriority'
EnumEntry : 'AutoExposureControlLoopDamping'
EnumEntry : 'AdcBitDepth'
EnumEntry : 'AcquisitionMode'
EnumEntry : 'AcquisitionLineRate'
EnumEntry : 'AcquisitionFrameRateEnable'
EnumEntry : 'AcquisitionFrameRate'
EnumEntry : 'AcquisitionFrameCount'
EnumEntry : 'AcquisitionBurstFrameCount'
EnumEntry : 'AasRoiWidthAwb'
EnumEntry : 'AasRoiWidthAe'
EnumEntry : 'AasRoiOffsetYAwb'
EnumEntry : 'AasRoiOffsetYAe'
EnumEntry : 'AasRoiOffsetXAwb'
EnumEntry : 'AasRoiOffsetXAe'
EnumEntry : 'AasRoiHeightAwb'
EnumEntry : 'AasRoiHeightAe'
EnumEntry : 'AasRoiEnableAwb'
EnumEntry : 'AasRoiEnableAe'
Boolean : 'UserSetFeatureEnable'
Ok, so this parameter is probably internal to FLIR SDK.
So may be the latency you are observing is due to the gstreamer pipeline. You may want to try to set sync=false for xvimagesink element.