I've been experimenting with adding an x-window monitoring the captured video to lavrec, and so have had to study "The video capture loop" in lavrec_record() in liblavrec.c carefully to hook in my video monitor code.
Anyway, I think there may be a bug in liblavrec.c - or else somthing I don't understand. (This may only apply to hardware mjpeg encoding; I use an LML33 zoran card) Starting at around line 2068 of liblavrec.c from mjpegtools-1.6.2 (CVS looks the same, although line numbers may be different), a summary of the code looks like: while (settings->state == LAVREC_STATE_RECORDING) { /* sync on a frame */ lavrec_sync_buffer(); /* ioctl(video_fd, MJPIOC_SYNC, b) */ /* audio stuff */ /* single-frame and time_lapse ignored for clarity */ nfout = 1; /* Check if we have to insert/delete frames to stay in sync */ if (info->sync_correction > 1) { if( stats.tdiff1 - stats.tdiff2 < -settings->sync_lim) nfout++; if( stats.tdiff1 - stats.tdiff2 > settings->sync_lim) nfout--; } /* write it out */ if (info->software_encoding) { /* omitted */ } else if(write_frame && nfout > 0) { video_captured(); /* write frame to file nfout times */ lavrec_queue_buffer(); /* ioctl(video_fd, MJPIOC_QBUF_CAPT, b.frame) */ } Shouldn't a recording application always re-queue every frame-buffer that ioctl(MPJIO_SYNC) reports back by eventually calling MPJIOC_QBUF_CAPT on the buffer after it processed it? If the audio sync correction code above deletes a frame (by decrementing nfout to 0), it looks like that frame will never get re-queued with ioctl(MPJIOC_QBUF_CAPT) because the lavrec_queue_buffer() call is inside the "if(write_frame && nfout > 0) {" Won't that buffer then be unused from then on, sort of a leak? If all this is correct, the fix seems obvious - always requeue the buffer, even if it wasn't written out to the file. Does this make sense to Ronald or anyone? Or am I all wet about how this works? I'm currently doing some long captures to see if I can test all this. Steve ------------------------------------------------------- This SF.Net email is sponsored by: InterSystems CACHE FREE OODBMS DOWNLOAD - A multidimensional database that combines robust object and relational technologies, making it a perfect match for Java, C++,COM, XML, ODBC and JDBC. www.intersystems.com/match8 _______________________________________________ Mjpeg-users mailing list [EMAIL PROTECTED] https://lists.sourceforge.net/lists/listinfo/mjpeg-users