public void OnFrame(FrameOutputData frameData) { if (_screenRenderer != null) { _screenRenderer.ShowFrame(frameData, _windowStateManager); } else { frameData.Frame.Dispose(); } }
internal void OnAudioFrame(string id, FrameOutputData data) { if (id != null) // not mixer { if (id == SceneAudioConsts.DesktopAudioId) { Desktop.VolumeLevel.OnAudioFrame(data); } else if (id == SceneAudioConsts.MicrophoneId) { Mic.VolumeLevel.OnAudioFrame(data); } } }
public void ShowFrame(FrameOutputData fromPool, IWindowStateManager windowStateManager) { if ((_traceCounter++) % 300 == 0 && fromPool.Trace != null) { Core.LogInfo($"trace ui: {fromPool.Trace.GetDump()}"); } lock (_lock) { _windowStateManager = windowStateManager; _currentQueue.Enqueue(new RefCounted <FromPool <Frame> >(fromPool.Frame)); if (_currentQueue.Count > 2) { var old = _currentQueue.Dequeue(); old.RemoveRef(); } } }
public void OnAudioFrame(FrameOutputData data) { var frame = data.Frame.Item.Properties; if (frame.Samples > _buffer.Length) { _buffer = new float[frame.Samples]; } Marshal.Copy(frame.DataPtr0, _buffer, 0, frame.Samples); var left = GetMax(_buffer, frame.Samples); bool leftEmpty = IsEmpty(_buffer, frame.Samples); Marshal.Copy(frame.DataPtr1, _buffer, 0, frame.Samples); var right = GetMax(_buffer, frame.Samples); bool rightEmpty = IsEmpty(_buffer, frame.Samples); bool empty = leftEmpty && rightEmpty; var volume = Math.Max(left, right); var averaged = ToDb(AddLast(volume)); if (averaged < MinValue) { averaged = MinValue; } var state = averaged < -20 ? SoundVolumeState.Ok : (averaged < -10 ? SoundVolumeState.Hi : SoundVolumeState.VeryHi); var progressValue = GetProgressValue(averaged, empty); Volume.Value = progressValue; if (State.Value != state) { State.Value = state; } }
private void OnAudioFrame(string id, FrameOutputData data) { _audioModel.OnAudioFrame(id, data); data.Frame.Dispose(); }