trtc-electron-sdk 11.7.603 → 11.8.603-alpha.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.
Files changed (55) hide show
  1. package/liteav/LocalMediaTranscoder/index.d.ts +2 -2
  2. package/liteav/LocalMediaTranscoder/index.js +9 -25
  3. package/liteav/Renderer/Canvas2DRenderer/index.js +4 -5
  4. package/liteav/Renderer/Canvas3DRenderer/I420Canvas3DRenderer.js +9 -13
  5. package/liteav/Renderer/Canvas3DRenderer/RGBACanvas3DRenderer.js +3 -7
  6. package/liteav/Renderer/Canvas3DRenderer/index.d.ts +1 -5
  7. package/liteav/Renderer/Canvas3DRenderer/index.js +28 -51
  8. package/liteav/Renderer/Canvas3DRenderer/webgl-utils.d.ts +0 -0
  9. package/liteav/Renderer/Canvas3DRenderer/webgl-utils.js +2 -2
  10. package/liteav/Renderer/VideoRenderer/index.js +4 -5
  11. package/liteav/Renderer/index.d.ts +1 -10
  12. package/liteav/Renderer/index.js +18 -28
  13. package/liteav/Renderer/util.d.ts +8 -6
  14. package/liteav/Renderer/util.js +9 -7
  15. package/liteav/Renderer/yuv-buffer.d.ts +3 -3
  16. package/liteav/plugins/audio-effect-manager/index.d.ts +43 -0
  17. package/liteav/plugins/audio-effect-manager/index.js +148 -0
  18. package/liteav/plugins/audio-effect-manager/package.json +14 -0
  19. package/liteav/plugins/device-manager-plugin/index.d.ts +81 -0
  20. package/liteav/plugins/device-manager-plugin/index.js +470 -0
  21. package/liteav/plugins/device-manager-plugin/package.json +16 -0
  22. package/liteav/plugins/media-mixing-plugin/index.d.ts +55 -0
  23. package/liteav/plugins/media-mixing-plugin/index.js +90 -0
  24. package/liteav/plugins/media-mixing-plugin/package.json +16 -0
  25. package/liteav/plugins/video-effect-plugin/index.d.ts +24 -0
  26. package/liteav/plugins/video-effect-plugin/index.js +56 -0
  27. package/liteav/plugins/video-effect-plugin/package.json +18 -0
  28. package/liteav/trtc.d.ts +97 -288
  29. package/liteav/trtc.js +389 -693
  30. package/liteav/trtc_define.d.ts +68 -113
  31. package/liteav/trtc_define.js +95 -142
  32. package/liteav/vod_player.d.ts +11 -8
  33. package/liteav/vod_player.js +40 -80
  34. package/package.json +6 -10
  35. package/scripts/download.js +11 -7
  36. package/liteav/Render/BGRAVideoRenderer/index.js +0 -114
  37. package/liteav/Render/Canvas3DRGBARenderer/index.js +0 -241
  38. package/liteav/Render/GlRenderer/index.js +0 -439
  39. package/liteav/Render/GlRenderer/webgl-utils.js +0 -1337
  40. package/liteav/Render/I420VideoRenderer/index.js +0 -106
  41. package/liteav/Render/RGBAVideoRenderer/index.js +0 -115
  42. package/liteav/Render/RGBRenderer/index.js +0 -112
  43. package/liteav/Render/SoftwareRenderer/index.js +0 -153
  44. package/liteav/Render/index.d.ts +0 -58
  45. package/liteav/Render/index.js +0 -63
  46. package/liteav/Render/util.d.ts +0 -46
  47. package/liteav/Render/util.js +0 -140
  48. package/liteav/logger.d.ts +0 -15
  49. package/liteav/logger.js +0 -78
  50. package/scripts/copy-sdk.js +0 -78
  51. package/scripts/copy-types.js +0 -3
  52. package/scripts/postinstall.js +0 -46
  53. package/scripts/prerelase.js +0 -19
  54. package/scripts/publish-doc.js +0 -91
  55. package/scripts/publish-npm.js +0 -26
