void DataReceived(object sender, BaseCamera.DataReceivedEventArgs e) { if (!BufferUsageDisabled) { VideoBufferInUse = true; switch (Mode) { case Modes.IR1024: case Modes.IR480: VideoTextureBuffer.SetData(e.Data.Data); break; case Modes.RGB1024: case Modes.RGB480: case Modes.Depth480: ConvertColorData(e.Data.Data, Prebuffer); VideoTextureBuffer.SetData(Prebuffer); break; } if (Mode != Modes.Depth480) { FrameCounter++; } VideoBufferInUse = false; } else { BufferReleaseARE.Set(); } FrameID++; OnRawFrameIn(e.Data.Data, FrameTypes.Color); if (RawSaveDataNext) { string path = RawSavePath + ".rwc"; try { File.WriteAllBytes(path, e.Data.Data); SendIOEvent(new IOEventArgs(path, true, null)); } catch (Exception t) { SendIOEvent(new IOEventArgs(path, false, t.Message)); } RawSaveDataNext = false; } }
void ProcessingWorker() { XKinect.LED.Color = LEDColor.Red; ThreadsOn = true; while (ThreadsOn) { Kinect.ProcessEvents(); XKinect.UpdateStatus(); Thread.Sleep(1); } switch (Mode) { case Modes.RGB1024: case Modes.RGB480: XKinect.VideoCamera.Stop(); VideoTextureBuffer.Dispose(); break; case Modes.IR1024: case Modes.IR480: XKinect.VideoCamera.Stop(); VideoTextureBuffer.Dispose(); break; case Modes.Depth480: XKinect.DepthCamera.Stop(); DepthTextureBuffer.Dispose(); XKinect.VideoCamera.Stop(); VideoTextureBuffer.Dispose(); break; } Prebuffer = null; XKinect.LED.Color = LEDColor.Yellow; StopARE.Set(); }