AudioSubChannel Property

Summary
Gets the currently set audio subchannel.
Syntax
C#
VB
C++
public int AudioSubChannel { get; } 
Public ReadOnly Property AudioSubChannel As Integer 
public: 
property int AudioSubChannel { 
   int get(); 
} 

Property Value

A TunerSubChannel enumeration value if default or not tuned; otherwise the current audio subchannel. For a list of frequencies for channels, refer to the Microsoft documentation on International Analog TV Tuning.

Remarks

Gets the currently set audio subchannel. This property is valid only for ATSC digital TV broadcasts.

Example
C#
VB
using Leadtools; 
using Leadtools.MediaFoundation; 
using LeadtoolsMediaFoundationExamples.Fixtures; 
 
public bool _result = false; 
public CaptureCtrlForm _form = new CaptureCtrlForm(); 
 
public void DigitalTVTunerExample() 
{ 
   // reference the forms capture control and tv tuner 
   CaptureCtrl capturectrl = _form.CaptureCtrl; 
 
   string outFile = Path.Combine(LEAD_VARS.MediaDir, "TVTuner_DigitalTVTunerExample.wmv"); 
 
   int mainChannel = 27; 
   int subChannel = -1; 
   int newSubChannel = -1; 
   int[] subChannelList = null; 
 
   try 
   { 
      capturectrl.Preview = true; 
      // select the first digital tuner device with BDA in it's name  
      // Replace "BDA" with your video capture device name  
      if (capturectrl.VideoDevices["BDA"] != null) 
         capturectrl.VideoDevices["BDA"].Selected = true; 
 
      // get the TV Tuner device  
      TVTuner tvTuner = capturectrl.TVTuner; 
 
      // Check if TV tuner is valid  
      if (tvTuner != null) 
      { 
         // set the input type to cable and set the channel  
         tvTuner.SetInputType(0, TunerInputType.Antenna); 
         tvTuner.SetChannel(mainChannel, -1, -1); 
 
         // get the current video sub channel 
         subChannel = tvTuner.VideoSubChannel; 
 
         // list the sub-channels for the main channle first 
         if (tvTuner.VideoSubChannelCount > 0) 
         { 
            System.Diagnostics.Debug.WriteLine(" Main Channel: " + mainChannel); 
            subChannelList = new int[tvTuner.VideoSubChannelCount]; 
            for (int i = 0; i < tvTuner.VideoSubChannelCount; i++) 
            { 
               subChannelList[i] = tvTuner.VideoSubChannelValue(i); 
               System.Diagnostics.Debug.WriteLine(" Sub Channel: " + subChannelList[i]); 
            } 
         } 
 
         // select the first sub-channel in the list 
         if (subChannelList != null && subChannelList.Length > 0) 
         { 
            tvTuner.SetChannel(mainChannel, subChannelList[0], -1); 
            mainChannel = tvTuner.Channel; 
            newSubChannel = tvTuner.VideoSubChannel; 
            System.Diagnostics.Debug.WriteLine("Selected Channel: " + mainChannel + "." + subChannel); 
         } 
 
         // if the Main and Sub channel value are postive,  
         // it means tv tuner is happay and dandy, let starts capture 
         if (mainChannel > 0 && subChannel > 0) 
         { 
            System.Diagnostics.Debug.WriteLine("Start Capturing"); 
            capturectrl.TimeLimit = 30;     // just 30 seconds of capture time  
            capturectrl.UseTimeLimit = true; 
 
            capturectrl.TargetFormat = TargetFormatType.WMV; 
            capturectrl.TargetFile = outFile; 
 
            capturectrl.StartCapture(CaptureMode.VideoAndAudio); 
         } 
      } 
 
      // 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 (capturectrl.State == CaptureState.Running) 
         Application.DoEvents(); 
 
      System.Diagnostics.Debug.WriteLine("Finish Capturing"); 
 
      // if TV tuner is valid  
      if (tvTuner != null) 
      { 
         // and set the result to what we expect  
         _result = (subChannel != newSubChannel); 
      } 
   } 
   catch (Exception ex) 
   { 
      _result = false; 
      System.Diagnostics.Debug.WriteLine(ex); 
   } 
} 
 
