コード例 #1
0
        public BassDecoder(bool resample)
        {
            this.resample = resample;

            lock (lockObject)
            {
                lifetimeManager = new AudioFingerprint.Audio.BassLifetimeManager(false);
            }
        }
コード例 #2
0
        public void Dispose()
        {
            KillThread();

            // Thread-safe single disposal
            if (Interlocked.Exchange(ref _disposed, (IntPtr)1) != IntPtr.Zero)
            {
                return;
            }

            OnMessageLogged = null;

            lifetimeManager.Dispose();
            lifetimeManager = null;
        }
コード例 #3
0
        /// <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);
        }