rtp.js
Version:
RTP stack for Node.js and browser written in TypeScript
64 lines (63 loc) • 3.99 kB
JavaScript
;
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);
});