LEADTOOLS Multimedia (Leadtools.Multimedia assembly)
LEAD Technologies, Inc

MaxQueueDuration Property

Example 





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;}
'Declaration
 
<DispIdAttribute(5)>
Property MaxQueueDuration As Double
'Usage
 
Dim instance As ILMNetMux
Dim value As Double
 
instance.MaxQueueDuration = value
 
value = instance.MaxQueueDuration
[DispIdAttribute(5)]
double MaxQueueDuration {get; set;}
DispIdAttribute(5)
get_MaxQueueDuration();
set_MaxQueueDuration(value);
[DispIdAttribute(5)]
property double MaxQueueDuration {
   double get();
   void set (    double value);
}

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
Copy CodeCopy Code  
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
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;
   }
}
Requirements

Target Platforms: Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2

See Also

Reference

ILMNetMux Interface
ILMNetMux Members

 

 


Products | Support | Contact Us | Copyright Notices

© 2006-2012 All Rights Reserved. LEAD Technologies, Inc.