Exemple #1
0
 private async void receiver_TimeUpdateRequested(PlayToReceiver sender, object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         receiver.NotifyTimeUpdate(VideoSource.Position);
     });
 }
Exemple #2
0
 private async void receiver_MuteChangeRequested(PlayToReceiver sender, MuteChangeRequestedEventArgs args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         VideoSource.IsMuted = args.Mute;
     });
 }
        private void InitialisePlayToReceiver()
        {
            try
            {
                if (receiver == null)
                {
                    receiver = new PlayToReceiver();
                    receiver.PlayRequested               += new TypedEventHandler <PlayToReceiver, object>(receiver_PlayRequested);
                    receiver.PauseRequested              += new TypedEventHandler <PlayToReceiver, object>(receiver_PauseRequested);
                    receiver.StopRequested               += new TypedEventHandler <PlayToReceiver, object>(receiver_StopRequested);
                    receiver.TimeUpdateRequested         += new TypedEventHandler <PlayToReceiver, object>(receiver_TimeUpdateRequested);
                    receiver.CurrentTimeChangeRequested  += new TypedEventHandler <PlayToReceiver, CurrentTimeChangeRequestedEventArgs>(receiver_CurrentTimeChangeRequested);
                    receiver.SourceChangeRequested       += new TypedEventHandler <PlayToReceiver, SourceChangeRequestedEventArgs>(receiver_SourceChangeRequested);
                    receiver.MuteChangeRequested         += new TypedEventHandler <PlayToReceiver, MuteChangeRequestedEventArgs>(receiver_MuteChangeRequested);
                    receiver.PlaybackRateChangeRequested += new TypedEventHandler <PlayToReceiver, PlaybackRateChangeRequestedEventArgs>(receiver_PlaybackRateChangeRequested);
                    receiver.VolumeChangeRequested       += new TypedEventHandler <PlayToReceiver, VolumeChangeRequestedEventArgs>(receiver_VolumeChangeRequested);

                    receiver.SupportsAudio = true;
                    receiver.SupportsVideo = true;
                    receiver.SupportsImage = true;

                    receiver.FriendlyName = "SDK CS Sample PlayToReceiver";
                }
            }
            catch (Exception e)
            {
                startDMRButton.IsEnabled = false;
                stopDMRButton.IsEnabled  = true;
                rootPage.NotifyUser("PlayToReceiver initialization failed, Error: " + e.Message, NotifyType.ErrorMessage);
            }
        }
Exemple #4
0
 async void receiver_SourceChangeRequested(PlayToReceiver sender, SourceChangeRequestedEventArgs args)
 {
     if (args.Stream != null)
     {
         if (args.Stream.ContentType.Contains("image"))
         {
             await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
             {
                 BitmapImage bmp = new BitmapImage();
                 bmp.SetSource(args.Stream);
                 PhotoSource.Source = bmp;
                 ShowSelectedPanel(1);
             });
         }
         else if (args.Stream.ContentType.Contains("video"))
         {
             await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
             {
                 VideoSource.SetSource(args.Stream, args.Stream.ContentType);
                 ShowSelectedPanel(3);
             });
         }
         else if (args.Stream.ContentType.Contains("audio"))
         {
             await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
             {
                 MusicSource.SetSource(args.Stream, args.Stream.ContentType);
                 ShowSelectedPanel(2);
                 MusicSource.Play();
             });
         }
     }
 }
        private async void HandleStartReceiverClicked(Object sender, RoutedEventArgs e)
        {
            try
            {
                if (_receiver == null)
                {
                    _receiver = new PlayToReceiver();
                }

                // Set the Properties that describe this receiver device
                _receiver.FriendlyName  = "Example Play To Receiver";
                _receiver.SupportsAudio = true;
                _receiver.SupportsVideo = true;
                _receiver.SupportsImage = true;

                // Subscribe to Play To Receiver events
                // Receive the request from the Play To source
                // and map it to how it should be handled in this app
                _receiver.SourceChangeRequested +=
                    HandleReceiverSourceChangeRequested;

                // Playback commands
                _receiver.PlayRequested  += HandleReceiverPlayRequested;
                _receiver.PauseRequested += HandleReceiverPauseRequested;
                _receiver.StopRequested  += HandleReceiverStopRequested;
                _receiver.PlaybackRateChangeRequested +=
                    HandleReceiverPlaybackRateChangeRequested;

                // Seek commands
                _receiver.CurrentTimeChangeRequested +=
                    HandleReceiverCurrentTimeChangeRequested;
                _receiver.TimeUpdateRequested +=
                    HandleReceiverTimeUpdateRequested;

                // Volume commands
                _receiver.VolumeChangeRequested +=
                    HandleReceiverVolumeChangeRequested;
                _receiver.MuteChangeRequested +=
                    HandleReceiverMuteChangeRequested;

                // Advertise the receiver on the local network
                // and start receiving commands
                await _receiver.StartAsync();

                // Use the DisplayRequest to prevent power-save
                // from interrupting the playback experience
                if (_displayRequest == null)
                {
                    _displayRequest = new DisplayRequest();
                    _displayRequest.RequestActive();
                }

                StatusText.Text = "'" + _receiver.FriendlyName + "' started.";
            }
            catch
            {
                _receiver       = null;
                StatusText.Text = "Failed to start receiver.";
            }
        }
