我正在开发一个 gstreamer 应用程序(插件),它从视频流中接收,分析每个缓冲区的特定条件,然后如果存在该条件,则将缓冲区传递到插件源。如果给定缓冲区不存在该条件,则应删除该缓冲区,并且插件源不应接收该缓冲区。
作为 gstreamer 的新手,在查看 gstreamer 文档和教程后,我找不到让我的插件“删除”缓冲区的方法。
最佳答案
尝试使用 GstProbe 作为数据缓冲区,并在满足您的条件时返回 GST_PAD_PROBE_DROP
或 GST_PAD_PROBE_HANDLED
。
如果您的插件基于 GstBaseTransform
,您应该实现自己的 transform_frame_ip
或 transform_frame
。如果是这样,您可以返回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
关于gstreamer - 在 gstreamer 中删除缓冲区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65171901/