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 в виде шпаргалки.

Другие вопросы по тегам