using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; using Iisu; namespace bbiwarg.InputProviders { class InputProvider { public int ImageWidth { get; private set; } public int ImageHeight { get; private set; } public virtual int CurrentFrame { get { return frameCounter; }} protected int frameCounter = 0; protected IHandle handle; protected IDevice device; protected IDataHandle depthImage; protected IDataHandle confidenceImage; ~InputProvider() { device.Stop(true); } public void initialize() { createDevice(); registerHandles(); device.Start(); device.UpdateFrame(true); ImageWidth = (int)depthImage.Value.ImageInfos.Width; ImageHeight = (int)depthImage.Value.ImageInfos.Height; device.ReleaseFrame(); } protected void createDevice() { handle = Iisu.Iisu.Context.CreateHandle(); IDeviceConfiguration conf = createDeviceConfiguration(); device = handle.InitializeDevice(conf); } protected virtual IDeviceConfiguration createDeviceConfiguration() { return handle.CreateDeviceConfiguration(); } protected virtual void registerHandles() { depthImage = device.RegisterDataHandle("SOURCE.CAMERA.DEPTH.Image"); confidenceImage = device.RegisterDataHandle("SOURCE.CAMERA.CONFIDENCE.Image"); } public InputFrame getInputFrame() { device.UpdateFrame(true); frameCounter++; IntPtr rawDepthData = depthImage.Value.Raw; IntPtr rawConfidenceData = confidenceImage.Value.Raw; device.ReleaseFrame(); return new InputFrame(CurrentFrame, ImageWidth, ImageHeight, rawDepthData, rawConfidenceData); } } }