-
Notifications
You must be signed in to change notification settings - Fork 42
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
Matching rule update #557
Matching rule update #557
Conversation
LGTM |
@ibc The matching rules still do not seem quite right with respect to RTX/RED/FEC. For example, if rtx.ssrc is set in all the "real" codec encodings, there should not be a pt_table entry for the RTX codec. I think the same is true for fec.ssrc - if this is set for all encodings for a given fec.mechanism, then there should not be a pt_table entry for that FEC mechanism (including RED + ulpfec). |
Why is that so bad? (regardless I'm not against that) |
However, the current spec already matches what you suggest:
This is, if any
|
@ibc If parameters.encodings[i].ssrc is set for some value of i, then pt_table entries are not added. As you noted, in a situation where parameters.encodings[i].rtx.ssrc is not set, RTX packets will be dropped. Where parameters.encodings[i].rtx.ssrc is not set for any value of i, a pt_table entry for "rtx" should be added. Where parameters.encodings[i].fec.ssrc is not set for any value of i, a pt_table entry corresponding to parameters.encodings[i].fec.mechanism should be added. |
There may be multiple RTX codecs in This is VERY hard. |
To be absolutely clear. The following {
codecs :
[
{
name : 'audio/opus',
payloadType : 100
},
{
name : 'audio/ulaw',
payloadType : 0
}
],
encodings :
[
{
codecPayloadType : 100,
ssrc : 1111
},
{
codecPayloadType : 0,
}
]
} produce the following routing tables (tested in my implementation): {
"muxIdTable": {},
"ptTable": {},
"ssrcTable": {
"1111": "55333413"
}
} So, the ULAW stream (which will have a non announced SSRC value) will just be dropped. |
To summarize:
So IMHO there are two possible solutions or workarounds:
This is: if any |
I've implemented proposal 2 above, and the result of the routing tables are the following: {
"muxIdTable": {},
"ptTable": {
"0": "78347415",
"100": "78347415"
},
"ssrcTable": {
"1111": "78347415"
}
} So, it works. |
…n 2 implemented)
Here my working test units after implementing the solution 2 above: https://github.com/ibc/mediasoup/blob/master/test/test_RtpReceiver.js?ts=2#L600 |
And the implementation itself: https://github.com/ibc/mediasoup/blob/master/worker/src/RTC/RtpListener.cpp?ts=2#L190 |
I think we should add a PR that describes differing views of what this could be but let's let the WG argue this out since this requires compatibility. I think this also requires a set of test cases to evaluate what rules must work and how. |
I am going to revise this PR based on the matching rules in JSEP. Stay tuned. |
Fix for Issues #547 and #546
Rebase of PR #555