[libdc1394-devel] How exactly the DMA works witha webcam that use libdc1394
Capture and control API for IIDC compliant cameras
Brought to you by:
ddouxchamps,
gordp
From: Erio G. <gri...@ti...> - 2004-01-10 09:59:21
|
Hello to all of the m-list, we use a firewire camera on a real-time robot application; we try to use all of the frame that the camera can give us but studing the DMA, something is understable to us: How the driver can always give the newer image in a minumum time using only one position of the ring buffer? We are used to see a buffer that return the last complete image acquired, acquiring continually in all the buffer so not to waste time...but the ring buffer return only the lastbuffer position, refreshed when?? I'll try to explain better: how the driver works? -It take a new image just after the Done_with_buffer and put that into the lasbuffer position until the application will give another done_with_buffer? If that's like this, if I take the image after some second i'll have an old image!? -It continously put the last image in the lastbuffer position until i'll take it, and then, after the done_with_buffer the acquisition will begin again in the following position of the ring buffer? If that's like this sometime I have to wait the entire time of acquisition of a frame before I can heve it!! -or what? We can't suppose anything even if we read almos all of the source of the lidc1394 All this doubts was born because we worked directly on the ring_buffer AFTER the done_with_buffer...and the problem was that we work on the same image for N time, where N is the dimension of the ring buffer...even if we always returned the pointer to the position with the last image acquired! Thanks for any help yiu cab give us, also link to full documentation, Grillo&Cavicchioli of the Bicocca University of Milan, trying to the degree |