agora-electron-sdk 4.5.2 → 4.5.3-dev.2
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 +39 -0
- package/README.md +6 -3
- package/js/example/src/renderer/examples/advanced/VideoEffect/videoEffectHelpers.js +395 -0
- package/js/{AgoraSdk.js → ts/AgoraSdk.js} +2 -12
- package/js/{Decoder → ts/Decoder}/index.js +1 -1
- package/js/{Private → ts/Private}/AgoraBase.js +829 -674
- package/js/{Private → ts/Private}/AgoraMediaBase.js +154 -151
- package/js/{Private → ts/Private}/AgoraMediaPlayerTypes.js +58 -54
- package/js/{Private → ts/Private}/IAgoraLog.js +13 -13
- package/js/{Private → ts/Private}/IAgoraMediaEngine.js +4 -4
- package/js/{Private → ts/Private}/IAgoraMediaPlayer.js +2 -2
- package/js/{Private → ts/Private}/IAgoraMusicContentCenter.js +1 -1
- package/js/{Private → ts/Private}/IAgoraRhythmPlayer.js +13 -13
- package/js/{Private → ts/Private}/IAgoraRtcEngine.js +150 -94
- package/js/{Private → ts/Private}/IAgoraRtcEngineEx.js +3 -3
- package/js/{Private → ts/Private}/IAgoraSpatialAudio.js +4 -4
- package/js/{Private → ts/Private}/IAudioDeviceManager.js +2 -2
- package/js/{Private → ts/Private}/impl/IAgoraMediaPlayerImpl.js +10 -0
- package/js/{Private → ts/Private}/impl/IAgoraRtcEngineExImpl.js +74 -0
- package/js/{Private → ts/Private}/impl/IAgoraRtcEngineImpl.js +233 -1
- package/js/{Private → ts/Private}/internal/IrisApiEngine.js +45 -0
- package/js/{Private → ts/Private}/internal/RtcEngineExInternal.js +74 -4
- package/js/ts/Private/internal/VideoEffectObjectInternal.js +14 -0
- package/js/{Private → ts/Private}/ti/IAgoraRtcEngine-ti.js +2 -0
- package/js/{Renderer → ts/Renderer}/AgoraView.js +19 -2
- package/js/{Renderer → ts/Renderer}/IRenderer.js +7 -4
- package/js/{Renderer → ts/Renderer}/IRendererCache.js +17 -1
- package/js/ts/Renderer/RendererCache.js +252 -0
- package/js/{Renderer → ts/Renderer}/RendererManager.js +13 -64
- package/js/{Renderer → ts/Renderer}/WebCodecsRenderer/index.js +5 -5
- package/js/{Renderer → ts/Renderer}/WebCodecsRendererCache.js +13 -1
- package/js/{Renderer → ts/Renderer}/WebGLRenderer/index.js +179 -26
- package/js/{Renderer → ts/Renderer}/YUVCanvasRenderer/index.js +12 -5
- package/js/{Utils.js → ts/Utils.js} +7 -7
- package/package.json +25 -12
- package/scripts/checkElectron.js +4 -2
- package/scripts/download.js +102 -0
- package/scripts/downloadPrebuild.js +2 -1
- package/scripts/synclib.js +2 -2
- package/ts/AgoraSdk.ts +2 -12
- package/ts/Decoder/index.ts +5 -1
- package/ts/Private/AgoraBase.ts +1259 -1060
- package/ts/Private/AgoraMediaBase.ts +351 -324
- package/ts/Private/AgoraMediaPlayerTypes.ts +94 -91
- package/ts/Private/IAgoraLog.ts +20 -18
- package/ts/Private/IAgoraMediaEngine.ts +86 -81
- package/ts/Private/IAgoraMediaPlayer.ts +196 -181
- package/ts/Private/IAgoraMediaPlayerSource.ts +40 -40
- package/ts/Private/IAgoraMusicContentCenter.ts +3 -3
- package/ts/Private/IAgoraRhythmPlayer.ts +15 -15
- package/ts/Private/IAgoraRtcEngine.ts +2492 -2047
- package/ts/Private/IAgoraRtcEngineEx.ts +434 -335
- package/ts/Private/IAgoraSpatialAudio.ts +43 -45
- package/ts/Private/IAudioDeviceManager.ts +106 -97
- package/ts/Private/impl/IAgoraMediaPlayerImpl.ts +12 -0
- package/ts/Private/impl/IAgoraRtcEngineExImpl.ts +138 -0
- package/ts/Private/impl/IAgoraRtcEngineImpl.ts +331 -0
- package/ts/Private/internal/IrisApiEngine.ts +47 -0
- package/ts/Private/internal/RtcEngineExInternal.ts +106 -9
- package/ts/Private/internal/VideoEffectObjectInternal.ts +14 -0
- package/ts/Private/ti/IAgoraRtcEngine-ti.ts +2 -0
- package/ts/Renderer/AgoraView.ts +32 -3
- package/ts/Renderer/IRenderer.ts +8 -3
- package/ts/Renderer/IRendererCache.ts +33 -0
- package/ts/Renderer/RendererCache.ts +211 -12
- package/ts/Renderer/RendererManager.ts +21 -99
- package/ts/Renderer/WebCodecsRenderer/index.ts +9 -6
- package/ts/Renderer/WebCodecsRendererCache.ts +17 -1
- package/ts/Renderer/WebGLRenderer/index.ts +246 -40
- package/ts/Renderer/YUVCanvasRenderer/index.ts +29 -16
- package/ts/Types.ts +14 -9
- package/ts/Utils.ts +8 -7
- package/types/example/src/renderer/examples/advanced/VideoEffect/videoEffectHelpers.d.ts +168 -0
- package/types/example/src/renderer/examples/advanced/VideoEffect/videoEffectHelpers.d.ts.map +1 -0
- package/types/{AgoraSdk.d.ts → ts/AgoraSdk.d.ts} +2 -12
- package/types/ts/AgoraSdk.d.ts.map +1 -0
- package/types/ts/Decoder/gpu-utils.d.ts.map +1 -0
- package/types/ts/Decoder/index.d.ts.map +1 -0
- package/types/ts/Private/AgoraBase.d.ts +5504 -0
- package/types/ts/Private/AgoraBase.d.ts.map +1 -0
- package/types/ts/Private/AgoraMediaBase.d.ts +1695 -0
- package/types/ts/Private/AgoraMediaBase.d.ts.map +1 -0
- package/types/ts/Private/AgoraMediaPlayerTypes.d.ts +456 -0
- package/types/ts/Private/AgoraMediaPlayerTypes.d.ts.map +1 -0
- package/types/ts/Private/IAgoraH265Transcoder.d.ts.map +1 -0
- package/types/ts/Private/IAgoraLog.d.ts +91 -0
- package/types/ts/Private/IAgoraLog.d.ts.map +1 -0
- package/types/ts/Private/IAgoraMediaEngine.d.ts +255 -0
- package/types/ts/Private/IAgoraMediaEngine.d.ts.map +1 -0
- package/types/ts/Private/IAgoraMediaPlayer.d.ts +662 -0
- package/types/ts/Private/IAgoraMediaPlayer.d.ts.map +1 -0
- package/types/ts/Private/IAgoraMediaPlayerSource.d.ts +109 -0
- package/types/ts/Private/IAgoraMediaPlayerSource.d.ts.map +1 -0
- package/types/ts/Private/IAgoraMediaRecorder.d.ts.map +1 -0
- package/types/ts/Private/IAgoraMediaStreamingSource.d.ts.map +1 -0
- package/types/{Private → ts/Private}/IAgoraMusicContentCenter.d.ts +3 -3
- package/types/ts/Private/IAgoraMusicContentCenter.d.ts.map +1 -0
- package/types/ts/Private/IAgoraRhythmPlayer.d.ts +65 -0
- package/types/ts/Private/IAgoraRhythmPlayer.d.ts.map +1 -0
- package/types/ts/Private/IAgoraRtcEngine.d.ts +6504 -0
- package/types/ts/Private/IAgoraRtcEngine.d.ts.map +1 -0
- package/types/ts/Private/IAgoraRtcEngineEx.d.ts +817 -0
- package/types/ts/Private/IAgoraRtcEngineEx.d.ts.map +1 -0
- package/types/ts/Private/IAgoraSpatialAudio.d.ts +194 -0
- package/types/ts/Private/IAgoraSpatialAudio.d.ts.map +1 -0
- package/types/ts/Private/IAudioDeviceManager.d.ts +321 -0
- package/types/ts/Private/IAudioDeviceManager.d.ts.map +1 -0
- package/types/ts/Private/extension/AgoraBaseExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/AgoraMediaBaseExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/AgoraMediaPlayerTypesExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraH265TranscoderExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraLogExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraMediaEngineExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraMediaPlayerExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraMediaRecorderExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraMusicContentCenterExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraRhythmPlayerExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraRtcEngineExExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraRtcEngineExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAgoraSpatialAudioExtension.d.ts.map +1 -0
- package/types/ts/Private/extension/IAudioDeviceManagerExtension.d.ts.map +1 -0
- package/types/ts/Private/impl/AgoraBaseImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/AgoraMediaBaseImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAgoraH265TranscoderImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAgoraMediaEngineImpl.d.ts.map +1 -0
- package/types/{Private → ts/Private}/impl/IAgoraMediaPlayerImpl.d.ts +2 -0
- package/types/ts/Private/impl/IAgoraMediaPlayerImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAgoraMediaRecorderImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAgoraMusicContentCenterImpl.d.ts.map +1 -0
- package/types/{Private → ts/Private}/impl/IAgoraRtcEngineExImpl.d.ts +7 -1
- package/types/ts/Private/impl/IAgoraRtcEngineExImpl.d.ts.map +1 -0
- package/types/{Private → ts/Private}/impl/IAgoraRtcEngineImpl.d.ts +27 -1
- package/types/ts/Private/impl/IAgoraRtcEngineImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAgoraSpatialAudioImpl.d.ts.map +1 -0
- package/types/ts/Private/impl/IAudioDeviceManagerImpl.d.ts.map +1 -0
- package/types/ts/Private/internal/AgoraH265TranscoderInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/AgoraMediaBaseInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/AudioDeviceManagerInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/IrisApiEngine.d.ts.map +1 -0
- package/types/ts/Private/internal/LocalSpatialAudioEngineInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/MediaEngineInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/MediaPlayerInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/MediaRecorderInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/MusicContentCenterInternal.d.ts.map +1 -0
- package/types/{Private → ts/Private}/internal/RtcEngineExInternal.d.ts +10 -4
- package/types/ts/Private/internal/RtcEngineExInternal.d.ts.map +1 -0
- package/types/ts/Private/internal/VideoEffectObjectInternal.d.ts +7 -0
- package/types/ts/Private/internal/VideoEffectObjectInternal.d.ts.map +1 -0
- package/types/{Private → ts/Private}/ipc/main.d.ts.map +1 -1
- package/types/ts/Private/ipc/renderer.d.ts.map +1 -0
- package/types/ts/Private/ti/AgoraBase-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/AgoraMediaBase-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/AgoraMediaPlayerTypes-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraH265Transcoder-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraLog-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraMediaEngine-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraMediaPlayer-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraMediaPlayerSource-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraMediaRecorder-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraMediaStreamingSource-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraMusicContentCenter-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraRhythmPlayer-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraRtcEngine-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraRtcEngineEx-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAgoraSpatialAudio-ti.d.ts.map +1 -0
- package/types/ts/Private/ti/IAudioDeviceManager-ti.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/AgoraView.d.ts +6 -0
- package/types/ts/Renderer/AgoraView.d.ts.map +1 -0
- package/types/ts/Renderer/CapabilityManager.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/IRenderer.d.ts +2 -2
- package/types/ts/Renderer/IRenderer.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/IRendererCache.d.ts +21 -1
- package/types/ts/Renderer/IRendererCache.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/RendererCache.d.ts +27 -0
- package/types/ts/Renderer/RendererCache.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/RendererManager.d.ts +4 -17
- package/types/ts/Renderer/RendererManager.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/WebCodecsRenderer/index.d.ts +3 -3
- package/types/ts/Renderer/WebCodecsRenderer/index.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/WebCodecsRendererCache.d.ts +7 -0
- package/types/ts/Renderer/WebCodecsRendererCache.d.ts.map +1 -0
- package/types/{Renderer → ts/Renderer}/WebGLRenderer/index.d.ts +12 -2
- package/types/ts/Renderer/WebGLRenderer/index.d.ts.map +1 -0
- package/types/ts/Renderer/WebGLRenderer/webgl-utils.d.ts.map +1 -0
- package/types/ts/Renderer/YUVCanvasRenderer/index.d.ts +10 -0
- package/types/ts/Renderer/YUVCanvasRenderer/index.d.ts.map +1 -0
- package/types/ts/Renderer/index.d.ts.map +1 -0
- package/types/{Types.d.ts → ts/Types.d.ts} +11 -6
- package/types/ts/Types.d.ts.map +1 -0
- package/types/{Utils.d.ts → ts/Utils.d.ts} +1 -1
- package/types/ts/Utils.d.ts.map +1 -0
- package/js/Renderer/RendererCache.js +0 -100
- package/types/AgoraSdk.d.ts.map +0 -1
- package/types/Decoder/gpu-utils.d.ts.map +0 -1
- package/types/Decoder/index.d.ts.map +0 -1
- package/types/Private/AgoraBase.d.ts +0 -5310
- package/types/Private/AgoraBase.d.ts.map +0 -1
- package/types/Private/AgoraMediaBase.d.ts +0 -1668
- package/types/Private/AgoraMediaBase.d.ts.map +0 -1
- package/types/Private/AgoraMediaPlayerTypes.d.ts +0 -453
- package/types/Private/AgoraMediaPlayerTypes.d.ts.map +0 -1
- package/types/Private/IAgoraH265Transcoder.d.ts.map +0 -1
- package/types/Private/IAgoraLog.d.ts +0 -89
- package/types/Private/IAgoraLog.d.ts.map +0 -1
- package/types/Private/IAgoraMediaEngine.d.ts +0 -250
- package/types/Private/IAgoraMediaEngine.d.ts.map +0 -1
- package/types/Private/IAgoraMediaPlayer.d.ts +0 -648
- package/types/Private/IAgoraMediaPlayer.d.ts.map +0 -1
- package/types/Private/IAgoraMediaPlayerSource.d.ts +0 -109
- package/types/Private/IAgoraMediaPlayerSource.d.ts.map +0 -1
- package/types/Private/IAgoraMediaRecorder.d.ts.map +0 -1
- package/types/Private/IAgoraMediaStreamingSource.d.ts.map +0 -1
- package/types/Private/IAgoraMusicContentCenter.d.ts.map +0 -1
- package/types/Private/IAgoraRhythmPlayer.d.ts +0 -65
- package/types/Private/IAgoraRhythmPlayer.d.ts.map +0 -1
- package/types/Private/IAgoraRtcEngine.d.ts +0 -6103
- package/types/Private/IAgoraRtcEngine.d.ts.map +0 -1
- package/types/Private/IAgoraRtcEngineEx.d.ts +0 -741
- package/types/Private/IAgoraRtcEngineEx.d.ts.map +0 -1
- package/types/Private/IAgoraSpatialAudio.d.ts +0 -196
- package/types/Private/IAgoraSpatialAudio.d.ts.map +0 -1
- package/types/Private/IAudioDeviceManager.d.ts +0 -312
- package/types/Private/IAudioDeviceManager.d.ts.map +0 -1
- package/types/Private/extension/AgoraBaseExtension.d.ts.map +0 -1
- package/types/Private/extension/AgoraMediaBaseExtension.d.ts.map +0 -1
- package/types/Private/extension/AgoraMediaPlayerTypesExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraH265TranscoderExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraLogExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraMediaEngineExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraMediaPlayerExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraMediaPlayerSourceExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraMediaRecorderExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraMusicContentCenterExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraRhythmPlayerExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraRtcEngineExExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraRtcEngineExtension.d.ts.map +0 -1
- package/types/Private/extension/IAgoraSpatialAudioExtension.d.ts.map +0 -1
- package/types/Private/extension/IAudioDeviceManagerExtension.d.ts.map +0 -1
- package/types/Private/impl/AgoraBaseImpl.d.ts.map +0 -1
- package/types/Private/impl/AgoraMediaBaseImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraH265TranscoderImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraMediaEngineImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraMediaPlayerImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraMediaPlayerSourceImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraMediaRecorderImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraMusicContentCenterImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraRtcEngineExImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraRtcEngineImpl.d.ts.map +0 -1
- package/types/Private/impl/IAgoraSpatialAudioImpl.d.ts.map +0 -1
- package/types/Private/impl/IAudioDeviceManagerImpl.d.ts.map +0 -1
- package/types/Private/internal/AgoraH265TranscoderInternal.d.ts.map +0 -1
- package/types/Private/internal/AgoraMediaBaseInternal.d.ts.map +0 -1
- package/types/Private/internal/AudioDeviceManagerInternal.d.ts.map +0 -1
- package/types/Private/internal/IrisApiEngine.d.ts.map +0 -1
- package/types/Private/internal/LocalSpatialAudioEngineInternal.d.ts.map +0 -1
- package/types/Private/internal/MediaEngineInternal.d.ts.map +0 -1
- package/types/Private/internal/MediaPlayerInternal.d.ts.map +0 -1
- package/types/Private/internal/MediaRecorderInternal.d.ts.map +0 -1
- package/types/Private/internal/MusicContentCenterInternal.d.ts.map +0 -1
- package/types/Private/internal/RtcEngineExInternal.d.ts.map +0 -1
- package/types/Private/ipc/renderer.d.ts.map +0 -1
- package/types/Private/ti/AgoraBase-ti.d.ts.map +0 -1
- package/types/Private/ti/AgoraMediaBase-ti.d.ts.map +0 -1
- package/types/Private/ti/AgoraMediaPlayerTypes-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraH265Transcoder-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraLog-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraMediaEngine-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraMediaPlayer-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraMediaPlayerSource-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraMediaRecorder-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraMediaStreamingSource-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraMusicContentCenter-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraRhythmPlayer-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraRtcEngine-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraRtcEngineEx-ti.d.ts.map +0 -1
- package/types/Private/ti/IAgoraSpatialAudio-ti.d.ts.map +0 -1
- package/types/Private/ti/IAudioDeviceManager-ti.d.ts.map +0 -1
- package/types/Renderer/AgoraView.d.ts.map +0 -1
- package/types/Renderer/CapabilityManager.d.ts.map +0 -1
- package/types/Renderer/IRenderer.d.ts.map +0 -1
- package/types/Renderer/IRendererCache.d.ts.map +0 -1
- package/types/Renderer/RendererCache.d.ts.map +0 -1
- package/types/Renderer/RendererManager.d.ts.map +0 -1
- package/types/Renderer/WebCodecsRenderer/index.d.ts.map +0 -1
- package/types/Renderer/WebCodecsRendererCache.d.ts.map +0 -1
- package/types/Renderer/WebGLRenderer/index.d.ts.map +0 -1
- package/types/Renderer/WebGLRenderer/webgl-utils.d.ts.map +0 -1
- package/types/Renderer/YUVCanvasRenderer/index.d.ts +0 -9
- package/types/Renderer/YUVCanvasRenderer/index.d.ts.map +0 -1
- package/types/Renderer/index.d.ts.map +0 -1
- package/types/Types.d.ts.map +0 -1
- package/types/Utils.d.ts.map +0 -1
- /package/js/{Decoder → ts/Decoder}/gpu-utils.js +0 -0
- /package/js/{Private → ts/Private}/IAgoraH265Transcoder.js +0 -0
- /package/js/{Private → ts/Private}/IAgoraMediaPlayerSource.js +0 -0
- /package/js/{Private → ts/Private}/IAgoraMediaRecorder.js +0 -0
- /package/js/{Private → ts/Private}/IAgoraMediaStreamingSource.js +0 -0
- /package/js/{Private → ts/Private}/extension/AgoraBaseExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/AgoraMediaBaseExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/AgoraMediaPlayerTypesExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraH265TranscoderExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraLogExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraMediaEngineExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraMediaPlayerExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraMediaPlayerSourceExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraMediaRecorderExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraMusicContentCenterExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraRhythmPlayerExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraRtcEngineExExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraRtcEngineExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAgoraSpatialAudioExtension.js +0 -0
- /package/js/{Private → ts/Private}/extension/IAudioDeviceManagerExtension.js +0 -0
- /package/js/{Private → ts/Private}/impl/AgoraBaseImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/AgoraMediaBaseImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAgoraH265TranscoderImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAgoraMediaEngineImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAgoraMediaPlayerSourceImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAgoraMediaRecorderImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAgoraMusicContentCenterImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAgoraSpatialAudioImpl.js +0 -0
- /package/js/{Private → ts/Private}/impl/IAudioDeviceManagerImpl.js +0 -0
- /package/js/{Private → ts/Private}/internal/AgoraH265TranscoderInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/AgoraMediaBaseInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/AudioDeviceManagerInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/LocalSpatialAudioEngineInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/MediaEngineInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/MediaPlayerInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/MediaRecorderInternal.js +0 -0
- /package/js/{Private → ts/Private}/internal/MusicContentCenterInternal.js +0 -0
- /package/js/{Private → ts/Private}/ipc/main.js +0 -0
- /package/js/{Private → ts/Private}/ipc/renderer.js +0 -0
- /package/js/{Private → ts/Private}/ti/AgoraBase-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/AgoraMediaBase-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/AgoraMediaPlayerTypes-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraH265Transcoder-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraLog-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraMediaEngine-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraMediaPlayer-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraMediaPlayerSource-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraMediaRecorder-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraMediaStreamingSource-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraMusicContentCenter-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraRhythmPlayer-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraRtcEngineEx-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAgoraSpatialAudio-ti.js +0 -0
- /package/js/{Private → ts/Private}/ti/IAudioDeviceManager-ti.js +0 -0
- /package/js/{Renderer → ts/Renderer}/CapabilityManager.js +0 -0
- /package/js/{Renderer → ts/Renderer}/WebGLRenderer/webgl-utils.js +0 -0
- /package/js/{Renderer → ts/Renderer}/index.js +0 -0
- /package/js/{Types.js → ts/Types.js} +0 -0
- /package/types/{Decoder → ts/Decoder}/gpu-utils.d.ts +0 -0
- /package/types/{Decoder → ts/Decoder}/index.d.ts +0 -0
- /package/types/{Private → ts/Private}/IAgoraH265Transcoder.d.ts +0 -0
- /package/types/{Private → ts/Private}/IAgoraMediaRecorder.d.ts +0 -0
- /package/types/{Private → ts/Private}/IAgoraMediaStreamingSource.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/AgoraBaseExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/AgoraMediaBaseExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/AgoraMediaPlayerTypesExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraH265TranscoderExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraLogExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraMediaEngineExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraMediaPlayerExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraMediaPlayerSourceExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraMediaRecorderExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraMusicContentCenterExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraRhythmPlayerExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraRtcEngineExExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraRtcEngineExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAgoraSpatialAudioExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/extension/IAudioDeviceManagerExtension.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/AgoraBaseImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/AgoraMediaBaseImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAgoraH265TranscoderImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAgoraMediaEngineImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAgoraMediaPlayerSourceImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAgoraMediaRecorderImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAgoraMusicContentCenterImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAgoraSpatialAudioImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/impl/IAudioDeviceManagerImpl.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/AgoraH265TranscoderInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/AgoraMediaBaseInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/AudioDeviceManagerInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/IrisApiEngine.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/LocalSpatialAudioEngineInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/MediaEngineInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/MediaPlayerInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/MediaRecorderInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/internal/MusicContentCenterInternal.d.ts +0 -0
- /package/types/{Private → ts/Private}/ipc/main.d.ts +0 -0
- /package/types/{Private → ts/Private}/ipc/renderer.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/AgoraBase-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/AgoraMediaBase-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/AgoraMediaPlayerTypes-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraH265Transcoder-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraLog-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraMediaEngine-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraMediaPlayer-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraMediaPlayerSource-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraMediaRecorder-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraMediaStreamingSource-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraMusicContentCenter-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraRhythmPlayer-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraRtcEngine-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraRtcEngineEx-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAgoraSpatialAudio-ti.d.ts +0 -0
- /package/types/{Private → ts/Private}/ti/IAudioDeviceManager-ti.d.ts +0 -0
- /package/types/{Renderer → ts/Renderer}/CapabilityManager.d.ts +0 -0
- /package/types/{Renderer → ts/Renderer}/WebGLRenderer/webgl-utils.d.ts +0 -0
- /package/types/{Renderer → ts/Renderer}/index.d.ts +0 -0
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.WebGLRenderer = void 0;
|
|
4
|
+
const AgoraMediaBase_1 = require("../../Private/AgoraMediaBase");
|
|
4
5
|
const Types_1 = require("../../Types");
|
|
5
6
|
const Utils_1 = require("../../Utils");
|
|
6
7
|
const IRenderer_1 = require("../IRenderer");
|
|
@@ -24,31 +25,48 @@ const yuvShaderSource = `
|
|
|
24
25
|
uniform sampler2D Vtex;
|
|
25
26
|
uniform sampler2D Atex;
|
|
26
27
|
uniform bool hasAlpha;
|
|
28
|
+
|
|
29
|
+
// Dynamic color space conversion parameters
|
|
30
|
+
uniform float u_yOffset;
|
|
31
|
+
uniform float u_yScale;
|
|
32
|
+
uniform float u_rVCoeff;
|
|
33
|
+
uniform float u_gUCoeff;
|
|
34
|
+
uniform float u_gVCoeff;
|
|
35
|
+
uniform float u_bUCoeff;
|
|
36
|
+
|
|
27
37
|
varying vec2 v_texCoord;
|
|
38
|
+
|
|
28
39
|
void main(void) {
|
|
29
|
-
float nx
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
ny
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
40
|
+
float nx = v_texCoord[0];
|
|
41
|
+
float ny = v_texCoord[1];
|
|
42
|
+
|
|
43
|
+
float y = texture2D(Ytex, vec2(nx, ny)).r;
|
|
44
|
+
float u = texture2D(Utex, vec2(nx, ny)).r;
|
|
45
|
+
float v = texture2D(Vtex, vec2(nx, ny)).r;
|
|
46
|
+
float a;
|
|
47
|
+
|
|
36
48
|
if (hasAlpha) {
|
|
37
|
-
a=texture2D(Atex,vec2(nx,ny)).r;
|
|
49
|
+
a = texture2D(Atex, vec2(nx, ny)).r;
|
|
38
50
|
} else {
|
|
39
|
-
a=1.0;
|
|
51
|
+
a = 1.0;
|
|
40
52
|
}
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
53
|
+
|
|
54
|
+
// Apply dynamic color space conversion
|
|
55
|
+
y = u_yScale * (y - u_yOffset);
|
|
56
|
+
u = u - 0.5;
|
|
57
|
+
v = v - 0.5;
|
|
58
|
+
|
|
59
|
+
float r = y + u_rVCoeff * v;
|
|
60
|
+
float g = y + u_gUCoeff * u + u_gVCoeff * v;
|
|
61
|
+
float b = y + u_bUCoeff * u;
|
|
62
|
+
|
|
63
|
+
gl_FragColor = vec4(r, g, b, a);
|
|
48
64
|
}`;
|
|
49
65
|
class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
50
66
|
constructor(fallback) {
|
|
51
67
|
super();
|
|
68
|
+
// Color space uniform locations
|
|
69
|
+
this.colorSpaceUniforms = {};
|
|
52
70
|
this.handleContextLost = (event) => {
|
|
53
71
|
event.preventDefault();
|
|
54
72
|
(0, Utils_1.logWarn)('webglcontextlost', event);
|
|
@@ -78,25 +96,25 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
78
96
|
this.surfaceBuffer = null;
|
|
79
97
|
this.fallback = fallback;
|
|
80
98
|
}
|
|
81
|
-
bind(
|
|
82
|
-
super.bind(
|
|
99
|
+
bind(context) {
|
|
100
|
+
super.bind(context);
|
|
83
101
|
this.canvas?.addEventListener('webglcontextlost', this.handleContextLost, false);
|
|
84
102
|
this.canvas?.addEventListener('webglcontextrestored', this.handleContextRestored, false);
|
|
85
103
|
const getContext = (contextNames = ['webgl2', 'webgl', 'experimental-webgl']) => {
|
|
86
104
|
for (let i = 0; i < contextNames.length; i++) {
|
|
87
105
|
const contextName = contextNames[i];
|
|
88
|
-
const
|
|
106
|
+
const canvasContext = this.canvas?.getContext(contextName, {
|
|
89
107
|
depth: true,
|
|
90
108
|
stencil: true,
|
|
91
|
-
alpha:
|
|
109
|
+
alpha: context.enableAlphaMask,
|
|
92
110
|
antialias: false,
|
|
93
111
|
premultipliedAlpha: true,
|
|
94
|
-
preserveDrawingBuffer: !
|
|
112
|
+
preserveDrawingBuffer: !context.enableAlphaMask,
|
|
95
113
|
powerPreference: 'default',
|
|
96
114
|
failIfMajorPerformanceCaveat: false,
|
|
97
115
|
});
|
|
98
|
-
if (
|
|
99
|
-
return
|
|
116
|
+
if (canvasContext) {
|
|
117
|
+
return canvasContext;
|
|
100
118
|
}
|
|
101
119
|
}
|
|
102
120
|
return null;
|
|
@@ -135,11 +153,13 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
135
153
|
this.gl = null;
|
|
136
154
|
super.unbind();
|
|
137
155
|
}
|
|
138
|
-
drawFrame({ width, height, yStride, uStride, vStride, yBuffer, uBuffer, vBuffer, rotation, alphaBuffer, }) {
|
|
156
|
+
drawFrame(uid, { width, height, yStride, uStride, vStride, yBuffer, uBuffer, vBuffer, rotation, alphaBuffer, colorSpace, }) {
|
|
139
157
|
this.rotateCanvas({ width, height, rotation });
|
|
140
158
|
this.updateRenderMode();
|
|
141
159
|
if (!this.gl || !this.program)
|
|
142
160
|
return;
|
|
161
|
+
// Set color space conversion parameters based on frame properties
|
|
162
|
+
this.setColorSpaceUniforms(colorSpace);
|
|
143
163
|
const left = 0, top = 0, right = yStride - width, bottom = 0;
|
|
144
164
|
this.gl.bindBuffer(this.gl.ARRAY_BUFFER, this.texCoordBuffer);
|
|
145
165
|
const xWidth = width + left + right;
|
|
@@ -188,7 +208,7 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
188
208
|
pixels: vBuffer,
|
|
189
209
|
},
|
|
190
210
|
};
|
|
191
|
-
if (alphaBuffer) {
|
|
211
|
+
if (alphaBuffer && alphaBuffer.length > 0 && this.context.enableAlphaMask) {
|
|
192
212
|
textures[this.gl.TEXTURE3] = {
|
|
193
213
|
texture: this.aTexture,
|
|
194
214
|
stride: width,
|
|
@@ -206,7 +226,7 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
206
226
|
}
|
|
207
227
|
}
|
|
208
228
|
this.gl.drawArrays(this.gl.TRIANGLES, 0, 6);
|
|
209
|
-
super.drawFrame();
|
|
229
|
+
super.drawFrame(uid);
|
|
210
230
|
}
|
|
211
231
|
rotateCanvas({ width, height, rotation }) {
|
|
212
232
|
super.rotateCanvas({ width, height, rotation });
|
|
@@ -272,6 +292,13 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
272
292
|
this.positionLocation = this.gl.getAttribLocation(this.program, 'a_position');
|
|
273
293
|
this.texCoordLocation = this.gl.getAttribLocation(this.program, 'a_texCoord');
|
|
274
294
|
this.hasAlpha = this.gl.getUniformLocation(this.program, 'hasAlpha');
|
|
295
|
+
// Get color space uniform locations
|
|
296
|
+
this.colorSpaceUniforms.yOffset = this.gl.getUniformLocation(this.program, 'u_yOffset');
|
|
297
|
+
this.colorSpaceUniforms.yScale = this.gl.getUniformLocation(this.program, 'u_yScale');
|
|
298
|
+
this.colorSpaceUniforms.rVCoeff = this.gl.getUniformLocation(this.program, 'u_rVCoeff');
|
|
299
|
+
this.colorSpaceUniforms.gUCoeff = this.gl.getUniformLocation(this.program, 'u_gUCoeff');
|
|
300
|
+
this.colorSpaceUniforms.gVCoeff = this.gl.getUniformLocation(this.program, 'u_gVCoeff');
|
|
301
|
+
this.colorSpaceUniforms.bUCoeff = this.gl.getUniformLocation(this.program, 'u_bUCoeff');
|
|
275
302
|
this.surfaceBuffer = this.gl.createBuffer();
|
|
276
303
|
this.texCoordBuffer = this.gl.createBuffer();
|
|
277
304
|
const createTexture = (texture, textureIndex, textureName) => {
|
|
@@ -293,6 +320,8 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
293
320
|
this.uTexture = createTexture(this.gl.TEXTURE1, 1, 'Utex');
|
|
294
321
|
this.vTexture = createTexture(this.gl.TEXTURE2, 2, 'Vtex');
|
|
295
322
|
this.aTexture = createTexture(this.gl.TEXTURE3, 3, 'Atex');
|
|
323
|
+
// Set default color space parameters (BT.601 Limited Range)
|
|
324
|
+
this.setColorSpaceUniforms();
|
|
296
325
|
}
|
|
297
326
|
releaseTextures() {
|
|
298
327
|
this.gl?.deleteProgram(this.program);
|
|
@@ -305,10 +334,134 @@ class WebGLRenderer extends IRenderer_1.IRenderer {
|
|
|
305
334
|
this.yTexture = null;
|
|
306
335
|
this.uTexture = null;
|
|
307
336
|
this.vTexture = null;
|
|
337
|
+
this.aTexture = null;
|
|
338
|
+
this.hasAlpha = null;
|
|
308
339
|
this.gl?.deleteBuffer(this.texCoordBuffer);
|
|
309
340
|
this.gl?.deleteBuffer(this.surfaceBuffer);
|
|
310
341
|
this.texCoordBuffer = null;
|
|
311
342
|
this.surfaceBuffer = null;
|
|
312
343
|
}
|
|
344
|
+
/**
|
|
345
|
+
* Get color space conversion parameters based on color space and range
|
|
346
|
+
*/
|
|
347
|
+
getColorSpaceParams(colorSpace) {
|
|
348
|
+
// Default to BT.601 Limited if not specified
|
|
349
|
+
const primaries = colorSpace?.primaries ?? AgoraMediaBase_1.PrimaryID.PrimaryidBt709;
|
|
350
|
+
const range = colorSpace?.range ?? AgoraMediaBase_1.RangeID.RangeidLimited;
|
|
351
|
+
// Y offset and scale based on ran
|
|
352
|
+
let yOffset;
|
|
353
|
+
let yScale;
|
|
354
|
+
if (range === AgoraMediaBase_1.RangeID.RangeidFull) {
|
|
355
|
+
yOffset = 0.0;
|
|
356
|
+
yScale = 1.0;
|
|
357
|
+
}
|
|
358
|
+
else {
|
|
359
|
+
// Limited range: Y [16, 235] -> [0, 1]
|
|
360
|
+
yOffset = 16.0 / 255.0; // 0.0625
|
|
361
|
+
yScale = 255.0 / (235.0 - 16.0); // 1.1643
|
|
362
|
+
}
|
|
363
|
+
// Color space conversion coefficients
|
|
364
|
+
let rVCoeff, gUCoeff, gVCoeff, bUCoeff;
|
|
365
|
+
switch (primaries) {
|
|
366
|
+
case AgoraMediaBase_1.PrimaryID.PrimaryidBt709:
|
|
367
|
+
if (range === AgoraMediaBase_1.RangeID.RangeidFull) {
|
|
368
|
+
// BT.709 Full Range
|
|
369
|
+
rVCoeff = 1.5748;
|
|
370
|
+
gUCoeff = -0.187324;
|
|
371
|
+
gVCoeff = -0.468124;
|
|
372
|
+
bUCoeff = 1.8556;
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
// BT.709 Limited Range
|
|
376
|
+
rVCoeff = 1.792741;
|
|
377
|
+
gUCoeff = -0.213249;
|
|
378
|
+
gVCoeff = -0.532909;
|
|
379
|
+
bUCoeff = 2.112402;
|
|
380
|
+
}
|
|
381
|
+
break;
|
|
382
|
+
case AgoraMediaBase_1.PrimaryID.PrimaryidBt2020:
|
|
383
|
+
if (range === AgoraMediaBase_1.RangeID.RangeidFull) {
|
|
384
|
+
// BT.2020 Full Range
|
|
385
|
+
rVCoeff = 1.4746;
|
|
386
|
+
gUCoeff = -0.164553;
|
|
387
|
+
gVCoeff = -0.571353;
|
|
388
|
+
bUCoeff = 1.8814;
|
|
389
|
+
}
|
|
390
|
+
else {
|
|
391
|
+
// BT.2020 Limited Range
|
|
392
|
+
rVCoeff = 1.678674;
|
|
393
|
+
gUCoeff = -0.187326;
|
|
394
|
+
gVCoeff = -0.650424;
|
|
395
|
+
bUCoeff = 2.141772;
|
|
396
|
+
}
|
|
397
|
+
break;
|
|
398
|
+
case AgoraMediaBase_1.PrimaryID.PrimaryidSmpte170m || AgoraMediaBase_1.PrimaryID.PrimaryidBt470bg:
|
|
399
|
+
if (range === AgoraMediaBase_1.RangeID.RangeidFull) {
|
|
400
|
+
// BT.601 Full Range
|
|
401
|
+
rVCoeff = 1.402;
|
|
402
|
+
gUCoeff = -0.344136;
|
|
403
|
+
gVCoeff = -0.714136;
|
|
404
|
+
bUCoeff = 1.772;
|
|
405
|
+
}
|
|
406
|
+
else {
|
|
407
|
+
// BT.601 Limited Range
|
|
408
|
+
rVCoeff = 1.596027;
|
|
409
|
+
gUCoeff = -0.391762;
|
|
410
|
+
gVCoeff = -0.812968;
|
|
411
|
+
bUCoeff = 2.017232;
|
|
412
|
+
}
|
|
413
|
+
break;
|
|
414
|
+
default:
|
|
415
|
+
if (range === AgoraMediaBase_1.RangeID.RangeidFull) {
|
|
416
|
+
// BT.601 Full Range
|
|
417
|
+
rVCoeff = 1.402;
|
|
418
|
+
gUCoeff = -0.344136;
|
|
419
|
+
gVCoeff = -0.714136;
|
|
420
|
+
bUCoeff = 1.772;
|
|
421
|
+
}
|
|
422
|
+
else {
|
|
423
|
+
// BT.601 Limited Range (your original values)
|
|
424
|
+
rVCoeff = 1.596027;
|
|
425
|
+
gUCoeff = -0.391762;
|
|
426
|
+
gVCoeff = -0.812968;
|
|
427
|
+
bUCoeff = 2.017232;
|
|
428
|
+
}
|
|
429
|
+
break;
|
|
430
|
+
}
|
|
431
|
+
return {
|
|
432
|
+
yOffset,
|
|
433
|
+
yScale,
|
|
434
|
+
rVCoeff,
|
|
435
|
+
gUCoeff,
|
|
436
|
+
gVCoeff,
|
|
437
|
+
bUCoeff,
|
|
438
|
+
};
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Set color space uniform values in the shader
|
|
442
|
+
*/
|
|
443
|
+
setColorSpaceUniforms(colorSpace) {
|
|
444
|
+
if (!this.gl || !this.program)
|
|
445
|
+
return;
|
|
446
|
+
const params = this.getColorSpaceParams(colorSpace);
|
|
447
|
+
if (this.colorSpaceUniforms.yOffset) {
|
|
448
|
+
this.gl.uniform1f(this.colorSpaceUniforms.yOffset, params.yOffset);
|
|
449
|
+
}
|
|
450
|
+
if (this.colorSpaceUniforms.yScale) {
|
|
451
|
+
this.gl.uniform1f(this.colorSpaceUniforms.yScale, params.yScale);
|
|
452
|
+
}
|
|
453
|
+
if (this.colorSpaceUniforms.rVCoeff) {
|
|
454
|
+
this.gl.uniform1f(this.colorSpaceUniforms.rVCoeff, params.rVCoeff);
|
|
455
|
+
}
|
|
456
|
+
if (this.colorSpaceUniforms.gUCoeff) {
|
|
457
|
+
this.gl.uniform1f(this.colorSpaceUniforms.gUCoeff, params.gUCoeff);
|
|
458
|
+
}
|
|
459
|
+
if (this.colorSpaceUniforms.gVCoeff) {
|
|
460
|
+
this.gl.uniform1f(this.colorSpaceUniforms.gVCoeff, params.gVCoeff);
|
|
461
|
+
}
|
|
462
|
+
if (this.colorSpaceUniforms.bUCoeff) {
|
|
463
|
+
this.gl.uniform1f(this.colorSpaceUniforms.bUCoeff, params.bUCoeff);
|
|
464
|
+
}
|
|
465
|
+
}
|
|
313
466
|
}
|
|
314
467
|
exports.WebGLRenderer = WebGLRenderer;
|
|
@@ -5,13 +5,13 @@ const IRenderer_1 = require("../IRenderer");
|
|
|
5
5
|
const YUVBuffer = require('yuv-buffer');
|
|
6
6
|
const YUVCanvas = require('yuv-canvas');
|
|
7
7
|
class YUVCanvasRenderer extends IRenderer_1.IRenderer {
|
|
8
|
-
bind(
|
|
9
|
-
super.bind(
|
|
8
|
+
bind(context) {
|
|
9
|
+
super.bind(context);
|
|
10
10
|
this.frameSink = YUVCanvas.attach(this.canvas, {
|
|
11
11
|
webGL: false,
|
|
12
12
|
});
|
|
13
13
|
}
|
|
14
|
-
drawFrame({ width, height, yStride, uStride, vStride, yBuffer, uBuffer, vBuffer, rotation, alphaBuffer, }) {
|
|
14
|
+
drawFrame(uid, { width, height, yStride, uStride, vStride, yBuffer, uBuffer, vBuffer, rotation, alphaBuffer, }) {
|
|
15
15
|
this.rotateCanvas({ width, height, rotation });
|
|
16
16
|
this.updateRenderMode();
|
|
17
17
|
if (!this.frameSink)
|
|
@@ -32,9 +32,16 @@ class YUVCanvasRenderer extends IRenderer_1.IRenderer {
|
|
|
32
32
|
bytes: vBuffer,
|
|
33
33
|
stride: vStride,
|
|
34
34
|
});
|
|
35
|
-
|
|
35
|
+
if (alphaBuffer &&
|
|
36
|
+
alphaBuffer.length > 0 &&
|
|
37
|
+
alphaBuffer.length === width * height) {
|
|
38
|
+
frame.a =
|
|
39
|
+
alphaBuffer instanceof Uint8Array
|
|
40
|
+
? alphaBuffer
|
|
41
|
+
: new Uint8Array(alphaBuffer);
|
|
42
|
+
}
|
|
36
43
|
this.frameSink.drawFrame(frame);
|
|
37
|
-
super.drawFrame();
|
|
44
|
+
super.drawFrame(uid);
|
|
38
45
|
}
|
|
39
46
|
rotateCanvas({ width, height, rotation }) {
|
|
40
47
|
super.rotateCanvas({ width, height, rotation });
|
|
@@ -98,13 +98,13 @@ function classMix(...mixins) {
|
|
|
98
98
|
class MixClass {
|
|
99
99
|
constructor() {
|
|
100
100
|
for (let mixin of mixins) {
|
|
101
|
-
copyProperties(this, new mixin()); //
|
|
101
|
+
copyProperties(this, new mixin()); // Copy instance properties
|
|
102
102
|
}
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
for (let mixin of mixins) {
|
|
106
|
-
copyProperties(MixClass, mixin); //
|
|
107
|
-
copyProperties(MixClass.prototype, mixin.prototype); //
|
|
106
|
+
copyProperties(MixClass, mixin); // Copy static properties
|
|
107
|
+
copyProperties(MixClass.prototype, mixin.prototype); // Copy prototype properties
|
|
108
108
|
}
|
|
109
109
|
return MixClass;
|
|
110
110
|
}
|
|
@@ -152,17 +152,17 @@ exports.isSupportWebGL = isSupportWebGL;
|
|
|
152
152
|
*/
|
|
153
153
|
function getContextByCanvas(
|
|
154
154
|
// eslint-disable-next-line auto-import/auto-import
|
|
155
|
-
canvas) {
|
|
155
|
+
canvas, enableAlphaMask = false) {
|
|
156
156
|
const contextNames = ['webgl2', 'webgl', 'experimental-webgl'];
|
|
157
157
|
for (const contextName of contextNames) {
|
|
158
158
|
//@ts-ignore
|
|
159
159
|
const context = canvas.getContext(contextName, {
|
|
160
160
|
depth: true,
|
|
161
161
|
stencil: true,
|
|
162
|
-
alpha:
|
|
162
|
+
alpha: enableAlphaMask,
|
|
163
163
|
antialias: false,
|
|
164
164
|
premultipliedAlpha: true,
|
|
165
|
-
preserveDrawingBuffer:
|
|
165
|
+
preserveDrawingBuffer: !enableAlphaMask,
|
|
166
166
|
powerPreference: 'default',
|
|
167
167
|
failIfMajorPerformanceCaveat: false,
|
|
168
168
|
});
|
|
@@ -181,7 +181,7 @@ exports.AgoraEnv = {
|
|
|
181
181
|
enableDebugLogging: false,
|
|
182
182
|
webEnvReady: true,
|
|
183
183
|
enableWebCodecsDecoder: false,
|
|
184
|
-
encodeAlpha: false,
|
|
185
184
|
videoFallbackStrategy: Types_1.VideoFallbackStrategy.PerformancePriority,
|
|
186
185
|
maxDecodeRetryCount: 50,
|
|
186
|
+
enableArgusCounters: true,
|
|
187
187
|
};
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "agora-electron-sdk",
|
|
3
|
-
"version": "4.5.2",
|
|
3
|
+
"version": "4.5.3-dev.2",
|
|
4
4
|
"description": "agora-electron-sdk",
|
|
5
5
|
"main": "js/AgoraSdk",
|
|
6
6
|
"types": "types/AgoraSdk.d.ts",
|
|
@@ -116,7 +116,8 @@
|
|
|
116
116
|
"tagName": "v${version}"
|
|
117
117
|
},
|
|
118
118
|
"npm": {
|
|
119
|
-
"publish": true
|
|
119
|
+
"publish": true,
|
|
120
|
+
"skipChecks": true
|
|
120
121
|
},
|
|
121
122
|
"github": {
|
|
122
123
|
"release": true
|
|
@@ -131,25 +132,37 @@
|
|
|
131
132
|
"dependencies": {
|
|
132
133
|
"buffer": "^6.0.3",
|
|
133
134
|
"cross-env": "^7.0.3",
|
|
134
|
-
"
|
|
135
|
+
"node-fetch": "^2.7.0",
|
|
136
|
+
"extract-zip": "^2.0.1",
|
|
135
137
|
"eventemitter3": "^5.0.1",
|
|
136
138
|
"fs-extra": "^11.1.1",
|
|
137
|
-
"gulp": "^
|
|
139
|
+
"gulp": "^5.0.0",
|
|
138
140
|
"json-bigint": "^1.0.0",
|
|
139
141
|
"jsonfile": "^6.1.0",
|
|
140
142
|
"lodash.isequal": "^4.5.0",
|
|
141
|
-
"minimist": "^1.2.
|
|
143
|
+
"minimist": "^1.2.8",
|
|
144
|
+
"shelljs": "^0.8.5",
|
|
142
145
|
"semver": "^7.6.0",
|
|
143
|
-
"shelljs": "^0.8.4",
|
|
144
146
|
"ts-interface-checker": "^1.0.2",
|
|
145
|
-
"winston": "^3.
|
|
147
|
+
"winston": "^3.11.0",
|
|
146
148
|
"yuv-buffer": "1.0.0",
|
|
147
|
-
"yuv-canvas": "1.2.6"
|
|
149
|
+
"yuv-canvas": "1.2.6",
|
|
150
|
+
"archive-type": "^4.0.0",
|
|
151
|
+
"content-disposition": "^0.5.2",
|
|
152
|
+
"decompress": "^4.2.1",
|
|
153
|
+
"ext-name": "^5.0.0",
|
|
154
|
+
"file-type": "^11.1.0",
|
|
155
|
+
"filenamify": "^3.0.0",
|
|
156
|
+
"get-stream": "^4.1.0",
|
|
157
|
+
"got": "^11.8.5",
|
|
158
|
+
"make-dir": "^4.0.0",
|
|
159
|
+
"p-event": "^2.1.0",
|
|
160
|
+
"pify": "^4.0.1"
|
|
148
161
|
},
|
|
149
162
|
"agora_electron": {
|
|
150
|
-
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.5.
|
|
151
|
-
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.5.
|
|
152
|
-
"native_sdk_win": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Windows_v4.5.
|
|
153
|
-
"native_sdk_mac": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Mac_v4.5.
|
|
163
|
+
"iris_sdk_win": "https://download.agora.io/sdk/release/iris_4.5.3-dev.8_DCG_Windows_Video_Standalone_20260403_0226_31945.zip",
|
|
164
|
+
"iris_sdk_mac": "https://download.agora.io/sdk/release/iris_4.5.3-dev.8_DCG_Mac_Video_Standalone_20260403_0226_32882.zip",
|
|
165
|
+
"native_sdk_win": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Windows_v4.5.3_FULL.zip",
|
|
166
|
+
"native_sdk_mac": "https://download.agora.io/sdk/release/Agora_Native_SDK_for_Mac_v4.5.3_FULL.zip"
|
|
154
167
|
}
|
|
155
168
|
}
|
package/scripts/checkElectron.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
|
|
3
|
-
const download = require('download');
|
|
4
|
-
|
|
5
3
|
const { cleanDir } = require('./clean');
|
|
4
|
+
const download = require('./download');
|
|
5
|
+
|
|
6
6
|
const getConfig = require('./getConfig');
|
|
7
7
|
const logger = require('./logger');
|
|
8
8
|
|
|
@@ -30,9 +30,11 @@ const checkElectron = async (cb) => {
|
|
|
30
30
|
let downloadUrl = `https://download.agora.io/sdk/release/electron-v${electron_version}-${platform}-${arch}.zip`;
|
|
31
31
|
logger.info(`Downloading:${downloadUrl}`);
|
|
32
32
|
await cleanDir(tp);
|
|
33
|
+
|
|
33
34
|
await download(downloadUrl, tp, {
|
|
34
35
|
extract: true,
|
|
35
36
|
});
|
|
37
|
+
|
|
36
38
|
logger.info(`Finish download:${downloadUrl}`);
|
|
37
39
|
logger.info(`sync electron success`);
|
|
38
40
|
cb();
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
'use strict';
|
|
2
|
+
const fs = require('fs');
|
|
3
|
+
const path = require('path');
|
|
4
|
+
const { URL } = require('url');
|
|
5
|
+
|
|
6
|
+
const archiveType = require('archive-type');
|
|
7
|
+
const contentDisposition = require('content-disposition');
|
|
8
|
+
const decompress = require('decompress');
|
|
9
|
+
const extName = require('ext-name');
|
|
10
|
+
const fileType = require('file-type');
|
|
11
|
+
const filenamify = require('filenamify');
|
|
12
|
+
const getStream = require('get-stream');
|
|
13
|
+
const got = require('got');
|
|
14
|
+
const makeDir = require('make-dir');
|
|
15
|
+
const pEvent = require('p-event');
|
|
16
|
+
const pify = require('pify');
|
|
17
|
+
|
|
18
|
+
const fsP = pify(fs);
|
|
19
|
+
const filenameFromPath = (res) =>
|
|
20
|
+
path.basename(new URL(res.requestUrl).pathname);
|
|
21
|
+
|
|
22
|
+
const getExtFromMime = (res) => {
|
|
23
|
+
const header = res.headers['content-type'];
|
|
24
|
+
|
|
25
|
+
if (!header) {
|
|
26
|
+
return null;
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const exts = extName.mime(header);
|
|
30
|
+
|
|
31
|
+
if (exts.length !== 1) {
|
|
32
|
+
return null;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
return exts[0].ext;
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
const getFilename = (res, data) => {
|
|
39
|
+
const header = res.headers['content-disposition'];
|
|
40
|
+
|
|
41
|
+
if (header) {
|
|
42
|
+
const parsed = contentDisposition.parse(header);
|
|
43
|
+
|
|
44
|
+
if (parsed.parameters && parsed.parameters.filename) {
|
|
45
|
+
return parsed.parameters.filename;
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
let filename = filenameFromPath(res);
|
|
50
|
+
|
|
51
|
+
if (!path.extname(filename)) {
|
|
52
|
+
const ext = (fileType(data) || {}).ext || getExtFromMime(res);
|
|
53
|
+
|
|
54
|
+
if (ext) {
|
|
55
|
+
filename = `${filename}.${ext}`;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
return filename;
|
|
60
|
+
};
|
|
61
|
+
|
|
62
|
+
module.exports = (uri, output, opts) => {
|
|
63
|
+
opts = {
|
|
64
|
+
...opts,
|
|
65
|
+
encoding: null,
|
|
66
|
+
responseType: 'buffer',
|
|
67
|
+
rejectUnauthorized: process.env.npm_config_strict_ssl !== 'false',
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
const stream = got.stream(uri);
|
|
71
|
+
|
|
72
|
+
const promise = pEvent(stream, 'response')
|
|
73
|
+
.then((res) => {
|
|
74
|
+
const encoding = opts.encoding === null ? 'buffer' : opts.encoding;
|
|
75
|
+
return Promise.all([getStream(stream, { encoding }), res]);
|
|
76
|
+
})
|
|
77
|
+
.then((result) => {
|
|
78
|
+
const [data, res] = result;
|
|
79
|
+
|
|
80
|
+
if (!output) {
|
|
81
|
+
return opts.extract && archiveType(data)
|
|
82
|
+
? decompress(data, opts)
|
|
83
|
+
: data;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
const filename = opts.filename || filenamify(getFilename(res, data));
|
|
87
|
+
const outputFilepath = path.join(output, filename);
|
|
88
|
+
|
|
89
|
+
if (opts.extract && archiveType(data)) {
|
|
90
|
+
return decompress(data, path.dirname(outputFilepath), opts);
|
|
91
|
+
}
|
|
92
|
+
|
|
93
|
+
return makeDir(path.dirname(outputFilepath))
|
|
94
|
+
.then(() => fsP.writeFile(outputFilepath, data))
|
|
95
|
+
.then(() => data);
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
stream.then = promise.then.bind(promise);
|
|
99
|
+
stream.catch = promise.catch.bind(promise);
|
|
100
|
+
|
|
101
|
+
return stream;
|
|
102
|
+
};
|
|
@@ -1,9 +1,10 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
|
|
3
|
-
const download = require('download');
|
|
4
3
|
const fs = require('fs-extra');
|
|
5
4
|
|
|
6
5
|
const { cleanDir, buildDir } = require('./clean');
|
|
6
|
+
const download = require('./download');
|
|
7
|
+
|
|
7
8
|
const getConfig = require('./getConfig');
|
|
8
9
|
const logger = require('./logger');
|
|
9
10
|
const { getOS } = require('./util');
|
package/scripts/synclib.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
const path = require('path');
|
|
2
2
|
|
|
3
|
-
const download = require('download');
|
|
4
|
-
|
|
5
3
|
const { destIrisSDKDir, cleanDir, destNativeSDKDir } = require('./clean');
|
|
4
|
+
const download = require('./download');
|
|
5
|
+
|
|
6
6
|
const getConfig = require('./getConfig');
|
|
7
7
|
const logger = require('./logger');
|
|
8
8
|
const { getOS, moveFile, getIrisStandAlone } = require('./util');
|
package/ts/AgoraSdk.ts
CHANGED
|
@@ -25,12 +25,7 @@ export * from './Utils';
|
|
|
25
25
|
const instance = new RtcEngineExInternal();
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
|
-
*
|
|
29
|
-
*
|
|
30
|
-
* Currently, the Agora RTC SDK v4.x supports creating only one IRtcEngineEx object for each app.
|
|
31
|
-
*
|
|
32
|
-
* @returns
|
|
33
|
-
* One IRtcEngineEx object.
|
|
28
|
+
* @ignore
|
|
34
29
|
*/
|
|
35
30
|
export function createAgoraRtcEngine(options?: AgoraEnvOptions): IRtcEngineEx {
|
|
36
31
|
Object.assign(AgoraEnv, options);
|
|
@@ -38,12 +33,7 @@ export function createAgoraRtcEngine(options?: AgoraEnvOptions): IRtcEngineEx {
|
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
* Before calling any APIs in the IMediaPlayerCacheManager class, you need to call this method to get a cache manager instance of a media player.
|
|
44
|
-
*
|
|
45
|
-
* @returns
|
|
46
|
-
* The IMediaPlayerCacheManager instance.
|
|
36
|
+
* @ignore
|
|
47
37
|
*/
|
|
48
38
|
export function getMediaPlayerCacheManager(): IMediaPlayerCacheManager {
|
|
49
39
|
return new IMediaPlayerCacheManagerImpl();
|
package/ts/Decoder/index.ts
CHANGED
|
@@ -64,7 +64,11 @@ export class WebCodecsDecoder {
|
|
|
64
64
|
if (renderer.rendererType !== RendererType.WEBCODECSRENDERER) {
|
|
65
65
|
continue;
|
|
66
66
|
}
|
|
67
|
-
renderer.drawFrame(
|
|
67
|
+
renderer.drawFrame(
|
|
68
|
+
this._cacheContext.uid!,
|
|
69
|
+
this.pendingFrame,
|
|
70
|
+
this._currentCodecConfig!
|
|
71
|
+
);
|
|
68
72
|
this.pendingFrame = null;
|
|
69
73
|
}
|
|
70
74
|
}
|