feat: complete Ancestor quote bot with production-ready Docker support
This commit is contained in:
99
node_modules/matrix-js-sdk/lib/webrtc/callFeed.js
generated
vendored
99
node_modules/matrix-js-sdk/lib/webrtc/callFeed.js
generated
vendored
@@ -1,4 +1,16 @@
|
||||
import _defineProperty from "@babel/runtime/helpers/defineProperty";
|
||||
"use strict";
|
||||
|
||||
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
|
||||
Object.defineProperty(exports, "__esModule", {
|
||||
value: true
|
||||
});
|
||||
exports.SPEAKING_THRESHOLD = exports.CallFeedEvent = exports.CallFeed = void 0;
|
||||
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
|
||||
var _callEventTypes = require("./callEventTypes");
|
||||
var _audioContext = require("./audioContext");
|
||||
var _logger = require("../logger");
|
||||
var _typedEventEmitter = require("../models/typed-event-emitter");
|
||||
var _call = require("./call");
|
||||
/*
|
||||
Copyright 2021 Šimon Brandner <simon.bra.ag@gmail.com>
|
||||
|
||||
@@ -15,16 +27,11 @@ See the License for the specific language governing permissions and
|
||||
limitations under the License.
|
||||
*/
|
||||
|
||||
import { SDPStreamMetadataPurpose } from "./callEventTypes.js";
|
||||
import { acquireContext, releaseContext } from "./audioContext.js";
|
||||
import { logger } from "../logger.js";
|
||||
import { TypedEventEmitter } from "../models/typed-event-emitter.js";
|
||||
import { CallEvent, CallState } from "./call.js";
|
||||
const POLLING_INTERVAL = 200; // ms
|
||||
export const SPEAKING_THRESHOLD = -60; // dB
|
||||
const SPEAKING_THRESHOLD = -60; // dB
|
||||
exports.SPEAKING_THRESHOLD = SPEAKING_THRESHOLD;
|
||||
const SPEAKING_SAMPLE_COUNT = 8; // samples
|
||||
|
||||
export let CallFeedEvent = /*#__PURE__*/function (CallFeedEvent) {
|
||||
let CallFeedEvent = /*#__PURE__*/function (CallFeedEvent) {
|
||||
CallFeedEvent["NewStream"] = "new_stream";
|
||||
CallFeedEvent["MuteStateChanged"] = "mute_state_changed";
|
||||
CallFeedEvent["LocalVolumeChanged"] = "local_volume_changed";
|
||||
@@ -34,41 +41,42 @@ export let CallFeedEvent = /*#__PURE__*/function (CallFeedEvent) {
|
||||
CallFeedEvent["Disposed"] = "disposed";
|
||||
return CallFeedEvent;
|
||||
}({});
|
||||
export class CallFeed extends TypedEventEmitter {
|
||||
exports.CallFeedEvent = CallFeedEvent;
|
||||
class CallFeed extends _typedEventEmitter.TypedEventEmitter {
|
||||
constructor(opts) {
|
||||
super();
|
||||
_defineProperty(this, "stream", void 0);
|
||||
_defineProperty(this, "sdpMetadataStreamId", void 0);
|
||||
_defineProperty(this, "userId", void 0);
|
||||
_defineProperty(this, "deviceId", void 0);
|
||||
_defineProperty(this, "purpose", void 0);
|
||||
_defineProperty(this, "speakingVolumeSamples", void 0);
|
||||
_defineProperty(this, "client", void 0);
|
||||
_defineProperty(this, "call", void 0);
|
||||
_defineProperty(this, "roomId", void 0);
|
||||
_defineProperty(this, "audioMuted", void 0);
|
||||
_defineProperty(this, "videoMuted", void 0);
|
||||
_defineProperty(this, "localVolume", 1);
|
||||
_defineProperty(this, "measuringVolumeActivity", false);
|
||||
_defineProperty(this, "audioContext", void 0);
|
||||
_defineProperty(this, "analyser", void 0);
|
||||
_defineProperty(this, "frequencyBinCount", void 0);
|
||||
_defineProperty(this, "speakingThreshold", SPEAKING_THRESHOLD);
|
||||
_defineProperty(this, "speaking", false);
|
||||
_defineProperty(this, "volumeLooperTimeout", void 0);
|
||||
_defineProperty(this, "_disposed", false);
|
||||
_defineProperty(this, "_connected", false);
|
||||
_defineProperty(this, "onAddTrack", () => {
|
||||
(0, _defineProperty2.default)(this, "stream", void 0);
|
||||
(0, _defineProperty2.default)(this, "sdpMetadataStreamId", void 0);
|
||||
(0, _defineProperty2.default)(this, "userId", void 0);
|
||||
(0, _defineProperty2.default)(this, "deviceId", void 0);
|
||||
(0, _defineProperty2.default)(this, "purpose", void 0);
|
||||
(0, _defineProperty2.default)(this, "speakingVolumeSamples", void 0);
|
||||
(0, _defineProperty2.default)(this, "client", void 0);
|
||||
(0, _defineProperty2.default)(this, "call", void 0);
|
||||
(0, _defineProperty2.default)(this, "roomId", void 0);
|
||||
(0, _defineProperty2.default)(this, "audioMuted", void 0);
|
||||
(0, _defineProperty2.default)(this, "videoMuted", void 0);
|
||||
(0, _defineProperty2.default)(this, "localVolume", 1);
|
||||
(0, _defineProperty2.default)(this, "measuringVolumeActivity", false);
|
||||
(0, _defineProperty2.default)(this, "audioContext", void 0);
|
||||
(0, _defineProperty2.default)(this, "analyser", void 0);
|
||||
(0, _defineProperty2.default)(this, "frequencyBinCount", void 0);
|
||||
(0, _defineProperty2.default)(this, "speakingThreshold", SPEAKING_THRESHOLD);
|
||||
(0, _defineProperty2.default)(this, "speaking", false);
|
||||
(0, _defineProperty2.default)(this, "volumeLooperTimeout", void 0);
|
||||
(0, _defineProperty2.default)(this, "_disposed", false);
|
||||
(0, _defineProperty2.default)(this, "_connected", false);
|
||||
(0, _defineProperty2.default)(this, "onAddTrack", () => {
|
||||
this.emit(CallFeedEvent.NewStream, this.stream);
|
||||
});
|
||||
_defineProperty(this, "onCallState", state => {
|
||||
if (state === CallState.Connected) {
|
||||
(0, _defineProperty2.default)(this, "onCallState", state => {
|
||||
if (state === _call.CallState.Connected) {
|
||||
this.connected = true;
|
||||
} else if (state === CallState.Connecting) {
|
||||
} else if (state === _call.CallState.Connecting) {
|
||||
this.connected = false;
|
||||
}
|
||||
});
|
||||
_defineProperty(this, "volumeLooper", () => {
|
||||
(0, _defineProperty2.default)(this, "volumeLooper", () => {
|
||||
if (!this.analyser) return;
|
||||
if (!this.measuringVolumeActivity) return;
|
||||
this.analyser.getFloatFrequencyData(this.frequencyBinCount);
|
||||
@@ -111,7 +119,7 @@ export class CallFeed extends TypedEventEmitter {
|
||||
this.initVolumeMeasuring();
|
||||
}
|
||||
if (opts.call) {
|
||||
opts.call.addListener(CallEvent.State, this.onCallState);
|
||||
opts.call.addListener(_call.CallEvent.State, this.onCallState);
|
||||
this.onCallState(opts.call.state);
|
||||
}
|
||||
}
|
||||
@@ -145,7 +153,7 @@ export class CallFeed extends TypedEventEmitter {
|
||||
}
|
||||
initVolumeMeasuring() {
|
||||
if (!this.hasAudioTrack) return;
|
||||
if (!this.audioContext) this.audioContext = acquireContext();
|
||||
if (!this.audioContext) this.audioContext = (0, _audioContext.acquireContext)();
|
||||
this.analyser = this.audioContext.createAnalyser();
|
||||
this.analyser.fftSize = 512;
|
||||
this.analyser.smoothingTimeConstant = 0.1;
|
||||
@@ -158,8 +166,9 @@ export class CallFeed extends TypedEventEmitter {
|
||||
* @returns member of the callRoom
|
||||
*/
|
||||
getMember() {
|
||||
var _callRoom$getMember;
|
||||
const callRoom = this.client.getRoom(this.roomId);
|
||||
return callRoom?.getMember(this.userId) ?? null;
|
||||
return (_callRoom$getMember = callRoom === null || callRoom === void 0 ? void 0 : callRoom.getMember(this.userId)) !== null && _callRoom$getMember !== void 0 ? _callRoom$getMember : null;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -241,8 +250,8 @@ export class CallFeed extends TypedEventEmitter {
|
||||
clone() {
|
||||
const mediaHandler = this.client.getMediaHandler();
|
||||
const stream = this.stream.clone();
|
||||
logger.log(`CallFeed clone() cloning stream (originalStreamId=${this.stream.id}, newStreamId${stream.id})`);
|
||||
if (this.purpose === SDPStreamMetadataPurpose.Usermedia) {
|
||||
_logger.logger.log(`CallFeed clone() cloning stream (originalStreamId=${this.stream.id}, newStreamId${stream.id})`);
|
||||
if (this.purpose === _callEventTypes.SDPStreamMetadataPurpose.Usermedia) {
|
||||
mediaHandler.userMediaStreams.push(stream);
|
||||
} else {
|
||||
mediaHandler.screensharingStreams.push(stream);
|
||||
@@ -259,13 +268,14 @@ export class CallFeed extends TypedEventEmitter {
|
||||
});
|
||||
}
|
||||
dispose() {
|
||||
var _this$stream, _this$call;
|
||||
clearTimeout(this.volumeLooperTimeout);
|
||||
this.stream?.removeEventListener("addtrack", this.onAddTrack);
|
||||
this.call?.removeListener(CallEvent.State, this.onCallState);
|
||||
(_this$stream = this.stream) === null || _this$stream === void 0 ? void 0 : _this$stream.removeEventListener("addtrack", this.onAddTrack);
|
||||
(_this$call = this.call) === null || _this$call === void 0 ? void 0 : _this$call.removeListener(_call.CallEvent.State, this.onCallState);
|
||||
if (this.audioContext) {
|
||||
this.audioContext = undefined;
|
||||
this.analyser = undefined;
|
||||
releaseContext();
|
||||
(0, _audioContext.releaseContext)();
|
||||
}
|
||||
this._disposed = true;
|
||||
this.emit(CallFeedEvent.Disposed);
|
||||
@@ -284,4 +294,5 @@ export class CallFeed extends TypedEventEmitter {
|
||||
this.emit(CallFeedEvent.LocalVolumeChanged, localVolume);
|
||||
}
|
||||
}
|
||||
exports.CallFeed = CallFeed;
|
||||
//# sourceMappingURL=callFeed.js.map
|
||||
Reference in New Issue
Block a user