From 05183675077d502aaf0e7483656f5610bb4d0f43 Mon Sep 17 00:00:00 2001 From: Robert Krakora Date: Mon, 19 Aug 2013 15:31:51 -0400 Subject: uvch264src: don't error out on incomplete aux data segment It appears that the Logitech C920 sometimes drops the next to last segment of RAW aux data contained within the MJPEG container. H264 data that is multiplexed with in the same container does not appear to be affected. This appears to be a bug in the Logitech C920 firmware and uvch264src should not error out in this case. Sometimes it can take 24 hours of continuous streaming for the problem to occur, but sometimes it takes only a couple of hours. https://bugzilla.gnome.org/show_bug.cgi?id=706276 --- sys/uvch264/gstuvch264_mjpgdemux.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) mode change 100644 => 100755 sys/uvch264/gstuvch264_mjpgdemux.c diff --git a/sys/uvch264/gstuvch264_mjpgdemux.c b/sys/uvch264/gstuvch264_mjpgdemux.c old mode 100644 new mode 100755 index 4bc689981..75ba5153d --- a/sys/uvch264/gstuvch264_mjpgdemux.c +++ b/sys/uvch264/gstuvch264_mjpgdemux.c @@ -473,6 +473,7 @@ gst_uvc_h264_mjpg_demux_chain (GstPad * pad, GstBuffer * buf) guint i; guchar *data; guint size; + guint16 segment_size = 0; self = GST_UVC_H264_MJPG_DEMUX (GST_PAD_PARENT (pad)); @@ -488,7 +489,6 @@ gst_uvc_h264_mjpg_demux_chain (GstPad * pad, GstBuffer * buf) for (i = 0; i < size - 1; i++) { /* Check for APP4 (0xe4) marker in the jpeg */ if (data[i] == 0xff && data[i + 1] == 0xe4) { - guint16 segment_size; /* Sanity check sizes and get segment size */ if (i + 4 >= size) { @@ -683,9 +683,10 @@ gst_uvc_h264_mjpg_demux_chain (GstPad * pad, GstBuffer * buf) jpeg_it = NULL; if (aux_buf != NULL) { - GST_ELEMENT_ERROR (self, STREAM, DEMUX, - ("Incomplete auxiliary stream. %d bytes missing", aux_size), (NULL)); - ret = GST_FLOW_ERROR; + GST_DEBUG_OBJECT (self, "Incomplete auxiliary stream: %d bytes missing, " + "%d segment size remaining -- missing segment, C920 bug?", + aux_size, segment_size); + ret = GST_FLOW_OK; goto done; } -- cgit v1.2.1