You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
79 lines
2.0 KiB
79 lines
2.0 KiB
13 years ago
|
using System;
|
||
|
using System.Collections.Generic;
|
||
|
using System.Linq;
|
||
|
using System.Text;
|
||
|
using AForge;
|
||
|
using AForge.Video;
|
||
|
using AForge.Video.DirectShow;
|
||
|
|
||
|
namespace ArdupilotMega.Utilities
|
||
|
{
|
||
|
public class Video
|
||
|
{
|
||
|
private static FilterInfoCollection videoDevices;
|
||
|
private static AsyncVideoSource asyncSource;
|
||
|
|
||
|
public static bool isRunning { get { if (asyncSource == null) return false; return asyncSource.IsRunning; } }
|
||
|
|
||
|
public static List<string> getDevices()
|
||
|
{
|
||
|
List<string> list = new List<string>();
|
||
|
// Get the collection of video devices
|
||
|
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
|
||
|
|
||
|
foreach (FilterInfo dev in videoDevices)
|
||
|
{
|
||
|
list.Add(dev.Name);
|
||
|
}
|
||
|
|
||
|
return list;
|
||
|
}
|
||
|
|
||
|
public static void Start(VideoCaptureDevice videoSource)
|
||
|
{
|
||
|
videoDevices = new FilterInfoCollection(FilterCategory.VideoInputDevice);
|
||
|
|
||
|
//VideoCaptureDevice videoSource = new VideoCaptureDevice(videoDevices[Device].MonikerString);
|
||
|
videoSource.DesiredFrameRate = 25;
|
||
|
|
||
|
|
||
|
asyncSource = new AsyncVideoSource(videoSource, true);
|
||
|
|
||
|
asyncSource.NewFrame += new NewFrameEventHandler(asyncSource_NewFrame);
|
||
|
asyncSource.Start();
|
||
|
|
||
|
}
|
||
|
|
||
|
static void asyncSource_NewFrame(object sender, NewFrameEventArgs eventArgs)
|
||
|
{
|
||
|
//GCSViews.FlightData.cam_camimage(eventArgs.Frame);
|
||
|
if (MainV2.instance.IsDisposed)
|
||
|
Dispose();
|
||
|
}
|
||
|
|
||
|
public static void Stop()
|
||
|
{
|
||
|
Dispose();
|
||
|
}
|
||
|
|
||
|
/// <summary> release everything. </summary>
|
||
|
public static void Dispose()
|
||
|
{
|
||
|
try
|
||
|
{
|
||
|
asyncSource.Stop();
|
||
|
|
||
|
asyncSource = null;
|
||
|
}
|
||
|
catch { }
|
||
|
|
||
|
asyncSource_NewFrame(null, new NewFrameEventArgs(null));
|
||
|
}
|
||
|
|
||
|
~Video()
|
||
|
{
|
||
|
Dispose();
|
||
|
}
|
||
|
}
|
||
|
}
|