123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211 |
- /* eslint-disable max-len */
- import { MockPeerConnection } from './MockClasses';
- import { TPCUtils } from './TPCUtils';
-
- const TEST_VIDEO_BITRATES = {
- low: 200000,
- standard: 700000,
- high: 2500000
- };
-
- describe('TPCUtils', () => {
- describe('ensureCorrectOrderOfSsrcs()', () => {
- const commonSdpLines = [
- 'v=0',
- 'o=- 814997227879783433 5 IN IP4 127.0.0.1',
- 's=-',
- 't=0 0',
- 'a=msid-semantic: WMS 0836cc8e-a7bb-47e9-affb-0599414bc56d',
- 'a=group:BUNDLE video',
- 'm=video 9 RTP/SAVPF 100 96',
- 'c=IN IP4 0.0.0.0',
- 'a=rtpmap:100 VP8/90000',
- 'a=fmtp:96 apt=100',
- 'a=rtcp:9 IN IP4 0.0.0.0',
- 'a=rtcp-fb:100 ccm fir',
- 'a=rtcp-fb:100 nack',
- 'a=rtcp-fb:100 nack pli',
- 'a=rtcp-fb:100 goog-remb',
- 'a=extmap:3 http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time',
- 'a=setup:passive',
- 'a=mid:video',
- 'a=sendrecv',
- 'a=ice-ufrag:adPg',
- 'a=ice-pwd:Xsr05Mq8S7CR44DAnusZE26F',
- 'a=fingerprint:sha-256 6A:39:DE:11:24:AD:2E:4E:63:D6:69:D3:85:05:53:C7:3C:38:A4:B7:91:74:C0:91:44:FC:94:63:7F:01:AB:A9'
- ];
-
- it('sort ssrcs associated with all FID ssrc-groups', () => {
- const pc = new MockPeerConnection();
- const tpcUtils = new TPCUtils(pc, TEST_VIDEO_BITRATES);
-
- const source = new RTCSessionDescription({
- type: 'offer',
- sdp: getSourceSdp()
- });
- const result = tpcUtils.ensureCorrectOrderOfSsrcs(source);
-
- expect(result.sdp).toBe(getExpectedSdp());
-
- /**
- * Test SDP with multiple FID groups
- */
- function getSourceSdp() {
- return `${[
- ...commonSdpLines,
- 'a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1757014965 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1479742055 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1479742055 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1089111804 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1089111804 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:855213044 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:855213044 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:984899560 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:2963867077 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:2963867077 cname:peDGrDD6WsxUOki/',
- 'a=ssrc-group:FID 1757014965 984899560',
- 'a=ssrc-group:FID 1479742055 855213044',
- 'a=ssrc-group:FID 1089111804 2963867077',
- 'a=ssrc-group:SIM 1757014965 1479742055 1089111804',
- 'a=rtcp-mux'
- ].join('\r\n')}\r\n`;
- }
-
- /**
- * Expected SDP: all ssrc must be present and ordered
- */
- function getExpectedSdp() {
- return `${[
- ...commonSdpLines,
- 'a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1757014965 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:984899560 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1479742055 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1479742055 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:855213044 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:855213044 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1089111804 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1089111804 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:2963867077 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:2963867077 cname:peDGrDD6WsxUOki/',
- 'a=ssrc-group:FID 1757014965 984899560',
- 'a=ssrc-group:FID 1479742055 855213044',
- 'a=ssrc-group:FID 1089111804 2963867077',
- 'a=ssrc-group:SIM 1757014965 1479742055 1089111804',
- 'a=rtcp-mux'
- ].join('\r\n')}\r\n`;
- }
- });
-
- it('sort ssrcs in case the first ssrc in the SIM group is not present at the top', () => {
- const pc = new MockPeerConnection();
- const tpcUtils = new TPCUtils(pc, TEST_VIDEO_BITRATES);
-
- const source = new RTCSessionDescription({
- type: 'offer',
- sdp: getSourceSdp()
- });
- const result = tpcUtils.ensureCorrectOrderOfSsrcs(source);
-
- expect(result.sdp).toBe(getExpectedSdp());
-
- /**
- * Test SDP with multiple FID groups where the first ssrc in the SIM group is not present at the top
- */
- function getSourceSdp() {
- return `${[
- ...commonSdpLines,
- 'a=ssrc:1479742055 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1479742055 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1757014965 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1089111804 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1089111804 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:855213044 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:855213044 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:984899560 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:2963867077 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:2963867077 cname:peDGrDD6WsxUOki/',
- 'a=ssrc-group:FID 1757014965 984899560',
- 'a=ssrc-group:FID 1479742055 855213044',
- 'a=ssrc-group:FID 1089111804 2963867077',
- 'a=ssrc-group:SIM 1757014965 1479742055 1089111804',
- 'a=rtcp-mux'
- ].join('\r\n')}\r\n`;
- }
-
- /**
- * Expected SDP: all ssrc must be present and ordered
- */
- function getExpectedSdp() {
- return `${[
- ...commonSdpLines,
- 'a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1757014965 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:984899560 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1479742055 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1479742055 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:855213044 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:855213044 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1089111804 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1089111804 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:2963867077 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:2963867077 cname:peDGrDD6WsxUOki/',
- 'a=ssrc-group:FID 1757014965 984899560',
- 'a=ssrc-group:FID 1479742055 855213044',
- 'a=ssrc-group:FID 1089111804 2963867077',
- 'a=ssrc-group:SIM 1757014965 1479742055 1089111804',
- 'a=rtcp-mux'
- ].join('\r\n')}\r\n`;
- }
- });
-
- it('sort ssrcs in case there is a single FID group', () => {
- const pc = new MockPeerConnection();
- const tpcUtils = new TPCUtils(pc, TEST_VIDEO_BITRATES);
-
- const source = new RTCSessionDescription({
- type: 'offer',
- sdp: getSourceSdp()
- });
- const result = tpcUtils.ensureCorrectOrderOfSsrcs(source);
-
- expect(result.sdp).toBe(getExpectedSdp());
-
- /**
- * Test SDP with the single FID group
- */
- function getSourceSdp() {
- return `${[
- ...commonSdpLines,
- 'a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:984899560 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1757014965 cname:peDGrDD6WsxUOki/',
- 'a=ssrc-group:FID 1757014965 984899560',
- 'a=rtcp-mux'
- ].join('\r\n')}\r\n`;
- }
-
- /**
- * Expected SDP: all ssrc must be present and ordered
- */
- function getExpectedSdp() {
- return `${[
- ...commonSdpLines,
- 'a=ssrc:1757014965 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:1757014965 cname:peDGrDD6WsxUOki/',
- 'a=ssrc:984899560 msid:0836cc8e-a7bb-47e9-affb-0599414bc56d bdbd2c0a-7959-4578-8db5-9a6a1aec4ecf',
- 'a=ssrc:984899560 cname:peDGrDD6WsxUOki/',
- 'a=ssrc-group:FID 1757014965 984899560',
- 'a=rtcp-mux'
- ].join('\r\n')}\r\n`;
- }
- });
- });
- });
|