コード例 #1
0
        private void OnDataReady(object sender, SampleDataEventArgs e)
        {
            if (_initialized)
            {
                byte[] _leftBuffer  = new byte[e.Data.Length / 2];
                byte[] _rightBuffer = new byte[e.Data.Length / 2];

                //[]: Sample, L: Left channel R: Right channel
                //[LR][LR][LR][LR][LR][LR]
                //The data is interleaved and needs to be demultiplexed
                for (int i = 0; i < e.Data.Length / 2; i++)
                {
                    _leftBuffer[i]  = e.Data[i * 2 - (i % 2)];
                    _rightBuffer[i] = e.Data[i * 2 - (i % 2) + 2];
                }

                for (int i = 0; i < _DeviceConfig.Length; i++)
                {
                    if (_DeviceConfig[i].Driver == e.Guid.ToString())
                    {
                        if (_DeviceConfig[i].Inputs[0].PlayerChannel1 > 0)
                        {
                            _Buffer[_DeviceConfig[i].Inputs[0].PlayerChannel1 - 1].ProcessNewBuffer(_leftBuffer);
                        }

                        if (_DeviceConfig[i].Inputs[0].PlayerChannel2 > 0)
                        {
                            _Buffer[_DeviceConfig[i].Inputs[0].PlayerChannel2 - 1].ProcessNewBuffer(_rightBuffer);
                        }
                    }
                }
            }
        }
コード例 #2
0
        private void OnDataReady(object sender, SampleDataEventArgs e)
        {
            if (_initialized)
            {
                byte[] _leftBuffer = new byte[e.Data.Length / 2];
                byte[] _rightBuffer = new byte[e.Data.Length / 2];

                //[]: Sample, L: Left channel R: Right channel
                //[LR][LR][LR][LR][LR][LR]
                //The data is interleaved and needs to be demultiplexed
                for (int i = 0; i < e.Data.Length / 2; i++)
                {
                    _leftBuffer[i] = e.Data[i * 2 - (i % 2)];
                    _rightBuffer[i] = e.Data[i * 2 - (i % 2) + 2];
                }

                for (int i = 0; i < _DeviceConfig.Length; i++)
                {
                    if (_DeviceConfig[i].Driver == e.Guid.ToString())
                    {
                        if (_DeviceConfig[i].Inputs[0].PlayerChannel1 > 0)
                            _Buffer[_DeviceConfig[i].Inputs[0].PlayerChannel1 - 1].ProcessNewBuffer(_leftBuffer);

                        if (_DeviceConfig[i].Inputs[0].PlayerChannel2 > 0)
                            _Buffer[_DeviceConfig[i].Inputs[0].PlayerChannel2 - 1].ProcessNewBuffer(_rightBuffer);
                    }
                }
            }
        }
コード例 #3
0
 private void SampleData_Removing(object sender, SampleDataEventArgs args)
 {
     args.SampleData.SampleTypesChanged  -= new SampleDataChangedEventHandler(this.SampleDataSet_TypesChanged);
     args.SampleData.SampleTypesChanging -= new SampleDataChangedEventHandler(this.SampleDataSet_TypesChanging);
 }