Why gstreamer pipeline fails when using v4l2src format as BGR and io-mode as dmabuf?

harikrishnan hari.vinu.4 at gmail.com
Wed Dec 5 05:21:14 UTC 2018


I am using gstreamer version 1.8.3 on ubunutu 16.04 LTS.
I am trying to run a pipeline using gst-launch-1.0 with the following
command on terminal.(which streams webcam video in my laptop)
Command:
gst-launch-1.0 -v v4l2src io-mode=4 ! video/x-raw,format=BGR ! videoconvert
! autovideosink --gst-debug=2

And i am getting the debug messages
"
0:00:00.682056977  4806      0x1c624a0 ERROR               fdmemory
gstfdmemory.c:114:gst_fd_mem_map: 0x1c5d5f0: fd 20: mmap failed: Invalid
argument
0:00:00.682092724  4806      0x1c624a0 ERROR             GST_MEMORY
gstmemory.c:324:gst_memory_map: mem 0x1c5d5f0: subclass map failed
0:00:00.682124299  4806      0x1c624a0 ERROR               fdmemory
gstfdmemory.c:114:gst_fd_mem_map: 0x1c5d5f0: fd 20: mmap failed: Invalid
argument
0:00:00.682138286  4806      0x1c624a0 ERROR             GST_MEMORY
gstmemory.c:324:gst_memory_map: mem 0x1c5d5f0: subclass map failed
0:00:00.682152551  4806      0x1c624a0 ERROR                default
video-frame.c:161:gst_video_frame_map_id: failed to map video frame plane 0
0:00:00.682171269  4806      0x1c624a0 WARN             videofilter
gstvideofilter.c:292:gst_video_filter_transform:<videoconvert0> warning:
invalid video buffer received
WARNING: from element /GstPipeline:pipeline0/GstVideoConvert:videoconvert0:
Internal GStreamer error: code not implemented.  Please file a bug at
http://bugzilla.gnome.org/enter_bug.cgi?product=GStreamer.
Additional debug info:
gstvideofilter.c(292): gst_video_filter_transform ():
/GstPipeline:pipeline0/GstVideoConvert:videoconvert0:
invalid video buffer received
"

But the same pipeline works if I change the format=YUY2.
Working Command:
gst-launch-1.0 -v v4l2src io-mode=4 ! video/x-raw,format=YUY2 ! videoconvert
! autovideosink --gst-debug=2

>From the debug messages I found that mmap fails when using BGR format and
dmabuf.

I suspected the size of data to mmap. In case of BGR it was 2.7 MB to mmap
and in case of YUY2 it was 1.8 MB for one frame buffer.
So I hardcorded the BGR size to 1.8 MB just before doing mmap. Then mmap did
not throw any errors but obviously pipeline broke at some other point since
it will make data invalid.

Can someone help me on this issue? I want to build a pipeline with BGR
format as output from v4l2src and it should use dmabuf as io-mode.



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/


More information about the gstreamer-devel mailing list