How to use NewestOnly mode with FLIR USB3 camera

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.