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";
}