Hi Herton,
On Tuesday 15 January 2008, Herton Ronaldo Krzesinski wrote:
> Hi Laurent, thanks for the commit and advice. We played with the webcam
> again (sorry for delay) and we found out that it isn't really reporting the
> FID bit, but only end of frame marker (EOF). This is strange indeed, as
> from what I understand from UVC spec FID is required while EOF is optional.
The bmFramingInfo field in the probe&commit control can be used by the device
to report if it supports FID and/or EOF. However, for known frame-based
formats, the field must be ignored. Just out of curiosity, could you print
the field's value when reading the probe and commit controls ?
> I reworked the quirk that Claudio made against revision 166 from svn, but
> now using the EOF to sync the stream (the previous quirk was ok, but on
> laggy communication, like using to transmit a video stream over internet
> etc., the frames would overlap etc. resulting in many display issues):
Your patch could drop the last payload of each frame. Could you please try the
attached patch ?
Best regards,
Laurent Pinchart
Index: uvc_video.c
===================================================================
--- uvc_video.c (revision 163)
+++ uvc_video.c (working copy)
@@ -370,6 +370,8 @@
if (data[0] == len)
uvc_trace(UVC_TRACE_FRAME, "EOF in empty payload.\n");
buf->state = UVC_BUF_STATE_DONE;
+ if (video->dev->quirks & UVC_QUIRK_STREAM_NO_FID)
+ video->last_fid ^= UVC_STREAM_FID;
}
}
Index: uvc_driver.c
===================================================================
--- uvc_driver.c (revision 165)
+++ uvc_driver.c (working copy)
@@ -1752,6 +1752,16 @@
.bInterfaceProtocol = 0,
.driver_info = UVC_QUIRK_PROBE_MINMAX
},
+ /* Syntek (HP Spartan) */
+ { .match_flags = USB_DEVICE_ID_MATCH_DEVICE
+ | USB_DEVICE_ID_MATCH_INT_INFO,
+ .idVendor = 0x174f,
+ .idProduct = 0x5212,
+ .bInterfaceClass = USB_CLASS_VIDEO,
+ .bInterfaceSubClass = 1,
+ .bInterfaceProtocol = 0,
+ .driver_info = UVC_QUIRK_STREAM_NO_FID
+ },
/* Ecamm Pico iMage */
{ .match_flags = USB_DEVICE_ID_MATCH_DEVICE
| USB_DEVICE_ID_MATCH_INT_INFO,
Index: uvcvideo.h
===================================================================
--- uvcvideo.h (revision 162)
+++ uvcvideo.h (working copy)
@@ -313,6 +313,7 @@
#define UVC_QUIRK_PROBE_MINMAX 0x00000002
#define UVC_QUIRK_PROBE_EXTRAFIELDS 0x00000004
#define UVC_QUIRK_BUILTIN_ISIGHT 0x00000008
+#define UVC_QUIRK_STREAM_NO_FID 0x00000010
/* Format flags */
#define UVC_FMT_FLAG_COMPRESSED 0x00000001
_______________________________________________
Linux-uvc-devel mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/linux-uvc-devel