mirror of
https://gitlab.freedesktop.org/gstreamer/gstreamer.git
synced 2024-12-25 01:30:38 +00:00
rtpmanager: update docs
This commit is contained in:
parent
e5019de80d
commit
adf5d96044
2 changed files with 54 additions and 10 deletions
|
@ -27,18 +27,60 @@
|
||||||
* SECTION:element-rtpjitterbuffer
|
* SECTION:element-rtpjitterbuffer
|
||||||
*
|
*
|
||||||
* This element reorders and removes duplicate RTP packets as they are received
|
* This element reorders and removes duplicate RTP packets as they are received
|
||||||
* from a network source. It will also wait for missing packets up to a
|
* from a network source.
|
||||||
* configurable time limit using the #GstRtpJitterBuffer:latency property.
|
|
||||||
* Packets arriving too late are considered to be lost packets.
|
|
||||||
*
|
|
||||||
* This element acts as a live element and so adds #GstRtpJitterBuffer:latency
|
|
||||||
* to the pipeline.
|
|
||||||
*
|
*
|
||||||
* The element needs the clock-rate of the RTP payload in order to estimate the
|
* The element needs the clock-rate of the RTP payload in order to estimate the
|
||||||
* delay. This information is obtained either from the caps on the sink pad or,
|
* delay. This information is obtained either from the caps on the sink pad or,
|
||||||
* when no caps are present, from the #GstRtpJitterBuffer::request-pt-map signal.
|
* when no caps are present, from the #GstRtpJitterBuffer::request-pt-map signal.
|
||||||
* To clear the previous pt-map use the #GstRtpJitterBuffer::clear-pt-map signal.
|
* To clear the previous pt-map use the #GstRtpJitterBuffer::clear-pt-map signal.
|
||||||
*
|
*
|
||||||
|
* The rtpjitterbuffer will wait for missing packets up to a configurable time
|
||||||
|
* limit using the #GstRtpJitterBuffer:latency property. Packets arriving too
|
||||||
|
* late are considered to be lost packets. If the #GstRtpJitterBuffer:do-lost
|
||||||
|
* property is set, lost packets will result in a custom serialized downstream
|
||||||
|
* event of name GstRTPPacketLost. The lost packet events are usually used by a
|
||||||
|
* depayloader or other element to create concealment data or some other logic
|
||||||
|
* to gracefully handle the missing packets.
|
||||||
|
*
|
||||||
|
* The jitterbuffer will use the DTS (or PTS if no DTS is set) of the incomming
|
||||||
|
* buffer and the rtptime inside the RTP packet to create a PTS on the outgoing
|
||||||
|
* buffer.
|
||||||
|
*
|
||||||
|
* The jitterbuffer can also be configured to send early retransmission events
|
||||||
|
* upstream by setting the #GstRtpJitterBuffer:do-retransmission property. In
|
||||||
|
* this mode, the jitterbuffer tries to estimate when a packet should arrive and
|
||||||
|
* sends a custom upstream event named GstRTPRetransmissionRequest when the
|
||||||
|
* packet is considered late. The initial expected packet arrival time is
|
||||||
|
* calculated as follows:
|
||||||
|
*
|
||||||
|
* - If seqnum N arrived at time T, seqnum N+1 is expected to arrive at
|
||||||
|
* T + packet-spacing + #GstRtpJitterBuffer:rtx-delay. The packet spacing is
|
||||||
|
* calculated from the DTS (or PTS is no DTS) of two consecutive RTP
|
||||||
|
* packets with different rtptime.
|
||||||
|
*
|
||||||
|
* - If seqnum N0 arrived at time T0 and seqnum Nm arrived at time Tm,
|
||||||
|
* seqnum Ni is expected at time Ti = T0 + i*(Tm - T0)/(Nm - N0). Any
|
||||||
|
* previously scheduled timeout is overwritten.
|
||||||
|
*
|
||||||
|
* - If seqnum N arrived, all seqnum older than
|
||||||
|
* N - #GstRtpJitterBuffer:rtx-delay-reorder are considered late
|
||||||
|
* immediately. This is to request fast feedback for abonormally reorder
|
||||||
|
* packets before any of the previous timeouts is triggered.
|
||||||
|
*
|
||||||
|
* A late packet triggers the GstRTPRetransmissionRequest custom upstream
|
||||||
|
* event. After the initial timeout expires and the retransmission event is
|
||||||
|
* sent, the timeout is scheduled for
|
||||||
|
* T + #GstRtpJitterBuffer:rtx-retry-timeout. If the missing packet did not
|
||||||
|
* arrive after #GstRtpJitterBuffer:rtx-retry-timeout, a new
|
||||||
|
* GstRTPRetransmissionRequest is sent upstream and the timeout is rescheduled
|
||||||
|
* again for T + #GstRtpJitterBuffer:rtx-retry-timeout. This repeats until
|
||||||
|
* #GstRtpJitterBuffer:rtx-retry-period elapsed, at which point no further
|
||||||
|
* retransmission requests are sent and the regular logic is performed to
|
||||||
|
* schedule a lost packet as discussed above.
|
||||||
|
*
|
||||||
|
* This element acts as a live element and so adds #GstRtpJitterBuffer:latency
|
||||||
|
* to the pipeline.
|
||||||
|
*
|
||||||
* This element will automatically be used inside rtpbin.
|
* This element will automatically be used inside rtpbin.
|
||||||
*
|
*
|
||||||
* <refsect2>
|
* <refsect2>
|
||||||
|
|
|
@ -21,7 +21,7 @@
|
||||||
* SECTION:element-rtpsession
|
* SECTION:element-rtpsession
|
||||||
* @see_also: rtpjitterbuffer, rtpbin, rtpptdemux, rtpssrcdemux
|
* @see_also: rtpjitterbuffer, rtpbin, rtpptdemux, rtpssrcdemux
|
||||||
*
|
*
|
||||||
* The RTP session manager models one participant with a unique SSRC in an RTP
|
* The RTP session manager models participants with unique SSRC in an RTP
|
||||||
* session. This session can be used to send and receive RTP and RTCP packets.
|
* session. This session can be used to send and receive RTP and RTCP packets.
|
||||||
* Based on what REQUEST pads are requested from the session manager, specific
|
* Based on what REQUEST pads are requested from the session manager, specific
|
||||||
* functionality can be activated.
|
* functionality can be activated.
|
||||||
|
@ -40,6 +40,9 @@
|
||||||
* <listitem>
|
* <listitem>
|
||||||
* <para>Scheduling of RR/SR RTCP packets.</para>
|
* <para>Scheduling of RR/SR RTCP packets.</para>
|
||||||
* </listitem>
|
* </listitem>
|
||||||
|
* <listitem>
|
||||||
|
* <para>Support for multiple sender SSRC.</para>
|
||||||
|
* </listitem>
|
||||||
* </itemizedlist>
|
* </itemizedlist>
|
||||||
*
|
*
|
||||||
* The rtpsession will not demux packets based on SSRC or payload type, nor will
|
* The rtpsession will not demux packets based on SSRC or payload type, nor will
|
||||||
|
@ -64,9 +67,8 @@
|
||||||
* that should be sent to all participants in the session.
|
* that should be sent to all participants in the session.
|
||||||
*
|
*
|
||||||
* To use #GstRtpSession as a sender, request a send_rtp_sink pad, which will
|
* To use #GstRtpSession as a sender, request a send_rtp_sink pad, which will
|
||||||
* automatically create a send_rtp_src pad. The session manager will modify the
|
* automatically create a send_rtp_src pad. The session manager will
|
||||||
* SSRC in the RTP packets to its own SSRC and wil forward the packets on the
|
* forward the packets on the send_rtp_src pad after updating its internal state.
|
||||||
* send_rtp_src pad after updating its internal state.
|
|
||||||
*
|
*
|
||||||
* The session manager needs the clock-rate of the payload types it is handling
|
* The session manager needs the clock-rate of the payload types it is handling
|
||||||
* and will signal the #GstRtpSession::request-pt-map signal when it needs such a
|
* and will signal the #GstRtpSession::request-pt-map signal when it needs such a
|
||||||
|
|
Loading…
Reference in a new issue