@webex/internal-media-core 1.38.6 → 1.39.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/cjs/index.js
CHANGED
|
@@ -2835,6 +2835,16 @@ stream.getTracks().forEach(track=>track.stop());return callbackRes;}return callb
|
|
|
2835
2835
|
* @param videoContentHint - An optional parameters to give a hint for the content of the track.
|
|
2836
2836
|
* @returns A Promise that resolves to a LocalDisplayTrack.
|
|
2837
2837
|
*/function createDisplayTrack(constructor,videoContentHint){return __awaiter$1(this,void 0,void 0,function*(){var stream=yield getDisplayMedia({video:true});return new constructor(stream,videoContentHint);});}/**
|
|
2838
|
+
* Creates a display video track and a system audio track.
|
|
2839
|
+
*
|
|
2840
|
+
* @param videoTrackConstructor - Constructor for the local display track.
|
|
2841
|
+
* @param audioTrackConstructor - Constructor for the local system audio track.
|
|
2842
|
+
* @param videoContentHint - An optional parameter to give a hint for the content of the track.
|
|
2843
|
+
* @returns A Promise that resolves to a LocalDisplayTrack and a LocalSystemAudioTrack. If no system
|
|
2844
|
+
* audio is available, the LocalSystemAudioTrack will be resolved as null instead.
|
|
2845
|
+
*/function createDisplayTrackWithAudio(videoTrackConstructor,audioTrackConstructor,videoContentHint){return __awaiter$1(this,void 0,void 0,function*(){var stream=yield getDisplayMedia({video:true,audio:true});// eslint-disable-next-line new-cap
|
|
2846
|
+
var videoTrack=new videoTrackConstructor(new MediaStream(stream.getVideoTracks()),videoContentHint);var audioTrack=null;if(stream.getAudioTracks().length>0){// eslint-disable-next-line new-cap
|
|
2847
|
+
audioTrack=new audioTrackConstructor(new MediaStream(stream.getAudioTracks()));}return [videoTrack,audioTrack];});}/**
|
|
2838
2848
|
* Enumerates the media input and output devices available.
|
|
2839
2849
|
*
|
|
2840
2850
|
* @param deviceKind - Optional filter to return a specific device kind.
|
|
@@ -16249,18 +16259,22 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
16249
16259
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty__default["default"](target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16250
16260
|
class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
16251
16261
|
constructor(mediaConnectionConfig, debugId) {
|
|
16262
|
+
var metricsCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : () => {};
|
|
16263
|
+
var closeCallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : () => {};
|
|
16252
16264
|
super();
|
|
16253
16265
|
_defineProperty__default["default"](this, "id", void 0);
|
|
16254
16266
|
_defineProperty__default["default"](this, "debugId", void 0);
|
|
16255
16267
|
_defineProperty__default["default"](this, "multistreamConnection", void 0);
|
|
16256
16268
|
_defineProperty__default["default"](this, "roap", void 0);
|
|
16257
16269
|
_defineProperty__default["default"](this, "sdpNegotiationStarted", false);
|
|
16270
|
+
_defineProperty__default["default"](this, "closeCallback", void 0);
|
|
16258
16271
|
this.debugId = debugId;
|
|
16259
16272
|
this.id = debugId || 'MultistreamRoapMediaConnection';
|
|
16260
16273
|
configureWcmeLogger(debugId);
|
|
16261
16274
|
this.log('constructor()', "config: ".concat(JSON.stringify(mediaConnectionConfig)));
|
|
16262
|
-
this.multistreamConnection = this.createMultistreamConnection(mediaConnectionConfig);
|
|
16275
|
+
this.multistreamConnection = this.createMultistreamConnection(mediaConnectionConfig, metricsCallback);
|
|
16263
16276
|
this.roap = this.createRoap(debugId);
|
|
16277
|
+
this.closeCallback = closeCallback;
|
|
16264
16278
|
}
|
|
16265
16279
|
log(action, description) {
|
|
16266
16280
|
getLogger().info("".concat(this.id, ":").concat(action, " ").concat(description));
|
|
@@ -16268,7 +16282,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
|
16268
16282
|
error(action, description, error) {
|
|
16269
16283
|
getLogger().error("".concat(this.id, ":").concat(action, " ").concat(description, " ").concat(getErrorDescription(error)));
|
|
16270
16284
|
}
|
|
16271
|
-
createMultistreamConnection(mediaConnectionConfig) {
|
|
16285
|
+
createMultistreamConnection(mediaConnectionConfig, metricsCallback) {
|
|
16272
16286
|
this.log('createMultistreamConnection()', 'creating MultistreamConnection with floorControlledPresentation: true');
|
|
16273
16287
|
var multistreamConnection = new MultistreamConnection(_objectSpread(_objectSpread({}, mediaConnectionConfig), {}, {
|
|
16274
16288
|
floorControlledPresentation: true
|
|
@@ -16289,6 +16303,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
|
16289
16303
|
state
|
|
16290
16304
|
});
|
|
16291
16305
|
});
|
|
16306
|
+
multistreamConnection.setMetricsCallback(metricsCallback);
|
|
16292
16307
|
return multistreamConnection;
|
|
16293
16308
|
}
|
|
16294
16309
|
createRoap(debugId, seq) {
|
|
@@ -16312,6 +16327,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
|
16312
16327
|
this.log('close()', 'called');
|
|
16313
16328
|
this.closeMediaConnection();
|
|
16314
16329
|
this.stopRoapSession();
|
|
16330
|
+
this.closeCallback();
|
|
16315
16331
|
}
|
|
16316
16332
|
closeMediaConnection() {
|
|
16317
16333
|
this.multistreamConnection.close();
|
|
@@ -16461,6 +16477,7 @@ exports.H264Codec = H264Codec;
|
|
|
16461
16477
|
exports.LocalCameraTrack = LocalCameraTrack;
|
|
16462
16478
|
exports.LocalDisplayTrack = LocalDisplayTrack;
|
|
16463
16479
|
exports.LocalMicrophoneTrack = LocalMicrophoneTrack;
|
|
16480
|
+
exports.LocalSystemAudioTrack = LocalSystemAudioTrack;
|
|
16464
16481
|
exports.LocalTrack = LocalTrack;
|
|
16465
16482
|
exports.Media = Media;
|
|
16466
16483
|
exports.MultistreamRoapMediaConnection = MultistreamRoapMediaConnection;
|
|
@@ -16473,6 +16490,7 @@ exports.WcmeError = WcmeError;
|
|
|
16473
16490
|
exports.configureWcmeLogger = configureWcmeLogger;
|
|
16474
16491
|
exports.createCameraTrack = createCameraTrack;
|
|
16475
16492
|
exports.createDisplayTrack = createDisplayTrack;
|
|
16493
|
+
exports.createDisplayTrackWithAudio = createDisplayTrackWithAudio;
|
|
16476
16494
|
exports.createMicrophoneTrack = createMicrophoneTrack;
|
|
16477
16495
|
exports.getAudioInputDevices = getAudioInputDevices;
|
|
16478
16496
|
exports.getAudioOutputDevices = getAudioOutputDevices;
|
package/dist/esm/index.js
CHANGED
|
@@ -2824,6 +2824,16 @@ stream.getTracks().forEach(track=>track.stop());return callbackRes;}return callb
|
|
|
2824
2824
|
* @param videoContentHint - An optional parameters to give a hint for the content of the track.
|
|
2825
2825
|
* @returns A Promise that resolves to a LocalDisplayTrack.
|
|
2826
2826
|
*/function createDisplayTrack(constructor,videoContentHint){return __awaiter$1(this,void 0,void 0,function*(){var stream=yield getDisplayMedia({video:true});return new constructor(stream,videoContentHint);});}/**
|
|
2827
|
+
* Creates a display video track and a system audio track.
|
|
2828
|
+
*
|
|
2829
|
+
* @param videoTrackConstructor - Constructor for the local display track.
|
|
2830
|
+
* @param audioTrackConstructor - Constructor for the local system audio track.
|
|
2831
|
+
* @param videoContentHint - An optional parameter to give a hint for the content of the track.
|
|
2832
|
+
* @returns A Promise that resolves to a LocalDisplayTrack and a LocalSystemAudioTrack. If no system
|
|
2833
|
+
* audio is available, the LocalSystemAudioTrack will be resolved as null instead.
|
|
2834
|
+
*/function createDisplayTrackWithAudio(videoTrackConstructor,audioTrackConstructor,videoContentHint){return __awaiter$1(this,void 0,void 0,function*(){var stream=yield getDisplayMedia({video:true,audio:true});// eslint-disable-next-line new-cap
|
|
2835
|
+
var videoTrack=new videoTrackConstructor(new MediaStream(stream.getVideoTracks()),videoContentHint);var audioTrack=null;if(stream.getAudioTracks().length>0){// eslint-disable-next-line new-cap
|
|
2836
|
+
audioTrack=new audioTrackConstructor(new MediaStream(stream.getAudioTracks()));}return [videoTrack,audioTrack];});}/**
|
|
2827
2837
|
* Enumerates the media input and output devices available.
|
|
2828
2838
|
*
|
|
2829
2839
|
* @param deviceKind - Optional filter to return a specific device kind.
|
|
@@ -16238,18 +16248,22 @@ function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (O
|
|
|
16238
16248
|
function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = null != arguments[i] ? arguments[i] : {}; i % 2 ? ownKeys(Object(source), !0).forEach(function (key) { _defineProperty(target, key, source[key]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } return target; }
|
|
16239
16249
|
class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
16240
16250
|
constructor(mediaConnectionConfig, debugId) {
|
|
16251
|
+
var metricsCallback = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : () => {};
|
|
16252
|
+
var closeCallback = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : () => {};
|
|
16241
16253
|
super();
|
|
16242
16254
|
_defineProperty(this, "id", void 0);
|
|
16243
16255
|
_defineProperty(this, "debugId", void 0);
|
|
16244
16256
|
_defineProperty(this, "multistreamConnection", void 0);
|
|
16245
16257
|
_defineProperty(this, "roap", void 0);
|
|
16246
16258
|
_defineProperty(this, "sdpNegotiationStarted", false);
|
|
16259
|
+
_defineProperty(this, "closeCallback", void 0);
|
|
16247
16260
|
this.debugId = debugId;
|
|
16248
16261
|
this.id = debugId || 'MultistreamRoapMediaConnection';
|
|
16249
16262
|
configureWcmeLogger(debugId);
|
|
16250
16263
|
this.log('constructor()', "config: ".concat(JSON.stringify(mediaConnectionConfig)));
|
|
16251
|
-
this.multistreamConnection = this.createMultistreamConnection(mediaConnectionConfig);
|
|
16264
|
+
this.multistreamConnection = this.createMultistreamConnection(mediaConnectionConfig, metricsCallback);
|
|
16252
16265
|
this.roap = this.createRoap(debugId);
|
|
16266
|
+
this.closeCallback = closeCallback;
|
|
16253
16267
|
}
|
|
16254
16268
|
log(action, description) {
|
|
16255
16269
|
getLogger().info("".concat(this.id, ":").concat(action, " ").concat(description));
|
|
@@ -16257,7 +16271,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
|
16257
16271
|
error(action, description, error) {
|
|
16258
16272
|
getLogger().error("".concat(this.id, ":").concat(action, " ").concat(description, " ").concat(getErrorDescription(error)));
|
|
16259
16273
|
}
|
|
16260
|
-
createMultistreamConnection(mediaConnectionConfig) {
|
|
16274
|
+
createMultistreamConnection(mediaConnectionConfig, metricsCallback) {
|
|
16261
16275
|
this.log('createMultistreamConnection()', 'creating MultistreamConnection with floorControlledPresentation: true');
|
|
16262
16276
|
var multistreamConnection = new MultistreamConnection(_objectSpread(_objectSpread({}, mediaConnectionConfig), {}, {
|
|
16263
16277
|
floorControlledPresentation: true
|
|
@@ -16278,6 +16292,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
|
16278
16292
|
state
|
|
16279
16293
|
});
|
|
16280
16294
|
});
|
|
16295
|
+
multistreamConnection.setMetricsCallback(metricsCallback);
|
|
16281
16296
|
return multistreamConnection;
|
|
16282
16297
|
}
|
|
16283
16298
|
createRoap(debugId, seq) {
|
|
@@ -16301,6 +16316,7 @@ class MultistreamRoapMediaConnection extends EventEmitter$4 {
|
|
|
16301
16316
|
this.log('close()', 'called');
|
|
16302
16317
|
this.closeMediaConnection();
|
|
16303
16318
|
this.stopRoapSession();
|
|
16319
|
+
this.closeCallback();
|
|
16304
16320
|
}
|
|
16305
16321
|
closeMediaConnection() {
|
|
16306
16322
|
this.multistreamConnection.close();
|
|
@@ -16443,4 +16459,4 @@ var Media = {
|
|
|
16443
16459
|
isBrowserSupported
|
|
16444
16460
|
};
|
|
16445
16461
|
|
|
16446
|
-
export { ActiveSpeakerInfo, CodecInfo, ConnectionState, ErrorType, Errors, Event$1 as Event, H264Codec, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack, LocalTrack, LocalTrackEvents, Media, MediaContent, MediaFamily, MediaStreamTrackKind, MediaType, MultistreamRoapMediaConnection, PeerConnection, Policy, ReceiveSlot, ReceiveSlotEvents, ReceiverSelectedInfo, RecommendedOpusBitrates, RemoteTrackType, RoapMediaConnection, StreamRequest, WcmeError, configureWcmeLogger, createCameraTrack, createDisplayTrack, createMicrophoneTrack, getAudioInputDevices, getAudioOutputDevices, getDevices, getErrorDescription, getLogger, getMediaFamily, getRecommendedMaxBitrateForFrameSize, getVideoInputDevices, isBrowserSupported, setLogger, setOnDeviceChangeHandler };
|
|
16462
|
+
export { ActiveSpeakerInfo, CodecInfo, ConnectionState, ErrorType, Errors, Event$1 as Event, H264Codec, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack, LocalSystemAudioTrack, LocalTrack, LocalTrackEvents, Media, MediaContent, MediaFamily, MediaStreamTrackKind, MediaType, MultistreamRoapMediaConnection, PeerConnection, Policy, ReceiveSlot, ReceiveSlotEvents, ReceiverSelectedInfo, RecommendedOpusBitrates, RemoteTrackType, RoapMediaConnection, StreamRequest, WcmeError, configureWcmeLogger, createCameraTrack, createDisplayTrack, createDisplayTrackWithAudio, createMicrophoneTrack, getAudioInputDevices, getAudioOutputDevices, getDevices, getErrorDescription, getLogger, getMediaFamily, getRecommendedMaxBitrateForFrameSize, getVideoInputDevices, isBrowserSupported, setLogger, setOnDeviceChangeHandler };
|
|
@@ -1,18 +1,20 @@
|
|
|
1
1
|
/// <reference types="node" />
|
|
2
2
|
import EventEmitter from 'events';
|
|
3
|
-
import { LocalTrack, ReceiveSlot, TransceiverStats, StreamRequest } from '@webex/web-client-media-engine';
|
|
3
|
+
import { LocalTrack, ReceiveSlot, TransceiverStats, StreamRequest, MetricsCallback } from '@webex/web-client-media-engine';
|
|
4
4
|
import { MediaType } from '@webex/json-multistream';
|
|
5
5
|
import { ConnectionState, RoapMessage } from './eventTypes';
|
|
6
6
|
import { MultistreamConnectionConfig } from './config';
|
|
7
|
-
export { ReceiveSlot, ReceiveSlotEvents, StreamRequest, getAudioOutputDevices, getVideoInputDevices, setOnDeviceChangeHandler, WcmeError, AudioDeviceConstraints, VideoDeviceConstraints, LocalTrackEvents, TrackPublishEvent, TrackMuteEvent, TrackEndEvent, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack, LocalTrack, MediaStreamTrackKind, PeerConnection, createCameraTrack, createDisplayTrack, createMicrophoneTrack, getDevices, getAudioInputDevices, getRecommendedMaxBitrateForFrameSize, RecommendedOpusBitrates, } from '@webex/web-client-media-engine';
|
|
7
|
+
export { ReceiveSlot, ReceiveSlotEvents, StreamRequest, MetricsCallback, getAudioOutputDevices, getVideoInputDevices, setOnDeviceChangeHandler, WcmeError, AudioDeviceConstraints, VideoDeviceConstraints, LocalTrackEvents, TrackPublishEvent, TrackMuteEvent, TrackEndEvent, LocalCameraTrack, LocalDisplayTrack, LocalSystemAudioTrack, LocalMicrophoneTrack, LocalTrack, MediaStreamTrackKind, PeerConnection, createCameraTrack, createDisplayTrack, createDisplayTrackWithAudio, createMicrophoneTrack, getDevices, getAudioInputDevices, getRecommendedMaxBitrateForFrameSize, RecommendedOpusBitrates, } from '@webex/web-client-media-engine';
|
|
8
8
|
export { ActiveSpeakerInfo, CodecInfo, getMediaFamily, H264Codec, MediaFamily, MediaType, StreamState, Policy, PolicySpecificInfo, ReceiverSelectedInfo, } from '@webex/json-multistream';
|
|
9
|
+
export declare type CloseCallback = () => void;
|
|
9
10
|
export declare class MultistreamRoapMediaConnection extends EventEmitter {
|
|
10
11
|
private id?;
|
|
11
12
|
private debugId?;
|
|
12
13
|
private multistreamConnection;
|
|
13
14
|
private roap;
|
|
14
15
|
private sdpNegotiationStarted;
|
|
15
|
-
|
|
16
|
+
private closeCallback;
|
|
17
|
+
constructor(mediaConnectionConfig: MultistreamConnectionConfig, debugId?: string, metricsCallback?: MetricsCallback, closeCallback?: CloseCallback);
|
|
16
18
|
private log;
|
|
17
19
|
private error;
|
|
18
20
|
private createMultistreamConnection;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MultistreamRoapMediaConnection.d.ts","sourceRoot":"","sources":["../../../src/MediaConnection/MultistreamRoapMediaConnection.ts"],"names":[],"mappings":";AAAA,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC,OAAO,EACL,UAAU,EAGV,WAAW,EACX,gBAAgB,EAChB,aAAa,
|
|
1
|
+
{"version":3,"file":"MultistreamRoapMediaConnection.d.ts","sourceRoot":"","sources":["../../../src/MediaConnection/MultistreamRoapMediaConnection.ts"],"names":[],"mappings":"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"}
|