@webex/web-client-media-engine 3.37.0 → 3.38.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,7 +1,7 @@
1
1
  import { LocalStream, ConnectionState, ConnectionType, media } from '@webex/webrtc-core';
2
2
  export { AudioDeviceConstraints, ConnectionState, ConnectionType, LocalCameraStream, LocalDisplayStream, LocalMicrophoneStream, LocalStream, LocalStreamEventNames, LocalSystemAudioStream, MediaStreamTrackKind, PeerConnection, RemoteMediaState, RemoteStream, RemoteStreamEventNames, StreamEventNames, VideoContentHint, VideoDeviceConstraints, Logger as WebRtcCoreLogger, WebrtcCoreError, WebrtcCoreErrorType, createCameraAndMicrophoneStreams, createCameraStream, createDisplayMedia, createDisplayStream, createDisplayStreamWithAudio, createMicrophoneStream, getAudioInputDevices, getAudioOutputDevices, getDevices, getVideoInputDevices, setOnDeviceChangeHandler } from '@webex/webrtc-core';
3
- import { SsrcStreamId, StreamState, MediaContent, MediaType, NamedMediaGroup, Policy, PolicySpecificInfo, CodecInfo, StreamRequest as StreamRequest$1 } from '@webex/json-multistream';
4
- export { ActiveSpeakerInfo, CodecInfo, H264Codec, Logger as JMPLogger, MediaContent, MediaFamily, MediaType, NamedMediaGroup, Policy, PolicySpecificInfo, ReceiverSelectedInfo, StreamState, getMediaContent, getMediaFamily, getMediaType } from '@webex/json-multistream';
3
+ import { CodecInfo, AV1Codec, H264Codec, SsrcStreamId, StreamState, MediaContent, MediaType, NamedMediaGroup, Policy, PolicySpecificInfo, StreamRequest as StreamRequest$1 } from '@webex/json-multistream';
4
+ export { AV1Codec, ActiveSpeakerInfo, CodecInfo, H264Codec, Logger as JMPLogger, MediaContent, MediaFamily, MediaType, NamedMediaGroup, Policy, PolicySpecificInfo, ReceiverSelectedInfo, StreamState, getMediaContent, getMediaFamily, getMediaType } from '@webex/json-multistream';
5
5
  import { LoggerCallback } from '@webex/rtcstats';
6
6
  export { LogData, LoggerCallback as MetricsCallback } from '@webex/rtcstats';
7
7
  import TypedEmitter, { EventMap } from 'typed-emitter';
@@ -16,12 +16,27 @@ declare enum MediaCodecMimeType {
16
16
  RTX = "video/rtx",
17
17
  OPUS = "audio/opus"
18
18
  }
