CaptureFrame Method

Summary
Captures a single frame during a CaptureMode.ManualFrames mode capture.
Syntax
C#
VB
C++
public virtual void CaptureFrame() 
Public Overridable Sub CaptureFrame()  
public: 
virtual void CaptureFrame();  
Remarks

If the method fails, an error will be raised. For more information, refer to the Error Codes.

Example
C#
VB
using Leadtools; 
using Leadtools.MediaFoundation; 
using LeadtoolsMediaFoundationExamples.Fixtures; 
 
public bool _result = false; 
public CaptureCtrlForm _form = new CaptureCtrlForm(); 
 
public void CaptureFrameExample() 
{ 
   // reference the capture control 
   CaptureCtrl capturectrl = _form.CaptureCtrl; 
 
   // output file 
   string outFile = Path.Combine(LEAD_VARS.MediaDir, "CaptureCtrl_CaptureFrameExample.bmp"); 
 
   try 
   { 
      // set the video capture device, use your capture device name here 
      if (capturectrl.VideoDevices["Logitech"] == null) 
         throw new Exception("No Logitech video device available"); 
 
      capturectrl.VideoDevices["Logitech"].Selected = true; 
 
      capturectrl.TargetFormat = TargetFormatType.MP4; 
 
      // prepare the manual frames capture 
      capturectrl.ReadyCapture(CaptureMode.ManualFrames); 
 
      // do something before the capture starts 
      if (capturectrl.IsModeAvailable(CaptureMode.ManualFrames)) 
      { 
      } 
 
      // set the capture mode to manual frames 
      capturectrl.StartCapture(CaptureMode.ManualFrames); 
 
      // capture a frame 
      capturectrl.CaptureFrame(); 
 
      // stop the capture 
      capturectrl.StopCapture(); 
 
      // check for the capture file and set the result 
      if (File.Exists(outFile)) 
      { 
         Image test = Bitmap.FromFile(outFile); 
         _result = true; 
      } 
   } 
   catch (COMException) 
   { 
      _result = false; 
   } 
   catch (Exception) 
   { 
      _result = false; 
   } 
 
   // 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) 
      Application.DoEvents(); 
} 
 
private PixelFormat FormatFromBitCount(int bitCount) 
{ 
   switch (bitCount) 
   { 
      case 8: 
         return PixelFormat.Format8bppIndexed; 
      case 16: 
         return PixelFormat.Format16bppRgb555; 
      case 32: 
         return PixelFormat.Format32bppRgb; 
      case 48: 
         return PixelFormat.Format48bppRgb; 
      case 24: 
         return PixelFormat.Format24bppRgb; 
   } 
   throw new Exception("Unrecognized bit count"); 
} 
 
private int GetBitmapSize(Bitmap bmp, int bitCount) 
{ 
   int pixelSize = (int)Math.Log((double)bitCount); 
   return (bmp.Width * pixelSize + pixelSize & ~3) * bmp.Height; 
} 
 
private int GetBitmapScanRowSize(int bmpSize, int stride, int width) 
{ 
   return bmpSize / (stride / width); 
} 
 
public void CaptureFrame_Helper(object sender, EventArgs e) 
{ 
   // set result 
   _result = true; 
} 
 
static class LEAD_VARS 
{ 
   public const string MediaDir = @"C:\LEADTOOLS21\Media"; 
} 
Imports Leadtools 
Imports Leadtools.MediaFoundation 
Imports LeadtoolsMediaFoundationExamples.Fixtures 
 
Public _result As Boolean = False 
Public _form As New CaptureCtrlForm() 
 
Public Sub CaptureFrameExample() 
   ' reference the capture control 
   Dim capturectrl As CaptureCtrl = _form.CaptureCtrl 
 
   ' output file 
   Dim outFile As String = Path.Combine(LEAD_VARS.MediaDir, "CaptureCtrl_CaptureFrameExample.bmp") 
 
   Try 
      ' set the video capture device, use your capture device name here 
      If capturectrl.VideoDevices("Logitech") Is Nothing Then 
         Throw New Exception("No Logitech video device available") 
      End If 
 
      capturectrl.VideoDevices("Logitech").Selected = True 
 
      capturectrl.TargetFormat = TargetFormatType.MP4 
 
      ' prepare the manual frames capture 
      capturectrl.ReadyCapture(CaptureMode.ManualFrames) 
 
      ' do something before the capture starts 
      If capturectrl.IsModeAvailable(CaptureMode.ManualFrames) Then 
      End If 
 
      ' set the capture mode to manual frames 
      capturectrl.StartCapture(CaptureMode.ManualFrames) 
 
      ' capture a frame 
      capturectrl.CaptureFrame() 
 
      ' stop the capture 
      capturectrl.StopCapture() 
 
      ' check for the capture file and set the result 
      If File.Exists(outFile) Then 
         Dim test As Image = Bitmap.FromFile(outFile) 
         _result = True 
      End If 
   Catch generatedExceptionName As COMException 
      _result = False 
   Catch generatedExceptionName As Exception 
      _result = False 
   End Try 
 
   ' 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 
      Application.DoEvents() 
   End While 
End Sub 
 
Private Function FormatFromBitCount(ByVal bitCount As Integer) As PixelFormat 
   Select Case bitCount 
      Case 8 
         Return PixelFormat.Format8bppIndexed 
      Case 16 
         Return PixelFormat.Format16bppRgb555 
      Case 32 
         Return PixelFormat.Format32bppRgb 
      Case 48 
         Return PixelFormat.Format48bppRgb 
      Case 24 
         Return PixelFormat.Format24bppRgb 
   End Select 
   Throw New Exception("Unrecognized bit count") 
End Function 
 
Private Function GetBitmapSize(ByVal bmp As Bitmap, ByVal bitCount As Integer) As Integer 
   Dim pixelSize As Integer = CInt(Math.Log(CDbl(bitCount))) 
   Return (bmp.Width * pixelSize + pixelSize And Not 3) * bmp.Height 
End Function 
 
Private Function GetBitmapScanRowSize(ByVal bmpSize As Integer, ByVal stride As Integer, ByVal width As Integer) As Integer 
   Return bmpSize / (stride / width) 
End Function 
 
Public Sub CaptureFrame_Helper(ByVal sender As Object, ByVal e As EventArgs) 
   ' set result 
   _result = True 
End Sub 
 
Public NotInheritable Class LEAD_VARS 
   Public Const MediaDir As String = "C:\LEADTOOLS21\Media" 
End Class 
Requirements

Target Platforms

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

Leadtools.MediaFoundation Assembly