Exemplo n.º 1
0
 public static void Free()
 {
     if (!IsInitialized)
     {
         return;
     }
     Logger.Write(typeof(BassWasapiDevice), LogLevel.Debug, "Releasing BASS WASAPI.");
     BassWasapi.Free();
     BassWasapiHandler.Free();
     IsInitialized = false;
 }
Exemplo n.º 2
0
        public void Dispose()
        {
            if (ReferenceCount != 0)
            {
                ReferenceCount--;
            }

            if (ReferenceCount == 0)
            {
                BassWasapi.CurrentDevice = DeviceIndex;
                BassWasapi.Free();
            }
        }
Exemplo n.º 3
0
        /// <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;
        }
Exemplo n.º 4
0
        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);
        }
Exemplo n.º 5
0
 private static void Free()
 {
     BassWasapi.Free();
     Bass.Free();
 }
Exemplo n.º 6
0
 /// <summary>
 /// Frees up the resources used by this instant.
 /// </summary>
 public void Dispose()
 {
     BassWasapi.CurrentDevice = _deviceIndex;
     BassWasapi.Free();
     _silencePlayer?.Dispose();
 }