Gstreamer 如何在自定义插件中创建GstBuffer池

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()将这些插件用作传递 上述管道作为贯穿件工作正常 要求 这里

我有一个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()将这些插件用作传递

上述管道作为贯穿件工作正常

要求

这里,“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