webrtc: performance improvements

This commit is contained in:
Koushik Dutta
2023-01-13 07:58:00 -08:00
parent 36f0f2b1f2
commit f51ce5c7e9
5 changed files with 25 additions and 16 deletions

View File

@@ -1,12 +1,12 @@
{
"name": "@scrypted/webrtc",
"version": "0.1.19",
"version": "0.1.20",
"lockfileVersion": 2,
"requires": true,
"packages": {
"": {
"name": "@scrypted/webrtc",
"version": "0.1.19",
"version": "0.1.20",
"dependencies": {
"@scrypted/common": "file:../../common",
"@scrypted/sdk": "file:../../sdk",

View File

@@ -1,6 +1,6 @@
{
"name": "@scrypted/webrtc",
"version": "0.1.19",
"version": "0.1.20",
"scripts": {
"scrypted-setup-project": "scrypted-setup-project",
"prescrypted-setup-project": "scrypted-package-json",

View File

@@ -177,7 +177,7 @@ export async function createTrackForwarder(options: {
const audioRtpTrack: RtpTrack = {
codecCopy: audioCodecCopy,
onRtp: buffer => audioTransceiver.sender.sendRtp(buffer),
onRtp: audioTransceiver.sender.sendRtp.bind(audioTransceiver.sender),
encoderArguments: [
...audioTranscodeArguments,
],
@@ -210,6 +210,8 @@ export async function createTrackForwarder(options: {
packetSize: videoPacketSize,
onMSection: (videoSection) => spsPps = getSpsPps(videoSection),
onRtp: (buffer) => {
let onRtp: (rtp: Buffer) => void;
if (needPacketization) {
if (!h264Repacketizer) {
// adjust packet size for the rtp packet header (12).
@@ -217,14 +219,21 @@ export async function createTrackForwarder(options: {
...spsPps,
});
}
const repacketized = h264Repacketizer.repacketize(RtpPacket.deSerialize(buffer));
for (const packet of repacketized) {
videoTransceiver.sender.sendRtp(packet);
}
onRtp = buffer => {
const repacketized = h264Repacketizer.repacketize(RtpPacket.deSerialize(buffer));
for (const packet of repacketized) {
videoTransceiver.sender.sendRtp(packet);
}
};
}
else {
videoTransceiver.sender.sendRtp(buffer);
onRtp = buffer => {
videoTransceiver.sender.sendRtp(buffer);
};
}
videoRtpTrack.onRtp = onRtp;
videoRtpTrack.onRtp(buffer);
},
encoderArguments: [
...videoTranscodeArguments,

View File

@@ -46,14 +46,14 @@ export type RtpSockets = {
};
function createPacketDelivery(track: RtpTrack) {
let firstPacket = true;
return (rtp: Buffer) => {
if (firstPacket) {
firstPacket = false;
track.firstPacket?.(rtp);
}
const original = track.onRtp;
track.onRtp = rtp => {
track.onRtp = original;
track.firstPacket?.(rtp);
track.onRtp(rtp);
}
return (rtp: Buffer) => track.onRtp(rtp);
}
function attachTrackDgram(track: RtpTrack, server: dgram.Socket) {