Reduced-size RTCP (RFC5506) support

classic Classic list List threaded Threaded
7 messages Options
Reply | Threaded
Open this post in threaded view
|

Reduced-size RTCP (RFC5506) support

Ingemar Johansson
Hi

New to this list and a relative newbie to GStreamer development. I am
working on an implementation of a SCReAM GStreamer plugin. SCReAM
(https://tools.ietf.org/html/rfc8298) is a congestion control algorithm for
realtime low latency media such as video.

I have reach so far that I am able to insert the SCReAM plugin in both the
TX and the RX side and I also manage to piggyback RTCP feedback packets
(https://tools.ietf.org/wg/avtcore/draft-ietf-avtcore-cc-feedback-message/)
to the normal RTCP RR+SDES packets.
I need however to enable reduced-size RTCP (RFC5506) to keep the RTCP
overhead reasonably small, given that the feedback rate in SCReAM is quite
high at high bitrates.

Is there any documentation or examples available that can shed a light on
this ?
Regards
Ingemar



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Reduced-size RTCP (RFC5506) support

joakim
This post was updated on .
Hi, I'm new as well but I think you can look into the documentation about the
GstElement rtspsrc. It has an property called "short header".

If I understood you correctly you have manipulated the RTCP packets? I'm
trying to read the sender report of received RTCP packets, more precisely
the NTP timestamp in the RTCP sender report. Do you know how to accomplish
this?

Regards Joakim



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
gstreamer-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Reduced-size RTCP (RFC5506) support

Ingemar Johansson
Hi
and thanks. I had a look at this but it seems to me that it is not
applicable to this as it mentions RTSP headers for broken encoders.
As regards to your question, I believe that you need to read rtcpPacket
packet by rtcpPacket and when you detect that it is of type SR then you
should be able to read the NTP timestamp. I don't have any code snippet for
this though.

/Ingemar



--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
Reply | Threaded
Open this post in threaded view
|

Re: Reduced-size RTCP (RFC5506) support

Sebastian Dröge-3
In reply to this post by Ingemar Johansson
On Mon, 2019-02-04 at 06:14 -0600, Ingemar Johansson wrote:
> New to this list and a relative newbie to GStreamer development. I am
> working on an implementation of a SCReAM GStreamer plugin. SCReAM
> (https://tools.ietf.org/html/rfc8298) is a congestion control algorithm for
> realtime low latency media such as video.
>
> I have reach so far that I am able to insert the SCReAM plugin in both the
> TX and the RX side and I also manage to piggyback RTCP feedback packets
> (https://tools.ietf.org/wg/avtcore/draft-ietf-avtcore-cc-feedback-message/)
> to the normal RTCP RR+SDES packets.

There is a SCReAM implementation available from here:
  https://github.com/EricssonResearch/openwebrtc-gst-plugins/tree/master/gst/scream
But you're probably aware of that already :)

> I need however to enable reduced-size RTCP (RFC5506) to keep the RTCP
> overhead reasonably small, given that the feedback rate in SCReAM is quite
> high at high bitrates.
>
> Is there any documentation or examples available that can shed a
> light on this ?

You have to set the RTP profile on the rtpbin (before creating any
sessions) to AVPF or SAVPF. The "rtp-profile" property. That will then
enable the possibility to send reduced size, early RTCP packets for
feedback that is to be sent out before the next regular, big RTCP
packet is to be sent.

There are signals for requesting early RTCP (or generally RTCP) and you
can then attach your additional feedback to those packets.


Note that rtpsession ensures that no more packets than allowed are sent
and also that there's regular RTCP as often as required by the RTP
RFCs.

--
Sebastian Dröge, Centricular Ltd · https://www.centricular.com

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (981 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Reduced-size RTCP (RFC5506) support

Olivier Crête-3
Hi Sebastian,

Are you certain that setting the profile enables reduced size rtcp ?


If I read the code correctly and it doesn't, you can enable it with the
following:

GObject *isess = NULL;
g_signal_emit_by_name (rtpbin, "get-internal-session", 1, &isess);
g_object_set (isess, "reduced-size-rtcp, TRUE, NULL);
g_object_unref (isess);

Olivier

On Mon, 2019-02-04 at 17:56 +0100, Sebastian Dröge wrote:

> On Mon, 2019-02-04 at 06:14 -0600, Ingemar Johansson wrote:
> > New to this list and a relative newbie to GStreamer development. I am
> > working on an implementation of a SCReAM GStreamer plugin. SCReAM
> > (https://tools.ietf.org/html/rfc8298) is a congestion control algorithm for
> > realtime low latency media such as video.
> >
> > I have reach so far that I am able to insert the SCReAM plugin in both the
> > TX and the RX side and I also manage to piggyback RTCP feedback packets
> > (https://tools.ietf.org/wg/avtcore/draft-ietf-avtcore-cc-feedback-message/)
> > to the normal RTCP RR+SDES packets.
>
> There is a SCReAM implementation available from here:
>   https://github.com/EricssonResearch/openwebrtc-gst-plugins/tree/master/gst/scream
> But you're probably aware of that already :)
>
> > I need however to enable reduced-size RTCP (RFC5506) to keep the RTCP
> > overhead reasonably small, given that the feedback rate in SCReAM is quite
> > high at high bitrates.
> >
> > Is there any documentation or examples available that can shed a
> > light on this ?
>
> You have to set the RTP profile on the rtpbin (before creating any
> sessions) to AVPF or SAVPF. The "rtp-profile" property. That will then
> enable the possibility to send reduced size, early RTCP packets for
> feedback that is to be sent out before the next regular, big RTCP
> packet is to be sent.
>
> There are signals for requesting early RTCP (or generally RTCP) and you
> can then attach your additional feedback to those packets.
>
>
> Note that rtpsession ensures that no more packets than allowed are sent
> and also that there's regular RTCP as often as required by the RTP
> RFCs.
>
> _______________________________________________
> gstreamer-devel mailing list
> [hidden email]
> https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel
--
Olivier Crête
[hidden email]

_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (201 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Reduced-size RTCP (RFC5506) support

Sebastian Dröge-3
On Wed, 2019-02-06 at 14:07 -0500, Olivier Crête wrote:
> Hi Sebastian,
>
> Are you certain that setting the profile enables reduced size rtcp ?

Indeed, you're right. I confused configuration for early RTCP and
reduced size RTCP and what you said is correct, sorry :)

For SCReAM you want both though.

--
Sebastian Dröge, Centricular Ltd · https://www.centricular.com


_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel

signature.asc (981 bytes) Download Attachment
Reply | Threaded
Open this post in threaded view
|

Re: Reduced-size RTCP (RFC5506) support

Ingemar Johansson
Thanks all for the help.. I will have a look and see if I manage to get this
happening. Had a look into rtpsession.c and it seems like this should
definitely be working.

I currently have these settings to get a sufficiently if RTCP feedback rate
(perhaps a little overkill:-)
    g_object_set((filter->rtpSession),
      "rtcp-min-interval", 5000000000,
      "rtcp-fraction", 0.5,
      "bandwidth", 10000000.0,
      "rtp-profile", GST_RTP_PROFILE_AVPF,
      NULL);

I assume that I should add
      "rtcp-reduced-size", true,

But what about the other parameters ?

/Ingemar




--
Sent from: http://gstreamer-devel.966125.n4.nabble.com/
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel