Gstreamer 如何在自定义插件中创建GstBuffer池
我有一个GST管道,如下所示Gstreamer 如何在自定义插件中创建GstBuffer池,gstreamer,gstreamer-1.0,Gstreamer,Gstreamer 1.0,我有一个GST管道,如下所示 SRC ->A ->ROI ->B-> SINK 自定义元素(A、ROI和B)我使用Gstreamer坏插件工具元素生成器创建,如下所示 SRC ->A ->ROI ->B-> SINK /element maker视频过滤器 我已从上述自定义插件源代码中删除了transform\u frame()函数,并使用transform\u frame\u ip()将这些插件用作传递 上述管道作为贯穿件工作正常 要求 这里
SRC ->A ->ROI ->B-> SINK
自定义元素(A、ROI和B)我使用Gstreamer坏插件工具元素生成器创建,如下所示
SRC ->A ->ROI ->B-> SINK
/element maker视频过滤器
我已从上述自定义插件源代码中删除了transform\u frame()函数,并使用transform\u frame\u ip()将这些插件用作传递
上述管道作为贯穿件工作正常
要求
这里,“ROI”元素将产生多个帧,这些帧将被传递到元素“B”进行进一步处理
为了实现这个算法,我在下面提到的链接中看到了Gstreamer中的GstBuffer池概念
我的ROI函数就像一个上游元素,下面是init_ROI元素内部的池配置
static void gst_ROI_init (GstROI *ROI){
/* GstBuffer Pool Config.*/
pool = gst_buffer_pool_new();
config = gst_buffer_pool_get_config(pool);
size = 420*420*3; // For RGB fromat.
min_ = 1;
max_ = 10;
caps = gst_caps_from_string("video/x-raw");
gst_buffer_pool_config_set_params (config, caps,
size, min_, max_);
gst_caps_unref(caps);
if ( gst_buffer_pool_set_config (pool, config)){
std::cout << "[INFO] Pool configuration done
successfully\n";
if( gst_buffer_pool_set_active( pool, TRUE )){
std::cout << "Successfully activated the pool
buffer\n";
}
else{
std::cout << "[ERROR] Failed to activate the
buffer pool\n";
}
} //end if
else {
std::cout << "[ERROR] Failed to set the pool
config.\n";
}
}
static void gst\u ROI\u init(GstROI*ROI){
/*GstBuffer池配置*/
pool=gst_buffer_pool_new();
config=gst\u buffer\u pool\u get\u config(pool);
size=420*420*3;//用于RGB fromat。
最小值=1;
最大值=10;
caps=gst_caps_from_string(“视频/x-raw”);
gst\缓冲区\池\配置\设置\参数(配置、上限、,
尺寸、最小值、最大值);
gst_caps_unref(caps);
如果(gst\缓冲区\池\设置\配置(池,配置)){
标准::cout