[libdc1394-devel] Re: DMA capture always at least one frame behind ?!
Capture and control API for IIDC compliant cameras
Brought to you by:
ddouxchamps,
gordp
From: Johann S. <j.s...@ir...> - 2004-05-20 05:27:05
|
Martin Morissette and Sascha Lange wrote: > I am using version 0.9.4 > DROP_FRAMES is set to 1 > do_extra_buffering is set to 0 > I'm using libdc1394 0.9.1, do_extra_buffering =3D 0, drop_frames =3D 1. How do you set do_extra_buffering in libdc1394 0.9.1? It didn't exist then. If this is not a typo, I recommend you upgrade your version of libdc1394 to 0.9.4. Anyway, I have been able to reproduce your problem, but only when I set the number of DMA buffers to a small number (2) compared to the frame rate. As soon as I set a decent number of DMA buffers like 50, the problem goes away. I think you have been getting DMA buffer overflows. As soon as that happens video1394 has nowhere to put the latest frame. Even if you have drop_frames set you will only get the last frame video1394 put in the DMA buffer before it overflowed. My general advice is: 1. Don't be too stingy with the number of DMA buffers. I know it sounds counter-intuitive but you will get fresher frames if you have a large number of buffers. Keep in mind that the OS scheduler gives processor time to other processes at odd times and your camera process may not get a chance to run for many tens of microseconds. 2. Don't leave the camera running (ISO transmission on) if you are not regularly calling capture functions (Dan also said this in a different way). You can check if the DMA ring buffer has overflowed (admittedly after it is too late to prevent it) by looking at the number of buffers dropped in the returned value of num_buffers_behind in the dc1394_cameracapture structure. If num_buffers_behind is one less than the number of buffers (the maximum possible value), you have had a buffer overflow. Let us know how you get on. Johann -- Johann Schoonees Imaging & Sensing Team Industrial Research Limited, PO Box 2225, Auckland, New Zealand Phone +64 9 9203679 Fax +64 9 3028106 http://www.is.irl.cri.nz/ Camwire's home: http://kauri.auck.irl.cri.nz/~johanns/camwire/ |