The API documentation in the linux-2.4.18 tarball (in file Documentation/video4linux/API.html, which claims to be v0.1:19990430) for VIDIOCSYNC is contrary to how several drivers and applications use the flag. In fact, the behavior that I understand from the documentation seems to serve no real purpose. What is the proper behavior for this ioctl? The VIDIOCMCAPTURE ioctl requests that the driver fill an mmap()ed buffer with frame data (effectively giving that frame to the kernel). As I read the documentation for VIDIOCSYNC, it does the exact same thing: Whenever a buffer is "used" by the program it should called VIDIOCSYNC to free this frame up and continue... VIDIOCSYNC takes the frame number you are freeing as an argument. It seems like VIDIOCSYNC is actually used to return a filled frame to the application's control. Is this correct? -- Michael Poole (It also seems to me that the kernel should indicate which frame it is returning, rather than waiting for a specified frame to be filled and returning it. But I can see arguments for having the application specify the frame, so that is a lesser point.)