LEADTOOLS Multimedia (Leadtools.Multimedia assembly) Send comments on this topic. | Back to Introduction | Help Version 17.0.3.22
BitRateLimit Property
See Also 
LMNetMux Namespace > ILMNetMux Interface : BitRateLimit Property



Gets or sets the forced bit rate limit, in bits per second.

Syntax

Visual Basic (Declaration) 
<DispIdAttribute(2)>
Property BitRateLimit As Integer
Visual Basic (Usage)Copy Code
Dim instance As ILMNetMux
Dim value As Integer
 
instance.BitRateLimit = value
 
value = instance.BitRateLimit
C# 
[DispIdAttribute(2)]
int BitRateLimit {get; set;}
C++/CLI 
[DispIdAttribute(2)]
property int BitRateLimit {
   int get();
   void set (    int value);
}

Property Value

An System.Int32 value that represents the forced bit rate limit, in bits per second.

The default value of the bit rate limit is -1, which means that the multiplexer is not restricted to a bit rate.

Example

Visual BasicCopy 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
C#Copy Code
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;
   }
}

Remarks

The multiplexer will output the data at a slower rate, in relation to the input rate, to limit the bit rate. However, the average bit rate may slightly exceed the requested limit.

Requirements

Target Platforms: Microsoft .NET Framework 2.0, Windows 2000, Windows XP, Windows Server 2003 family, Windows Server 2008 family, Windows Vista, Windows 7

See Also