You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
In summary: we must refactor RTCP packets in the way it's done in rtp.js library, which has super strict tests. Here some items:
Must manage unsupported packet / chunk / block types
For example, a XR packet can contain many different types of Extender Report Blocks. However, if one of those are not implemented in mediasoup then the parsed packet will ignore every block after it.
Having the above XR packet we can know (from the very beginning) that padding is 4 bytes. We know the RTCP length of the whole packet (14) and we know that the padding bit is set, so we can read the value of the last byte to know how many padding bytes are included and exclude them later when parsing blocks, items, subblocks, etc. In the above XR packet, some custom temporary logs show the problem:
Do not include business loginc into RTCP packet classes
For example, the SDES packet class has this:
size_tGetSize() constoverride
{
// A serialized packet can contain a maximum of 31 chunks.// If number of chunks exceeds 31 then the required number of packets// will be serialized which will take the size calculated below.
If the spec mandates up to 31 chunks in a SDES packet then this is valid, however it should be exposed somehow else instead of having a standard/core GetSize() returning a value that does not represent what the packet really holds.
The text was updated successfully, but these errors were encountered:
In summary: we must refactor RTCP packets in the way it's done in rtp.js library, which has super strict tests. Here some items:
Must manage unsupported packet / chunk / block types
For example, a XR packet can contain many different types of Extender Report Blocks. However, if one of those are not implemented in mediasoup then the parsed packet will ignore every block after it.
In (rtp.js](https://github.com/versatica/rtp.js) lib this is solved by having a
GenericExtendedReport
class.The following XR packet is parsed with zero blocks in mediasoup since the Extended Report LRLE block type is not implemented:
Must properly handle RTCP padding
Having the above XR packet we can know (from the very beginning) that padding is 4 bytes. We know the RTCP length of the whole packet (14) and we know that the padding bit is set, so we can read the value of the last byte to know how many padding bytes are included and exclude them later when parsing blocks, items, subblocks, etc. In the above XR packet, some custom temporary logs show the problem:
Do not include business loginc into RTCP packet classes
For example, the SDES packet class has this:
If the spec mandates up to 31 chunks in a SDES packet then this is valid, however it should be exposed somehow else instead of having a standard/core
GetSize()
returning a value that does not represent what the packet really holds.The text was updated successfully, but these errors were encountered: