LiveSource Property

Summary

Gets or sets a value that indicates whether the media source is treated as a live source.

Syntax
C#
C++/CLI
[DispIdAttribute(3)] 
bool LiveSource {get; set;} 
[DispIdAttribute(3)] 
property bool LiveSource { 
   bool get(); 
   void set (    bool ); 
} 

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 of the MaxQueueDuration.

Example
C#
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; 
   } 
} 
Requirements

Target Platforms

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