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



This method reads the time code.

Syntax

Visual Basic (Declaration) 
Public Function ReadTimecode() As Integer
Visual Basic (Usage)Copy Code
Dim instance As VCRControl
Dim value As Integer
 
value = instance.ReadTimecode()
C# 
public int ReadTimecode()
C++/CLI 
public:
int ReadTimecode(); 

Return Value

The current time code in the following format: Hours, minutes, seconds, and frames, as a binary coded decimal (BCD) value: Hhhmmssff.

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 reads the time code. 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