@webex/web-client-media-engine 2.1.7 → 3.0.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.
@@ -1,11 +1,12 @@
1
- import { LocalTrack, ConnectionState } from '@webex/webrtc-core';
2
- export { AudioDeviceConstraints, ConnectionState, LocalCameraTrack, LocalDisplayTrack, LocalMicrophoneTrack, LocalSystemAudioTrack, LocalTrack, LocalTrackEvents, MediaStreamTrackKind, PeerConnection, TrackEndEvent, TrackMuteEvent, TrackPublishEvent, VideoDeviceConstraints, WcmeError, createCameraTrack, createDisplayTrack, createDisplayTrackWithAudio, createMicrophoneTrack, getAudioInputDevices, getAudioOutputDevices, getDevices, getVideoInputDevices, setOnDeviceChangeHandler } from '@webex/webrtc-core';
3
- import { StreamId, StreamState, Policy, PolicySpecificInfo, CodecInfo, StreamRequest as StreamRequest$1, ActiveSpeakerNotificationMsg, MediaContent, MediaType } from '@webex/json-multistream';
4
- export { Logger as JMPLogger, StreamState } from '@webex/json-multistream';
1
+ import { LocalStream, ConnectionState } from '@webex/webrtc-core';
2
+ export { AudioDeviceConstraints, ConnectionState, LocalCameraStream, LocalDisplayStream, LocalMicrophoneStream, LocalStream, LocalStreamEventNames, LocalSystemAudioStream, MediaStreamTrackKind, PeerConnection, RemoteStream, StreamEventNames, VideoDeviceConstraints, WcmeError, createCameraStream, createDisplayStream, createDisplayStreamWithAudio, createMicrophoneStream, getAudioInputDevices, getAudioOutputDevices, getDevices, getVideoInputDevices, setOnDeviceChangeHandler } from '@webex/webrtc-core';
3
+ import { StreamId, StreamState, MediaType, Policy, PolicySpecificInfo, CodecInfo, StreamRequest as StreamRequest$1, MediaContent } from '@webex/json-multistream';
4
+ export { ActiveSpeakerInfo, CodecInfo, H264Codec, Logger as JMPLogger, MediaContent, MediaFamily, MediaType, Policy, PolicySpecificInfo, ReceiverSelectedInfo, StreamState, getMediaContent, getMediaFamily, getMediaType } from '@webex/json-multistream';
5
5
  import { LogData } from '@webex/rtcstats';
6
6
  import TypedEmitter, { EventMap } from 'typed-emitter';
7
- import { ReceiveSlot as ReceiveSlot$1 } from 'receive-slot';
7
+ import { TypedEvent } from '@webex/ts-events';
8
8
  import { AvMediaDescription } from '@webex/ts-sdp';
9
+ import { ReceiveSlot as ReceiveSlot$1 } from 'receive-slot';
9
10
  import * as js_logger from 'js-logger';
10
11
  import { ILogLevel, ILogHandler } from 'js-logger';
11
12
  export { ILogHandler, default as Logger } from 'js-logger';
@@ -46,14 +47,15 @@ declare function compareReceiveSlotIds(id1: ReceiveSlotId, id2: ReceiveSlotId):
46
47
  declare enum ReceiveSlotEvents {
47
48
  MediaStarted = "media-started",
48
49
  MediaStopped = "media-stopped",
50
+ MediaEnded = "media-ended",
49
51
  SourceUpdate = "source-update"
50
52
  }
51
53
  interface ReceiverEvents extends EventMap {
52
54
  [ReceiveSlotEvents.MediaStarted]: () => void;
53
55
  [ReceiveSlotEvents.MediaStopped]: () => void;
56
+ [ReceiveSlotEvents.MediaEnded]: () => void;
54
57
  [ReceiveSlotEvents.SourceUpdate]: (state: StreamState, csi?: number) => void;
55
58
  }