@@ -402,9 +402,9 @@ declare class TRTCLocalMediaTranscoder extends EventEmitter {
402
402
  removeImageSource(path: string): void;
403
403
  /**
404
404
  * 设置本地混流转码视频预览节点
405
- * @param view {HTMLElement | null} - 如果传入的是 HTML 元素,必须是块元素;传入 null 时,会停止视频预览
405
+ * @param el {HTMLElement | null} - 如果传入的是 HTML 元素,必须是块元素;传入 null 时,会停止视频预览
406
406
  */
407
- setMixedVideoRenderView(view: HTMLElement | null): void;
407
+ setMixedVideoRenderView(el: HTMLElement | null): void;
408
408
  private setMixedVideoFrameRenderCallback;
409
409
  private unsetMixedVideoFrameRenderCallback;
410
410
  private setEventCallback;
@@ -1,13 +1,9 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  exports.TRTCLocalMediaTranscodingSourceType = exports.TRTCLocalMediaTranscodingEvents = exports.TRTCLocalMediaTranscodingError = void 0;
7
4
  const events_1 = require("events");
8
5
  const trtc_define_1 = require("../trtc_define");
9
6
  const Renderer_1 = require("../Renderer");
10
- const logger_1 = __importDefault(require("../logger"));
11
7
  /**
12
8
  * @description 本地媒体流混流转码错误码
13
9
  * @enum {Number}
@@ -401,7 +397,7 @@ class TRTCLocalMediaTranscoder extends events_1.EventEmitter {
401
397
  this.container = null;
402
398
  }
403
399
  catch (error) {
404
- logger_1.default.warn('TRTCLocalMediaTranscoder.destroy error', error);
400
+ console.warn('trtc: TRTCLocalMediaTranscoder.destroy error', error);
405
401
  }
406
402
  }
407
403
  // 帧率、码率在 JS 层为数值,可能被设置为负数,底层要求为无符号整数,此处做检验并将负值设置为零
@@ -520,11 +516,11 @@ class TRTCLocalMediaTranscoder extends events_1.EventEmitter {
520
516
  }
521
517
  /**
522
518
  * 设置本地混流转码视频预览节点
523
- * @param view {HTMLElement | null} - 如果传入的是 HTML 元素,必须是块元素;传入 null 时,会停止视频预览
519
+ * @param el {HTMLElement | null} - 如果传入的是 HTML 元素,必须是块元素;传入 null 时,会停止视频预览
524
520
  */
525
- setMixedVideoRenderView(view) {
526
- if (view && view instanceof HTMLElement) {
527
- if (this.container === view) {
521
+ setMixedVideoRenderView(el) {
522
+ if (el && el instanceof HTMLElement) {
523
+ if (this.container === el) {
528
524
  return; // 重复在同一个 HTML 节点内渲染,不用处理,直接退出
529
525
  }
530
526
  else if (this.renderer) {
@@ -532,25 +528,13 @@ class TRTCLocalMediaTranscoder extends events_1.EventEmitter {
532
528
  this.renderer.destroy();
533
529
  this.renderer = null;
534
530
  // 重新记录渲染的 HTML 节点并创建渲染器
535
- this.container = view;
536
- this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, {
537
- type: Renderer_1.RenderType.Video,
538
- onContextLost: () => {
539
- this.container = view;
540
- this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, { type: Renderer_1.RenderType.Canvas2D });
541
- },
542
- });
531
+ this.container = el;
532
+ this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container);
543
533
  }
544
534
  else {
545
535
  // 第一次设置渲染的 HTML 节点,并创建渲染器,设置渲染回调
546
- this.container = view;
547
- this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, {
548
- type: Renderer_1.RenderType.Video,
549
- onContextLost: () => {
550
- this.container = view;
551
- this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container, { type: Renderer_1.RenderType.Canvas2D });
552
- },
553
- });
536
+ this.container = el;
537
+ this.renderer = (0, Renderer_1.createRenderer)(this.pixelFormat, this.container);
554
538
  this.setMixedVideoFrameRenderCallback();
555
539
  }
556
540
  }
@@ -8,7 +8,6 @@ const yuv_canvas_1 = __importDefault(require("yuv-canvas"));
8
8
  const yuv_buffer_1 = __importDefault(require("../yuv-buffer"));
9
9
  const trtc_define_1 = require("../../trtc_define");
10
10
  const util_1 = require("../util");
11
- const logger_1 = __importDefault(require("../../logger"));
12
11
  class Canvas2dRenderer {
13
12
  constructor(pixelFormat, view) {
14
13
  this.pixelFormat = pixelFormat;
@@ -47,7 +46,7 @@ class Canvas2dRenderer {
47
46
  this.viewContainer.removeChild(this.viewWrapper);
48
47
  }
49
48
  else {
50
- logger_1.default.warn("trtc: Canvas2DRenderer unbind error: remove viewWrapper error", this.viewWrapper, this.viewContainer, (_a = this.viewContainer) === null || _a === void 0 ? void 0 : _a.parentElement);
49
+ console.warn("trtc: Canvas2DRenderer unbind error: remove viewWrapper error", this.viewWrapper, this.viewContainer, (_a = this.viewContainer) === null || _a === void 0 ? void 0 : _a.parentElement);
51
50
  }
52
51
  this.viewContainer = null;
53
52
  this.yuv = null;
@@ -64,7 +63,7 @@ class Canvas2dRenderer {
64
63
  this._drawFrameBGRA(frameData);
65
64
  break;
66
65
  default:
67
- logger_1.default.warn('Canvas2dRenderer.drawFrame error. Not support video format:', this.pixelFormat);
66
+ console.warn('trtc:Canvas2dRenderer.drawFrame error. Not support video format:', this.pixelFormat);
68
67
  }
69
68
  }
70
69
  _drawFrameI420(frameData) {
@@ -108,7 +107,7 @@ class Canvas2dRenderer {
108
107
  }
109
108
  }
110
109
  catch (err) {
111
- logger_1.default.error('Canvas2dRenderer._drawFrameI420 error:', err);
110
+ console.error('trtc:Canvas2dRenderer._drawFrameI420 error:', err);
112
111
  }
113
112
  }
114
113
  _drawFrameRGBA(frameData) {
@@ -152,7 +151,7 @@ class Canvas2dRenderer {
152
151
  }
153
152
  }
154
153
  catch (err) {
155
- logger_1.default.error('Canvas2dRenderer._drawFrameRGBA error:', err);
154
+ console.error('trtc:Canvas2dRenderer._drawFrameRGBA error:', err);
156
155
  }
157
156
  }
