Configure RTPSession ‘send-rtcp’ without a bus watch

I’m trying to configure an RTPSession to send RTCP packets at regular intervals. I was able to do this in a prototype app by emitting the action signal via a bus watch after the element goes into playing. However, now that my app has grown I ended up using the bus watch elsewhere while the RTCP itself is setup via a pipeline factory method I’ve created. Within this method I was trying to attach the necessary hook to enable RTCP sending but cannot do this due to a bus watch already being present. Is there another mechanism to achieve the desired behavior? As an aside I started thinking of an option to create my own event forwarder that the pipelines could react to but ideally I could just leverage the existing pipeline bus with multiple watchers.


The RTP session should already be sending RTCP regularly according to the rules set in the varous RFCs. There are some properties such as rtp-profile, rtcp-min-interval, rtcp-fraction, etc that control how often they are sent.


You are correct that it does this but I believe it only sends them after RTP packets have been received. My use case requires that RTCP be sent without RTP as a sort of heartbeat. We are using non standard extensions. RTPsession supports this behavior it’s just the mechanics of configuring the element that I’m trying to understand better.

I ended up just returning a wrapper from my factory that includes the pipeline and callbacks that can be called globally from the bus watch with the MessageView passed in.