LEADTOOLS Multimedia (Leadtools.Multimedia assembly)

TargetVCRControl Property (CaptureCtrl)

LEADTOOLS SDK Help  |  
Example 



Gets the target VCR control object.
Syntax
public virtual VCRControl TargetVCRControl {get;}
public:
virtual property VCRControl^ TargetVCRControl {
   VCRControl^ get();
}
'Declaration
 
Public Overridable ReadOnly Property TargetVCRControl As VCRControl
 
'Usage
 
Dim instance As CaptureCtrl
Dim value As VCRControl
 
value = instance.TargetVCRControl

Property Value

A VCRControl object.
Remarks
The VCRControl object is used to control VCR functionality available in the target device.
Example
 
Imports Leadtools
Imports Leadtools.Multimedia
Imports LeadtoolsMultimediaExamples.Fixtures

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 18\Media"
End Class
using Leadtools;
using Leadtools.Multimedia;
using LeadtoolsMultimediaExamples.Fixtures;

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 18\Media";
}
Requirements

Target Platforms

See Also

Reference

CaptureCtrl Class
CaptureCtrl Members

 

 


Products | Support | Contact Us | Copyright Notices
© 2006-2014 All Rights Reserved. LEAD Technologies, Inc.

Leadtools.Multimedia requires a Multimedia or Multimedia Suite license and unlock key. For more information, refer to: LEADTOOLS Toolkit Features