Ejemplo n.º 1
0
        public void PlayUrl(string url)
        {
            if (playbackStarting)
            {
                return;
            }

            playbackStarting = true;
            Bass.BASS_ChannelStop(streamHandle);

            new Thread(() =>
            {
                streamHandle = Bass.BASS_StreamCreateURL(url, (int)BASSFlag.BASS_DEFAULT, (int)BASSFlag.BASS_DEFAULT, null, IntPtr.Zero);

                if (streamHandle == 0)
                {
                    OnException?.Invoke(this, new Exception(Bass.BASS_ErrorGetCode().ToString()));
                    return;
                }

                Bass.BASS_ChannelSetSync(streamHandle, BASSSync.BASS_SYNC_END, 1, playbackStopped, IntPtr.Zero);
                Bass.BASS_ChannelSetSync(streamHandle, BASSSync.BASS_SYNC_STALL, 1, playbackStalled, IntPtr.Zero);
                Bass.BASS_ChannelPlay(streamHandle, false);
                tmrUpdatePosition.Start();

                PlaybackState = PlaybackStates.PLAYING;
                OnPlaybackStateChanged?.Invoke(this, PlaybackStates.PLAYING);
                playbackStarting = false;
            }).Start();
        }
Ejemplo n.º 2
0
 private void OnPlaybackStopped(int handle, int channel, int data, IntPtr user)
 {
     OnPlaybackEnded?.Invoke(this, null);
     tmrUpdatePosition.Stop();
     PlaybackState = PlaybackStates.STOPPED;
     OnPlaybackStateChanged?.Invoke(this, PlaybackStates.STOPPED);
 }
Ejemplo n.º 3
0
 public void Pause()
 {
     if (Bass.BASS_ChannelIsActive(streamHandle) == BASSActive.BASS_ACTIVE_PLAYING)
     {
         Bass.BASS_ChannelPause(streamHandle);
         tmrUpdatePosition.Stop();
         PlaybackState = PlaybackStates.PAUSED;
         OnPlaybackStateChanged?.Invoke(this, PlaybackStates.PAUSED);
     }
 }
Ejemplo n.º 4
0
 public void Play()
 {
     if (Bass.BASS_ChannelIsActive(streamHandle) == BASSActive.BASS_ACTIVE_PAUSED)
     {
         Bass.BASS_ChannelPlay(streamHandle, false);
         tmrUpdatePosition.Start();
         PlaybackState = PlaybackStates.PLAYING;
         OnPlaybackStateChanged?.Invoke(this, PlaybackStates.PLAYING);
     }
 }
Ejemplo n.º 5
0
        public Mp3Player()
        {
            PlaybackState = PlaybackStates.STOPPED;

            tmrUpdatePosition          = new Timer(1000);
            tmrUpdatePosition.Elapsed += TmrUpdatePosition_Elapsed;

            if (!Bass.BASS_Init(-1, 44100, 0, IntPtr.Zero))
            {
                OnException?.Invoke(this, new Exception("Failed to initialize audio device."));
            }

            playbackStopped = OnPlaybackStopped;
            playbackStalled = OnPlaybackStalled;
        }
Ejemplo n.º 6
0
        public void PlayPause()
        {
            switch (Bass.BASS_ChannelIsActive(streamHandle))
            {
            case BASSActive.BASS_ACTIVE_STOPPED:
            case BASSActive.BASS_ACTIVE_PAUSED:
            case BASSActive.BASS_ACTIVE_STALLED:
                if (streamHandle != 0)
                {
                    Bass.BASS_ChannelPlay(streamHandle, false);
                    PlaybackState = PlaybackStates.PLAYING;
                    OnPlaybackStateChanged?.Invoke(this, PlaybackStates.PLAYING);
                }
                break;

            case BASSActive.BASS_ACTIVE_PLAYING:
                Bass.BASS_ChannelPause(streamHandle);
                PlaybackState = PlaybackStates.PAUSED;
                OnPlaybackStateChanged?.Invoke(this, PlaybackStates.PAUSED);
                break;
            }
        }
Ejemplo n.º 7
0
 private void OnPlaybackStalled(int handle, int channel, int data, IntPtr user)
 {
     PlaybackState = PlaybackStates.STALLED;
     OnPlaybackStateChanged?.Invoke(this, PlaybackStates.STALLED);
 }