[External] AW: gstreamer videoconvert support gpu memory buffer
Gaurav Vohra
Gaurav.Vohra at einfochips.com
Wed Aug 18 08:17:48 UTC 2021
Hi,
As I can see glcolorconvert expect sink and src as video/x-raw(memory:GLMemory), which is not same in my case as input for me is x-raw and o/p is x-raw(memory:GBM)
In my case I am trying to access usb camera using /dev/video3 so input to videoconvert/or any other plugin would be
video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)15/2, format=(string)YUY2
and the aim is to convert using customized videoconvert/other element.
video/x-raw(memory:GBM), width=(int)1280, height=(int)720, framerate=(fraction)15/2, format=(string)NV12
the videoconvert customized is aimed to perform
1. format conversion from YUY2 to NV12
2. frame buffers from video/x-raw(system memory) to video/x-raw(memory:GBM)(gpu backed memory)
Here GBM buffers are gpu backed memory which I am setting up in transform_frame of videoconvert.
Above necessity is as qtimletflite requires sink input as NV12 format and video/x-raw(memory:GBM)
Playback Pipeline is as follows. Below videoconvert is customized version
gst-launch-1.0 -v v4l2src device=/dev/video3 num-buffers=1 ! video/x-raw,width=1280,height=720,framerate=15/2,format=YUY2 ! videoconvert ! qtimletflite config=/data/misc/camera/mle_tflite.config model=/data/misc/camera/detect.tflite labels=/data/misc/camera/labelmap.txt postprocessing=detection ! waylandsink
Regards
Gaurav
From: gstreamer-devel <gstreamer-devel-bounces at lists.freedesktop.org> On Behalf Of Thornton, Keith via gstreamer-devel
Sent: Wednesday, August 18, 2021 1:14 PM
To: Discussion of the development of and with GStreamer <gstreamer-devel at lists.freedesktop.org>
Cc: Thornton, Keith <keith.thornton at zeiss.com>
Subject: [External] AW: gstreamer videoconvert support gpu memory buffer
CAUTION: This email originated from outside of the organization. This message might not be safe, use caution in opening it. If in doubt, do not open the attachment nor links in the message.
Hi,
does glcolorconvert not do what you need?
Gruesse
Von: gstreamer-devel <gstreamer-devel-bounces at lists.freedesktop.org<mailto:gstreamer-devel-bounces at lists.freedesktop.org>> Im Auftrag von Gaurav Vohra via gstreamer-devel
Gesendet: Mittwoch, 18. August 2021 08:18
An: gstreamer-devel at lists.freedesktop.org<mailto:gstreamer-devel at lists.freedesktop.org>
Cc: Gaurav Vohra <Gaurav.Vohra at einfochips.com<mailto:Gaurav.Vohra at einfochips.com>>
Betreff: gstreamer videoconvert support gpu memory buffer
Hello,
I am working to customize gstreamer plugin to support
working to modify gstreamer plugin - videoconvert get obtain output data allocated as gpu memory allocated buffers.
As part of first step have modified the plugin to update the src template to include the gpu memory caps.
Allocation for gpu memory is done is transform_frame, but before that being called stream error and negotition is failing
Commented part
// #define CSP_VIDEO_CAPS GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL) ";" \
GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("ANY", GST_VIDEO_FORMATS_ALL)
Modified part
#define CSP_VIDEO_CAPS_SRC GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL) ";" \
GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("memory:GBM", GST_VIDEO_FORMATS_ALL)
//#define CSP_VIDEO_CAPS_SRC GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("memory:GBM", GST_VIDEO_FORMATS_ALL)
static GstStaticPadTemplate gst_video_convert_src_template =
GST_STATIC_PAD_TEMPLATE ("src",
GST_PAD_SRC,
GST_PAD_ALWAYS,
GST_STATIC_CAPS (CSP_VIDEO_CAPS_SRC)
);
While trying to run the playback pipeline getting errors related to negotitation and stream error like below
ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error.
Additional debug info:
../../../../gstreamer-1.14.4/libs/gst/base/gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0:
streaming stopped, reason not-negotiated (-4)
Further debugging from logs suggest intersect of capsfilter input and the caps filter is coming as EMPTY
0:00:06.974521920 4320 0x10cde60 DEBUG capsfilter gstcapsfilter.c:296:gst_capsfilter_transform_caps:<capsfilter0> input: video/x-raw(memory:GBM), format=(string)NV12, width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ]; video/x-raw(memory:GBM), width=(int)[ 1, 32767 ], height=(int)[ 1, 32767 ], framerate=(fraction)[ 0/1, 2147483647/1 ], format=(string){ I420, YV12, YUY2, UYVY, AYUV, RGBx, BGRx, xRGB, xBGR, RGBA, BGRA, ARGB, ABGR, RGB, BGR, Y41B, Y42B, YVYU, Y444, v210, v216, NV12, NV21, GRAY8, GRAY16_BE, GRAY16_LE, v308, RGB16, BGR16, RGB15, BGR15, UYVP, A420, RGB8P, YUV9, YVU9, IYU1, ARGB64, AYUV64, r210, I420_10BE, I420_10LE, I422_10BE, I422_10LE, Y444_10BE, Y444_10LE, GBR, GBR_10BE, GBR_10LE, NV16, NV24, NV12_64Z32, A420_10BE, A420_10LE, A422_10BE, A422_10LE, A444_10BE, A444_10LE, NV61, P010_10BE, P010_10LE, IYU2, VYUY, GBRA, GBRA_10BE, GBRA_10LE, GBR_12BE, GBR_12LE, GBRA_12BE, GBRA_12LE, I420_12BE, I420_12LE, I422_12BE, I422_12LE, Y444_12BE, Y444_12LE, GRAY10_LE32, NV12_10LE32, NV16_10LE32 }
0:00:06.974569108 4320 0x10cde60 DEBUG capsfilter gstcapsfilter.c:297:gst_capsfilter_transform_caps:<capsfilter0> filter: (NULL)
0:00:06.974616661 4320 0x10cde60 DEBUG capsfilter gstcapsfilter.c:299:gst_capsfilter_transform_caps:<capsfilter0> caps filter: video/x-raw, width=(int)1280, height=(int)720, framerate=(fraction)15/2, format=(string)YUY2
0:00:06.974651037 4320 0x10cde60 DEBUG capsfilter gstcapsfilter.c:300:gst_capsfilter_transform_caps:<capsfilter0> intersect: EMPTY
Regards
Gaurav
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://lists.freedesktop.org/archives/gstreamer-devel/attachments/20210818/5df1413c/attachment-0001.htm>
More information about the gstreamer-devel
mailing list