[Bug 761059] kmssink: add new plugin and element

GStreamer (GNOME Bugzilla) bugzilla at gnome.org
Wed Feb 10 17:41:11 CET 2016


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

Tobias <tobias.schneider at voiceinterconnect.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
                 CC|                            |tobias.schneider at voiceinter
                   |                            |connect.de

--- Comment #18 from Tobias <tobias.schneider at voiceinterconnect.de> ---
Using kmssink on i.MX6 with Kernel 4.1.0 I encountered the problem, that it
won't work when there is a tee in the pipeline. Tee blocks allocation queries
and kmssink may not have a copy path yet, to workaround this.  

Hints from Nicolas:

* check the handle_frame function, maybe it only accepts buffer that comes from
their own buffer pool, and can't copy to appropriate memory, used of that
off-tree element so far only use zero-copy path


See following pipeline for example:

# GST_DEBUG=kmssink:6 gst-launch-1.0 -v -m videotestsrc ! tee ! queue  !
kmssink connector=25 device-name=imx-drm
Setting pipeline to PAUSED ...
0:00:00.279195334   606   0xb8ca00 DEBUG                kmssink
gstkmssink.c:583:gst_kms_sink_start:<kmssink0> open DRM device: imx-drm
Pipeline is PREROLLING ...
Got message #9 from element "kmssink0" (state-changed): GstMessageStateChanged,
old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #10 from element "queue0" (state-changed): GstMessageStateChanged,
old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #11 from element "tee0" (state-changed): GstMessageStateChanged,
old-state=(GstState)GST_STATE_NULL, new-state=(GstState)GST_STATE_READY,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #12 from element "videotestsrc0" (state-changed):
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL,
new-state=(GstState)GST_STATE_READY,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #13 from element "pipeline0" (state-changed):
GstMessageStateChanged, old-state=(GstState)GST_STATE_NULL,
new-state=(GstState)GST_STATE_READY, pending-state=(GstState)GST_STATE_PAUSED;
Got message #15 from pad "queue0:src" (stream-status): GstMessageStreamStatus,
type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE,
owner=(GstElement)"\(GstQueue\)\ queue0", object=(GstTask)"\(GstTask\)\
queue0:src";
Got message #16 from element "queue0" (state-changed): GstMessageStateChanged,
old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #17 from element "tee0" (state-changed): GstMessageStateChanged,
old-state=(GstState)GST_STATE_READY, new-state=(GstState)GST_STATE_PAUSED,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #20 from pad "videotestsrc0:src" (stream-status):
GstMessageStreamStatus,
type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_CREATE,
owner=(GstElement)"\(GstVideoTestSrc\)\ videotestsrc0",
object=(GstTask)"\(GstTask\)\ videotestsrc0:src";
Got message #21 from element "videotestsrc0" (state-changed):
GstMessageStateChanged, old-state=(GstState)GST_STATE_READY,
new-state=(GstState)GST_STATE_PAUSED,
pending-state=(GstState)GST_STATE_VOID_PENDING;
Got message #22 from pad "queue0:src" (stream-status):
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps =
"video/x-raw\,\ format\=\(string\)I420\,\ width\=\(int\)320\,\
height\=\(int\)240\,\ framerate\=\(fraction\)30/1\,\
pixel-aspect-ratio\=\(fraction\)1/1\,\ interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstTee:tee0.GstTeePad:src_0: caps = "video/x-raw\,\
format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\
framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER,
owner=(GstElement)"\(GstQueue\)\ queue0", object=(GstTask)"\(GstTask\)\
queue0:src";
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-raw\,\
format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\
framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "video/x-raw\,\
format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\
framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
/GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps = "video/x-raw\,\
format\=\(string\)I420\,\ width\=\(int\)320\,\ height\=\(int\)240\,\
framerate\=\(fraction\)30/1\,\ pixel-aspect-ratio\=\(fraction\)1/1\,\
interlace-mode\=\(string\)progressive"
0:00:00.306441334   606   0xb3f8f0 INFO                 kmssink
gstkmssink.c:282:gst_kms_sink_find_mode_and_plane:<kmssink0> connector mode =
1280x800
0:00:00.306594334   606   0xb3f8f0 DEBUG                kmssink
gstkmssink.c:403:gst_kms_sink_show_frame:<kmssink0> crtc id = 18 / plane id =
20 / buffer id = 115283
0:00:00.306695000   606   0xb3f8f0 WARN                 kmssink
gstkmssink.c:429:gst_kms_sink_show_frame:<kmssink0> error: drmModeSetPlane
failed: No such file or directory (2)
Got message #23 from pad "videotestsrc0:src" (stream-status):
GstMessageStreamStatus, type=(GstStreamStatusType)GST_STREAM_STATUS_TYPE_ENTER,
owner=(GstElement)"\(GstVideoTestSrc\)\ videotestsrc0",
object=(GstTask)"\(GstTask\)\ videotestsrc0:src";
Got message #24 from element "pipeline0" (stream-start): GstMessageStreamStart,
group-id=(uint)0;
Got message #30 from element "kmssink0" (error): GstMessageError,
gerror=(GError)NULL, debug=(string)"gstkmssink.c\(429\):\
gst_kms_sink_show_frame\ \(\):\
/GstPipeline:pipeline0/GstKMSSink:kmssink0:\012drmModeSetPlane\ failed:\ No\
such\ file\ or\ directory\ \(2\)";
ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0: GStreamer
encountered a general resource error.
Additional debug info:
gstkmssink.c(429): gst_kms_sink_show_frame ():
/GstPipeline:pipeline0/GstKMSSink:kmssink0:
drmModeSetPlane failed: No such file or directory (2)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
/GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps = "NULL"
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:src: caps = "NULL"
/GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = "NULL"
/GstPipeline:pipeline0/GstTee:tee0.GstTeePad:src_0: caps = "NULL"
/GstPipeline:pipeline0/GstTee:tee0.GstPad:sink: caps = "NULL"
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps = "NULL"
Freeing pipeline ...

-- 
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