Gerd Knorr wrote:
>>> Nonsense. The description of VIDIOCMCAPTURE and VIDIOCSYNC in API.html is
>>> unclear, unexact, doubtful.
>>>
>> 
>> I'm talking about the API itself, not the text on the API.html page.
>> Maybe I should update my Programming-FAQ (in the xawtv tarball), put
>> it into API.html and mail Alan a diff ...
>>
> 
> Ok, here we go.  Comments?
> 
>   Gerd
> 
> ==============================[ cut here ]==============================
> --- linux-2.4.18-rc2/Documentation/video4linux/API.html       Thu Feb 21 14:21:58 
>2002
> +++ linux/Documentation/video4linux/API.html  Thu Feb 21 15:01:55 2002
> @@ -329,16 +329,35 @@
>  <TR><TD><b>offsets</b><TD>The offset of each frame</TD>
>  </TABLE>
>  <P>
> -Once the mmap has been made the VIDIOCMCAPTURE ioctl sets the image size
> -you wish to use (which should match or be below the initial query size).
> -Having done so it will begin capturing to the memory mapped buffer. Whenever
> -a buffer is "used" by the program it should called VIDIOCSYNC to free this
> -frame up and continue. <em>to add:</em>VIDIOCSYNC takes the frame number
> -you are freeing as its argument. When the buffer is unmapped or all the
> -buffers are full capture ceases. While capturing to memory the driver will
> -make a "best effort" attempt to capture to screen as well if requested. This
> -normally means all frames that "miss" memory mapped capture will go to the
> -display.
> +Once the mmap has been made the VIDIOCMCAPTURE ioctl starts the
> +capture to a frame using the format and image size specified in the
> +video_mmap (which should match or be below the initial query size).
> +When the VIDIOCMCAPTURE ioctl returns the frame is <em>not</em>
> +captured yet, the driver just instructed the hardware to start the
> +capture.  The application has to use the VIDIOCSYNC ioctl to wait
> +until the capture of a frame is finished.  VIDIOCSYNC takes the frame
> +number you want to wait for as argument.
> +<p>
> +It is allowed to call VIDIOCMCAPTURE multiple times (with different
> +frame numbers in video_mmap->frame of course) and thus have multiple
> +outstanding capture requests.  A simple way do to double-buffering
> +using this feature looks like this:
> +<pre>
> +/* setup everything */
> +VIDIOCMCAPTURE(0)
> +while (whatever) {
> +   VIDIOCMCAPTURE(1)
> +   VIDIOCSYNC(0)
> +   /* process frame 0 while the hardware captures frame 1 */
> +   VIDIOCMCAPTURE(0)
> +   VIDIOCSYNC(1)
> +   /* process frame 1 while the hardware captures frame 0 */
> +}
> +</pre>
> +<p>
> +While capturing to memory the driver will make a "best effort" attempt
> +to capture to screen as well if requested. This normally means all
> +frames that "miss" memory mapped capture will go to the display.
>  <P>
>  A final ioctl exists to allow a device to obtain related devices if a
>  driver has multiple components (for example video0 may not be associated

Maybe a bit picky, but I don't like the example.  Perhaps an example 
that uses the number of frames returned by GMBUF.  These apps hardcoded 
to two frames are a headache...

-justin




_______________________________________________
Video4linux-list mailing list
[EMAIL PROTECTED]
https://listman.redhat.com/mailman/listinfo/video4linux-list

Reply via email to