[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