[aravis] Re: How to capture the most recent frame only

  • From: Emmanuel Pacaud <emmanuel.pacaud@xxxxxxxxxxxxx>
  • To: aravis@xxxxxxxxxxxxx
  • Date: Mon, 05 Mar 2018 07:24:42 +0100

Hi Seth,

Le sam. 3 mars 2018 à 21:05, Seth Nickell <seth@xxxxxxxxxxxxxxxx> a écrit :

We have a non-hw-triggerable genicam that continuously outputs 30fps, but we only need to capture a small subset of those frames in response to a software trigger condition.

Could you suggest the best way to approach this problem with Aravis API-usage wise? Basically precise timing is most important to this application, I'd like to as-predictably-as-possible capture the very next frame after the moment I try to trigger.

I tried setting up an ArvStream with only two ArvBuffers, but there seems to be some latency in the pipeline because I'm getting frames 250ms delayed through this approach (=10 frames late at 30fps).

Ideally I don't want to do network transfer on frames that are NOT triggered, is there some way to accomplish this by using low-level Aravis APIs to capture frames directly?

Could you tell us more about the camera you are using (model, manufacturer) ?

The output of `arv-tool-0.6 features` could also help to understand what is possible with your camera.

If there is actually no control on the framerate, you can not control what is transferred on the network.

The best latency is obtained by using a stream callback (see arv_camera_create_stream).

Cheers,

        Emmanuel.


Other related posts: