예제 #1
2
 void vlcCtrl_PositionChanged(VlcControl sender, VlcEventArgs<float> e)
 {
     playPosition = e.Data;
 }
        private async void M_MediaSubItemAdded(MediaBase sender, VlcEventArgs <MediaBase> e)
        {
            _subCounter++;
            await Send("navigatable", _subCounter > 2);

            SetHandlersForMedia(e.Data);
        }
 private void m_MetaChanged(MediaBase sender, VlcEventArgs <Metadatas> e)
 {
     Dispatcher.BeginInvoke(new Action(async() =>
     {
         try
         {
             var title = _vlc.Media?.Metadatas?.Title;
             if (string.IsNullOrEmpty(title))
             {
                 return;
             }
             var txt = Encoding.UTF8.GetString(Encoding.Default.GetBytes(title));
             if (Uri.IsWellFormedUriString(txt, UriKind.Absolute))
             {
                 return;
             }
             if (txt?.Length < 320)
             {
                 await Send("nowplaying", txt);
             }
         }
         catch
         {
             //Collection was modified; enumeration operation may not execute.
         }
     }), DispatcherPriority.Background);
 }
예제 #4
0
 private void media_StateChanged(MediaBase sender, VlcEventArgs <Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
 {
     if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Stopped)
     {
         this.btn_play.Content = "\uf04b";
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Paused)
     {
         if (this.MediaState == MTC_Player.MediaState.Playing)
         {
             if (sender.Duration.TotalSeconds - this.durationMedia.TotalSeconds < 1)
             {
                 myVlcControl.Position = 0f;
                 myVlcControl.Play();
             }
             else
             {
                 this.btn_play.Content = "\uf04b";
                 myVlcControl.Stop();
             }
         }
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing)
     {
         this.btn_play.Content = "\uf04c";
     }
 }
예제 #5
0
 private void MediaOnParsedChanged(Vlc.DotNet.Core.Medias.MediaBase sender, VlcEventArgs <int> e)
 {
     alta_txt_curTime.Text = string.Format(
         "{0:00}:{1:00}:{2:00}",
         myVlcControl.Media.Duration.Hours,
         myVlcControl.Media.Duration.Minutes,
         myVlcControl.Media.Duration.Seconds);
 }
 private void VlcControlOnTimeChanged(VlcControl sender, VlcEventArgs <TimeSpan> e)
 {
     if (myVlcControl.Media == null)
     {
         return;
     }
     alta_txt_curTime.Text = e.Data.Format();
 }
 private void VlcControlOnPositionChanged(VlcControl sender, VlcEventArgs <float> e)
 {
     if (myPositionChanging)
     {
         return;
     }
     barTimeSeek.Value = (int)(e.Data * 100);
 }
예제 #8
0
        /// <summary>
        /// Called by the <see cref="VlcControl"/> when the media position changed during playback.
        /// </summary>
        /// <param name="sender">Event sennding control. </param>
        /// <param name="e">VLC event arguments. </param>
        private void VlcControlOnPositionChanged(VlcControl sender, VlcEventArgs <float> e)
        {
            if (myPositionChanging)
            {
                // User is currently changing the position using the slider, so do not update.
                return;
            }

            sliderPosition.Value = e.Data;
        }
예제 #9
0
        /// <summary>
        /// Called by <see cref="VlcControl.Media"/> when the media information was parsed.
        /// </summary>
        /// <param name="sender">Event sending media. </param>
        /// <param name="e">VLC event arguments. </param>
        private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs <int> e)
        {
            textBlock.Text = string.Format(
                "Duration: {0:00}:{1:00}:{2:00}",
                myVlcControl.Media.Duration.Hours,
                myVlcControl.Media.Duration.Minutes,
                myVlcControl.Media.Duration.Seconds);

            sliderVolume.Value     = myVlcControl.AudioProperties.Volume;
            checkboxMute.IsChecked = myVlcControl.AudioProperties.IsMute;
        }
예제 #10
0
        private void VlcControlOnTimeChanged(VlcControl sender, VlcEventArgs <TimeSpan> e)
        {
            var duration = myVlcControl.Media.Duration;

            textBlock.Text = string.Format(
                "{0:00}:{1:00}:{2:00} / {3:00}:{4:00}:{5:00}",
                e.Data.Hours,
                e.Data.Minutes,
                e.Data.Seconds,
                duration.Hours,
                duration.Minutes,
                duration.Seconds);
        }
