Linking v4l2convert to kmssink

Fabio Estevam festevam at gmail.com
Thu Oct 14 18:02:23 UTC 2021


Hi,

The following pipeline works correctly on a imx6ull-evk:

gst-launch-1.0 -v videotestsrc ! video/x-raw,format=BGRx,width=320,height=240 \
! v4l2convert ! video/x-raw,format=BGRx,width=160,height=120 ! fbdevsink

Now I would like to use kmssink instead of fbdevsink:

export GST_DEBUG="kmssink:7"
gst-launch-1.0 -v videotestsrc ! video/x-raw,format=BGRx,width=320,height=240 \
! v4l2convert ! video/x-raw,format=BGRx,width=160,height=120 ! kmssink
can-scale=false

Setting pipeline to PAUSED ...
0:00:00.940630791   249  0x1e394c0 INFO                 kmssink
gstkmssink.c:364:log_drm_version:<kmssink0> DRM v1.0.0 [mxsfb-drm �—
MXSFB Controller DRM �— 20160824]
0:00:00.946571791   249  0x1e394c0 INFO                 kmssink
gstkmssink.c:409:get_drm_caps:<kmssink0> prime import (�✓) / prime
export (�✓) / async page flip (�✗)
0:00:00.951843708   249  0x1e394c0 INFO                 kmssink
gstkmssink.c:542:ensure_allowed_caps:<kmssink0> ignoring format RG16
0:00:00.956671416   249  0x1e394c0 DEBUG                kmssink
gstkmssink.c:579:ensure_allowed_caps:<kmssink0> allowed caps =
video/x-raw, format=(string)BGRx, width=(int)[ 120, 65535 ],
height=(int)[ 1
20, 65535 ], framerate=(fraction)[ 0/1, 2147483647/1 ]
0:00:00.960598125   249  0x1e394c0 INFO                 kmssink
gstkmssink.c:789:gst_kms_sink_start:<kmssink0> connector id = 35 /
crtc id = 33 / plane id = 31
0:00:00.965056000   249  0x1e394c0 INFO                 kmssink
gstkmssink.c:811:gst_kms_sink_start:<kmssink0> display size: pixels =
480x272 / millimeters = 95x54
Pipeline is PREROLLING ...
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-width = 480
/GstPipeline:pipeline0/GstKMSSink:kmssink0: display-height = 272
0:00:01.011140500   249  0x1e3d838 DEBUG
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0.GstPad:src: caps
= video/x-raw, format=(string)BGRx, width=(int)320, height=(int)240,
framerat
e=(fraction)30/1, multiview-mode=(string)mono,
interlace-mode=(string)progressive, colorimetry=(string)1:1:5:1,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps =
video/x-raw, format=(string)BGRx, width=(int)320, height=(int)240,
framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mod
e=(string)progressive, colorimetry=(string)1:1:5:1,
pixel-aspect-ratio=(fraction)1/1
kmssink gstkmssink.c:1015:gst_kms_sink_get_caps:<kmssink0> Proposing
caps video/x-raw, format=(string)BGRx, width=(int)480,
height=(int)272, framerate=(fraction)[ 0/1, 2147483647/1 ],
pixel-aspect-ratio=
(fraction)1/1; video/x-raw, format=(string)BGRx, width=(int)[ 120,
65535 ], height=(int)[ 120, 65535 ], framerate=(fraction)[ 0/1,
2147483647/1 ], pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/v4l2convert:v4l2convert0.GstPad:src: caps =
video/x-raw, framerate=(fraction)30/1, multiview-mode=(string)mono,
interlace-mode=(string)progressive, format=(string)BGRx, width=(int)
160, height=(int)120, pixel-aspect-ratio=(fraction)1/1
0:00:01.026995416   249  0x1e3d838 DEBUG                kmssink
gstkmssink.c:1015:gst_kms_sink_get_caps:<kmssink0> Proposing caps
video/x-raw, format=(string)BGRx, width=(int)480, height=(int)272,
framer
ate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)BGRx, width=(int)[ 120, 65535 ],
height=(int)[ 120, 65535 ], framerate=(fraction)[ 0/1, 2147483647/1 ],
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps =
video/x-raw, framerate=(fraction)30/1, multiview-mode=(string)mono,
interlace-mode=(string)progressive, format=(string)BGRx, width=(int
)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1
0:00:01.034106458   249  0x1e3d838 DEBUG                kmssink
gstkmssink.c:1015:gst_kms_sink_get_caps:<kmssink0> Proposing caps
video/x-raw, format=(string)BGRx, width=(int)480, height=(int)272,
framer
ate=(fraction)[ 0/1, 2147483647/1 ], pixel-aspect-ratio=(fraction)1/1;
video/x-raw, format=(string)BGRx, width=(int)[ 120, 65535 ],
height=(int)[ 120, 65535 ], framerate=(fraction)[ 0/1, 2147483647/1 ],
pixel-aspect-ratio=(fraction)1/1
0:00:01.038949625   249  0x1e3d838 DEBUG                kmssink
gstkmssink.c:1117:gst_kms_sink_calculate_display_ratio:<kmssink0>
scaling to 160x120
0:00:01.043342583   249  0x1e3d838 DEBUG                kmssink
gstkmssink.c:1158:gst_kms_sink_set_caps:<kmssink0> negotiated caps =
video/x-raw, framerate=(fraction)30/1, multiview-mode=(string)mono, in
terlace-mode=(string)progressive, format=(string)BGRx, width=(int)160,
height=(int)120, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstKMSSink:kmssink0.GstPad:sink: caps =
video/x-raw, framerate=(fraction)30/1, multiview-mode=(string)mono,
interlace-mode=(string)progressive, format=(string)BGRx,
width=(int)160,
 height=(int)120, pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps =
