I 've done vertical and horizontal flip in software finally as the provider of our cameras told us that the flip is not part of uvc specification.
They don't eat alot of processing power on YUV formats. I was afraid about that as well. We're using the cameras either in 800x600 10-15 frames/sec 1600x1200 8 or 4 frames/sec Adrian -----Original Message----- From: [email protected] [mailto:[email protected]] On Behalf Of Laurent Pinchart Sent: Wednesday, December 17, 2008 11:51 PM To: [email protected] Subject: Re: [Linux-uvc-devel] vflip & hflip options for uvcvideo Hi Khashayar, On Sunday 14 December 2008, Khashayar Naderehvandi wrote: > Hi all, > > I'm one of those unlucky people who has the notorious problem of an > upside-down mounted web camera in my notebook. The uvcvideo module > itself works perfectly well with this webcam, which is a Suyin > (064e:a116). > > I came across these patches [1] posted on the Ubuntu forums that > allows the uvcvideo module to flip the image. I was wondering if there > are any plans to incorporate those patches in uvc to accomplish > something similar to the syntek driver's hflip & vflip options? A little background first. Most UVC cameras are made of a video sensor and a USB bridge. Sensors can usually be read in any direction, offering horizontal and vertical flip options. Unfortunately, firmware developers often forget to expose those functions through the UVC interface, making hardware horizontal and vertical flipping impossible. When a camera mounted upside-down doesn't offer any hardware flip control, the image must be rotated by software. Image processing isn't allowed in the Linux kernel (or at least hardly discouraged), so I'm not keen on implementing software-based image rotation in the UVC driver. I could be convinced otherwise if the proposed implementation didn't impact performances. This is in theory be possible, as the UVC driver copies data from USB buffers to V4L buffers. 'Backward' copy could be implemented without hurting the source code readability and performances (please not this isn't possible for compressed formats). However, an alternative now exists through libv4l. The library supports software-based image rotation in userspace. If your application is linked to libv4l the HFLIP and VFLIP controls should be available (I haven't tried it myself so this might require some tweaking). It might be possible to achieve the same result for applications not designed for libv4l by preloading the library. In your and David's case, the webcam supports direct access to the I2C bus from the host driver, making it possible (at least in theory) to enable image rotation on the sensor from the driver. This would require access to the datasheet of the video sensor used in the camera. I can assist you with driver hacking if you want to experiment with that. Best regards, Laurent Pinchart _______________________________________________ Linux-uvc-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/linux-uvc-devel _______________________________________________ Linux-uvc-devel mailing list [email protected] https://lists.berlios.de/mailman/listinfo/linux-uvc-devel
