在 gstreamer 中删除缓冲区

Drop buffers in gstreamer

我正在开发一个 gstreamer 应用程序(插件),它从视频流中接收,分析每个缓冲区的特定条件,然后如果存在该条件,则将缓冲区传递给插件源。如果给定缓冲区的条件不存在,则应删除缓冲区并且插件源不应接收此缓冲区。

作为 gstreamer 的新手,在浏览 gstreamer 文档和教程后,我找不到让我的插件“删除”缓冲区的方法。

尝试将 GstProbe 用于数据缓冲区,并在满足您的条件时 return GST_PAD_PROBE_DROPGST_PAD_PROBE_HANDLED

如果您的插件基于 GstBaseTransform,您应该实现自己的 transform_frame_iptransform_frame。如果是这样,你可以 return GST_BASE_TRANSFORM_FLOW_DROPPED:

/**
 * GST_BASE_TRANSFORM_FLOW_DROPPED:
 *
 * A #GstFlowReturn that can be returned from transform and transform_ip to
 * indicate that no output buffer was generated.
 */
#define GST_BASE_TRANSFORM_FLOW_DROPPED   GST_FLOW_CUSTOM_SUCCESS