diff --git a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2decoder.c b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2decoder.c index 29352b0708..2187521313 100644 --- a/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2decoder.c +++ b/subprojects/gst-plugins-bad/sys/v4l2codecs/gstv4l2decoder.c @@ -167,6 +167,11 @@ gst_v4l2_decoder_open (GstV4l2Decoder * self) { gint ret; struct v4l2_capability querycap; + struct v4l2_create_buffers createbufs = { + .count = 0, + .memory = V4L2_MEMORY_MMAP, + }; + guint32 capabilities; self->media_fd = open (self->media_device, 0); @@ -211,6 +216,15 @@ gst_v4l2_decoder_open (GstV4l2Decoder * self) return FALSE; } + createbufs.format.type = self->sink_buf_type; + ret = ioctl (self->video_fd, VIDIOC_CREATE_BUFS, &createbufs); + if (ret < 0) { + GST_ERROR_OBJECT (self, + "GStreamer requires VIDIOC_CREATE_BUFS to be supported by stateless decoders."); + gst_v4l2_decoder_close (self); + return FALSE; + } + self->opened = TRUE; return TRUE;