19
- type EncodingParams = {
19
+ type SupportedResolution = '1080p' | '720p' | '540p' | '360p' | '180p' | '90p';
20
+ type BaseVideoEncodingParams = {
20
21
  maxPayloadBitsPerSecond?: number;
21
- maxFs?: number;
22
22
  maxWidth?: number;
23
23
  maxHeight?: number;
24
24
  };
25
+ type H264EncodingParams = BaseVideoEncodingParams & {
26
+ maxFs?: number;
27
+ maxFps?: number;
28
+ maxMbps?: number;
29
+ };
30
+ type AV1EncodingParams = BaseVideoEncodingParams & {
31
+ levelIdx?: number;
32
+ tier?: number;
33
+ maxPicSize?: number;
34
+ maxDecodeRate?: number;
35
+ };
36
+ type OpusEncodingParams = {
37
+ maxPayloadBitsPerSecond?: number;
38
+ };
39
+ type EncodingParams = H264EncodingParams | AV1EncodingParams | OpusEncodingParams;
25
40
  declare enum RecommendedOpusBitrates {
26
41
  NB = 12000,
27
42
  WB = 20000,
@@ -29,8 +44,12 @@ declare enum RecommendedOpusBitrates {
29
44
  FB_MONO_MUSIC = 64000,
30
45
  FB_STEREO_MUSIC = 128000
31
46
  }
47
+ declare function codecToEncodingParams(codecInfo: CodecInfo): AV1Codec | H264Codec | undefined;
32
48
  declare function getRecommendedMaxBitrateForFrameSize(requestedMaxFs: number): number;
33
- type CodecParameters = Record<string, string | undefined>;
49
+ type CodecParameters = Record<string, string | undefined>;
50
+ declare function getRecommendedMaxBitrateForPicSize(requestedMaxPicSize: number): number;
51
+ declare function getFrameSizeForPicSize(maxPicSize: number | undefined): number | undefined;
52
+ declare function isEncodingCodecSupported(): boolean;
34
53
 
35
54
  declare enum WcmeErrorType {
36
55
  CREATE_OFFER_FAILED = "CREATE_OFFER_FAILED",
@@ -46,6 +65,7 @@ declare enum WcmeErrorType {
46
65
  SET_SOURCE_STATE_OVERRIDE_FAILED = "SET_SOURCE_STATE_OVERRIDE_FAILED",
47
66
  DATA_CHANNEL_SEND_FAILED = "DATA_CHANNEL_SEND_FAILED",
48
67
  RENEW_PEER_CONNECTION_FAILED = "RENEW_PEER_CONNECTION_FAILED",
68
+ INVALID_CODEC_PARAMS = "INVALID_CODEC_PARAMS",
49
69
  UNSUPPORTED_CONFIG = "UNSUPPORTED_CONFIG"
50
70
  }
51
71
  declare class WcmeError {
@@ -117,6 +137,7 @@ declare class EgressSdpMunger {
117
137
  rtxEnabled: boolean;
118
138
  twccDisabled: boolean;
119
139
  forceSoftwareEncoder: boolean;
140
+ supportedCodecs: MediaCodecMimeType[];
120
141
  }): void;
121
142
  mungeLocalDescriptionForRemoteServer(mediaDescription: AvMediaDescription, mediaContent: MediaContent, csi: number, mungeOptions?: {
122
143
  injectDummyCandidates: boolean;
@@ -166,10 +187,12 @@ declare class SendOnlyTransceiver extends Transceiver {
166
187
  negotiationNeeded: TypedEvent<(offerAnswerType: OfferAnswerType) => void>;
167
188
  namedMediaGroupsChange: TypedEvent<() => void>;
168
189
  private requestedIdEncodingParamsMap;
190
+ private selectedPayloadType;
169
191
  namedMediaGroups?: NamedMediaGroup[];
170
192
  private updateSendParametersQueue;
171
193
  private sourceStateOverride?;
172
194
  sourceStateOverrideChange: TypedEvent<() => void>;
195
+ private supportedCodecs;
173
196
  metadata: {
174
197
  lastRequestedUpdateTimestampsMap: Map<number, number>;
175
198
  };
@@ -179,6 +202,7 @@ declare class SendOnlyTransceiver extends Transceiver {
179
202
  mediaType: MediaType;
180
203
  munger: EgressSdpMunger;
181
204
  csi: number;
205
+ supportedCodecs: MediaCodecMimeType[];
182
206
  });
183
207
  private replaceSenderSource;
184
208
  private handleTrackChange;
@@ -194,7 +218,7 @@ declare class SendOnlyTransceiver extends Transceiver {
194
218
  get active(): boolean;
195
219
  set active(enabled: boolean);
196
220
  getStats(): Promise<StatsMap>;
197
- updateSendParameters(requestedIdEncodingParamsMap: Map<number, EncodingParams>): Promise<void>;
221
+ updateSendParameters(requestedIdEncodingParamsMap: Map<number, EncodingParams>, payloadType?: number): Promise<void>;
198
222
  private isSimulcastEnabled;
199
223
  mungeLocalDescription(mediaDescription: AvMediaDescription): void;
200
224
  mungeLocalDescriptionForRemoteServer(mediaDescription: AvMediaDescription, mungeOptions?: {
@@ -309,6 +333,7 @@ type MultistreamConnectionOptions = {
309
333
  preferredStartingBitrateKbps: number;
310
334
  metricsCallback: LoggerCallback;
311
335
  enableInboundAudioLevelMonitoring: boolean;
336
+ enableAV1SlidesSupport: boolean;
312
337
  };
313
338
  declare class MultistreamConnection extends EventEmitter<MultistreamConnectionEvents> {
314
339
  private id;
@@ -343,6 +368,7 @@ declare class MultistreamConnection extends EventEmitter<MultistreamConnectionEv
343
368
  private getVideoEncodingOptions;
344
369
  private getCustomSendVideoCodecParams;
345
370
  private getCustomReceiveVideoCodecParams;
371
+ private getSupportedCodecs;
346
372
  private createSendTransceiver;
347
373
  createSendSlot(mediaType: MediaType, active?: boolean): SendSlot;
348
374
  private createJmpSession;
@@ -390,4 +416,4 @@ declare function setLogHandler(logHandler: ILogHandler): void;
390
416
  declare const DeviceKind: typeof media.DeviceKind;
391
417
  //# sourceMappingURL=index.d.ts.map
392
418
 
393
- export { AudioMetadata, CodecParameters, DeviceKind, MediaCodecMimeType, MultistreamConnection, MultistreamConnectionEventNames, MultistreamConnectionEvents, MultistreamConnectionOptions, ReceiveSlot, ReceiveSlotEvents, ReceiveSlotId, ReceiverEvents, RecommendedOpusBitrates, SendSlot, StatsMap, StreamRequest, TransceiverStatItem, TransceiverStats, VideoMetadata, WcmeError, WcmeErrorType, areReceiveSlotIdsEqual, getLogLevel, getRecommendedMaxBitrateForFrameSize, logErrorAndThrow, setLogHandler, setLogLevel };
419
+ export { AV1EncodingParams, AudioMetadata, BaseVideoEncodingParams, CodecParameters, DeviceKind, EncodingParams, H264EncodingParams, MediaCodecMimeType, MultistreamConnection, MultistreamConnectionEventNames, MultistreamConnectionEvents, MultistreamConnectionOptions, OpusEncodingParams, ReceiveSlot, ReceiveSlotEvents, ReceiveSlotId, ReceiverEvents, RecommendedOpusBitrates, SendSlot, StatsMap, StreamRequest, SupportedResolution, TransceiverStatItem, TransceiverStats, VideoMetadata, WcmeError, WcmeErrorType, areReceiveSlotIdsEqual, codecToEncodingParams, getFrameSizeForPicSize, getLogLevel, getRecommendedMaxBitrateForFrameSize, getRecommendedMaxBitrateForPicSize, isEncodingCodecSupported, logErrorAndThrow, setLogHandler, setLogLevel };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@webex/web-client-media-engine",
3
- "version": "3.37.0",
3
+ "version": "3.38.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",
@@ -60,9 +60,9 @@
60
60
  "@webex/rtcstats": "^1.5.5",
61
61
  "@webex/ts-events": "^1.2.1",
62
62
  "@webex/ts-sdp": "1.8.2",
63
- "@webex/web-capabilities": "^1.7.1",
64
- "@webex/web-media-effects": "2.32.1",
65
- "@webex/webrtc-core": "2.13.4",
63
+ "@webex/web-capabilities": "^1.9.0",
64
+ "@webex/web-media-effects": "2.33.0",
65
+ "@webex/webrtc-core": "2.13.5",
66
66
  "async": "^3.2.4",
67
67
  "js-logger": "^1.6.1",
68
68
  "typed-emitter": "^2.1.0",