public void AdjustBitrate(uint bitrateInKbps) { if (isBoundToClient) { GL.IssuePluginEvent(onairvr_AdjustBitRate_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID, bitrateInKbps)); } }
private void onAirVRMediaStreamStopped(AirVRServerMessage message) { onStopRender(); disableCameras(); _mediaStreamJustStopped = true; // StopCoroutine(_CallPluginEndOfFrame) executes the routine one more in the next frame after the call. // so use a flag to completely stop the routine. GL.IssuePluginEvent(onairvr_ResetStreams_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID)); inputStream.Stop(); }
private void onAirVRMediaStreamInitialized(AirVRServerMessage message) { Assert.IsNull(mediaStream); initializeCamerasForMediaStream(); onairvr_SendCameraClipPlanes(playerID, cameras[0].nearClipPlane, cameras[0].farClipPlane); mediaStream = new AirVRServerMediaStream(playerID, _config, cameras.Length); GL.IssuePluginEvent(onairvr_InitStreams_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID)); inputStream.Init(); }
private void onAirVRMediaStreamCleanedUp(AirVRServerMessage message) { Assert.IsTrue(_mediaStreamJustStopped); Assert.IsNotNull(mediaStream); inputStream.Cleanup(); GL.IssuePluginEvent(onairvr_CleanupStreams_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID)); mediaStream.Destroy(); mediaStream = null; foreach (Camera cam in cameras) { cam.targetTexture = null; } }
private IEnumerator CallPluginEndOfFrame() { yield return(new WaitForEndOfFrame()); Assert.IsNotNull(mediaStream); GL.IssuePluginEvent(onairvr_EncodeVideoFrame_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID, (uint)_viewNumber, (uint)mediaStream.currentFramebufferIndex)); // the first render event while (_mediaStreamJustStopped == false) { yield return(new WaitForEndOfFrame()); if (_mediaStreamJustStopped) { yield break; } else if (_encodeVideoFrameRequested) { Assert.IsNotNull(mediaStream); GL.IssuePluginEvent(onairvr_EncodeVideoFrame_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID, (uint)_viewNumber, (uint)mediaStream.currentFramebufferIndex)); _encodeVideoFrameRequested = false; } } }