public MediaSample GetSample(int lTimeout)
public:MediaSample^ GetSample(int lTimeout)
lTimeout
A timeout value specifying the maximum time to wait for the sample, in milliseconds.
A MediaSample object
If the method fails, an error is raised. For more information, refer to the Error Codes.
Common errors:
using Leadtools;using Leadtools.Multimedia;using LeadtoolsMultimediaExamples.Fixtures;public bool _result = false;public CaptureCtrlForm _form = new CaptureCtrlForm();public void CaptureFrameExample(){// reference the capture controlCaptureCtrl capturectrl = _form.CaptureCtrl;// output filestring outFile = Path.Combine(LEAD_VARS.MediaDir, "CaptureCtrl_CaptureFrameExample.bmp");try{// set the video capture device, use your capture device name hereif (capturectrl.VideoDevices["USB"] == null)throw new Exception("No USB video device available");capturectrl.VideoDevices["USB"].Selected = true;// create a new sample targetSampleTarget st = new SampleTarget();// set the target media type for the video streamMediaType amt = new MediaType();amt.Type = Constants.MEDIATYPE_Video;amt.SubType = Constants.MEDIASUBTYPE_RGB24;st.SetAcceptedMediaType(amt);// assign the sample target to the capture controlcapturectrl.TargetObject = st;capturectrl.TargetFormat = TargetFormatType.AVI;// prepare the manual frames capturecapturectrl.ReadyCapture(CaptureMode.ManualFrames);// do something before the capture startsif (capturectrl.IsModeAvailable(CaptureMode.ManualFrames)){}// set the capture mode to manual framescapturectrl.StartCapture(CaptureMode.ManualFrames);// capture a framecapturectrl.CaptureFrame();// create a media sample using the captured sample from aboveMediaSample ms = st.GetSample(-1);// get the sample target's connected media typeMediaType mt = st.GetConnectedMediaType();Bitmap bmp = WriteSampleBitmap(outFile, ms, mt);// stop the capturecapturectrl.StopCapture();// check for the capture file and set the resultif (File.Exists(outFile)){Image test = Bitmap.FromFile(outFile);_result = (test.Width == bmp.Width && test.Height == bmp.Height && test.PixelFormat == bmp.PixelFormat);}}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 Bitmap WriteSampleBitmap(string outFile, MediaSample ms, MediaType mt){// get the video informationVideoInfoHeader vih = mt.GetVideoFormatData();// create a bitmap to hold the sample and copy itBitmap bmp = new Bitmap(vih.bmiHeader.biWidth, vih.bmiHeader.biHeight, FormatFromBitCount(vih.bmiHeader.biBitCount));BitmapData bmpData = bmp.LockBits(new Rectangle(0, 0, bmp.Width, bmp.Height), ImageLockMode.ReadWrite, bmp.PixelFormat);int bitmapSize = GetBitmapSize(bmp, vih.bmiHeader.biBitCount);if(bitmapSize <= ms.BufferSize)Marshal.Copy(ms.Buffer, 0, bmpData.Scan0, bitmapSize);bmp.UnlockBits(bmpData);// flip the upside down bufferbmp.RotateFlip(RotateFlipType.Rotate180FlipX);// save the imagebmp.Save(outFile, ImageFormat.Bmp);return bmp;}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:\LEADTOOLS23\Media";}
Help Collections
Raster .NET | C API | C++ Class Library | HTML5 JavaScript
Document .NET | C API | C++ Class Library | HTML5 JavaScript
Medical .NET | C API | C++ Class Library | HTML5 JavaScript
Medical Web Viewer .NET
Multimedia
Direct Show .NET | C API | Filters
Media Foundation .NET | C API | Transforms
Supported Platforms
.NET, Java, Android, and iOS/macOS Assemblies
Imaging, Medical, and Document
C API/C++ Class Libraries
Imaging, Medical, and Document
HTML5 JavaScript Libraries
Imaging, Medical, and Document
