Какова цель сигналов действий против запросов в gstreamer? - PullRequest
0 голосов
/ 10 сентября 2018

Для получения некоторой информации об элементах gstreamer мне нужно отправить запрос , например

gst_element_query_position (data.playbin, GST_FORMAT_TIME, &current)

(из базовый учебник 4 )

, в то время как для других я должен излучать сигнал действия , такой как

g_signal_emit_by_name (data->playbin, "get-video-tags", i, &tags)

(из учебник по воспроизведению 1 ).

В чем причина?Разве оба не делают одно и то же, запрашивая у элемента некоторую информацию и ожидая ответа (блокируя / синхронно)?Мне кажется, что запросы именно для этого, как объяснено в главе " Основы " и на рисунке ниже.

Но как сигналы действия вписываются в эту картину?Являются ли они комбинацией события (для запроса) и сообщения (для ответа) или также просто запросов?И самое главное: почему они существуют, когда уже есть запросы?

Спасибо за ваше время и знания.


Gstreamer Communication

1 Ответ

0 голосов
/ 18 сентября 2018

Как упомянуто в комментарии @vk_gst, запросы являются синхронными, а сигналы (события) - нет. Цель запроса - получить некоторую информацию из конвейера, тогда как цель события - сообщить конвейеру, что нужно выполнить какое-то действие для данного условия / требования. Пример: вы можете запросить битрейт потока. Но вы должны отправить сигнал (событие) для поиска воспроизведения.

Другими словами, запрос предназначен для запроса некоторой информации, а событие - для уведомления. Если элемент отправляет запрос, он ожидает некоторый вывод, кроме состояния успеха / неудачи. Но если элемент отправляет событие, он ожидает только статус успеха / неудачи. Как это событие обрабатывается, оставляется другому элементу, который его получил.

...