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); } } } } }
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); } } } }
private void SampleData_Removing(object sender, SampleDataEventArgs args) { args.SampleData.SampleTypesChanged -= new SampleDataChangedEventHandler(this.SampleDataSet_TypesChanged); args.SampleData.SampleTypesChanging -= new SampleDataChangedEventHandler(this.SampleDataSet_TypesChanging); }