mirror of
https://github.com/koush/scrypted.git
synced 2026-06-20 16:40:30 +01:00
webrtc: performance improvements
This commit is contained in:
2
external/werift
vendored
2
external/werift
vendored
Submodule external/werift updated: 571c19a847...c80d48773c
4
plugins/webrtc/package-lock.json
generated
4
plugins/webrtc/package-lock.json
generated
@@ -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",
|
||||
|
||||
@@ -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",
|
||||
|
||||
@@ -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,
|
||||
|
||||
@@ -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) {
|
||||
|
||||
Reference in New Issue
Block a user