如何以编程方式确定 gstreamer 元素是否为 Bin?

How to programatically determine if a gstreamer Element is a Bin?

我可以看到存在用于迭代 bin 中的 GstElement 的方法...但是对于任何给定的 GstElement 是否有办法以编程方式确定它是否实际上是一个 bin?

所有GstElement都是从GLibGObject类型派生出来的,所以可以使用GLibG_OBJECT_TYPE()宏来检查类型:

if (G_OBJECT_TYPE(element) == GST_TYPE_BIN) ...

更简单的方法是使用在 gstbin.h:

中声明的便捷宏
if (GST_IS_BIN(element)) ...