@microsoft/live-share-media 0.5.1 → 1.0.0-preview.3
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/.nycrc.json +10 -10
- package/.vscode/launch.json +29 -0
- package/.vscode/settings.json +2 -0
- package/LICENSE +86 -86
- package/README.md +138 -137
- package/bin/IMediaPlayer.d.ts.map +1 -1
- package/bin/{EphemeralMediaSession.d.ts → LiveMediaSession.d.ts} +14 -21
- package/bin/LiveMediaSession.d.ts.map +1 -0
- package/bin/{EphemeralMediaSession.js → LiveMediaSession.js} +39 -37
- package/bin/LiveMediaSession.js.map +1 -0
- package/bin/{EphemeralMediaSessionCoordinator.d.ts → LiveMediaSessionCoordinator.d.ts} +5 -5
- package/bin/LiveMediaSessionCoordinator.d.ts.map +1 -0
- package/bin/{EphemeralMediaSessionCoordinator.js → LiveMediaSessionCoordinator.js} +60 -48
- package/bin/LiveMediaSessionCoordinator.js.map +1 -0
- package/bin/{EphemeralMediaSessionCoordinatorSuspension.d.ts → LiveMediaSessionCoordinatorSuspension.d.ts} +3 -3
- package/bin/LiveMediaSessionCoordinatorSuspension.d.ts.map +1 -0
- package/bin/{EphemeralMediaSessionCoordinatorSuspension.js → LiveMediaSessionCoordinatorSuspension.js} +4 -4
- package/bin/LiveMediaSessionCoordinatorSuspension.js.map +1 -0
- package/bin/MediaPlayerSynchronizer.d.ts +11 -11
- package/bin/MediaPlayerSynchronizer.d.ts.map +1 -1
- package/bin/MediaPlayerSynchronizer.js +132 -75
- package/bin/MediaPlayerSynchronizer.js.map +1 -1
- package/bin/MediaSessionActionThrottler.d.ts +1 -1
- package/bin/MediaSessionActionThrottler.d.ts.map +1 -1
- package/bin/MediaSessionActionThrottler.js.map +1 -1
- package/bin/MediaSessionExtensions.d.ts.map +1 -1
- package/bin/RepeatedActionThrottler.d.ts +2 -2
- package/bin/RepeatedActionThrottler.d.ts.map +1 -1
- package/bin/RepeatedActionThrottler.js +9 -3
- package/bin/RepeatedActionThrottler.js.map +1 -1
- package/bin/VolumeManager.d.ts +84 -0
- package/bin/VolumeManager.d.ts.map +1 -0
- package/bin/VolumeManager.js +175 -0
- package/bin/VolumeManager.js.map +1 -0
- package/bin/index.d.ts +9 -9
- package/bin/index.d.ts.map +1 -1
- package/bin/index.js +4 -4
- package/bin/index.js.map +1 -1
- package/bin/internals/GroupCoordinatorState.d.ts +12 -12
- package/bin/internals/GroupCoordinatorState.d.ts.map +1 -1
- package/bin/internals/GroupCoordinatorState.js +94 -56
- package/bin/internals/GroupCoordinatorState.js.map +1 -1
- package/bin/internals/GroupPlaybackPosition.d.ts +3 -3
- package/bin/internals/GroupPlaybackPosition.d.ts.map +1 -1
- package/bin/internals/GroupPlaybackPosition.js +24 -15
- package/bin/internals/GroupPlaybackPosition.js.map +1 -1
- package/bin/internals/GroupPlaybackTrack.d.ts +4 -4
- package/bin/internals/GroupPlaybackTrack.d.ts.map +1 -1
- package/bin/internals/GroupPlaybackTrack.js +14 -4
- package/bin/internals/GroupPlaybackTrack.js.map +1 -1
- package/bin/internals/GroupPlaybackTrackData.d.ts +3 -3
- package/bin/internals/GroupPlaybackTrackData.d.ts.map +1 -1
- package/bin/internals/GroupPlaybackTrackData.js +8 -4
- package/bin/internals/GroupPlaybackTrackData.js.map +1 -1
- package/bin/internals/GroupTransportState.d.ts +5 -5
- package/bin/internals/GroupTransportState.d.ts.map +1 -1
- package/bin/internals/GroupTransportState.js +28 -13
- package/bin/internals/GroupTransportState.js.map +1 -1
- package/bin/internals/consts.d.ts.map +1 -1
- package/bin/internals/consts.js +54 -54
- package/bin/internals/consts.js.map +1 -1
- package/bin/internals/index.d.ts +6 -6
- package/package.json +38 -38
- package/src/IMediaPlayer.ts +29 -21
- package/src/LiveMediaSession.ts +300 -0
- package/src/LiveMediaSessionCoordinator.ts +621 -0
- package/src/{EphemeralMediaSessionCoordinatorSuspension.ts → LiveMediaSessionCoordinatorSuspension.ts} +39 -31
- package/src/MediaPlayerSynchronizer.ts +627 -450
- package/src/MediaSessionActionThrottler.ts +16 -14
- package/src/MediaSessionExtensions.ts +52 -42
- package/src/RepeatedActionThrottler.ts +74 -56
- package/src/VolumeManager.ts +197 -0
- package/src/index.ts +14 -15
- package/src/internals/GroupCoordinatorState.ts +606 -446
- package/src/internals/GroupPlaybackPosition.ts +227 -193
- package/src/internals/GroupPlaybackTrack.ts +176 -147
- package/src/internals/GroupPlaybackTrackData.ts +98 -90
- package/src/internals/GroupTransportState.ts +157 -127
- package/src/internals/consts.ts +98 -80
- package/src/internals/index.ts +11 -11
- package/src/test/GroupPlaybackPosition.spec.ts +600 -340
- package/src/test/GroupPlaybackTrack.spec.ts +122 -66
- package/src/test/SharedMediaSession.spec.ts +149 -113
- package/src/test/SharedMediaSessionCoordinator.spec.ts +271 -231
- package/src/test/VolumeManager.spec.ts +219 -0
- package/tsconfig.build.json +8 -8
- package/tsconfig.json +76 -75
- package/bin/EphemeralMediaSession.d.ts.map +0 -1
- package/bin/EphemeralMediaSession.js.map +0 -1
- package/bin/EphemeralMediaSessionCoordinator.d.ts.map +0 -1
- package/bin/EphemeralMediaSessionCoordinator.js.map +0 -1
- package/bin/EphemeralMediaSessionCoordinatorSuspension.d.ts.map +0 -1
- package/bin/EphemeralMediaSessionCoordinatorSuspension.js.map +0 -1
- package/bin/VolumeLimiter.d.ts +0 -70
- package/bin/VolumeLimiter.d.ts.map +0 -1
- package/bin/VolumeLimiter.js +0 -170
- package/bin/VolumeLimiter.js.map +0 -1
- package/src/EphemeralMediaSession.ts +0 -248
- package/src/EphemeralMediaSessionCoordinator.ts +0 -461
- package/src/VolumeLimiter.ts +0 -182
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveMediaSession.d.ts","sourceRoot":"","sources":["../src/LiveMediaSession.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAEH,0BAA0B,EAE7B,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACH,2BAA2B,EAC3B,iBAAiB,EACpB,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,UAAU;IAC5C,OAAO,CAAC,gBAAgB,CACU;IAClC,OAAO,CAAC,OAAO,CAAC,CAAsB;IACtC,OAAO,CAAC,0BAA0B,CAAC,CAA0B;IAC7D,OAAO,CAAC,YAAY,CAAC,CAA8B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAClB;IACd,OAAO,CAAC,cAAc,CAAC,CAA0B;IAGjD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAa;IAEpC;;OAEG;IACH,gBAAuB,QAAQ,+CAA+C;IAE9E;;OAEG;IACH,gBAAuB,OAAO,0FAK5B;IAEF;;;;;;;;;;;;OAYG;IACH,IAAW,eAAe,IAAI,2BAA2B,CAExD;IAED,IAAW,eAAe,CAAC,KAAK,EAAE,2BAA2B,EAE5D;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,OAAO,CAElC;IAED;;;OAGG;IACH,IAAW,SAAS,IAAI,OAAO,CAE9B;IAED;;OAEG;IACH,IAAW,WAAW,IAAI,2BAA2B,CAEpD;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,mBAAmB,CAEvC;IAED;;;;OAIG;IACI,UAAU,CACb,0BAA0B,CAAC,EAAE,eAAe,EAAE,GAC/C,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;OAIG;IACI,gBAAgB,CACnB,MAAM,EAAE,0BAA0B,EAClC,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAC1C,IAAI;IAUP;;;OAGG;IACI,4BAA4B,CAAC,OAAO,EAAE,MAAM,iBAAiB;IAIpE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,uBAAuB;cAoCjD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAyE/C,OAAO,CAAC,iBAAiB;IAuBzB,OAAO,CAAC,qBAAqB;IAU7B,OAAO,CAAC,cAAc;CAQzB"}
|
|
@@ -13,18 +13,18 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
|
|
|
13
13
|
});
|
|
14
14
|
};
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
|
-
exports.
|
|
16
|
+
exports.LiveMediaSession = void 0;
|
|
17
17
|
const aqueduct_1 = require("@fluidframework/aqueduct");
|
|
18
18
|
const live_share_1 = require("@microsoft/live-share");
|
|
19
19
|
const MediaPlayerSynchronizer_1 = require("./MediaPlayerSynchronizer");
|
|
20
20
|
const internals_1 = require("./internals");
|
|
21
21
|
const MediaSessionExtensions_1 = require("./MediaSessionExtensions");
|
|
22
|
-
const
|
|
22
|
+
const LiveMediaSessionCoordinator_1 = require("./LiveMediaSessionCoordinator");
|
|
23
23
|
const RepeatedActionThrottler_1 = require("./RepeatedActionThrottler");
|
|
24
24
|
/**
|
|
25
|
-
*
|
|
25
|
+
* Live fluid object that synchronizes media playback across multiple clients.
|
|
26
26
|
*/
|
|
27
|
-
class
|
|
27
|
+
class LiveMediaSession extends aqueduct_1.DataObject {
|
|
28
28
|
constructor() {
|
|
29
29
|
super(...arguments);
|
|
30
30
|
this._actionThrottler = new RepeatedActionThrottler_1.RepeatedActionThrottler();
|
|
@@ -36,7 +36,7 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
36
36
|
* local sync behavior.
|
|
37
37
|
*
|
|
38
38
|
* @remarks
|
|
39
|
-
* The `
|
|
39
|
+
* The `LiveMediaCoordinator` is fairly aggressive at wanting to keep the local media player
|
|
40
40
|
* in sync with the rest of the group. This aggressiveness can result in the coordinator sending
|
|
41
41
|
* new sync actions before the local player has finished responding to the previous sync action.
|
|
42
42
|
* The `ActionThrottler` gives apps fine grain control over how aggressive they want sync to be.
|
|
@@ -86,15 +86,6 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
86
86
|
initialize(acceptTransportChangesFrom) {
|
|
87
87
|
return this.coordinator.initialize(acceptTransportChangesFrom);
|
|
88
88
|
}
|
|
89
|
-
/**
|
|
90
|
-
* @deprecated initialize should be used instead
|
|
91
|
-
* initialize the object.
|
|
92
|
-
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
93
|
-
* operations like play/pause/seek/setTrack.
|
|
94
|
-
*/
|
|
95
|
-
start(acceptTransportChangesFrom) {
|
|
96
|
-
return this.initialize(acceptTransportChangesFrom);
|
|
97
|
-
}
|
|
98
89
|
/**
|
|
99
90
|
* Registers an action handler with the session.
|
|
100
91
|
* @param action Name of the action to register a handler for.
|
|
@@ -138,7 +129,8 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
138
129
|
// Send position update if interval hit
|
|
139
130
|
const now = new Date().getTime();
|
|
140
131
|
const delta = (now - this._lastUpdateTime) / 1000;
|
|
141
|
-
if (this.coordinator.isInitialized &&
|
|
132
|
+
if (this.coordinator.isInitialized &&
|
|
133
|
+
delta >= this.coordinator.positionUpdateInterval) {
|
|
142
134
|
this._lastUpdateTime = now;
|
|
143
135
|
this.coordinator.sendPositionUpdate(state);
|
|
144
136
|
}
|
|
@@ -150,34 +142,42 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
150
142
|
}
|
|
151
143
|
hasInitialized() {
|
|
152
144
|
return __awaiter(this, void 0, void 0, function* () {
|
|
153
|
-
this._logger = new live_share_1.
|
|
145
|
+
this._logger = new live_share_1.LiveTelemetryLogger(this.runtime);
|
|
154
146
|
// Create coordinator and listen for triggered actions
|
|
155
|
-
this._coordinator = new
|
|
147
|
+
this._coordinator = new LiveMediaSessionCoordinator_1.LiveMediaSessionCoordinator(this.runtime, () => this.getCurrentPlayerState());
|
|
156
148
|
this._coordinator.on(MediaSessionExtensions_1.MediaSessionCoordinatorEvents.triggeraction, (event) => {
|
|
157
149
|
// Pre-process actions
|
|
158
150
|
const details = event.details;
|
|
159
|
-
const seekTime = typeof details.seekTime ==
|
|
151
|
+
const seekTime = typeof details.seekTime == "number" ? details.seekTime : -1;
|
|
160
152
|
switch (details.action) {
|
|
161
|
-
case
|
|
162
|
-
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.PlayAction, null, {
|
|
153
|
+
case "play":
|
|
154
|
+
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.PlayAction, null, {
|
|
155
|
+
position: seekTime,
|
|
156
|
+
});
|
|
163
157
|
break;
|
|
164
|
-
case
|
|
165
|
-
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.PauseAction, null, {
|
|
158
|
+
case "pause":
|
|
159
|
+
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.PauseAction, null, {
|
|
160
|
+
position: seekTime,
|
|
161
|
+
});
|
|
166
162
|
break;
|
|
167
|
-
case
|
|
168
|
-
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.SeekToAction, null, {
|
|
163
|
+
case "seekto":
|
|
164
|
+
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.SeekToAction, null, {
|
|
165
|
+
position: seekTime,
|
|
166
|
+
});
|
|
169
167
|
break;
|
|
170
|
-
case
|
|
168
|
+
case "settrack":
|
|
171
169
|
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.SetTrackAction);
|
|
172
170
|
break;
|
|
173
|
-
case
|
|
171
|
+
case "datachange":
|
|
174
172
|
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.DataChangeAction);
|
|
175
173
|
break;
|
|
176
|
-
case
|
|
174
|
+
case "catchup":
|
|
177
175
|
// Default to seekto if catchup not implemented
|
|
178
|
-
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.CatchUpAction, null, {
|
|
179
|
-
|
|
180
|
-
|
|
176
|
+
this.logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaSession.CatchUpAction, null, {
|
|
177
|
+
position: seekTime,
|
|
178
|
+
});
|
|
179
|
+
if (!this._actionHandlers.has("catchup")) {
|
|
180
|
+
details.action = "seekto";
|
|
181
181
|
}
|
|
182
182
|
break;
|
|
183
183
|
}
|
|
@@ -190,14 +190,16 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
190
190
|
// Was a wait point hit?
|
|
191
191
|
if (state.positionState && this.coordinator.isInitialized) {
|
|
192
192
|
const waitPoint = this.coordinator.findNextWaitPoint();
|
|
193
|
-
if (waitPoint &&
|
|
193
|
+
if (waitPoint &&
|
|
194
|
+
state.positionState.position != undefined &&
|
|
195
|
+
state.positionState.position >= waitPoint.position) {
|
|
194
196
|
// Ensure handler registered
|
|
195
|
-
if (!this._actionHandlers.has(
|
|
197
|
+
if (!this._actionHandlers.has("wait")) {
|
|
196
198
|
throw new Error(`SharedMediaSession: wait point hit but no 'wait' action registered.`);
|
|
197
199
|
}
|
|
198
200
|
// Begin suspension for wait point
|
|
199
201
|
const suspension = this.coordinator.beginSuspension(waitPoint);
|
|
200
|
-
this.dispatchAction({ action:
|
|
202
|
+
this.dispatchAction({ action: "wait", suspension: suspension });
|
|
201
203
|
}
|
|
202
204
|
}
|
|
203
205
|
}
|
|
@@ -214,13 +216,13 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
214
216
|
}
|
|
215
217
|
}
|
|
216
218
|
}
|
|
217
|
-
exports.
|
|
219
|
+
exports.LiveMediaSession = LiveMediaSession;
|
|
218
220
|
/**
|
|
219
221
|
* The objects fluid type name.
|
|
220
222
|
*/
|
|
221
|
-
|
|
223
|
+
LiveMediaSession.TypeName = `@microsoft/fluid-media:SharedMediaSession`;
|
|
222
224
|
/**
|
|
223
225
|
* The objects fluid type factory.
|
|
224
226
|
*/
|
|
225
|
-
|
|
226
|
-
//# sourceMappingURL=
|
|
227
|
+
LiveMediaSession.factory = new aqueduct_1.DataObjectFactory(LiveMediaSession.TypeName, LiveMediaSession, [], {});
|
|
228
|
+
//# sourceMappingURL=LiveMediaSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveMediaSession.js","sourceRoot":"","sources":["../src/LiveMediaSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
4
|
*/
|
|
5
5
|
/// <reference types="node" />
|
|
6
|
-
import { IRuntimeSignaler, UserMeetingRole } from
|
|
7
|
-
import { CoordinationWaitPoint, ExtendedMediaMetadata, ExtendedMediaSessionPlaybackState, MediaSessionCoordinatorSuspension } from
|
|
6
|
+
import { IRuntimeSignaler, UserMeetingRole } from "@microsoft/live-share";
|
|
7
|
+
import { CoordinationWaitPoint, ExtendedMediaMetadata, ExtendedMediaSessionPlaybackState, MediaSessionCoordinatorSuspension } from "./MediaSessionExtensions";
|
|
8
8
|
import EventEmitter from "events";
|
|
9
9
|
/**
|
|
10
10
|
* Most recent state of the media session.
|
|
@@ -31,11 +31,11 @@ export interface IMediaPlayerState {
|
|
|
31
31
|
positionState?: MediaPositionState;
|
|
32
32
|
}
|
|
33
33
|
/**
|
|
34
|
-
* The `
|
|
34
|
+
* The `LiveMediaSessionCoordinator` tracks the playback & position state of all other
|
|
35
35
|
* clients being synchronized with. It is responsible for keeping the local media player
|
|
36
36
|
* in sync with the group.
|
|
37
37
|
*/
|
|
38
|
-
export declare class
|
|
38
|
+
export declare class LiveMediaSessionCoordinator extends EventEmitter {
|
|
39
39
|
private readonly _runtime;
|
|
40
40
|
private readonly _logger;
|
|
41
41
|
private readonly _getPlayerState;
|
|
@@ -225,4 +225,4 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
225
225
|
protected createChildren(acceptTransportChangesFrom?: UserMeetingRole[]): Promise<void>;
|
|
226
226
|
private getPlayerPosition;
|
|
227
227
|
}
|
|
228
|
-
//# sourceMappingURL=
|
|
228
|
+
//# sourceMappingURL=LiveMediaSessionCoordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveMediaSessionCoordinator.d.ts","sourceRoot":"","sources":["../src/LiveMediaSessionCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -16,17 +16,17 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
16
16
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
17
17
|
};
|
|
18
18
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
|
-
exports.
|
|
19
|
+
exports.LiveMediaSessionCoordinator = void 0;
|
|
20
20
|
const live_share_1 = require("@microsoft/live-share");
|
|
21
21
|
const internals_1 = require("./internals");
|
|
22
|
-
const
|
|
22
|
+
const LiveMediaSessionCoordinatorSuspension_1 = require("./LiveMediaSessionCoordinatorSuspension");
|
|
23
23
|
const events_1 = __importDefault(require("events"));
|
|
24
24
|
/**
|
|
25
|
-
* The `
|
|
25
|
+
* The `LiveMediaSessionCoordinator` tracks the playback & position state of all other
|
|
26
26
|
* clients being synchronized with. It is responsible for keeping the local media player
|
|
27
27
|
* in sync with the group.
|
|
28
28
|
*/
|
|
29
|
-
class
|
|
29
|
+
class LiveMediaSessionCoordinator extends events_1.default {
|
|
30
30
|
/**
|
|
31
31
|
* @hidden
|
|
32
32
|
* Applications shouldn't directly create new coordinator instances.
|
|
@@ -87,7 +87,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
87
87
|
*/
|
|
88
88
|
this.canSetTrackData = true;
|
|
89
89
|
this._runtime = runtime;
|
|
90
|
-
this._logger = new live_share_1.
|
|
90
|
+
this._logger = new live_share_1.LiveTelemetryLogger(runtime);
|
|
91
91
|
this._getPlayerState = getPlayerState;
|
|
92
92
|
}
|
|
93
93
|
/**
|
|
@@ -134,13 +134,13 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
134
134
|
play() {
|
|
135
135
|
var _a;
|
|
136
136
|
if (!this._hasInitialized) {
|
|
137
|
-
throw new Error(`
|
|
137
|
+
throw new Error(`LiveMediaSessionCoordinator.play() called before initialize() called.`);
|
|
138
138
|
}
|
|
139
139
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
140
|
-
throw new Error(`
|
|
140
|
+
throw new Error(`LiveMediaSessionCoordinator.play() called before MediaSession.metadata assigned.`);
|
|
141
141
|
}
|
|
142
142
|
if (!this.canPlayPause) {
|
|
143
|
-
throw new Error(`
|
|
143
|
+
throw new Error(`LiveMediaSessionCoordinator.play() operation blocked.`);
|
|
144
144
|
}
|
|
145
145
|
// Get projected position
|
|
146
146
|
const position = this.getPlayerPosition();
|
|
@@ -148,7 +148,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
148
148
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.PlayCalled, null, { position: position });
|
|
149
149
|
this._playEvent.sendEvent({
|
|
150
150
|
track: this._groupState.playbackTrack.current,
|
|
151
|
-
position: position
|
|
151
|
+
position: position,
|
|
152
152
|
});
|
|
153
153
|
}
|
|
154
154
|
/**
|
|
@@ -161,13 +161,13 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
161
161
|
pause() {
|
|
162
162
|
var _a;
|
|
163
163
|
if (!this._hasInitialized) {
|
|
164
|
-
throw new Error(`
|
|
164
|
+
throw new Error(`LiveMediaSessionCoordinator.pause() called before initialize() called.`);
|
|
165
165
|
}
|
|
166
166
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
167
|
-
throw new Error(`
|
|
167
|
+
throw new Error(`LiveMediaSessionCoordinator.pause() called before MediaSession.metadata assigned.`);
|
|
168
168
|
}
|
|
169
169
|
if (!this.canPlayPause) {
|
|
170
|
-
throw new Error(`
|
|
170
|
+
throw new Error(`LiveMediaSessionCoordinator.pause() operation blocked.`);
|
|
171
171
|
}
|
|
172
172
|
// Get projected position
|
|
173
173
|
const position = this.getPlayerPosition();
|
|
@@ -175,7 +175,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
175
175
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.PauseCalled, null, { position: position });
|
|
176
176
|
this._pauseEvent.sendEvent({
|
|
177
177
|
track: this._groupState.playbackTrack.current,
|
|
178
|
-
position: position
|
|
178
|
+
position: position,
|
|
179
179
|
});
|
|
180
180
|
}
|
|
181
181
|
/**
|
|
@@ -189,19 +189,19 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
189
189
|
seekTo(time) {
|
|
190
190
|
var _a;
|
|
191
191
|
if (!this._hasInitialized) {
|
|
192
|
-
throw new Error(`
|
|
192
|
+
throw new Error(`LiveMediaSessionCoordinator.seekTo() called before initialize() called.`);
|
|
193
193
|
}
|
|
194
194
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
195
|
-
throw new Error(`
|
|
195
|
+
throw new Error(`LiveMediaSessionCoordinator.seekTo() called before MediaSession.metadata assigned.`);
|
|
196
196
|
}
|
|
197
197
|
if (!this.canSeek) {
|
|
198
|
-
throw new Error(`
|
|
198
|
+
throw new Error(`LiveMediaSessionCoordinator.seekTo() operation blocked.`);
|
|
199
199
|
}
|
|
200
200
|
// Send transport command
|
|
201
201
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.SeekToCalled, null, { position: time });
|
|
202
202
|
this._seekToEvent.sendEvent({
|
|
203
203
|
track: this._groupState.playbackTrack.current,
|
|
204
|
-
position: time
|
|
204
|
+
position: time,
|
|
205
205
|
});
|
|
206
206
|
}
|
|
207
207
|
/**
|
|
@@ -215,16 +215,16 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
215
215
|
*/
|
|
216
216
|
setTrack(metadata, waitPoints) {
|
|
217
217
|
if (!this._hasInitialized) {
|
|
218
|
-
throw new Error(`
|
|
218
|
+
throw new Error(`LiveMediaSessionCoordinator.setTrack() called before initialize() called.`);
|
|
219
219
|
}
|
|
220
220
|
if (!this.canSetTrack) {
|
|
221
|
-
throw new Error(`
|
|
221
|
+
throw new Error(`LiveMediaSessionCoordinator.setTrack() operation blocked.`);
|
|
222
222
|
}
|
|
223
223
|
// Send transport command
|
|
224
224
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.SetTrackCalled);
|
|
225
225
|
this._setTrackEvent.sendEvent({
|
|
226
226
|
metadata: metadata,
|
|
227
|
-
waitPoints: waitPoints || []
|
|
227
|
+
waitPoints: waitPoints || [],
|
|
228
228
|
});
|
|
229
229
|
}
|
|
230
230
|
/**
|
|
@@ -240,15 +240,15 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
240
240
|
*/
|
|
241
241
|
setTrackData(data) {
|
|
242
242
|
if (!this._hasInitialized) {
|
|
243
|
-
throw new Error(`
|
|
243
|
+
throw new Error(`LiveMediaSessionCoordinator.setTrackData() called before initialize() called.`);
|
|
244
244
|
}
|
|
245
245
|
if (!this.canSetTrackData) {
|
|
246
|
-
throw new Error(`
|
|
246
|
+
throw new Error(`LiveMediaSessionCoordinator.setTrackData() operation blocked.`);
|
|
247
247
|
}
|
|
248
248
|
// Send transport command
|
|
249
249
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.SetTrackDataCalled);
|
|
250
250
|
this._setTrackDataEvent.sendEvent({
|
|
251
|
-
data: data
|
|
251
|
+
data: data,
|
|
252
252
|
});
|
|
253
253
|
}
|
|
254
254
|
/**
|
|
@@ -278,14 +278,17 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
278
278
|
beginSuspension(waitPoint) {
|
|
279
279
|
var _a;
|
|
280
280
|
if (!this._hasInitialized) {
|
|
281
|
-
throw new Error(`
|
|
281
|
+
throw new Error(`LiveMediaSessionCoordinator.beginSuspension() called before initialize() called.`);
|
|
282
282
|
}
|
|
283
283
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
284
|
-
throw new Error(`
|
|
284
|
+
throw new Error(`LiveMediaSessionCoordinator.beginSuspension() called before MediaSession.metadata assigned.`);
|
|
285
285
|
}
|
|
286
286
|
// Tell group state that suspension is started
|
|
287
287
|
if (waitPoint) {
|
|
288
|
-
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.BeginSuspensionAndWait, null, {
|
|
288
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.BeginSuspensionAndWait, null, {
|
|
289
|
+
position: waitPoint.position,
|
|
290
|
+
maxClients: waitPoint.maxClients,
|
|
291
|
+
});
|
|
289
292
|
this._lastWaitPoint = waitPoint;
|
|
290
293
|
this._groupState.beginSuspension(waitPoint);
|
|
291
294
|
}
|
|
@@ -294,16 +297,21 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
294
297
|
this._groupState.beginSuspension();
|
|
295
298
|
}
|
|
296
299
|
// Return new suspension object
|
|
297
|
-
return new
|
|
300
|
+
return new LiveMediaSessionCoordinatorSuspension_1.LiveMediaSessionCoordinatorSuspension(waitPoint, (time) => {
|
|
298
301
|
var _a, _b;
|
|
299
302
|
if (waitPoint) {
|
|
300
|
-
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.EndSuspensionAndWait, null, {
|
|
303
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.EndSuspensionAndWait, null, {
|
|
304
|
+
position: waitPoint.position,
|
|
305
|
+
maxClients: waitPoint.maxClients,
|
|
306
|
+
});
|
|
301
307
|
}
|
|
302
308
|
else {
|
|
303
309
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.EndSuspension);
|
|
304
310
|
}
|
|
305
311
|
this._groupState.endSuspension(time == undefined);
|
|
306
|
-
if (time != undefined &&
|
|
312
|
+
if (time != undefined &&
|
|
313
|
+
!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.isSuspended) &&
|
|
314
|
+
!((_b = this._groupState) === null || _b === void 0 ? void 0 : _b.isWaiting)) {
|
|
307
315
|
// Seek to new position
|
|
308
316
|
this.seekTo(Math.max(time, 0.0));
|
|
309
317
|
}
|
|
@@ -323,7 +331,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
323
331
|
initialize(acceptTransportChangesFrom) {
|
|
324
332
|
return __awaiter(this, void 0, void 0, function* () {
|
|
325
333
|
if (this._hasInitialized) {
|
|
326
|
-
throw new Error(`
|
|
334
|
+
throw new Error(`LiveMediaSessionCoordinator.initialize() already initialized.`);
|
|
327
335
|
}
|
|
328
336
|
// Create children
|
|
329
337
|
yield this.createChildren(acceptTransportChangesFrom);
|
|
@@ -336,7 +344,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
336
344
|
*/
|
|
337
345
|
findNextWaitPoint() {
|
|
338
346
|
var _a;
|
|
339
|
-
return ((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.findNextWaitPoint(this._lastWaitPoint)) || null;
|
|
347
|
+
return (((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.findNextWaitPoint(this._lastWaitPoint)) || null);
|
|
340
348
|
}
|
|
341
349
|
/**
|
|
342
350
|
* @hidden
|
|
@@ -345,7 +353,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
345
353
|
sendPositionUpdate(state) {
|
|
346
354
|
var _a;
|
|
347
355
|
if (!this._hasInitialized) {
|
|
348
|
-
throw new Error(`
|
|
356
|
+
throw new Error(`LiveMediaSessionCoordinator.sendPositionUpdate() called before initialize() called.`);
|
|
349
357
|
}
|
|
350
358
|
// Send position update event
|
|
351
359
|
const evt = this._groupState.createPositionUpdateEvent(state);
|
|
@@ -354,25 +362,27 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
354
362
|
createChildren(acceptTransportChangesFrom) {
|
|
355
363
|
return __awaiter(this, void 0, void 0, function* () {
|
|
356
364
|
// Create event scopes
|
|
357
|
-
const scope = new live_share_1.
|
|
358
|
-
const unrestrictedScope = new live_share_1.
|
|
365
|
+
const scope = new live_share_1.LiveEventScope(this._runtime, acceptTransportChangesFrom);
|
|
366
|
+
const unrestrictedScope = new live_share_1.LiveEventScope(this._runtime);
|
|
359
367
|
// Initialize internal coordinator state
|
|
360
368
|
this._groupState = new internals_1.GroupCoordinatorState(this._runtime, this._maxPlaybackDrift, this._positionUpdateInterval, this._getPlayerState);
|
|
361
|
-
this._groupState.on(internals_1.GroupCoordinatorStateEvents.triggeraction, evt => this.emit(evt.name, evt));
|
|
369
|
+
this._groupState.on(internals_1.GroupCoordinatorStateEvents.triggeraction, (evt) => this.emit(evt.name, evt));
|
|
362
370
|
// Listen for track changes
|
|
363
|
-
this._setTrackEvent = new live_share_1.
|
|
364
|
-
this._setTrackDataEvent = new live_share_1.
|
|
371
|
+
this._setTrackEvent = new live_share_1.LiveEventTarget(scope, "setTrack", (event, local) => this._groupState.handleSetTrack(event, local));
|
|
372
|
+
this._setTrackDataEvent = new live_share_1.LiveEventTarget(scope, "setTrackData", (event, local) => this._groupState.handleSetTrackData(event, local));
|
|
365
373
|
// Listen for transport commands
|
|
366
|
-
this._playEvent = new live_share_1.
|
|
367
|
-
this._pauseEvent = new live_share_1.
|
|
368
|
-
this._seekToEvent = new live_share_1.
|
|
374
|
+
this._playEvent = new live_share_1.LiveEventTarget(scope, "play", (event, local) => this._groupState.handleTransportCommand(event, local));
|
|
375
|
+
this._pauseEvent = new live_share_1.LiveEventTarget(scope, "pause", (event, local) => this._groupState.handleTransportCommand(event, local));
|
|
376
|
+
this._seekToEvent = new live_share_1.LiveEventTarget(scope, "seekTo", (event, local) => this._groupState.handleTransportCommand(event, local));
|
|
369
377
|
// Listen for position updates
|
|
370
|
-
this._positionUpdateEvent = new live_share_1.
|
|
378
|
+
this._positionUpdateEvent = new live_share_1.LiveEventTarget(unrestrictedScope, "positionUpdate", (event, local) => this._groupState.handlePositionUpdate(event, local));
|
|
371
379
|
// Listen for joined event
|
|
372
|
-
this._joinedEvent = new live_share_1.
|
|
380
|
+
this._joinedEvent = new live_share_1.LiveEventTarget(unrestrictedScope, "joined", (evt, local) => {
|
|
373
381
|
var _a;
|
|
374
382
|
// Immediately send a position update
|
|
375
|
-
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.RemoteJoinReceived, null, {
|
|
383
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.SessionCoordinator.RemoteJoinReceived, null, {
|
|
384
|
+
correlationId: live_share_1.LiveTelemetryLogger.formatCorrelationId(evt.clientId, evt.timestamp),
|
|
385
|
+
});
|
|
376
386
|
const state = this._getPlayerState();
|
|
377
387
|
const update = this._groupState.createPositionUpdateEvent(state);
|
|
378
388
|
(_a = this._positionUpdateEvent) === null || _a === void 0 ? void 0 : _a.sendEvent(update);
|
|
@@ -384,13 +394,15 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
384
394
|
getPlayerPosition() {
|
|
385
395
|
const { positionState, playbackState } = this._getPlayerState();
|
|
386
396
|
switch (playbackState) {
|
|
387
|
-
case
|
|
388
|
-
case
|
|
397
|
+
case "none":
|
|
398
|
+
case "ended":
|
|
389
399
|
return 0.0;
|
|
390
400
|
default:
|
|
391
|
-
return positionState && positionState.position != undefined
|
|
401
|
+
return positionState && positionState.position != undefined
|
|
402
|
+
? positionState.position
|
|
403
|
+
: 0.0;
|
|
392
404
|
}
|
|
393
405
|
}
|
|
394
406
|
}
|
|
395
|
-
exports.
|
|
396
|
-
//# sourceMappingURL=
|
|
407
|
+
exports.LiveMediaSessionCoordinator = LiveMediaSessionCoordinator;
|
|
408
|
+
//# sourceMappingURL=LiveMediaSessionCoordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveMediaSessionCoordinator.js","sourceRoot":"","sources":["../src/LiveMediaSessionCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
4
|
*/
|
|
5
|
-
import { MediaSessionCoordinatorSuspension, CoordinationWaitPoint } from
|
|
6
|
-
export declare class
|
|
5
|
+
import { MediaSessionCoordinatorSuspension, CoordinationWaitPoint } from "./MediaSessionExtensions";
|
|
6
|
+
export declare class LiveMediaSessionCoordinatorSuspension implements MediaSessionCoordinatorSuspension {
|
|
7
7
|
private _waitPoint?;
|
|
8
8
|
private _onEnd;
|
|
9
9
|
constructor(waitPoint: CoordinationWaitPoint | undefined, onEnd: (seekTo?: number) => void);
|
|
@@ -17,4 +17,4 @@ export declare class EphemeralMediaSessionCoordinatorSuspension implements Media
|
|
|
17
17
|
*/
|
|
18
18
|
end(seekTo?: number): void;
|
|
19
19
|
}
|
|
20
|
-
//# sourceMappingURL=
|
|
20
|
+
//# sourceMappingURL=LiveMediaSessionCoordinatorSuspension.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveMediaSessionCoordinatorSuspension.d.ts","sourceRoot":"","sources":["../src/LiveMediaSessionCoordinatorSuspension.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EACH,iCAAiC,EACjC,qBAAqB,EACxB,MAAM,0BAA0B,CAAC;AAElC,qBAAa,qCACT,YAAW,iCAAiC;IAE5C,OAAO,CAAC,UAAU,CAAC,CAAwB;IAC3C,OAAO,CAAC,MAAM,CAA4B;gBAGtC,SAAS,EAAE,qBAAqB,GAAG,SAAS,EAC5C,KAAK,EAAE,CAAC,MAAM,CAAC,EAAE,MAAM,KAAK,IAAI;IAMpC;;OAEG;IACH,IAAW,SAAS,IAAI,qBAAqB,GAAG,SAAS,CAExD;IAED;;;OAGG;IACI,GAAG,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;CAGpC"}
|
|
@@ -4,8 +4,8 @@
|
|
|
4
4
|
* Licensed under the Microsoft Live Share SDK License.
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
-
exports.
|
|
8
|
-
class
|
|
7
|
+
exports.LiveMediaSessionCoordinatorSuspension = void 0;
|
|
8
|
+
class LiveMediaSessionCoordinatorSuspension {
|
|
9
9
|
constructor(waitPoint, onEnd) {
|
|
10
10
|
this._waitPoint = waitPoint;
|
|
11
11
|
this._onEnd = onEnd;
|
|
@@ -24,5 +24,5 @@ class EphemeralMediaSessionCoordinatorSuspension {
|
|
|
24
24
|
this._onEnd(seekTo);
|
|
25
25
|
}
|
|
26
26
|
}
|
|
27
|
-
exports.
|
|
28
|
-
//# sourceMappingURL=
|
|
27
|
+
exports.LiveMediaSessionCoordinatorSuspension = LiveMediaSessionCoordinatorSuspension;
|
|
28
|
+
//# sourceMappingURL=LiveMediaSessionCoordinatorSuspension.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"LiveMediaSessionCoordinatorSuspension.js","sourceRoot":"","sources":["../src/LiveMediaSessionCoordinatorSuspension.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAOH,MAAa,qCAAqC;IAM9C,YACI,SAA4C,EAC5C,KAAgC;QAEhC,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;QAC5B,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;;OAGG;IACI,GAAG,CAAC,MAAe;QACtB,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACxB,CAAC;CACJ;AA5BD,sFA4BC"}
|
|
@@ -1,14 +1,14 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
1
2
|
/**
|
|
2
3
|
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
4
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
5
|
*/
|
|
5
|
-
|
|
6
|
-
import
|
|
7
|
-
import
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
11
|
-
import { IMediaPlayer } from './IMediaPlayer';
|
|
6
|
+
import { IEvent } from "@microsoft/live-share";
|
|
7
|
+
import EventEmitter from "events";
|
|
8
|
+
import { ExtendedMediaMetadata, CoordinationWaitPoint, ExtendedMediaSessionActionDetails } from "./MediaSessionExtensions";
|
|
9
|
+
import { VolumeManager } from "./VolumeManager";
|
|
10
|
+
import { LiveMediaSession } from "./LiveMediaSession";
|
|
11
|
+
import { IMediaPlayer } from "./IMediaPlayer";
|
|
12
12
|
/**
|
|
13
13
|
* Event data returned by `MediaPlayerSynchronizer` object.
|
|
14
14
|
*/
|
|
@@ -48,7 +48,7 @@ export declare class MediaPlayerSynchronizer extends EventEmitter {
|
|
|
48
48
|
private _logger;
|
|
49
49
|
private _player;
|
|
50
50
|
private _mediaSession;
|
|
51
|
-
private
|
|
51
|
+
private _volumeManager;
|
|
52
52
|
private _onEnd?;
|
|
53
53
|
private _onPlayerEvent;
|
|
54
54
|
private _seekSuspension?;
|
|
@@ -61,7 +61,7 @@ export declare class MediaPlayerSynchronizer extends EventEmitter {
|
|
|
61
61
|
* @param mediaSession Group MediaSession object being used.
|
|
62
62
|
* @param onEnd Optional. Function to call when synchronizers `end()` method is called.
|
|
63
63
|
*/
|
|
64
|
-
constructor(player: IMediaPlayer, mediaSession:
|
|
64
|
+
constructor(player: IMediaPlayer, mediaSession: LiveMediaSession, onEnd: () => void);
|
|
65
65
|
/**
|
|
66
66
|
* Media player being synchronized.
|
|
67
67
|
*/
|
|
@@ -69,7 +69,7 @@ export declare class MediaPlayerSynchronizer extends EventEmitter {
|
|
|
69
69
|
/**
|
|
70
70
|
* Synchronizers media session.
|
|
71
71
|
*/
|
|
72
|
-
get mediaSession():
|
|
72
|
+
get mediaSession(): LiveMediaSession;
|
|
73
73
|
/**
|
|
74
74
|
* If true the client is in a view only mode.
|
|
75
75
|
*
|
|
@@ -85,7 +85,7 @@ export declare class MediaPlayerSynchronizer extends EventEmitter {
|
|
|
85
85
|
/**
|
|
86
86
|
* Volume limiter used to temporarily reduce the videos volume when someone speaks in a meeting.
|
|
87
87
|
*/
|
|
88
|
-
get
|
|
88
|
+
get volumeManager(): VolumeManager;
|
|
89
89
|
/**
|
|
90
90
|
* Registers a new event listener.
|
|
91
91
|
* @param event Name of the event to add.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaPlayerSynchronizer.d.ts","sourceRoot":"","sources":["../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"AAAA;;;GAGG
|
|
1
|
+
{"version":3,"file":"MediaPlayerSynchronizer.d.ts","sourceRoot":"","sources":["../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":";AAAA;;;GAGG;AACH,OAAO,EAAuB,MAAM,EAAE,MAAM,uBAAuB,CAAC;AACpE,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAGH,qBAAqB,EACrB,qBAAqB,EACrB,iCAAiC,EAGpC,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACtD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,MAAM;IACzD;;OAEG;IACH,OAAO,EAAE,iCAAiC,CAAC;IAC3C;;OAEG;IACH,KAAK,CAAC,EAAE,KAAK,CAAC;CACjB;AAED;;GAEG;AACH,oBAAY,6BAA6B;IACrC;;OAEG;IACH,sBAAsB,2BAA2B;IACjD,WAAW,gBAAgB;IAC3B,UAAU,eAAe;CAC5B;AAED;;;;;;;;GAQG;AACH,qBAAa,uBAAwB,SAAQ,YAAY;IACrD,OAAO,CAAC,MAAM,CAAC,eAAe,CAQ5B;IACF,OAAO,CAAC,MAAM,CAAC,aAAa,CAQ1B;IAEF,OAAO,CAAC,OAAO,CAAsB;IACrC,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,aAAa,CAAmB;IACxC,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,MAAM,CAAC,CAAa;IAC5B,OAAO,CAAC,cAAc,CAAgB;IACtC,OAAO,CAAC,eAAe,CAAC,CAAoC;IAC5D,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,sBAAsB,CAA6C;IAC3E,OAAO,CAAC,UAAU,CAAuB;IAEzC;;;;;OAKG;gBAEC,MAAM,EAAE,YAAY,EACpB,YAAY,EAAE,gBAAgB,EAC9B,KAAK,EAAE,MAAM,IAAI;IAiPrB;;OAEG;IACH,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,gBAAgB,CAE1C;IAED;;;;;;;;;OASG;IACH,IAAW,QAAQ,IAAI,OAAO,CAE7B;IAED,IAAW,QAAQ,CAAC,KAAK,EAAE,OAAO,EAMjC;IAED;;OAEG;IACH,IAAW,aAAa,IAAI,aAAa,CAExC;IAED;;;;OAIG;IACI,gBAAgB,CACnB,KAAK,EAAE,6BAA6B,EACpC,QAAQ,EAAE,CAAC,GAAG,EAAE,6BAA6B,KAAK,IAAI,GACvD,IAAI;IAKP;;;;OAIG;IACI,mBAAmB,CACtB,KAAK,EAAE,6BAA6B,EACpC,QAAQ,EAAE,CAAC,GAAG,EAAE,6BAA6B,KAAK,IAAI,GACvD,IAAI;IAKP;;OAEG;IACI,GAAG,IAAI,IAAI;IAwBlB;;;;;;;;OAQG;IACI,SAAS,IAAI,IAAI;IAaxB;;;OAGG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IA2BpC;;;;;;OAMG;IACI,IAAI,IAAI,IAAI;IAUnB;;;;;;OAMG;IACI,KAAK,IAAI,IAAI;IAUpB;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAgBjC;;;;;;OAMG;IACI,QAAQ,CACX,KAAK,EAAE,qBAAqB,EAC5B,UAAU,CAAC,EAAE,qBAAqB,EAAE,GACrC,IAAI;IASP;;;;;;OAMG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAU9C,OAAO,CAAC,mBAAmB;IAwB3B,OAAO,CAAC,kBAAkB;YAqBZ,aAAa;CAG9B"}
|