예제 #11
0
 private void VlcControlOnTimeChanged(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs <TimeSpan> e)
 {
     if (myVlcControl.Media == null)
     {
         return;
     }
     durationMedia         = e.Data;
     alta_txt_curTime.Text = string.Format(
         "{0:00}:{1:00}:{2:00}",
         e.Data.Hours,
         e.Data.Minutes,
         e.Data.Seconds);
 }
예제 #12
0
        /// <summary>
        /// Called by the <see cref="VlcControl"/> when the media position changed during playback.
        /// </summary>
        /// <param name="sender">Event sennding control. </param>
        /// <param name="e">VLC event arguments. </param>
        private void VlcControlOnPositionChanged(VlcControl sender, VlcEventArgs <float> e)
        {
            if (positionChanging)
            {
                // User is currently changing the position using the slider, so do not update.
                return;
            }

            Action action = () =>
            {
                sliderPosition.Value = e.Data;
            };

            this.Dispatcher.Invoke(action);
        }
예제 #13
0
        private void PlayerOnEndReached(VlcControl sender, VlcEventArgs <EventArgs> vlcEventArgs)
        {
            if (Duration <= TimeSpan.Zero)
            {
                return;
            }

            if (_loop)
            {
                Play(null);
            }
            else
            {
                Stop(null);
            }
        }
예제 #14
0
        void media_StateChanged(MediaBase sender, VlcEventArgs <Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
        {
            switch (e.Data)
            {
            case Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Buffering:
                LoadingVisual.Visibility = Visibility.Visible;
                break;

            case Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing:
                LoadingVisual.Visibility = Visibility.Collapsed;
                break;

            case Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.NothingSpecial:
                break;
            }
        }
예제 #15
0
        void _vlcControl_Stopped(VlcControl sender, VlcEventArgs <EventArgs> e)
        {
            var playlist = _playlist.ToList();
            var index    = CurrentPlaylistIndex;
            var ticks    = CurrentPositionTicks;

            DisposePlayer();

            var media = index != -1 && playlist.Count > 0 ? playlist[index] : null;

            var args = new PlaybackStopEventArgs
            {
                Playlist            = playlist,
                Player              = this,
                EndingPlaylistIndex = index,
                EndingPositionTicks = ticks,
                EndingMedia         = media
            };

            EventHelper.QueueEventIfNotNull(PlaybackCompleted, this, args, _logger);

            _playbackManager.ReportPlaybackCompleted(args);
        }
예제 #16
0
        void vlcCtrl_EncounteredError(VlcControl sender, VlcEventArgs <EventArgs> e)
        {
            string error = VlcContext.ErrorHandling.GetErrorMessage();

            GUIWindowManager.SendThreadCallbackAndWait((p1, p2, o) =>
            {
                Log.Instance.Warn("VLCPlayer Error: '{0}'", error);
                if (!bufferingDone && Initializing)
                {
                    GUIWaitCursor.Hide();                                 // hide the wait cursor if still showing
                }
                MediaPortal.Dialogs.GUIDialogOK dlg_error = (MediaPortal.Dialogs.GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK);
                if (dlg_error != null)
                {
                    dlg_error.Reset();
                    dlg_error.SetHeading(PluginConfiguration.Instance.BasicHomeScreenName);
                    dlg_error.SetLine(1, Translation.Instance.Error);
                    dlg_error.SetLine(2, error);
                    dlg_error.DoModal(GUIWindowManager.ActiveWindow);
                }
                PlaybackEnded();
                return(0);
            }, 0, 0, null);
        }
예제 #17
0
        /// <summary>
        /// Called by the <see cref="VlcControl"/> when the media position changed during playback.
        /// </summary>
        /// <param name="sender">Event sennding control. </param>
        /// <param name="e">VLC event arguments. </param>
        private void VlcControlOnPositionChanged(VlcControl sender, VlcEventArgs<float> e)
        {
            if (positionChanging)
            {
                // User is currently changing the position using the slider, so do not update. 
                return;
            }

            Action action = () =>
                {
                    sliderPosition.Value = e.Data;
                };

            this.Dispatcher.Invoke(action);
        }
예제 #18
0
 private void PlayerOnPositionChanged(VlcControl sender, VlcEventArgs <float> vlcEventArgs)
 {
     _media.Source = _player.VideoSource;
     Position      = _player.Time;
 }
예제 #19
0
 private void MediaOnParsedChanged(Vlc.DotNet.Core.Medias.MediaBase sender, VlcEventArgs<int> e)
 {
     alta_txt_curTime.Text = string.Format(
         "{0:00}:{1:00}:{2:00}",
         myVlcControl.Media.Duration.Hours,
         myVlcControl.Media.Duration.Minutes,
         myVlcControl.Media.Duration.Seconds);
 }
예제 #20
0
        void myVlcControl_Paused(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs<EventArgs> e)
        {

          

        }
예제 #21
0
        /// <summary>
        /// 
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        private void VlcControlOnPositionChanged(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs<float> e)
        {
            if (myPositionChanging)
            {
                return;
            }

            barTimeSeek.Value = (int)(e.Data * 100);
        }
예제 #22
0
 private void media_StateChanged(MediaBase sender, VlcEventArgs<Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States> e)
 {
     if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Stopped)
     {
         this.btn_play.Content = "\uf04b";
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Paused)
     {
         if (this.MediaState == MTC_Player.MediaState.Playing)
         {
             if (sender.Duration.TotalSeconds - this.durationMedia.TotalSeconds < 1)
             {
                 myVlcControl.Position = 0f;
                 myVlcControl.Play();
             }
             else
             {
                 this.btn_play.Content = "\uf04b";
                 myVlcControl.Stop();
             }
         }
     }
     else if (e.Data == Vlc.DotNet.Core.Interops.Signatures.LibVlc.Media.States.Playing)
     {
         this.btn_play.Content = "\uf04c";
     }
 }
