示例#1
0
        public override void OnStarted()
        {
            if (Bass != null)
            {
                int channelBitwidth = base.ChannelBitwidth;
                switch (channelBitwidth)
                {
                case 0x20:
                    this._streamFlags &= ~BASSFlag.BASS_SAMPLE_8BITS;
                    this._streamFlags |= BASSFlag.BASS_SAMPLE_FLOAT;
                    channelBitwidth    = 4;
                    break;

                case 8:
                    this._streamFlags &= ~BASSFlag.BASS_SAMPLE_FLOAT;
                    this._streamFlags |= BASSFlag.BASS_SAMPLE_8BITS;
                    channelBitwidth    = 1;
                    break;

                default:
                    this._streamFlags &= ~BASSFlag.BASS_SAMPLE_FLOAT;
                    this._streamFlags &= ~BASSFlag.BASS_SAMPLE_8BITS;
                    channelBitwidth    = 2;
                    break;
                }
                this._streamBuffer = new BASSBuffer(2f, base.ChannelSampleRate, base.ChannelNumChans, channelBitwidth);
                this._stream       = Bass.StreamCreate(base.ChannelSampleRate, base.ChannelNumChans, this._streamFlags,
                                                       null, IntPtr.Zero);
                Bass.ChannelSetLink(base.ChannelHandle, this._stream);
                if (Bass.ChannelIsActive(base.ChannelHandle) == BASSActive.BASS_ACTIVE_PLAYING)
                {
                    Bass.ChannelPlay(this._stream, false);
                }
            }
        }