public void Start(ulong senderId, int frameWidth, int frameHeight) { Stop(); _senderId = (uint)senderId; IRtcEngine engine = IRtcEngine.QueryEngine(); if (engine != null) { _videoRender = (VideoRender)engine.GetVideoRender(); _videoRender.SetVideoRenderMode(VIDEO_RENDER_MODE.RENDER_RAWDATA); _videoRender.AddUserVideoInfo(_senderId, 0); } _nativeTexture = new Texture2D(frameWidth, frameHeight, TextureFormat.RGBA32, false); OnUpdateTexture?.Invoke(_nativeTexture); _customTextureRenderer = new PluginTextureRenderer( UpdateRawTextureDataFunction, targetTexture: _nativeTexture, autoDispose: false ); CustomTextureRenderSystem.Instance.AddRenderer(_customTextureRenderer); }
public void Stop() { _disposable?.Dispose(); _disposable = null; _customTextureRenderer?.Dispose(); _customTextureRenderer = null; if (_nativeTexture != null) { UnityEngine.Object.Destroy(_nativeTexture); _nativeTexture = null; } if (_videoRender != null && IRtcEngine.QueryEngine() != null) { _videoRender.RemoveUserVideoInfo(_senderId); _senderId = 0; } }