[Bug 794911] Implement support for ULP Forward Error Correction
GStreamer (GNOME Bugzilla)
bugzilla at gnome.org
Wed Apr 18 13:48:08 UTC 2018
https://bugzilla.gnome.org/show_bug.cgi?id=794911
--- Comment #5 from Sebastian Dröge (slomo) <slomo at coaxion.net> ---
(In reply to Mathieu Duponchelle from comment #4)
> (In reply to Sebastian Dröge (slomo) from comment #3)
> > Review of attachment 370453 [details] [review] [review]:
> >
> > Are we always sending FEC now if requested on the media? Or only if the
> > client (for PLAY) requests that from the SDP?
> >
>
> So with this patch, only the RECORD case is implemented, and rtspclientsink
> doesn't use the media API if that's what you're asking. In that case FEC is
> only used on the client-side if it was requested through the new
> ulpfec-percentage property of rtspclientsink, and on the server side we only
> instantiate a decoder and tweak the storage properties if FEC was present in
> the ANNOUNCE request.
>
> I assume for PLAY, the client (rtspsrc) would not have a say on whether FEC
> is used or not, it would simply be informed about it in the answer to the
> DESCRIBE request.
>
> Does that answer yyour question? :)
Yeah, does that work for PLAY already then? Probably not as we don't add the
relevant pieces to the SDP?
> > ::: gst/rtsp-server/rtsp-media.c
> > @@ +1519,3 @@
> > + i, &storage);
> > + if (storage)
> > + g_object_set (storage, "size-time", (media->priv->latency + 50) *
> > GST_MSECOND, NULL);
> >
> > Should this 50ms be configurable?
> >
> > @@ +3132,3 @@
> > +new_storage_cb (GstElement * rtpbin, GObject * storage, guint sessid,
> > GstRTSPMedia * media)
> > +{
> > + g_object_set (storage, "size-time", (media->priv->latency + 50) *
> > GST_MSECOND, NULL);
> >
> > And this 50ms?
>
> This is a tad ugly, but no, this should not be configurable, we just want
> the duration of the lookback window in the storage to be a tad higher than
> the latency, otherwise by the time we get the PacketLost events in the
> ulpfec decoder, the storage might have disposed of the relevant packets, 50
> ms is usually a safe value, though it hasn't been determined in an extremely
> scientific manner :)
For RTX this is configurable though, it's the same thing there right?
> > ::: gst/rtsp-server/rtsp-stream.c
> > @@ +5019,3 @@
> > +
> > +
> > +/**
> >
> > Double new-line above
> >
> > ::: gst/rtsp-server/rtsp-stream.h
> > @@ +310,3 @@
> > +/* ULP Forward Error Correction (RFC 5109) */
> > +GST_RTSP_SERVER_API
> > +gboolean gst_rtsp_stream_get_ulpfec_enabled (GstRTSPStream
> > *stream);
> >
> > I wonder if some more generic API could be added here, similar to what is in
> > rtpbin. So that we won't have to add yet another set of functions for
> > flexfec later.
>
> I wondered about that too, then opted for the less generic choice, because
> I'm not really sure what the API will have to look like for flex,
> specifically because of the fact multiple streams can be protected by the
> same flex protection stream.
Ok then :)
--
You are receiving this mail because:
You are the QA Contact for the bug.
You are the assignee for the bug.
More information about the gstreamer-bugs
mailing list