LEADTOOLS Multimedia (Leadtools.Multimedia assembly) Send comments on this topic. | Back to Introduction | Help Version 17.0.3.22
PreviousFrame Method
See Also 
Leadtools.Multimedia Namespace > PlayCtrl Class : PreviousFrame Method



Seeks for the previous video frame.

Syntax

Visual Basic (Declaration) 
Public Overridable Sub PreviousFrame() 
Visual Basic (Usage)Copy Code
Dim instance As PlayCtrl
 
instance.PreviousFrame()
C# 
public virtual void PreviousFrame()
C++/CLI 
public:
virtual void PreviousFrame(); 

Example

Visual BasicCopy Code
Public _result As Boolean = False
      Public _form As PlayCtrlForm = New PlayCtrlForm()
      Public _playctrl As PlayCtrl
      Public _seekingCaps As PlaySeeking
      Public _start As TimeSpan = TimeSpan.Zero
      Public Sub HasDialogExample()
         ' reference the play control
         _playctrl = _form.PlayCtrl

         ' input file for playback
         Dim inFile As String = Path.Combine(LEAD_VARS.MediaDir, "PlayCtrl_Source.avi")

         Try
            ' turn off autostart and auto rewind
            _playctrl.AutoStart = False
            _playctrl.AutoRewind = False

            ' set the source file
            _playctrl.SourceFile = inFile

            ' show some media info if available
            ShowMediaInfo()

            ' the HasDialog method tells us that the control
            ' can display the desired settings dialog.
            ' check to see if the video renderer properties dialog is available
            If _playctrl.HasDialog(PlayDlg.VideoRenderer) Then
               ' now show it to change some settings
               _playctrl.ShowDialog(PlayDlg.VideoRenderer, _form)
               _result = True
            End If

            ' get the source object type
            Dim sot As SourceObjectType = _playctrl.SourceType

            ' check some audio properties
            Dim mute As Boolean = _playctrl.Mute
            Dim bal As Integer = _playctrl.Balance
            Dim vol As Integer = _playctrl.Volume

            ' seeking caps - you can use these to enable menu states or toolbar buttons
            _seekingCaps = _playctrl.CheckSeekingCapabilities(PlaySeeking.Forward Or PlaySeeking.Backward)

            ' subscribe to the key press event to demo play functions
            AddHandler _playctrl.KeyPress, AddressOf PlayCtrl_KeyPress

            ' start the capture process
            _playctrl.Run()

            ' we'll loop on the state and pump messages for this example.
            ' but you should not need to if running from a Windows Forms application.
            Do While _playctrl.State = PlayState.Running OrElse _playctrl.State = PlayState.Paused OrElse _playctrl.State = PlayState.NotReady
               Application.DoEvents()
            Loop

            ' call reset source here to release resources
            ' but not necessary if we are just exiting
            _playctrl.ResetSource()
         Catch e1 As Exception
            _result = False
         End Try
      End Sub

      ' state variables for helper timer states
      Public _markedSelStart As Boolean = False
      Public _markedSelEnd As Boolean = False
      Public _seekedSelStart As Boolean = False
      Public _seekedSelEnd As Boolean = False

      ' key press event handler to manage playback functions
      Private Sub PlayCtrl_KeyPress(ByVal sender As Object, ByVal e As Leadtools.Multimedia.KeyPressEventArgs)
         Dim key As Char = CChar(ChrW(e.keyAscii))
         Select Case key
            Case "b"c
               If (Not _markedSelStart) Then
                  _markedSelStart = True
                  _playctrl.MarkSelectionStart()
                  System.Diagnostics.Debug.WriteLine("Mark Selection Start: " & _playctrl.SelectionStart.ToString() & " secs")
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " & _playctrl.State.ToString())
               End If
            Case "e"c
               If (Not _markedSelEnd) Then
                  _markedSelEnd = True
                  _playctrl.Pause()
                  _playctrl.MarkSelectionEnd()
                  System.Diagnostics.Debug.WriteLine("Mark Selection End: " & _playctrl.SelectionEnd.ToString() & " secs")
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " & _playctrl.State.ToString())
                  _playctrl.SeekSelectionStart()
                  _playctrl.Run()
               End If
            Case "s"c
               If (Not _seekedSelStart) Then
                  _seekedSelStart = True
                  System.Diagnostics.Debug.WriteLine("Seek To Selection Start: " & _playctrl.SelectionStart.ToString() & " secs")
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " & _playctrl.State.ToString())
                  _playctrl.SeekSelectionStart()
               End If
            Case "f"c
               ' toggle full screen
               _playctrl.ToggleFullScreenMode()
            Case "+"c
               If _playctrl.State = PlayState.Running Then
                  _playctrl.Pause()
               End If

               _playctrl.NextFrame()
            Case "-"c
               If _playctrl.State = PlayState.Running Then
                  _playctrl.Pause()
               End If

               _playctrl.PreviousFrame()
            Case "z"c
               If (Not _seekedSelEnd) Then
                  ' turn off full screen mode
                  _playctrl.FullScreenMode = False

                  _seekedSelEnd = True
                  System.Diagnostics.Debug.WriteLine("Seek To Selection End: " & _playctrl.SelectionEnd.ToString() & " secs")
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " & _playctrl.State.ToString())
                  _playctrl.SeekSelectionEnd()
               End If
            Case "x"c
               _playctrl.Stop()

         End Select
      End Sub

      Private Sub ShowMediaInfo()
         Dim d As Double = 0
         Dim sa, scr, sd, sr, st As String

         sa = "Unavailable"
         scr = "Unavailable"
         sd = "Unavailable"
         sr = "Unavailable"
         st = "Unavailable"

         Try
            d = _playctrl.FrameDuration
            sa = _playctrl.Author
            scr = _playctrl.Copyright
            sd = _playctrl.Description
            sr = _playctrl.Rating
            st = _playctrl.Title
         Catch e1 As Exception
         End Try

         MessageBox.Show(_form, String.Format("Duration: {0}" & Microsoft.VisualBasic.Constants.vbLf & "Author: {1}" & Microsoft.VisualBasic.Constants.vbLf & "Copyright: {2}" & Microsoft.VisualBasic.Constants.vbLf & "Desc: {3}" & Microsoft.VisualBasic.Constants.vbLf & "Rating: {4}" & Microsoft.VisualBasic.Constants.vbLf & "Title: {5}" & Microsoft.VisualBasic.Constants.vbLf, d, sa, scr, sd, sr, st), "Media Info")
      End Sub

      Private Sub SelectedOptions()
         _playctrl.SeekStart()
         _playctrl.SeekEnd()
         Dim te As Integer = _playctrl.TrackingSelectionEnd
         Dim ts As Integer = _playctrl.TrackingSelectionStart
         Dim se As Double = _playctrl.SelectionEnd
         Dim ss As Double = _playctrl.SelectionStart
      End Sub

