Ronald S. Bultje wrote:
> Hi,
> 
> On Wed, 2007-01-02, Andy Brown wrote:
>> So from what you explain, I cannot stop this from causing the device to 
>> stop delivering the data and require the device to be closed then re-opened?
> 
> You don't need to close it, you just need to re-queue the frame for
> capture. I.e., your _application_ is responsible for handling te capture
> error. The driver doesn't crash or anything, it simply returns an error
> on he sync call, because the next frame could not be delivered (it got
> lost), probably along with a whole bunch of more frames if the
> interference is really bad. Simply discard them and continue queueing
> frames for capture and you should be fine.
> 
> (Note, however, that this is the theory; in practice, we never actually
> test that. If you want, we can add a --ignore-frame-errors or so to
> lavrec and see if it really actually works, and fix possible driver
> errors, but that will require some small testing + patching from your
> side.)

Ah, right. Sorry I'm not any good at image programming, so bear with me 
on this one! That makes a lot of sense though Ronald.
What I'm getting is the first frame dropped with an:
"sync error in proc 11048: Timer expired"
and then the second attempt:
"mcapture error in proc 11048: Device or resource busy"
error, which are both generated from this piece of code:

vid_mmap.frame = viddev->v4l_curbuffer;

         if (ioctl(dev, VIDIOCMCAPTURE, &vid_mmap) == -1) {
                 motion_log(LOG_ERR, 1, "mcapture error in proc %d", 
getpid());
                 sigprocmask (SIG_UNBLOCK, &old, NULL);
                 return V4L_FATAL_ERROR;
         }

         vid_mmap.frame=frame;

         if (ioctl(dev, VIDIOCSYNC, &vid_mmap.frame) == -1) {
                 motion_log(LOG_ERR, 1, "sync error in proc %d", getpid());
                 sigprocmask (SIG_UNBLOCK, &old, NULL);
         }


(I understand this is difficult to understand only seeing a small 
portion of the code).
What I'm understanding from you, is that I should be able to change this 
so it isn't a fatal error, and continue trying to retrieve frames, 
simply skipping the 'bad' ones?

I'll give that a try, as I'd love to get this working! Thanks for your 
assistance.

Regards,
-- 
Andy
w: http://www.thebmwz3.co.uk

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Mjpeg-users mailing list
Mjpeg-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mjpeg-users

Reply via email to