memory - 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)
这里可能有什么问题?
解决方案
推荐阅读
- haskell - 我很困惑为什么这种合并排序的实现不起作用?
- javascript - 将表单输入值转换为 JSON
- python-3.x - 从 Trakt.tv Watchlist 获取数据的非常简单的“随机电影 Windows 应用程序”
- javascript - 手动出错 ReadableStream 或 TransformStream 会导致错误被记录为未捕获的错误
- json - 如何验证 JSON 数组是否包含 Rest Assured 中的特定值?
- ruby - Logstash 编解码器 - Avro Schema Registry:avro_schema_registry 由于未定义的局部变量或方法“esponse”而失败
- python - Pandas - 将 groupby() 与 rolling() 和 apply() 一起使用时非常慢
- c# - 将 .Net Framework 移植到 .Net Standard/Core 在调试模式下引发错误“函数评估需要所有线程运行”
- javascript - Javascript和Python中的散列之间的区别
- android - 如何摆脱android studio中的“文件是只读的”?