1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- using System;
- using System.Linq;
- using System.Threading;
- using Bmp.Core.Playback.Inputs;
- using Bmp.Core.Playback.Outputs.NAudioASIO;
- using NAudio.Wave;
- using AsioOut = Bmp.Core.Playback.Outputs.NAudioASIO.AsioOut;
- using static Bmp.Poc.Const;
- namespace Bmp.Poc.PoCs;
- internal static class PocAsioFreqBit
- {
- public static void MainFunc()
- {
- var asioDriverName = "Creative SB USB RT ASIO Device";
- AsioDriverExt driver;
- driver = new AsioDriverExt(asioDriverName);
- var flag24000 = driver.IsSampleRateSupported(24000);
- var flag256000 = driver.IsSampleRateSupported(256000);
- var flag44100 = driver.IsSampleRateSupported(44100);
- var flag48000 = driver.IsSampleRateSupported(48000);
- var flag88200 = driver.IsSampleRateSupported(88200);
- var flag96000 = driver.IsSampleRateSupported(96000);
- var flag192000 = driver.IsSampleRateSupported(192000);
- var flag384000 = driver.IsSampleRateSupported(384000);
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- driver.SetSampleRate(44100);
- var sampleRate44100 = driver.GetSampleRate();
- var bit44100 = driver.Capabilities.OutputChannelInfos.First().type; //32
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- driver.SetSampleRate(48000);
- var sampleRate48000 = driver.GetSampleRate();
- var bit48000 = driver.Capabilities.OutputChannelInfos.First().type; //24
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- driver.SetSampleRate(88200);
- var sampleRate88200 = driver.GetSampleRate();
- var bit88200 = driver.Capabilities.OutputChannelInfos.First().type; //32
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- driver.SetSampleRate(96000);
- var sampleRate96000 = driver.GetSampleRate();
- var bit96000 = driver.Capabilities.OutputChannelInfos.First().type; //24
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- driver.SetSampleRate(192000);
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- var sampleRate192000 = driver.GetSampleRate();
- var bit192000 = driver.Capabilities.OutputChannelInfos.First().type; //24
- driver.ReleaseDriver();
- driver = new AsioDriverExt(asioDriverName);
- driver.SetSampleRate(384000);
- var sampleRate384000 = driver.GetSampleRate();
- var bit384000 = driver.Capabilities.OutputChannelInfos.First().type; //32
- driver.ReleaseDriver();
- var source = new FFMPEGAudioReader(UrlFlac24Bit96Khz);
- var driverNames = AsioOut.GetDriverNames();
- var driverIndex = Array.IndexOf(driverNames, asioDriverName);
- var outputDevice = new AsioOut(driverIndex);
- var x = outputDevice.IsSampleRateSupported(source.WaveFormat.SampleRate);
- outputDevice.AudioAvailable += delegate { Console.WriteLine("AudioAvailable"); };
- outputDevice.DriverResetRequest += delegate { Console.WriteLine("DriverResetRequest"); };
- outputDevice.Init(source);
- outputDevice.Play();
- while (outputDevice.PlaybackState == PlaybackState.Playing)
- {
- Console.WriteLine($"{source.CurrentTime}/{source.TotalTime}");
- Thread.Sleep(5000);
- outputDevice.Pause();
- source.CurrentTime = source.CurrentTime.Add(TimeSpan.FromSeconds(-1));
- outputDevice.Play();
- }
- }
- }
|