UNPKG

rtp.js

Version:

RTP stack for Node.js and browser written in TypeScript

64 lines (63 loc) 3.99 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const RtpPacket_1 = require("../../../packets/RTP/RtpPacket"); const rtpExtensions_1 = require("../../../packets/RTP/rtpExtensions"); const rtpPacketDump = { midExt: 'œæ€å∫∂', ridExt: 'qweasd', repairedRidExt: '44444444', absSendTimeExt: 999444, transportWideSeqNumberExt: 12345, ssrcAudioLevelExt: { volume: 55, voice: true }, videoOrientationExt: { camera: true, flip: false, rotation: 1 }, transmissionOffsetExt: 1234, }; const extensionMapping = { [rtpExtensions_1.RtpExtensionType.MID]: 1, [rtpExtensions_1.RtpExtensionType.RTP_STREAM_ID]: 2, [rtpExtensions_1.RtpExtensionType.RTP_REPAIRED_STREAM_ID]: 3, [rtpExtensions_1.RtpExtensionType.ABS_SEND_TIME]: 4, [rtpExtensions_1.RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER]: 5, [rtpExtensions_1.RtpExtensionType.SSRC_AUDIO_LEVEL]: 6, [rtpExtensions_1.RtpExtensionType.VIDEO_ORIENTATION]: 7, [rtpExtensions_1.RtpExtensionType.TOFFSET]: 8, }; const packet = new RtpPacket_1.RtpPacket(); packet.setExtensionMapping(extensionMapping); test('packet.getExtensionMapping() returns given extension mapping object', () => { // It's the same content. expect(packet.getExtensionMapping()).toEqual(extensionMapping); // But it's not the same object (but a cloned one). expect(packet.getExtensionMapping() === extensionMapping).toBe(false); }); test('set RTP extension mapping and get/set specific RTP extensions', () => { packet.setMidExtension(rtpPacketDump.midExt); packet.setRidExtension(rtpPacketDump.ridExt); packet.setRepairedRidExtension(rtpPacketDump.repairedRidExt); packet.setAbsSendTimeExtension(rtpPacketDump.absSendTimeExt); packet.setTransportWideSeqNumberExtension(rtpPacketDump.transportWideSeqNumberExt); packet.setSsrcAudioLevelExtension(rtpPacketDump.ssrcAudioLevelExt); packet.setVideoOrientationExtension(rtpPacketDump.videoOrientationExt); packet.setTransmissionOffsetExtension(rtpPacketDump.transmissionOffsetExt); expect(packet.dump()).toEqual(expect.objectContaining(rtpPacketDump)); }); test('RTP extension mapping remains after cloning the packet', () => { const clonedPacket = packet.clone(); expect(clonedPacket.dump()).toEqual(expect.objectContaining(rtpPacketDump)); }); test('setting specific RTP extension without mapping does nothing', () => { const packet2 = new RtpPacket_1.RtpPacket(); packet2.setMidExtension(rtpPacketDump.midExt); expect(packet2.getMidExtension()).toBe(undefined); }); test('rtpExtensionUriToType()', () => { expect((0, rtpExtensions_1.rtpExtensionUriToType)('urn:ietf:params:rtp-hdrext:sdes:mid')).toBe(rtpExtensions_1.RtpExtensionType.MID); expect((0, rtpExtensions_1.rtpExtensionUriToType)('urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id')).toBe(rtpExtensions_1.RtpExtensionType.RTP_STREAM_ID); expect((0, rtpExtensions_1.rtpExtensionUriToType)('urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id')).toBe(rtpExtensions_1.RtpExtensionType.RTP_REPAIRED_STREAM_ID); expect((0, rtpExtensions_1.rtpExtensionUriToType)('http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time')).toBe(rtpExtensions_1.RtpExtensionType.ABS_SEND_TIME); expect((0, rtpExtensions_1.rtpExtensionUriToType)('http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01')).toBe(rtpExtensions_1.RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER); expect((0, rtpExtensions_1.rtpExtensionUriToType)('urn:ietf:params:rtp-hdrext:ssrc-audio-level')).toBe(rtpExtensions_1.RtpExtensionType.SSRC_AUDIO_LEVEL); expect((0, rtpExtensions_1.rtpExtensionUriToType)('urn:3gpp:video-orientation')).toBe(rtpExtensions_1.RtpExtensionType.VIDEO_ORIENTATION); expect((0, rtpExtensions_1.rtpExtensionUriToType)('urn:ietf:params:rtp-hdrext:toffset')).toBe(rtpExtensions_1.RtpExtensionType.TOFFSET); expect((0, rtpExtensions_1.rtpExtensionUriToType)('foo')).toBe(undefined); });