Exemple #6
0
 async void receiver_PlayRequested(PlayToReceiver sender, object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         MusicSource.Play();
         VideoSource.Play();
         receiver.NotifyPlaying();
     });
 }
 private async void receiver_VolumeChangeRequested(PlayToReceiver recv, VolumeChangeRequestedEventArgs args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (dmrVideo != null && currentType == MediaType.AudioVideo)
         {
             dmrVideo.Volume = args.Volume;
         }
     });
 }
Exemple #8
0
 private async void receiver_CurrentTimeChangeRequested(PlayToReceiver sender, CurrentTimeChangeRequestedEventArgs args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (VideoSource.CanSeek)
         {
             {
                 VideoSource.Position = args.Time;
                 receiver.NotifySeeking();
             }
         }
     });
 }
 private void HandleReceiverTimeUpdateRequested(PlayToReceiver sender, Object args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             _receiver.NotifyTimeUpdate(VideoPlayer.Position);
         }
         else if (_currentPlaybackType == PlaybackType.Image)
         {
             _receiver.NotifyTimeUpdate(new TimeSpan(0));
         }
     });
 }
 private async void receiver_MuteChangeRequested(PlayToReceiver recv, MuteChangeRequestedEventArgs args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (dmrVideo != null && currentType == MediaType.AudioVideo)
         {
             dmrVideo.IsMuted = args.Mute;
         }
         else if (dmrImage != null && currentType == MediaType.Image)
         {
             receiver.NotifyVolumeChange(0, args.Mute);
         }
     });
 }
 private void HandleReceiverVolumeChangeRequested(PlayToReceiver sender, VolumeChangeRequestedEventArgs args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             VideoPlayer.Volume = args.Volume;
             // Receiver notification occurs in the HandleVideoPlayerVolumeChanged handler
         }
         else
         {
             _receiver.NotifyVolumeChange(args.Volume, args.Volume == 0);
         }
     });
 }
 private void HandleReceiverMuteChangeRequested(PlayToReceiver sender, MuteChangeRequestedEventArgs args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             VideoPlayer.IsMuted = args.Mute;
             // Receiver notification occurs in the HandleVideoPlayerVolumeChanged handler
         }
         else if (_currentPlaybackType == PlaybackType.Image)
         {
             _receiver.NotifyVolumeChange(0, args.Mute);
         }
     });
 }
 private void HandleReceiverPauseRequested(PlayToReceiver sender, Object args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             VideoPlayer.Pause();
             // Receiver notification occurs in the HandleVideoPlayerCurrentStateChanged handler
         }
         else if (_currentPlaybackType == PlaybackType.Image)
         {
             _receiver.NotifyPaused();
         }
     });
 }
 private void HandleReceiverSourceChangeRequested(PlayToReceiver sender, SourceChangeRequestedEventArgs args)
 {
     if (args.Stream != null)
     {
         var newStream = args.Stream;
         if (newStream.ContentType.Contains("image"))
         {
             Dispatch(() => ShowImageStream(newStream));
         }
         else
         {
             Dispatch(() => ShowVideoStream(newStream));
         }
     }
 }
 private async void receiver_PlayRequested(PlayToReceiver recv, Object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (dmrVideo != null && currentType == MediaType.AudioVideo)
         {
             IsPlayReceivedPreMediaLoaded = true;
             dmrVideo.Play();
         }
         else if (currentType == MediaType.Image)
         {
             dmrImage.Source = imagerevd;
             receiver.NotifyPlaying();
         }
     });
 }
 private async void receiver_StopRequested(PlayToReceiver recv, Object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (dmrVideo != null && currentType == MediaType.AudioVideo)
         {
             dmrVideo.Stop();
             receiver.NotifyStopped();
         }
         else if (dmrImage != null && currentType == MediaType.Image)
         {
             dmrImage.Source = null;
             receiver.NotifyStopped();
         }
     });
 }
 private void HandleReceiverStopRequested(PlayToReceiver sender, Object args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             VideoPlayer.Stop();
             // Receiver notification occurs in the HandleVideoPlayerCurrentStateChanged handler
         }
         else if (_currentPlaybackType == PlaybackType.Image)
         {
             ImagePlayer.Source = null;
             _receiver.NotifyStopped();
         }
     });
 }
 private void HandleReceiverPlaybackRateChangeRequested(PlayToReceiver sender, PlaybackRateChangeRequestedEventArgs args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             VideoPlayer.PlaybackRate = args.Rate;
             // Receiver notification occurs in the HandleVideoPlayerRateChanged handler
         }
         else if (_currentPlaybackType == PlaybackType.Image)
         {
             // Setting playback rate is a no-op in image playback.  Just indicate it was accepted
             _receiver.NotifyRateChange(args.Rate);
         }
     });
 }
 private async void receiver_PlaybackRateChangeRequested(PlayToReceiver recv, PlaybackRateChangeRequestedEventArgs args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (dmrVideo != null && currentType == MediaType.AudioVideo)
         {
             if (dmrVideo.CurrentState != MediaElementState.Opening && dmrVideo.CurrentState != MediaElementState.Closed)
             {
                 dmrVideo.PlaybackRate = args.Rate;
             }
             else
             {
                 bufferedPlaybackRate = args.Rate;
             }
         }
     });
 }
 private async void receiver_TimeUpdateRequested(PlayToReceiver recv, Object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (IsReceiverStarted)
         {
             if (dmrVideo != null && currentType == MediaType.AudioVideo)
             {
                 receiver.NotifyTimeUpdate(dmrVideo.Position);
             }
             else if (dmrImage != null && currentType == MediaType.Image)
             {
                 receiver.NotifyTimeUpdate(new TimeSpan(0));
             }
         }
     });
 }
 private async void receiver_PauseRequested(PlayToReceiver recv, Object args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (dmrVideo != null && currentType == MediaType.AudioVideo)
         {
             if (dmrVideo.CurrentState == MediaElementState.Stopped)
             {
                 receiver.NotifyPaused();
             }
             else
             {
                 dmrVideo.Pause();
             }
         }
     });
 }
 private void HandleReceiverCurrentTimeChangeRequested(PlayToReceiver sender, CurrentTimeChangeRequestedEventArgs args)
 {
     Dispatch(() =>
     {
         if (_currentPlaybackType == PlaybackType.Video)
         {
             VideoPlayer.Position = args.Time;
             _receiver.NotifySeeking();
             // "Seeked" receiver notification occurs in the HandleVideoPlayerSeekCompleted handler
             _isSeeking = true;
         }
         else if (_currentPlaybackType == PlaybackType.Image)
         {
             // Seeking is a no-op in image playback.  Just indicate it started and finished.
             _receiver.NotifySeeking();
             _receiver.NotifySeeked();
         }
     });
 }
 private async void receiver_CurrentTimeChangeRequested(PlayToReceiver recv, CurrentTimeChangeRequestedEventArgs args)
 {
     await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
     {
         if (IsReceiverStarted)
         {
             if (dmrVideo != null && currentType == MediaType.AudioVideo)
             {
                 if (dmrVideo.CanSeek)
                 {
                     dmrVideo.Position = args.Time;
                     receiver.NotifySeeking();
                     IsSeeking = true;
                 }
             }
             else if (currentType == MediaType.Image)
             {
                 receiver.NotifySeeking();
                 receiver.NotifySeeked();
             }
         }
     });
 }
