Лучший способ передачи информации между объектами Gstreamer - PullRequest
0 голосов
/ 06 мая 2020

В конвейере gstreamer мне нужен нисходящий элемент (модуль управления перегрузкой), изменяющий свойства восходящего элемента (кодировщика) на лету. Каков наилучший механизм передачи этой информации?

1 Ответ

0 голосов
/ 06 мая 2020

Я бы хотел, чтобы элемент, сообщающий о сообщении, отправил сообщение в шину (см., Например, fpsdisplaysink). Приложение, опрашивающее шину, может затем отреагировать на это сообщение и установить что-то для некоторого элемента по желанию. Таким образом, лог c того, как реагировать, находится на уровне приложения, а не обязательно на самих элементах.

В качестве альтернативы проверьте обработку QOS GStreamer, которая уже существует. Обычно приемники видео сообщают, если они получили видеокадр слишком поздно, и сообщают об этом в восходящем направлении. Обычно это продолжается в источнике файла, где затем элемент решает отбросить несколько кадров, чтобы снова наверстать упущенное. Таким образом, ваш кодировщик может перехватить подобное, возможно, настраиваемое сообщение от вашего элемента управления перегрузкой и действовать соответствующим образом.

...