首页 > 解决方案 > gstreamer videoconvert 支持 gpu 内存缓冲区

问题描述

我对 gsteamer 非常陌生,并且正在修改 gstreamer 插件 - videoconvert 获取分配为 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)

这里可能有什么问题?

标签: memorygpugstreamerdisplaymultimedia

解决方案


推荐阅读