Example #1
0
 public void AdjustBitrate(uint bitrateInKbps)
 {
     if (isBoundToClient)
     {
         GL.IssuePluginEvent(onairvr_AdjustBitRate_RenderThread_Func(), AirVRServerPlugin.RenderEventArg((uint)playerID, bitrateInKbps));
     }
 }
Example #2
0
    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();
    }
Example #3
0
    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();
    }
Example #4
0
    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;
        }
    }
Example #5
0
    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;
            }
        }
    }