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

LiveSource Property

Example 





Gets or sets a value that indicates whether the media source is treated as a live source.
Syntax
[DispIdAttribute(3)]
bool LiveSource {get; set;}
'Declaration
 
<DispIdAttribute(3)>
Property LiveSource As Boolean
'Usage
 
Dim instance As ILMNetMux
Dim value As Boolean
 
instance.LiveSource = value
 
value = instance.LiveSource
[DispIdAttribute(3)]
bool LiveSource {get; set;}
DispIdAttribute(3)
get_LiveSource();
set_LiveSource(value);
[DispIdAttribute(3)]
property bool LiveSource {
   bool get();
   void set (    bool value);
}

Property Value

true if the source is treated as a live source; otherwise it is false if the source is not live.
Remarks

If the media source is a live source, dropping samples is allowed if the output is lagging behind the source.

If the media source is NOT live, the multiplexer will buffer more samples to keep up with the source.

This uses the MaxQueueDuration value to determine when to drop samples. In a live capture situation the multiplexer will drop samples in attempt to prevent the video stream from halting before the MaxQueueDuration is reached. The Leadtools Multiplexer will start dropping samples at 2/3 * MaxQueueDuration.

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.