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

RTX and ssrc indication #386

Closed
ibc opened this issue Feb 29, 2016 · 6 comments
Closed

RTX and ssrc indication #386

ibc opened this issue Feb 29, 2016 · 6 comments

Comments

@ibc
Copy link
Contributor

ibc commented Feb 29, 2016

According to the spec:

9.12.1 Dictionary RTCRtpRtxParameters Members

payloadType of type payloadtype

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

ssrc of type unsigned long

The SSRC to use for retransmission, as specified in [RFC4588]. If unset when passed to RTCRtpSender.send(), the browser will choose.

When it comes to SDP, how is such a SSRC indicated? For example (some stuff removed):

m=video 62125 UDP/TLS/RTP/SAVPF 100 101 116 117 96
a=sendonly
a=rtpmap:100 VP8/90000
a=rtcp-fb:100 ccm fir
a=rtcp-fb:100 nack
a=rtcp-fb:100 nack pli
a=rtcp-fb:100 goog-remb
a=rtpmap:101 VP9/90000
a=rtcp-fb:101 ccm fir
a=rtcp-fb:101 nack
a=rtcp-fb:101 nack pli
a=rtcp-fb:101 goog-remb
a=rtpmap:116 red/90000
a=rtpmap:117 ulpfec/90000
a=rtpmap:96 rtx/90000
a=fmtp:96 apt=100
a=ssrc-group:FID 2370134951 1456621734
a=ssrc:2370134951 cname:KZloQhO7d7spe7DA
a=ssrc:2370134951 msid:f2ZAO9Z0CX2iYNdVD4EMZ7vr5gGxUQugpRkz 37d3d6c3-7646-48aa-bdc1-59fa55118a14
a=ssrc:2370134951 mslabel:f2ZAO9Z0CX2iYNdVD4EMZ7vr5gGxUQugpRkz
a=ssrc:2370134951 label:37d3d6c3-7646-48aa-bdc1-59fa55118a14
a=ssrc:1456621734 cname:KZloQhO7d7spe7DA
a=ssrc:1456621734 msid:f2ZAO9Z0CX2iYNdVD4EMZ7vr5gGxUQugpRkz 37d3d6c3-7646-48aa-bdc1-59fa55118a14
a=ssrc:1456621734 mslabel:f2ZAO9Z0CX2iYNdVD4EMZ7vr5gGxUQugpRkz
a=ssrc:1456621734 label:37d3d6c3-7646-48aa-bdc1-59fa55118a14

It indicates that the RtpSender can send RTX packets with payload 96 for codec VP8 (payload 100). Since ssrc-group is used, should I understand that RTX packets for VP8 will be sent with ssrc 1456621734?

@aboba
Copy link
Contributor

aboba commented Feb 29, 2016

In the above SDP, PT 96 is used to retransmit VP8 (PT 100). Since there is only one retransmission stream, for the "rtx" codec, RTCRtpCodecParameters.payloadType = 96 and encodings[].rtx.payloadType need not be set (and will default to 96). rtx.ssrc = 1456621734 (I am assuming the first SSRC is for VP8, second is for RTX).

@ibc
Copy link
Contributor Author

ibc commented Feb 29, 2016

Thanks. I think that having RTX as a codec does not make too much sense. It should be, instead, encoding properties of the "real" codec. Otherwise this is redundant because RTCRtpRtxParameters also includes payloadType and ssrc.

@aboba
Copy link
Contributor

aboba commented Feb 29, 2016

There are pros and cons of eliminating RTX as a codec. If there is only a single retransmission stream, then RTX can be configured as a codec and encodings[].rtx.payloadtype and .ssrc can be left unset. On the other hand, if there are multiple retransmitted streams, then both are necessary.

@ibc
Copy link
Contributor Author

ibc commented Mar 1, 2016

That's exactly what I don't like: the fact that, depending on the number of retransmission streams, things can be signaling in a way or another.

I don't think encodings should have a rtx field with ssrc and payloadType because we still need "codec" properties for RTX (such as clockRate). Shouldn't encodings.rtx just include two references, one to the original codec and another one to the RTX codec associated to it?

@robin-raymond
Copy link
Contributor

This seems more of the "how do I specify different combinations of encodings, FEC and RTX stuff" We clearly need a good set of examples and mappings.

@aboba
Copy link
Contributor

aboba commented Mar 15, 2016

See also: #422

@aboba aboba closed this as completed Mar 15, 2016
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

3 participants