public int VideoSubChannel { get; }
Public ReadOnly Property VideoSubChannel As Integer
public:
property int VideoSubChannel {
int get();
}
A TunerSubChannel enumeration value if default or not tuned; otherwise the current video sub-channel. For a list of frequencies for channels, refer to the Microsoft documentation on International Analog TV Tuning.
Gets the current video sub-channel. This property is valid only for ATSC digital TV broadcasts.
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
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document