public static ColorFrameData CreateData(this ColorFrameReference frameRef) { using (var frame = frameRef.AcquireFrame()) { if (frame == null) { return null; } var frameDesc = frame.FrameDescription; // TODO: Avoid allocate byte array every time var data = new byte[frameDesc.Width * frameDesc.Height * sizeof(int)]; // TODO: Check if Bgra can be written to bitmap directly frame.CopyConvertedFrameDataToArray(data, ColorImageFormat.Bgra); return new ColorFrameData() { RelativeTime = frame.RelativeTime, Width = frameDesc.Width, Height = frameDesc.Height, Data = data, }; } }
public static DepthFrameData CreateData(this DepthFrameReference frameRef) { using (var frame = frameRef.AcquireFrame()) { if (frame == null) { return null; } var frameDesc = frame.FrameDescription; // TODO: Avoid allocate ushort array every time var data = new ushort[frameDesc.Width * frameDesc.Height]; frame.CopyFrameDataToArray(data); return new DepthFrameData() { RelativeTime = frame.RelativeTime, Width = frameDesc.Width, Height = frameDesc.Height, Data = data, MinReliableDistance = frame.DepthMinReliableDistance, MaxReliableDistance = frame.DepthMaxReliableDistance, }; } }
public static BodyFrameData CreateData(this BodyFrameReference frameRef, TimeSpan relativeTime) { using (var frame = frameRef.AcquireFrame()) { if (frame == null) { return null; } // TODO: Avoid allocate body array every time var coordinateMapper = frame.BodyFrameSource.KinectSensor.CoordinateMapper; var bodies = new Body[frame.BodyCount]; frame.GetAndRefreshBodyData(bodies); return new BodyFrameData() { RelativeTime = relativeTime, Bodies = Array.ConvertAll(bodies, b => CreateBody(b, coordinateMapper)), }; } }