예제 #23
0
 void vlcBox_EndReached(object sender, VlcEventArgs<EventArgs> e)
 {
     setTimeout(delegate
     {
         Next();
     }, 2);
 }
예제 #24
0
 void _vlcControl_Paused(VlcControl sender, VlcEventArgs<EventArgs> e)
 {
     OnPlayStateChanged();
     _isPaused = true;
 }
        private void myVlcControl_Paused(VlcControl sender, VlcEventArgs<EventArgs> e)
        {

        }
 private void VlcControlOnTimeChanged(VlcControl sender, VlcEventArgs<TimeSpan> e)
 {
     if (myVlcControl.Media == null)
     {
         return;
     }
     alta_txt_curTime.Text = e.Data.Format();
 }
 private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs<int> e)
 {
     alta_txt_curTime.Text = myVlcControl.Media.Duration.Format();
 }
 public static void RaiseEvent <TSender, THandler>(VlcEventHandler <TSender, THandler> handler, TSender sender, VlcEventArgs <THandler> arg)
 {
     if (handler == null)
     {
         return;
     }
     foreach (VlcEventHandler <TSender, THandler> singleInvoke in handler.GetInvocationList())
     {
         var syncInvoke = singleInvoke.Target as ISynchronizeInvoke;
         if (syncInvoke == null)
         {
             singleInvoke.DynamicInvoke(new object[] { sender, arg });
             continue;
         }
         //if (syncInvoke is Control && ((Control)syncInvoke).IsDisposed)
         //    continue;
         try
         {
             if (syncInvoke.InvokeRequired)
             {
                 syncInvoke.Invoke(singleInvoke, new object[] { sender, arg });
             }
             else
             {
                 singleInvoke(sender, arg);
             }
         }
         catch (ObjectDisposedException)
         {
             //Because IsDisposed was true and IsDisposed could be false now...
             continue;
         }
     }
 }
예제 #29
0
 void myVlcControl_Paused(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs <EventArgs> e)
 {
 }
예제 #30
0
 void myVlcControl_Playing(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs <EventArgs> e)
 {
     topImage.Animation_Opacity_View_Frame(false);
     HideControl();
 }
예제 #31
0
 void _vlcControl_Paused(VlcControl sender, VlcEventArgs <EventArgs> e)
 {
     OnPlayStateChanged();
     _isPaused = true;
 }
예제 #32
0
 private void myVlcControl_Stopped(VlcControl sender, VlcEventArgs <EventArgs> e)
 {
     topImage.Animation_Opacity_View_Frame(true);
 }
 private void myVlcControl_Playing(VlcControl sender, VlcEventArgs<EventArgs> e)
 {
     UIBtnPlay.Text = Define.Fonts["fa-pause"].Code;
 }
예제 #34
0
 void media_ParsedChanged(MediaBase sender, VlcEventArgs<int> e)
 {
     this.durationMedia = TimeSpan.Zero;
 }
 private void myVlcControl_Playing(VlcControl sender, VlcEventArgs <EventArgs> e)
 {
     UIBtnPlay.Text = Define.Fonts["fa-pause"].Code;
 }
예제 #36
0
 private void myVlcControl_Stopped(VlcControl sender, VlcEventArgs<EventArgs> e)
 {
     topImage.Animation_Opacity_View_Frame(true);
 }
 private void myVlcControl_Paused(VlcControl sender, VlcEventArgs <EventArgs> e)
 {
 }