56
-
57
59
  declare class ReceiveSlot extends EventEmitter<ReceiverEvents> {
58
60
  static Events: typeof ReceiveSlotEvents;
59
61
  private _idGetter;
@@ -61,11 +63,9 @@ declare class ReceiveSlot extends EventEmitter<ReceiverEvents> {
61
63
  private _sourceState;
62
64
  private _currentRxCsi?;
63
65
  constructor(idGetter: () => ReceiveSlotId | null, track: MediaStreamTrack);
64
- private addTrackHandlers;
65
- private handleTrackMuted;
66
- private handleTrackUnmuted;
67
- private removeTrackHandlers;
68
- replaceTrack(newTrack: MediaStreamTrack): void;
66
+ private handleStreamMuteStateChange;
67
+ private handleStreamEnded;
68
+ _replaceTrack(newTrack: MediaStreamTrack): void;
69
69
  _updateSource(state: StreamState, csi?: number): void;
70
70
  close(): void;
71
71
  get id(): ReceiveSlotId | null;
@@ -77,14 +77,15 @@ declare type StreamSignalingMode = 'MID-RID' | 'SSRC';
77
77
 
78
78
  declare type BundlePolicy = 'max-bundle' | 'max-compat';
79
79
 
80
- declare class StreamRequest {
81
- policy: Policy;
82
- policySpecificInfo: PolicySpecificInfo;
83
- receiveSlots: ReceiveSlot$1[];
84
- maxPayloadBitsPerSecond: number;
85
- codecInfos: CodecInfo[];
86
- constructor(policy: Policy, policySpecificInfo: PolicySpecificInfo, receiveSlots: ReceiveSlot$1[], maxPayloadBitsPerSecond: number, codecInfos?: CodecInfo[]);
87
- _toJmpStreamRequest(): StreamRequest$1;
80
+ interface EgressStreamSignaler {
81
+ signalStreams(simulcastEnabled: boolean, rtxEnabled: boolean, mLine: AvMediaDescription): void;
82
+ getSenderIds(): StreamId[];
83
+ getEncodingIndexForStreamId(streamId: StreamId): number;
84
+ reset(): void;
85
+ setCodecParameters(parameters: {
86
+ [key: string]: string | undefined;
87
+ }): void;
88
+ deleteCodecParameters(parameters: string[]): void;
88
89
  }
89
90
 
90
91
  declare abstract class Transceiver {
@@ -98,37 +99,33 @@ declare abstract class Transceiver {
98
99
  abstract resetStreamSignaler(): void;
99
100
  }
100
101
 
101
- interface EgressStreamSignaler {
102
- signalStreams(simulcastEnabled: boolean, rtxEnabled: boolean, mLine: AvMediaDescription): void;
103
- getSenderIds(): StreamId[];
104
- getEncodingIndexForStreamId(streamId: StreamId): number;
105
- reset(): void;
106
- setCodecParameters(parameters: {
107
- [key: string]: string | undefined;
108
- }): void;
109
- deleteCodecParameters(parameters: string[]): void;
110
- }
111
-
112
102
  declare class SendOnlyTransceiver extends Transceiver {
113
- publishedTrack?: LocalTrack;
103
+ publishedStream?: LocalStream;
114
104
  csi: number;
115
105
  private direction;
116
106
  private streamSignaler;
117
107
  rtxEnabled: boolean;
108
+ streamMuteStateChange: TypedEvent<() => void>;
109
+ streamPublishStateChange: TypedEvent<() => void>;
110
+ private mediaType;
118
111
  private requested;
119
- constructor(rtcpRtpTransceiver: RTCRtpTransceiver, mid: string, csi: number, signaler: EgressStreamSignaler);
112
+ private requestedIdEncodingParamsMap;
113
+ constructor(rtcRtpTransceiver: RTCRtpTransceiver, mid: string, csi: number, signaler: EgressStreamSignaler, mediaType: MediaType);
120
114
  private handleTrackChange;
115
+ private handleStreamConstraintsChange;
116
+ private handleStreamMuteStateChange;
121
117
  replaceTransceiver(newRtcRtpTransceiver: RTCRtpTransceiver): Promise<void>;
122
- private replacePublishedTrack;
123
- setTrackRequested(requested: boolean): Promise<void>;
124
- publishTrack(track: LocalTrack): Promise<void>;
125
- unpublishTrack(): Promise<void>;
118
+ private replacePublishedStream;
119
+ setStreamRequested(requested: boolean): Promise<void>;
120
+ publishStream(stream: LocalStream): Promise<void>;
121
+ unpublishStream(): Promise<void>;
126
122
  setActive(enabled: boolean): boolean;
127
123
  getStats(): Promise<RTCStatsReport>;
128
124
  updateSendParameters(requestedIdEncodingParamsMap: Map<number, EncodingParams>): Promise<void>;
129
125
  private isSimulcastEnabled;
130
126
  signalStreams(mLine: AvMediaDescription): void;
131
127
  get senderIds(): StreamId[];
128
+ get numActiveSimulcastLayers(): number | undefined;
132
129
  getEncodingIndexForStreamId(id: StreamId): number;
133
130
  resetStreamSignaler(): void;
134
131
  setCodecParameters(parameters: {
@@ -137,6 +134,24 @@ declare class SendOnlyTransceiver extends Transceiver {
137
134
  deleteCodecParameters(parameters: string[]): void;
138
135
  }
139
136
 
137
+ declare class SendSlot {
138
+ private sendTransceiver;
139
+ constructor(sendTransceiver: SendOnlyTransceiver);
140
+ publishStream(stream: LocalStream): Promise<void>;
141
+ unpublishStream(): Promise<void>;
142
+ set active(active: boolean);
143
+ }
144
+
145
+ declare class StreamRequest {
146
+ policy: Policy;
147
+ policySpecificInfo: PolicySpecificInfo;
148
+ receiveSlots: ReceiveSlot$1[];
149
+ maxPayloadBitsPerSecond: number;
150
+ codecInfos: CodecInfo[];
151
+ constructor(policy: Policy, policySpecificInfo: PolicySpecificInfo, receiveSlots: ReceiveSlot$1[], maxPayloadBitsPerSecond: number, codecInfos?: CodecInfo[]);
152
+ _toJmpStreamRequest(): StreamRequest$1;
153
+ }
154
+
140
155
  interface TransceiverStatItem {
141
156
  report: RTCStatsReport;
142
157
  currentDirection: RTCRtpTransceiverDirection;
@@ -164,7 +179,6 @@ interface TransceiverStats {
164
179
  }
165
180
 
166
181
  declare type MetricsCallback = (logData: LogData) => void;
167
-
168
182
  declare enum MultistreamConnectionEventNames {
169
183
  VideoSourceCountUpdate = "video-source-count-update",
170
184
  AudioSourceCountUpdate = "audio-source-count-update",
@@ -172,20 +186,17 @@ declare enum MultistreamConnectionEventNames {
172
186
  ConnectionStateUpdate = "connection-state-update"
173
187
  }
174
188
  interface MultistreamConnectionEvents extends EventMap {
175
- [MultistreamConnectionEventNames.ActiveSpeakerNotification]: (msg: ActiveSpeakerNotificationMsg) => void;
189
+ [MultistreamConnectionEventNames.ActiveSpeakerNotification]: (csis: number[]) => void;
176
190
  [MultistreamConnectionEventNames.VideoSourceCountUpdate]: (numTotalSources: number, numLiveSources: number, mediaContent: MediaContent) => void;
177
191
  [MultistreamConnectionEventNames.AudioSourceCountUpdate]: (numTotalSources: number, numLiveSources: number, mediaContent: MediaContent) => void;
178
192
  [MultistreamConnectionEventNames.ConnectionStateUpdate]: (state: ConnectionState) => void;
179
193
  }
180
194
  declare type MultistreamConnectionOptions = {
181
- floorControlledPresentation: boolean;
182
195
  disableSimulcast: boolean;
183
196
  streamSignalingMode: StreamSignalingMode;
184
197
  bundlePolicy: BundlePolicy;
185
198
  iceServers: RTCIceServer[] | undefined;
186
199
  disableContentSimulcast: boolean;
187
- enableMainAudio: boolean;
188
- enableMainVideo: boolean;
189
200
  };
190
201
  declare class MultistreamConnection extends EventEmitter<MultistreamConnectionEvents> {
191
202
  private pc;
@@ -201,22 +212,19 @@ declare class MultistreamConnection extends EventEmitter<MultistreamConnectionEv
201
212
  private options;
202
213
  private midPredictor;
203
214
  private offerAnswerQueue;
204
- private requestedIdEncodingParamsMap;
205
215
  private setAnswerResolve?;
206
216
  constructor(userOptions?: Partial<MultistreamConnectionOptions>);
207
217
  private initializePeerConnection;
208
218
  getConnectionState(): ConnectionState;
209
219
  private getVideoEncodingOptions;
210
220
  private createSendTransceiver;
221
+ createSendSlot(mediaType: MediaType): SendSlot;
211
222
  private createJmpSession;
212
223
  private updateRequestedStreams;
213
224
  private createDataChannel;
214
225
  close(): void;
215
226
  private sendMediaRequestStatus;
216
227
  sendSourceAdvertisement(mediaType: MediaType): void;
217
- publishTrack(track: LocalTrack): Promise<void>;
218
- unpublishTrack(track: LocalTrack): Promise<void>;
219
- private addTrackListeners;
220
228
  private getVideoStreamStates;
221
229
  createReceiveSlot(mediaType: MediaType): Promise<ReceiveSlot>;
222
230
  getIngressPayloadType(mediaType: MediaType, mimeType: MediaCodecMimeType): number;
@@ -224,14 +232,12 @@ declare class MultistreamConnection extends EventEmitter<MultistreamConnectionEv
224
232
  setAnswer(answer: string): Promise<void>;
225
233
  private doLocalOfferAnswer;
226
234
  private queueLocalOfferAnswer;
227
- enableMultistreamAudio(enabled: boolean): boolean;
228
235
  private preProcessLocalOffer;
229
236
  private prepareLocalOfferForRemoteServer;
230
237
  private preProcessRemoteAnswer;
231
238
  private getSendTransceiverOrThrow;
232
239
  private getSendTransceiverByMidOrThrow;
233
240
  private getRecvTransceiverByMidOrThrow;
234
- getPublishedTracks(): LocalTrack[];
235
241
  setCodecParameters(mediaType: MediaType, parameters: {
236
242
  [key: string]: string | undefined;
237
243
  }): Promise<void>;
@@ -254,4 +260,4 @@ declare function setLogLevel(level: ILogLevel): void;
254
260
  declare function getLogLevel(): ILogLevel;
255
261
  declare function setLogHandler(logHandler: ILogHandler): void;
256
262
 
257
- export { MediaCodecMimeType, MetricsCallback, MultistreamConnection, MultistreamConnectionEventNames, MultistreamConnectionEvents, ReceiveSlot, ReceiveSlotEvents, ReceiveSlotId, ReceiverEvents, RecommendedOpusBitrates, SendOnlyTransceiver, StreamRequest, TransceiverStats, compareReceiveSlotIds, getLogLevel, getRecommendedMaxBitrateForFrameSize, logger, setLogHandler, setLogLevel };
263
+ export { MediaCodecMimeType, MetricsCallback, MultistreamConnection, MultistreamConnectionEventNames, MultistreamConnectionEvents, ReceiveSlot, ReceiveSlotEvents, ReceiveSlotId, ReceiverEvents, RecommendedOpusBitrates, SendSlot, StreamRequest, TransceiverStats, compareReceiveSlotIds, getLogLevel, getRecommendedMaxBitrateForFrameSize, logger, setLogHandler, setLogLevel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/web-client-media-engine",
3
- "version": "2.1.7",
3
+ "version": "3.0.0",
4
4
  "description": "Web Client Media Engine is common web code for interacting with the multistream media server.",
5
5
  "source": "src/index.ts",
6
6
  "main": "dist/cjs/index.js",
@@ -58,7 +58,7 @@
58
58
  "@webex/rtcstats": "^1.0.2",
59
59
  "@webex/ts-events": "^1.0.1",
60
60
  "@webex/ts-sdp": "1.3.1",
61
- "@webex/webrtc-core": "1.7.1",
61
+ "@webex/webrtc-core": "2.0.0",
62
62
  "async": "^3.2.4",
63
63
  "bowser": "^2.11.0",
64
64
  "js-logger": "^1.6.1",