TargetVCRControl Property (original) (raw)

Summary

Gets the target VCR control object.

Example

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.Selection = -1; _convertctrl.AudioCompressors.Selection = -1; // 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; return; } // 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:\LEADTOOLS23\Media"; }