예제 #38
0
 void myVlcControl_Playing(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs<EventArgs> e)
 {
     topImage.Animation_Opacity_View_Frame(false);
     HideControl();
 }
예제 #39
0
 void vlcCtrl_PositionChanged(VlcControl sender, VlcEventArgs <float> e)
 {
     playPosition = e.Data;
 }
예제 #40
0
        private void VlcControlOnTimeChanged(Vlc.DotNet.Wpf.VlcControl sender, VlcEventArgs<TimeSpan> e)
        {
            if (myVlcControl.Media == null)
            {
                return;
            }
            durationMedia = e.Data;
            alta_txt_curTime.Text = string.Format(
                   "{0:00}:{1:00}:{2:00}",
                   e.Data.Hours,
                   e.Data.Minutes,
                   e.Data.Seconds);

        }
예제 #41
0
 void Media_DurationChanged(MediaBase sender, VlcEventArgs <long> e)
 {
     timelineSlider.Maximum = MyVlcControl.Media.Duration.TotalSeconds;
 }
예제 #42
0
 private void PlayerOnLengthChanged(VlcControl sender, VlcEventArgs <long> vlcEventArgs)
 {
     Duration = _player.Duration;
 }
예제 #43
0
        private void VlcControlOnPositionChanged(VlcControl sender, VlcEventArgs<float> e)
        {
            if (myPositionChanging)
            {
                return;
            }

            sliderPosition.Value = e.Data;
        }
예제 #44
0
        private void PlayerOnEndReached(VlcControl sender, VlcEventArgs<EventArgs> vlcEventArgs)
        {
            if (Duration <= TimeSpan.Zero) 
                return;

            if (_loop)
                Play(null);  
            else
                Stop(null);
        }
예제 #45
0
 private void _VLCcontrol_OnEndReached(VlcControl sender, VlcEventArgs<EventArgs> e)
 {
     this._eventAggregator.GetEvent<VideoEnded>().Publish(null);
 }
예제 #46
0
        private void VlcControlOnTimeChanged(VlcControl sender, VlcEventArgs<TimeSpan> e)
        {
            var duration = myVlcControl.Media.Duration;

            Action action = () =>
            {
                textBlock.Text = string.Format(
                    "{0:00}:{1:00}:{2:00} / {3:00}:{4:00}:{5:00}",
                    e.Data.Hours,
                    e.Data.Minutes,
                    e.Data.Seconds,
                    duration.Hours,
                    duration.Minutes,
                    duration.Seconds);
            };
            this.Dispatcher.Invoke(action);
        }
예제 #47
0
 private void _VLCcontrol_OnLengthChanged(VlcControl sender, VlcEventArgs<long> e)
 {
     this._eventAggregator.GetEvent<VideoDurationChanged>().Publish(this._VLCcontrol.Duration);
 }
예제 #48
0
        void _vlcControl_Stopped(VlcControl sender, VlcEventArgs<EventArgs> e)
        {
            var playlist = _playlist.ToList();
            var index = CurrentPlaylistIndex;
            var ticks = CurrentPositionTicks;

            DisposePlayer();

            var media = index != -1 && playlist.Count > 0 ? playlist[index] : null;

            var args = new PlaybackStopEventArgs
            {
                Playlist = playlist,
                Player = this,
                EndingPlaylistIndex = index,
                EndingPositionTicks = ticks,
                EndingMedia = media
            };

            EventHelper.QueueEventIfNotNull(PlaybackCompleted, this, args, _logger);

            _playbackManager.ReportPlaybackCompleted(args);
        }
예제 #49
0
 void media_ParsedChanged(MediaBase sender, VlcEventArgs <int> e)
 {
     this.durationMedia = TimeSpan.Zero;
 }
 private void VlcControlOnTimeChanged(VlcControl sender, VlcEventArgs<TimeSpan> e)
 {
     if (myVlcControl.Media == null)
         return;
     var duration = myVlcControl.Media.Duration;
     textBlock.Text = string.Format(
         "{0:00}:{1:00}:{2:00} / {3:00}:{4:00}:{5:00}",
         e.Data.Hours,
         e.Data.Minutes,
         e.Data.Seconds,
         duration.Hours,
         duration.Minutes,
         duration.Seconds);
 }
        /// <summary>
        /// Called by the <see cref="VlcControl"/> when the media position changed during playback.
        /// </summary>
        /// <param name="sender">Event sennding control. </param>
        /// <param name="e">VLC event arguments. </param>
        private void VlcControlOnPositionChanged(VlcControl sender, VlcEventArgs<float> e)
        {
            if (myPositionChanging)
            {
                // User is currently changing the position using the slider, so do not update.
                return;
            }

            sliderPosition.Value = e.Data;
        }
 private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs <int> e)
 {
     alta_txt_curTime.Text = myVlcControl.Media.Duration.Format();
 }
