agora-electron-sdk 4.5.2-dev.2 → 4.5.40-rc.1
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 +10 -7
- package/js/AgoraSdk.js +1 -1
- package/js/Private/AgoraBase.js +8 -6
- package/js/Private/AgoraMediaPlayerTypes.js +4 -0
- package/js/Renderer/RendererCache.js +11 -2
- package/js/Renderer/WebGLRenderer/index.js +1 -1
- package/package.json +9 -7
- package/scripts/build.js +3 -0
- package/scripts/download.js +3 -1
- package/scripts/synclib.js +25 -3
- package/scripts/util.js +5 -2
- package/ts/AgoraSdk.ts +1 -1
- package/ts/Private/AgoraBase.ts +10 -8
- package/ts/Private/AgoraMediaBase.ts +4 -0
- package/ts/Private/AgoraMediaPlayerTypes.ts +4 -0
- package/ts/Private/IAgoraMediaEngine.ts +2 -2
- package/ts/Private/IAgoraMediaPlayer.ts +1 -1
- package/ts/Private/IAgoraRtcEngine.ts +13 -11
- package/ts/Private/IAgoraRtcEngineEx.ts +4 -7
- package/ts/Renderer/RendererCache.ts +16 -2
- package/ts/Renderer/WebGLRenderer/index.ts +1 -1
- package/types/AgoraSdk.d.ts +1 -1
- package/types/Private/AgoraBase.d.ts +10 -8
- package/types/Private/AgoraBase.d.ts.map +1 -1
- package/types/Private/AgoraMediaBase.d.ts +4 -0
- package/types/Private/AgoraMediaBase.d.ts.map +1 -1
- package/types/Private/AgoraMediaPlayerTypes.d.ts +5 -1
- package/types/Private/AgoraMediaPlayerTypes.d.ts.map +1 -1
- package/types/Private/IAgoraMediaEngine.d.ts +2 -2
- package/types/Private/IAgoraMediaPlayer.d.ts +1 -1
- package/types/Private/IAgoraRtcEngine.d.ts +13 -11
- package/types/Private/IAgoraRtcEngine.d.ts.map +1 -1
- package/types/Private/IAgoraRtcEngineEx.d.ts +4 -7
- package/types/Private/IAgoraRtcEngineEx.d.ts.map +1 -1
- package/types/Renderer/RendererCache.d.ts.map +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
|
|
2
2
|
|
|
3
|
-
## [4.5.
|
|
3
|
+
## [4.5.40-rc.1](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.5.2-build.131-rc.1...v4.5.40-rc.1) (2025-09-28)
|
|
4
4
|
|
|
5
|
-
## [4.5.2-dev.1](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v0.0.0-dev.1...v4.5.2-dev.1) (2025-03-12)
|
|
6
5
|
|
|
7
|
-
|
|
6
|
+
### Features
|
|
7
|
+
|
|
8
|
+
* support linux ([e8a8b08](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/e8a8b08bc7cae8b1fa44404d3a310b562e39821b))
|
|
9
|
+
* support linux for 4.5.40 ([30dc852](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/30dc85218e4232357dde488e546a364d573f4789))
|
|
10
|
+
|
|
11
|
+
## [4.5.2-build.131-rc.1](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.5.1-build.132-rc.1...v4.5.2-build.131-rc.1) (2025-04-27)
|
|
12
|
+
|
|
13
|
+
## [4.5.1-build.132-rc.1](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.5.2...v4.5.1-build.132-rc.1) (2025-04-23)
|
|
8
14
|
|
|
9
15
|
|
|
10
16
|
### Features
|
|
11
17
|
|
|
12
|
-
*
|
|
13
|
-
* remove pwd ([37e5d44](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/37e5d446542a42509f87e571142da93082751df2))
|
|
14
|
-
* roll back example ([b0e7948](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/b0e79486d51629228465ad81c0e66ee65d3f3bdb))
|
|
15
|
-
* update dependencies ([33cf7f6](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/33cf7f683e437484c67a0835222f37bf324f0f0e))
|
|
18
|
+
* support 4.5.1.132 ([#1287](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1287)) ([54b9e83](https://github.com/AgoraIO-Extensions/Electron-SDK/commit/54b9e830e3f1268f2fbe2f59e354333fdade1262)), closes [#1285](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1285) [#1286](https://github.com/AgoraIO-Extensions/Electron-SDK/issues/1286)
|
|
16
19
|
|
|
17
20
|
## [4.5.2](https://github.com/AgoraIO-Extensions/Electron-SDK/compare/v4.5.1...v4.5.2) (2025-03-11)
|
|
18
21
|
|
package/js/AgoraSdk.js
CHANGED
|
@@ -41,7 +41,7 @@ const instance = new RtcEngineExInternal_1.RtcEngineExInternal();
|
|
|
41
41
|
* Currently, the Agora RTC SDK v4.x supports creating only one IRtcEngineEx object for each app.
|
|
42
42
|
*
|
|
43
43
|
* @returns
|
|
44
|
-
*
|
|
44
|
+
* IRtcEngineEx object.
|
|
45
45
|
*/
|
|
46
46
|
function createAgoraRtcEngine(options) {
|
|
47
47
|
Object.assign(Utils_1.AgoraEnv, options);
|
package/js/Private/AgoraBase.js
CHANGED
|
@@ -1082,11 +1082,11 @@ var H264PacketizeMode;
|
|
|
1082
1082
|
var VideoStreamType;
|
|
1083
1083
|
(function (VideoStreamType) {
|
|
1084
1084
|
/**
|
|
1085
|
-
* 0: High-quality video stream.
|
|
1085
|
+
* 0: High-quality video stream, that is, a video stream with the highest resolution and bitrate.
|
|
1086
1086
|
*/
|
|
1087
1087
|
VideoStreamType[VideoStreamType["VideoStreamHigh"] = 0] = "VideoStreamHigh";
|
|
1088
1088
|
/**
|
|
1089
|
-
* 1: Low-quality video stream.
|
|
1089
|
+
* 1: Low-quality video stream, that is, a video stream with the lowest resolution and bitrate.
|
|
1090
1090
|
*/
|
|
1091
1091
|
VideoStreamType[VideoStreamType["VideoStreamLow"] = 1] = "VideoStreamLow";
|
|
1092
1092
|
/**
|
|
@@ -1409,7 +1409,9 @@ class WatermarkRatio {
|
|
|
1409
1409
|
}
|
|
1410
1410
|
exports.WatermarkRatio = WatermarkRatio;
|
|
1411
1411
|
/**
|
|
1412
|
-
*
|
|
1412
|
+
* Watermark image configurations.
|
|
1413
|
+
*
|
|
1414
|
+
* Configuration options for setting the watermark image to be added.
|
|
1413
1415
|
*/
|
|
1414
1416
|
class WatermarkOptions {
|
|
1415
1417
|
}
|
|
@@ -1682,7 +1684,7 @@ var VideoApplicationScenarioType;
|
|
|
1682
1684
|
*/
|
|
1683
1685
|
VideoApplicationScenarioType[VideoApplicationScenarioType["ApplicationScenarioMeeting"] = 1] = "ApplicationScenarioMeeting";
|
|
1684
1686
|
/**
|
|
1685
|
-
* ApplicationScenario1v1 (2) This is applicable to the scenario. To meet the requirements for low latency and high-quality video in this scenario, the SDK optimizes its strategies, improving performance in terms of video quality, first frame rendering, latency on mid-to-low-end devices, and smoothness under weak network conditions. 2: 1v1 video call scenario.
|
|
1687
|
+
* ApplicationScenario1v1 (2) This is applicable to the scenario. To meet the requirements for low latency and high-quality video in this scenario, the SDK optimizes its strategies, improving performance in terms of video quality, first frame rendering, latency on mid-to-low-end devices, and smoothness under weak network conditions. This enumeration value is only applicable to the broadcaster vs. broadcaster scenario. 2: 1v1 video call scenario.
|
|
1686
1688
|
*/
|
|
1687
1689
|
VideoApplicationScenarioType[VideoApplicationScenarioType["ApplicationScenario1v1"] = 2] = "ApplicationScenario1v1";
|
|
1688
1690
|
/**
|
|
@@ -1947,7 +1949,7 @@ var LocalVideoStreamReason;
|
|
|
1947
1949
|
*/
|
|
1948
1950
|
LocalVideoStreamReason[LocalVideoStreamReason["LocalVideoStreamReasonScreenCaptureNoPermission"] = 22] = "LocalVideoStreamReasonScreenCaptureNoPermission";
|
|
1949
1951
|
/**
|
|
1950
|
-
* 24: (Windows only) An unexpected error occurred during screen sharing (possibly due to window blocking failure), resulting in decreased performance, but the screen sharing process itself was not affected.
|
|
1952
|
+
* 24: (Windows only) An unexpected error occurred during screen sharing (possibly due to window blocking failure), resulting in decreased performance, but the screen sharing process itself was not affected. During screen sharing, if blocking a specific window fails due to device driver issues, the SDK will report this event and automatically fall back to sharing the entire screen. If your use case requires masking specific windows to protect privacy, we recommend listening for this event and implementing additional privacy protection mechanisms when it is triggered.
|
|
1951
1953
|
*/
|
|
1952
1954
|
LocalVideoStreamReason[LocalVideoStreamReason["LocalVideoStreamReasonScreenCaptureAutoFallback"] = 24] = "LocalVideoStreamReasonScreenCaptureAutoFallback";
|
|
1953
1955
|
/**
|
|
@@ -2795,7 +2797,7 @@ var VideoViewSetupMode;
|
|
|
2795
2797
|
*/
|
|
2796
2798
|
VideoViewSetupMode[VideoViewSetupMode["VideoViewSetupAdd"] = 1] = "VideoViewSetupAdd";
|
|
2797
2799
|
/**
|
|
2798
|
-
* 2: Deletes a view.
|
|
2800
|
+
* 2: Deletes a view. When you no longer need to use a certain view, it is recommended to delete the view by setting setupMode to VideoViewSetupRemove, otherwise it may lead to leak of rendering resources.
|
|
2799
2801
|
*/
|
|
2800
2802
|
VideoViewSetupMode[VideoViewSetupMode["VideoViewSetupRemove"] = 2] = "VideoViewSetupRemove";
|
|
2801
2803
|
})(VideoViewSetupMode = exports.VideoViewSetupMode || (exports.VideoViewSetupMode = {}));
|
|
@@ -245,6 +245,10 @@ var MediaPlayerEvent;
|
|
|
245
245
|
* @ignore
|
|
246
246
|
*/
|
|
247
247
|
MediaPlayerEvent[MediaPlayerEvent["PlayerEventTryOpenFailed"] = 18] = "PlayerEventTryOpenFailed";
|
|
248
|
+
/**
|
|
249
|
+
* @ignore
|
|
250
|
+
*/
|
|
251
|
+
MediaPlayerEvent[MediaPlayerEvent["PlayerEventHttpRedirect"] = 19] = "PlayerEventHttpRedirect";
|
|
248
252
|
})(MediaPlayerEvent = exports.MediaPlayerEvent || (exports.MediaPlayerEvent = {}));
|
|
249
253
|
/**
|
|
250
254
|
* Events that occur when media resources are preloaded.
|
|
@@ -11,7 +11,7 @@ class RendererCache extends IRendererCache_1.IRendererCache {
|
|
|
11
11
|
yBuffer: Buffer.alloc(0),
|
|
12
12
|
uBuffer: Buffer.alloc(0),
|
|
13
13
|
vBuffer: Buffer.alloc(0),
|
|
14
|
-
alphaBuffer:
|
|
14
|
+
alphaBuffer: Buffer.alloc(0),
|
|
15
15
|
width: 0,
|
|
16
16
|
height: 0,
|
|
17
17
|
yStride: 0,
|
|
@@ -74,7 +74,16 @@ class RendererCache extends IRendererCache_1.IRendererCache {
|
|
|
74
74
|
return;
|
|
75
75
|
}
|
|
76
76
|
if (!Utils_1.AgoraEnv.encodeAlpha) {
|
|
77
|
-
this.videoFrame.alphaBuffer
|
|
77
|
+
if (this.videoFrame.alphaBuffer &&
|
|
78
|
+
this.videoFrame.alphaBuffer.length > 0) {
|
|
79
|
+
this.videoFrame.alphaBuffer = Buffer.alloc(0);
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
else {
|
|
83
|
+
if (!this.videoFrame.alphaBuffer ||
|
|
84
|
+
this.videoFrame.alphaBuffer.length === 0) {
|
|
85
|
+
this.videoFrame.alphaBuffer = Buffer.alloc(this.videoFrame.width * this.videoFrame.height);
|
|
86
|
+
}
|
|
78
87
|
}
|
|
79
88
|
if (isNewFrame) {
|
|
80
89
|
this.renderers.forEach((renderer) => {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agora-electron-sdk",
|
|
3
|
-
"version": "4.5.
|
|
3
|
+
"version": "4.5.40-rc.1",
|
|
4
4
|
"description": "agora-electron-sdk",
|
|
5
5
|
"main": "js/AgoraSdk",
|
|
6
6
|
"types": "types/AgoraSdk.d.ts",
|
|
@@ -33,8 +33,8 @@
|
|
|
33
33
|
"build_windows_win32_release": "cmake-js rebuild --arch=ia32 --CDCMAKE_OSX_ARCHITECTURES=\"i386\" --CDCMAKE_BUILD_TYPE=Release",
|
|
34
34
|
"build_windows_x64_debug": "cmake-js rebuild --arch=x64 --CDCMAKE_OSX_ARCHITECTURES=\"x86_64\" --CDCMAKE_BUILD_TYPE=Debug -G \"Visual Studio 16 2019\"",
|
|
35
35
|
"build_windows_x64_release": "cmake-js rebuild --arch=x64 --CDCMAKE_OSX_ARCHITECTURES=\"x86_64\" --CDCMAKE_BUILD_TYPE=Release",
|
|
36
|
-
"build_linux_debug": "cmake-js rebuild --arch=x64 --CDCMAKE_BUILD_TYPE=Debug -G \"Unix Makefiles\"",
|
|
37
|
-
"build_linux_release": "cmake-js rebuild --arch=x64 --CDCMAKE_BUILD_TYPE=Release -G \"Unix Makefiles\"",
|
|
36
|
+
"build_linux_debug": "cmake-js rebuild --arch=x64 --CDCMAKE_OSX_ARCHITECTURES=\"x86_64\" --CDCMAKE_BUILD_TYPE=Debug -G \"Unix Makefiles\"",
|
|
37
|
+
"build_linux_release": "cmake-js rebuild --arch=x64 --CDCMAKE_OSX_ARCHITECTURES=\"x86_64\" --CDCMAKE_BUILD_TYPE=Release -G \"Unix Makefiles\"",
|
|
38
38
|
"test": "jest",
|
|
39
39
|
"typecheck": "tsc --noEmit",
|
|
40
40
|
"lint": "eslint \"**/*.{js,ts,tsx}\"",
|
|
@@ -159,9 +159,11 @@
|
|
|
159
159
|
"pify": "^4.0.1"
|
|
160
160
|
},
|
|
161
161
|
"agora_electron": {
|
|
162
|
-
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.5.
|
|
163
|
-
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.5.
|
|
164
|
-
"native_sdk_win": "https://download.agora.io/sdk/release/
|
|
165
|
-
"native_sdk_mac": "https://download.agora.io/sdk/release/
|
|
162
|
+
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.5.40-build.1_DCG_Windows_Video_Standalone_20250924_0622_31777.zip",
|
|
163
|
+
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.5.40-build.1_DCG_Mac_Video_Standalone_20250924_0622_32713.zip",
|
|
164
|
+
"native_sdk_win": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Windows_rel.v4.5.40_30192_FULL_20250923_1742_897771.zip",
|
|
165
|
+
"native_sdk_mac": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Mac_rel.v4.5.40_25593_FULL_20250923_1743_897773.zip",
|
|
166
|
+
"iris_sdk_linux": "https://download.agora.io/sdk/release/iris_4.5.40-build.1_DCG_Linux_Video_Standalone_20250924_0622_3524.zip",
|
|
167
|
+
"native_sdk_linux": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Linux_rel.v4.5.40_26488_FULL_20250922_1709_896225_external.zip"
|
|
166
168
|
}
|
|
167
169
|
}
|
package/scripts/build.js
CHANGED
package/scripts/download.js
CHANGED
|
@@ -67,7 +67,9 @@ module.exports = (uri, output, opts) => {
|
|
|
67
67
|
rejectUnauthorized: process.env.npm_config_strict_ssl !== 'false',
|
|
68
68
|
};
|
|
69
69
|
|
|
70
|
-
const stream = got.stream(uri
|
|
70
|
+
const stream = got.stream(uri, {
|
|
71
|
+
headers: opts.headers,
|
|
72
|
+
});
|
|
71
73
|
|
|
72
74
|
const promise = pEvent(stream, 'response')
|
|
73
75
|
.then((res) => {
|
package/scripts/synclib.js
CHANGED
|
@@ -9,7 +9,26 @@ const { getOS, moveFile, getIrisStandAlone } = require('./util');
|
|
|
9
9
|
|
|
10
10
|
const config = getConfig();
|
|
11
11
|
|
|
12
|
-
const {
|
|
12
|
+
const {
|
|
13
|
+
iris_sdk_mac,
|
|
14
|
+
iris_sdk_win,
|
|
15
|
+
native_sdk_mac,
|
|
16
|
+
native_sdk_win,
|
|
17
|
+
iris_sdk_linux,
|
|
18
|
+
native_sdk_linux,
|
|
19
|
+
} = config;
|
|
20
|
+
|
|
21
|
+
const IRIS_SDK_URLS = {
|
|
22
|
+
mac: iris_sdk_mac,
|
|
23
|
+
win32: iris_sdk_win,
|
|
24
|
+
linux: iris_sdk_linux,
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const NATIVE_SDK_URLS = {
|
|
28
|
+
mac: native_sdk_mac,
|
|
29
|
+
win32: native_sdk_win,
|
|
30
|
+
linux: native_sdk_linux,
|
|
31
|
+
};
|
|
13
32
|
|
|
14
33
|
const downloadSDK = async ({
|
|
15
34
|
preHook,
|
|
@@ -21,6 +40,9 @@ const downloadSDK = async ({
|
|
|
21
40
|
logger.info(`Downloading:${sdkURL}`);
|
|
22
41
|
await preHook();
|
|
23
42
|
await download(sdkURL, destDir, {
|
|
43
|
+
headers: {
|
|
44
|
+
'X-JFrog-Art-Api': process.env.JFROG_API_KEY || '',
|
|
45
|
+
},
|
|
24
46
|
strip: strip,
|
|
25
47
|
extract: true,
|
|
26
48
|
//https://github.com/kevva/decompress/issues/68
|
|
@@ -47,7 +69,7 @@ const syncLib = async (cb) => {
|
|
|
47
69
|
cleanDir(destNativeSDKDir);
|
|
48
70
|
}
|
|
49
71
|
},
|
|
50
|
-
sdkURL: os
|
|
72
|
+
sdkURL: IRIS_SDK_URLS[os],
|
|
51
73
|
destDir: destIrisSDKDir,
|
|
52
74
|
});
|
|
53
75
|
if (irisStandAlone) {
|
|
@@ -56,7 +78,7 @@ const syncLib = async (cb) => {
|
|
|
56
78
|
cleanDir(destNativeSDKDir);
|
|
57
79
|
},
|
|
58
80
|
strip: 0,
|
|
59
|
-
sdkURL: os
|
|
81
|
+
sdkURL: NATIVE_SDK_URLS[os],
|
|
60
82
|
destDir: destNativeSDKDir,
|
|
61
83
|
});
|
|
62
84
|
} else {
|
package/scripts/util.js
CHANGED
|
@@ -28,7 +28,7 @@ exports.moveFile = (sp, tp) => {
|
|
|
28
28
|
};
|
|
29
29
|
|
|
30
30
|
exports.getIrisStandAlone = () => {
|
|
31
|
-
const { iris_sdk_mac, iris_sdk_win } = getConfig();
|
|
31
|
+
const { iris_sdk_mac, iris_sdk_win, iris_sdk_linux } = getConfig();
|
|
32
32
|
const os = this.getOS();
|
|
33
33
|
if (
|
|
34
34
|
(os === 'mac' &&
|
|
@@ -36,7 +36,10 @@ exports.getIrisStandAlone = () => {
|
|
|
36
36
|
iris_sdk_mac.toLowerCase().indexOf('standalone') !== -1) ||
|
|
37
37
|
(os === 'win32' &&
|
|
38
38
|
iris_sdk_win &&
|
|
39
|
-
iris_sdk_win.toLowerCase().indexOf('standalone') !== -1)
|
|
39
|
+
iris_sdk_win.toLowerCase().indexOf('standalone') !== -1) ||
|
|
40
|
+
(os === 'linux' &&
|
|
41
|
+
iris_sdk_linux &&
|
|
42
|
+
iris_sdk_linux.toLowerCase().indexOf('standalone') !== -1)
|
|
40
43
|
) {
|
|
41
44
|
logger.info('iris use standalone package');
|
|
42
45
|
return true;
|
package/ts/AgoraSdk.ts
CHANGED
|
@@ -30,7 +30,7 @@ const instance = new RtcEngineExInternal();
|
|
|
30
30
|
* Currently, the Agora RTC SDK v4.x supports creating only one IRtcEngineEx object for each app.
|
|
31
31
|
*
|
|
32
32
|
* @returns
|
|
33
|
-
*
|
|
33
|
+
* IRtcEngineEx object.
|
|
34
34
|
*/
|
|
35
35
|
export function createAgoraRtcEngine(options?: AgoraEnvOptions): IRtcEngineEx {
|
|
36
36
|
Object.assign(AgoraEnv, options);
|
package/ts/Private/AgoraBase.ts
CHANGED
|
@@ -1154,11 +1154,11 @@ export enum H264PacketizeMode {
|
|
|
1154
1154
|
*/
|
|
1155
1155
|
export enum VideoStreamType {
|
|
1156
1156
|
/**
|
|
1157
|
-
* 0: High-quality video stream.
|
|
1157
|
+
* 0: High-quality video stream, that is, a video stream with the highest resolution and bitrate.
|
|
1158
1158
|
*/
|
|
1159
1159
|
VideoStreamHigh = 0,
|
|
1160
1160
|
/**
|
|
1161
|
-
* 1: Low-quality video stream.
|
|
1161
|
+
* 1: Low-quality video stream, that is, a video stream with the lowest resolution and bitrate.
|
|
1162
1162
|
*/
|
|
1163
1163
|
VideoStreamLow = 1,
|
|
1164
1164
|
/**
|
|
@@ -1558,7 +1558,7 @@ export class SimulcastStreamConfig {
|
|
|
1558
1558
|
*/
|
|
1559
1559
|
dimensions?: VideoDimensions;
|
|
1560
1560
|
/**
|
|
1561
|
-
* Video
|
|
1561
|
+
* Video bitrate (Kbps). The default value is -1. This parameter does not need to be set. The SDK automatically matches the most suitable bitrate based on the video resolution and frame rate you set.
|
|
1562
1562
|
*/
|
|
1563
1563
|
kBitrate?: number;
|
|
1564
1564
|
/**
|
|
@@ -1678,7 +1678,9 @@ export class WatermarkRatio {
|
|
|
1678
1678
|
}
|
|
1679
1679
|
|
|
1680
1680
|
/**
|
|
1681
|
-
*
|
|
1681
|
+
* Watermark image configurations.
|
|
1682
|
+
*
|
|
1683
|
+
* Configuration options for setting the watermark image to be added.
|
|
1682
1684
|
*/
|
|
1683
1685
|
export class WatermarkOptions {
|
|
1684
1686
|
/**
|
|
@@ -2120,7 +2122,7 @@ export enum VideoApplicationScenarioType {
|
|
|
2120
2122
|
*/
|
|
2121
2123
|
ApplicationScenarioMeeting = 1,
|
|
2122
2124
|
/**
|
|
2123
|
-
* ApplicationScenario1v1 (2) This is applicable to the scenario. To meet the requirements for low latency and high-quality video in this scenario, the SDK optimizes its strategies, improving performance in terms of video quality, first frame rendering, latency on mid-to-low-end devices, and smoothness under weak network conditions. 2: 1v1 video call scenario.
|
|
2125
|
+
* ApplicationScenario1v1 (2) This is applicable to the scenario. To meet the requirements for low latency and high-quality video in this scenario, the SDK optimizes its strategies, improving performance in terms of video quality, first frame rendering, latency on mid-to-low-end devices, and smoothness under weak network conditions. This enumeration value is only applicable to the broadcaster vs. broadcaster scenario. 2: 1v1 video call scenario.
|
|
2124
2126
|
*/
|
|
2125
2127
|
ApplicationScenario1v1 = 2,
|
|
2126
2128
|
/**
|
|
@@ -2385,7 +2387,7 @@ export enum LocalVideoStreamReason {
|
|
|
2385
2387
|
*/
|
|
2386
2388
|
LocalVideoStreamReasonScreenCaptureNoPermission = 22,
|
|
2387
2389
|
/**
|
|
2388
|
-
* 24: (Windows only) An unexpected error occurred during screen sharing (possibly due to window blocking failure), resulting in decreased performance, but the screen sharing process itself was not affected.
|
|
2390
|
+
* 24: (Windows only) An unexpected error occurred during screen sharing (possibly due to window blocking failure), resulting in decreased performance, but the screen sharing process itself was not affected. During screen sharing, if blocking a specific window fails due to device driver issues, the SDK will report this event and automatically fall back to sharing the entire screen. If your use case requires masking specific windows to protect privacy, we recommend listening for this event and implementing additional privacy protection mechanisms when it is triggered.
|
|
2389
2391
|
*/
|
|
2390
2392
|
LocalVideoStreamReasonScreenCaptureAutoFallback = 24,
|
|
2391
2393
|
/**
|
|
@@ -3664,7 +3666,7 @@ export enum VideoViewSetupMode {
|
|
|
3664
3666
|
*/
|
|
3665
3667
|
VideoViewSetupAdd = 1,
|
|
3666
3668
|
/**
|
|
3667
|
-
* 2: Deletes a view.
|
|
3669
|
+
* 2: Deletes a view. When you no longer need to use a certain view, it is recommended to delete the view by setting setupMode to VideoViewSetupRemove, otherwise it may lead to leak of rendering resources.
|
|
3668
3670
|
*/
|
|
3669
3671
|
VideoViewSetupRemove = 2,
|
|
3670
3672
|
}
|
|
@@ -3686,7 +3688,7 @@ export class VideoCanvas {
|
|
|
3686
3688
|
*/
|
|
3687
3689
|
view?: any;
|
|
3688
3690
|
/**
|
|
3689
|
-
* The background color of the video canvas in RGBA format. The default value is 0x00000000, which represents
|
|
3691
|
+
* The background color of the video canvas in RGBA format. The default value is 0x00000000, which represents black.
|
|
3690
3692
|
*/
|
|
3691
3693
|
backgroundColor?: number;
|
|
3692
3694
|
/**
|
|
@@ -235,14 +235,14 @@ export abstract class IMediaEngine {
|
|
|
235
235
|
* Pushes the external raw video frame to the SDK through video tracks.
|
|
236
236
|
*
|
|
237
237
|
* To publish a custom video source, see the following steps:
|
|
238
|
-
* Call createCustomVideoTrack to create a video track and get the video track ID.
|
|
238
|
+
* Call createCustomVideoTrack to create a video track and get the video track ID. If you only need to push one custom video source to the channel, you can directly call the setExternalVideoSource method and the SDK will automatically create a video track with the videoTrackId set to 0.
|
|
239
239
|
* Call joinChannel to join the channel. In ChannelMediaOptions, set customVideoTrackId to the video track ID that you want to publish, and set publishCustomVideoTrack to true.
|
|
240
240
|
* Call this method and specify videoTrackId as the video track ID set in step 2. You can then publish the corresponding custom video source in the channel. After calling this method, even if you stop pushing external video frames to the SDK, the custom video stream will still be counted as the video duration usage and incur charges. Agora recommends that you take appropriate measures based on the actual situation to avoid such video billing.
|
|
241
241
|
* If you no longer need to capture external video data, you can call destroyCustomVideoTrack to destroy the custom video track.
|
|
242
242
|
* If you only want to use the external video data for local preview and not publish it in the channel, you can call muteLocalVideoStream to cancel sending video stream or call updateChannelMediaOptions to set publishCustomVideoTrack to false.
|
|
243
243
|
*
|
|
244
244
|
* @param frame The external raw video frame to be pushed. See ExternalVideoFrame.
|
|
245
|
-
* @param videoTrackId The video track ID returned by calling the createCustomVideoTrack method.
|
|
245
|
+
* @param videoTrackId The video track ID returned by calling the createCustomVideoTrack method. If you only need to push one custom video source, set videoTrackId to 0.
|
|
246
246
|
*
|
|
247
247
|
* @returns
|
|
248
248
|
* 0: Success.
|
|
@@ -154,7 +154,7 @@ export abstract class IMediaPlayer {
|
|
|
154
154
|
* @param index The index of the media stream. This parameter must be less than the return value of getStreamCount.
|
|
155
155
|
*
|
|
156
156
|
* @returns
|
|
157
|
-
* If the call succeeds, returns the detailed information of the media stream. See PlayerStreamInfo. null, if the method call fails.
|
|
157
|
+
* If the call succeeds, returns the detailed information of the media stream. See PlayerStreamInfo. null is returned, if the method call fails.
|
|
158
158
|
*/
|
|
159
159
|
abstract getStreamInfo(index: number): PlayerStreamInfo;
|
|
160
160
|
|
|
@@ -1488,7 +1488,7 @@ export interface IRtcEngineEventHandler {
|
|
|
1488
1488
|
*
|
|
1489
1489
|
* This callback occurs when the local audio effect file finishes playing.
|
|
1490
1490
|
*
|
|
1491
|
-
* @param soundId The ID of the audio effect. The ID of each audio effect file
|
|
1491
|
+
* @param soundId The ID of the audio effect. The unique ID of each audio effect file.
|
|
1492
1492
|
*/
|
|
1493
1493
|
onAudioEffectFinished?(soundId: number): void;
|
|
1494
1494
|
|
|
@@ -2970,7 +2970,7 @@ export abstract class IRtcEngine {
|
|
|
2970
2970
|
* Gets the SDK version.
|
|
2971
2971
|
*
|
|
2972
2972
|
* @returns
|
|
2973
|
-
*
|
|
2973
|
+
* SDKBuildInfo object.
|
|
2974
2974
|
*/
|
|
2975
2975
|
abstract getVersion(): SDKBuildInfo;
|
|
2976
2976
|
|
|
@@ -3146,7 +3146,7 @@ export abstract class IRtcEngine {
|
|
|
3146
3146
|
/**
|
|
3147
3147
|
* Renews the token.
|
|
3148
3148
|
*
|
|
3149
|
-
*
|
|
3149
|
+
* This method is used to update the token. After successfully calling this method, the SDK will trigger the callback. A token will expire after a certain period of time, at which point the SDK will be unable to establish a connection with the server.
|
|
3150
3150
|
*
|
|
3151
3151
|
* @param token The new token.
|
|
3152
3152
|
*
|
|
@@ -3457,6 +3457,7 @@ export abstract class IRtcEngine {
|
|
|
3457
3457
|
* Enables/Disables the virtual background.
|
|
3458
3458
|
*
|
|
3459
3459
|
* The virtual background feature enables the local user to replace their original background with a static image, dynamic video, blurred background, or portrait-background segmentation to achieve picture-in-picture effect. Once the virtual background feature is enabled, all users in the channel can see the custom background. Call this method after calling enableVideo or startPreview.
|
|
3460
|
+
* Using a video as a your virtual background will lead to continuous increase in memory usage, which may cause issues such as app crashes. Therefore,it is recommended to reduce the resolution and frame rate of the video when using it.
|
|
3460
3461
|
* This feature has high requirements on device performance. When calling this method, the SDK automatically checks the capabilities of the current device. Agora recommends you use virtual background on devices with the following processors:
|
|
3461
3462
|
* Devices with an i5 CPU and better
|
|
3462
3463
|
* Agora recommends that you use this feature in scenarios that meet the following conditions:
|
|
@@ -3529,7 +3530,7 @@ export abstract class IRtcEngine {
|
|
|
3529
3530
|
* If someone subscribes to the low-quality stream, the SDK enables the low-quality stream and resets it to the SimulcastStreamConfig configuration used in the most recent calling of setDualStreamMode. If no configuration has been set by the user previously, the following values are used:
|
|
3530
3531
|
* Resolution: 480 × 272
|
|
3531
3532
|
* Frame rate: 15 fps
|
|
3532
|
-
* Bitrate: 500 Kbps ApplicationScenario1v1 (2) This is applicable to the scenario. To meet the requirements for low latency and high-quality video in this scenario, the SDK optimizes its strategies, improving performance in terms of video quality, first frame rendering, latency on mid-to-low-end devices, and smoothness under weak network conditions. ApplicationScenarioLiveshow (3) This is applicable to the scenario. In this scenario, fast video rendering and high image quality are crucial. The SDK implements several performance optimizations, including automatically enabling accelerated audio and video frame rendering to minimize first-frame latency (no need to call enableInstantMediaRendering), and B-frame encoding to achieve better image quality and bandwidth efficiency. The SDK also provides enhanced video quality and smooth playback, even in poor network conditions or on lower-end devices.
|
|
3533
|
+
* Bitrate: 500 Kbps ApplicationScenario1v1 (2) This is applicable to the scenario. To meet the requirements for low latency and high-quality video in this scenario, the SDK optimizes its strategies, improving performance in terms of video quality, first frame rendering, latency on mid-to-low-end devices, and smoothness under weak network conditions. This enumeration value is only applicable to the broadcaster vs. broadcaster scenario. ApplicationScenarioLiveshow (3) This is applicable to the scenario. In this scenario, fast video rendering and high image quality are crucial. The SDK implements several performance optimizations, including automatically enabling accelerated audio and video frame rendering to minimize first-frame latency (no need to call enableInstantMediaRendering), and B-frame encoding to achieve better image quality and bandwidth efficiency. The SDK also provides enhanced video quality and smooth playback, even in poor network conditions or on lower-end devices.
|
|
3533
3534
|
*
|
|
3534
3535
|
* @returns
|
|
3535
3536
|
* 0: Success.
|
|
@@ -3661,7 +3662,7 @@ export abstract class IRtcEngine {
|
|
|
3661
3662
|
* Enables/Disables the local video capture.
|
|
3662
3663
|
*
|
|
3663
3664
|
* This method disables or re-enables the local video capture, and does not affect receiving the remote video stream. After calling enableVideo, the local video capture is enabled by default. If you call enableLocalVideo (false) to disable local video capture within the channel, it also simultaneously stops publishing the video stream within the channel. If you want to restart video catpure, you can call enableLocalVideo (true) and then call updateChannelMediaOptions to set the options parameter to publish the locally captured video stream in the channel. After the local video capturer is successfully disabled or re-enabled, the SDK triggers the onRemoteVideoStateChanged callback on the remote client.
|
|
3664
|
-
* You can call this method either before or after joining a channel.
|
|
3665
|
+
* You can call this method either before or after joining a channel. However, if you call it before joining, the settings will only take effect once you have joined the channel.
|
|
3665
3666
|
* This method enables the internal engine and is valid after leaving the channel.
|
|
3666
3667
|
*
|
|
3667
3668
|
* @param enabled Whether to enable the local video capture. true : (Default) Enable the local video capture. false : Disable the local video capture. Once the local video is disabled, the remote users cannot receive the video stream of the local user, while the local user can still receive the video streams of remote users. When set to false, this method does not require a local camera.
|
|
@@ -3912,7 +3913,7 @@ export abstract class IRtcEngine {
|
|
|
3912
3913
|
/**
|
|
3913
3914
|
* Destroys the media player instance.
|
|
3914
3915
|
*
|
|
3915
|
-
* @param mediaPlayer
|
|
3916
|
+
* @param mediaPlayer IMediaPlayer object.
|
|
3916
3917
|
*
|
|
3917
3918
|
* @returns
|
|
3918
3919
|
* ≥ 0: Success. Returns the ID of media player instance.
|
|
@@ -4277,7 +4278,7 @@ export abstract class IRtcEngine {
|
|
|
4277
4278
|
/**
|
|
4278
4279
|
* Gets the volume of a specified audio effect file.
|
|
4279
4280
|
*
|
|
4280
|
-
* @param soundId The ID of the audio effect. The ID of each audio effect file
|
|
4281
|
+
* @param soundId The ID of the audio effect. The unique ID of each audio effect file.
|
|
4281
4282
|
* @param volume The playback volume. The value range is [0, 100]. The default value is 100, which represents the original volume.
|
|
4282
4283
|
*
|
|
4283
4284
|
* @returns
|
|
@@ -6059,7 +6060,7 @@ export abstract class IRtcEngine {
|
|
|
6059
6060
|
* Each client within the channel can have up to 5 data channels simultaneously, with a total shared packet bitrate limit of 30 KB/s for all data channels.
|
|
6060
6061
|
* Each data channel can send up to 60 packets per second, with each packet being a maximum of 1 KB. A successful method call triggers the onStreamMessage callback on the remote client, from which the remote user gets the stream message. A failed method call triggers the onStreamMessageError callback on the remote client.
|
|
6061
6062
|
* This method needs to be called after createDataStream and joining the channel.
|
|
6062
|
-
*
|
|
6063
|
+
* This method applies to broadcasters only.
|
|
6063
6064
|
*
|
|
6064
6065
|
* @param streamId The data stream ID. You can get the data stream ID by calling createDataStream.
|
|
6065
6066
|
* @param data The message to be sent.
|
|
@@ -6078,7 +6079,7 @@ export abstract class IRtcEngine {
|
|
|
6078
6079
|
/**
|
|
6079
6080
|
* Adds a watermark image to the local video.
|
|
6080
6081
|
*
|
|
6081
|
-
* This method adds a PNG watermark image to the local video in the live streaming. Once the watermark image is added, all the audience in the channel (CDN audience included), and the capturing device can see and capture it. The Agora SDK supports adding only one watermark image onto a
|
|
6082
|
+
* This method adds a PNG watermark image to the local video in the live streaming. Once the watermark image is added, all the audience in the channel (CDN audience included), and the capturing device can see and capture it. The Agora SDK supports adding only one watermark image onto a live video stream. The newly added watermark image replaces the previous one. The watermark coordinates are dependent on the settings in the setVideoEncoderConfiguration method:
|
|
6082
6083
|
* If the orientation mode of the encoding video (OrientationMode) is fixed landscape mode or the adaptive landscape mode, the watermark uses the landscape orientation.
|
|
6083
6084
|
* If the orientation mode of the encoding video (OrientationMode) is fixed portrait mode or the adaptive portrait mode, the watermark uses the portrait orientation.
|
|
6084
6085
|
* When setting the watermark position, the region must be less than the dimensions set in the setVideoEncoderConfiguration method; otherwise, the watermark image will be cropped.
|
|
@@ -6226,6 +6227,7 @@ export abstract class IRtcEngine {
|
|
|
6226
6227
|
* Once registered, the user account can be used to identify the local user when the user joins the channel. After the registration is successful, the user account can identify the identity of the local user, and the user can use it to join the channel. This method is optional. If you want to join a channel using a user account, you can choose one of the following methods:
|
|
6227
6228
|
* Call the registerLocalUserAccount method to register a user account, and then call the joinChannelWithUserAccount method to join a channel, which can shorten the time it takes to enter the channel.
|
|
6228
6229
|
* Call the joinChannelWithUserAccount method to join a channel.
|
|
6230
|
+
* Starting from v4.6.0, the SDK will no longer automatically map Int UID to the String userAccount used when registering a User Account. If you want to join a channel with the original String userAccount used during registration, call the joinChannelWithUserAccount method to join the channel, instead of calling joinChannel and pass in the Int UID obtained through this method
|
|
6229
6231
|
* Ensure that the userAccount is unique in the channel.
|
|
6230
6232
|
* To ensure smooth communication, use the same parameter type to identify the user. For example, if a user joins the channel with a UID, then ensure all the other users use the UID too. The same applies to the user account. If a user joins the channel with the Agora Web SDK, ensure that the ID of the user is set to the same parameter type.
|
|
6231
6233
|
*
|
|
@@ -6680,8 +6682,8 @@ export abstract class IRtcEngine {
|
|
|
6680
6682
|
* Enables tracing the video frame rendering process.
|
|
6681
6683
|
*
|
|
6682
6684
|
* The SDK starts tracing the rendering status of the video frames in the channel from the moment this method is successfully called and reports information about the event through the onVideoRenderingTracingResult callback.
|
|
6683
|
-
*
|
|
6684
|
-
* After the local user leaves the current channel, the SDK automatically
|
|
6685
|
+
* If you have not called this method, the SDK tracks the rendering events of the video frames from the moment you call joinChannel to join the channel. You can call this method at an appropriate time according to the actual application scenario to set the starting position for tracking video rendering events.
|
|
6686
|
+
* After the local user leaves the current channel, the SDK automatically tracks the video rendering events from the moment you join a channel.
|
|
6685
6687
|
*
|
|
6686
6688
|
* @returns
|
|
6687
6689
|
* 0: Success.
|
|
@@ -202,9 +202,7 @@ export abstract class IRtcEngineEx extends IRtcEngine {
|
|
|
202
202
|
* The SDK will dynamically adjust the size of the corresponding video stream based on the size of the video window to save bandwidth and computing resources. The default aspect ratio of the low-quality video stream is the same as that of the high-quality video stream. According to the current aspect ratio of the high-quality video stream, the system will automatically allocate the resolution, frame rate, and bitrate of the low-quality video stream. Depending on the default behavior of the sender and the specific settings when calling setDualStreamMode, the scenarios for the receiver calling this method are as follows:
|
|
203
203
|
* The SDK enables low-quality video stream adaptive mode (AutoSimulcastStream) on the sender side by default, meaning only the high-quality video stream is transmitted. Only the receiver with the role of the host can call this method to initiate a low-quality video stream request. Once the sender receives the request, it starts automatically sending the low-quality video stream. At this point, all users in the channel can call this method to switch to low-quality video stream subscription mode.
|
|
204
204
|
* If the sender calls setDualStreamMode and sets mode to DisableSimulcastStream (never send low-quality video stream), then calling this method will have no effect.
|
|
205
|
-
* If the sender calls setDualStreamMode and sets mode to EnableSimulcastStream (always send low-quality video stream), both the host and audience receivers can call this method to switch to low-quality video stream subscription mode.
|
|
206
|
-
* If the publisher has already called setDualStreamModeEx and set mode to DisableSimulcastStream (never send low-quality video stream), calling this method will not take effect, you should call setDualStreamModeEx again on the sending end and adjust the settings.
|
|
207
|
-
* Calling this method on the receiving end of the audience role will not take effect.
|
|
205
|
+
* If the sender calls setDualStreamMode and sets mode to EnableSimulcastStream (always send low-quality video stream), both the host and audience receivers can call this method to switch to low-quality video stream subscription mode. If the publisher has already called setDualStreamModeEx and set mode to DisableSimulcastStream (never send low-quality video stream), calling this method will not take effect, you should call setDualStreamModeEx again on the sending end and adjust the settings.
|
|
208
206
|
*
|
|
209
207
|
* @param uid The user ID.
|
|
210
208
|
* @param streamType The video stream type, see VideoStreamType.
|
|
@@ -572,7 +570,6 @@ export abstract class IRtcEngineEx extends IRtcEngine {
|
|
|
572
570
|
* Each data channel can send up to 60 packets per second, with each packet being a maximum of 1 KB. After calling createDataStreamEx, you can call this method to send data stream messages to all users in the channel.
|
|
573
571
|
* Call this method after joinChannelEx.
|
|
574
572
|
* Ensure that you call createDataStreamEx to create a data channel before calling this method.
|
|
575
|
-
* This method applies only to the COMMUNICATION profile or to the hosts in the LIVE_BROADCASTING profile. If an audience in the LIVE_BROADCASTING profile calls this method, the audience may be switched to a host.
|
|
576
573
|
*
|
|
577
574
|
* @param streamId The data stream ID. You can get the data stream ID by calling createDataStreamEx.
|
|
578
575
|
* @param data The message to be sent.
|
|
@@ -593,7 +590,7 @@ export abstract class IRtcEngineEx extends IRtcEngine {
|
|
|
593
590
|
/**
|
|
594
591
|
* Adds a watermark image to the local video.
|
|
595
592
|
*
|
|
596
|
-
* This method adds a PNG watermark image to the local video in the live streaming. Once the watermark image is added, all the audience in the channel (CDN audience included), and the capturing device can see and capture it. The Agora SDK supports adding only one watermark image onto a
|
|
593
|
+
* This method adds a PNG watermark image to the local video in the live streaming. Once the watermark image is added, all the audience in the channel (CDN audience included), and the capturing device can see and capture it. The Agora SDK supports adding only one watermark image onto a live video stream. The newly added watermark image replaces the previous one. The watermark coordinates are dependent on the settings in the setVideoEncoderConfigurationEx method:
|
|
597
594
|
* If the orientation mode of the encoding video (OrientationMode) is fixed landscape mode or the adaptive landscape mode, the watermark uses the landscape orientation.
|
|
598
595
|
* If the orientation mode of the encoding video (OrientationMode) is fixed portrait mode or the adaptive portrait mode, the watermark uses the portrait orientation.
|
|
599
596
|
* When setting the watermark position, the region must be less than the dimensions set in the setVideoEncoderConfigurationEx method; otherwise, the watermark image will be cropped.
|
|
@@ -930,8 +927,8 @@ export abstract class IRtcEngineEx extends IRtcEngine {
|
|
|
930
927
|
/**
|
|
931
928
|
* Enables tracing the video frame rendering process.
|
|
932
929
|
*
|
|
933
|
-
*
|
|
934
|
-
* After the local user leaves the current channel, the SDK automatically
|
|
930
|
+
* If you have not called this method, the SDK tracks the rendering events of the video frames from the moment you call joinChannel to join the channel. You can call this method at an appropriate time according to the actual application scenario to set the starting position for tracking video rendering events.
|
|
931
|
+
* After the local user leaves the current channel, the SDK automatically tracks the video rendering events from the moment you join a channel. The SDK starts tracing the rendering status of the video frames in the channel from the moment this method is successfully called and reports information about the event through the onVideoRenderingTracingResult callback.
|
|
935
932
|
*
|
|
936
933
|
* @param connection The connection information. See RtcConnection.
|
|
937
934
|
*
|
|
@@ -17,7 +17,7 @@ export class RendererCache extends IRendererCache {
|
|
|
17
17
|
yBuffer: Buffer.alloc(0),
|
|
18
18
|
uBuffer: Buffer.alloc(0),
|
|
19
19
|
vBuffer: Buffer.alloc(0),
|
|
20
|
-
alphaBuffer:
|
|
20
|
+
alphaBuffer: Buffer.alloc(0),
|
|
21
21
|
width: 0,
|
|
22
22
|
height: 0,
|
|
23
23
|
yStride: 0,
|
|
@@ -95,7 +95,21 @@ export class RendererCache extends IRendererCache {
|
|
|
95
95
|
}
|
|
96
96
|
|
|
97
97
|
if (!AgoraEnv.encodeAlpha) {
|
|
98
|
-
|
|
98
|
+
if (
|
|
99
|
+
this.videoFrame.alphaBuffer &&
|
|
100
|
+
this.videoFrame.alphaBuffer.length > 0
|
|
101
|
+
) {
|
|
102
|
+
this.videoFrame.alphaBuffer = Buffer.alloc(0);
|
|
103
|
+
}
|
|
104
|
+
} else {
|
|
105
|
+
if (
|
|
106
|
+
!this.videoFrame.alphaBuffer ||
|
|
107
|
+
this.videoFrame.alphaBuffer.length === 0
|
|
108
|
+
) {
|
|
109
|
+
this.videoFrame.alphaBuffer = Buffer.alloc(
|
|
110
|
+
this.videoFrame.width! * this.videoFrame.height!
|
|
111
|
+
);
|
|
112
|
+
}
|
|
99
113
|
}
|
|
100
114
|
|
|
101
115
|
if (isNewFrame) {
|
package/types/AgoraSdk.d.ts
CHANGED
|
@@ -24,7 +24,7 @@ export * from './Utils';
|
|
|
24
24
|
* Currently, the Agora RTC SDK v4.x supports creating only one IRtcEngineEx object for each app.
|
|
25
25
|
*
|
|
26
26
|
* @returns
|
|
27
|
-
*
|
|
27
|
+
* IRtcEngineEx object.
|
|
28
28
|
*/
|
|
29
29
|
export declare function createAgoraRtcEngine(options?: AgoraEnvOptions): IRtcEngineEx;
|
|
30
30
|
/**
|