@huddle01/web-core
Version:
The Huddle01 Javascript SDK offers a comprehensive suite of methods and event listeners that allow for seamless real-time audio and video communication with minimal coding required.
130 lines (127 loc) • 4.33 kB
JavaScript
import { ProtoEncodings } from './chunk-DFNYORIF.js';
// src/helpers/ProtooParsing.ts
var parseRouterRtpCapabilities = (rtpCapabilities) => {
const parsedRouterRtpCapabilites = rtpCapabilities;
if (parsedRouterRtpCapabilites.codecs)
for (const codec of parsedRouterRtpCapabilites.codecs) {
if (codec.parameters) {
const keys = Object.keys(codec.parameters);
for (const key of keys) {
if (key === "apt") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "level-asymmetry-allowed") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "packetization-mode") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "x-google-start-bitrate") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "profile-id") {
codec.parameters[key] = Number(codec.parameters[key]);
}
}
}
}
return parsedRouterRtpCapabilites;
};
var parseRtpParameters = (rtpParameters) => {
const parsedRtpParameters = rtpParameters;
for (const codec of parsedRtpParameters.codecs) {
if (codec.parameters) {
const keys = Object.keys(codec.parameters);
for (const key of keys) {
if (key === "apt") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "level-asymmetry-allowed") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "packetization-mode") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "x-google-start-bitrate") {
codec.parameters[key] = Number(codec.parameters[key]);
}
if (key === "profile-id") {
codec.parameters[key] = Number(codec.parameters[key]);
}
}
}
}
if (parsedRtpParameters.encodings) {
for (const encoding of parsedRtpParameters.encodings) {
encoding.dtx = false;
encoding.ssrc = Number(encoding.ssrc);
if (Number.isNaN(encoding.ssrc)) {
encoding.ssrc = void 0;
}
if (encoding.rtx?.ssrc !== void 0) {
if (Number(encoding.rtx.ssrc) === 0) {
encoding.rtx = void 0;
} else {
encoding.rtx.ssrc = Number(encoding.rtx.ssrc);
}
} else {
encoding.rtx = void 0;
}
}
}
const headerExtensions = parsedRtpParameters.headerExtensions;
if (headerExtensions) {
headerExtensions.map((headerExtension) => {
headerExtension.encrypt = false;
headerExtension.parameters = {};
});
}
return parsedRtpParameters;
};
var parseToProtoRtpParameters = (rtpParameters) => {
const codecs = rtpParameters.codecs;
for (const codec of codecs) {
if (codec.parameters) {
const keys = Object.keys(codec.parameters);
for (const key of keys) {
if (key === "apt") {
codec.parameters[key] = String(codec.parameters[key]);
}
if (key === "level-asymmetry-allowed") {
codec.parameters[key] = String(codec.parameters[key]);
}
if (key === "packetization-mode") {
codec.parameters[key] = String(codec.parameters[key]);
}
if (key === "x-google-start-bitrate") {
codec.parameters[key] = String(codec.parameters[key]);
}
if (key === "profile-id") {
codec.parameters[key] = String(codec.parameters[key]);
}
}
}
}
const encodings = rtpParameters.encodings;
if (encodings) {
for (const encoding of encodings) {
if (Number.isNaN(encoding.ssrc)) {
encoding.ssrc = void 0;
}
new ProtoEncodings({
ssrc: encoding.ssrc ? BigInt(encoding.ssrc) : void 0,
rid: encoding.rid,
codecPayloadType: encoding.codecPayloadType,
rtx: {
ssrc: encoding.rtx?.ssrc ? BigInt(encoding.rtx.ssrc) : void 0
},
dtx: encoding.dtx,
scalabilityMode: encoding.scalabilityMode,
scaleResolutionDownBy: encoding.scaleResolutionDownBy,
maxBitrate: encoding.maxBitrate
});
}
}
return rtpParameters;
};
export { parseRouterRtpCapabilities, parseRtpParameters, parseToProtoRtpParameters };