pjsip是否支持特定于应用程序的RTCP数据包?

时间:2014-03-04 03:02:33

标签: pjsip rtcp

我正在使用pjsip编写应用程序,我需要接收特定于应用程序的RTCP数据包。我正在研究pjmedia_rtcp_rx_rtcp(在pjmedia/src/pjmedia/rtcp.c中)的实现,它似乎只处理某些RTCP数据包,并且没有特定于应用程序类型的情况。如果是未知的数据包类型,它只会生成"Received unknown RTCP packet"诊断消息。

看起来我可以使用pjmedia_transport_attach为收到的RTCP数据包安装自己的处理程序。但是,这将被称为所有收到的RTCP数据包,而不仅仅是针对应用程序特定的数据包。 [也许我可以调用前一个处理程序,如果它不是特定于应用程序的数据包,则需要进一步调查。]

是否可以让pjsip在特定于应用程序的RTCP数据包上调用回调?如果没有,我怎样才能在使用pjsip时处理这些RTCP数据包?

1 个答案:

答案 0 :(得分:3)

虽然pjsip不直接支持特定于应用程序的RTCP数据包,但有一种方法可以捕获所有收到的RTCP数据包,并根据特定于应用程序的数据进行操作。

第一步是创建一个位于流和网络传输(UDP)之间的Media Transport Adapter。您可以在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数据包执行任何操作,然后再将其传递给原始回调。