@microsoft/live-share-media 1.3.1 → 1.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/bin/LiveMediaSession.d.ts.map +1 -1
- package/bin/LiveMediaSession.js +8 -0
- package/bin/LiveMediaSession.js.map +1 -1
- package/bin/LiveMediaSessionCoordinator.d.ts +15 -0
- package/bin/LiveMediaSessionCoordinator.d.ts.map +1 -1
- package/bin/LiveMediaSessionCoordinator.js +25 -0
- package/bin/LiveMediaSessionCoordinator.js.map +1 -1
- package/bin/MediaPlayerSynchronizer.d.ts +6 -4
- package/bin/MediaPlayerSynchronizer.d.ts.map +1 -1
- package/bin/MediaPlayerSynchronizer.js +41 -12
- package/bin/MediaPlayerSynchronizer.js.map +1 -1
- package/bin/MediaSessionExtensions.d.ts +17 -4
- package/bin/MediaSessionExtensions.d.ts.map +1 -1
- package/bin/MediaSessionExtensions.js +4 -0
- package/bin/MediaSessionExtensions.js.map +1 -1
- package/bin/internals/GroupCoordinatorState.d.ts +15 -1
- package/bin/internals/GroupCoordinatorState.d.ts.map +1 -1
- package/bin/internals/GroupCoordinatorState.js +123 -57
- package/bin/internals/GroupCoordinatorState.js.map +1 -1
- package/bin/internals/GroupPlaybackPosition.d.ts +3 -1
- package/bin/internals/GroupPlaybackPosition.d.ts.map +1 -1
- package/bin/internals/GroupPlaybackPosition.js +7 -3
- package/bin/internals/GroupPlaybackPosition.js.map +1 -1
- package/bin/internals/GroupPlaybackRate.d.ts +39 -0
- package/bin/internals/GroupPlaybackRate.d.ts.map +1 -0
- package/bin/internals/GroupPlaybackRate.js +62 -0
- package/bin/internals/GroupPlaybackRate.js.map +1 -0
- package/bin/internals/GroupPlaybackTrack.d.ts +2 -2
- package/bin/internals/GroupPlaybackTrack.d.ts.map +1 -1
- package/bin/internals/GroupPlaybackTrack.js +3 -2
- 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 +12 -11
- package/bin/internals/GroupPlaybackTrackData.js.map +1 -1
- package/bin/internals/GroupTransportState.d.ts +6 -3
- package/bin/internals/GroupTransportState.d.ts.map +1 -1
- package/bin/internals/GroupTransportState.js +16 -11
- package/bin/internals/GroupTransportState.js.map +1 -1
- package/bin/internals/consts.d.ts +8 -1
- package/bin/internals/consts.d.ts.map +1 -1
- package/bin/internals/consts.js +8 -1
- package/bin/internals/consts.js.map +1 -1
- package/bin/internals/index.d.ts +1 -0
- package/bin/internals/index.d.ts.map +1 -1
- package/bin/internals/index.js +1 -0
- package/bin/internals/index.js.map +1 -1
- package/bin/internals/interfaces.d.ts +10 -0
- package/bin/internals/interfaces.d.ts.map +1 -0
- package/bin/internals/interfaces.js +3 -0
- package/bin/internals/interfaces.js.map +1 -0
- package/package.json +3 -3
- package/src/LiveMediaSession.ts +12 -0
- package/src/LiveMediaSessionCoordinator.ts +49 -0
- package/src/MediaPlayerSynchronizer.ts +55 -15
- package/src/MediaSessionExtensions.ts +18 -2
- package/src/internals/GroupCoordinatorState.ts +196 -79
- package/src/internals/GroupPlaybackPosition.ts +9 -2
- package/src/internals/GroupPlaybackRate.ts +90 -0
- package/src/internals/GroupPlaybackTrack.ts +5 -4
- package/src/internals/GroupPlaybackTrackData.ts +14 -13
- package/src/internals/GroupTransportState.ts +21 -12
- package/src/internals/consts.ts +14 -2
- package/src/internals/index.ts +1 -0
- package/src/internals/interfaces.ts +10 -0
|
@@ -3,10 +3,10 @@
|
|
|
3
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
4
|
*/
|
|
5
5
|
/// <reference types="node" />
|
|
6
|
-
import { ILiveEvent } from "@microsoft/live-share";
|
|
7
6
|
import EventEmitter from "events";
|
|
8
7
|
import { GroupPlaybackTrack } from "./GroupPlaybackTrack";
|
|
9
8
|
import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions";
|
|
9
|
+
import { IGroupStateEvent } from "./interfaces";
|
|
10
10
|
/**
|
|
11
11
|
* @hidden
|
|
12
12
|
*/
|
|
@@ -24,7 +24,7 @@ export declare enum PlaybackTrackDataEvents {
|
|
|
24
24
|
/**
|
|
25
25
|
* @hidden
|
|
26
26
|
*/
|
|
27
|
-
export interface IPlaybackTrackDataChangeEvent extends
|
|
27
|
+
export interface IPlaybackTrackDataChangeEvent extends IGroupStateEvent {
|
|
28
28
|
data: object | null;
|
|
29
29
|
}
|
|
30
30
|
/**
|
|
@@ -36,6 +36,6 @@ export declare class GroupPlaybackTrackData extends EventEmitter {
|
|
|
36
36
|
constructor(track: GroupPlaybackTrack);
|
|
37
37
|
get current(): Readonly<IPlaybackTrackData>;
|
|
38
38
|
get data(): object | null;
|
|
39
|
-
updateData(
|
|
39
|
+
updateData(trackData: IPlaybackTrackData, source: ExtendedMediaSessionActionSource): boolean;
|
|
40
40
|
}
|
|
41
41
|
//# sourceMappingURL=GroupPlaybackTrackData.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupPlaybackTrackData.d.ts","sourceRoot":"","sources":["../../src/internals/GroupPlaybackTrackData.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,
|
|
1
|
+
{"version":3,"file":"GroupPlaybackTrackData.d.ts","sourceRoot":"","sources":["../../src/internals/GroupPlaybackTrackData.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EACH,kBAAkB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAEhD;;GAEG;AACH,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,oBAAY,uBAAuB;IAC/B,UAAU,eAAe;CAC5B;AAED;;GAEG;AACH,MAAM,WAAW,6BAA8B,SAAQ,gBAAgB;IACnE,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED;;GAEG;AACH,qBAAa,sBAAuB,SAAQ,YAAY;IACpD,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,QAAQ,CAAqB;gBAEzB,KAAK,EAAE,kBAAkB;IAgBrC,IAAW,OAAO,IAAI,QAAQ,CAAC,kBAAkB,CAAC,CAEjD;IAED,IAAW,IAAI,IAAI,MAAM,GAAG,IAAI,CAE/B;IAEM,UAAU,CACb,SAAS,EAAE,kBAAkB,EAC7B,MAAM,EAAE,gCAAgC,GACzC,OAAO;CAkCb"}
|
|
@@ -41,30 +41,31 @@ class GroupPlaybackTrackData extends events_1.default {
|
|
|
41
41
|
get data() {
|
|
42
42
|
return this.current.data;
|
|
43
43
|
}
|
|
44
|
-
updateData(
|
|
44
|
+
updateData(trackData, source) {
|
|
45
45
|
// Ignore state changes that are older
|
|
46
46
|
const current = this.current;
|
|
47
|
-
if (
|
|
47
|
+
if (trackData.timestamp < current.timestamp) {
|
|
48
48
|
return false;
|
|
49
49
|
}
|
|
50
50
|
// Ignore state changes that have the same timestamp and the clientId sorts higher.
|
|
51
|
-
if (
|
|
52
|
-
|
|
51
|
+
if (trackData.timestamp == current.timestamp &&
|
|
52
|
+
trackData.clientId.localeCompare(current.clientId) > 0) {
|
|
53
53
|
return false;
|
|
54
54
|
}
|
|
55
55
|
// Ignore state changes for same data object
|
|
56
|
-
if (JSON.stringify(current.data) == JSON.stringify(
|
|
56
|
+
if (JSON.stringify(current.data) == JSON.stringify(trackData.data)) {
|
|
57
57
|
return false;
|
|
58
58
|
}
|
|
59
59
|
// Update current data
|
|
60
|
-
this._current =
|
|
60
|
+
this._current = trackData;
|
|
61
61
|
// Notify listeners
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
clientId:
|
|
65
|
-
data:
|
|
62
|
+
const event = {
|
|
63
|
+
name: PlaybackTrackDataEvents.dataChange,
|
|
64
|
+
clientId: trackData.clientId,
|
|
65
|
+
data: trackData.data,
|
|
66
66
|
source,
|
|
67
|
-
}
|
|
67
|
+
};
|
|
68
|
+
this.emit(PlaybackTrackDataEvents.dataChange, event);
|
|
68
69
|
return true;
|
|
69
70
|
}
|
|
70
71
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupPlaybackTrackData.js","sourceRoot":"","sources":["../../src/internals/GroupPlaybackTrackData.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;
|
|
1
|
+
{"version":3,"file":"GroupPlaybackTrackData.js","sourceRoot":"","sources":["../../src/internals/GroupPlaybackTrackData.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAEH,oDAAkC;AAClC,6DAG8B;AAa9B;;GAEG;AACH,IAAY,uBAEX;AAFD,WAAY,uBAAuB;IAC/B,oDAAyB,CAAA;AAC7B,CAAC,EAFW,uBAAuB,GAAvB,+BAAuB,KAAvB,+BAAuB,QAElC;AASD;;GAEG;AACH,MAAa,sBAAuB,SAAQ,gBAAY;IAIpD,YAAY,KAAyB;QACjC,KAAK,EAAE,CAAC;QACR,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC;QACpB,IAAI,CAAC,QAAQ,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,SAAS,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAC;QAE3D,2BAA2B;QAC3B,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,6CAAwB,CAAC,WAAW,EAAE,GAAG,EAAE;YACtD,+CAA+C;YAC/C,IAAI,CAAC,QAAQ,GAAG;gBACZ,IAAI,EAAE,IAAI;gBACV,SAAS,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,SAAS;gBACxC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,QAAQ;aACzC,CAAC;QACN,CAAC,CAAC,CAAC;IACP,CAAC;IAED,IAAW,OAAO;QACd,OAAO,IAAI,CAAC,QAAQ,CAAC;IACzB,CAAC;IAED,IAAW,IAAI;QACX,OAAO,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC;IAC7B,CAAC;IAEM,UAAU,CACb,SAA6B,EAC7B,MAAwC;QAExC,sCAAsC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC;QAC7B,IAAI,SAAS,CAAC,SAAS,GAAG,OAAO,CAAC,SAAS,EAAE;YACzC,OAAO,KAAK,CAAC;SAChB;QAED,mFAAmF;QACnF,IACI,SAAS,CAAC,SAAS,IAAI,OAAO,CAAC,SAAS;YACxC,SAAS,CAAC,QAAQ,CAAC,aAAa,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,EACxD;YACE,OAAO,KAAK,CAAC;SAChB;QAED,4CAA4C;QAC5C,IAAI,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,IAAI,CAAC,EAAE;YAChE,OAAO,KAAK,CAAC;SAChB;QAED,sBAAsB;QACtB,IAAI,CAAC,QAAQ,GAAG,SAAS,CAAC;QAE1B,mBAAmB;QACnB,MAAM,KAAK,GAAkC;YACzC,IAAI,EAAE,uBAAuB,CAAC,UAAU;YACxC,QAAQ,EAAE,SAAS,CAAC,QAAQ;YAC5B,IAAI,EAAE,SAAS,CAAC,IAAI;YACpB,MAAM;SACT,CAAC;QACF,IAAI,CAAC,IAAI,CAAC,uBAAuB,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;QAErD,OAAO,IAAI,CAAC;IAChB,CAAC;CACJ;AAjED,wDAiEC"}
|
|
@@ -3,11 +3,13 @@
|
|
|
3
3
|
* Licensed under the Microsoft Live Share SDK License.
|
|
4
4
|
*/
|
|
5
5
|
/// <reference types="node" />
|
|
6
|
-
import {
|
|
6
|
+
import { LiveShareRuntime } from "@microsoft/live-share";
|
|
7
7
|
import EventEmitter from "events";
|
|
8
8
|
import { IMediaPlayerState } from "../LiveMediaSessionCoordinator";
|
|
9
9
|
import { ExtendedMediaSessionPlaybackState, ExtendedMediaSessionAction, ExtendedMediaSessionActionSource } from "../MediaSessionExtensions";
|
|
10
10
|
import { GroupPlaybackTrack } from "./GroupPlaybackTrack";
|
|
11
|
+
import { IGroupStateEvent } from "./interfaces";
|
|
12
|
+
import { GroupPlaybackRate } from "./GroupPlaybackRate";
|
|
11
13
|
/**
|
|
12
14
|
* @hidden
|
|
13
15
|
*/
|
|
@@ -26,7 +28,7 @@ export declare enum GroupTransportStateEvents {
|
|
|
26
28
|
/**
|
|
27
29
|
* @hidden
|
|
28
30
|
*/
|
|
29
|
-
export interface ITransportStateChangeEvent extends
|
|
31
|
+
export interface ITransportStateChangeEvent extends IGroupStateEvent {
|
|
30
32
|
action: ExtendedMediaSessionAction;
|
|
31
33
|
seekTime?: number;
|
|
32
34
|
}
|
|
@@ -36,9 +38,10 @@ export interface ITransportStateChangeEvent extends ILiveEvent {
|
|
|
36
38
|
export declare class GroupTransportState extends EventEmitter {
|
|
37
39
|
private readonly _getMediaPlayerState;
|
|
38
40
|
private _track;
|
|
41
|
+
private _playbackRate;
|
|
39
42
|
private readonly _liveRuntime;
|
|
40
43
|
private _current;
|
|
41
|
-
constructor(track: GroupPlaybackTrack, getMediaPlayerState: () => IMediaPlayerState, liveRuntime: LiveShareRuntime);
|
|
44
|
+
constructor(track: GroupPlaybackTrack, playbackRate: GroupPlaybackRate, getMediaPlayerState: () => IMediaPlayerState, liveRuntime: LiveShareRuntime);
|
|
42
45
|
get current(): Readonly<ITransportState>;
|
|
43
46
|
get playbackState(): ExtendedMediaSessionPlaybackState;
|
|
44
47
|
get startPosition(): number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTransportState.d.ts","sourceRoot":"","sources":["../../src/internals/GroupTransportState.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"GroupTransportState.d.ts","sourceRoot":"","sources":["../../src/internals/GroupTransportState.ts"],"names":[],"mappings":"AAAA;;;GAGG;;AAEH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AACzD,OAAO,YAAY,MAAM,QAAQ,CAAC;AAClC,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EACH,iCAAiC,EACjC,0BAA0B,EAC1B,gCAAgC,EACnC,MAAM,2BAA2B,CAAC;AACnC,OAAO,EACH,kBAAkB,EAErB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AAExD;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,aAAa,EAAE,iCAAiC,CAAC;IACjD,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;GAEG;AACH,oBAAY,yBAAyB;IACjC,oBAAoB,yBAAyB;CAChD;AAED;;GAEG;AACH,MAAM,WAAW,0BAA2B,SAAQ,gBAAgB;IAChE,MAAM,EAAE,0BAA0B,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;GAEG;AACH,qBAAa,mBAAoB,SAAQ,YAAY;IACjD,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAA0B;IAC/D,OAAO,CAAC,MAAM,CAAqB;IACnC,OAAO,CAAC,aAAa,CAAoB;IACzC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAmB;IAChD,OAAO,CAAC,QAAQ,CAAkB;gBAG9B,KAAK,EAAE,kBAAkB,EACzB,YAAY,EAAE,iBAAiB,EAC/B,mBAAmB,EAAE,MAAM,iBAAiB,EAC5C,WAAW,EAAE,gBAAgB;IA0BjC,IAAW,OAAO,IAAI,QAAQ,CAAC,eAAe,CAAC,CAE9C;IAED,IAAW,aAAa,IAAI,iCAAiC,CAE5D;IAED,IAAW,aAAa,IAAI,MAAM,CAEjC;IAED,IAAW,SAAS,IAAI,MAAM,CAE7B;IAED,IAAW,KAAK,IAAI,kBAAkB,CAErC;IAEM,OAAO,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO;IAOxC,WAAW,CACd,KAAK,EAAE,eAAe,EACtB,MAAM,EAAE,gCAAgC,GACzC,OAAO;CA+Db"}
|
|
@@ -21,11 +21,12 @@ var GroupTransportStateEvents;
|
|
|
21
21
|
* @hidden
|
|
22
22
|
*/
|
|
23
23
|
class GroupTransportState extends events_1.default {
|
|
24
|
-
constructor(track, getMediaPlayerState, liveRuntime) {
|
|
24
|
+
constructor(track, playbackRate, getMediaPlayerState, liveRuntime) {
|
|
25
25
|
super();
|
|
26
26
|
this._liveRuntime = liveRuntime;
|
|
27
27
|
this._getMediaPlayerState = getMediaPlayerState;
|
|
28
28
|
this._track = track;
|
|
29
|
+
this._playbackRate = playbackRate;
|
|
29
30
|
this._current = {
|
|
30
31
|
playbackState: "none",
|
|
31
32
|
startPosition: 0.0,
|
|
@@ -83,33 +84,37 @@ class GroupTransportState extends events_1.default {
|
|
|
83
84
|
const playerState = this._getMediaPlayerState().playbackState;
|
|
84
85
|
if (originalState.playbackState == state.playbackState &&
|
|
85
86
|
playerState != "ended") {
|
|
86
|
-
|
|
87
|
-
|
|
87
|
+
const event = {
|
|
88
|
+
name: GroupTransportStateEvents.transportStateChange,
|
|
88
89
|
action: "seekto",
|
|
89
90
|
clientId: state.clientId,
|
|
90
91
|
seekTime: state.startPosition,
|
|
91
92
|
source,
|
|
92
|
-
}
|
|
93
|
+
};
|
|
94
|
+
this.emit(GroupTransportStateEvents.transportStateChange, event);
|
|
93
95
|
}
|
|
94
96
|
else if (state.playbackState == "playing") {
|
|
95
97
|
const now = this._liveRuntime.getTimestamp();
|
|
96
|
-
const projectedPosition = state.startPosition +
|
|
97
|
-
|
|
98
|
-
|
|
98
|
+
const projectedPosition = state.startPosition +
|
|
99
|
+
((now - state.timestamp) / 1000) * this._playbackRate.rate;
|
|
100
|
+
const event = {
|
|
101
|
+
name: GroupTransportStateEvents.transportStateChange,
|
|
99
102
|
action: "play",
|
|
100
103
|
clientId: state.clientId,
|
|
101
104
|
seekTime: projectedPosition,
|
|
102
105
|
source,
|
|
103
|
-
}
|
|
106
|
+
};
|
|
107
|
+
this.emit(GroupTransportStateEvents.transportStateChange, event);
|
|
104
108
|
}
|
|
105
109
|
else {
|
|
106
|
-
|
|
107
|
-
|
|
110
|
+
const event = {
|
|
111
|
+
name: GroupTransportStateEvents.transportStateChange,
|
|
108
112
|
action: "pause",
|
|
109
113
|
clientId: state.clientId,
|
|
110
114
|
seekTime: state.startPosition,
|
|
111
115
|
source,
|
|
112
|
-
}
|
|
116
|
+
};
|
|
117
|
+
this.emit(GroupTransportStateEvents.transportStateChange, event);
|
|
113
118
|
}
|
|
114
119
|
return true;
|
|
115
120
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GroupTransportState.js","sourceRoot":"","sources":["../../src/internals/GroupTransportState.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;AAGH,oDAAkC;AAOlC,6DAG8B;
|
|
1
|
+
{"version":3,"file":"GroupTransportState.js","sourceRoot":"","sources":["../../src/internals/GroupTransportState.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,12 +14,12 @@ export declare const TelemetryEvents: {
|
|
|
14
14
|
PlayAction: string;
|
|
15
15
|
PauseAction: string;
|
|
16
16
|
SeekToAction: string;
|
|
17
|
+
RateChangeAction: string;
|
|
17
18
|
CatchupAction: string;
|
|
18
19
|
SetTrackAction: string;
|
|
19
20
|
DataChangeAction: string;
|
|
20
21
|
UserTappedVideoToPlay: string;
|
|
21
22
|
UserTappedVideoToPlayError: string;
|
|
22
|
-
PlaybackRateChangeBlocked: string;
|
|
23
23
|
PlayerBlockedOperation: string;
|
|
24
24
|
SeekingPlayerToStartPosition: string;
|
|
25
25
|
BeginSeekCalled: string;
|
|
@@ -27,6 +27,7 @@ export declare const TelemetryEvents: {
|
|
|
27
27
|
PlayCalled: string;
|
|
28
28
|
PauseCalled: string;
|
|
29
29
|
SeekToCalled: string;
|
|
30
|
+
RateChangeCalled: string;
|
|
30
31
|
SetTrackCalled: string;
|
|
31
32
|
SetTrackDataCalled: string;
|
|
32
33
|
};
|
|
@@ -34,6 +35,7 @@ export declare const TelemetryEvents: {
|
|
|
34
35
|
PlayAction: string;
|
|
35
36
|
PauseAction: string;
|
|
36
37
|
SeekToAction: string;
|
|
38
|
+
RateChangeAction: string;
|
|
37
39
|
CatchUpAction: string;
|
|
38
40
|
SetTrackAction: string;
|
|
39
41
|
DataChangeAction: string;
|
|
@@ -43,6 +45,7 @@ export declare const TelemetryEvents: {
|
|
|
43
45
|
PlayCalled: string;
|
|
44
46
|
PauseCalled: string;
|
|
45
47
|
SeekToCalled: string;
|
|
48
|
+
SetPlaybackRateCalled: string;
|
|
46
49
|
SetTrackCalled: string;
|
|
47
50
|
SetTrackDataCalled: string;
|
|
48
51
|
BeginSuspension: string;
|
|
@@ -55,6 +58,7 @@ export declare const TelemetryEvents: {
|
|
|
55
58
|
RemotePlayReceived: string;
|
|
56
59
|
RemotePauseReceived: string;
|
|
57
60
|
RemoteSeekToReceived: string;
|
|
61
|
+
RemoteRateChangeReceived: string;
|
|
58
62
|
PositionUpdateEventError: string;
|
|
59
63
|
LiveObjectSynchronizerStartError: string;
|
|
60
64
|
};
|
|
@@ -65,12 +69,15 @@ export declare const TelemetryEvents: {
|
|
|
65
69
|
TrackDataChangeDelayed: string;
|
|
66
70
|
TransportStateChanged: string;
|
|
67
71
|
TransportStateChangeDelayed: string;
|
|
72
|
+
PlaybackRateChanged: string;
|
|
73
|
+
PlaybackRateChangedDelayed: string;
|
|
68
74
|
BeginSoftSuspension: string;
|
|
69
75
|
CheckingForSyncIssues: string;
|
|
70
76
|
TrackOutOfSync: string;
|
|
71
77
|
TrackDataOutOfSync: string;
|
|
72
78
|
TransportOutOfSync: string;
|
|
73
79
|
PositionOutOfSync: string;
|
|
80
|
+
PlaybackRateOutOfSync: string;
|
|
74
81
|
};
|
|
75
82
|
};
|
|
76
83
|
//# sourceMappingURL=consts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/internals/consts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/internals/consts.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;;GAIG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiG3B,CAAC"}
|
package/bin/internals/consts.js
CHANGED
|
@@ -17,12 +17,12 @@ exports.TelemetryEvents = {
|
|
|
17
17
|
PlayAction: "MediaPlayerSynchronizer:PlayAction",
|
|
18
18
|
PauseAction: "MediaPlayerSynchronizer:PauseAction",
|
|
19
19
|
SeekToAction: "MediaPlayerSynchronizer:SeekToAction",
|
|
20
|
+
RateChangeAction: "MediaPlayerSynchronizer:RateChangeAction",
|
|
20
21
|
CatchupAction: "MediaPlayerSynchronizer:CatchupAction",
|
|
21
22
|
SetTrackAction: "MediaPlayerSynchronizer:SetTrackAction",
|
|
22
23
|
DataChangeAction: "MediaPlayerSynchronizer:DataChangeAction",
|
|
23
24
|
UserTappedVideoToPlay: transmit("MediaPlayerSynchronizer:UserTappedVideoToPlay"),
|
|
24
25
|
UserTappedVideoToPlayError: "MediaPlayerSynchronizer:UserTappedVideoToPlayError",
|
|
25
|
-
PlaybackRateChangeBlocked: "MediaPlayerSynchronizer:PlaybackRateChangeBlocked",
|
|
26
26
|
PlayerBlockedOperation: transmit("MediaPlayerSynchronizer:PlayerBlockedOperation"),
|
|
27
27
|
SeekingPlayerToStartPosition: "MediaPlayerSynchronizer:SeekingPlayerToStartPosition",
|
|
28
28
|
BeginSeekCalled: "MediaPlayerSynchronizer:BeginSeekCalled",
|
|
@@ -30,6 +30,7 @@ exports.TelemetryEvents = {
|
|
|
30
30
|
PlayCalled: "MediaPlayerSynchronizer:PlayCalled",
|
|
31
31
|
PauseCalled: "MediaPlayerSynchronizer:PauseCalled",
|
|
32
32
|
SeekToCalled: "MediaPlayerSynchronizer:SeekToCalled",
|
|
33
|
+
RateChangeCalled: "MediaSession:RateChangeCalled",
|
|
33
34
|
SetTrackCalled: "MediaPlayerSynchronizer:SetTrackCalled",
|
|
34
35
|
SetTrackDataCalled: "MediaPlayerSynchronizer:SetTrackDataCalled",
|
|
35
36
|
},
|
|
@@ -37,6 +38,7 @@ exports.TelemetryEvents = {
|
|
|
37
38
|
PlayAction: transmit("MediaSession:PlayAction"),
|
|
38
39
|
PauseAction: transmit("MediaSession:PauseAction"),
|
|
39
40
|
SeekToAction: transmit("MediaSession:SeekToAction"),
|
|
41
|
+
RateChangeAction: transmit("MediaSession:RateChangeAction"),
|
|
40
42
|
CatchUpAction: transmit("MediaSession:CatchUpAction"),
|
|
41
43
|
SetTrackAction: transmit("MediaSession:SetTrackAction"),
|
|
42
44
|
DataChangeAction: "MediaSession:DataChangeAction",
|
|
@@ -46,6 +48,7 @@ exports.TelemetryEvents = {
|
|
|
46
48
|
PlayCalled: transmit("SessionCoordinator:PlayCalled"),
|
|
47
49
|
PauseCalled: transmit("SessionCoordinator:PauseCalled"),
|
|
48
50
|
SeekToCalled: transmit("SessionCoordinator:SeekToCalled"),
|
|
51
|
+
SetPlaybackRateCalled: transmit("SessionCoordinator:SetPlaybackRateCalled"),
|
|
49
52
|
SetTrackCalled: transmit("SessionCoordinator:SetTrackCalled"),
|
|
50
53
|
SetTrackDataCalled: "SessionCoordinator:SetTrackDataCalled",
|
|
51
54
|
BeginSuspension: "SessionCoordinator:BeginSuspension",
|
|
@@ -58,6 +61,7 @@ exports.TelemetryEvents = {
|
|
|
58
61
|
RemotePlayReceived: transmit("SessionCoordinator:RemotePlayReceived"),
|
|
59
62
|
RemotePauseReceived: transmit("SessionCoordinator:RemotePauseReceived"),
|
|
60
63
|
RemoteSeekToReceived: transmit("SessionCoordinator:RemoteSeekToReceived"),
|
|
64
|
+
RemoteRateChangeReceived: transmit("SessionCoordinator:RemoteRateChangeReceived"),
|
|
61
65
|
PositionUpdateEventError: "SessionCoordinator:PositionUpdateEventError",
|
|
62
66
|
LiveObjectSynchronizerStartError: "SessionCoordinator:LiveObjectSynchronizerStartError",
|
|
63
67
|
},
|
|
@@ -68,12 +72,15 @@ exports.TelemetryEvents = {
|
|
|
68
72
|
TrackDataChangeDelayed: "GroupCoordinator:TrackDataChangeDelayed",
|
|
69
73
|
TransportStateChanged: "GroupCoordinator:TransportStateChanged",
|
|
70
74
|
TransportStateChangeDelayed: "GroupCoordinator:TransportStateChangeDelayed",
|
|
75
|
+
PlaybackRateChanged: "GroupCoordinator:PlaybackRateChanged",
|
|
76
|
+
PlaybackRateChangedDelayed: "GroupCoordinator:PlaybackRateChanged",
|
|
71
77
|
BeginSoftSuspension: "GroupCoordinator:BeginSoftSuspension",
|
|
72
78
|
CheckingForSyncIssues: "GroupCoordinator:CheckingForSyncIssues",
|
|
73
79
|
TrackOutOfSync: transmit("GroupCoordinator:TrackOutOfSync"),
|
|
74
80
|
TrackDataOutOfSync: transmit("GroupCoordinator:TrackDataOutOfSync"),
|
|
75
81
|
TransportOutOfSync: transmit("GroupCoordinator:TransportOutOfSync"),
|
|
76
82
|
PositionOutOfSync: transmit("GroupCoordinator:PositionOutOfSync"),
|
|
83
|
+
PlaybackRateOutOfSync: transmit("GroupCoordinator:PlaybackRateOutOfSync"),
|
|
77
84
|
},
|
|
78
85
|
};
|
|
79
86
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/internals/consts.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEH;;;;GAIG;AACU,QAAA,eAAe,GAAG;IAC3B,uBAAuB,EAAE;QACrB,sBAAsB,EAClB,gDAAgD;QACpD,WAAW,EAAE,qCAAqC;QAClD,UAAU,EAAE,oCAAoC;QAChD,WAAW,EAAE,qCAAqC;QAClD,YAAY,EAAE,sCAAsC;QACpD,aAAa,EAAE,uCAAuC;QACtD,cAAc,EAAE,wCAAwC;QACxD,gBAAgB,EAAE,0CAA0C;QAC5D,qBAAqB,EAAE,QAAQ,CAC3B,+CAA+C,CAClD;QACD,0BAA0B,EACtB,oDAAoD;QACxD,
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/internals/consts.ts"],"names":[],"mappings":"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"}
|
package/bin/internals/index.d.ts
CHANGED
|
@@ -8,5 +8,6 @@ export * from "./GroupPlaybackPosition";
|
|
|
8
8
|
export * from "./GroupPlaybackTrack";
|
|
9
9
|
export * from "./GroupPlaybackTrackData";
|
|
10
10
|
export * from "./GroupTransportState";
|
|
11
|
+
export * from "./GroupPlaybackRate";
|
|
11
12
|
export * from "./errors";
|
|
12
13
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/internals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,UAAU,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/internals/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,cAAc,UAAU,CAAC;AACzB,cAAc,yBAAyB,CAAC;AACxC,cAAc,yBAAyB,CAAC;AACxC,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,uBAAuB,CAAC;AACtC,cAAc,qBAAqB,CAAC;AACpC,cAAc,UAAU,CAAC"}
|
package/bin/internals/index.js
CHANGED
|
@@ -24,5 +24,6 @@ __exportStar(require("./GroupPlaybackPosition"), exports);
|
|
|
24
24
|
__exportStar(require("./GroupPlaybackTrack"), exports);
|
|
25
25
|
__exportStar(require("./GroupPlaybackTrackData"), exports);
|
|
26
26
|
__exportStar(require("./GroupTransportState"), exports);
|
|
27
|
+
__exportStar(require("./GroupPlaybackRate"), exports);
|
|
27
28
|
__exportStar(require("./errors"), exports);
|
|
28
29
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internals/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,0DAAwC;AACxC,0DAAwC;AACxC,uDAAqC;AACrC,2DAAyC;AACzC,wDAAsC;AACtC,2CAAyB"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/internals/index.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;;;;;;;;;;;;;;AAEH,2CAAyB;AACzB,0DAAwC;AACxC,0DAAwC;AACxC,uDAAqC;AACrC,2DAAyC;AACzC,wDAAsC;AACtC,sDAAoC;AACpC,2CAAyB"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { IEvent } from "@microsoft/live-share";
|
|
2
|
+
import { ExtendedMediaSessionActionSource } from "../MediaSessionExtensions";
|
|
3
|
+
/**
|
|
4
|
+
* @hidden
|
|
5
|
+
*/
|
|
6
|
+
export interface IGroupStateEvent extends IEvent {
|
|
7
|
+
clientId: string;
|
|
8
|
+
source: ExtendedMediaSessionActionSource;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=interfaces.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.d.ts","sourceRoot":"","sources":["../../src/internals/interfaces.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gCAAgC,EAAE,MAAM,2BAA2B,CAAC;AAE7E;;GAEG;AACH,MAAM,WAAW,gBAAiB,SAAQ,MAAM;IAC5C,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,gCAAgC,CAAC;CAC5C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interfaces.js","sourceRoot":"","sources":["../../src/internals/interfaces.ts"],"names":[],"mappings":""}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@microsoft/live-share-media",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.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",
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
"test:race": "node ./../live-share/test-for-race-conditions.js"
|
|
16
16
|
},
|
|
17
17
|
"devDependencies": {
|
|
18
|
-
"@microsoft/live-share": "1.
|
|
18
|
+
"@microsoft/live-share": "1.4.0",
|
|
19
19
|
"@fluidframework/test-client-utils": "^1.3.6",
|
|
20
20
|
"@fluidframework/test-runtime-utils": "^1.3.6",
|
|
21
21
|
"@fluidframework/test-utils": "^1.3.6",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"typescript": "^5.0.4"
|
|
31
31
|
},
|
|
32
32
|
"peerDependencies": {
|
|
33
|
-
"@microsoft/live-share": "1.
|
|
33
|
+
"@microsoft/live-share": "1.4.0",
|
|
34
34
|
"fluid-framework": "^1.2.3"
|
|
35
35
|
},
|
|
36
36
|
"repository": {
|
package/src/LiveMediaSession.ts
CHANGED
|
@@ -236,6 +236,18 @@ export class LiveMediaSession extends LiveDataObject {
|
|
|
236
236
|
}
|
|
237
237
|
);
|
|
238
238
|
break;
|
|
239
|
+
case "ratechange":
|
|
240
|
+
if (!details.playbackRate) {
|
|
241
|
+
break;
|
|
242
|
+
}
|
|
243
|
+
this.logger.sendTelemetryEvent(
|
|
244
|
+
TelemetryEvents.MediaSession.RateChangeAction,
|
|
245
|
+
null,
|
|
246
|
+
{
|
|
247
|
+
playbackRate: details.playbackRate,
|
|
248
|
+
}
|
|
249
|
+
);
|
|
250
|
+
break;
|
|
239
251
|
case "seekto":
|
|
240
252
|
this.logger.sendTelemetryEvent(
|
|
241
253
|
TelemetryEvents.MediaSession.SeekToAction,
|
|
@@ -33,6 +33,7 @@ import {
|
|
|
33
33
|
ISetTrackDataEvent,
|
|
34
34
|
TrackMetadataNotSetError,
|
|
35
35
|
ActionBlockedError,
|
|
36
|
+
IRateChangeCommandEvent,
|
|
36
37
|
} from "./internals";
|
|
37
38
|
import { LiveMediaSessionCoordinatorSuspension } from "./LiveMediaSessionCoordinatorSuspension";
|
|
38
39
|
import EventEmitter from "events";
|
|
@@ -87,6 +88,7 @@ export class LiveMediaSessionCoordinator extends EventEmitter {
|
|
|
87
88
|
private _playEvent?: LiveEventTarget<ITransportCommandEvent>;
|
|
88
89
|
private _pauseEvent?: LiveEventTarget<ITransportCommandEvent>;
|
|
89
90
|
private _seekToEvent?: LiveEventTarget<ITransportCommandEvent>;
|
|
91
|
+
private _rateChangeEvent?: LiveEventTarget<IRateChangeCommandEvent>;
|
|
90
92
|
private _setTrackEvent?: LiveEventTarget<ISetTrackEvent>;
|
|
91
93
|
private _setTrackDataEvent?: LiveEventTarget<ISetTrackDataEvent>;
|
|
92
94
|
private _positionUpdateEvent?: LiveEventTarget<IPositionUpdateEvent>;
|
|
@@ -170,6 +172,20 @@ export class LiveMediaSessionCoordinator extends EventEmitter {
|
|
|
170
172
|
*/
|
|
171
173
|
public canSetTrackData: boolean = true;
|
|
172
174
|
|
|
175
|
+
/**
|
|
176
|
+
* Controls whether or not the local client is allowed to change the playback rate.
|
|
177
|
+
*
|
|
178
|
+
* @remarks
|
|
179
|
+
* This flag largely meant to influence decisions made by the coordinator and can be used by
|
|
180
|
+
* the UI to determine what controls should be shown to the user. It does not provide any
|
|
181
|
+
* security in itself.
|
|
182
|
+
*
|
|
183
|
+
* If your app is running in a semi-trusted environment where only some clients are allowed
|
|
184
|
+
* to change the tracks data object, you should use "role based verification" to enforce those
|
|
185
|
+
* policies.
|
|
186
|
+
*/
|
|
187
|
+
public canSetPlaybackRate: boolean = true;
|
|
188
|
+
|
|
173
189
|
/**
|
|
174
190
|
* Controls whether or not the local client is allowed to send position updates to the group.
|
|
175
191
|
*
|
|
@@ -346,6 +362,27 @@ export class LiveMediaSessionCoordinator extends EventEmitter {
|
|
|
346
362
|
}
|
|
347
363
|
}
|
|
348
364
|
|
|
365
|
+
public async setPlaybackRate(playbackRate: number): Promise<void> {
|
|
366
|
+
LiveDataObjectNotInitializedError.assert(
|
|
367
|
+
"LiveMediaSessionCoordinator:setPlaybackRate",
|
|
368
|
+
"setPlaybackRate",
|
|
369
|
+
this.initializeState
|
|
370
|
+
);
|
|
371
|
+
ActionBlockedError.assert(
|
|
372
|
+
this.canSetPlaybackRate,
|
|
373
|
+
"LiveMediaSessionCoordinator:setPlaybackRate",
|
|
374
|
+
"setPlaybackRate",
|
|
375
|
+
"canSetPlaybackRate"
|
|
376
|
+
);
|
|
377
|
+
|
|
378
|
+
this._logger.sendTelemetryEvent(
|
|
379
|
+
TelemetryEvents.SessionCoordinator.SetPlaybackRateCalled,
|
|
380
|
+
null,
|
|
381
|
+
{ playbackRate }
|
|
382
|
+
);
|
|
383
|
+
await this._rateChangeEvent!.sendEvent({ playbackRate });
|
|
384
|
+
}
|
|
385
|
+
|
|
349
386
|
/**
|
|
350
387
|
* Instructs the group to load a new track.
|
|
351
388
|
*
|
|
@@ -624,6 +661,11 @@ export class LiveMediaSessionCoordinator extends EventEmitter {
|
|
|
624
661
|
this.emit(evt.name, evt)
|
|
625
662
|
);
|
|
626
663
|
|
|
664
|
+
this._groupState.on(
|
|
665
|
+
GroupCoordinatorStateEvents.triggeractionignored,
|
|
666
|
+
(evt) => this.emit(evt.name, evt)
|
|
667
|
+
);
|
|
668
|
+
|
|
627
669
|
// Listen for track changes
|
|
628
670
|
this._setTrackEvent = new LiveEventTarget<ISetTrackEvent>(
|
|
629
671
|
scope,
|
|
@@ -649,6 +691,13 @@ export class LiveMediaSessionCoordinator extends EventEmitter {
|
|
|
649
691
|
(event, local) =>
|
|
650
692
|
this._groupState!.handleTransportCommand(event, local)
|
|
651
693
|
);
|
|
694
|
+
this._rateChangeEvent = new LiveEventTarget(
|
|
695
|
+
scope,
|
|
696
|
+
"rateChange",
|
|
697
|
+
(event: ILiveEvent<IRateChangeCommandEvent>, local) => {
|
|
698
|
+
this._groupState!.handleRateChangeCommand(event, local);
|
|
699
|
+
}
|
|
700
|
+
);
|
|
652
701
|
|
|
653
702
|
// Listen for position updates
|
|
654
703
|
this._positionUpdateEvent = new LiveEventTarget(
|