From 74d7521a7cf759264f3ee02902a81ae77a232de7 Mon Sep 17 00:00:00 2001 From: Sjoerd Simons Date: Mon, 30 Aug 2010 18:36:54 +0100 Subject: [PATCH] v4l2src: Fix using mpegts via the mmap interface MPEG doesn't have a static size per frame, so don't pretend it has one and fail when capturing because it doesn't match. Instead mark the size as unknown and let the read frame grabbing method use a reasonable fallback value (assuming that's only for actual streaming formats) Fixes bug #628349. --- sys/v4l2/gstv4l2object.c | 1 - sys/v4l2/gstv4l2src.c | 4 ++++ 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/sys/v4l2/gstv4l2object.c b/sys/v4l2/gstv4l2object.c index 84f2281f83..5f712ad914 100644 --- a/sys/v4l2/gstv4l2object.c +++ b/sys/v4l2/gstv4l2object.c @@ -1215,7 +1215,6 @@ gst_v4l2_object_get_caps_info (GstV4l2Object * v4l2object, GstCaps * caps, if (strcmp (mimetype, "video/mpegts") == 0) { fourcc = V4L2_PIX_FMT_MPEG; - outsize = 8192; *fps_n = 0; *fps_d = 1; goto done; diff --git a/sys/v4l2/gstv4l2src.c b/sys/v4l2/gstv4l2src.c index 7f2139a08e..7f211eeae5 100644 --- a/sys/v4l2/gstv4l2src.c +++ b/sys/v4l2/gstv4l2src.c @@ -800,6 +800,10 @@ gst_v4l2src_get_read (GstV4l2Src * v4l2src, GstBuffer ** buf) gint buffersize; buffersize = v4l2src->frame_byte_size; + /* In case the size per frame is unknown assume it's a streaming format (e.g. + * mpegts) and grab a reasonable default size instead */ + if (buffersize == 0) + buffersize = 8192; *buf = gst_buffer_new_and_alloc (buffersize);