video/x-raw, framerate=(fraction)30/1, multiview-mode=(string)mono,
interlace-mode=(string)progressive, format=(string)BGRx, width=(in
t)160, height=(int)120, pixel-aspect-ratio=(fraction)1/1
0:00:01.052128833   249  0x1e3d838 DEBUG                kmssink
gstkmssink.c:1204:gst_kms_sink_propose_allocation:<kmssink0> propose
allocation
/GstPipeline:pipeline0/v4l2convert:v4l2convert0.GstPad:sink: caps =
video/x-raw, format=(string)BGRx, width=(int)320, height=(int)240,
framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mod
e=(string)progressive, colorimetry=(string)1:1:5:1,
pixel-aspect-ratio=(fraction)1/1
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps =
video/x-raw, format=(string)BGRx, width=(int)320, height=(int)240,
framerate=(fraction)30/1, multiview-mode=(string)mono, interlace-mo
de=(string)progressive, colorimetry=(string)1:1:5:1,
pixel-aspect-ratio=(fraction)1/1
0:00:01.082080458   249  0x1e3d838 TRACE                kmssink
gstkmssink.c:1357:gst_kms_sink_import_dmabuf:<kmssink0> Found a dmabuf
with 1 planes and 1 memories
0:00:01.679061083   249  0x1e3d838 LOG                  kmssink
gstkmssink.c:1408:gst_kms_sink_import_dmabuf:<kmssink0> found these
prime ids: 22, 0, 0, 0
0:00:01.687960166   249  0x1e3d838 LOG                  kmssink
gstkmssink.c:1416:gst_kms_sink_import_dmabuf:<kmssink0> setting KMS
mem 0x1e65178 to DMABuf mem 0x1e64f28 with fb id = 38
0:00:01.692443458   249  0x1e3d838 TRACE                kmssink
gstkmssink.c:1602:gst_kms_sink_show_frame:<kmssink0> displaying fb 38
0:00:01.697410416   249  0x1e3d838 TRACE                kmssink
gstkmssink.c:1659:gst_kms_sink_show_frame:<kmssink0> drmModeSetPlane
at (160,76) 160x120 sourcing at (0,0) 160x120
0:00:01.701847291   249  0x1e3d838 DEBUG                kmssink
gstkmssink.c:1707:gst_kms_sink_show_frame:<kmssink0> result = { 160,
76, 160, 120} / src = { 0, 0, 160 120 } / dst = { 0, 0, 480 272 }
0:00:01.706981083   249  0x1e3d838 WARN                 kmssink
gstkmssink.c:1711:gst_kms_sink_show_frame:<kmssink0> error:
drmModeSetPlane failed: Resource temporarily unavailable (11)
ERROR: from element /GstPipeline:pipeline0/GstKMSSink:kmssink0:
GStreamer encountered a general resource error.
Additional debug info:
../sys/kms/gstkmssink.c(1711): gst_kms_sink_show_frame ():
/GstPipeline:pipeline0/GstKMSSink:kmssink0:
drmModeSetPlane failed: Resource temporarily unavailable (11)
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
ERROR: from element
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0: Internal data
stream error.
Additional debug info:
../libs/gst/base/gstbasesrc.c(3127): gst_base_src_loop ():
/GstPipeline:pipeline0/GstVideoTestSrc:videotestsrc0:
streaming stopped, reason error (-5)
ERROR: pipeline doesn't want to preroll.
Freeing pipeline ...
#

Does anyone know what needs to be changed in the PXP or mxfdb driver
to allow the
Gstreamer pipeline to work with kmssink?

Thanks,

Fabio Estevam


More information about the gstreamer-devel mailing list