VCRHorizontalLocking Property

Summary
Gets or sets a value that indicates whether the decoder is expecting video from a tape source or a broadcast source.
Syntax
C#
VB
C++
public bool VCRHorizontalLocking { get; set; } 
Public Property VCRHorizontalLocking As Boolean 
public: 
property bool VCRHorizontalLocking { 
   bool get(); 
   void set (    bool ); 
} 

Property Value

true if the decoder expects video from a tape source; otherwise, false if the decoder expects video from a broadcast source.

Remarks

The timing accuracy of synchronization pulses are typically lower quality from a tape source than from a broadcast source. Setting the value to true tells the decoder to relax its standards. The lower standards provide a better chance of maintaining sync.

For more detailed information, refer to the Microsoft documentation for IAMAnalogVideoDecoder.get_VCRHorizontalLocking.

Example
C#
VB
using Leadtools; 
using Leadtools.Multimedia; 
using LeadtoolsMultimediaExamples.Fixtures; 
 
public bool _result = false; 
public CaptureCtrlForm _form = new CaptureCtrlForm(); 
 
public void AvailableTVFormatsExample() 
{ 
   try 
   { 
      // reference the forms capture control 
      CaptureCtrl capturectrl = _form.CaptureCtrl; 
 
      string outFile = Path.Combine(LEAD_VARS.MediaDir, "AnalogVideoDecoder_AvailableTVFormatsExample.avi"); 
      int lines = 0; 
      bool allResults = true; 
 
      // select the first device with the word "analog" in its name 
      // Replace "Analog" with the name of your tuner device 
      if (capturectrl.VideoDevices["Analog"] == null) 
         throw new Exception("No analog video capture device available"); 
 
      capturectrl.VideoDevices["Analog"].Selected = true; 
 
      AnalogVideoDecoder analogvideodecoder = capturectrl.AnalogVideoDecoder; 
      AnalogVideoStandard availableFormats = analogvideodecoder.AvailableTVFormats; 
      AnalogVideoStandard tvFormat = analogvideodecoder.TVFormat; 
 
      // check whether the format is NTSC and set it if not 
      if (tvFormat != AnalogVideoStandard.NTSC_M_J 
         && (availableFormats & AnalogVideoStandard.NTSC_M_J) == AnalogVideoStandard.NTSC_M_J) 
      { 
         // set the analog video decoder TV format 
         analogvideodecoder.TVFormat = AnalogVideoStandard.NTSC_M_J; 
 
         // check the changed format 
         allResults &= (analogvideodecoder.TVFormat == AnalogVideoStandard.NTSC_M_J); 
      } 
 
      // check whether Horizontal Locked is enabled 
      bool vLocked = capturectrl.AnalogVideoDecoder.HorizontalLocked; 
 
      // Some video device's Analog Decoder implementations do not 
      // support the following properties, so we wrap these property  
      // accesses with a special try block to catch possible exceptions 
      try 
      { 
         // check whether VCR Horizontal Sync locking is enabled and set it if not 
         bool vcrLocked = capturectrl.AnalogVideoDecoder.VCRHorizontalLocking; 
         if (!vcrLocked) 
         { 
            // set VCR horzontal sync locking 
            capturectrl.AnalogVideoDecoder.VCRHorizontalLocking = true; 
 
            // include this as one of our checks 
            allResults &= capturectrl.AnalogVideoDecoder.VCRHorizontalLocking; 
         } 
 
         // check whether output enabled is set and set it if not 
         bool outputEnabled = capturectrl.AnalogVideoDecoder.OutputEnable; 
         if (!outputEnabled) 
         { 
            // enable output 
            capturectrl.AnalogVideoDecoder.OutputEnable = true; 
 
            // include this as one of our checks 
            allResults &= capturectrl.AnalogVideoDecoder.OutputEnable; 
         } 
      } 
      catch (COMException cex) 
      { 
         // if the device does not support the properties above 
         // skip it and do not fail 
         if (cex.ErrorCode != (int)ErrorCode.E_PROP_ID_UNSUPPORTED 
            && cex.ErrorCode != (int)ErrorCode.E_PROP_SET_UNSUPPORTED) 
            throw cex; 
      } 
 
      int tries = 0; 
 
      // check scan line count a few times  
      // initial frames may differ from format spec, until frame data  
      // has propogated through the capture graph 
      while (lines != 525 && tries++ < 10) 
      { 
         // get the number of scan lines in the output format 
         lines = capturectrl.AnalogVideoDecoder.NumberOfLines; 
         System.Diagnostics.Debug.WriteLine("TV Format: " 
                                            + analogvideodecoder.TVFormat.ToString() 
                                            + ", Scan Lines: " 
                                            + lines.ToString()); 
      } 
 
      // include the line count check 
      allResults &= (lines == 525 && tries < 10); 
      System.Diagnostics.Debug.WriteLine("Tries: " + tries.ToString()); 
 
      // test results 
      _result = allResults; 
   } 
   catch (Exception) 
   { 
      _result = false; 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string MediaDir = @"C:\LEADTOOLS21\Media"; 
} 
Imports Leadtools 
Imports Leadtools.Multimedia 
Imports LeadtoolsMultimediaExamples.Fixtures 
 
Public _result As Boolean = False 
Public _form As CaptureCtrlForm = New CaptureCtrlForm() 
 
Public Sub AvailableTVFormatsExample() 
   Try 
      ' reference the forms capture control 
      Dim capturectrl As CaptureCtrl = _form.CaptureCtrl 
 
      Dim outFile As String = Path.Combine(LEAD_VARS.MediaDir, "AnalogVideoDecoder_AvailableTVFormatsExample.avi") 
      Dim lines As Integer = 0 
      Dim allResults As Boolean = True 
 
      ' select the first device with analog in it's name 
      ' Replace "Analog" with your tuner device name 
      If capturectrl.VideoDevices("Analog") Is Nothing Then 
         Throw New Exception("No analog video capture device available") 
      End If 
 
      capturectrl.VideoDevices("Analog").Selected = True 
 
      Dim analogvideodecoder As AnalogVideoDecoder = capturectrl.AnalogVideoDecoder 
      Dim availableFormats As AnalogVideoStandard = analogvideodecoder.AvailableTVFormats 
      Dim tvFormat As AnalogVideoStandard = analogvideodecoder.TVFormat 
 
      ' Check if format is NTSC and set it if not 
      If tvFormat <> AnalogVideoStandard.NTSC_M_J AndAlso (availableFormats And 
                                                           AnalogVideoStandard.NTSC_M_J) = 
                                                           AnalogVideoStandard.NTSC_M_J Then 
         ' set the analog video decoder TV format 
         analogvideodecoder.TVFormat = AnalogVideoStandard.NTSC_M_J 
 
         ' check the changed format 
         allResults = allResults And (analogvideodecoder.TVFormat = AnalogVideoStandard.NTSC_M_J) 
      End If 
 
      ' Check if Horizontal Locked is enabled 
      Dim vLocked As Boolean = capturectrl.AnalogVideoDecoder.HorizontalLocked 
 
      ' Some video device's Analog Decoder implementations do not 
      ' support the following properties, so we wrap these property  
      ' accesses with a special try block to catch possible exceptions 
      Try 
         ' Check if VCR Horizontal Sync locking is enabled and set if not 
         Dim vcrLocked As Boolean = capturectrl.AnalogVideoDecoder.VCRHorizontalLocking 
         If (Not vcrLocked) Then 
            ' set VCR horzontal sync locking 
            capturectrl.AnalogVideoDecoder.VCRHorizontalLocking = True 
 
            ' include this as one of our checks 
            allResults = allResults And capturectrl.AnalogVideoDecoder.VCRHorizontalLocking 
         End If 
 
         ' Check if output enabled is set and set if not 
         Dim outputEnabled As Boolean = capturectrl.AnalogVideoDecoder.OutputEnable 
         If (Not outputEnabled) Then 
            ' enable output 
            capturectrl.AnalogVideoDecoder.OutputEnable = True 
 
            ' include this as one of our checks 
            allResults = allResults And capturectrl.AnalogVideoDecoder.OutputEnable 
         End If 
      Catch cex As COMException 
         ' if the device does not support the properties above 
         ' skip it and dont fail 
         If cex.ErrorCode <> CInt(ErrorCode.E_PROP_ID_UNSUPPORTED) AndAlso cex.ErrorCode <> CInt(ErrorCode.E_PROP_SET_UNSUPPORTED) Then 
            Throw cex 
         End If 
      End Try 
 
      Dim tries As Integer = 0 
 
      ' check scan line count a few times  
      ' initial frames may differ from format spec, until frame data  
      ' has propogated through the capture graph 
      Do While lines <> 525 AndAlso tries < 10 
         ' get the number of scan lines in the output format 
         lines = capturectrl.AnalogVideoDecoder.NumberOfLines 
         System.Diagnostics.Debug.WriteLine("TV Format: " & analogvideodecoder.TVFormat.ToString() & ", Scan Lines: " & lines.ToString()) 
         tries += 1 
      Loop 
 
      ' include the line count check 
      allResults = allResults And (lines = 525 AndAlso tries < 10) 
      System.Diagnostics.Debug.WriteLine("Tries: " & tries.ToString()) 
 
      ' test results 
      _result = allResults 
   Catch e1 As Exception 
      _result = False 
   End Try 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const MediaDir As String = "C:\LEADTOOLS21\Media" 
End Class 
Requirements

Target Platforms

Help Version 21.0.2021.7.2
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.

Leadtools.Multimedia Assembly
Products | Support | Contact Us | Intellectual Property Notices
© 1991-2021 LEAD Technologies, Inc. All Rights Reserved.