The problem:
==========
We use for traffic sign recognition in cars small embedded pc boards with
limited computing power. 

The computing time for one image is about 100-140 ms. Because of this time it
is impossibe to analyse all frames we get from the video camera. It makes sense
to have access to the last few frames in case we discover an interesting object
which is already partially outside the curent frame. Than we can repeat image
processing in the area of interest in an older frame.  

Also we save i.e. 50 frames to disc without missing one. These video
sequences we later analyse. For this we use a ring buffer storing continuously
frames and in case there is an interesting traffic situation we press a button
to flush the whole ring buffer to disk.

To avoid memcopy we are thinking about driver API functions like this:
--------------------------------------
int SetParam( void* param )
int GetParam( void** pparam )

int StartAquisition( void )
int StopAuisition( void )

int AllocImgBuffer( char** paddr ); // size in param 
int DeallocImgBuffer ( char* addr ); 

int IncludeImgBufferIntoAqu( char* addr ); // "write" 
int ExcludeImgBufferFromAqu( char* addr ); // "read"

int GetAquList( char*** p ); // sorted by age of images
--------------------------------------
The minimum ring buffer count should be 3 (triple buffering).

The memory allocation should be done by the driver, because of the grabber dma.

The application can dynamically change the ring buffer size and using
ExcludeImgBufferFromAqu() it can keep several frames as long as needed. 

Synchronisation with Vsync could be done in a second application thread using
poll().

The question:
===========
Is this problem of any interest to be discussed here?
Is there already an approach for this kind of problems in V4l, V4L2, ...? 
(Please don't beat me if I was not carefully enough reading the docs.) 
We need to solve this problem but I prefer a solution which is useful not only
for us but also for the linux community.

Thanks in advance for comments.

Thomas


-- 
         To unsubscribe: mail [EMAIL PROTECTED] with 
                       "unsubscribe" as the Subject.

Reply via email to