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