agora-rte-sdk 2.8.21 → 2.8.30

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 (47) hide show
  1. package/dist/index.js +2 -2
  2. package/lib/core/decorator/handlers/log-handler.d.ts +2 -0
  3. package/lib/core/decorator/handlers/log-handler.js +34 -0
  4. package/lib/core/decorator/log/log-serializer.d.ts +7 -0
  5. package/lib/core/decorator/log/log-serializer.js +38 -0
  6. package/lib/core/decorator/utils.d.ts +2 -0
  7. package/lib/core/decorator/utils.js +19 -0
  8. package/lib/core/logger/index.d.ts +1 -0
  9. package/lib/core/logger/index.js +16 -0
  10. package/lib/core/logger/log.worker.js +4 -2
  11. package/lib/core/media/control.d.ts +11 -8
  12. package/lib/core/media/control.js +42 -32
  13. package/lib/core/media/player.d.ts +9 -0
  14. package/lib/core/media/player.js +36 -0
  15. package/lib/core/media/track.d.ts +8 -1
  16. package/lib/core/media/track.js +18 -0
  17. package/lib/core/media/type.d.ts +113 -0
  18. package/lib/core/media/type.js +31 -0
  19. package/lib/core/rtc/adapter/base.d.ts +5 -5
  20. package/lib/core/rtc/adapter/electron/device.d.ts +0 -1
  21. package/lib/core/rtc/adapter/electron/device.js +0 -5
  22. package/lib/core/rtc/adapter/electron/index.d.ts +5 -5
  23. package/lib/core/rtc/adapter/electron/index.js +18 -24
  24. package/lib/core/rtc/adapter/web/client.d.ts +7 -5
  25. package/lib/core/rtc/adapter/web/client.js +33 -28
  26. package/lib/core/rtc/adapter/web/device.d.ts +0 -1
  27. package/lib/core/rtc/adapter/web/device.js +0 -5
  28. package/lib/core/rtc/adapter/web/dispatcher.d.ts +61 -0
  29. package/lib/core/rtc/adapter/web/dispatcher.js +166 -0
  30. package/lib/core/rtc/adapter/web/index.d.ts +9 -5
  31. package/lib/core/rtc/adapter/web/index.js +25 -16
  32. package/lib/core/rtc/adapter/web/thread.d.ts +18 -11
  33. package/lib/core/rtc/adapter/web/thread.js +241 -133
  34. package/lib/core/rtc/index.d.ts +5 -4
  35. package/lib/core/rtc/index.js +12 -12
  36. package/lib/core/rtc/type.d.ts +0 -4
  37. package/lib/core/services/api.d.ts +4 -0
  38. package/lib/core/services/api.js +29 -0
  39. package/lib/core/utils/decorator.d.ts +2 -0
  40. package/lib/core/utils/decorator.js +65 -0
  41. package/lib/index.d.ts +3 -1
  42. package/lib/index.js +24 -17
  43. package/lib/scene/index.d.ts +1 -0
  44. package/lib/scene/index.js +23 -13
  45. package/lib/scene/state-sync.d.ts +21 -0
  46. package/lib/scene/state-sync.js +169 -0
  47. package/package.json +1 -1
@@ -75,6 +75,7 @@ var _log = require("../../../decorator/log");
75
75
  var _configs = require("../../../../configs");
76
76
  var _type = require("../../../../type");
77
77
  var _logger = require("../../../logger");
78
+ var _dispatcher = require("./dispatcher");
78
79
  var _dec, _class, _class2, _dec2, _class3;
