import { IMediaEngineImpl } from '../impl/IAgoraMediaEngineImpl'; import { IAudioFrameObserver, IVideoEncodedFrameObserver, IVideoFrameObserver, } from '../AgoraMediaBase'; export class MediaEngineInternal extends IMediaEngineImpl { static _audio_frame_observers: IAudioFrameObserver[] = []; static _video_frame_observers: IVideoFrameObserver[] = []; static _video_encoded_frame_observers: IVideoEncodedFrameObserver[] = []; registerAudioFrameObserver(observer: IAudioFrameObserver): number { if ( !MediaEngineInternal._audio_frame_observers.find( (value) => value === observer ) ) { MediaEngineInternal._audio_frame_observers.push(observer); } return super.registerAudioFrameObserver(observer); } unregisterAudioFrameObserver(observer: IAudioFrameObserver): number { MediaEngineInternal._audio_frame_observers = MediaEngineInternal._audio_frame_observers.filter( (value) => value !== observer ); return super.unregisterAudioFrameObserver(observer); } registerVideoFrameObserver(observer: IVideoFrameObserver): number { if ( !MediaEngineInternal._video_frame_observers.find( (value) => value === observer ) ) { MediaEngineInternal._video_frame_observers.push(observer); } return super.registerVideoFrameObserver(observer); } unregisterVideoFrameObserver(observer: IVideoFrameObserver): number { MediaEngineInternal._video_frame_observers = MediaEngineInternal._video_frame_observers.filter( (value) => value !== observer ); return super.unregisterVideoFrameObserver(observer); } registerVideoEncodedFrameObserver( observer: IVideoEncodedFrameObserver ): number { if ( !MediaEngineInternal._video_encoded_frame_observers.find( (value) => value === observer ) ) { MediaEngineInternal._video_encoded_frame_observers.push(observer); } return super.registerVideoEncodedFrameObserver(observer); } unregisterVideoEncodedFrameObserver( observer: IVideoEncodedFrameObserver ): number { MediaEngineInternal._video_encoded_frame_observers = MediaEngineInternal._video_encoded_frame_observers.filter( (value) => value !== observer ); return super.unregisterVideoEncodedFrameObserver(observer); } release() { MediaEngineInternal._audio_frame_observers = []; MediaEngineInternal._video_frame_observers = []; MediaEngineInternal._video_encoded_frame_observers = []; super.release(); } }