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



Sets the Mode property to VCRControlMode.StepForward.

Syntax

Visual Basic (Declaration) 
Public Sub StepForward() 
Visual Basic (Usage)Copy Code
Dim instance As VCRControl
 
instance.StepForward()
C# 
public void StepForward()
C++/CLI 
public:
void StepForward(); 

Example

Visual BasicCopy Code
Public _result As Boolean = False
    Public _form As ConvertCtrlForm = New ConvertCtrlForm()
    Public _convertctrl As ConvertCtrl
    Public _testing As Boolean
    Public _startTimeCode As Integer
    Public _stopTimeCode As Integer
    Public Sub ReadTimecodeExample()
      ' reference the convert control
      _convertctrl = _form.ConvertCtrl

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

      Try
         ' check to see if we have the desired target device
         If _convertctrl.TargetDevices("Microsoft DV Camera and VCR") Is Nothing Then
           Throw New Exception("No Microsoft DV Camera target devices available!")
         End If

         ' set the video capture device, use your capture device name here
         _convertctrl.SourceFile = inFile

         ' select video and audio compressors to none
         _convertctrl.VideoCompressors.Uncompressed.Selected = True
         _convertctrl.AudioCompressors.Uncompressed.Selected = True

         ' select the target format
         _convertctrl.TargetFormats(TargetFormatType.DVSD).Selected = True

         ' select only Audio for this example
         _convertctrl.AllowedStreams = StreamFormatType.AudioVideo

         ' set a target device
         _convertctrl.TargetDevices("Microsoft DV Camera and VCR").Selected = True

         ' check the target device VCRControl 
         If _convertctrl.TargetVCRControl Is Nothing OrElse (_convertctrl.TargetVCRControl.DeviceType = VCRControlDeviceType.NotPresent OrElse _convertctrl.TargetVCRControl.DeviceType = VCRControlDeviceType.Unknown) Then
           Throw New Exception("MS DV Camera's Target VCR control is not present!")
         End If

         ' subscribe to convert control events for VCR control input
         AddHandler _convertctrl.Started, AddressOf ConvertCtrl_Started
         AddHandler _convertctrl.Complete, AddressOf ConvertCtrl_Complete
         AddHandler _convertctrl.Progress, AddressOf ConvertCtrl_Progress
         AddHandler _convertctrl.KeyPress, AddressOf ConvertCtrl_KeyPress

            ' start the conversion
         _convertctrl.StartConvert()
      Catch e1 As Exception
         _result = False
      End Try

      ' 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 _convertctrl.State = ConvertState.Running
         Application.DoEvents()
      Loop

      ' switch to playback and test
      _testing = True

      ' again, we'll loop and pump messages for this example for 
      ' playback testing, (setting _testing == true will exit)
      Do While _testing
         Application.DoEvents()
      Loop
    End Sub

    Private Sub ConvertCtrl_Started(ByVal sender As Object, ByVal e As EventArgs)
      ' start recording
      If _convertctrl.TargetVCRControl.Mode <> VCRControlMode.Record Then
         ' pause the graph to prevent frame loss
         _convertctrl.PauseConvert()
         ' start the record on the VCR control
         _convertctrl.TargetVCRControl.Record()
         ' resume graph now
         _convertctrl.RunConvert()
      End If

      ' get our VCR start timecode
      _startTimeCode = _convertctrl.TargetVCRControl.ReadTimecode()
    End Sub

    Private Sub ConvertCtrl_Complete(ByVal sender As Object, ByVal e As EventArgs)
      ' stop recording
      If _convertctrl.TargetVCRControl.Mode <> VCRControlMode.Stop Then
         _convertctrl.TargetVCRControl.Stop()
      End If

      ' get our VCR start timecode
      _stopTimeCode = _convertctrl.TargetVCRControl.ReadTimecode()

      ' set the result to what we expect
      _result = (_stopTimeCode > _startTimeCode)
    End Sub

    Private Sub ConvertCtrl_KeyPress(ByVal sender As Object, ByVal e As Leadtools.Multimedia.KeyPressEventArgs)
      ' if ok to perform playback functions 
      If _testing AndAlso Not _convertctrl.TargetVCRControl Is Nothing Then
         ' reference the target VCR control
         Dim vcr As VCRControl = _convertctrl.TargetVCRControl
            Select Case e.keyAscii
               Case CShort("*")
                  ' seek to the beginning of the capture 
                  If vcr.Mode <> VCRControlMode.Stop Then
                     vcr.Stop()
                  End If
                  vcr.SeekTimecode(_startTimeCode)
               Case CShort("~")
                  ' seek to the end of the capture
                  If vcr.Mode <> VCRControlMode.Stop Then
                     vcr.Stop()
                  End If
                  vcr.SeekTimecode(_stopTimeCode)
               Case CShort("p")
                  ' start playback
                  If vcr.Mode <> VCRControlMode.Play Then
                     vcr.Play()
                  End If
               Case CShort("s")
                  ' skip ahead 1000 units from the current timecode 
                  vcr.Pause()
                  Dim tc As Integer = vcr.ReadTimecode()
                  vcr.SeekTimecode(tc + 1000)
                  vcr.Play()
               Case CShort("+")
                  ' step forward one frame
                  If vcr.Mode <> VCRControlMode.Pause Then
                     vcr.Pause()
                  End If
                  vcr.StepForward()
               Case CShort("-")
                  ' step backward one frame
                  If vcr.Mode <> VCRControlMode.Pause Then
                     vcr.Pause()
                  End If
                  vcr.StepBackward()
               Case CShort("f")
                  ' slowest forward
                  vcr.SlowestForward()
               Case CShort("r")
                  ' slowest reverse
                  vcr.SlowestReverse()
               Case CShort(">")
                  ' fastest forward
                  vcr.FastestForward()
               Case CShort("<")
                  ' fastest reverse
                  vcr.FastestReverse()
               Case CShort("x")
                  ' stop playback and exit
                  If vcr.Mode <> VCRControlMode.Stop Then
                     vcr.Stop()
                  End If
                  _testing = False
            End Select
      End If
    End Sub

    Private Sub ConvertCtrl_Progress(ByVal sender As Object, ByVal e As ProgressEventArgs)
      If Not _convertctrl.TargetVCRControl Is Nothing Then
         ' reference the VCR control
         Dim vcr As VCRControl = _convertctrl.TargetVCRControl

         ' get the current time code
         Dim timeCode As Integer = vcr.ReadTimecode()
      End If
    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 ConvertCtrlForm _form = new ConvertCtrlForm();
      public ConvertCtrl _convertctrl;
      public bool _testing;
      public int _startTimeCode;
      public int _stopTimeCode;
      public void ReadTimecodeExample()
      {
         // reference the convert control
         _convertctrl = _form.ConvertCtrl;

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

         try
         {
            // check to see if we have the desired target device
            if (_convertctrl.TargetDevices["Microsoft DV Camera and VCR"] == null)
               throw new Exception("No Microsoft DV Camera target devices available!");

            // set the video capture device, use your capture device name here
            _convertctrl.SourceFile = inFile;

            // select video and audio compressors to none
            _convertctrl.VideoCompressors.Uncompressed.Selected = true;
            _convertctrl.AudioCompressors.Uncompressed.Selected = true;

            // select the target format
            _convertctrl.TargetFormats[TargetFormatType.DVSD].Selected = true;

            // select only Audio for this example
            _convertctrl.AllowedStreams = StreamFormatType.AudioVideo;

            // set a target device
            _convertctrl.TargetDevices["Microsoft DV Camera and VCR"].Selected = true;

            // check the target device VCRControl 
            if (_convertctrl.TargetVCRControl == null
               || (_convertctrl.TargetVCRControl.DeviceType == VCRControlDeviceType.NotPresent
                  || _convertctrl.TargetVCRControl.DeviceType == VCRControlDeviceType.Unknown))
               throw new Exception("MS DV Camera's Target VCR control is not present!");

            // subscribe to convert control events for VCR control input
            _convertctrl.Started += new EventHandler(ConvertCtrl_Started);
            _convertctrl.Complete += new EventHandler(ConvertCtrl_Complete);
            _convertctrl.Progress += new ProgressEventHandler(ConvertCtrl_Progress);
            _convertctrl.KeyPress += new Leadtools.Multimedia.KeyPressEventHandler(ConvertCtrl_KeyPress);

            // start the conversion
            _convertctrl.StartConvert();
         }
         catch (Exception)
         {
            _result = false;
         }

         // 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 (_convertctrl.State == ConvertState.Running)
            Application.DoEvents();

         // switch to playback and test
         _testing = true;

         // again, we'll loop and pump messages for this example for 
         // playback testing, (setting _testing == true will exit)
         while (_testing)
            Application.DoEvents();
      }

      void ConvertCtrl_Started(object sender, EventArgs e)
      {
         // start recording
         if (_convertctrl.TargetVCRControl.Mode != VCRControlMode.Record)
         {
            // pause the graph to prevent frame loss
            _convertctrl.PauseConvert();
            // start the record on the VCR control
            _convertctrl.TargetVCRControl.Record();
            // resume graph now
            _convertctrl.RunConvert();
         }

         // get our VCR start timecode
         _startTimeCode = _convertctrl.TargetVCRControl.ReadTimecode();
      }

      void ConvertCtrl_Complete(object sender, EventArgs e)
      {
         // stop recording
         if (_convertctrl.TargetVCRControl.Mode != VCRControlMode.Stop)
            _convertctrl.TargetVCRControl.Stop();

         // get our VCR start timecode
         _stopTimeCode = _convertctrl.TargetVCRControl.ReadTimecode();

         // set the result to what we expect
         _result = (_stopTimeCode > _startTimeCode);
      }

      void ConvertCtrl_KeyPress(object sender, Leadtools.Multimedia.KeyPressEventArgs e)
      {
         // if ok to perform playback functions 
         if (_testing && _convertctrl.TargetVCRControl != null)
         {
            // reference the target VCR control
            VCRControl vcr = _convertctrl.TargetVCRControl;
            switch ((char)e.keyAscii)
            {
               case '*':
                  // seek to the beginning of the capture 
                  if (vcr.Mode != VCRControlMode.Stop)
                     vcr.Stop();
                  vcr.SeekTimecode(_startTimeCode);
                  break;
               case '~':
                  // seek to the end of the capture
                  if (vcr.Mode != VCRControlMode.Stop)
                     vcr.Stop();
                  vcr.SeekTimecode(_stopTimeCode);
                  break;
               case 'p':
                  // start playback
                  if (vcr.Mode != VCRControlMode.Play)
                     vcr.Play();
                  break;
               case 's':
                  // skip ahead 1000 units from the current timecode 
                  vcr.Pause();
                  int tc = vcr.ReadTimecode();
                  vcr.SeekTimecode(tc + 1000);
                  vcr.Play();
                  break;
               case '+':
                  // step forward one frame
                  if (vcr.Mode != VCRControlMode.Pause)
                     vcr.Pause();
                  vcr.StepForward();
                  break;
               case '-':
                  // step backward one frame
                  if (vcr.Mode != VCRControlMode.Pause)
                     vcr.Pause();
                  vcr.StepBackward();
                  break;
               case 'f':
                  // slowest forward
                  vcr.SlowestForward();
                  break;
               case 'r':
                  // slowest reverse
                  vcr.SlowestReverse();
                  break;
               case '>':
                  // fastest forward
                  vcr.FastestForward();
                  break;
               case '<':
                  // fastest reverse
                  vcr.FastestReverse();
                  break;
               case 'x':
                  // stop playback and exit
                  if (vcr.Mode != VCRControlMode.Stop)
                     vcr.Stop();
                  _testing = false;
                  break;
            }
         }
      }

      void ConvertCtrl_Progress(object sender, ProgressEventArgs e)
      {
         if (_convertctrl.TargetVCRControl != null)
         {
            // reference the VCR control
            VCRControl vcr = _convertctrl.TargetVCRControl;

            // get the current time code
            int timeCode = vcr.ReadTimecode();
         }
      }

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

Remarks

This method sets the Mode property to VCRControlMode.StepForward. This method does not support the VCRControlDeviceType.Camera device type. If the method fails, an error is raised. For more information, refer to the Error Codes.

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