79
80
  function _regeneratorRuntime() { "use strict"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */ _regeneratorRuntime = function _regeneratorRuntime() { return exports; }; var exports = {}, Op = Object.prototype, hasOwn = Op.hasOwnProperty, defineProperty = Object.defineProperty || function (obj, key, desc) { obj[key] = desc.value; }, $Symbol = "function" == typeof Symbol ? Symbol : {}, iteratorSymbol = $Symbol.iterator || "@@iterator", asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator", toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; function define(obj, key, value) { return Object.defineProperty(obj, key, { value: value, enumerable: !0, configurable: !0, writable: !0 }), obj[key]; } try { define({}, ""); } catch (err) { define = function define(obj, key, value) { return obj[key] = value; }; } function wrap(innerFn, outerFn, self, tryLocsList) { var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator, generator = Object.create(protoGenerator.prototype), context = new Context(tryLocsList || []); return defineProperty(generator, "_invoke", { value: makeInvokeMethod(innerFn, self, context) }), generator; } function tryCatch(fn, obj, arg) { try { return { type: "normal", arg: fn.call(obj, arg) }; } catch (err) { return { type: "throw", arg: err }; } } exports.wrap = wrap; var ContinueSentinel = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} var IteratorPrototype = {}; define(IteratorPrototype, iteratorSymbol, function () { return this; }); var getProto = Object.getPrototypeOf, NativeIteratorPrototype = getProto && getProto(getProto(values([]))); NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype); var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype); function defineIteratorMethods(prototype) { ["next", "throw", "return"].forEach(function (method) { define(prototype, method, function (arg) { return this._invoke(method, arg); }); }); } function AsyncIterator(generator, PromiseImpl) { function invoke(method, arg, resolve, reject) { var record = tryCatch(generator[method], generator, arg); if ("throw" !== record.type) { var result = record.arg, value = result.value; return value && "object" == _typeof(value) && hasOwn.call(value, "__await") ? PromiseImpl.resolve(value.__await).then(function (value) { invoke("next", value, resolve, reject); }, function (err) { invoke("throw", err, resolve, reject); }) : PromiseImpl.resolve(value).then(function (unwrapped) { result.value = unwrapped, resolve(result); }, function (error) { return invoke("throw", error, resolve, reject); }); } reject(record.arg); } var previousPromise; defineProperty(this, "_invoke", { value: function value(method, arg) { function callInvokeWithMethodAndArg() { return new PromiseImpl(function (resolve, reject) { invoke(method, arg, resolve, reject); }); } return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg(); } }); } function makeInvokeMethod(innerFn, self, context) { var state = "suspendedStart"; return function (method, arg) { if ("executing" === state) throw new Error("Generator is already running"); if ("completed" === state) { if ("throw" === method) throw arg; return doneResult(); } for (context.method = method, context.arg = arg;;) { var delegate = context.delegate; if (delegate) { var delegateResult = maybeInvokeDelegate(delegate, context); if (delegateResult) { if (delegateResult === ContinueSentinel) continue; return delegateResult; } } if ("next" === context.method) context.sent = context._sent = context.arg;else if ("throw" === context.method) { if ("suspendedStart" === state) throw state = "completed", context.arg; context.dispatchException(context.arg); } else "return" === context.method && context.abrupt("return", context.arg); state = "executing"; var record = tryCatch(innerFn, self, context); if ("normal" === record.type) { if (state = context.done ? "completed" : "suspendedYield", record.arg === ContinueSentinel) continue; return { value: record.arg, done: context.done }; } "throw" === record.type && (state = "completed", context.method = "throw", context.arg = record.arg); } }; } function maybeInvokeDelegate(delegate, context) { var methodName = context.method, method = delegate.iterator[methodName]; if (undefined === method) return context.delegate = null, "throw" === methodName && delegate.iterator["return"] && (context.method = "return", context.arg = undefined, maybeInvokeDelegate(delegate, context), "throw" === context.method) || "return" !== methodName && (context.method = "throw", context.arg = new TypeError("The iterator does not provide a '" + methodName + "' method")), ContinueSentinel; var record = tryCatch(method, delegate.iterator, context.arg); if ("throw" === record.type) return context.method = "throw", context.arg = record.arg, context.delegate = null, ContinueSentinel; var info = record.arg; return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, "return" !== context.method && (context.method = "next", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = "throw", context.arg = new TypeError("iterator result is not an object"), context.delegate = null, ContinueSentinel); } function pushTryEntry(locs) { var entry = { tryLoc: locs[0] }; 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry); } function resetTryEntry(entry) { var record = entry.completion || {}; record.type = "normal", delete record.arg, entry.completion = record; } function Context(tryLocsList) { this.tryEntries = [{ tryLoc: "root" }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0); } function values(iterable) { if (iterable) { var iteratorMethod = iterable[iteratorSymbol]; if (iteratorMethod) return iteratorMethod.call(iterable); if ("function" == typeof iterable.next) return iterable; if (!isNaN(iterable.length)) { var i = -1, next = function next() { for (; ++i < iterable.length;) { if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next; } return next.value = undefined, next.done = !0, next; }; return next.next = next; } } return { next: doneResult }; } function doneResult() { return { value: undefined, done: !0 }; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, "constructor", { value: GeneratorFunctionPrototype, configurable: !0 }), defineProperty(GeneratorFunctionPrototype, "constructor", { value: GeneratorFunction, configurable: !0 }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, "GeneratorFunction"), exports.isGeneratorFunction = function (genFun) { var ctor = "function" == typeof genFun && genFun.constructor; return !!ctor && (ctor === GeneratorFunction || "GeneratorFunction" === (ctor.displayName || ctor.name)); }, exports.mark = function (genFun) { return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, "GeneratorFunction")), genFun.prototype = Object.create(Gp), genFun; }, exports.awrap = function (arg) { return { __await: arg }; }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () { return this; }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) { void 0 === PromiseImpl && (PromiseImpl = Promise); var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl); return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) { return result.done ? result.value : iter.next(); }); }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, "Generator"), define(Gp, iteratorSymbol, function () { return this; }), define(Gp, "toString", function () { return "[object Generator]"; }), exports.keys = function (val) { var object = Object(val), keys = []; for (var key in object) { keys.push(key); } return keys.reverse(), function next() { for (; keys.length;) { var key = keys.pop(); if (key in object) return next.value = key, next.done = !1, next; } return next.done = !0, next; }; }, exports.values = values, Context.prototype = { constructor: Context, reset: function reset(skipTempReset) { if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = "next", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) { "t" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined); } }, stop: function stop() { this.done = !0; var rootRecord = this.tryEntries[0].completion; if ("throw" === rootRecord.type) throw rootRecord.arg; return this.rval; }, dispatchException: function dispatchException(exception) { if (this.done) throw exception; var context = this; function handle(loc, caught) { return record.type = "throw", record.arg = exception, context.next = loc, caught && (context.method = "next", context.arg = undefined), !!caught; } for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i], record = entry.completion; if ("root" === entry.tryLoc) return handle("end"); if (entry.tryLoc <= this.prev) { var hasCatch = hasOwn.call(entry, "catchLoc"), hasFinally = hasOwn.call(entry, "finallyLoc"); if (hasCatch && hasFinally) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } else if (hasCatch) { if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0); } else { if (!hasFinally) throw new Error("try statement without catch or finally"); if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc); } } } }, abrupt: function abrupt(type, arg) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc <= this.prev && hasOwn.call(entry, "finallyLoc") && this.prev < entry.finallyLoc) { var finallyEntry = entry; break; } } finallyEntry && ("break" === type || "continue" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null); var record = finallyEntry ? finallyEntry.completion : {}; return record.type = type, record.arg = arg, finallyEntry ? (this.method = "next", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record); }, complete: function complete(record, afterLoc) { if ("throw" === record.type) throw record.arg; return "break" === record.type || "continue" === record.type ? this.next = record.arg : "return" === record.type ? (this.rval = this.arg = record.arg, this.method = "return", this.next = "end") : "normal" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel; }, finish: function finish(finallyLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel; } }, "catch": function _catch(tryLoc) { for (var i = this.tryEntries.length - 1; i >= 0; --i) { var entry = this.tryEntries[i]; if (entry.tryLoc === tryLoc) { var record = entry.completion; if ("throw" === record.type) { var thrown = record.arg; resetTryEntry(entry); } return thrown; } } throw new Error("illegal catch attempt"); }, delegateYield: function delegateYield(iterable, resultName, nextLoc) { return this.delegate = { iterator: values(iterable), resultName: resultName, nextLoc: nextLoc }, "next" === this.method && (this.arg = undefined), ContinueSentinel; } }, exports; }
80
81
  function ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); enumerableOnly && (symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; })), keys.push.apply(keys, symbols); } return keys; }