158
157
  _drawFrameBGRA(frameData) {
@@ -1,11 +1,7 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
3
  // import { createProgramFromSources } from './webgl-utils.js';
7
4
  const util_1 = require("../util");
8
- const logger_1 = __importDefault(require("../../logger"));
9
5
  const createProgramFromSources = require('./webgl-utils').createProgramFromSources;
10
6
  const vertexShaderSource = 'attribute vec2 a_position;'
11
7
  + 'attribute vec2 a_texCoord;'
@@ -47,7 +43,7 @@ const createGL = function (canvas) {
47
43
  || canvas.getContext("experimental-webgl");
48
44
  }
49
45
  catch (err) {
50
- logger_1.default.warn('createGL error:', err);
46
+ console.warn('trtc:createGL error:', err);
51
47
  isSuccess = false;
52
48
  }
53
49
  if (!isSuccess || !gl) {
@@ -72,10 +68,10 @@ class I420Canvas3DRenderer {
72
68
  this.glProgram = createProgramFromSources(this.gl, [vertexShaderSource, yuvShaderSource]);
73
69
  this.gl.useProgram(this.glProgram);
74
70
  this._initTextures();
75
- logger_1.default.debug('gl created', this.gl, canvas);
71
+ console.debug('trtc:gl created', this.gl, canvas);
76
72
  }
77
73
  catch (err) {
78
- logger_1.default.warn('I420RenderContextCreator.constructor() failed.', err);
74
+ console.warn('trtc:I420RenderContextCreator.constructor() failed.', err);
79
75
  throw new Error('create WebGL context failed');
80
76
  }
81
77
  }
@@ -97,7 +93,7 @@ class I420Canvas3DRenderer {
97
93
  }
98
94
  }
99
95
  catch (err) {
100
- logger_1.default.warn('I420Canvas3DRenderer.draw error:', err);
96
+ console.warn('trtc:I420Canvas3DRenderer.draw error:', err);
101
97
  }
102
98
  }
103
99
  destroy() {
@@ -107,11 +103,11 @@ class I420Canvas3DRenderer {
107
103
  if (glExtension) {
108
104
  glExtension.loseContext();
109
105
  }
110
- logger_1.default.debug('I420Canvas3DRenderer isContextLost:', this.gl.isContextLost());
106
+ console.debug('trtc:I420Canvas3DRenderer isContextLost:', this.gl.isContextLost());
111
107
  }
112
108
  }
113
109
  catch (err) {
114
- logger_1.default.warn('I420Canvas3DRenderer.destroy', err);
110
+ console.warn('trtc:I420Canvas3DRenderer.destroy', err);
115
111
  }
116
112
  this._deleteProgram(this.glProgram);
117
113
  this.glProgram = null;
