Я инициализировал устройство, используя:
static IWavePlayer waveOut;
static WaveFormat waveFormat;
static BufferedWaveProvider waveProvider;
private static int AudioDeviceInit()
{
waveOut = new DirectSoundOut();
waveFormat = new WaveFormat(44100, 2);
waveProvider = new BufferedWaveProvider(waveFormat);
waveOut.Init(waveProvider);
waveOut.Play();
return 0;
}
Я добавляю поток pcm к нему, используя:
waveProvider.AddSamples(samples, 0, size);
Вышеприведенное работает нормально, если данные потока имеют ту же конфигурацию.
У меня есть другая функция, которая получает частоту дискретизации и количество каналов, и я хочу перенастроить WaveProvider для использования вновь предоставленной конфигурации. Вот код, который я использую:
private static void AudioConfigCallback(int rate, int channel)
{
waveFormat = new WaveFormat(rate, channel);
waveProvider = new BufferedWaveProvider(waveFormat);
waveOut.Init(waveProvider);
return;
}
Это не работает, и я считаю, что это не правильный способ сделать это. Любая идея, как я могу перенастроить устройство для использования новых sample_rate и num_channels
Спасибо.