[Bug 749016] New: v4l2sink: Playback does not work if V4L2 buffers are smaller than GStreamer buffers

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed May 6 06:39:18 PDT 2015


https://bugzilla.gnome.org/show_bug.cgi?id=749016

            Bug ID: 749016
           Summary: v4l2sink: Playback does not work if V4L2 buffers are
                    smaller than GStreamer buffers
    Classification: Platform
           Product: GStreamer
           Version: git master
                OS: Linux
            Status: NEW
          Severity: normal
          Priority: Normal
         Component: gst-plugins-good
          Assignee: gstreamer-bugs at lists.freedesktop.org
          Reporter: tobias.modschiedler at cetitec.com
        QA Contact: gstreamer-bugs at lists.freedesktop.org
     GNOME version: ---

This topic was started in the discussion of bug 746834 at Comment 18
(https://bugzilla.gnome.org/show_bug.cgi?id=746834#c18).

If GStreamer source buffers are larger that V4L2 buffers (which makes sense for
MPEG-TS data), copying them fails in gst_v4l2_buffer_pool_copy_buffer().

I'll copy the relevant part of Nicolas' comment here:
---
GstV4l2 also kind of lack some support. If the buffer is bigger then the v4l2
buffer size, it simply fails. It's fine for raw data, but for encoded data it
should probably spread the data over multiple buffers and properly set the size
for the last one. For mpegts, the buffer size will always be a multiple of 188
anyway.

I think we could have mpegts specific code to select a decent default size (N *
188), or change the driver to pick a better default. Then if a buffer is bigger
and we have encoded data, we should loop (copy and queue), until all data has
been consumed.
---

I'm having problems coming up with a patch. The "multi-buffer" handling will
probably be in gst_v4l2_buffer_pool_process() at label "copying". But what
happens if only a part of the source buffer can be copied, i.e. not enough
destination buffers can be acquired?

-- 
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.


More information about the gstreamer-bugs mailing list