@@ -238,7 +234,7 @@ class I420Canvas3DRenderer {
238
234
  if (util_1.config.getDebugMode()) {
239
235
  e = this.gl.getError();
240
236
  if (e != this.gl.NO_ERROR) {
241
- logger_1.default.warn('upload y plane ', width, height, yplane.byteLength, ' error', e);
237
+ console.log('trtc:upload y plane ', width, height, yplane.byteLength, ' error', e);
242
238
  }
243
239
  }
244
240
  this.gl.activeTexture(this.gl.TEXTURE1);
@@ -247,7 +243,7 @@ class I420Canvas3DRenderer {
247
243
  if (util_1.config.getDebugMode()) {
248
244
  e = this.gl.getError();
249
245
  if (e != this.gl.NO_ERROR) {
250
- logger_1.default.warn('upload u plane ', width, height, uplane.byteLength, ' error', e);
246
+ console.log('trtc:upload u plane ', width, height, uplane.byteLength, ' error', e);
251
247
  }
252
248
  }
253
249
  this.gl.activeTexture(this.gl.TEXTURE2);
@@ -256,7 +252,7 @@ class I420Canvas3DRenderer {
256
252
  if (util_1.config.getDebugMode()) {
257
253
  e = this.gl.getError();
258
254
  if (e != this.gl.NO_ERROR) {
259
- logger_1.default.warn('upload v plane ', width, height, vplane.byteLength, ' error', e);
255
+ console.log('trtc:upload v plane ', width, height, vplane.byteLength, ' error', e);
260
256
  }
261
257
  }
262
258
  }
@@ -1,9 +1,5 @@
1
1
  "use strict";
2
- var __importDefault = (this && this.__importDefault) || function (mod) {
3
- return (mod && mod.__esModule) ? mod : { "default": mod };
4
- };
5
2
  Object.defineProperty(exports, "__esModule", { value: true });
6
- const logger_1 = __importDefault(require("../../logger"));
7
3
  const vertex = [
8
4
  -1, -1, 0,
9
5
  1, -1, 0.0,
@@ -29,7 +25,7 @@ const createGL = function (canvas) {
29
25
  || canvas.getContext("experimental-webgl", { alpha: true, premultipliedAlpha: false });
30
26
  }
31
27
  catch (err) {
32
- logger_1.default.warn('createGL error:', err);
28
+ console.warn('trtc:createGL error:', err);
33
29
  isSuccess = false;
34
30
  }
35
31
  if (!isSuccess || !gl) {
@@ -141,7 +137,7 @@ class RGBACanvas3DRenderer {
141
137
  initTexture(this.gl);
142
138
  }
143
139
  catch (err) {
144
- logger_1.default.warn('RGBARenderContextCreator.create() failed.', err);
140
+ console.warn('trtc:RGBARenderContextCreator.create() failed.', err);
145
141
  throw new Error('create WebGL context failed');
146
142
  }
147
143
  }
@@ -157,7 +153,7 @@ class RGBACanvas3DRenderer {
157
153
  }
158
154
  }
159
155
  catch (err) {
160
- logger_1.default.warn('RGBACanvas3DRenderer.draw error:', err);
156
+ console.warn('trtc:RGBACanvas3DRenderer.draw error:', err);
161
157
  }
162
158
  }
163
159
  destroy() {
@@ -12,11 +12,7 @@ declare class Canvas3dRenderer implements IRenderer {
12
12
  private i420Width;
13
13
  private i420Height;
14
14
  private i420Rotation;
15
- private onContextLost;
16
- constructor(pixelFormat: TRTCVideoPixelFormat, view: HTMLElement, options: {
17
- onContextLost: (() => void) | null;
18
- });
19
- private _handleContextLost;
15
+ constructor(pixelFormat: TRTCVideoPixelFormat, view: HTMLElement);
20
16
  private _createCanvas3DRenderer;
21
17
  setContentMode(mode: TRTCVideoFillMode): void;
22
18
  private bind;
@@ -8,20 +8,19 @@ const trtc_define_1 = require("../../trtc_define");
8
8
  const util_1 = require("../util");
9
9
  const RGBACanvas3DRenderer_1 = __importDefault(require("./RGBACanvas3DRenderer"));
10
10
  const I420Canvas3DRenderer_1 = __importDefault(require("./I420Canvas3DRenderer"));
11
- const logger_1 = __importDefault(require("../../logger"));
12
11
  const UP_LIMIT_COUNT = 16;
13
12
  let currentCreatedCount = 0;
14
13
  class Canvas3dRenderer {
15
- constructor(pixelFormat, view, options) {
16
- this.i420Width = 640;
17
- this.i420Height = 360;
14
+ constructor(pixelFormat, view) {
15
+ this.i420Width = 0;
16
+ this.i420Height = 0;
18
17
  this.i420Rotation = 0;
19
18
  if (currentCreatedCount < UP_LIMIT_COUNT) {
20
19
  currentCreatedCount = currentCreatedCount + 1;
21
- logger_1.default.debug('currentCreatedCount=', currentCreatedCount);
20
+ console.log('trtc: currentCreatedCount=', currentCreatedCount);
22
21
  }
23
22
  else {
24
- throw new Error('WebGL context reach up limit');
23
+ throw new Error('trtc: WebGL context reach up limit');
25
24
  }
26
25
  this.pixelFormat = pixelFormat;
27
26
  this.viewContainer = view;
@@ -39,15 +38,8 @@ class Canvas3dRenderer {
39
38
  this.canvas = null;
40
39
  this.cacheCanvasOptions = {};
41
40
  this.canvas3DRenderer = null;
42
- this.onContextLost = options.onContextLost || null;
43
- this._handleContextLost = this._handleContextLost.bind(this);
44
41
  this.bind(view);
45
42
  }
46
- _handleContextLost(e) {
47
- logger_1.default.warn("_handleContextLost:", e);
48
- this.onContextLost && this.onContextLost();
49
- this.destroy();
50
- }
51
43
  _createCanvas3DRenderer() {
52
44
  if (this.canvas) {
53
45
  try {
@@ -62,7 +54,7 @@ class Canvas3dRenderer {
62
54
  }
63
55
  }
64
56
  catch (err) {
65
- logger_1.default.warn('create WebGL context failed.', err);
57
+ console.warn('trtc:create WebGL context failed.', err);
66
58
  throw new Error('create and initialize WebGL context failed');
67
59
  }
68
60
  }
@@ -77,43 +69,36 @@ class Canvas3dRenderer {
77
69
  this.canvas = document.createElement('canvas');
78
70
  this.viewWrapper.appendChild(this.canvas);
79
71
  this.viewContainer.appendChild(this.viewWrapper);
80
- this.canvas.addEventListener("webglcontextlost", this._handleContextLost);
81
- try {
82
- // I420 WebGL 渲染有些特殊,视频宽高发生变化时,需要重新创建 canvas
83
- if (this.pixelFormat === trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420) {
84
- if (this.i420Width || this.i420Height) {
85
- this.canvas.width = this.i420Width;
86
- this.canvas.height = this.i420Height;
87
- this.canvas3DRenderer = this._createCanvas3DRenderer();
88
- }
89
- }
90
- else {
72
+ // I420 WebGL 渲染有些特殊,视频宽高发生变化时,需要重新创建 canvas
73
+ if (this.pixelFormat === trtc_define_1.TRTCVideoPixelFormat.TRTCVideoPixelFormat_I420) {
74
+ // 初始化时,i420Width i420Height 为 0,所以不会创建渲染器
75
+ if (this.i420Width || this.i420Height) {
76
+ this.canvas.width = this.i420Width;
77
+ this.canvas.height = this.i420Height;
91
78
  this.canvas3DRenderer = this._createCanvas3DRenderer();
92
79
  }
93
80
  }
94
- catch (e) {
95
- this.canvas.removeEventListener("webglcontextlost", this._handleContextLost);
96
- throw e;
81
+ else {
82
+ this.canvas3DRenderer = this._createCanvas3DRenderer();
97
83
  }
98
84
  }
99
85
  }
100
86
  unbind() {
101
- var _a, _b, _c;
87
+ var _a, _b;
102
88
  (_a = this.canvas3DRenderer) === null || _a === void 0 ? void 0 : _a.destroy();
103
89
  this.canvas3DRenderer = null;
104
90
  if (this.canvas && this.viewWrapper && this.canvas.parentElement === this.viewWrapper) {
105
91
  this.viewWrapper.removeChild(this.canvas);
106
92
  }
107
93
  else {
108
- logger_1.default.warn("Canvas3DRenderer unbind error: remove canvas error", this.canvas, this.viewWrapper);
94
+ console.warn("trtc: Canvas3DRenderer unbind error: remove canvas error", this.canvas, this.viewWrapper);
109
95
  }
110
- (_b = this.canvas) === null || _b === void 0 ? void 0 : _b.removeEventListener("webglcontextlost", this._handleContextLost);
111
96
  this.canvas = null;
112
97
  if (this.viewWrapper && this.viewContainer && this.viewWrapper.parentElement === this.viewContainer) {
113
98
  this.viewContainer.removeChild(this.viewWrapper);
114
99
  }
115
100
  else {
116
- logger_1.default.warn("Canvas3DRenderer unbind error: remove viewWrapper error", this.viewWrapper, this.viewContainer, (_c = this.viewContainer) === null || _c === void 0 ? void 0 : _c.parentElement);
101
+ console.warn("trtc: Canvas3DRenderer unbind error: remove viewWrapper error", this.viewWrapper, this.viewContainer, (_b = this.viewContainer) === null || _b === void 0 ? void 0 : _b.parentElement);
117
102
  }
118
103
  this.viewContainer = null;
119
104
  }
@@ -129,7 +114,7 @@ class Canvas3dRenderer {
129
114
  this._drawFrameBGRA(frameData);
130
115
  break;
131
116
  default:
132
- logger_1.default.warn('Canvas2dRenderer.drawFrame error. Not support video format:', this.pixelFormat);
117
+ console.warn('trtc:Canvas2dRenderer.drawFrame error. Not support video format:', this.pixelFormat);
133
118
  }
134
119
  }
135
120
  _drawFrameI420(frameData) {
@@ -139,21 +124,14 @@ class Canvas3dRenderer {
139
124
  if (width <= 0 || height <= 0) {
140
125
  throw new Error(`wrong video parameter width:${width} or height:${height}`);
141
126
  }
142
- try {
143
- // I420 WebGL 渲染有些特殊,视频宽高发生变化时,需要重新创建 canvas
144
- if (width !== this.i420Width || height !== this.i420Height || rotation !== this.i420Rotation) {
145
- const tempViewContainer = this.viewContainer;
146
- this.unbind();
147
- this.i420Width = width;
148
- this.i420Height = height;
149
- this.i420Rotation = rotation;
150
- this.bind(tempViewContainer);
151
- }
152
- }
153
- catch (e) {
154
- this.onContextLost && this.onContextLost();
155
- this.destroy();
156
- throw new Error("re-create WebGL context failed");
127
+ // I420 WebGL 渲染有些特殊,视频宽高发生变化时,需要重新创建 canvas
128
+ if (width !== this.i420Width || height !== this.i420Height || rotation !== this.i420Rotation) {
129
+ const tempViewContainer = this.viewContainer;
130
+ this.unbind();
131
+ this.i420Width = width;
132
+ this.i420Height = height;
133
+ this.i420Rotation = rotation;
134
+ this.bind(tempViewContainer);
157
135
  }
158
136
  if (this.viewWrapper && this.canvas3DRenderer) {
159
137
  this._updateCanvasStyle({
@@ -173,7 +151,7 @@ class Canvas3dRenderer {
173
151
  }
174
152
  }
175
153
  catch (err) {
176
- logger_1.default.error('Canvas3dRenderer._drawFrameI420 error:', err);
154
+ console.error('trtc:Canvas3dRenderer._drawFrameI420 error:', err);
177
155
  }
178
156
  }
179
157
  _drawFrameRGBA(frameData) {
@@ -201,7 +179,7 @@ class Canvas3dRenderer {
201
179
  }
202
180
  }
203
181
  catch (err) {
204
- logger_1.default.error('Canvas3dRenderer._drawFrameRGBA error:', err);
182
+ console.error('trtc:Canvas3dRenderer._drawFrameRGBA error:', err);
205
183
  }
206
184
  }
207
185
  _drawFrameBGRA(frameData) {
@@ -235,7 +213,6 @@ class Canvas3dRenderer {
235
213
  this.unbind();
236
214
  this.viewWrapper = null;
237
215
  currentCreatedCount--;
238
- this.onContextLost = null;
239
216
  }
240
217
  }
241
218
  }
@@ -51,10 +51,10 @@
51
51
  function error(msg) {
52
52
  if (topWindow.console) {
53
53
  if (topWindow.console.error) {
54
- topWindow.console.error('[TRTC]', msg);
54
+ topWindow.console.error('trtc:', msg);
55
55
  }
56
56
  else if (topWindow.console.log) {
57
- topWindow.console.log('[TRTC]', msg);
57
+ topWindow.console.log('trtc:', msg);
58
58
  }
59
59
  }
60
60
  }
@@ -15,7 +15,6 @@ Object.defineProperty(exports, "__esModule", { value: true });
15
15
  const lodash_isequal_1 = __importDefault(require("lodash.isequal"));
16
16
  const trtc_define_1 = require("../../trtc_define");
17
17
  const util_1 = require("../util");
18
- const logger_1 = __importDefault(require("../../logger"));
19
18
  class VideoRenderer {
20
19
  constructor(pixelFormat, view) {
21
20
  this.pixelFormat = pixelFormat;
@@ -58,7 +57,7 @@ class VideoRenderer {
58
57
  this.viewContainer.removeChild(this.viewWrapper);
59
58
  }
60
59
  else {
61
- logger_1.default.warn("Canvas3DRenderer unbind error: remove viewWrapper error", this.viewWrapper, this.viewContainer, (_a = this.viewContainer) === null || _a === void 0 ? void 0 : _a.parentElement);
60
+ console.warn("trtc: Canvas3DRenderer unbind error: remove viewWrapper error", this.viewWrapper, this.viewContainer, (_a = this.viewContainer) === null || _a === void 0 ? void 0 : _a.parentElement);
62
61
  }
63
62
  this.viewContainer = null;
64
63
  }
@@ -74,13 +73,13 @@ class VideoRenderer {
74
73
  yield this._drawFrameH264(frameData);
75
74
  break;
76
75
  default:
77
- logger_1.default.warn('VideoRenderer.drawFrame error. Not support video format:', this.pixelFormat);
76
+ console.warn('trtc:VideoRenderer.drawFrame error. Not support video format:', this.pixelFormat);
78
77
  }
79
78
  });
80
79
  }
81
80
  _drawFrameH264(frameData) {
82
81
  // To-do
83
- logger_1.default.warn('H264 renderer not supported right now');
82
+ console.warn('trtc:H264 renderer not supported right now');
84
83
  }
85
84
  _drawFrameNonH264(frameData) {
86
85
  return __awaiter(this, void 0, void 0, function* () {
@@ -113,7 +112,7 @@ class VideoRenderer {
113
112
  }
114
113
  }
115
114
  catch (err) {
116
- logger_1.default.error('VideoRenderer._drawFrameH264 error:', err);
115
+ console.error('trtc:VideoRenderer._drawFrameH264 error:', err);
117
116
  }
118
117
  });
119
118
  }
@@ -1,14 +1,5 @@
1
1
  import { TRTCVideoPixelFormat } from '../trtc_define';
2
2
  import IRenderer from './IRenderer';
3
- export declare enum RenderType {
4
- WebGL = "WebGL",
5
- Canvas2D = "Canvas2D",
6
- Video = "Video"
7
- }
8
- export interface RendererOptions {
9
- onContextLost?: () => void;
10
- type?: RenderType;
11
- }
12
- export declare function createRenderer(pixelFormat: TRTCVideoPixelFormat, view: HTMLElement, options: RendererOptions): IRenderer;
3
+ export declare function createRenderer(pixelFormat: TRTCVideoPixelFormat, view: HTMLElement): IRenderer;
13
4
  export * from './IRenderer';
14
5
  export * from './types';
@@ -13,45 +13,35 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
13
13
  return (mod && mod.__esModule) ? mod : { "default": mod };
14
14
  };
15
15
  Object.defineProperty(exports, "__esModule", { value: true });
16
- exports.createRenderer = exports.RenderType = void 0;
16
+ exports.createRenderer = void 0;
17
17
  const Canvas3DRenderer_1 = __importDefault(require("./Canvas3DRenderer"));
18
18
  const Canvas2DRenderer_1 = __importDefault(require("./Canvas2DRenderer"));
19
19
  const VideoRenderer_1 = __importDefault(require("./VideoRenderer"));
20
20
  const util_1 = require("./util");
21
- const logger_1 = __importDefault(require("../logger"));
22
21
  const isWebGLSupported = (0, util_1.isSupportWebGL)();
23
- var RenderType;
24
- (function (RenderType) {
25
- RenderType["WebGL"] = "WebGL";
26
- RenderType["Canvas2D"] = "Canvas2D";
27
- RenderType["Video"] = "Video";
28
- })(RenderType = exports.RenderType || (exports.RenderType = {}));
29
- function createRenderer(pixelFormat, view, options) {
30
- if (options && !options.type) {
31
- options.type = RenderType.Video;
32
- }
22
+ function createRenderer(pixelFormat, view) {
33
23
  let renderer = null;
34
- if (window.VideoFrame && window.VideoDecoder && options.type === RenderType.Video) {
35
- // Electron 15+ 版本支持 WebCodec API
36
- renderer = new VideoRenderer_1.default(pixelFormat, view);
37
- logger_1.default.log('created Video render');
38
- }
39
- else if (isWebGLSupported && (options.type === RenderType.Video || options.type === RenderType.WebGL)) {
24
+ if (isWebGLSupported) {
40
25
  try {
41
- renderer = new Canvas3DRenderer_1.default(pixelFormat, view, {
42
- onContextLost: options.onContextLost || null,
43
- });
44
- logger_1.default.log('created WebGL render');
26
+ renderer = new Canvas3DRenderer_1.default(pixelFormat, view);
27
+ console.log('trtc: created WebGL render');
45
28
  }
46
29
  catch (err) {
47
- logger_1.default.warn('create WebGL renderer error.', err.message);
48
- renderer = new Canvas2DRenderer_1.default(pixelFormat, view);
49
- logger_1.default.log('created Canvas 2D render');
30
+ console.log('trtc: create WebGL renderer error.', err.message);
31
+ renderer = null;
50
32
  }
51
33
  }
52
- else {
53
- renderer = new Canvas2DRenderer_1.default(pixelFormat, view);
54
- logger_1.default.log('created Canvas 2D render');
34
+ if (!renderer) {
35
+ // @ts-ignore
36
+ if (window.VideoFrame && window.VideoDecoder) {
37
+ // Electron 15+ 版本支持 WebCodec API
38
+ renderer = new VideoRenderer_1.default(pixelFormat, view);
39
+ console.log('trtc: created Video render');
40
+ }
41
+ else {
42
+ renderer = new Canvas2DRenderer_1.default(pixelFormat, view);
43
+ console.log('trtc: created Canvas 2D render');
44
+ }
55
45
  }
56
46
  return renderer;
57
47
  }
@@ -3,19 +3,20 @@
3
3
  * 配置对象, 可用来打开 debug 模式
4
4
  *
5
5
  * @example
6
- * import TRTCCloud from trtc-electron-sdk';
7
- * const rtcCloud = new TRTCCloud();
8
- * rtcCloud.getConfigObject().setDebugMode(true);
6
+ * // 使用示例代码:
7
+ * const TRTCCloud = require('trtc-electron-sdk');
8
+ * this.rtcCloud = new TRTCCloud();
9
+ * this.rtcCloud.getConfigObject().setDebugMode(true);
10
+ *
9
11
  */
10
- export declare class TRTCConfig {
12
+ export declare class Config {
11
13
  private debugMode;
12
14
  constructor();
13
15
  setDebugMode(enable: boolean): void;
14
16
  getDebugMode(): boolean;
15
17
  }
16
- export declare const config: TRTCConfig;
17
18
  export declare function isNeedKeepWidthAndHeight(rotation: number, isNeedRotate: boolean): boolean;
18
- export declare function calcScaleRate(vertical: boolean, contentMode: number, contentWidth: number, contentHeight: number, containerWidth: number, containerHeight: number): number;
19
+ export declare function calcScaleRate(vertical: boolean | undefined, contentMode: number | undefined, contentWidth: number, contentHeight: number, containerWidth: number, containerHeight: number): number;
19
20
  export declare function calcCanvasStyle(options?: {
20
21
  contentWidth: number;
21
22
  contentHeight: number;
@@ -40,6 +41,7 @@ export declare function calcVideoStyle(options?: {
40
41
  }): {
41
42
  [x: string]: any;
42
43
  };
44
+ export declare const config: Config;
43
45
  export declare function allocBuffer(length: number): Buffer | null;
44
46
  export declare function generateUniqueId(): number;
45
47
  export declare function transferBGRA2RGBA(data: Uint8Array | ArrayBuffer, width: number, height: number): Uint8Array | ArrayBuffer;
@@ -1,15 +1,17 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isSupportWebGL = exports.transferBGRA2RGBA = exports.generateUniqueId = exports.allocBuffer = exports.calcVideoStyle = exports.calcCanvasStyle = exports.calcScaleRate = exports.isNeedKeepWidthAndHeight = exports.config = exports.TRTCConfig = void 0;
3
+ exports.isSupportWebGL = exports.transferBGRA2RGBA = exports.generateUniqueId = exports.allocBuffer = exports.config = exports.calcVideoStyle = exports.calcCanvasStyle = exports.calcScaleRate = exports.isNeedKeepWidthAndHeight = exports.Config = void 0;
4
4
  /**
5
5
  * 配置对象, 可用来打开 debug 模式
6
6
  *
7
7
  * @example
8
- * import TRTCCloud from trtc-electron-sdk';
9
- * const rtcCloud = new TRTCCloud();
10
- * rtcCloud.getConfigObject().setDebugMode(true);
8
+ * // 使用示例代码:
9
+ * const TRTCCloud = require('trtc-electron-sdk');
10
+ * this.rtcCloud = new TRTCCloud();
11
+ * this.rtcCloud.getConfigObject().setDebugMode(true);
12
+ *
11
13
  */
12
- class TRTCConfig {
14
+ class Config {
13
15
  constructor() {
14
16
  this.debugMode = false;
15
17
  }
@@ -20,8 +22,7 @@ class TRTCConfig {
20
22
  return this.debugMode;
21
23
  }
22
24
  }
23
- exports.TRTCConfig = TRTCConfig;
24
- exports.config = new TRTCConfig();
25
+ exports.Config = Config;
25
26
  function isNeedKeepWidthAndHeight(rotation, isNeedRotate) {
26
27
  // 需保持宽高不做变化
27
28
  return rotation === 0 || rotation === 180 || !isNeedRotate;
@@ -126,6 +127,7 @@ function calcVideoStyle(options = {
126
127
  return style;
127
128
  }
128
129
  exports.calcVideoStyle = calcVideoStyle;
130
+ exports.config = new Config();
129
131
  function allocBuffer(length) {
130
132
  if (length >= 1) {
131
133
  return Buffer.alloc(length);