Поддерживает ли pjsip пакеты RTCP для конкретных приложений?

Я пишу приложение, используя pjsip, и мне нужно получать пакеты RTCP для конкретного приложения. Я рассматриваю реализацию pjmedia_rtcp_rx_rtcppjmedia/src/pjmedia/rtcp.c< /a>) и, кажется, обрабатывает только определенные пакеты RTCP и не имеет случая для конкретных типов приложений. В случае неизвестного типа пакета будет просто выдано диагностическое сообщение "Received unknown RTCP packet".

Похоже, я смогу установить свой собственный обработчик полученных пакетов RTCP, используя pjmedia_transport_attach. Однако это будет вызываться для всех полученных пакетов RTCP, а не только для пакетов, специфичных для приложения. [Возможно, я мог бы вызвать предыдущий обработчик, если это не пакет, специфичный для приложения, это требует дальнейшего изучения.]

Можно ли сделать вызов pjsip обратным вызовом для пакетов RTCP для конкретного приложения? А если нет, то как я могу обрабатывать такие RTCP-пакеты, все еще используя pjsip?


person Greg Hewgill    schedule 04.03.2014    source источник


Ответы (1)


Хотя pjsip не поддерживает пакеты RTCP для конкретных приложений напрямую, существует способ захвата всех полученных пакетов RTCP и обработки тех, которые относятся к конкретным приложениям.

Первый шаг — создать адаптер медиатранспорта, который находится между потоком и сетевым транспортом. (УДП). Вы можете создать и прикрепить один из них в обратном вызове on_create_media_transport.

Затем в вашей реализации обратного вызова attach вызовите pjmedia_transport_attach(), передав свои собственные функции обратного вызова для получения RTP и RTCP, сохранив исходные обратные вызовы, запрошенные в аргументах обратного вызова. Точные данные можно найти в transport_adapter_sample.c (см. функцию transport_attach).

Наконец, ваша реализация обратного вызова RTCP (transport_rtcp_cb в transport_adapter_sample.c) может делать с полученным пакетом RTCP все, что захочет, прежде чем передать его исходному обратному вызову.

person Greg Hewgill    schedule 10.03.2014