static class LEAD_VARS 
{ 
   public const string MediaDir = @"C:\LEADTOOLS21\Media"; 
} 
Imports Leadtools 
Imports Leadtools.MediaFoundation 
Imports LeadtoolsMediaFoundationExamples.Fixtures 
 
Public _result As Boolean = False 
Public _form As CaptureCtrlForm = New CaptureCtrlForm() 
 
Public Sub DigitalTVTunerExample() 
   ' reference the forms capture control and tv tuner 
   Dim capturectrl As CaptureCtrl = _form.CaptureCtrl 
 
   Dim outFile As String = Path.Combine(LEAD_VARS.MediaDir, "TVTuner_DigitalTVTunerExample.wmv") 
 
   Dim mainChannel As Integer = 27 
   Dim subChannel As Integer = -1 
   Dim newSubChannel As Integer = -1 
   Dim subChannelList As Integer() = Nothing 
 
   Try 
      capturectrl.Preview = True 
      ' select the first digital tuner device with BDA in it's name  
      ' Replace "BDA" with your video capture device name  
      If Not capturectrl.VideoDevices("BDA") Is Nothing Then 
         capturectrl.VideoDevices("BDA").Selected = True 
      End If 
 
      ' get the TV Tuner device  
      Dim tvTuner As TVTuner = capturectrl.TVTuner 
 
      ' Check if TV tuner is valid  
      If Not tvTuner Is Nothing Then 
         ' set the input type to cable and set the channel  
         tvTuner.SetInputType(0, TunerInputType.Antenna) 
         tvTuner.SetChannel(mainChannel, -1, -1) 
 
         ' get the current video sub channel 
         subChannel = tvTuner.VideoSubChannel 
 
         ' list the sub-channels for the main channle first 
         If tvTuner.VideoSubChannelCount > 0 Then 
            System.Diagnostics.Debug.WriteLine(" Main Channel: " & mainChannel) 
            subChannelList = New Integer(tvTuner.VideoSubChannelCount - 1) {} 
            Dim i As Integer = 0 
            Do While i < tvTuner.VideoSubChannelCount 
               subChannelList(i) = tvTuner.VideoSubChannelValue(i) 
               System.Diagnostics.Debug.WriteLine(" Sub Channel: " & subChannelList(i)) 
               i += 1 
            Loop 
         End If 
 
         ' select the first sub-channel in the list 
         If Not subChannelList Is Nothing AndAlso subChannelList.Length > 0 Then 
            tvTuner.SetChannel(mainChannel, subChannelList(0), -1) 
            mainChannel = tvTuner.Channel 
            newSubChannel = tvTuner.VideoSubChannel 
            System.Diagnostics.Debug.WriteLine("Selected Channel: " & mainChannel & "." & subChannel) 
         End If 
 
         ' if the Main and Sub channel value are postive, it means tv tuner is happay and dandy, let starts capture 
         If mainChannel > 0 AndAlso subChannel > 0 Then 
            System.Diagnostics.Debug.WriteLine("Start Capturing") 
            capturectrl.TimeLimit = 30 ' just 30 seconds of capture time 
            capturectrl.UseTimeLimit = True 
 
            capturectrl.TargetFormat = TargetFormatType.WMV 
            capturectrl.TargetFile = outFile 
 
            capturectrl.StartCapture(CaptureMode.VideoAndAudio) 
         End If 
      End If 
 
      ' 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 capturectrl.State = CaptureState.Running 
         Application.DoEvents() 
      Loop 
 
      System.Diagnostics.Debug.WriteLine("Finish Capturing") 
 
      ' if TV tuner is valid  
      If Not tvTuner Is Nothing Then 
         ' and set the result to what we expect  
         _result = (subChannel <> newSubChannel) 
      End If 
   Catch ex As Exception 
      _result = False 
      System.Diagnostics.Debug.WriteLine(ex) 
   End Try 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const MediaDir As String = "C:\LEADTOOLS21\Media" 
End Class 
Requirements

Target Platforms

See Also

Reference

TVTuner Class

TVTuner Members

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

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