public static void Free() { if (!IsInitialized) { return; } Logger.Write(typeof(BassWasapiDevice), LogLevel.Debug, "Releasing BASS WASAPI."); BassWasapi.Free(); BassWasapiHandler.Free(); IsInitialized = false; }
public void Dispose() { if (ReferenceCount != 0) { ReferenceCount--; } if (ReferenceCount == 0) { BassWasapi.CurrentDevice = DeviceIndex; BassWasapi.Free(); } }
/// <summary> /// If device is null we will attempt default input index /// </summary> public static void StartInputCapture(WasapiInputDevice device) { int inputDeviceIndex = BassWasapi.DefaultInputDevice; AudioAnalysis.InputMode = AudioAnalysis.InputModes.WasapiDevice; if (device == null) { if (_inputDevices.Count == 0) { Log.Error("No wasapi input devices found"); return; } Log.Error($"Attempting default input {BassWasapi.DefaultInputDevice}."); device = _inputDevices[0]; } else { Log.Debug($"Initializing WASAPI audio input for {device.DeviceInfo.Name}... "); inputDeviceIndex = device.WasapiDeviceIndex; } Bass.Configure(Configuration.UpdateThreads, false); // Bass.Configure(Configuration.DeviceBufferLength, 1024); BassWasapi.Stop(); BassWasapi.Free(); if (!BassWasapi.Init(inputDeviceIndex, Frequency: 0, Channels: 0, //Flags: WasapiInitFlags.Buffer | WasapiInitFlags.Exclusive, Flags: WasapiInitFlags.Buffer, Buffer: (float)device.DeviceInfo.DefaultUpdatePeriod, Period: (float)device.DeviceInfo.DefaultUpdatePeriod, Procedure: _wasapiProcedure, User: IntPtr.Zero)) { Log.Error("Can't initialize WASAPI:" + Bass.LastError); return; } BassWasapi.Start(); AudioAnalysis.InputMode = AudioAnalysis.InputModes.WasapiDevice; }
public void WasapiInit() { int i; do { i = new Random().Next(BassWasapi.DeviceCount); }while (!BassWasapi.GetDeviceInfo(i).IsEnabled); if (BassWasapi.GetDeviceInfo(i).IsInitialized) { BassWasapi.CurrentDevice = i; BassWasapi.Free(); } var proc = new WasapiProcedure((b, c, u) => c); Assert.IsTrue(BassWasapi.Init(i, 44100, 2, WasapiInitFlags.Shared, 0, 0, proc), "Cannot Init a random WASAPI device - {0}", Bass.LastError); Assert.IsTrue(BassWasapi.Free(), "Cannot free initialized WASAPI device - {0}", Bass.LastError); }
private static void Free() { BassWasapi.Free(); Bass.Free(); }
/// <summary> /// Frees up the resources used by this instant. /// </summary> public void Dispose() { BassWasapi.CurrentDevice = _deviceIndex; BassWasapi.Free(); _silencePlayer?.Dispose(); }