#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 для передачи массива. Попробую это сделать.