void OnPlaybackEnded(object sender, EventArgs e)
        {
            PlaybackEnded?.Invoke(sender, e);

            player.SeekTo(0);
            player.Stop();
            player.Prepare();
        }
        public int Read(float[] buffer, int offset, int count)
        {
            if (playbackRate == 0) // play silence
            {
                for (int n = 0; n < count; n++)
                {
                    buffer[offset++] = 0;
                }
                return(count);
            }

            if (repositionRequested)
            {
                soundTouch.Clear();
                repositionRequested = false;
            }

            int  samplesRead        = 0;
            bool reachedEndOfSource = false;

            while (samplesRead < count)
            {
                if (soundTouch.NumberOfSamplesAvailable == 0)
                {
                    var readFromSource = sourceProvider.Read(sourceReadBuffer, 0, sourceReadBuffer.Length);
                    if (readFromSource > 0)
                    {
                        soundTouch.PutSamples(sourceReadBuffer, readFromSource / channelCount);
                    }
                    else
                    {
                        reachedEndOfSource = true;
                        // we've reached the end, tell SoundTouch we're done
                        soundTouch.Flush();
                    }
                }
                var desiredSampleFrames = (count - samplesRead) / channelCount;

                var received = soundTouch.ReceiveSamples(soundTouchReadBuffer, desiredSampleFrames) * channelCount;
                // use loop instead of Array.Copy due to WaveBuffer
                for (int n = 0; n < received; n++)
                {
                    buffer[offset + samplesRead++] = soundTouchReadBuffer[n];
                }
                if (received == 0 && reachedEndOfSource)
                {
                    break;
                }
            }
            if (reachedEndOfSource && !endNotified)
            {
                PlaybackEnded.Invoke(this, new StoppedEventArgs());
                endNotified = true;
            }
            return(samplesRead);
        }
        private void OnPlaybackEnded(object sender, Windows.UI.Xaml.RoutedEventArgs e)
        {
            PlaybackEnded?.Invoke(sender, EventArgs.Empty);

            if (Loop)
            {
                player.Position = TimeSpan.Zero;
                player.Play();
            }
        }
Пример #4
0
        void OnPlaybackEnded(object sender, EventArgs e)
        {
            Stop();
            PlaybackEnded?.Invoke(sender, e);
            var startMessage = new UpdateEpisodeMessage {
                RssEpisode = Episode
            };

            MessagingCenter.Send(startMessage, "PlaybackEnded");
        }
        void OnPlaybackEnded(object sender, EventArgs e)
        {
            PlaybackEnded?.Invoke(sender, e);

            //this improves stability on older devices but has minor performance impact
            if (Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.M)
            {
                player.SeekTo(0);
                player.Stop();
                player.Prepare();
            }
        }
Пример #6
0
 private void OnPlaybackStopped(object sender, StoppedEventArgs e)
 {
     if (IsPlaying && Loop && CanSeek)
     {
         Seek(0);
         Play();
     }
     else
     {
         PlaybackEnded?.Invoke(this, EventArgs.Empty);
     }
 }
Пример #7
0
        void OnPlaybackEnded(object sender, EventArgs e)
        {
            PlaybackEnded?.Invoke(sender, e);

            //this improves stability on older devices but has minor performance impact
            // We need to check whether the player is null or not as the user might have dipsosed it in an event handler to PlaybackEnded above.
            if (player != null && Android.OS.Build.VERSION.SdkInt < Android.OS.BuildVersionCodes.M)
            {
                player.SeekTo(0);
                player.Stop();
                player.Prepare();
            }
        }
 void OnPlaybackEnded()
 {
     PlaybackEnded?.Invoke(this, EventArgs.Empty);
 }
 private void OnPlaybackEnded(object sender, AVStatusEventArgs e)
 {
     PlaybackEnded?.Invoke(sender, e);
 }
Пример #10
0
 private void RaisePlaybackEndedEvent(LoopPlayer loopPlayer, EventArgs args)
 {
     PlaybackEnded?.Invoke(loopPlayer, args);
 }
 private void OnPlaybackEnded(MediaPlayer sender, object args)
 {
     PlaybackEnded?.Invoke(sender, EventArgs.Empty);
 }
 void OnPlaybackEnded(object sender, EventArgs e)
 {
     PlaybackEnded?.Invoke(sender, e);
 }
Пример #13
0
 protected virtual void OnPlaybackEnded(EventArgs e)
 {
     PlaybackEnded?.Invoke(this, e);
 }