mirror of
https://github.com/koush/scrypted.git
synced 2026-06-20 16:40:30 +01:00
webrtc: fix typing and variable scope
This commit is contained in:
@@ -52,7 +52,12 @@ export function createZygote<T>(options?: ForkOptions): Zygote<T> {
|
||||
}
|
||||
|
||||
const gen = next();
|
||||
return () => gen.next().value as PluginFork<T>;
|
||||
return () => {
|
||||
const ret = gen.next();
|
||||
if (ret.done || !ret.value)
|
||||
throw new Error('Zygote exhausted');
|
||||
return ret.value;
|
||||
};
|
||||
}
|
||||
|
||||
|
||||
|
||||
4
plugins/webrtc/package-lock.json
generated
4
plugins/webrtc/package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@scrypted/webrtc",
|
||||
"version": "0.2.83",
|
||||
"version": "0.2.85",
|
||||
"lockfileVersion": 2,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@scrypted/webrtc",
|
||||
"version": "0.2.83",
|
||||
"version": "0.2.85",
|
||||
"dependencies": {
|
||||
"@scrypted/common": "file:../../common",
|
||||
"@scrypted/sdk": "file:../../sdk",
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@scrypted/webrtc",
|
||||
"version": "0.2.83",
|
||||
"version": "0.2.85",
|
||||
"scripts": {
|
||||
"scrypted-setup-project": "scrypted-setup-project",
|
||||
"prescrypted-setup-project": "scrypted-package-json",
|
||||
|
||||
@@ -97,17 +97,18 @@ export async function createTrackForwarder(options: {
|
||||
if (!mo)
|
||||
return;
|
||||
|
||||
let mediaStreamFeedback: MediaStreamFeedback;
|
||||
let hasMediaStreamFeedback = false;
|
||||
try {
|
||||
mediaStreamFeedback = await sdk.mediaManager.convertMediaObject(mo, ScryptedMimeTypes.MediaStreamFeedback);
|
||||
const mediaStreamFeedback = await sdk.connectRPCObject(await sdk.mediaManager.convertMediaObject<MediaStreamFeedback>(mo, ScryptedMimeTypes.MediaStreamFeedback));
|
||||
if (mediaStreamFeedback) {
|
||||
videoTransceiver.sender.onRtcp.subscribe(rtcp => {
|
||||
mediaStreamFeedback.onRtcp(rtcp.serialize());
|
||||
});
|
||||
hasMediaStreamFeedback = true;
|
||||
}
|
||||
}
|
||||
catch (e) {
|
||||
}
|
||||
if (mediaStreamFeedback) {
|
||||
videoTransceiver.sender.onRtcp.subscribe(rtcp => {
|
||||
mediaStreamFeedback.onRtcp(rtcp.serialize());
|
||||
});
|
||||
}
|
||||
|
||||
const console = sdk.deviceManager.getMixinConsole(mo.sourceId);
|
||||
const ffmpegInput = await sdk.mediaManager.convertMediaObjectToJSON<FFmpegInput>(mo, ScryptedMimeTypes.FFmpegInput);
|
||||
@@ -253,7 +254,7 @@ export async function createTrackForwarder(options: {
|
||||
}
|
||||
}
|
||||
|
||||
if (mediaStreamFeedback)
|
||||
if (hasMediaStreamFeedback)
|
||||
needPacketization = false;
|
||||
|
||||
let opusRepacketizer: OpusRepacketizer;
|
||||
@@ -580,9 +581,10 @@ export class WebRTCConnectionManagement implements RTCConnectionManagement {
|
||||
let requestMediaStream: RequestMediaStream;
|
||||
|
||||
try {
|
||||
requestMediaStream = await sdk.mediaManager.convertMediaObject(mediaObject, ScryptedMimeTypes.RequestMediaStream);
|
||||
requestMediaStream = await sdk.connectRPCObject(await sdk.mediaManager.convertMediaObject(mediaObject, ScryptedMimeTypes.RequestMediaStream));
|
||||
}
|
||||
catch (e) {
|
||||
mediaObject = await sdk.connectRPCObject(mediaObject);
|
||||
requestMediaStream = async () => mediaObject;
|
||||
}
|
||||
|
||||
|
||||
@@ -4,7 +4,7 @@ import { timeoutPromise } from '@scrypted/common/src/promise-utils';
|
||||
import { legacyGetSignalingSessionOptions } from '@scrypted/common/src/rtc-signaling';
|
||||
import { SettingsMixinDeviceBase, SettingsMixinDeviceOptions } from '@scrypted/common/src/settings-mixin';
|
||||
import { createZygote } from '@scrypted/common/src/zygote';
|
||||
import sdk, { DeviceCreator, DeviceCreatorSettings, DeviceProvider, FFmpegInput, Intercom, MediaConverter, MediaObject, MediaObjectOptions, MixinProvider, PluginFork, RTCSessionControl, RTCSignalingChannel, RTCSignalingClient, RTCSignalingOptions, RTCSignalingSession, RequestMediaStream, RequestMediaStreamOptions, ResponseMediaStreamOptions, ScryptedDeviceType, ScryptedInterface, ScryptedMimeTypes, ScryptedNativeId, Setting, SettingValue, Settings, VideoCamera, WritableDeviceState } from '@scrypted/sdk';
|
||||
import sdk, { DeviceCreator, DeviceCreatorSettings, DeviceProvider, FFmpegInput, Intercom, MediaConverter, MediaObject, MediaObjectOptions, MixinProvider, RTCSessionControl, RTCSignalingChannel, RTCSignalingClient, RTCSignalingOptions, RTCSignalingSession, RequestMediaStream, RequestMediaStreamOptions, ResponseMediaStreamOptions, ScryptedDeviceType, ScryptedInterface, ScryptedMimeTypes, ScryptedNativeId, Setting, SettingValue, Settings, VideoCamera, WritableDeviceState } from '@scrypted/sdk';
|
||||
import { StorageSettings } from '@scrypted/sdk/storage-settings';
|
||||
import { RpcPeer } from '@scrypted/server/src/rpc';
|
||||
import { createDataChannelSerializer } from '@scrypted/server/src/rpc-serializer';
|
||||
@@ -27,9 +27,9 @@ defaultPeerConfig.headerExtensions = {
|
||||
audio: [],
|
||||
};
|
||||
|
||||
function delayWorkerExit(f: PluginFork<ReturnType<typeof fork>>) {
|
||||
function delayWorkerExit(f: ReturnType<WebRTCPlugin['createTrackedFork']>) {
|
||||
setTimeout(() => {
|
||||
f.result.then(r => r.then(rr => rr.exit())).catch(() => { });
|
||||
f.result.then(rr => rr.exit()).catch(() => { });
|
||||
}, 1000);
|
||||
setTimeout(() => {
|
||||
f.worker.terminate();
|
||||
@@ -272,7 +272,7 @@ export class WebRTCPlugin extends AutoenableMixinProvider implements DeviceCreat
|
||||
},
|
||||
});
|
||||
activeConnections = 0;
|
||||
zygote = createZygote<ReturnType<typeof fork>>();
|
||||
zygote = createZygote<Awaited<ReturnType<typeof fork>>>();
|
||||
|
||||
constructor() {
|
||||
super();
|
||||
|
||||
Reference in New Issue
Block a user