Missing RTX payload type #254

Closed
robin-raymond opened this Issue Oct 17, 2015 · 9 comments

Projects

None yet

2 participants

@robin-raymond
Contributor

$related #246

https://tools.ietf.org/html/draft-ietf-rtcweb-rtp-usage-25#section-6.1

   Receivers are REQUIRED to implement support for RTP retransmission
   packets [RFC4588] sent using SSRC multiplexing, and MAY also support
   RTP retransmission packets sent using session multiplexing.  Senders
   MAY send RTP retransmission packets in response to NACKs if support
   for the RTP retransmission payload format has been negotiated, and if
   the sender believes it is useful to send a retransmission of the
   packet(s) referenced in the NACK.  Senders do not need to retransmit
   every NACKed packet.

https://tools.ietf.org/html/rfc4588#section-8.8

8.8.  SDP Description with SSRC-Multiplexing

   The following is an example of an SDP description for an RTP video
   session using SSRC-multiplexing with similar parameters as in the
   single-session example above:

   v=0
   o=mascha 2980675221 2980675778 IN IP4 host.example.net
   c=IN IP4 192.0.2.0
   m=video 49170 RTP/AVPF 96 97
   a=rtpmap:96 MP4V-ES/90000
   a=rtcp-fb:96 nack
   a=fmtp:96 profile-level-id=8;config=01010000012000884006682C209\
   0A21F
   a=rtpmap:97 rtx/90000
   a=fmtp:97 apt=96;rtx-time=3000

There doesn't appear to be a method to assign the "apt" (aka associated payload type) value for RTX pointing back to original payload type in the ortc specification.

@robin-raymond robin-raymond added the 1.0 label Oct 17, 2015
@robin-raymond
Contributor

$duplicate #157 ?

@aboba
Contributor
aboba commented Oct 18, 2015

Yes, it is a duplicate.

@robin-raymond
Contributor

The encoding parameters already contains the "apt". The APT is the main codec. For example, let's say you were RTXing G711 (which is PT=0). Then the APT is "0". However, we don't have a method to specify the payload type for the RTX if not using the default RTX codec payload type from the codec list. For example, RTX codec might be generally defined as payload type "100". But for G711 usage, we might send RTX PT=102 with APT of "0".

This I believe we need to add "rtx.payloadType" to be able to define what value to use for the payload type for RTX for a particular encoding if it doesn't use the default generalized RTX PT=100 from the codec list.

@robin-raymond
Contributor

FYI - encodingParams.codecPayloadType is a pointer to the codec to use from the codec list. encodingParams.rtx.payloadType is NOT a pointer, its the actual value to use for the RTX codec for this particular encoding.

@robin-raymond
Contributor

https://tools.ietf.org/html/rfc4588#section-8.4


   Optional parameters:

      rtx-time: indicates the time in milliseconds (measured from the
      time a packet was first sent) that the sender keeps an RTP packet
      in its buffers available for retransmission.

We need to include a value for the "rtx-time" and it needs to be per encoding. Suggest a ulong (although a ushort [65 seconds] is probably sufficient)...

@robin-raymond robin-raymond changed the title from Associated payload type with RTX to Missing RTX payload type Oct 20, 2015
@robin-raymond
Contributor

Not really duplicate - missing values - changed name of bug to be clearer.

@robin-raymond
Contributor

If encodingParams.rtx.payloadType is not set, then the codec payload type from "RTX" codec in the codec list must be used for RTX's payload type.

@aboba
Contributor
aboba commented Oct 20, 2015

Suggested fix:

partial dictionary RTCRtpRtxParameters {
             payloadtype payloadType; 
             unsigned long rtxTime;
};

payloadType: The payload type to use for retransmission. If unset,
RTCRtpCodecParameters.payloadType for the “rtx” codec is used by default.

rtxTime: As defined in [RFC4588], the time in milliseconds (measured from the
time a packet was first sent) that the sender keeps an RTP packet
in its buffers available for retransmission.

@robin-raymond
Contributor

partial dictionary RTCRtpRtxParameters {
payloadtype payloadType;
unsigned long rtxTime;
};

Should not have rtxTime as part of the encoding parameters as it's a codec format not a encoding param.

@aboba aboba closed this Nov 20, 2015
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment