Gstreamer插件教程2.2—编写一个插件(Writing a Plugin):详解pads(Specifying the pads)

英文原文:https://gstreamer.freedesktop.org/documentation/plugin-development/basics/pads.html

正如前面所说,pad是数据进出element时的端口,这使得pad在element的创建过程中成为非常重要的一步。在boilerplate代码中,我们已经看到了静态pad模板是如何通过element class来注册pad模板的。这里,我们将看到如何创建一个真实的element:用一个_event()-函数来配置一个特殊的格式。还将看到如何注册函数,使得数据流通过element。

在element的_init()函数被调用前,你从pad模板中创建的pad已经在_class_init()函数中被注册到element。在创建了pad之后,你必须设置一个_chain()函数指针,它能够接收及处理sinkpad输入的数据。你也可以选择设置一个_event()函数指针和一个_query()函数指针。同样的,pad也可以在一个循环的模式下工作,这意味着它们能够自己获取数据。后面将更详细地讨论这一衣话题。在那之后,你必须在element中注册pad,形式如下:

static void
gst_my_filter_init (GstMyFilter *filter)
{
  /* pad through which data comes in to the element */
  filter->sinkpad = gst_pad_new_from_static_template (
    &sink_template, "sink");
  /* pads are configured here with gst_pad_set_*_function () */
  ...


  gst_element_add_pad (GST_ELEMENT (filter), filter->sinkpad);

  /* pad through which data goes out of the element */
  filter->srcpad = gst_pad_new_from_static_template (
    &src_template, "src");
  /* pads are configured here with gst_pad_set_*_function () */
  ...


  gst_element_add_pad (GST_ELEMENT (filter), filter->srcpad);

  /* properties initial value */
  filter->silent = FALSE;
}


  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值