@microsoft/live-share-media 0.2.8 → 0.4.0
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/.vscode/launch.json +29 -0
- package/README.md +6 -5
- package/bin/EphemeralMediaSession.d.ts +10 -3
- package/bin/EphemeralMediaSession.d.ts.map +1 -1
- package/bin/EphemeralMediaSession.js +16 -9
- package/bin/EphemeralMediaSession.js.map +1 -1
- package/bin/EphemeralMediaSessionCoordinator.d.ts +10 -10
- package/bin/EphemeralMediaSessionCoordinator.d.ts.map +1 -1
- package/bin/EphemeralMediaSessionCoordinator.js +28 -28
- package/bin/EphemeralMediaSessionCoordinator.js.map +1 -1
- package/bin/IMediaPlayer.d.ts +1 -1
- package/bin/IMediaPlayer.d.ts.map +1 -1
- package/bin/MediaPlayerSynchronizer.d.ts +4 -0
- package/bin/MediaPlayerSynchronizer.d.ts.map +1 -1
- package/bin/MediaPlayerSynchronizer.js +57 -44
- package/bin/MediaPlayerSynchronizer.js.map +1 -1
- package/bin/internals/utils.d.ts +29 -0
- package/bin/internals/utils.d.ts.map +1 -0
- package/bin/internals/utils.js +35 -0
- package/bin/internals/utils.js.map +1 -0
- package/package.json +3 -3
- package/src/EphemeralMediaSession.ts +18 -8
- package/src/EphemeralMediaSessionCoordinator.ts +28 -28
- package/src/IMediaPlayer.ts +1 -1
- package/src/MediaPlayerSynchronizer.ts +57 -43
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
{
|
|
2
|
+
// Use IntelliSense to learn about possible attributes.
|
|
3
|
+
// Hover to view descriptions of existing attributes.
|
|
4
|
+
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
|
|
5
|
+
"version": "0.2.0",
|
|
6
|
+
"configurations": [
|
|
7
|
+
{
|
|
8
|
+
"name": "Attach by Process ID",
|
|
9
|
+
"processId": "${command:PickProcess}",
|
|
10
|
+
"request": "attach",
|
|
11
|
+
"skipFiles": [
|
|
12
|
+
"<node_internals>/**"
|
|
13
|
+
],
|
|
14
|
+
"type": "node"
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
"type": "pwa-node",
|
|
18
|
+
"request": "launch",
|
|
19
|
+
"name": "Launch Program",
|
|
20
|
+
"skipFiles": [
|
|
21
|
+
"<node_internals>/**"
|
|
22
|
+
],
|
|
23
|
+
"program": "${workspaceFolder}\\bin\\index.js",
|
|
24
|
+
"outFiles": [
|
|
25
|
+
"${workspaceFolder}/**/*.js"
|
|
26
|
+
]
|
|
27
|
+
}
|
|
28
|
+
]
|
|
29
|
+
}
|
package/README.md
CHANGED
|
@@ -72,9 +72,9 @@ const { mediaSession } = container.initialObjects;
|
|
|
72
72
|
const player = document.getElementById("player");
|
|
73
73
|
const synchronizer = mediaSession.synchronize(player);
|
|
74
74
|
|
|
75
|
-
// Define roles you want to allow playback control and
|
|
75
|
+
// Define roles you want to allow playback control and initialize sync
|
|
76
76
|
const allowedRoles = ["Organizer", "Presenter"];
|
|
77
|
-
await mediaSession.
|
|
77
|
+
await mediaSession.initialize(allowedRoles);
|
|
78
78
|
|
|
79
79
|
// Intercept user play, pause, seek, and set track actions through synchronizer
|
|
80
80
|
|
|
@@ -112,9 +112,10 @@ The Live Share SDK contains dependencies for [@microsoft/teams-js](https://www.n
|
|
|
112
112
|
|
|
113
113
|
**It is critical that your app use the package dependencies listed in the table below.** Lookup the version of the `@microsoft/live-share` you're using and set any other dependencies in your package.json file to match:
|
|
114
114
|
|
|
115
|
-
| @microsoft/live-share | @microsoft/teams-js | fluid-framework | @microsoft/live-share-media | @fluidframework/
|
|
116
|
-
| --------------------- | -------------------- | --------------- | --------------------------- |
|
|
117
|
-
| ~0.
|
|
115
|
+
| @microsoft/live-share | @microsoft/teams-js | fluid-framework | @microsoft/live-share-media | @fluidframework/azure-client | @microsoft/TeamsFx | @microsoft/TeamsFx-react |
|
|
116
|
+
| --------------------- | -------------------- | --------------- | --------------------------- | ---------------------------- | ------------------------------- | ------------------------------- |
|
|
117
|
+
| ~0.4.0 | 2.0.0-experimental.1 | ~1.2.3 | ~0.4.0 (optional) | ~1.0.2 (optional) | 2.0.0-experimental.1 (optional) | 2.0.0-experimental.1 (optional) |
|
|
118
|
+
| ~0.3.1 | 2.0.0-experimental.0 | ~0.59.0 | ~0.3.1 (optional) | ~0.59.0 (optional) | 2.0.0-experimental.0 (optional) | 2.0.0-experimental.0 (optional) |
|
|
118
119
|
|
|
119
120
|
## Contributing
|
|
120
121
|
|
|
@@ -45,9 +45,9 @@ export declare class EphemeralMediaSession extends DataObject {
|
|
|
45
45
|
get actionThrottler(): MediaSessionActionThrottler;
|
|
46
46
|
set actionThrottler(value: MediaSessionActionThrottler);
|
|
47
47
|
/**
|
|
48
|
-
* Returns true if the object has been
|
|
48
|
+
* Returns true if the object has been initialized.
|
|
49
49
|
*/
|
|
50
|
-
get
|
|
50
|
+
get isInitialized(): boolean;
|
|
51
51
|
/**
|
|
52
52
|
* The group coordinator for the session.
|
|
53
53
|
*/
|
|
@@ -60,7 +60,14 @@ export declare class EphemeralMediaSession extends DataObject {
|
|
|
60
60
|
*/
|
|
61
61
|
get logger(): EphemeralTelemetryLogger;
|
|
62
62
|
/**
|
|
63
|
-
*
|
|
63
|
+
* initialize the object.
|
|
64
|
+
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
65
|
+
* operations like play/pause/seek/setTrack.
|
|
66
|
+
*/
|
|
67
|
+
initialize(acceptTransportChangesFrom?: UserMeetingRole[]): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* @deprecated initialize should be used instead
|
|
70
|
+
* initialize the object.
|
|
64
71
|
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
65
72
|
* operations like play/pause/seek/setTrack.
|
|
66
73
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EphemeralMediaSession.d.ts","sourceRoot":"","sources":["../src/EphemeralMediaSession.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAiC,0BAA0B,EAAqC,MAAM,0BAA0B,CAAC;AACxI,OAAO,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACzG,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACF,qBAAa,qBAAsB,SAAQ,UAAU;IAClD,OAAO,CAAC,gBAAgB,CAA8D;IACtF,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,0BAA0B,CAAC,CAA0B;IAC7D,OAAO,CAAC,YAAY,CAAC,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;IACrF,OAAO,CAAC,cAAc,CAAC,CAA0B;IAGjD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAa;IAEpC;;OAEG;IACF,gBAAuB,QAAQ,+CAA+C;IAE/E;;OAEG;IACF,gBAAuB,OAAO,+FAK7B;IAEF;;;;;;;;;;;;OAYG;IACH,IAAW,eAAe,IAAI,2BAA2B,CAExD;IAED,IAAW,eAAe,CAAC,KAAK,EAAE,2BAA2B,EAE5D;IAED;;OAEG;IACH,IAAW,
|
|
1
|
+
{"version":3,"file":"EphemeralMediaSession.d.ts","sourceRoot":"","sources":["../src/EphemeralMediaSession.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,UAAU,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,wBAAwB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAClF,OAAO,EAAE,uBAAuB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,EAAiC,0BAA0B,EAAqC,MAAM,0BAA0B,CAAC;AACxI,OAAO,EAAE,gCAAgC,EAAE,iBAAiB,EAAE,MAAM,oCAAoC,CAAC;AACzG,OAAO,EAAE,2BAA2B,EAAE,MAAM,+BAA+B,CAAC;AAE5E,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C;;GAEG;AACF,qBAAa,qBAAsB,SAAQ,UAAU;IAClD,OAAO,CAAC,gBAAgB,CAA8D;IACtF,OAAO,CAAC,OAAO,CAAC,CAA2B;IAC3C,OAAO,CAAC,0BAA0B,CAAC,CAA0B;IAC7D,OAAO,CAAC,YAAY,CAAC,CAAmC;IACxD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAqD;IACrF,OAAO,CAAC,cAAc,CAAC,CAA0B;IAGjD,OAAO,CAAC,YAAY,CAAM;IAC1B,OAAO,CAAC,eAAe,CAAa;IAEpC;;OAEG;IACF,gBAAuB,QAAQ,+CAA+C;IAE/E;;OAEG;IACF,gBAAuB,OAAO,+FAK7B;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;;OAEG;IACH,IAAW,WAAW,IAAI,gCAAgC,CAEzD;IAED;;;;;OAKG;IACH,IAAW,MAAM,IAAI,wBAAwB,CAE5C;IAED;;;;OAIG;IACK,UAAU,CAAC,0BAA0B,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIjF;;;;;OAKG;IACI,KAAK,CAAC,0BAA0B,CAAC,EAAE,eAAe,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAI3E;;;;OAIG;IACI,gBAAgB,CAAC,MAAM,EAAE,0BAA0B,EAAE,OAAO,EAAE,yBAAyB,GAAG,IAAI,GAAG,IAAI;IAW5G;;;OAGG;IACI,4BAA4B,CAAC,OAAO,EAAE,MAAM,iBAAiB;IAIpE;;;;OAIG;IACI,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,uBAAuB;cA+BjD,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;IAuC/C,OAAO,CAAC,iBAAiB;IAiBzB,OAAO,CAAC,qBAAqB;IAQ7B,OAAO,CAAC,cAAc;CAMzB"}
|
|
@@ -51,10 +51,10 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
51
51
|
this._actionThrottler = value;
|
|
52
52
|
}
|
|
53
53
|
/**
|
|
54
|
-
* Returns true if the object has been
|
|
54
|
+
* Returns true if the object has been initialized.
|
|
55
55
|
*/
|
|
56
|
-
get
|
|
57
|
-
return this.coordinator.
|
|
56
|
+
get isInitialized() {
|
|
57
|
+
return this.coordinator.isInitialized;
|
|
58
58
|
}
|
|
59
59
|
/**
|
|
60
60
|
* The group coordinator for the session.
|
|
@@ -72,14 +72,21 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
72
72
|
return this._logger;
|
|
73
73
|
}
|
|
74
74
|
/**
|
|
75
|
-
*
|
|
75
|
+
* initialize the object.
|
|
76
|
+
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
77
|
+
* operations like play/pause/seek/setTrack.
|
|
78
|
+
*/
|
|
79
|
+
initialize(acceptTransportChangesFrom) {
|
|
80
|
+
return this.coordinator.initialize(acceptTransportChangesFrom);
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* @deprecated initialize should be used instead
|
|
84
|
+
* initialize the object.
|
|
76
85
|
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
77
86
|
* operations like play/pause/seek/setTrack.
|
|
78
87
|
*/
|
|
79
88
|
start(acceptTransportChangesFrom) {
|
|
80
|
-
return
|
|
81
|
-
this.coordinator.start(acceptTransportChangesFrom);
|
|
82
|
-
});
|
|
89
|
+
return this.initialize(acceptTransportChangesFrom);
|
|
83
90
|
}
|
|
84
91
|
/**
|
|
85
92
|
* Registers an action handler with the session.
|
|
@@ -124,7 +131,7 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
124
131
|
// Send position update if interval hit
|
|
125
132
|
const now = new Date().getTime();
|
|
126
133
|
const delta = (now - this._lastUpdateTime) / 1000;
|
|
127
|
-
if (this.coordinator.
|
|
134
|
+
if (this.coordinator.isInitialized && delta >= this.coordinator.positionUpdateInterval) {
|
|
128
135
|
this._lastUpdateTime = now;
|
|
129
136
|
this.coordinator.sendPositionUpdate(state);
|
|
130
137
|
}
|
|
@@ -174,7 +181,7 @@ class EphemeralMediaSession extends aqueduct_1.DataObject {
|
|
|
174
181
|
}
|
|
175
182
|
checkWaitPointHit(state) {
|
|
176
183
|
// Was a wait point hit?
|
|
177
|
-
if (state.positionState && this.coordinator.
|
|
184
|
+
if (state.positionState && this.coordinator.isInitialized) {
|
|
178
185
|
const waitPoint = this.coordinator.findNextWaitPoint();
|
|
179
186
|
if (waitPoint && state.positionState.position != undefined && state.positionState.position >= waitPoint.position) {
|
|
180
187
|
// Ensure handler registered
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EphemeralMediaSession.js","sourceRoot":"","sources":["../src/EphemeralMediaSession.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;AAEH,uDAAyE;AACzE,sDAAkF;AAClF,uEAAoE;AACpE,2CAAmE;AACnE,qEAAwI;AACxI,yFAAyG;AAEzG,uEAAoE;AAGpE;;GAEG;AACF,MAAa,qBAAsB,SAAQ,qBAAU;IAArD;;QACW,qBAAgB,GAAgC,IAAI,iDAAuB,EAAE,CAAC;QAIrE,oBAAe,GAA2C,IAAI,GAAG,EAAE,CAAC;QAK7E,oBAAe,GAAW,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"EphemeralMediaSession.js","sourceRoot":"","sources":["../src/EphemeralMediaSession.ts"],"names":[],"mappings":"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"}
|
|
@@ -42,7 +42,7 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
42
42
|
private _positionUpdateInterval;
|
|
43
43
|
private _maxPlaybackDrift;
|
|
44
44
|
private _lastWaitPoint?;
|
|
45
|
-
private
|
|
45
|
+
private _hasInitialized;
|
|
46
46
|
private _playEvent?;
|
|
47
47
|
private _pauseEvent?;
|
|
48
48
|
private _seekToEvent?;
|
|
@@ -134,7 +134,7 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
134
134
|
* Instructs the group to play the current track.
|
|
135
135
|
*
|
|
136
136
|
* @remarks
|
|
137
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
137
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
138
138
|
* loaded, or `canPlayPause` is false.
|
|
139
139
|
*/
|
|
140
140
|
play(): void;
|
|
@@ -142,7 +142,7 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
142
142
|
* Instructs the group to pause the current track.
|
|
143
143
|
*
|
|
144
144
|
* @remarks
|
|
145
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
145
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
146
146
|
* loaded, or `canPlayPause` is false.
|
|
147
147
|
*/
|
|
148
148
|
pause(): void;
|
|
@@ -150,7 +150,7 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
150
150
|
* Instructs the group to seek to a new position within the current track.
|
|
151
151
|
*
|
|
152
152
|
* @remarks
|
|
153
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
153
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
154
154
|
* loaded, or `canSeek` is false.
|
|
155
155
|
* @param time Playback position in seconds to seek to.
|
|
156
156
|
*/
|
|
@@ -159,7 +159,7 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
159
159
|
* Instructs the group to load a new track.
|
|
160
160
|
*
|
|
161
161
|
* @remarks
|
|
162
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
162
|
+
* Throws an exception if the session/coordinator hasn't been initialized or `canSetTrack` is
|
|
163
163
|
* false.
|
|
164
164
|
* @param metadata The track to load or `null` to indicate that the end of the track is reached.
|
|
165
165
|
* @param waitPoints Optional. List of static wait points to configure for the track. Dynamic wait points can be added via the `beginSuspension()` call.
|
|
@@ -172,7 +172,7 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
172
172
|
* The track data object can be used by applications to synchronize things like pitch, roll,
|
|
173
173
|
* and yaw of a 360 video. This data object will be reset to null anytime the track changes.
|
|
174
174
|
*
|
|
175
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
175
|
+
* Throws an exception if the session/coordinator hasn't been initialized or `canSetTrackData` is
|
|
176
176
|
* false.
|
|
177
177
|
* @param data New data object to sync with the group. This value will be synchronized using a last writer wins strategy.
|
|
178
178
|
*/
|
|
@@ -197,21 +197,21 @@ export declare class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
197
197
|
* in a suspension state until the list client ends their suspension. This behavior can be
|
|
198
198
|
* conditionally bypassed by settings the wait points `maxClients` value.
|
|
199
199
|
*
|
|
200
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
200
|
+
* Throws an exception if the session/coordinator hasn't been initialized.
|
|
201
201
|
* @param waitPoint Optional. Dynamic wait point to broadcast to all of the clients.
|
|
202
202
|
* @returns The suspension object. Call `end()` on the returned suspension to end the suspension.
|
|
203
203
|
*/
|
|
204
204
|
beginSuspension(waitPoint?: CoordinationWaitPoint): MediaSessionCoordinatorSuspension;
|
|
205
205
|
/**
|
|
206
206
|
* @hidden
|
|
207
|
-
* Called by MediaSession to verify the coordinator has been
|
|
207
|
+
* Called by MediaSession to verify the coordinator has been initialized.
|
|
208
208
|
*/
|
|
209
|
-
get
|
|
209
|
+
get isInitialized(): boolean;
|
|
210
210
|
/**
|
|
211
211
|
* @hidden
|
|
212
212
|
* Called by MediaSession to start coordinator.
|
|
213
213
|
*/
|
|
214
|
-
|
|
214
|
+
initialize(acceptTransportChangesFrom?: UserMeetingRole[]): Promise<void>;
|
|
215
215
|
/**
|
|
216
216
|
* @hidden
|
|
217
217
|
* Called by the MediaSession to detect if a wait point has been hit.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EphemeralMediaSessionCoordinator.d.ts","sourceRoot":"","sources":["../src/EphemeralMediaSessionCoordinator.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAwF,gBAAgB,EAAgB,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC9K,OAAO,EAAE,qBAAqB,EAAqC,qBAAqB,EAAE,iCAAiC,EAA+D,iCAAiC,EAAE,MAAM,0BAA0B,CAAC;AAG9P,OAAO,YAAY,MAAM,QAAQ,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAC9B;;OAEG;IACH,QAAQ,EAAE,qBAAqB,GAAC,IAAI,CAAC;IAErC;;;;;OAKG;IACH,SAAS,EAAE,MAAM,GAAC,IAAI,CAAC;IAEvB;;OAEG;IACH,aAAa,EAAE,iCAAiC,CAAC;IAEjD;;OAEG;IACH,aAAa,CAAC,EAAE,kBAAkB,CAAC;CACtC;AAED;;;;GAIG;AACH,qBAAa,gCAAiC,SAAQ,YAAY;IAC9D,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA2B;IACnD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;IAC1D,OAAO,CAAC,uBAAuB,CAA0B;IACzD,OAAO,CAAC,iBAAiB,CAA0B;IACnD,OAAO,CAAC,cAAc,CAAC,CAAwB;IAC/C,OAAO,CAAC,
|
|
1
|
+
{"version":3,"file":"EphemeralMediaSessionCoordinator.d.ts","sourceRoot":"","sources":["../src/EphemeralMediaSessionCoordinator.ts"],"names":[],"mappings":"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"}
|
|
@@ -35,7 +35,7 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
35
35
|
super();
|
|
36
36
|
this._positionUpdateInterval = new live_share_1.TimeInterval(2000);
|
|
37
37
|
this._maxPlaybackDrift = new live_share_1.TimeInterval(1000);
|
|
38
|
-
this.
|
|
38
|
+
this._hasInitialized = false;
|
|
39
39
|
/**
|
|
40
40
|
* Controls whether or not the local client is allowed to instruct the group to play or pause.
|
|
41
41
|
*
|
|
@@ -128,13 +128,13 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
128
128
|
* Instructs the group to play the current track.
|
|
129
129
|
*
|
|
130
130
|
* @remarks
|
|
131
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
131
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
132
132
|
* loaded, or `canPlayPause` is false.
|
|
133
133
|
*/
|
|
134
134
|
play() {
|
|
135
135
|
var _a;
|
|
136
|
-
if (!this.
|
|
137
|
-
throw new Error(`EphemeralMediaSessionCoordinator.play() called before
|
|
136
|
+
if (!this._hasInitialized) {
|
|
137
|
+
throw new Error(`EphemeralMediaSessionCoordinator.play() called before initialize() called.`);
|
|
138
138
|
}
|
|
139
139
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
140
140
|
throw new Error(`EphemeralMediaSessionCoordinator.play() called before MediaSession.metadata assigned.`);
|
|
@@ -155,13 +155,13 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
155
155
|
* Instructs the group to pause the current track.
|
|
156
156
|
*
|
|
157
157
|
* @remarks
|
|
158
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
158
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
159
159
|
* loaded, or `canPlayPause` is false.
|
|
160
160
|
*/
|
|
161
161
|
pause() {
|
|
162
162
|
var _a;
|
|
163
|
-
if (!this.
|
|
164
|
-
throw new Error(`EphemeralMediaSessionCoordinator.pause() called before
|
|
163
|
+
if (!this._hasInitialized) {
|
|
164
|
+
throw new Error(`EphemeralMediaSessionCoordinator.pause() called before initialize() called.`);
|
|
165
165
|
}
|
|
166
166
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
167
167
|
throw new Error(`EphemeralMediaSessionCoordinator.pause() called before MediaSession.metadata assigned.`);
|
|
@@ -182,14 +182,14 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
182
182
|
* Instructs the group to seek to a new position within the current track.
|
|
183
183
|
*
|
|
184
184
|
* @remarks
|
|
185
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
185
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
186
186
|
* loaded, or `canSeek` is false.
|
|
187
187
|
* @param time Playback position in seconds to seek to.
|
|
188
188
|
*/
|
|
189
189
|
seekTo(time) {
|
|
190
190
|
var _a;
|
|
191
|
-
if (!this.
|
|
192
|
-
throw new Error(`EphemeralMediaSessionCoordinator.seekTo() called before
|
|
191
|
+
if (!this._hasInitialized) {
|
|
192
|
+
throw new Error(`EphemeralMediaSessionCoordinator.seekTo() called before initialize() called.`);
|
|
193
193
|
}
|
|
194
194
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
195
195
|
throw new Error(`EphemeralMediaSessionCoordinator.seekTo() called before MediaSession.metadata assigned.`);
|
|
@@ -208,14 +208,14 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
208
208
|
* Instructs the group to load a new track.
|
|
209
209
|
*
|
|
210
210
|
* @remarks
|
|
211
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
211
|
+
* Throws an exception if the session/coordinator hasn't been initialized or `canSetTrack` is
|
|
212
212
|
* false.
|
|
213
213
|
* @param metadata The track to load or `null` to indicate that the end of the track is reached.
|
|
214
214
|
* @param waitPoints Optional. List of static wait points to configure for the track. Dynamic wait points can be added via the `beginSuspension()` call.
|
|
215
215
|
*/
|
|
216
216
|
setTrack(metadata, waitPoints) {
|
|
217
|
-
if (!this.
|
|
218
|
-
throw new Error(`EphemeralMediaSessionCoordinator.setTrack() called before
|
|
217
|
+
if (!this._hasInitialized) {
|
|
218
|
+
throw new Error(`EphemeralMediaSessionCoordinator.setTrack() called before initialize() called.`);
|
|
219
219
|
}
|
|
220
220
|
if (!this.canSetTrack) {
|
|
221
221
|
throw new Error(`EphemeralMediaSessionCoordinator.setTrack() operation blocked.`);
|
|
@@ -234,13 +234,13 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
234
234
|
* The track data object can be used by applications to synchronize things like pitch, roll,
|
|
235
235
|
* and yaw of a 360 video. This data object will be reset to null anytime the track changes.
|
|
236
236
|
*
|
|
237
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
237
|
+
* Throws an exception if the session/coordinator hasn't been initialized or `canSetTrackData` is
|
|
238
238
|
* false.
|
|
239
239
|
* @param data New data object to sync with the group. This value will be synchronized using a last writer wins strategy.
|
|
240
240
|
*/
|
|
241
241
|
setTrackData(data) {
|
|
242
|
-
if (!this.
|
|
243
|
-
throw new Error(`EphemeralMediaSessionCoordinator.setTrackData() called before
|
|
242
|
+
if (!this._hasInitialized) {
|
|
243
|
+
throw new Error(`EphemeralMediaSessionCoordinator.setTrackData() called before initialize() called.`);
|
|
244
244
|
}
|
|
245
245
|
if (!this.canSetTrackData) {
|
|
246
246
|
throw new Error(`EphemeralMediaSessionCoordinator.setTrackData() operation blocked.`);
|
|
@@ -271,14 +271,14 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
271
271
|
* in a suspension state until the list client ends their suspension. This behavior can be
|
|
272
272
|
* conditionally bypassed by settings the wait points `maxClients` value.
|
|
273
273
|
*
|
|
274
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
274
|
+
* Throws an exception if the session/coordinator hasn't been initialized.
|
|
275
275
|
* @param waitPoint Optional. Dynamic wait point to broadcast to all of the clients.
|
|
276
276
|
* @returns The suspension object. Call `end()` on the returned suspension to end the suspension.
|
|
277
277
|
*/
|
|
278
278
|
beginSuspension(waitPoint) {
|
|
279
279
|
var _a;
|
|
280
|
-
if (!this.
|
|
281
|
-
throw new Error(`EphemeralMediaSessionCoordinator.beginSuspension() called before
|
|
280
|
+
if (!this._hasInitialized) {
|
|
281
|
+
throw new Error(`EphemeralMediaSessionCoordinator.beginSuspension() called before initialize() called.`);
|
|
282
282
|
}
|
|
283
283
|
if (!((_a = this._groupState) === null || _a === void 0 ? void 0 : _a.playbackTrack.current.metadata)) {
|
|
284
284
|
throw new Error(`EphemeralMediaSessionCoordinator.beginSuspension() called before MediaSession.metadata assigned.`);
|
|
@@ -311,23 +311,23 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
311
311
|
}
|
|
312
312
|
/**
|
|
313
313
|
* @hidden
|
|
314
|
-
* Called by MediaSession to verify the coordinator has been
|
|
314
|
+
* Called by MediaSession to verify the coordinator has been initialized.
|
|
315
315
|
*/
|
|
316
|
-
get
|
|
317
|
-
return this.
|
|
316
|
+
get isInitialized() {
|
|
317
|
+
return this._hasInitialized;
|
|
318
318
|
}
|
|
319
319
|
/**
|
|
320
320
|
* @hidden
|
|
321
321
|
* Called by MediaSession to start coordinator.
|
|
322
322
|
*/
|
|
323
|
-
|
|
323
|
+
initialize(acceptTransportChangesFrom) {
|
|
324
324
|
return __awaiter(this, void 0, void 0, function* () {
|
|
325
|
-
if (this.
|
|
326
|
-
throw new Error(`EphemeralMediaSessionCoordinator.
|
|
325
|
+
if (this._hasInitialized) {
|
|
326
|
+
throw new Error(`EphemeralMediaSessionCoordinator.initialize() already initialized.`);
|
|
327
327
|
}
|
|
328
328
|
// Create children
|
|
329
329
|
yield this.createChildren(acceptTransportChangesFrom);
|
|
330
|
-
this.
|
|
330
|
+
this._hasInitialized = true;
|
|
331
331
|
});
|
|
332
332
|
}
|
|
333
333
|
/**
|
|
@@ -344,8 +344,8 @@ class EphemeralMediaSessionCoordinator extends events_1.default {
|
|
|
344
344
|
*/
|
|
345
345
|
sendPositionUpdate(state) {
|
|
346
346
|
var _a;
|
|
347
|
-
if (!this.
|
|
348
|
-
throw new Error(`EphemeralMediaSessionCoordinator.sendPositionUpdate() called before
|
|
347
|
+
if (!this._hasInitialized) {
|
|
348
|
+
throw new Error(`EphemeralMediaSessionCoordinator.sendPositionUpdate() called before initialize() called.`);
|
|
349
349
|
}
|
|
350
350
|
// Send position update event
|
|
351
351
|
const evt = this._groupState.createPositionUpdateEvent(state);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"EphemeralMediaSessionCoordinator.js","sourceRoot":"","sources":["../src/EphemeralMediaSessionCoordinator.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;AAEH,sDAA8K;AAE9K,2CAAyM;AACzM,6GAA0G;AAC1G,oDAAkC;AA8BlC;;;;GAIG;AACH,MAAa,gCAAiC,SAAQ,gBAAY;IAqB9D;;;OAGG;IACH,YAAY,OAAyB,EAAE,cAAuC;QAC1E,KAAK,EAAE,CAAC;QAtBJ,4BAAuB,GAAG,IAAI,yBAAY,CAAC,IAAI,CAAC,CAAC;QACjD,sBAAiB,GAAG,IAAI,yBAAY,CAAC,IAAI,CAAC,CAAC;QAE3C,
|
|
1
|
+
{"version":3,"file":"EphemeralMediaSessionCoordinator.js","sourceRoot":"","sources":["../src/EphemeralMediaSessionCoordinator.ts"],"names":[],"mappings":"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"}
|
package/bin/IMediaPlayer.d.ts
CHANGED
|
@@ -14,7 +14,7 @@ export interface IMediaPlayer {
|
|
|
14
14
|
volume: number;
|
|
15
15
|
load(): void;
|
|
16
16
|
pause(): void;
|
|
17
|
-
play(): void
|
|
17
|
+
play(): Promise<void>;
|
|
18
18
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
19
19
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
20
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IMediaPlayer.d.ts","sourceRoot":"","sources":["../src/IMediaPlayer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"IMediaPlayer.d.ts","sourceRoot":"","sources":["../src/IMediaPlayer.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,MAAM,WAAW,YAAY;IACzB,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC;IACxB,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,IAAI,IAAI,CAAC;IACb,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;IACtB,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,uBAAuB,GAAG,IAAI,CAAC;IAChI,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,kCAAkC,EAAE,OAAO,CAAC,EAAE,OAAO,GAAG,oBAAoB,GAAG,IAAI,CAAC;CACnI"}
|
|
@@ -17,6 +17,10 @@ export interface IMediaPlayerSynchronizerEvent extends IEvent {
|
|
|
17
17
|
* Event details.
|
|
18
18
|
*/
|
|
19
19
|
details: ExtendedMediaSessionActionDetails;
|
|
20
|
+
/**
|
|
21
|
+
* Action errors, including DOMException errors thrown by HTMLMediaElement
|
|
22
|
+
*/
|
|
23
|
+
error?: Error;
|
|
20
24
|
}
|
|
21
25
|
/**
|
|
22
26
|
* Events supported by `MediaPlayerSynchronizer` object.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaPlayerSynchronizer.d.ts","sourceRoot":"","sources":["../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAA4B,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAiE,qBAAqB,EAAE,qBAAqB,EAAE,iCAAiC,EAAoE,MAAM,0BAA0B,CAAC;AAC5P,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAG9C;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,MAAM;IACzD;;OAEG;IACH,OAAO,EAAE,iCAAiC,CAAC;
|
|
1
|
+
{"version":3,"file":"MediaPlayerSynchronizer.d.ts","sourceRoot":"","sources":["../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAA4B,MAAM,EAAgB,MAAM,uBAAuB,CAAC;AACvF,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAiE,qBAAqB,EAAE,qBAAqB,EAAE,iCAAiC,EAAoE,MAAM,0BAA0B,CAAC;AAC5P,OAAO,EAAE,qBAAqB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,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,CAA0G;IACxI,OAAO,CAAC,MAAM,CAAC,aAAa,CAAoG;IAEhI,OAAO,CAAC,OAAO,CAA2B;IAC1C,OAAO,CAAC,OAAO,CAAe;IAC9B,OAAO,CAAC,aAAa,CAAwB;IAC7C,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,CAAqB;IAEvC;;;;;OAKG;gBACS,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,qBAAqB,EAAE,KAAK,EAAE,MAAM,IAAI;IA+IxF;;OAEG;IACH,IAAW,MAAM,IAAI,YAAY,CAEhC;IAED;;OAEG;IACH,IAAW,YAAY,IAAI,qBAAqB,CAE/C;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,CAAC,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,6BAA6B,KAAK,IAAI,GAAG,IAAI;IAK3H;;;;OAIG;IACI,mBAAmB,CAAC,KAAK,EAAE,6BAA6B,EAAE,QAAQ,EAAE,CAAC,GAAG,EAAE,6BAA6B,KAAK,IAAI,GAAG,IAAI;IAK9H;;OAEG;IACI,GAAG,IAAI,IAAI;IAqBlB;;;;;;;;OAQG;IACI,SAAS,IAAI,IAAI;IASxB;;;OAGG;IACI,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAmBpC;;;;;;OAMG;IACI,IAAI,IAAI,IAAI;IAQnB;;;;;;OAMG;IACI,KAAK,IAAI,IAAI;IAQpB;;;;;;OAMG;IACI,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAYjC;;;;;;OAMG;IACI,QAAQ,CAAC,KAAK,EAAE,qBAAqB,EAAE,UAAU,CAAC,EAAE,qBAAqB,EAAE,GAAG,IAAI;IAOzF;;;;;;OAMG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAC,IAAI,GAAG,IAAI;IAQ5C,OAAO,CAAC,mBAAmB;IAQ3B,OAAO,CAAC,kBAAkB;YAQZ,aAAa;CAG9B"}
|
|
@@ -124,52 +124,65 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
124
124
|
this._mediaSession.coordinator.on(MediaSessionExtensions_1.MediaSessionCoordinatorEvents.coordinatorstatechange, evt => this.emit(evt.type, evt));
|
|
125
125
|
// Register media session actions
|
|
126
126
|
for (const action of MediaPlayerSynchronizer.SESSION_ACTIONS) {
|
|
127
|
-
this._mediaSession.setActionHandler(action, (details) => {
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
127
|
+
this._mediaSession.setActionHandler(action, (details) => __awaiter(this, void 0, void 0, function* () {
|
|
128
|
+
var _a;
|
|
129
|
+
let error;
|
|
130
|
+
try {
|
|
131
|
+
switch (details.action) {
|
|
132
|
+
case 'play':
|
|
133
|
+
this._expectedPlaybackState = 'playing';
|
|
134
|
+
if (this._player.paused) {
|
|
135
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.PlayAction);
|
|
136
|
+
if (typeof details.seekTime == 'number' && this._player.currentTime < 1.0) {
|
|
137
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.SeekingPlayerToStartPosition, null, { position: details.seekTime });
|
|
138
|
+
this._player.currentTime = details.seekTime;
|
|
139
|
+
}
|
|
140
|
+
// Reference: https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play#exceptions
|
|
141
|
+
yield this._player.play();
|
|
142
|
+
}
|
|
143
|
+
break;
|
|
144
|
+
case 'pause':
|
|
145
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.PauseAction);
|
|
146
|
+
this._expectedPlaybackState = 'paused';
|
|
133
147
|
if (typeof details.seekTime == 'number' && this._player.currentTime < 1.0) {
|
|
134
148
|
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.SeekingPlayerToStartPosition, null, { position: details.seekTime });
|
|
135
149
|
this._player.currentTime = details.seekTime;
|
|
136
150
|
}
|
|
137
|
-
this._player.
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
this.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
break;
|
|
151
|
+
this._player.pause();
|
|
152
|
+
break;
|
|
153
|
+
case 'seekto':
|
|
154
|
+
if (typeof details.seekTime == 'number') {
|
|
155
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.SeekToAction, null, { position: details.seekTime });
|
|
156
|
+
this._player.currentTime = details.seekTime;
|
|
157
|
+
}
|
|
158
|
+
break;
|
|
159
|
+
case 'settrack':
|
|
160
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.SetTrackAction);
|
|
161
|
+
this._expectedPlaybackState = 'none';
|
|
162
|
+
this._player.src = details.metadata.trackIdentifier;
|
|
163
|
+
this._player.load();
|
|
164
|
+
break;
|
|
165
|
+
case 'datachange':
|
|
166
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.DataChangeAction);
|
|
167
|
+
break;
|
|
168
|
+
case 'catchup':
|
|
169
|
+
if (typeof details.seekTime == 'number') {
|
|
170
|
+
this._logger.sendTelemetryEvent(internals_1.TelemetryEvents.MediaPlayerSynchronizer.CatchupAction, null, { position: details.seekTime });
|
|
171
|
+
this.catchupPlayer(details.seekTime);
|
|
172
|
+
}
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
catch (err) {
|
|
177
|
+
if (err instanceof Error) {
|
|
178
|
+
error = err;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
error = new Error((_a = err === null || err === void 0 ? void 0 : err.message) !== null && _a !== void 0 ? _a : "An unknown error occurred after processing the group session action.");
|
|
182
|
+
}
|
|
170
183
|
}
|
|
171
|
-
this.dispatchGroupAction(details);
|
|
172
|
-
});
|
|
184
|
+
this.dispatchGroupAction(details, false, error);
|
|
185
|
+
}));
|
|
173
186
|
}
|
|
174
187
|
// Subscribe to player events
|
|
175
188
|
for (const event of MediaPlayerSynchronizer.PLAYER_EVENTS) {
|
|
@@ -356,12 +369,12 @@ class MediaPlayerSynchronizer extends events_1.default {
|
|
|
356
369
|
this._mediaSession.coordinator.setTrackData(data);
|
|
357
370
|
this.dispatchUserAction({ action: 'datachange', data: data });
|
|
358
371
|
}
|
|
359
|
-
dispatchGroupAction(details, delay = false) {
|
|
372
|
+
dispatchGroupAction(details, delay = false, error) {
|
|
360
373
|
if (delay) {
|
|
361
|
-
setTimeout(() => this.emit(MediaPlayerSynchronizerEvents.groupaction, { type: MediaPlayerSynchronizerEvents.groupaction, details: details }), 50);
|
|
374
|
+
setTimeout(() => this.emit(MediaPlayerSynchronizerEvents.groupaction, { type: MediaPlayerSynchronizerEvents.groupaction, details: details, playerError: error }), 50);
|
|
362
375
|
}
|
|
363
376
|
else {
|
|
364
|
-
this.emit(MediaPlayerSynchronizerEvents.groupaction, { type: MediaPlayerSynchronizerEvents.groupaction, details: details });
|
|
377
|
+
this.emit(MediaPlayerSynchronizerEvents.groupaction, { type: MediaPlayerSynchronizerEvents.groupaction, details: details, error });
|
|
365
378
|
}
|
|
366
379
|
}
|
|
367
380
|
dispatchUserAction(details, delay = false) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MediaPlayerSynchronizer.js","sourceRoot":"","sources":["../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"MediaPlayerSynchronizer.js","sourceRoot":"","sources":["../src/MediaPlayerSynchronizer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
3
|
+
* Licensed under the Microsoft Live Share SDK License.
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* @hidden
|
|
7
|
+
* Tracks a range of values for an array of numbers.
|
|
8
|
+
*/
|
|
9
|
+
export interface INumberRange {
|
|
10
|
+
count: number;
|
|
11
|
+
max: number;
|
|
12
|
+
median: number;
|
|
13
|
+
min: number;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* @hidden
|
|
17
|
+
* Adds a local value to a number range
|
|
18
|
+
*/
|
|
19
|
+
export interface ILocalNumberRange extends INumberRange {
|
|
20
|
+
local: number;
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* @hidden
|
|
24
|
+
* Finds the min/median/max for a range of numbers.
|
|
25
|
+
* @param values Optional. Array of numbers to find the range for.
|
|
26
|
+
* @returns The min/median/max of the number range or all `-1` values if no numbers passed in.
|
|
27
|
+
*/
|
|
28
|
+
export declare function findNumberRange(values?: number[]): INumberRange;
|
|
29
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/internals/utils.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,YAAY;IACzB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,GAAG,EAAE,MAAM,CAAC;CACf;AAED;;;GAGG;AACH,MAAM,WAAW,iBAAkB,SAAQ,YAAY;IACnD,KAAK,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,GAAG,YAAY,CAoB/D"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Copyright (c) Microsoft Corporation. All rights reserved.
|
|
4
|
+
* Licensed under the Microsoft Live Share SDK License.
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.findNumberRange = void 0;
|
|
8
|
+
/**
|
|
9
|
+
* @hidden
|
|
10
|
+
* Finds the min/median/max for a range of numbers.
|
|
11
|
+
* @param values Optional. Array of numbers to find the range for.
|
|
12
|
+
* @returns The min/median/max of the number range or all `-1` values if no numbers passed in.
|
|
13
|
+
*/
|
|
14
|
+
function findNumberRange(values) {
|
|
15
|
+
let count = Array.isArray(values) ? values.length : 0;
|
|
16
|
+
let max = -1;
|
|
17
|
+
let median = -1;
|
|
18
|
+
let min = -1;
|
|
19
|
+
if (count > 0) {
|
|
20
|
+
values.sort((a, b) => a - b);
|
|
21
|
+
min = values[0];
|
|
22
|
+
max = values[count - 1];
|
|
23
|
+
// Find median
|
|
24
|
+
const half = Math.floor(count / 2);
|
|
25
|
+
if (count % 2) {
|
|
26
|
+
median = values[half];
|
|
27
|
+
}
|
|
28
|
+
else {
|
|
29
|
+
median = (values[half - 1] + values[half]) / 2.0;
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
return { max, median, min, count };
|
|
33
|
+
}
|
|
34
|
+
exports.findNumberRange = findNumberRange;
|
|
35
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/internals/utils.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAqBH;;;;;GAKG;AACH,SAAgB,eAAe,CAAC,MAAiB;IAC7C,IAAI,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IACtD,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,IAAI,MAAM,GAAG,CAAC,CAAC,CAAC;IAChB,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC;IACb,IAAI,KAAK,GAAG,CAAC,EAAE;QACX,MAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,GAAG,GAAG,MAAO,CAAC,CAAC,CAAC,CAAC;QACjB,GAAG,GAAG,MAAO,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QAEzB,cAAc;QACd,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAA;QAClC,IAAI,KAAK,GAAG,CAAC,EAAE;YACX,MAAM,GAAG,MAAO,CAAC,IAAI,CAAC,CAAC;SAC1B;aAAM;YACH,MAAM,GAAG,CAAC,MAAO,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,MAAO,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC;SACtD;KACJ;IAED,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC;AACvC,CAAC;AApBD,0CAoBC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/live-share-media",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.4.0",
|
|
4
4
|
"description": "Live Share classes that synchronize media playback across clients.",
|
|
5
5
|
"author": "Microsoft",
|
|
6
6
|
"license": "SEE LICENSE IN LICENSE",
|
|
@@ -14,8 +14,8 @@
|
|
|
14
14
|
"test:coverage": "nyc --reporter=html --reporter=text --reporter=text-summary npm test"
|
|
15
15
|
},
|
|
16
16
|
"dependencies": {
|
|
17
|
-
"fluid-framework": "~
|
|
18
|
-
"@microsoft/live-share": "0.
|
|
17
|
+
"fluid-framework": "~1.2.3",
|
|
18
|
+
"@microsoft/live-share": "0.4.0"
|
|
19
19
|
},
|
|
20
20
|
"devDependencies": {
|
|
21
21
|
"@types/assert": "^1.5.6",
|
|
@@ -65,10 +65,10 @@ import { IMediaPlayer } from './IMediaPlayer';
|
|
|
65
65
|
}
|
|
66
66
|
|
|
67
67
|
/**
|
|
68
|
-
* Returns true if the object has been
|
|
68
|
+
* Returns true if the object has been initialized.
|
|
69
69
|
*/
|
|
70
|
-
public get
|
|
71
|
-
return this.coordinator.
|
|
70
|
+
public get isInitialized(): boolean {
|
|
71
|
+
return this.coordinator.isInitialized;
|
|
72
72
|
}
|
|
73
73
|
|
|
74
74
|
/**
|
|
@@ -89,12 +89,22 @@ import { IMediaPlayer } from './IMediaPlayer';
|
|
|
89
89
|
}
|
|
90
90
|
|
|
91
91
|
/**
|
|
92
|
-
*
|
|
92
|
+
* initialize the object.
|
|
93
93
|
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
94
94
|
* operations like play/pause/seek/setTrack.
|
|
95
95
|
*/
|
|
96
|
-
|
|
97
|
-
this.coordinator.
|
|
96
|
+
public initialize(acceptTransportChangesFrom?: UserMeetingRole[]): Promise<void> {
|
|
97
|
+
return this.coordinator.initialize(acceptTransportChangesFrom);
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
/**
|
|
101
|
+
* @deprecated initialize should be used instead
|
|
102
|
+
* initialize the object.
|
|
103
|
+
* @param acceptTransportChangesFrom Optional. List of roles allowed to group transport
|
|
104
|
+
* operations like play/pause/seek/setTrack.
|
|
105
|
+
*/
|
|
106
|
+
public start(acceptTransportChangesFrom?: UserMeetingRole[]): Promise<void> {
|
|
107
|
+
return this.initialize(acceptTransportChangesFrom)
|
|
98
108
|
}
|
|
99
109
|
|
|
100
110
|
/**
|
|
@@ -145,7 +155,7 @@ import { IMediaPlayer } from './IMediaPlayer';
|
|
|
145
155
|
// Send position update if interval hit
|
|
146
156
|
const now = new Date().getTime();
|
|
147
157
|
const delta = (now - this._lastUpdateTime) / 1000;
|
|
148
|
-
if (this.coordinator.
|
|
158
|
+
if (this.coordinator.isInitialized && delta >= this.coordinator.positionUpdateInterval) {
|
|
149
159
|
this._lastUpdateTime = now;
|
|
150
160
|
this.coordinator.sendPositionUpdate(state);
|
|
151
161
|
}
|
|
@@ -198,7 +208,7 @@ import { IMediaPlayer } from './IMediaPlayer';
|
|
|
198
208
|
|
|
199
209
|
private checkWaitPointHit(state: IMediaPlayerState): void {
|
|
200
210
|
// Was a wait point hit?
|
|
201
|
-
if (state.positionState && this.coordinator.
|
|
211
|
+
if (state.positionState && this.coordinator.isInitialized) {
|
|
202
212
|
const waitPoint = this.coordinator.findNextWaitPoint();
|
|
203
213
|
if (waitPoint && state.positionState.position != undefined && state.positionState.position >= waitPoint.position) {
|
|
204
214
|
// Ensure handler registered
|
|
@@ -49,7 +49,7 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
49
49
|
private _positionUpdateInterval = new TimeInterval(2000);
|
|
50
50
|
private _maxPlaybackDrift = new TimeInterval(1000);
|
|
51
51
|
private _lastWaitPoint?: CoordinationWaitPoint;
|
|
52
|
-
private
|
|
52
|
+
private _hasInitialized = false;
|
|
53
53
|
|
|
54
54
|
// Broadcast events
|
|
55
55
|
private _playEvent?: EphemeralEventTarget<ITransportCommandEvent>;
|
|
@@ -172,12 +172,12 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
172
172
|
* Instructs the group to play the current track.
|
|
173
173
|
*
|
|
174
174
|
* @remarks
|
|
175
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
175
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
176
176
|
* loaded, or `canPlayPause` is false.
|
|
177
177
|
*/
|
|
178
178
|
public play(): void {
|
|
179
|
-
if (!this.
|
|
180
|
-
throw new Error(`EphemeralMediaSessionCoordinator.play() called before
|
|
179
|
+
if (!this._hasInitialized) {
|
|
180
|
+
throw new Error(`EphemeralMediaSessionCoordinator.play() called before initialize() called.`);
|
|
181
181
|
}
|
|
182
182
|
|
|
183
183
|
if (!this._groupState?.playbackTrack.current.metadata) {
|
|
@@ -203,12 +203,12 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
203
203
|
* Instructs the group to pause the current track.
|
|
204
204
|
*
|
|
205
205
|
* @remarks
|
|
206
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
206
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
207
207
|
* loaded, or `canPlayPause` is false.
|
|
208
208
|
*/
|
|
209
209
|
public pause(): void {
|
|
210
|
-
if (!this.
|
|
211
|
-
throw new Error(`EphemeralMediaSessionCoordinator.pause() called before
|
|
210
|
+
if (!this._hasInitialized) {
|
|
211
|
+
throw new Error(`EphemeralMediaSessionCoordinator.pause() called before initialize() called.`);
|
|
212
212
|
}
|
|
213
213
|
|
|
214
214
|
if (!this._groupState?.playbackTrack.current.metadata) {
|
|
@@ -234,13 +234,13 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
234
234
|
* Instructs the group to seek to a new position within the current track.
|
|
235
235
|
*
|
|
236
236
|
* @remarks
|
|
237
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
237
|
+
* Throws an exception if the session/coordinator hasn't been initialized, no track has been
|
|
238
238
|
* loaded, or `canSeek` is false.
|
|
239
239
|
* @param time Playback position in seconds to seek to.
|
|
240
240
|
*/
|
|
241
241
|
public seekTo(time: number): void {
|
|
242
|
-
if (!this.
|
|
243
|
-
throw new Error(`EphemeralMediaSessionCoordinator.seekTo() called before
|
|
242
|
+
if (!this._hasInitialized) {
|
|
243
|
+
throw new Error(`EphemeralMediaSessionCoordinator.seekTo() called before initialize() called.`);
|
|
244
244
|
}
|
|
245
245
|
|
|
246
246
|
if (!this._groupState?.playbackTrack.current.metadata) {
|
|
@@ -263,14 +263,14 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
263
263
|
* Instructs the group to load a new track.
|
|
264
264
|
*
|
|
265
265
|
* @remarks
|
|
266
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
266
|
+
* Throws an exception if the session/coordinator hasn't been initialized or `canSetTrack` is
|
|
267
267
|
* false.
|
|
268
268
|
* @param metadata The track to load or `null` to indicate that the end of the track is reached.
|
|
269
269
|
* @param waitPoints Optional. List of static wait points to configure for the track. Dynamic wait points can be added via the `beginSuspension()` call.
|
|
270
270
|
*/
|
|
271
271
|
public setTrack(metadata: ExtendedMediaMetadata|null, waitPoints?: CoordinationWaitPoint[]): void {
|
|
272
|
-
if (!this.
|
|
273
|
-
throw new Error(`EphemeralMediaSessionCoordinator.setTrack() called before
|
|
272
|
+
if (!this._hasInitialized) {
|
|
273
|
+
throw new Error(`EphemeralMediaSessionCoordinator.setTrack() called before initialize() called.`);
|
|
274
274
|
}
|
|
275
275
|
|
|
276
276
|
if (!this.canSetTrack) {
|
|
@@ -292,13 +292,13 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
292
292
|
* The track data object can be used by applications to synchronize things like pitch, roll,
|
|
293
293
|
* and yaw of a 360 video. This data object will be reset to null anytime the track changes.
|
|
294
294
|
*
|
|
295
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
295
|
+
* Throws an exception if the session/coordinator hasn't been initialized or `canSetTrackData` is
|
|
296
296
|
* false.
|
|
297
297
|
* @param data New data object to sync with the group. This value will be synchronized using a last writer wins strategy.
|
|
298
298
|
*/
|
|
299
299
|
public setTrackData(data: object|null): void {
|
|
300
|
-
if (!this.
|
|
301
|
-
throw new Error(`EphemeralMediaSessionCoordinator.setTrackData() called before
|
|
300
|
+
if (!this._hasInitialized) {
|
|
301
|
+
throw new Error(`EphemeralMediaSessionCoordinator.setTrackData() called before initialize() called.`);
|
|
302
302
|
}
|
|
303
303
|
|
|
304
304
|
if (!this.canSetTrackData) {
|
|
@@ -332,13 +332,13 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
332
332
|
* in a suspension state until the list client ends their suspension. This behavior can be
|
|
333
333
|
* conditionally bypassed by settings the wait points `maxClients` value.
|
|
334
334
|
*
|
|
335
|
-
* Throws an exception if the session/coordinator hasn't been
|
|
335
|
+
* Throws an exception if the session/coordinator hasn't been initialized.
|
|
336
336
|
* @param waitPoint Optional. Dynamic wait point to broadcast to all of the clients.
|
|
337
337
|
* @returns The suspension object. Call `end()` on the returned suspension to end the suspension.
|
|
338
338
|
*/
|
|
339
339
|
public beginSuspension(waitPoint?: CoordinationWaitPoint): MediaSessionCoordinatorSuspension {
|
|
340
|
-
if (!this.
|
|
341
|
-
throw new Error(`EphemeralMediaSessionCoordinator.beginSuspension() called before
|
|
340
|
+
if (!this._hasInitialized) {
|
|
341
|
+
throw new Error(`EphemeralMediaSessionCoordinator.beginSuspension() called before initialize() called.`);
|
|
342
342
|
}
|
|
343
343
|
|
|
344
344
|
if (!this._groupState?.playbackTrack.current.metadata) {
|
|
@@ -372,24 +372,24 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
372
372
|
|
|
373
373
|
/**
|
|
374
374
|
* @hidden
|
|
375
|
-
* Called by MediaSession to verify the coordinator has been
|
|
375
|
+
* Called by MediaSession to verify the coordinator has been initialized.
|
|
376
376
|
*/
|
|
377
|
-
public get
|
|
378
|
-
return this.
|
|
377
|
+
public get isInitialized(): boolean {
|
|
378
|
+
return this._hasInitialized;
|
|
379
379
|
}
|
|
380
380
|
|
|
381
381
|
/**
|
|
382
382
|
* @hidden
|
|
383
383
|
* Called by MediaSession to start coordinator.
|
|
384
384
|
*/
|
|
385
|
-
public async
|
|
386
|
-
if (this.
|
|
387
|
-
throw new Error(`EphemeralMediaSessionCoordinator.
|
|
385
|
+
public async initialize(acceptTransportChangesFrom?: UserMeetingRole[]): Promise<void> {
|
|
386
|
+
if (this._hasInitialized) {
|
|
387
|
+
throw new Error(`EphemeralMediaSessionCoordinator.initialize() already initialized.`);
|
|
388
388
|
}
|
|
389
389
|
|
|
390
390
|
// Create children
|
|
391
391
|
await this.createChildren(acceptTransportChangesFrom);
|
|
392
|
-
this.
|
|
392
|
+
this._hasInitialized = true;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
395
|
/**
|
|
@@ -405,8 +405,8 @@ export class EphemeralMediaSessionCoordinator extends EventEmitter {
|
|
|
405
405
|
* Called by MediaSession to trigger the sending of a position update.
|
|
406
406
|
*/
|
|
407
407
|
public sendPositionUpdate(state: IMediaPlayerState): void {
|
|
408
|
-
if (!this.
|
|
409
|
-
throw new Error(`EphemeralMediaSessionCoordinator.sendPositionUpdate() called before
|
|
408
|
+
if (!this._hasInitialized) {
|
|
409
|
+
throw new Error(`EphemeralMediaSessionCoordinator.sendPositionUpdate() called before initialize() called.`);
|
|
410
410
|
}
|
|
411
411
|
|
|
412
412
|
// Send position update event
|
package/src/IMediaPlayer.ts
CHANGED
|
@@ -15,7 +15,7 @@ export interface IMediaPlayer {
|
|
|
15
15
|
volume: number;
|
|
16
16
|
load(): void;
|
|
17
17
|
pause(): void;
|
|
18
|
-
play(): void
|
|
18
|
+
play(): Promise<void>;
|
|
19
19
|
addEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | AddEventListenerOptions): void;
|
|
20
20
|
removeEventListener(type: string, listener: EventListenerOrEventListenerObject, options?: boolean | EventListenerOptions): void;
|
|
21
21
|
}
|
|
@@ -19,6 +19,10 @@ export interface IMediaPlayerSynchronizerEvent extends IEvent {
|
|
|
19
19
|
* Event details.
|
|
20
20
|
*/
|
|
21
21
|
details: ExtendedMediaSessionActionDetails;
|
|
22
|
+
/**
|
|
23
|
+
* Action errors, including DOMException errors thrown by HTMLMediaElement
|
|
24
|
+
*/
|
|
25
|
+
error?: Error;
|
|
22
26
|
}
|
|
23
27
|
|
|
24
28
|
/**
|
|
@@ -139,52 +143,62 @@ export class MediaPlayerSynchronizer extends EventEmitter {
|
|
|
139
143
|
|
|
140
144
|
// Register media session actions
|
|
141
145
|
for (const action of MediaPlayerSynchronizer.SESSION_ACTIONS) {
|
|
142
|
-
this._mediaSession.setActionHandler(action, (details: ExtendedMediaSessionActionDetails) => {
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
this.
|
|
146
|
+
this._mediaSession.setActionHandler(action, async (details: ExtendedMediaSessionActionDetails) => {
|
|
147
|
+
let error: Error | undefined;
|
|
148
|
+
try {
|
|
149
|
+
switch (details.action) {
|
|
150
|
+
case 'play':
|
|
151
|
+
this._expectedPlaybackState = 'playing';
|
|
152
|
+
if (this._player.paused) {
|
|
153
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PlayAction);
|
|
154
|
+
if (typeof details.seekTime == 'number' && this._player.currentTime < 1.0) {
|
|
155
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SeekingPlayerToStartPosition, null, {position: details.seekTime})
|
|
156
|
+
this._player.currentTime = details.seekTime!;
|
|
157
|
+
}
|
|
158
|
+
// Reference: https://developer.mozilla.org/docs/Web/API/HTMLMediaElement/play#exceptions
|
|
159
|
+
await this._player.play();
|
|
160
|
+
}
|
|
161
|
+
break;
|
|
162
|
+
case 'pause':
|
|
163
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.PauseAction);
|
|
164
|
+
this._expectedPlaybackState = 'paused';
|
|
148
165
|
if (typeof details.seekTime == 'number' && this._player.currentTime < 1.0) {
|
|
149
166
|
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SeekingPlayerToStartPosition, null, {position: details.seekTime})
|
|
150
167
|
this._player.currentTime = details.seekTime!;
|
|
151
168
|
}
|
|
152
|
-
this._player.
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
this.
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
this.catchupPlayer(details.seekTime!);
|
|
183
|
-
}
|
|
184
|
-
break;
|
|
169
|
+
this._player.pause();
|
|
170
|
+
break;
|
|
171
|
+
case 'seekto':
|
|
172
|
+
if (typeof details.seekTime == 'number') {
|
|
173
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SeekToAction, null, {position: details.seekTime});
|
|
174
|
+
this._player.currentTime = details.seekTime!;
|
|
175
|
+
}
|
|
176
|
+
break;
|
|
177
|
+
case 'settrack':
|
|
178
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.SetTrackAction);
|
|
179
|
+
this._expectedPlaybackState = 'none';
|
|
180
|
+
this._player.src = details.metadata!.trackIdentifier;
|
|
181
|
+
this._player.load();
|
|
182
|
+
break;
|
|
183
|
+
case 'datachange':
|
|
184
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.DataChangeAction);
|
|
185
|
+
break;
|
|
186
|
+
case 'catchup':
|
|
187
|
+
if (typeof details.seekTime == 'number') {
|
|
188
|
+
this._logger.sendTelemetryEvent(TelemetryEvents.MediaPlayerSynchronizer.CatchupAction, null, {position: details.seekTime});
|
|
189
|
+
this.catchupPlayer(details.seekTime!);
|
|
190
|
+
}
|
|
191
|
+
break;
|
|
192
|
+
}
|
|
193
|
+
} catch (err: any) {
|
|
194
|
+
if (err instanceof Error) {
|
|
195
|
+
error = err;
|
|
196
|
+
} else {
|
|
197
|
+
error = new Error(err?.message ?? "An unknown error occurred after processing the group session action.");
|
|
198
|
+
}
|
|
185
199
|
}
|
|
186
200
|
|
|
187
|
-
this.dispatchGroupAction(details);
|
|
201
|
+
this.dispatchGroupAction(details, false, error);
|
|
188
202
|
});
|
|
189
203
|
}
|
|
190
204
|
|
|
@@ -402,11 +416,11 @@ export class MediaPlayerSynchronizer extends EventEmitter {
|
|
|
402
416
|
this.dispatchUserAction({action: 'datachange', data: data});
|
|
403
417
|
}
|
|
404
418
|
|
|
405
|
-
private dispatchGroupAction(details: ExtendedMediaSessionActionDetails, delay = false): void {
|
|
419
|
+
private dispatchGroupAction(details: ExtendedMediaSessionActionDetails, delay = false, error: Error | undefined): void {
|
|
406
420
|
if (delay) {
|
|
407
|
-
setTimeout(() => this.emit(MediaPlayerSynchronizerEvents.groupaction, {type: MediaPlayerSynchronizerEvents.groupaction, details: details}), 50);
|
|
421
|
+
setTimeout(() => this.emit(MediaPlayerSynchronizerEvents.groupaction, {type: MediaPlayerSynchronizerEvents.groupaction, details: details, playerError: error}), 50);
|
|
408
422
|
} else {
|
|
409
|
-
this.emit(MediaPlayerSynchronizerEvents.groupaction, {type: MediaPlayerSynchronizerEvents.groupaction, details: details});
|
|
423
|
+
this.emit(MediaPlayerSynchronizerEvents.groupaction, {type: MediaPlayerSynchronizerEvents.groupaction, details: details, error});
|
|
410
424
|
}
|
|
411
425
|
}
|
|
412
426
|
|