@@ -94,11 +95,12 @@ var RtcAdapterWeb = (_dec = _log.Log.attach({
94
95
  _this._channels = new Map();
95
96
  _this._vdm = new _device.RtcVideoDeviceManagerWeb((0, _assertThisInitialized2["default"])(_this), _configs.AgoraRteEngineConfig.shared.rtcConfigs.noDevicePermission);
96
97
  _this._adm = new _device.RtcAudioDeviceManagerWeb((0, _assertThisInitialized2["default"])(_this), _configs.AgoraRteEngineConfig.shared.rtcConfigs.noDevicePermission);
98
+ _this._audioRawDataDispatcher = new _dispatcher.AGAudioRawDataDispatcher();
99
+ _this._audioPlayer = new _player.AGWebAudioPlayer();
97
100
  _this.cameraThread = new _thread.AgoraRteCameraThread();
98
- _this.micThread = new _thread.AgoraRteMicrophoneThread();
101
+ _this.micThread = new _thread.AgoraRteMicrophoneThread(_this._audioRawDataDispatcher);
99
102
  _this.screenThread = new _thread.AgoraRteScreenShareThread();
100
103
  _this.remoteCanvas = new Map();
101
- _this._audioPlayer = new _player.AGWebAudioPlayer();
102
104
  _this._configs = void 0;
103
105
  _this._configs = configs;
104
106
  if (_type.AgoraRteLogLevel.DEBUG === _configs.AgoraRteEngineConfig.logLevel) {
@@ -113,6 +115,7 @@ var RtcAdapterWeb = (_dec = _log.Log.attach({
113
115
  return e.instance;
114
116
  }));
115
117
  }
118
+ _this._audioRawDataDispatcher.start();
116
119
  return _this;
117
120
  }
118
121
  (0, _createClass2["default"])(RtcAdapterWeb, [{
@@ -137,7 +140,7 @@ var RtcAdapterWeb = (_dec = _log.Log.attach({
137
140
  value: function createRtcChannel(channelName, base) {
138
141
  var channel = this._channels.get(channelName);
139
142
  if (!channel) {
140
- channel = new RtcChannelAdapterWeb(channelName, this.configs, base);
143
+ channel = new RtcChannelAdapterWeb(channelName, this.configs, base, this._audioRawDataDispatcher);
141
144
  this._channels.set(channelName, channel);
142
145
  }
143
146
  return channel;
@@ -304,12 +307,6 @@ var RtcAdapterWeb = (_dec = _log.Log.attach({
304
307
  this.micThread.on(_control.AgoraMediaControlEventType.localAudioVolume, cb);
305
308
  return 0;
306
309
  }
307
- }, {
308
- key: "onAudioFrame",
309
- value: function onAudioFrame(cb) {
310
- this.micThread.on(_control.AgoraMediaControlEventType.localAudioFrame, cb);
311
- return 0;
312
- }
313
310
  }, {
314
311
  key: "setBeautyEffectOptions",
315
312
  value: function setBeautyEffectOptions(enable, options) {
@@ -319,19 +316,31 @@ var RtcAdapterWeb = (_dec = _log.Log.attach({
319
316
  }, {
320
317
  key: "setAudioFrameCallback",
321
318
  value: function setAudioFrameCallback() {
322
- this.micThread.setAudioFrameCallback();
319
+ this._audioRawDataDispatcher.start();
323
320
  return 0;
324
321
  }
325
322
  }, {
326
323
  key: "stopAudioFrameCallback",
327
324
  value: function stopAudioFrameCallback() {
328
- this.micThread.stopAudioFrameCallback();
325
+ this._audioRawDataDispatcher.stop();
326
+ return 0;
327
+ }
328
+ }, {
329
+ key: "addAudioRawDataObserver",
330
+ value: function addAudioRawDataObserver(observer, position) {
331
+ this._audioRawDataDispatcher.addAudioRawDataObserver(observer, position);
332
+ return 0;
333
+ }
334
+ }, {
335
+ key: "removeAudioRawDataObserver",
336
+ value: function removeAudioRawDataObserver(observer, position) {
337
+ this._audioRawDataDispatcher.removeAudioRawDataObserver(observer, position);
329
338
  return 0;
330
339
  }
331
340
  }, {
332
341
  key: "setAudioRawDataConfig",
333
- value: function setAudioRawDataConfig(config) {
334
- this.micThread.setAudioRawDataConfig(config);
342
+ value: function setAudioRawDataConfig(config, position) {
343
+ this._audioRawDataDispatcher.setConfig(config, position);
335
344
  return 0;
336
345
  }
337
346
  }, {
@@ -433,7 +442,7 @@ var RtcChannelAdapterWeb = (_dec2 = _log.Log.attach({
433
442
  }), _dec2(_class3 = /*#__PURE__*/function (_RtcChannelAdapterBas) {
434
443
  (0, _inherits2["default"])(RtcChannelAdapterWeb, _RtcChannelAdapterBas);
435
444
  var _super2 = _createSuper(RtcChannelAdapterWeb);
436
- function RtcChannelAdapterWeb(channelName, configs, base) {
445
+ function RtcChannelAdapterWeb(channelName, configs, base, audioRawDataDispatcher) {
437
446
  var _this2;
438
447
  (0, _classCallCheck2["default"])(this, RtcChannelAdapterWeb);
439
448
  _this2 = _super2.call(this);
@@ -442,8 +451,8 @@ var RtcChannelAdapterWeb = (_dec2 = _log.Log.attach({
442
451
  _this2.sub = void 0;
443
452
  _this2.channelName = void 0;
444
453
  _this2.channelName = channelName;
445
- _this2.main = new _client.AgoraRteWebClientMain(channelName, configs, base, _channel2.AGRtcConnectionType.main);
446
- _this2.sub = new _client.AgoraRteWebClientSub(channelName, configs, base, _channel2.AGRtcConnectionType.sub);
454
+ _this2.main = new _client.AgoraRteWebClientMain(channelName, configs, base, _channel2.AGRtcConnectionType.main, audioRawDataDispatcher);
455
+ _this2.sub = new _client.AgoraRteWebClientSub(channelName, configs, base, _channel2.AGRtcConnectionType.sub, audioRawDataDispatcher);
447
456
  return _this2;
448
457
  }
449
458
  (0, _createClass2["default"])(RtcChannelAdapterWeb, [{
@@ -1,9 +1,10 @@
1
1
  import { AgoraRteThread } from '../../../utils/thread';
2
2
  import { AgoraRtcVideoCanvas } from '../../canvas';
3
- import { AgoraRteMediaSourceState, AGAudioRawDataConfig, AGMediaBaseTrack } from '../../type';
4
- import { IAgoraRTCClient, IAgoraRTCRemoteUser, ILocalAudioTrack, ILocalTrack, IRemoteAudioTrack } from 'agora-rtc-sdk-ng';
3
+ import { AgoraRteMediaSourceState, AGMediaBaseTrack } from '../../type';
4
+ import { IAgoraRTCClient, IAgoraRTCRemoteUser, ILocalTrack, IRemoteAudioTrack } from 'agora-rtc-sdk-ng';
5
5
  import { IBaseProcessor } from 'agora-rte-extension';
6
6
  import { RtcAdapterWebConfig } from '.';
7
+ import { AGAudioRawDataDispatcher } from './dispatcher';
7
8
  export declare class AgoraRteMediaTrackThread extends AgoraRteThread {
8
9
  track?: AGMediaBaseTrack;
9
10
  processors: IBaseProcessor[];
@@ -23,16 +24,17 @@ export declare class AgoraRteCameraThread extends AgoraRteMediaTrackThread {
23
24
  onExecution(): Promise<void>;
24
25
  }
25
26
  export declare class AgoraRteMicrophoneThread extends AgoraRteMediaTrackThread {
26
- pcmTrack?: ILocalAudioTrack;
27
27
  micEnable: boolean;
28
+ trackState: AgoraRteMediaSourceState;
28
29
  private _recordingDeviceId?;
29
30
  private _recordingDeviceChanged;
30
- trackState: AgoraRteMediaSourceState;
31
31
  private _volumePollingTask?;
32
- private _audioRawConfig;
32
+ private _rawDataDispatcher;
33
+ private _pcmTrack?;
34
+ constructor(rawDataDispatcher: AGAudioRawDataDispatcher);
33
35
  setMicTrackState(state: AgoraRteMediaSourceState, reason?: string): void;
34
36
  setRecordingDevice(deviceId: string): void;
35
- setAudioRawDataConfig(config: AGAudioRawDataConfig): void;
37
+ preparePcmCallback(): void;
36
38
  setAudioFrameCallback(): Promise<void>;
37
39
  stopAudioFrameCallback(): void;
38
40
  onExecution(): Promise<void>;
@@ -106,17 +108,22 @@ export declare class AgoraRteSubscribeThread extends AgoraRteThread {
106
108
  private _volumePollingTask?;
107
109
  private _prevCanvasView;
108
110
  private _prevRenderMode;
109
- get mute(): boolean;
110
- get streamUuid(): string;
111
- get canvas(): AgoraRtcVideoCanvas | undefined;
111
+ private _pcmTrack?;
112
+ private _rawDataDispatcher;
112
113
  constructor(client: IAgoraRTCClient, user: IAgoraRTCRemoteUser, { channelName, muteMap, canvasMap, mediaType, }: {
113
114
  channelName: string;
114
115
  muteMap: Map<string, boolean>;
115
116
  canvasMap?: Map<string, AgoraRtcVideoCanvas>;
116
117
  mediaType: 'video' | 'audio';
117
- });
118
+ }, rawDataDispatcher: AGAudioRawDataDispatcher);
119
+ get mute(): boolean;
120
+ get streamUuid(): string;
121
+ get canvas(): AgoraRtcVideoCanvas | undefined;
118
122
  isTrackSubscribed(): boolean;
119
- get track(): import("agora-rtc-sdk-ng").IRemoteVideoTrack | IRemoteAudioTrack | undefined;
123
+ get track(): IRemoteAudioTrack | import("agora-rtc-sdk-ng").IRemoteVideoTrack | undefined;
120
124
  play(): void;
125
+ preparePcmCallback(): void;
126
+ setAudioFrameCallback(): Promise<void>;
127
+ stopAudioFrameCallback(): void;
121
128
  onExecution(): Promise<void>;
122
129
  }