Leadtools.Multimedia Namespace > AnalogVideoDecoder Class : NumberOfLines Property |
'Declaration Public ReadOnly Property NumberOfLines As Integer
'Usage Dim instance As AnalogVideoDecoder Dim value As Integer value = instance.NumberOfLines
public int NumberOfLines {get;}
This property is updated with the number of scan lines in the video signal. The retrieved value is generally 525 lines for NTSC and 625 lines for PAL or SECAM.
For more detailed information, refer to the Microsoft documentation for IAMAnalogVideoDecoder.get_NumberOfLines.
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:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media" End Class
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:\Program Files (x86)\LEAD Technologies\LEADTOOLS 18\Media"; }