我正在尝试为我的 videotestsrc
设置“模式”:
#include <gst/gst.h>
GstElement *pipeline, *source, *sink;
...
source = gst_element_factory_make("videotestsrc", "source");
g_object_set(source, "pattern", GST_VIDEO_TEST_SRC_BALL, NULL);
编译,我得到:
error: ‘GST_VIDEO_TEST_SRC_BALL’ undeclared (first use in this function)
我需要包含什么 header 才能声明 GstVideoTestSrcPattern
枚举?我四处搜寻了一下,找不到它。
最佳答案
GstVideoTestSrcPattern
枚举在 gst-plugins-base 中的 gst/videotestsrc/gstvideotestsrc.h header 中定义。这是一个不会以任何方式公开的 header (因为这意味着 GstVideoTestSrc 结构将成为公共(public) API/ABI 的一部分)。因此,您不能使用实际的枚举符号。
要解决这个问题,您可以使用相应的整数值(在本例中为 18)。如果您实际上使用 gst-launch-1.0
或其 C 等价物 gst_parse_launch()
来设置属性,您实际上可以使用 videotestsrc pattern=ball
,它也可以工作。
(注意:您甚至可以在 gst_value_deserialize()
的帮助下自己实现上述类型的字符串反序列化,但它仍然需要您输入未检查的字符串在编译时)
最后,如果您不确定枚举的各种值是什么,可以使用 gst-inspect-1.0 videotestsrc
作为备忘单。
关于c - GStreamer GstVideoTestSrcPattern 枚举 - 它在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54234998/