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
C#
VB
C++
[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.

Remarks

The MaxQueueDuration sets the amount of data that is allowed to be buffered. If this value is exceeded frames will be pruned until the network performance improves. An alternative to increasing network performance would be to reduce the output of multiplexer. This prevents the queue from growing to large sizes if the output stage is slower than the input stage.

Example
C#
VB
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 

Requirements

Target Platforms

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