如何解决两个自定义插件之间的元数据共享
通过点击以下参考链接,我已经成功实现了元数据API。
https://gstreamer.freedesktop.org/documentation/plugin-d
evelopment/advanced/allocation.html?gi-language=c#implementing-new-
gstmeta
到目前为止,我已经完成了元数据写入和读取相同的自定义插件-1 ,如下所示。
自定义插件_1:
gst_custom-plugin-1_transform_frame_ip (GstVideoFilter * filter,GstVideoFrame * frame){
api_id = my_example_meta_api_get_type();
auto m = gst_buffer_add_my_example_meta(frame->buffer,40,"check"); // write data to buffer
MyExampleMeta* meta= (MyExampleMeta*) gst_buffer_get_meta(frame->buffer,api_id); // read it back to conform it
std::cout << "Reading back: " << meta->name << meta->age << std::endl;
}
通过从 GstVideoFrame缓冲区读回元数据,我验证了元数据已成功写入视频帧,该元数据将传递到下一个自定义-plugin-2 ,如下所示。
src->custom_1--->custom_2---->display
| meta |
|---------|
问题
Encountring the below error when I am trying to get back the meta data from the second custom plugin-2
(gst-launch-1.0:2743): GStreamer-CRITICAL **: 02:54:07.460: gst_buffer_get_meta: assertion 'api != 0' failed
**自定义插件_2
gst_custom-plugin-2_transform_frame_ip (GstVideoFilter * filter,GstVideoFrame * frame){
api_id = my_example_meta_api_get_type();
MyExampleMeta* meta =(MyExampleMeta*)gst_buffer_get_meta(frame->buffer,api_id);
}
GType
my_example_meta_api_get_type (void) // same as custom-plugin-1
{
static volatile GType type;
static const gchar *tags[] = { "foo","bar",NULL };
if (g_once_init_enter (&type)) {
GType _type = gst_meta_api_type_register ("MyExampleMetaAPI",tags);
g_once_init_leave (&type,_type);
}
return type;
}
我做错了什么吗?有人可以指导我如何读回我集成到1-custom插件中GstVideoFrame框架的元数据吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。