GStreamer GstVideoTestSrcPattern enum - где это?
Я пытаюсь установить "шаблон" для моего 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)
Какой заголовок мне нужно включить, чтобы иметь объявление для GstVideoTestSrcPattern
перечисление? Я немного повозился и не могу его найти.
0 ответов
В GstVideoTestSrcPattern
перечисление определено в gst-plugins-base в заголовке gst/videotestsrc/gstvideotestsrc.h. Это заголовок, который никоим образом не отображается (поскольку это означало бы, что структура GstVideoTestSrc станет частью общедоступного API/ABI). Таким образом, вы не можете использовать фактический символ перечисления.
Чтобы решить эту проблему, вы можете использовать соответствующее целочисленное значение (в данном случае 18). Если вы действительно устанавливаете свойство с чем-то вродеgst-launch-1.0
или его C эквивалент gst_parse_launch()
, вы действительно можете использовать videotestsrc pattern=ball
, который также будет работать.
(Примечание: вы даже можете реализовать вышеупомянутый вид десериализации строк самостоятельно с помощью gst_value_deserialize()
, но вам все равно потребуется ввести строку, которая не проверяется во время компиляции)
Наконец, если вы не знаете, каковы различные значения перечисления, вы можете использовать gst-inspect-1.0 videotestsrc
в виде шпаргалки.