public BassDecoder(bool resample) { this.resample = resample; lock (lockObject) { lifetimeManager = new AudioFingerprint.Audio.BassLifetimeManager(false); } }
public void Dispose() { KillThread(); // Thread-safe single disposal if (Interlocked.Exchange(ref _disposed, (IntPtr)1) != IntPtr.Zero) { return; } OnMessageLogged = null; lifetimeManager.Dispose(); lifetimeManager = null; }
/// <summary> /// Initialize the bass library /// </summary> /// <returns></returns> protected bool BassNetInitialize() { gcHandle = GCHandle.Alloc(this, GCHandleType.Normal); // Keep Bass.Net from putting a popup on the screen lifetimeManager = new AudioFingerprint.Audio.BassLifetimeManager(false); bassFileProcs = new BASS_FILEPROCS( new FILECLOSEPROC(_BassCallback_FileProcUserClose), new FILELENPROC(_BassCallback_FileProcUserLength), new FILEREADPROC(_BassCallback_FileProcUserRead), new FILESEEKPROC(_BassCallback_FileProcUserSeek)); bassStalledSync = new SYNCPROC(_BassCallback_StalledSync); bassEndSync = new SYNCPROC(_BassCallback_EndSync); bassFileProcsOut = new BASS_FILEPROCS( new FILECLOSEPROC(_BassCallback_FileProcUserClose), new FILELENPROC(_BassCallback_FileProcUserLength), new FILEREADPROC(_BassCallback_FileProcUserReadOut), new FILESEEKPROC(_BassCallback_FileProcUserSeek)); Bass.BASS_SetConfig(BASSConfig.BASS_CONFIG_NET_BUFFER, 1000 * 4); // 2 seconds buffer (the default of bass also) return(true); }