Gstreamer, применяющий свойства элемента перспективы

#c #c #gstreamer

Вопрос:

Я хотел бы использовать элемент перспективы Gstreamer: https://gstreamer.freedesktop.org/documentation/geometrictransform/perspective.html?gi-language=c

Я просто не знаю точно, как применить свойство matrix или какой формат следует ожидать. Я вижу, что для применения к элементу требуется GValueArray, но как это лучше всего сделать? Какой метод необходим для применения матрицы? Возможно ли это сделать и с помощью gst-запуска?

Спасибо за вашу помощь.

Комментарии:

1. Пожалуйста, проясните вашу конкретную проблему или предоставьте дополнительные сведения, чтобы точно указать, что вам нужно. Поскольку это написано в настоящее время, трудно точно сказать, о чем вы просите.

Ответ №1:

Похоже, что вы не можете сделать это из командной строки с текущей версией gstreamer.

 static gboolean gst_value_deserialize_g_value_array (GValue * dest, const gchar * s)
{
  g_warning ("gst_value_deserialize_g_value_array: unimplemented");
}
 

https://github.com/GStreamer/gstreamer/blob/master/gst/gstvalue.c

Вы можете передать массив некоторым другим элементам (таким как аудиоконверт), таким как эта матрица=»<<1.0, 0.0, 0.0>, <1.0, 0.0, 0.0><0.0, 1.0, 0.0>, <0.0, 1.0, 0.0><0.0, 0.0, 1.0><0.0, 0.0, 1.0>>»

Но перспектива не позволяет этого, потому что тип свойства другой (GValueArray вместо GstValueArray)

Лучше всего написать приложение и создать GValueArray вручную, используя функции C.

В противном случае вы можете сообщить об ошибке.

Комментарии:

1. Привет. Только что попробовал это, и, похоже, это не сработает. Я получаю ПРЕДУПРЕЖДЕНИЕ: ошибочный конвейер: не удалось установить свойство «матрица» в элементе «перспектива0» равным «<<1.0, 0.0, 0.0>, <1.0, 0.0, 0.0><0.0, 1.0, 0.0>, <0.0, 1.0, 0.0><0.0, 0.0, 1.0><0.0, 0.0, 1.0>>». Я также попытался избежать символов в своей оболочке и получил тот же результат.

2. Ты прав. Это может быть невозможно из командной строки. Я отредактирую ответ

3. Конечно. У меня было такое чувство, что мне придется прибегнуть к использованию C для передачи массива. Попробую это сделать.