private void VideoStreamStopped() { FrameQueue = null; // Clear the video display to not confuse the user who could otherwise // think that the video is still playing but is lagging. CreateEmptyVideoTextures(); }
//// <summary> /// Unity Engine Start() hook /// </summary> /// <remarks> /// https://docs.unity3d.com/ScriptReference/MonoBehaviour.Start.html /// </remarks> private void Update() { if ((_i420aFrameQueue != null) || (_argb32FrameQueue != null)) { #if UNITY_EDITOR // Inside the Editor, constantly update _minUpdateDelay to // react to user changes to MaxFramerate. // Leave 3ms of margin, otherwise it misses 1 frame and drops to ~20 FPS // when Unity is running at 60 FPS. _minUpdateDelay = Mathf.Max(0f, 1f / Mathf.Max(0.001f, MaxVideoFramerate) - 0.003f); #endif // FIXME - This will overflow/underflow the queue if not set at the same rate // as the one at which frames are enqueued! var curTime = Time.time; if (curTime - lastUpdateTime >= _minUpdateDelay) { if (_i420aFrameQueue != null) { TryProcessI420AFrame(); } else if (_argb32FrameQueue != null) { TryProcessArgb32Frame(); } lastUpdateTime = curTime; } if (EnableStatistics) { // Share our stats values, if possible. using (var profileScope = displayStatsMarker.Auto()) { IVideoFrameQueue stats = (_i420aFrameQueue != null ? (IVideoFrameQueue)_i420aFrameQueue : _argb32FrameQueue); if (FrameLoadStatHolder != null) { FrameLoadStatHolder.text = stats.QueuedFramesPerSecond.ToString("F2"); } if (FramePresentStatHolder != null) { FramePresentStatHolder.text = stats.DequeuedFramesPerSecond.ToString("F2"); } if (FrameSkipStatHolder != null) { FrameSkipStatHolder.text = stats.DroppedFramesPerSecond.ToString("F2"); } } } } }
private void VideoStreamStarted() { FrameQueue = VideoSource.FrameQueue; }