UNPKG

rtp.js

Version:

RTP stack for Node.js and browser written in TypeScript

133 lines (132 loc) 4.43 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.RtpExtensionType = void 0; exports.rtpExtensionUriToType = rtpExtensionUriToType; exports.timeMsToAbsSendTime = timeMsToAbsSendTime; /** * RTP extensions. * * @category RTP */ var RtpExtensionType; (function (RtpExtensionType) { /** * Media identification. * * URI: `urn:ietf:params:rtp-hdrext:sdes:mid` * * @see * - [RFC 9143](https://datatracker.ietf.org/doc/html/rfc9143) */ RtpExtensionType[RtpExtensionType["MID"] = 0] = "MID"; /** * RTP Stream Identifier. * * URI: `urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id` * * @see * - [RFC 8852](https://datatracker.ietf.org/doc/html/rfc8852) */ RtpExtensionType[RtpExtensionType["RTP_STREAM_ID"] = 1] = "RTP_STREAM_ID"; /** * RTP Repaired Stream Identifier. * * URI: `urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id` * * @see * - [RFC 8852](https://datatracker.ietf.org/doc/html/rfc8852) */ RtpExtensionType[RtpExtensionType["RTP_REPAIRED_STREAM_ID"] = 2] = "RTP_REPAIRED_STREAM_ID"; /** * Absolute Send Time. * * URI: `http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time` * * @see * - [Google Source](https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/abs-send-time) */ RtpExtensionType[RtpExtensionType["ABS_SEND_TIME"] = 3] = "ABS_SEND_TIME"; /** * Transport-wide Sequence Number. * * URI: `http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01` * * @see * - [draft-holmer-rmcat-transport-wide-cc-extensions-01](https://datatracker.ietf.org/doc/html/draft-holmer-rmcat-transport-wide-cc-extensions-01) */ RtpExtensionType[RtpExtensionType["TRANSPORT_WIDE_SEQ_NUMBER"] = 4] = "TRANSPORT_WIDE_SEQ_NUMBER"; /** * Audio Level * * URI: `urn:ietf:params:rtp-hdrext:ssrc-audio-level` * * @see * - [RFC 6464](https://datatracker.ietf.org/doc/html/rfc6464) */ RtpExtensionType[RtpExtensionType["SSRC_AUDIO_LEVEL"] = 5] = "SSRC_AUDIO_LEVEL"; /** * Video Orientation. * * URI: `urn:3gpp:video-orientation` * * @see * - [3GPP TS 26.114 V12.7.0](https://www.etsi.org/deliver/etsi_ts/126100_126199/126114/13.02.00_60/ts_126114v130200p.pdf) */ RtpExtensionType[RtpExtensionType["VIDEO_ORIENTATION"] = 6] = "VIDEO_ORIENTATION"; /** * Transmission Time Offsets. * * URI: `urn:ietf:params:rtp-hdrext:toffset` * * @see * - [RFC 5450](https://datatracker.ietf.org/doc/html/rfc5450) */ RtpExtensionType[RtpExtensionType["TOFFSET"] = 7] = "TOFFSET"; })(RtpExtensionType || (exports.RtpExtensionType = RtpExtensionType = {})); /** * Get the RTP extension type associated to the given RTP extension URI. * * @category RTP */ function rtpExtensionUriToType(uri) { switch (uri) { case 'urn:ietf:params:rtp-hdrext:sdes:mid': { return RtpExtensionType.MID; } case 'urn:ietf:params:rtp-hdrext:sdes:rtp-stream-id': { return RtpExtensionType.RTP_STREAM_ID; } case 'urn:ietf:params:rtp-hdrext:sdes:repaired-rtp-stream-id': { return RtpExtensionType.RTP_REPAIRED_STREAM_ID; } case 'http://www.webrtc.org/experiments/rtp-hdrext/abs-send-time': { return RtpExtensionType.ABS_SEND_TIME; } case 'http://www.ietf.org/id/draft-holmer-rmcat-transport-wide-cc-extensions-01': { return RtpExtensionType.TRANSPORT_WIDE_SEQ_NUMBER; } case 'urn:ietf:params:rtp-hdrext:ssrc-audio-level': { return RtpExtensionType.SSRC_AUDIO_LEVEL; } case 'urn:3gpp:video-orientation': { return RtpExtensionType.VIDEO_ORIENTATION; } case 'urn:ietf:params:rtp-hdrext:toffset': { return RtpExtensionType.TOFFSET; } default: { return undefined; } } } /** * Convert Unix epoch timestamp in milliseconds to "Absolute Send Time" format. * * @category RTP * * @see * - [Google Source](https://webrtc.googlesource.com/src/+/refs/heads/main/docs/native-code/rtp-hdrext/abs-send-time) */ function timeMsToAbsSendTime(timeMs) { return (((timeMs << 18) + 500) / 1000) & 0x00ffffff; }