видеоконверт gstreamer поддерживает буфер памяти gpu

#memory #gpu #gstreamer #display #multimedia

Вопрос:

Я очень новичок в gsteamer и работаю над модификацией плагина gstreamer — видеоконверт позволяет получать выходные данные, выделенные в виде буферов памяти gpu.

В рамках первого шага мы изменили плагин, чтобы обновить шаблон src, включив в него ограничения на память gpu.

Выделение памяти для gpu выполняется с помощью transform_frame, но перед этим вызывается ошибка потока, и согласование завершается неудачно

Прокомментированная часть

 // #define CSP_VIDEO_CAPS GST_VIDEO_CAPS_MAKE (GST_VIDEO_FORMATS_ALL) ";" 
GST_VIDEO_CAPS_MAKE_WITH_FEATURES ("ANY", GST_VIDEO_FORMATS_ALL)
 

Измененная деталь

 #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)
    );
 

При попытке запустить конвейер воспроизведения возникают ошибки, связанные с согласованием и ошибкой потока, как показано ниже

 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)
 

в чем здесь может быть проблема?