/// <summary> /// Constructor that allocates a pinned buffer /// </summary> /// <param name="dataFormat"> /// A <see cref="DepthCamera.DataFormatOption"/> /// </param> /// <param name="allocateBuffer"> /// /// </param> internal DepthMap(DepthCamera.DataFormatOption dataFormat) { this.Width = DepthCamera.DataFormatDimensions[dataFormat].X; this.Height = DepthCamera.DataFormatDimensions[dataFormat].Y; this.DataFormat = dataFormat; this.Data = new byte[DepthCamera.DataFormatSizes[dataFormat]]; this.dataHandle = GCHandle.Alloc(this.Data, GCHandleType.Pinned); this.DataPointer = this.dataHandle.AddrOfPinnedObject(); }
/// <summary> /// Constructor where a buffer allocation isn't needed /// </summary> /// <param name="dataFormat"> /// A <see cref="DepthCamera.DataFormatOption"/> /// </param> /// <param name="bufferPointer"> /// A <see cref="IntPtr"/> /// </param> internal DepthMap(DepthCamera.DataFormatOption dataFormat, IntPtr bufferPointer) { this.Width = DepthCamera.DataFormatDimensions[dataFormat].X; this.Height = DepthCamera.DataFormatDimensions[dataFormat].Y; this.DataFormat = dataFormat; this.Data = null; this.dataHandle = default(GCHandle); this.DataPointer = bufferPointer; }
/// <summary> /// Sets the DepthCameras's data format. Support function for DepthCamera.DataFormat /// </summary> /// <param name="format"> /// A <see cref="DepthCamera.DataFormatOptions"/> /// </param> private void SetDataFormat(DepthCamera.DataFormatOption format) { // change depth map that's waiting cause format has changed this.UpdateNextFrameDepthMap(); int result = KinectNative.freenect_set_depth_format(this.parentDevice.devicePointer, format); if (result != 0) { throw new Exception("Could not switch to depth format " + format + ". Error Code: " + result); } this.dataFormat = format; }
public static extern int freenect_set_depth_format(IntPtr device, DepthCamera.DataFormatOption depthFormat);