コード例 #1
0
 public void OnFrame(FrameOutputData frameData)
 {
     if (_screenRenderer != null)
     {
         _screenRenderer.ShowFrame(frameData, _windowStateManager);
     }
     else
     {
         frameData.Frame.Dispose();
     }
 }
コード例 #2
0
 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);
         }
     }
 }
コード例 #3
0
        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();
                }
            }
        }
コード例 #4
0
        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;
            }
        }
コード例 #5
0
 private void OnAudioFrame(string id, FrameOutputData data)
 {
     _audioModel.OnAudioFrame(id, data);
     data.Frame.Dispose();
 }