Exemple #24
0
        protected async override void OnNavigatedTo(NavigationEventArgs e)
        {
            dispatcher = Window.Current.CoreWindow.Dispatcher;
            manager    = PlayToManager.GetForCurrentView();
            manager.SourceRequested += manager_SourceRequested;

            receiver = new PlayToReceiver();
            receiver.PlayRequested               += receiver_PlayRequested;
            receiver.PauseRequested              += receiver_PauseRequested;
            receiver.StopRequested               += receiver_StopRequested;
            receiver.MuteChangeRequested         += receiver_MuteChangeRequested;
            receiver.VolumeChangeRequested       += receiver_VolumeChangeRequested;
            receiver.TimeUpdateRequested         += receiver_TimeUpdateRequested;
            receiver.CurrentTimeChangeRequested  += receiver_CurrentTimeChangeRequested;
            receiver.SourceChangeRequested       += receiver_SourceChangeRequested;
            receiver.PlaybackRateChangeRequested += receiver_PlaybackRateChangeRequested;
            receiver.SupportsAudio                = true;
            receiver.SupportsVideo                = true;
            receiver.SupportsImage                = true;

            receiver.FriendlyName = "Day #22 - PlayTo";

            await receiver.StartAsync();
        }
        private async void receiver_SourceChangeRequested(PlayToReceiver recv, SourceChangeRequestedEventArgs args)
        {
            IsPlayReceivedPreMediaLoaded = false;
            if (args.Stream == null)
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    if (currentType == MediaType.AudioVideo && dmrVideo != null)
                    {
                        dmrVideo.Stop();
                    }
                    else if (currentType == MediaType.Image && dmrImage != null)
                    {
                        dmrImage.Source  = null;
                        dmrImage.Opacity = 0;
                    }
                    currentType = MediaType.None;
                });
            }
            else if (args.Stream.ContentType.Contains("image"))
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    imagerevd              = new BitmapImage();
                    imagerevd.ImageOpened += imagerevd_ImageOpened;
                    imagerevd.SetSource(args.Stream);
                    if (currentType != MediaType.Image)
                    {
                        if (currentType == MediaType.AudioVideo)
                        {
                            dmrVideo.Stop();
                        }
                        dmrImage.Opacity = 1;
                        dmrVideo.Opacity = 0;
                    }
                    currentType = MediaType.Image;
                });
            }
            else
            {
                await Dispatcher.RunAsync(CoreDispatcherPriority.High, () =>
                {
                    try
                    {
                        justLoadedMedia = true;
                        dmrVideo.SetSource(args.Stream, args.Stream.ContentType);
                    }
                    catch (Exception exp)
                    {
                        rootPage.NotifyUser(exp.Message + " Content Type: " + args.Stream.ContentType, NotifyType.ErrorMessage);
                    }

                    if (currentType == MediaType.Image)
                    {
                        dmrImage.Opacity = 0;
                        dmrVideo.Opacity = 1;
                        dmrImage.Source  = null;
                    }
                    currentType = MediaType.AudioVideo;
                });
            }
        }