Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Missing RTX payload type #254

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

Missing RTX payload type #254

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

Comments

@robin-raymond
Copy link
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
Copy link
Contributor Author

$duplicate #157 ?

@aboba
Copy link
Contributor

aboba commented Oct 18, 2015

Yes, it is a duplicate.

@robin-raymond
Copy link
Contributor Author

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
Copy link
Contributor Author

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
Copy link
Contributor Author

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 Associated payload type with RTX Missing RTX payload type Oct 20, 2015
@robin-raymond
Copy link
Contributor Author

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

@robin-raymond
Copy link
Contributor Author

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
Copy link
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
Copy link
Contributor Author

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.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

2 participants