diff --git a/ts/Private/IAgoraMediaPlayer.ts b/ts/Private/IAgoraMediaPlayer.ts index 003da18bf..0a3f3a340 100644 --- a/ts/Private/IAgoraMediaPlayer.ts +++ b/ts/Private/IAgoraMediaPlayer.ts @@ -312,6 +312,51 @@ export abstract class IMediaPlayer { observer: IMediaPlayerSourceObserver ): number; + /** + * Registers an audio frame observer object. + * + * @param mode The use mode of the audio frame. See RawAudioFrameOpModeType . + */ + abstract registerAudioFrameObserver( + observer: IAudioPcmFrameSink, + mode?: RawAudioFrameOpModeType + ): number; + + /** + * Unregisters an audio observer. + * + * @param observer The audio observer. See IMediaPlayerAudioFrameObserver . + * + * @returns + * 0: Success.< 0: Failure. + */ + abstract unregisterAudioFrameObserver(observer: IAudioPcmFrameSink): number; + + /** + * Registers a video frame observer object. + * You need to implement the IMediaPlayerVideoFrameObserver class in this method and register callbacks according to your scenarios. After you successfully register the video frame observer, the SDK triggers the registered callbacks each time a video frame is received. + * + * @param observer The video observer, reporting the reception of each video frame. See IMediaPlayerVideoFrameObserver . + * + * @returns + * 0: Success.< 0: Failure. + */ + abstract registerVideoFrameObserver( + observer: IMediaPlayerVideoFrameObserver + ): number; + + /** + * Unregisters the video frame observer. + * + * @param observer The video observer, reporting the reception of each video frame. See IMediaPlayerVideoFrameObserver . + * + * @returns + * 0: Success.< 0: Failure. + */ + abstract unregisterVideoFrameObserver( + observer: IMediaPlayerVideoFrameObserver + ): number; + /** * @ignore */ @@ -447,51 +492,6 @@ export abstract class IMediaPlayer { * @ignore */ abstract setSoundPositionParams(pan: number, gain: number): number; - - /** - * Registers an audio frame observer object. - * - * @param mode The use mode of the audio frame. See RawAudioFrameOpModeType . - */ - abstract registerAudioFrameObserver( - observer: IAudioPcmFrameSink, - mode?: RawAudioFrameOpModeType - ): number; - - /** - * Unregisters an audio observer. - * - * @param observer The audio observer. See IMediaPlayerAudioFrameObserver . - * - * @returns - * 0: Success.< 0: Failure. - */ - abstract unregisterAudioFrameObserver(observer: IAudioPcmFrameSink): number; - - /** - * Registers a video frame observer object. - * You need to implement the IMediaPlayerVideoFrameObserver class in this method and register callbacks according to your scenarios. After you successfully register the video frame observer, the SDK triggers the registered callbacks each time a video frame is received. - * - * @param observer The video observer, reporting the reception of each video frame. See IMediaPlayerVideoFrameObserver . - * - * @returns - * 0: Success.< 0: Failure. - */ - abstract registerVideoFrameObserver( - observer: IMediaPlayerVideoFrameObserver - ): number; - - /** - * Unregisters the video frame observer. - * - * @param observer The video observer, reporting the reception of each video frame. See IMediaPlayerVideoFrameObserver . - * - * @returns - * 0: Success.< 0: Failure. - */ - abstract unregisterVideoFrameObserver( - observer: IMediaPlayerVideoFrameObserver - ): number; } /** diff --git a/ts/Private/IAgoraRtcEngine.ts b/ts/Private/IAgoraRtcEngine.ts index 019a96782..f366885a4 100644 --- a/ts/Private/IAgoraRtcEngine.ts +++ b/ts/Private/IAgoraRtcEngine.ts @@ -1087,9 +1087,9 @@ export class ChannelMediaOptions { */ publishMediaPlayerVideoTrack?: boolean; /** - * Whether to publish the local transcoded video:true: Publish the local transcoded video.false: (Default) Do not publish the local transcoded video. + * @ignore */ - publishTrancodedVideoTrack?: boolean; + publishTranscodedVideoTrack?: boolean; /** * Whether to automatically subscribe to all remote audio streams when the user joins a channel:true: (Default) Automatically subscribe to all remote audio streams.false: Do not automatically subscribe to any remote audio streams. */ @@ -4796,7 +4796,7 @@ export abstract class IRtcEngine { /** * @ignore */ - abstract startScreenCaptureDesktop( + abstract startScreenCaptureBySourceType( sourceType: VideoSourceType, config: ScreenCaptureConfiguration ): number; @@ -4830,6 +4830,14 @@ export abstract class IRtcEngine { */ abstract setScreenCaptureScenario(screenScenario: ScreenScenarioType): number; + /** + * Stops screen sharing. + * + * @returns + * 0: Success.< 0: Failure. + */ + abstract stopScreenCapture(): number; + /** * Stops the local video preview. * After calling startPreview to start the preview, if you want to close the local video preview, call this method.Call this method before joining a channel or after leaving a channel. @@ -4839,7 +4847,7 @@ export abstract class IRtcEngine { * @returns * < 0: Failure. */ - abstract stopScreenCapture(sourceType?: VideoSourceType): number; + abstract stopScreenCaptureBySourceType(sourceType: VideoSourceType): number; /** * Retrieves the call ID. @@ -5590,27 +5598,7 @@ export abstract class IRtcEngine { /** * @ignore */ - abstract getNtpTimeInMs(): number; - - /** - * Destroys a video renderer object. - * - * @param view The HTMLElement object to be destroyed. - */ - abstract destroyRendererByView(view: any): void; - - /** - * Destroys multiple video renderer objects at one time. - * - * @param sourceType The type of the video frame, see VideoSourceType . - * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters:All lowercase English letters: a to z.All uppercase English letters: A to Z.All numeric characters: 0 to 9.Space"!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "= ", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", "," - * @param uid The user ID of the remote user. - */ - abstract destroyRendererByConfig( - sourceType: VideoSourceType, - channelId?: string, - uid?: number - ): void; + abstract getNtpWallTimeInMs(): number; /** * Gets the IAudioDeviceManager object to manage audio devices. @@ -5680,6 +5668,26 @@ export abstract class IRtcEngine { */ abstract setMaxMetadataSize(size: number): number; + /** + * Destroys a video renderer object. + * + * @param view The HTMLElement object to be destroyed. + */ + abstract destroyRendererByView(view: any): void; + + /** + * Destroys multiple video renderer objects at one time. + * + * @param sourceType The type of the video frame, see VideoSourceType . + * @param channelId The channel name. This parameter signifies the channel in which users engage in real-time audio and video interaction. Under the premise of the same App ID, users who fill in the same channel ID enter the same channel for audio and video interaction. The string length must be less than 64 bytes. Supported characters:All lowercase English letters: a to z.All uppercase English letters: A to Z.All numeric characters: 0 to 9.Space"!", "#", "$", "%", "&", "(", ")", "+", "-", ":", ";", "<", "= ", ".", ">", "?", "@", "[", "]", "^", "_", "{", "}", "|", "~", "," + * @param uid The user ID of the remote user. + */ + abstract destroyRendererByConfig( + sourceType: VideoSourceType, + channelId?: string, + uid?: number + ): void; + /** * Unregisters the encoded audio frame observer. * diff --git a/ts/Private/impl/IAgoraMediaPlayerImpl.ts b/ts/Private/impl/IAgoraMediaPlayerImpl.ts index c52bf3c35..531c84913 100644 --- a/ts/Private/impl/IAgoraMediaPlayerImpl.ts +++ b/ts/Private/impl/IAgoraMediaPlayerImpl.ts @@ -531,6 +531,90 @@ export class IMediaPlayerImpl implements IMediaPlayer { return 'MediaPlayer_unregisterPlayerSourceObserver'; } + registerAudioFrameObserver( + observer: IAudioPcmFrameSink, + mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly + ): number { + const apiType = this.getApiTypeFromRegisterAudioFrameObserver( + observer, + mode + ); + const jsonParams = { + observer: observer, + mode: mode, + toJSON: () => { + return { + mode: mode, + }; + }, + }; + const jsonResults = callIrisApi.call(this, apiType, jsonParams); + return jsonResults.result; + } + + protected getApiTypeFromRegisterAudioFrameObserver( + observer: IAudioPcmFrameSink, + mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly + ): string { + return 'MediaPlayer_registerAudioFrameObserver'; + } + + unregisterAudioFrameObserver(observer: IAudioPcmFrameSink): number { + const apiType = this.getApiTypeFromUnregisterAudioFrameObserver(observer); + const jsonParams = { + observer: observer, + toJSON: () => { + return {}; + }, + }; + const jsonResults = callIrisApi.call(this, apiType, jsonParams); + return jsonResults.result; + } + + protected getApiTypeFromUnregisterAudioFrameObserver( + observer: IAudioPcmFrameSink + ): string { + return 'MediaPlayer_unregisterAudioFrameObserver'; + } + + registerVideoFrameObserver(observer: IMediaPlayerVideoFrameObserver): number { + const apiType = this.getApiTypeFromRegisterVideoFrameObserver(observer); + const jsonParams = { + observer: observer, + toJSON: () => { + return {}; + }, + }; + const jsonResults = callIrisApi.call(this, apiType, jsonParams); + return jsonResults.result; + } + + protected getApiTypeFromRegisterVideoFrameObserver( + observer: IMediaPlayerVideoFrameObserver + ): string { + return 'MediaPlayer_registerVideoFrameObserver'; + } + + unregisterVideoFrameObserver( + observer: IMediaPlayerVideoFrameObserver + ): number { + const apiType = this.getApiTypeFromUnregisterVideoFrameObserver(observer); + const jsonParams = { + observer: observer, + toJSON: () => { + return {}; + }, + }; + const jsonResults = callIrisApi.call(this, apiType, jsonParams); + return jsonResults.result; + } + + protected getApiTypeFromUnregisterVideoFrameObserver( + observer: IMediaPlayerVideoFrameObserver + ): string { + return 'MediaPlayer_unregisterVideoFrameObserver'; + } + registerMediaPlayerAudioSpectrumObserver( observer: IAudioSpectrumObserver, intervalInMS: number @@ -870,90 +954,6 @@ export class IMediaPlayerImpl implements IMediaPlayer { ): string { return 'MediaPlayer_setSoundPositionParams'; } - - registerAudioFrameObserver( - observer: IAudioPcmFrameSink, - mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly - ): number { - const apiType = this.getApiTypeFromRegisterAudioFrameObserver( - observer, - mode - ); - const jsonParams = { - observer: observer, - mode: mode, - toJSON: () => { - return { - mode: mode, - }; - }, - }; - const jsonResults = callIrisApi.call(this, apiType, jsonParams); - return jsonResults.result; - } - - protected getApiTypeFromRegisterAudioFrameObserver( - observer: IAudioPcmFrameSink, - mode: RawAudioFrameOpModeType = RawAudioFrameOpModeType.RawAudioFrameOpModeReadOnly - ): string { - return 'MediaPlayer_registerAudioFrameObserver'; - } - - unregisterAudioFrameObserver(observer: IAudioPcmFrameSink): number { - const apiType = this.getApiTypeFromUnregisterAudioFrameObserver(observer); - const jsonParams = { - observer: observer, - toJSON: () => { - return {}; - }, - }; - const jsonResults = callIrisApi.call(this, apiType, jsonParams); - return jsonResults.result; - } - - protected getApiTypeFromUnregisterAudioFrameObserver( - observer: IAudioPcmFrameSink - ): string { - return 'MediaPlayer_unregisterAudioFrameObserver'; - } - - registerVideoFrameObserver(observer: IMediaPlayerVideoFrameObserver): number { - const apiType = this.getApiTypeFromRegisterVideoFrameObserver(observer); - const jsonParams = { - observer: observer, - toJSON: () => { - return {}; - }, - }; - const jsonResults = callIrisApi.call(this, apiType, jsonParams); - return jsonResults.result; - } - - protected getApiTypeFromRegisterVideoFrameObserver( - observer: IMediaPlayerVideoFrameObserver - ): string { - return 'MediaPlayer_registerVideoFrameObserver'; - } - - unregisterVideoFrameObserver( - observer: IMediaPlayerVideoFrameObserver - ): number { - const apiType = this.getApiTypeFromUnregisterVideoFrameObserver(observer); - const jsonParams = { - observer: observer, - toJSON: () => { - return {}; - }, - }; - const jsonResults = callIrisApi.call(this, apiType, jsonParams); - return jsonResults.result; - } - - protected getApiTypeFromUnregisterVideoFrameObserver( - observer: IMediaPlayerVideoFrameObserver - ): string { - return 'MediaPlayer_unregisterVideoFrameObserver'; - } } // @ts-ignore diff --git a/ts/Private/impl/IAgoraRtcEngineImpl.ts b/ts/Private/impl/IAgoraRtcEngineImpl.ts index e69036540..17b6c837d 100644 --- a/ts/Private/impl/IAgoraRtcEngineImpl.ts +++ b/ts/Private/impl/IAgoraRtcEngineImpl.ts @@ -5009,11 +5009,11 @@ export class IRtcEngineImpl implements IRtcEngine { return 'RtcEngine_startScreenCapture'; } - startScreenCaptureDesktop( + startScreenCaptureBySourceType( sourceType: VideoSourceType, config: ScreenCaptureConfiguration ): number { - const apiType = this.getApiTypeFromStartScreenCaptureDesktop( + const apiType = this.getApiTypeFromStartScreenCaptureBySourceType( sourceType, config ); @@ -5031,11 +5031,11 @@ export class IRtcEngineImpl implements IRtcEngine { return jsonResults.result; } - protected getApiTypeFromStartScreenCaptureDesktop( + protected getApiTypeFromStartScreenCaptureBySourceType( sourceType: VideoSourceType, config: ScreenCaptureConfiguration ): string { - return 'RtcEngine_startScreenCaptureDesktop'; + return 'RtcEngine_startScreenCaptureBySourceType'; } updateScreenCapture(captureParams: ScreenCaptureParameters2): number { @@ -5089,10 +5089,20 @@ export class IRtcEngineImpl implements IRtcEngine { return 'RtcEngine_setScreenCaptureScenario'; } - stopScreenCapture( - sourceType: VideoSourceType = VideoSourceType.VideoSourceScreenPrimary - ): number { - const apiType = this.getApiTypeFromStopScreenCapture(sourceType); + stopScreenCapture(): number { + const apiType = this.getApiTypeFromStopScreenCapture(); + const jsonParams = {}; + const jsonResults = callIrisApi.call(this, apiType, jsonParams); + return jsonResults.result; + } + + protected getApiTypeFromStopScreenCapture(): string { + return 'RtcEngine_stopScreenCapture'; + } + + stopScreenCaptureBySourceType(sourceType: VideoSourceType): number { + const apiType = + this.getApiTypeFromStopScreenCaptureBySourceType(sourceType); const jsonParams = { sourceType: sourceType, toJSON: () => { @@ -5105,10 +5115,10 @@ export class IRtcEngineImpl implements IRtcEngine { return jsonResults.result; } - protected getApiTypeFromStopScreenCapture( - sourceType: VideoSourceType = VideoSourceType.VideoSourceScreenPrimary + protected getApiTypeFromStopScreenCaptureBySourceType( + sourceType: VideoSourceType ): string { - return 'RtcEngine_stopScreenCapture'; + return 'RtcEngine_stopScreenCaptureBySourceType'; } getCallId(): string { @@ -6593,65 +6603,15 @@ export class IRtcEngineImpl implements IRtcEngine { return 'RtcEngine_enableInstantMediaRendering'; } - getNtpTimeInMs(): number { - const apiType = this.getApiTypeFromGetNtpTimeInMs(); + getNtpWallTimeInMs(): number { + const apiType = this.getApiTypeFromGetNtpWallTimeInMs(); const jsonParams = {}; const jsonResults = callIrisApi.call(this, apiType, jsonParams); return jsonResults.result; } - protected getApiTypeFromGetNtpTimeInMs(): string { - return 'RtcEngine_getNtpTimeInMs'; - } - - destroyRendererByView(view: any): void { - const apiType = this.getApiTypeFromDestroyRendererByView(view); - const jsonParams = { - view: view, - toJSON: () => { - return { - view: view, - }; - }, - }; - callIrisApi.call(this, apiType, jsonParams); - } - - protected getApiTypeFromDestroyRendererByView(view: any): string { - return 'RtcEngine_destroyRendererByView'; - } - - destroyRendererByConfig( - sourceType: VideoSourceType, - channelId?: string, - uid: number = 0 - ): void { - const apiType = this.getApiTypeFromDestroyRendererByConfig( - sourceType, - channelId, - uid - ); - const jsonParams = { - sourceType: sourceType, - channelId: channelId, - uid: uid, - toJSON: () => { - return { - sourceType: sourceType, - channelId: channelId, - uid: uid, - }; - }, - }; - callIrisApi.call(this, apiType, jsonParams); - } - - protected getApiTypeFromDestroyRendererByConfig( - sourceType: VideoSourceType, - channelId?: string, - uid: number = 0 - ): string { - return 'RtcEngine_destroyRendererByConfig'; + protected getApiTypeFromGetNtpWallTimeInMs(): string { + return 'RtcEngine_getNtpWallTimeInMs'; } getAudioDeviceManager(): IAudioDeviceManager { @@ -6750,6 +6710,56 @@ export class IRtcEngineImpl implements IRtcEngine { return 'RtcEngine_setMaxMetadataSize'; } + destroyRendererByView(view: any): void { + const apiType = this.getApiTypeFromDestroyRendererByView(view); + const jsonParams = { + view: view, + toJSON: () => { + return { + view: view, + }; + }, + }; + callIrisApi.call(this, apiType, jsonParams); + } + + protected getApiTypeFromDestroyRendererByView(view: any): string { + return 'RtcEngine_destroyRendererByView'; + } + + destroyRendererByConfig( + sourceType: VideoSourceType, + channelId?: string, + uid: number = 0 + ): void { + const apiType = this.getApiTypeFromDestroyRendererByConfig( + sourceType, + channelId, + uid + ); + const jsonParams = { + sourceType: sourceType, + channelId: channelId, + uid: uid, + toJSON: () => { + return { + sourceType: sourceType, + channelId: channelId, + uid: uid, + }; + }, + }; + callIrisApi.call(this, apiType, jsonParams); + } + + protected getApiTypeFromDestroyRendererByConfig( + sourceType: VideoSourceType, + channelId?: string, + uid: number = 0 + ): string { + return 'RtcEngine_destroyRendererByConfig'; + } + unregisterAudioEncodedFrameObserver( observer: IAudioEncodedFrameObserver ): number {