MaxQueueDuration Property
Summary
Gets or sets the maximum amount of time, in seconds, that the multiplexer will be allowed to queue data before dropping frames.
Syntax
[DispIdAttribute(5)]
double MaxQueueDuration {get; set;}
<DispIdAttribute(5)>
Property MaxQueueDuration As Double
[DispIdAttribute(5)]
property double MaxQueueDuration {
double get();
void set ( double );
}
Property Value
A System.Double value that represents the maximum amount of time, in seconds, that the multiplexer will be allowed to queue data before dropping frames. The default value is 5.0 seconds.
Example
using Leadtools;
using Leadtools.Multimedia;
using LeadtoolsMultimediaExamples.Fixtures;
public bool _result = false;
public CaptureCtrlForm _form = new CaptureCtrlForm();
public CaptureCtrl _captureCtrl;
const int MaxBitRate = 128;
const int TestBitRate = MaxBitRate + 1;
public void NetworkMultiplexerExample()
{
// reference the capture control
_captureCtrl = _form.CaptureCtrl;
// output file
string outFile = @"ltsf://127.0.0.1:27015";
try
{
// try to find a USB camera
if (_captureCtrl.VideoDevices["Logitech"] == null)
throw new Exception("No Logitech video device available");
_captureCtrl.VideoDevices["Logitech"].Selected = true;
// select a video compressor
_captureCtrl.VideoCompressors.Mpeg4.Selected = true;
// set the target output file
_captureCtrl.TargetFormat = TargetFormatType.NET;
_captureCtrl.TargetFile = outFile;
if (_captureCtrl.IsModeAvailable(CaptureMode.Video))
{
// just 10 seconds of capture time
_captureCtrl.TimeLimit = 10;
_captureCtrl.UseTimeLimit = true;
// ready the capture graph in order to get the LNMetMux instance
_captureCtrl.ReadyCapture(CaptureMode.Video);
// get the network multiplexer reference
LMNetMux pMux = _captureCtrl.GetSubObject(CaptureObject.TargetFilter) as LMNetMux;
if (pMux != null)
{
// set live source (dropping samples is allowed if the sink is not sending fast enough to keep up)
pMux.LiveSource = true;
// atleast 10 seconds for the netmux sample queue
if (pMux.MaxQueueDuration < 10)
pMux.MaxQueueDuration = 10;
// 128 kbps max
pMux.BitRateLimit = MaxBitRate * 1024;
// set the result to what we expect
_result = true;
}
// start capture
_captureCtrl.StartCapture(CaptureMode.Video);
// 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)
{
if (pMux != null)
{
// confirm that the actual bitrate does not exceed our max specified above
_result &= (pMux.BitRate / 1024 < TestBitRate);
}
Application.DoEvents();
}
// release the mux since its a COM object
if (pMux != null)
Marshal.ReleaseComObject(pMux);
}
}
catch (Exception)
{
_result = false;
}
}
Imports Leadtools
Imports Leadtools.Multimedia
Imports LeadtoolsMultimediaExamples.Fixtures
Public _result As Boolean = False
Public _form As CaptureCtrlForm = New CaptureCtrlForm()
Public _captureCtrl As CaptureCtrl
Private Const MaxBitRate As Integer = 128
Private Const TestBitRate As Integer = MaxBitRate + 1
Public Sub NetworkMultiplexerExample()
' reference the capture control
_captureCtrl = _form.CaptureCtrl
' output file
Dim outFile As String = "ltsf://127.0.0.1:27015"
Try
' try to find a USB camera
If _captureCtrl.VideoDevices("Logitech") Is Nothing Then
Throw New Exception("No Logitech video device available")
End If
_captureCtrl.VideoDevices("Logitech").Selected = True
' select a video compressor
_captureCtrl.VideoCompressors.Mpeg4.Selected = True
' set the target output file
_captureCtrl.TargetFormat = TargetFormatType.NET
_captureCtrl.TargetFile = outFile
If _captureCtrl.IsModeAvailable(CaptureMode.Video) Then
' just 10 seconds of capture time
_captureCtrl.TimeLimit = 10
_captureCtrl.UseTimeLimit = True
' ready the capture graph in order to get the LNMetMux instance
_captureCtrl.ReadyCapture(CaptureMode.Video)
' get the network multiplexer reference
Dim pMux As LMNetMux = TryCast(_captureCtrl.GetSubObject(CaptureObject.TargetFilter), LMNetMux)
If Not pMux Is Nothing Then
' set live source (dropping samples is allowed if the sink is not sending fast enough to keep up)
pMux.LiveSource = True
' atleast 10 seconds for the netmux sample queue
If pMux.MaxQueueDuration < 10 Then
pMux.MaxQueueDuration = 10
End If
' 128 kbps max
pMux.BitRateLimit = MaxBitRate * 1024
' set the result to what we expect
_result = True
End If
' start capture
_captureCtrl.StartCapture(CaptureMode.Video)
' 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
If Not pMux Is Nothing Then
' confirm that the actual bitrate does not exceed our max specified above
_result = _result And (pMux.BitRate / 1024 < TestBitRate)
End If
Application.DoEvents()
Loop
' release the mux since its a COM object
If Not pMux Is Nothing Then
Marshal.ReleaseComObject(pMux)
End If
End If
Catch e1 As Exception
_result = False
End Try
End Sub