Public NotInheritable Class LEAD_VARS
   Public Const MediaDir As String = "C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 17\Media"
End Class
C#Copy Code
public bool _result = false;
      public PlayCtrlForm _form = new PlayCtrlForm();
      public PlayCtrl _playctrl;
      public PlaySeeking _seekingCaps;
      public TimeSpan _start = TimeSpan.Zero;
      public void HasDialogExample()
      {
         // reference the play control
         _playctrl = _form.PlayCtrl;

         // input file for playback
         string inFile =Path.Combine(LEAD_VARS.MediaDir,"PlayCtrl_Source.avi");

         try
         {
            // turn off autostart and auto rewind
            _playctrl.AutoStart = false;
            _playctrl.AutoRewind = false;

            // set the source file
            _playctrl.SourceFile = inFile;

            // show some media info if available
            ShowMediaInfo();

            // the HasDialog method tells us that the control
            // can display the desired settings dialog.
            // check to see if the video renderer properties dialog is available
            if (_playctrl.HasDialog(PlayDlg.VideoRenderer))
            {
               // now show it to change some settings
               _playctrl.ShowDialog(PlayDlg.VideoRenderer, _form);
               _result = true;
            }

            // get the source object type
            SourceObjectType sot = _playctrl.SourceType;

            // check some audio properties
            bool mute = _playctrl.Mute;
            int bal = _playctrl.Balance;
            int vol = _playctrl.Volume;

            // seeking caps - you can use these to enable menu states or toolbar buttons
            _seekingCaps = _playctrl.CheckSeekingCapabilities(PlaySeeking.Forward | PlaySeeking.Backward);

            // subscribe to the key press event to demo play functions
            _playctrl.KeyPress += new Leadtools.Multimedia.KeyPressEventHandler(PlayCtrl_KeyPress);

            // start the capture process
            _playctrl.Run();

            // we'll loop on the state and pump messages for this example.
            // but you should not need to if running from a Windows Forms application.
            while (_playctrl.State == PlayState.Running
               || _playctrl.State == PlayState.Paused
               || _playctrl.State == PlayState.NotReady)
               Application.DoEvents();

            // call reset source here to release resources
            // but not necessary if we are just exiting
            _playctrl.ResetSource();
         }
         catch (Exception)
         {
            _result = false;
         }
      }

      // state variables for helper timer states
      public bool _markedSelStart = false;
      public bool _markedSelEnd = false;
      public bool _seekedSelStart = false;
      public bool _seekedSelEnd = false;

      // key press event handler to manage playback functions
      void PlayCtrl_KeyPress(object sender, Leadtools.Multimedia.KeyPressEventArgs e)
      {
         char key = (char)e.keyAscii;
         switch (key)
         {
            case 'b':
               if (!_markedSelStart)
               {
                  _markedSelStart = true;
                  _playctrl.MarkSelectionStart();
                  System.Diagnostics.Debug.WriteLine("Mark Selection Start: " + _playctrl.SelectionStart.ToString() + " secs");
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " + _playctrl.State.ToString());
               }
               break;
            case 'e':
               if (!_markedSelEnd)
               {
                  _markedSelEnd = true;
                  _playctrl.Pause();
                  _playctrl.MarkSelectionEnd();
                  System.Diagnostics.Debug.WriteLine("Mark Selection End: " + _playctrl.SelectionEnd.ToString() + " secs");
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " + _playctrl.State.ToString());
                  _playctrl.SeekSelectionStart();
                  _playctrl.Run();
               }
               break;
            case 's':
               if (!_seekedSelStart)
               {
                  _seekedSelStart = true;
                  System.Diagnostics.Debug.WriteLine("Seek To Selection Start: " + _playctrl.SelectionStart.ToString() + " secs");
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " + _playctrl.State.ToString());
                  _playctrl.SeekSelectionStart();
               }
               break;
            case 'f':
               // toggle full screen
               _playctrl.ToggleFullScreenMode();
               break;
            case '+':
               if (_playctrl.State == PlayState.Running)
                  _playctrl.Pause();

               _playctrl.NextFrame();
               break;
            case '-':
               if (_playctrl.State == PlayState.Running)
                  _playctrl.Pause();

               _playctrl.PreviousFrame();
               break;
            case 'z':
               if (!_seekedSelEnd)
               {
                  // turn off full screen mode
                  _playctrl.FullScreenMode = false;

                  _seekedSelEnd = true;
                  System.Diagnostics.Debug.WriteLine("Seek To Selection End: " + _playctrl.SelectionEnd.ToString() + " secs");
                  System.Diagnostics.Debug.WriteLine("  ... playctrl.State: " + _playctrl.State.ToString());
                  _playctrl.SeekSelectionEnd();
               }
               break;
            case 'x':
               _playctrl.Stop();
               break;

         }
      }

      private void ShowMediaInfo()
      {
         double d = 0;
         string sa, scr, sd, sr, st;

         sa = scr = sd = sr = st = "Unavailable";

         try
         {
            d = _playctrl.FrameDuration;
            sa = _playctrl.Author;
            scr = _playctrl.Copyright;
            sd = _playctrl.Description;
            sr = _playctrl.Rating;
            st = _playctrl.Title;
         }
         catch (Exception)
         {
         }

         MessageBox.Show(_form, string.Format("Duration: {0}\nAuthor: {1}\nCopyright: {2}\nDesc: {3}\nRating: {4}\nTitle: {5}\n",
            d, sa, scr, sd, sr, st), "Media Info");
      }

      void SelectedOptions()
      {
         _playctrl.SeekStart();
         _playctrl.SeekEnd();
         int te = _playctrl.TrackingSelectionEnd;
         int ts = _playctrl.TrackingSelectionStart;
         double se = _playctrl.SelectionEnd;
         double ss = _playctrl.SelectionStart;
      }

static class LEAD_VARS
{
   public const string MediaDir = @"C:\Program Files (x86)\LEAD Technologies\LEADTOOLS 17\Media";
}

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7

See Also