예제 #53
0
 internal static void RaiseEvent <THandler>(VlcEventHandler <THandler> handler, object sender, VlcEventArgs <THandler> arg)
 {
     if (handler == null)
     {
         return;
     }
     foreach (VlcEventHandler <THandler> singleInvoke in handler.GetInvocationList())
     {
         var syncInvoke = singleInvoke.Target as ISynchronizeInvoke;
         if (syncInvoke == null)
         {
             continue;
         }
         if (syncInvoke is Control && ((Control)syncInvoke).IsDisposed)
         {
             continue;
         }
         try
         {
             if (syncInvoke.InvokeRequired)
             {
                 syncInvoke.Invoke(singleInvoke, new[] { sender, arg });
             }
             else
             {
                 singleInvoke(sender, arg);
             }
         }
         catch (ObjectDisposedException)
         {
             //Because IsDisposed was true and IsDisposed is now false...
             continue;
         }
     }
 }
        /// <summary>
        /// Called by <see cref="VlcControl.MOVIES"/> when the media information was parsed. 
        /// </summary>
        /// <param name="sender">Event sending media. </param>
        /// <param name="e">VLC event arguments. </param>
        private void MediaOnParsedChanged(MediaBase sender, VlcEventArgs<int> e)
        {
            textBlock.Text = string.Format(
                "Duration: {0:00}:{1:00}:{2:00}",
                myVlcControl.Media.Duration.Hours,
                myVlcControl.Media.Duration.Minutes,
                myVlcControl.Media.Duration.Seconds);

            sliderVolume.Value = myVlcControl.AudioProperties.Volume;
            checkboxMute.IsChecked = myVlcControl.AudioProperties.IsMute;
        }
예제 #55
0
 private void _VLCcontrol_OnSnapshotTaken(VlcControl sender, VlcEventArgs<string> e)
 {
     try
     {
         String imgPath = this._viewModel.TemporaryImagePath;
         if (File.Exists(imgPath))
         {
             Image img = new Bitmap(imgPath);
             this._viewModel.CurrentVideo.PreviewImage = img;
             img.Dispose();
             File.Delete(imgPath);
         }
     }
     catch (Exception ex)
     {
         this.Logger().ErrorFormat(ex.Message);
     }
 }
예제 #56
0
 private void _VLCcontrol_OnPositionChanged(VlcControl sender, VlcEventArgs<float> e)
 {
     this._viewModel.Position = this._VLCcontrol.Position;
 }
예제 #57
0
 private void _VLCcontrol_OnLengthChanged(VlcControl sender, VlcEventArgs<long> e)
 {
     if (this._viewModel.Duration == TimeSpan.Zero)
     {
         TimeSpan duration = this._VLCcontrol.Duration;
         this._viewModel.Duration = duration;
     }
 }
예제 #58
0
 private void _VLCcontrol_OnEndReached(VlcControl sender, VlcEventArgs<EventArgs> e)
 {
     this._viewModel.Next();
 }
예제 #59
-1
        void vlcCtrl_EncounteredError(VlcControl sender, VlcEventArgs<EventArgs> e)
        {
            string error = VlcContext.ErrorHandling.GetErrorMessage();
            GUIWindowManager.SendThreadCallbackAndWait((p1, p2, o) =>
            {
                Log.Instance.Warn("VLCPlayer Error: '{0}'", error);
                if (!bufferingDone && Initializing) GUIWaitCursor.Hide(); // hide the wait cursor if still showing
                MediaPortal.Dialogs.GUIDialogOK dlg_error = (MediaPortal.Dialogs.GUIDialogOK)GUIWindowManager.GetWindow((int)GUIWindow.Window.WINDOW_DIALOG_OK);
                if (dlg_error != null)
                {
                    dlg_error.Reset();
                    dlg_error.SetHeading(PluginConfiguration.Instance.BasicHomeScreenName);
					dlg_error.SetLine(1, Translation.Instance.Error);
                    dlg_error.SetLine(2, error);
                    dlg_error.DoModal(GUIWindowManager.ActiveWindow);
                }
                PlaybackEnded();
                return 0;
            }, 0, 0, null);
        }