agora-electron-sdk 4.3.1-dev.1 → 4.3.2
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/CHANGELOG.md +14 -4
- package/js/Private/AgoraBase.js +22 -13
- package/js/Private/IAgoraMusicContentCenter.js +19 -1
- package/js/Private/impl/IAgoraMusicContentCenterImpl.js +32 -2
- package/js/Private/impl/IAgoraRtcEngineImpl.js +2 -2
- package/js/Private/internal/MusicContentCenterInternal.js +3 -0
- package/js/Private/internal/RtcEngineExInternal.js +5 -0
- package/js/Renderer/IRenderer.js +9 -0
- package/js/Renderer/WebGLRenderer/index.js +1 -0
- package/js/Renderer/YUVCanvasRenderer/index.js +1 -0
- package/package.json +5 -5
- package/ts/Private/AgoraBase.ts +40 -35
- package/ts/Private/AgoraMediaBase.ts +8 -6
- package/ts/Private/IAgoraMusicContentCenter.ts +28 -0
- package/ts/Private/IAgoraRtcEngine.ts +85 -133
- package/ts/Private/IAgoraRtcEngineEx.ts +5 -2
- package/ts/Private/IAgoraSpatialAudio.ts +2 -2
- package/ts/Private/impl/IAgoraMusicContentCenterImpl.ts +39 -2
- package/ts/Private/impl/IAgoraRtcEngineImpl.ts +2 -2
- package/ts/Private/internal/MusicContentCenterInternal.ts +5 -0
- package/ts/Private/internal/RtcEngineExInternal.ts +9 -0
- package/ts/Renderer/IRenderer.ts +8 -1
- package/ts/Renderer/WebGLRenderer/index.ts +1 -0
- package/ts/Renderer/YUVCanvasRenderer/index.ts +1 -0
- package/types/Private/AgoraBase.d.ts +40 -35
- package/types/Private/AgoraBase.d.ts.map +1 -1
- package/types/Private/AgoraMediaBase.d.ts +8 -6
- package/types/Private/AgoraMediaBase.d.ts.map +1 -1
- package/types/Private/IAgoraMusicContentCenter.d.ts +25 -0
- package/types/Private/IAgoraMusicContentCenter.d.ts.map +1 -1
- package/types/Private/IAgoraRtcEngine.d.ts +85 -133
- package/types/Private/IAgoraRtcEngine.d.ts.map +1 -1
- package/types/Private/IAgoraRtcEngineEx.d.ts +5 -2
- package/types/Private/IAgoraRtcEngineEx.d.ts.map +1 -1
- package/types/Private/IAgoraSpatialAudio.d.ts +2 -2
- package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts +5 -1
- package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts.map +1 -1
- package/types/Private/internal/MusicContentCenterInternal.d.ts +2 -1
- package/types/Private/internal/MusicContentCenterInternal.d.ts.map +1 -1
- package/types/Private/internal/RtcEngineExInternal.d.ts +1 -0
- package/types/Private/internal/RtcEngineExInternal.d.ts.map +1 -1
- package/types/Renderer/IRenderer.d.ts +1 -1
- package/types/Renderer/IRenderer.d.ts.map +1 -1
- package/types/Renderer/WebGLRenderer/index.d.ts.map +1 -1
- package/types/Renderer/YUVCanvasRenderer/index.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,13 +1,23 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
## [4.3.
|
|
3
|
+
## [4.3.2](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.3.1...v4.3.2) (2024-06-06)
|
|
4
|
+
|
|
5
|
+
|
|
6
|
+
### Bug Fixes
|
|
7
|
+
|
|
8
|
+
* setup renderer may show rotate frame ([#1190](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1190)) ([ad6400c](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/ad6400c18f08f316984e75eb49a48c0795951f2e))
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
### Features
|
|
12
|
+
|
|
13
|
+
* support native 4.3.2 ([#1194](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1194)) ([d7a83e6](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/d7a83e6bc72651ababe01e448b662a6c39c154c5))
|
|
14
|
+
|
|
15
|
+
## [4.3.1](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.3.0...v4.3.1) (2024-05-09)
|
|
4
16
|
|
|
5
17
|
|
|
6
18
|
### Features
|
|
7
19
|
|
|
8
|
-
*
|
|
9
|
-
* bump example electron version to 22.0.0 ([a8256c0](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/a8256c0f985431de48b6a2faad6a932b64c34382))
|
|
10
|
-
* support native 4.3.1 ([1526048](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/15260486de4ab4bc959a16071f81df7dcbbae989))
|
|
20
|
+
* support native 4.3.1 ([#1168](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1168)) ([e78f864](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/e78f864045a6d68ac69585abbcd24cec328cd5ce)), closes [#1183](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1183) [#1181](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1181) [#1177](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1177)
|
|
11
21
|
|
|
12
22
|
# [4.3.0](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.2.6...v4.3.0) (2024-02-28)
|
|
13
23
|
|
package/js/Private/AgoraBase.js
CHANGED
|
@@ -528,11 +528,11 @@ var UserOfflineReasonType;
|
|
|
528
528
|
var InterfaceIdType;
|
|
529
529
|
(function (InterfaceIdType) {
|
|
530
530
|
/**
|
|
531
|
-
* The IAudioDeviceManager interface class.
|
|
531
|
+
* 1: The IAudioDeviceManager interface class.
|
|
532
532
|
*/
|
|
533
533
|
InterfaceIdType[InterfaceIdType["AgoraIidAudioDeviceManager"] = 1] = "AgoraIidAudioDeviceManager";
|
|
534
534
|
/**
|
|
535
|
-
* The IVideoDeviceManager interface class.
|
|
535
|
+
* 2: The IVideoDeviceManager interface class.
|
|
536
536
|
*/
|
|
537
537
|
InterfaceIdType[InterfaceIdType["AgoraIidVideoDeviceManager"] = 2] = "AgoraIidVideoDeviceManager";
|
|
538
538
|
/**
|
|
@@ -540,7 +540,7 @@ var InterfaceIdType;
|
|
|
540
540
|
*/
|
|
541
541
|
InterfaceIdType[InterfaceIdType["AgoraIidParameterEngine"] = 3] = "AgoraIidParameterEngine";
|
|
542
542
|
/**
|
|
543
|
-
* The IMediaEngine interface class.
|
|
543
|
+
* 4: The IMediaEngine interface class.
|
|
544
544
|
*/
|
|
545
545
|
InterfaceIdType[InterfaceIdType["AgoraIidMediaEngine"] = 4] = "AgoraIidMediaEngine";
|
|
546
546
|
/**
|
|
@@ -1183,7 +1183,7 @@ var VideoMirrorModeType;
|
|
|
1183
1183
|
VideoMirrorModeType[VideoMirrorModeType["VideoMirrorModeDisabled"] = 2] = "VideoMirrorModeDisabled";
|
|
1184
1184
|
})(VideoMirrorModeType = exports.VideoMirrorModeType || (exports.VideoMirrorModeType = {}));
|
|
1185
1185
|
/**
|
|
1186
|
-
* The bit mask
|
|
1186
|
+
* The bit mask of the codec type.
|
|
1187
1187
|
*/
|
|
1188
1188
|
var CodecCapMask;
|
|
1189
1189
|
(function (CodecCapMask) {
|
|
@@ -1218,7 +1218,7 @@ var CodecCapLevels = /** @class */ (function () {
|
|
|
1218
1218
|
}());
|
|
1219
1219
|
exports.CodecCapLevels = CodecCapLevels;
|
|
1220
1220
|
/**
|
|
1221
|
-
* The codec capability of the
|
|
1221
|
+
* The codec capability of the SDK.
|
|
1222
1222
|
*/
|
|
1223
1223
|
var CodecCapInfo = /** @class */ (function () {
|
|
1224
1224
|
function CodecCapInfo() {
|
|
@@ -2497,11 +2497,11 @@ var ConnectionChangedReasonType;
|
|
|
2497
2497
|
*/
|
|
2498
2498
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedInterrupted"] = 2] = "ConnectionChangedInterrupted";
|
|
2499
2499
|
/**
|
|
2500
|
-
* 3: The connection between the SDK and the Agora edge server is banned by the Agora edge server.
|
|
2500
|
+
* 3: The connection between the SDK and the Agora edge server is banned by the Agora edge server. For example, when a user is kicked out of the channel, this status will be returned.
|
|
2501
2501
|
*/
|
|
2502
2502
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedBannedByServer"] = 3] = "ConnectionChangedBannedByServer";
|
|
2503
2503
|
/**
|
|
2504
|
-
* 4: The SDK fails to join the channel. When the SDK fails to join the channel for more than 20 minutes, this
|
|
2504
|
+
* 4: The SDK fails to join the channel. When the SDK fails to join the channel for more than 20 minutes, this code will be returned and the SDK stops reconnecting to the channel. You need to prompt the user to try to switch to another network and rejoin the channel.
|
|
2505
2505
|
*/
|
|
2506
2506
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedJoinFailed"] = 4] = "ConnectionChangedJoinFailed";
|
|
2507
2507
|
/**
|
|
@@ -2509,21 +2509,30 @@ var ConnectionChangedReasonType;
|
|
|
2509
2509
|
*/
|
|
2510
2510
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedLeaveChannel"] = 5] = "ConnectionChangedLeaveChannel";
|
|
2511
2511
|
/**
|
|
2512
|
-
* 6: The
|
|
2512
|
+
* 6: The App ID is invalid. You need to rejoin the channel with a valid APP ID and make sure the App ID you are using is consistent with the one generated in the Agora Console.
|
|
2513
2513
|
*/
|
|
2514
2514
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedInvalidAppId"] = 6] = "ConnectionChangedInvalidAppId";
|
|
2515
2515
|
/**
|
|
2516
|
-
* 7:
|
|
2516
|
+
* 7: Invalid channel name. Rejoin the channel with a valid channel name. A valid channel name is a string of up to 64 bytes in length. Supported characters (89 characters in total):
|
|
2517
|
+
* All lowercase English letters: a to z.
|
|
2518
|
+
* All uppercase English letters: A to Z.
|
|
2519
|
+
* All numeric characters: 0 to 9.
|
|
2520
|
+
* Space
|
|
2521
|
+
* "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
|
|
2517
2522
|
*/
|
|
2518
2523
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedInvalidChannelName"] = 7] = "ConnectionChangedInvalidChannelName";
|
|
2519
2524
|
/**
|
|
2520
|
-
* 8:
|
|
2521
|
-
* The App Certificate for the project is enabled in Agora Console, but you do not
|
|
2525
|
+
* 8: Invalid token. Possible reasons are as follows:
|
|
2526
|
+
* The App Certificate for the project is enabled in Agora Console, but you do not pass in a token when joining a channel.
|
|
2522
2527
|
* The uid specified when calling joinChannel to join the channel is inconsistent with the uid passed in when generating the token.
|
|
2528
|
+
* The generated token and the token used to join the channel are not consistent. Ensure the following:
|
|
2529
|
+
* When your project enables App Certificate, you need to pass in a token to join a channel.
|
|
2530
|
+
* The user ID specified when generating the token is consistent with the user ID used when joining the channel.
|
|
2531
|
+
* The generated token is the same as the token passed in to join the channel.
|
|
2523
2532
|
*/
|
|
2524
2533
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedInvalidToken"] = 8] = "ConnectionChangedInvalidToken";
|
|
2525
2534
|
/**
|
|
2526
|
-
* 9: The
|
|
2535
|
+
* (9): The token currently being used has expired. You need to generate a new token on your server and rejoin the channel with the new token.
|
|
2527
2536
|
*/
|
|
2528
2537
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedTokenExpired"] = 9] = "ConnectionChangedTokenExpired";
|
|
2529
2538
|
/**
|
|
@@ -2541,7 +2550,7 @@ var ConnectionChangedReasonType;
|
|
|
2541
2550
|
*/
|
|
2542
2551
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedRenewToken"] = 12] = "ConnectionChangedRenewToken";
|
|
2543
2552
|
/**
|
|
2544
|
-
* 13:
|
|
2553
|
+
* (13): Client IP address changed. If you receive this code multiple times, You need to prompt the user to switch networks and try joining the channel again.
|
|
2545
2554
|
*/
|
|
2546
2555
|
ConnectionChangedReasonType[ConnectionChangedReasonType["ConnectionChangedClientIpAddressChanged"] = 13] = "ConnectionChangedClientIpAddressChanged";
|
|
2547
2556
|
/**
|
|
@@ -15,9 +15,27 @@ var __extends = (this && this.__extends) || (function () {
|
|
|
15
15
|
};
|
|
16
16
|
})();
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.IMusicContentCenter = exports.IMusicPlayer = exports.MusicContentCenterConfiguration = exports.MusicCollection = exports.Music = exports.ClimaxSegment = exports.MvProperty = exports.MusicChartCollection = exports.MusicCacheInfo = exports.MusicCacheStatusType = exports.MusicChartInfo = exports.MusicContentCenterStateReason = exports.PreloadState = void 0;
|
|
18
|
+
exports.IMusicContentCenter = exports.IMusicPlayer = exports.MusicContentCenterConfiguration = exports.MusicCollection = exports.Music = exports.ClimaxSegment = exports.MvProperty = exports.MusicChartCollection = exports.MusicCacheInfo = exports.MusicCacheStatusType = exports.MusicChartInfo = exports.MusicContentCenterStateReason = exports.PreloadState = exports.MusicPlayMode = void 0;
|
|
19
19
|
require("./extension/IAgoraMusicContentCenterExtension");
|
|
20
20
|
var IAgoraMediaPlayer_1 = require("./IAgoraMediaPlayer");
|
|
21
|
+
/**
|
|
22
|
+
* @ignore
|
|
23
|
+
*/
|
|
24
|
+
var MusicPlayMode;
|
|
25
|
+
(function (MusicPlayMode) {
|
|
26
|
+
/**
|
|
27
|
+
* @ignore
|
|
28
|
+
*/
|
|
29
|
+
MusicPlayMode[MusicPlayMode["KMusicPlayModeOriginal"] = 0] = "KMusicPlayModeOriginal";
|
|
30
|
+
/**
|
|
31
|
+
* @ignore
|
|
32
|
+
*/
|
|
33
|
+
MusicPlayMode[MusicPlayMode["KMusicPlayModeAccompany"] = 1] = "KMusicPlayModeAccompany";
|
|
34
|
+
/**
|
|
35
|
+
* @ignore
|
|
36
|
+
*/
|
|
37
|
+
MusicPlayMode[MusicPlayMode["KMusicPlayModeLeadSing"] = 2] = "KMusicPlayModeLeadSing";
|
|
38
|
+
})(MusicPlayMode = exports.MusicPlayMode || (exports.MusicPlayMode = {}));
|
|
21
39
|
/**
|
|
22
40
|
* @ignore
|
|
23
41
|
*/
|
|
@@ -144,6 +144,22 @@ var IMusicPlayerImpl = /** @class */ (function (_super) {
|
|
|
144
144
|
function IMusicPlayerImpl() {
|
|
145
145
|
return _super !== null && _super.apply(this, arguments) || this;
|
|
146
146
|
}
|
|
147
|
+
IMusicPlayerImpl.prototype.setPlayMode = function (mode) {
|
|
148
|
+
var apiType = this.getApiTypeFromSetPlayMode(mode);
|
|
149
|
+
var jsonParams = {
|
|
150
|
+
mode: mode,
|
|
151
|
+
toJSON: function () {
|
|
152
|
+
return {
|
|
153
|
+
mode: mode,
|
|
154
|
+
};
|
|
155
|
+
},
|
|
156
|
+
};
|
|
157
|
+
var jsonResults = IrisApiEngine_1.callIrisApi.call(this, apiType, jsonParams);
|
|
158
|
+
return jsonResults.result;
|
|
159
|
+
};
|
|
160
|
+
IMusicPlayerImpl.prototype.getApiTypeFromSetPlayMode = function (mode) {
|
|
161
|
+
return 'MusicPlayer_setPlayMode_748bee0';
|
|
162
|
+
};
|
|
147
163
|
IMusicPlayerImpl.prototype.openWithSongCode = function (songCode, startPos) {
|
|
148
164
|
if (startPos === void 0) { startPos = 0; }
|
|
149
165
|
var apiType = this.getApiTypeFromOpenWithSongCode(songCode, startPos);
|
|
@@ -243,6 +259,20 @@ var IMusicContentCenterImpl = /** @class */ (function () {
|
|
|
243
259
|
IMusicContentCenterImpl.prototype.getApiTypeFromCreateMusicPlayer = function () {
|
|
244
260
|
return 'MusicContentCenter_createMusicPlayer';
|
|
245
261
|
};
|
|
262
|
+
IMusicContentCenterImpl.prototype.destroyMusicPlayer = function (musicPlayer) {
|
|
263
|
+
var apiType = this.getApiTypeFromDestroyMusicPlayer(musicPlayer);
|
|
264
|
+
var jsonParams = {
|
|
265
|
+
music_player: musicPlayer,
|
|
266
|
+
toJSON: function () {
|
|
267
|
+
return {};
|
|
268
|
+
},
|
|
269
|
+
};
|
|
270
|
+
var jsonResults = IrisApiEngine_1.callIrisApi.call(this, apiType, jsonParams);
|
|
271
|
+
return jsonResults.result;
|
|
272
|
+
};
|
|
273
|
+
IMusicContentCenterImpl.prototype.getApiTypeFromDestroyMusicPlayer = function (musicPlayer) {
|
|
274
|
+
return 'MusicContentCenter_destroyMusicPlayer_876d086';
|
|
275
|
+
};
|
|
246
276
|
IMusicContentCenterImpl.prototype.getMusicCharts = function () {
|
|
247
277
|
var apiType = this.getApiTypeFromGetMusicCharts();
|
|
248
278
|
var jsonParams = {};
|
|
@@ -367,11 +397,11 @@ var IMusicContentCenterImpl = /** @class */ (function () {
|
|
|
367
397
|
var apiType = this.getApiTypeFromGetLyric(songCode, lyricType);
|
|
368
398
|
var jsonParams = {
|
|
369
399
|
songCode: songCode,
|
|
370
|
-
|
|
400
|
+
lyricType: lyricType,
|
|
371
401
|
toJSON: function () {
|
|
372
402
|
return {
|
|
373
403
|
songCode: songCode,
|
|
374
|
-
|
|
404
|
+
lyricType: lyricType,
|
|
375
405
|
};
|
|
376
406
|
},
|
|
377
407
|
};
|
|
@@ -4979,7 +4979,7 @@ var IRtcEngineImpl = /** @class */ (function () {
|
|
|
4979
4979
|
IrisApiEngine_1.callIrisApi.call(this, apiType, jsonParams);
|
|
4980
4980
|
};
|
|
4981
4981
|
IRtcEngineImpl.prototype.getApiTypeFromDestroyRendererByView = function (view) {
|
|
4982
|
-
return '';
|
|
4982
|
+
return 'RtcEngine_destroyRendererByView';
|
|
4983
4983
|
};
|
|
4984
4984
|
IRtcEngineImpl.prototype.destroyRendererByConfig = function (sourceType, channelId, uid) {
|
|
4985
4985
|
if (uid === void 0) { uid = 0; }
|
|
@@ -5000,7 +5000,7 @@ var IRtcEngineImpl = /** @class */ (function () {
|
|
|
5000
5000
|
};
|
|
5001
5001
|
IRtcEngineImpl.prototype.getApiTypeFromDestroyRendererByConfig = function (sourceType, channelId, uid) {
|
|
5002
5002
|
if (uid === void 0) { uid = 0; }
|
|
5003
|
-
return '';
|
|
5003
|
+
return 'RtcEngine_destroyRendererByConfig';
|
|
5004
5004
|
};
|
|
5005
5005
|
IRtcEngineImpl.prototype.unregisterAudioEncodedFrameObserver = function (observer) {
|
|
5006
5006
|
var apiType = this.getApiTypeFromUnregisterAudioEncodedFrameObserver(observer);
|
|
@@ -111,6 +111,9 @@ var MusicPlayerInternal = /** @class */ (function (_super) {
|
|
|
111
111
|
_this._musicPlayer = new _MusicPlayerInternal(mediaPlayerId);
|
|
112
112
|
return _this;
|
|
113
113
|
}
|
|
114
|
+
MusicPlayerInternal.prototype.setPlayMode = function (mode) {
|
|
115
|
+
return this._musicPlayer.setPlayMode(mode);
|
|
116
|
+
};
|
|
114
117
|
MusicPlayerInternal.prototype.openWithSongCode = function (songCode, startPos) {
|
|
115
118
|
return this._musicPlayer.openWithSongCode(songCode, startPos);
|
|
116
119
|
};
|
|
@@ -244,6 +244,11 @@ var RtcEngineExInternal = /** @class */ (function (_super) {
|
|
|
244
244
|
? 'RtcEngine_leaveChannel'
|
|
245
245
|
: 'RtcEngine_leaveChannel_2c0e3aa';
|
|
246
246
|
};
|
|
247
|
+
RtcEngineExInternal.prototype.getApiTypeFromLeaveChannelEx = function (connection, options) {
|
|
248
|
+
return options === undefined
|
|
249
|
+
? 'RtcEngineEx_leaveChannelEx_c81e1a4'
|
|
250
|
+
: 'RtcEngineEx_leaveChannelEx_b03ee9a';
|
|
251
|
+
};
|
|
247
252
|
RtcEngineExInternal.prototype.getApiTypeFromSetClientRole = function (role, options) {
|
|
248
253
|
return options === undefined
|
|
249
254
|
? 'RtcEngine_setClientRole_3426fa6'
|
package/js/Renderer/IRenderer.js
CHANGED
|
@@ -20,6 +20,7 @@ var IRenderer = /** @class */ (function () {
|
|
|
20
20
|
});
|
|
21
21
|
this.parentElement.appendChild(this.container);
|
|
22
22
|
this.canvas = document.createElement('canvas');
|
|
23
|
+
this.canvas.style.display = 'none';
|
|
23
24
|
this.container.appendChild(this.canvas);
|
|
24
25
|
};
|
|
25
26
|
IRenderer.prototype.unbind = function () {
|
|
@@ -35,6 +36,14 @@ var IRenderer = /** @class */ (function () {
|
|
|
35
36
|
this.container = undefined;
|
|
36
37
|
this.parentElement = undefined;
|
|
37
38
|
};
|
|
39
|
+
IRenderer.prototype.drawFrame = function (_videoFrame) {
|
|
40
|
+
if (!this.canvas)
|
|
41
|
+
return;
|
|
42
|
+
//@ts-ignore
|
|
43
|
+
if (!this.canvas.checkVisibility()) {
|
|
44
|
+
this.canvas.style.display = '';
|
|
45
|
+
}
|
|
46
|
+
};
|
|
38
47
|
Object.defineProperty(IRenderer.prototype, "context", {
|
|
39
48
|
get: function () {
|
|
40
49
|
return this._context;
|
|
@@ -180,6 +180,7 @@ var WebGLRenderer = /** @class */ (function (_super) {
|
|
|
180
180
|
this.gl.bindTexture(this.gl.TEXTURE_2D, this.vTexture);
|
|
181
181
|
this.gl.texImage2D(this.gl.TEXTURE_2D, 0, this.gl.LUMINANCE, vStride, height / 2, 0, this.gl.LUMINANCE, this.gl.UNSIGNED_BYTE, vBuffer);
|
|
182
182
|
this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);
|
|
183
|
+
_super.prototype.drawFrame.call(this);
|
|
183
184
|
};
|
|
184
185
|
WebGLRenderer.prototype.rotateCanvas = function (_a) {
|
|
185
186
|
var width = _a.width, height = _a.height, rotation = _a.rotation;
|
|
@@ -52,6 +52,7 @@ var YUVCanvasRenderer = /** @class */ (function (_super) {
|
|
|
52
52
|
bytes: vBuffer,
|
|
53
53
|
stride: vStride,
|
|
54
54
|
}));
|
|
55
|
+
_super.prototype.drawFrame.call(this);
|
|
55
56
|
};
|
|
56
57
|
YUVCanvasRenderer.prototype.rotateCanvas = function (_a) {
|
|
57
58
|
var width = _a.width, height = _a.height, rotation = _a.rotation;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agora-electron-sdk",
|
|
3
|
-
"version": "4.3.
|
|
3
|
+
"version": "4.3.2",
|
|
4
4
|
"description": "agora-electron-sdk",
|
|
5
5
|
"main": "js/AgoraSdk",
|
|
6
6
|
"types": "types/AgoraSdk.d.ts",
|
|
@@ -136,9 +136,9 @@
|
|
|
136
136
|
"yuv-canvas": "1.2.6"
|
|
137
137
|
},
|
|
138
138
|
"agora_electron": {
|
|
139
|
-
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.3.
|
|
140
|
-
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.3.
|
|
141
|
-
"native_sdk_win": "https://download.agora.io/sdk/release/
|
|
142
|
-
"native_sdk_mac": "https://download.agora.io/sdk/release/
|
|
139
|
+
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.3.2-build.1_DCG_Windows_Video_Standalone_20240604_0456_441.zip",
|
|
140
|
+
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.3.2-build.1_DCG_Mac_Video_Standalone_20240604_0500_404.zip",
|
|
141
|
+
"native_sdk_win": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Windows_v4.3.2_FULL.zip",
|
|
142
|
+
"native_sdk_mac": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Mac_v4.3.2_FULL.zip"
|
|
143
143
|
}
|
|
144
144
|
}
|
package/ts/Private/AgoraBase.ts
CHANGED
|
@@ -527,11 +527,11 @@ export enum UserOfflineReasonType {
|
|
|
527
527
|
*/
|
|
528
528
|
export enum InterfaceIdType {
|
|
529
529
|
/**
|
|
530
|
-
* The IAudioDeviceManager interface class.
|
|
530
|
+
* 1: The IAudioDeviceManager interface class.
|
|
531
531
|
*/
|
|
532
532
|
AgoraIidAudioDeviceManager = 1,
|
|
533
533
|
/**
|
|
534
|
-
* The IVideoDeviceManager interface class.
|
|
534
|
+
* 2: The IVideoDeviceManager interface class.
|
|
535
535
|
*/
|
|
536
536
|
AgoraIidVideoDeviceManager = 2,
|
|
537
537
|
/**
|
|
@@ -539,7 +539,7 @@ export enum InterfaceIdType {
|
|
|
539
539
|
*/
|
|
540
540
|
AgoraIidParameterEngine = 3,
|
|
541
541
|
/**
|
|
542
|
-
* The IMediaEngine interface class.
|
|
542
|
+
* 4: The IMediaEngine interface class.
|
|
543
543
|
*/
|
|
544
544
|
AgoraIidMediaEngine = 4,
|
|
545
545
|
/**
|
|
@@ -1295,7 +1295,7 @@ export enum VideoMirrorModeType {
|
|
|
1295
1295
|
}
|
|
1296
1296
|
|
|
1297
1297
|
/**
|
|
1298
|
-
* The bit mask
|
|
1298
|
+
* The bit mask of the codec type.
|
|
1299
1299
|
*/
|
|
1300
1300
|
export enum CodecCapMask {
|
|
1301
1301
|
/**
|
|
@@ -1335,7 +1335,7 @@ export class CodecCapLevels {
|
|
|
1335
1335
|
}
|
|
1336
1336
|
|
|
1337
1337
|
/**
|
|
1338
|
-
* The codec capability of the
|
|
1338
|
+
* The codec capability of the SDK.
|
|
1339
1339
|
*/
|
|
1340
1340
|
export class CodecCapInfo {
|
|
1341
1341
|
/**
|
|
@@ -1343,11 +1343,11 @@ export class CodecCapInfo {
|
|
|
1343
1343
|
*/
|
|
1344
1344
|
codecType?: VideoCodecType;
|
|
1345
1345
|
/**
|
|
1346
|
-
*
|
|
1346
|
+
* Bit mask of the codec types in SDK. See CodecCapMask.
|
|
1347
1347
|
*/
|
|
1348
1348
|
codecCapMask?: number;
|
|
1349
1349
|
/**
|
|
1350
|
-
*
|
|
1350
|
+
* Codec capability of the SDK. See CodecCapLevels.
|
|
1351
1351
|
*/
|
|
1352
1352
|
codecLevels?: CodecCapLevels;
|
|
1353
1353
|
}
|
|
@@ -1383,7 +1383,7 @@ export class VideoEncoderConfiguration {
|
|
|
1383
1383
|
*/
|
|
1384
1384
|
frameRate?: number;
|
|
1385
1385
|
/**
|
|
1386
|
-
* The encoding bitrate (Kbps) of the video. This parameter does not need to be set; keeping the default value STANDARD_BITRATE is sufficient. The SDK automatically matches the most suitable bitrate based on the video resolution and frame rate you have set. For the correspondence between video resolution
|
|
1386
|
+
* The encoding bitrate (Kbps) of the video. This parameter does not need to be set; keeping the default value STANDARD_BITRATE is sufficient. The SDK automatically matches the most suitable bitrate based on the video resolution and frame rate you have set. For the correspondence between video resolution and frame rate, see. STANDARD_BITRATE (0): (Recommended) Standard bitrate mode. COMPATIBLE_BITRATE (-1): Adaptive bitrate mode. In general, Agora suggests that you do not use this value.
|
|
1387
1387
|
*/
|
|
1388
1388
|
bitrate?: number;
|
|
1389
1389
|
/**
|
|
@@ -2423,10 +2423,6 @@ export class VideoTrackInfo {
|
|
|
2423
2423
|
* @ignore
|
|
2424
2424
|
*/
|
|
2425
2425
|
channelId?: string;
|
|
2426
|
-
/**
|
|
2427
|
-
* @ignore
|
|
2428
|
-
*/
|
|
2429
|
-
streamType?: VideoStreamType;
|
|
2430
2426
|
/**
|
|
2431
2427
|
* @ignore
|
|
2432
2428
|
*/
|
|
@@ -2910,7 +2906,7 @@ export class LiveTranscoding {
|
|
|
2910
2906
|
*/
|
|
2911
2907
|
height?: number;
|
|
2912
2908
|
/**
|
|
2913
|
-
*
|
|
2909
|
+
* The encoding bitrate (Kbps) of the video. This parameter does not need to be set; keeping the default value STANDARD_BITRATE is sufficient. The SDK automatically matches the most suitable bitrate based on the video resolution and frame rate you have set. For the correspondence between video resolution and frame rate, see.
|
|
2914
2910
|
*/
|
|
2915
2911
|
videoBitrate?: number;
|
|
2916
2912
|
/**
|
|
@@ -3201,11 +3197,11 @@ export enum ConnectionChangedReasonType {
|
|
|
3201
3197
|
*/
|
|
3202
3198
|
ConnectionChangedInterrupted = 2,
|
|
3203
3199
|
/**
|
|
3204
|
-
* 3: The connection between the SDK and the Agora edge server is banned by the Agora edge server.
|
|
3200
|
+
* 3: The connection between the SDK and the Agora edge server is banned by the Agora edge server. For example, when a user is kicked out of the channel, this status will be returned.
|
|
3205
3201
|
*/
|
|
3206
3202
|
ConnectionChangedBannedByServer = 3,
|
|
3207
3203
|
/**
|
|
3208
|
-
* 4: The SDK fails to join the channel. When the SDK fails to join the channel for more than 20 minutes, this
|
|
3204
|
+
* 4: The SDK fails to join the channel. When the SDK fails to join the channel for more than 20 minutes, this code will be returned and the SDK stops reconnecting to the channel. You need to prompt the user to try to switch to another network and rejoin the channel.
|
|
3209
3205
|
*/
|
|
3210
3206
|
ConnectionChangedJoinFailed = 4,
|
|
3211
3207
|
/**
|
|
@@ -3213,21 +3209,30 @@ export enum ConnectionChangedReasonType {
|
|
|
3213
3209
|
*/
|
|
3214
3210
|
ConnectionChangedLeaveChannel = 5,
|
|
3215
3211
|
/**
|
|
3216
|
-
* 6: The
|
|
3212
|
+
* 6: The App ID is invalid. You need to rejoin the channel with a valid APP ID and make sure the App ID you are using is consistent with the one generated in the Agora Console.
|
|
3217
3213
|
*/
|
|
3218
3214
|
ConnectionChangedInvalidAppId = 6,
|
|
3219
3215
|
/**
|
|
3220
|
-
* 7:
|
|
3216
|
+
* 7: Invalid channel name. Rejoin the channel with a valid channel name. A valid channel name is a string of up to 64 bytes in length. Supported characters (89 characters in total):
|
|
3217
|
+
* All lowercase English letters: a to z.
|
|
3218
|
+
* All uppercase English letters: A to Z.
|
|
3219
|
+
* All numeric characters: 0 to 9.
|
|
3220
|
+
* Space
|
|
3221
|
+
* "!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "=", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", ","
|
|
3221
3222
|
*/
|
|
3222
3223
|
ConnectionChangedInvalidChannelName = 7,
|
|
3223
3224
|
/**
|
|
3224
|
-
* 8:
|
|
3225
|
-
* The App Certificate for the project is enabled in Agora Console, but you do not
|
|
3225
|
+
* 8: Invalid token. Possible reasons are as follows:
|
|
3226
|
+
* The App Certificate for the project is enabled in Agora Console, but you do not pass in a token when joining a channel.
|
|
3226
3227
|
* The uid specified when calling joinChannel to join the channel is inconsistent with the uid passed in when generating the token.
|
|
3228
|
+
* The generated token and the token used to join the channel are not consistent. Ensure the following:
|
|
3229
|
+
* When your project enables App Certificate, you need to pass in a token to join a channel.
|
|
3230
|
+
* The user ID specified when generating the token is consistent with the user ID used when joining the channel.
|
|
3231
|
+
* The generated token is the same as the token passed in to join the channel.
|
|
3227
3232
|
*/
|
|
3228
3233
|
ConnectionChangedInvalidToken = 8,
|
|
3229
3234
|
/**
|
|
3230
|
-
* 9: The
|
|
3235
|
+
* (9): The token currently being used has expired. You need to generate a new token on your server and rejoin the channel with the new token.
|
|
3231
3236
|
*/
|
|
3232
3237
|
ConnectionChangedTokenExpired = 9,
|
|
3233
3238
|
/**
|
|
@@ -3245,7 +3250,7 @@ export enum ConnectionChangedReasonType {
|
|
|
3245
3250
|
*/
|
|
3246
3251
|
ConnectionChangedRenewToken = 12,
|
|
3247
3252
|
/**
|
|
3248
|
-
* 13:
|
|
3253
|
+
* (13): Client IP address changed. If you receive this code multiple times, You need to prompt the user to switch networks and try joining the channel again.
|
|
3249
3254
|
*/
|
|
3250
3255
|
ConnectionChangedClientIpAddressChanged = 13,
|
|
3251
3256
|
/**
|
|
@@ -4015,11 +4020,11 @@ export class ScreenCaptureParameters {
|
|
|
4015
4020
|
*/
|
|
4016
4021
|
dimensions?: VideoDimensions;
|
|
4017
4022
|
/**
|
|
4018
|
-
* On Windows and macOS, this represents the video encoding frame rate (fps) of the
|
|
4023
|
+
* On Windows and macOS, this represents the video encoding frame rate (fps) of the screen sharing stream. The frame rate (fps) of the shared region. The default value is 5. Agora does not recommend setting this to a value greater than 15.
|
|
4019
4024
|
*/
|
|
4020
4025
|
frameRate?: number;
|
|
4021
4026
|
/**
|
|
4022
|
-
* On Windows and macOS, this represents the video encoding bitrate of the
|
|
4027
|
+
* On Windows and macOS, this represents the video encoding bitrate of the screen sharing stream. The bitrate (Kbps) of the shared region. The default value is 0 (the SDK works out a bitrate according to the dimensions of the current screen).
|
|
4023
4028
|
*/
|
|
4024
4029
|
bitrate?: number;
|
|
4025
4030
|
/**
|
|
@@ -4027,7 +4032,7 @@ export class ScreenCaptureParameters {
|
|
|
4027
4032
|
*/
|
|
4028
4033
|
captureMouseCursor?: boolean;
|
|
4029
4034
|
/**
|
|
4030
|
-
* Whether to bring the window to the front when calling the startScreenCaptureByWindowId method to share it: true : Bring the window to the front. false : (Default) Do not bring the window to the front.
|
|
4035
|
+
* Whether to bring the window to the front when calling the startScreenCaptureByWindowId method to share it: true : Bring the window to the front. false : (Default) Do not bring the window to the front. Due to macOS system limitations, when setting this member to bring the window to the front, if the current app has multiple windows, only the main window will be brought to the front.
|
|
4031
4036
|
*/
|
|
4032
4037
|
windowFocus?: boolean;
|
|
4033
4038
|
/**
|
|
@@ -4833,41 +4838,41 @@ export enum MediaTraceEvent {
|
|
|
4833
4838
|
*/
|
|
4834
4839
|
export class VideoRenderingTracingInfo {
|
|
4835
4840
|
/**
|
|
4836
|
-
* The time interval from
|
|
4841
|
+
* The time interval (ms) from startMediaRenderingTracing to SDK triggering the onVideoRenderingTracingResult callback. Agora recommends you call startMediaRenderingTracing before joining a channel.
|
|
4837
4842
|
*/
|
|
4838
4843
|
elapsedTime?: number;
|
|
4839
4844
|
/**
|
|
4840
|
-
* The time interval from
|
|
4845
|
+
* The time interval (ms) from startMediaRenderingTracing to joinChannel. A negative number indicates that startMediaRenderingTracing is called after calling joinChannel.
|
|
4841
4846
|
*/
|
|
4842
4847
|
start2JoinChannel?: number;
|
|
4843
4848
|
/**
|
|
4844
|
-
*
|
|
4849
|
+
* The time interval (ms) from or joinChannel to successfully joining the channel.
|
|
4845
4850
|
*/
|
|
4846
4851
|
join2JoinSuccess?: number;
|
|
4847
4852
|
/**
|
|
4848
|
-
* If the local user calls startMediaRenderingTracing before successfully joining the channel, this value is the time interval from the local user successfully joining the channel to the remote user joining the channel.
|
|
4849
|
-
* If the local user calls startMediaRenderingTracing after successfully joining the channel, the value is the time interval from
|
|
4853
|
+
* If the local user calls startMediaRenderingTracing before successfully joining the channel, this value is the time interval (ms) from the local user successfully joining the channel to the remote user joining the channel.
|
|
4854
|
+
* If the local user calls startMediaRenderingTracing after successfully joining the channel, the value is the time interval (ms) from startMediaRenderingTracing to when the remote user joins the channel.
|
|
4850
4855
|
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, the value is 0 and meaningless.
|
|
4851
4856
|
* In order to reduce the time of rendering the first frame for remote users, Agora recommends that the local user joins the channel when the remote user is in the channel to reduce this value.
|
|
4852
4857
|
*/
|
|
4853
4858
|
joinSuccess2RemoteJoined?: number;
|
|
4854
4859
|
/**
|
|
4855
|
-
* If the local user calls startMediaRenderingTracing before the remote user joins the channel, this value is the time interval from when the remote user joins the channel to when the local user sets the remote view.
|
|
4856
|
-
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, this value is the time interval from calling startMediaRenderingTracing to setting the remote view.
|
|
4860
|
+
* If the local user calls startMediaRenderingTracing before the remote user joins the channel, this value is the time interval (ms) from when the remote user joins the channel to when the local user sets the remote view.
|
|
4861
|
+
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, this value is the time interval (ms) from calling startMediaRenderingTracing to setting the remote view.
|
|
4857
4862
|
* If the local user calls startMediaRenderingTracing after setting the remote view, the value is 0 and has no effect.
|
|
4858
4863
|
* In order to reduce the time of rendering the first frame for remote users, Agora recommends that the local user sets the remote view before the remote user joins the channel, or sets the remote view immediately after the remote user joins the channel to reduce this value.
|
|
4859
4864
|
*/
|
|
4860
4865
|
remoteJoined2SetView?: number;
|
|
4861
4866
|
/**
|
|
4862
|
-
* If the local user calls startMediaRenderingTracing before the remote user joins the channel, this value is the time interval from the remote user joining the channel to subscribing to the remote video stream.
|
|
4863
|
-
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, this value is the time interval from
|
|
4867
|
+
* If the local user calls startMediaRenderingTracing before the remote user joins the channel, this value is the time interval (ms) from the remote user joining the channel to subscribing to the remote video stream.
|
|
4868
|
+
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, this value is the time interval (ms) from startMediaRenderingTracing to subscribing to the remote video stream.
|
|
4864
4869
|
* If the local user calls startMediaRenderingTracing after subscribing to the remote video stream, the value is 0 and has no effect.
|
|
4865
4870
|
* In order to reduce the time of rendering the first frame for remote users, Agora recommends that after the remote user joins the channel, the local user immediately subscribes to the remote video stream to reduce this value.
|
|
4866
4871
|
*/
|
|
4867
4872
|
remoteJoined2UnmuteVideo?: number;
|
|
4868
4873
|
/**
|
|
4869
|
-
* If the local user calls startMediaRenderingTracing before the remote user joins the channel, this value is the time interval from when the remote user joins the channel to when the local user receives the remote video stream.
|
|
4870
|
-
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, this value is the time interval from
|
|
4874
|
+
* If the local user calls startMediaRenderingTracing before the remote user joins the channel, this value is the time interval (ms) from when the remote user joins the channel to when the local user receives the remote video stream.
|
|
4875
|
+
* If the local user calls startMediaRenderingTracing after the remote user joins the channel, this value is the time interval (ms) from startMediaRenderingTracing to receiving the remote video stream.
|
|
4871
4876
|
* If the local user calls startMediaRenderingTracing after receiving the remote video stream, the value is 0 and has no effect.
|
|
4872
4877
|
* In order to reduce the time of rendering the first frame for remote users, Agora recommends that the remote user publishes video streams immediately after joining the channel, and the local user immediately subscribes to remote video streams to reduce this value.
|
|
4873
4878
|
*/
|
|
@@ -949,12 +949,12 @@ export interface IAudioFrameObserverBase {
|
|
|
949
949
|
*/
|
|
950
950
|
export interface IAudioFrameObserver extends IAudioFrameObserverBase {
|
|
951
951
|
/**
|
|
952
|
-
* Retrieves the audio frame
|
|
952
|
+
* Retrieves the audio frame before mixing of subscribed remote users.
|
|
953
953
|
*
|
|
954
954
|
* Due to framework limitations, this callback does not support sending processed audio data back to the SDK.
|
|
955
955
|
*
|
|
956
956
|
* @param channelId The channel ID.
|
|
957
|
-
* @param uid The
|
|
957
|
+
* @param uid The ID of subscribed remote users.
|
|
958
958
|
* @param audioFrame The raw audio data. See AudioFrame.
|
|
959
959
|
*/
|
|
960
960
|
onPlaybackAudioFrameBeforeMixing?(
|
|
@@ -1066,7 +1066,7 @@ export interface IVideoFrameObserver {
|
|
|
1066
1066
|
*
|
|
1067
1067
|
* @param sourceType Video source types, including cameras, screens, or media player. See VideoSourceType.
|
|
1068
1068
|
* @param videoFrame The video frame. See VideoFrame. The default value of the video frame data format obtained through this callback is as follows:
|
|
1069
|
-
* macOS: I420
|
|
1069
|
+
* macOS: I420
|
|
1070
1070
|
* Windows: YUV420
|
|
1071
1071
|
*/
|
|
1072
1072
|
onCaptureVideoFrame?(
|
|
@@ -1078,12 +1078,13 @@ export interface IVideoFrameObserver {
|
|
|
1078
1078
|
* Occurs each time the SDK receives a video frame before encoding.
|
|
1079
1079
|
*
|
|
1080
1080
|
* After you successfully register the video frame observer, the SDK triggers this callback each time it receives a video frame. In this callback, you can get the video data before encoding and then process the data according to your particular scenarios. After processing, you can send the processed video data back to the SDK in this callback.
|
|
1081
|
+
* It's recommended that you implement this callback through the C++ API.
|
|
1081
1082
|
* Due to framework limitations, this callback does not support sending processed video data back to the SDK.
|
|
1082
1083
|
* The video data that this callback gets has been preprocessed, with its content cropped and rotated, and the image enhanced.
|
|
1083
1084
|
*
|
|
1084
1085
|
* @param sourceType The type of the video source. See VideoSourceType.
|
|
1085
1086
|
* @param videoFrame The video frame. See VideoFrame. The default value of the video frame data format obtained through this callback is as follows:
|
|
1086
|
-
* macOS: I420
|
|
1087
|
+
* macOS: I420
|
|
1087
1088
|
* Windows: YUV420
|
|
1088
1089
|
*/
|
|
1089
1090
|
onPreEncodeVideoFrame?(
|
|
@@ -1101,12 +1102,13 @@ export interface IVideoFrameObserver {
|
|
|
1101
1102
|
*
|
|
1102
1103
|
* After you successfully register the video frame observer, the SDK triggers this callback each time it receives a video frame. In this callback, you can get the video data sent from the remote end before rendering, and then process it according to the particular scenarios.
|
|
1103
1104
|
* If the video data type you get is RGBA, the SDK does not support processing the data of the alpha channel.
|
|
1105
|
+
* It's recommended that you implement this callback through the C++ API.
|
|
1104
1106
|
* Due to framework limitations, this callback does not support sending processed video data back to the SDK.
|
|
1105
1107
|
*
|
|
1106
1108
|
* @param channelId The channel ID.
|
|
1107
1109
|
* @param remoteUid The user ID of the remote user who sends the current video frame.
|
|
1108
1110
|
* @param videoFrame The video frame. See VideoFrame. The default value of the video frame data format obtained through this callback is as follows:
|
|
1109
|
-
* macOS: I420
|
|
1111
|
+
* macOS: I420
|
|
1110
1112
|
* Windows: YUV420
|
|
1111
1113
|
*/
|
|
1112
1114
|
onRenderVideoFrame?(
|
|
@@ -1236,7 +1238,7 @@ export class MediaRecorderConfiguration {
|
|
|
1236
1238
|
/**
|
|
1237
1239
|
* Facial information observer.
|
|
1238
1240
|
*
|
|
1239
|
-
* You can call registerFaceInfoObserver to register
|
|
1241
|
+
* You can call registerFaceInfoObserver to register one IFaceInfoObserver observer.
|
|
1240
1242
|
*/
|
|
1241
1243
|
export interface IFaceInfoObserver {
|
|
1242
1244
|
/**
|