Exemple #1
0
 internal override void DisableBufferUsage()
 {
     BufferUsageDisabled = true;
     while (VideoBufferInUse || DepthBufferInUse)
     {
         BufferReleaseARE.WaitOne(100);
     }
 }
Exemple #2
0
 internal override void Destroy()
 {
     if (!Destroyed)
     {
         FPSTimer.Dispose();
         XKinect.LED.Color = LEDColor.BlinkGreen;
         XKinect.Close();
         StopARE.Dispose();
         BufferReleaseARE.Dispose();
         Destroyed = true;
     }
 }
Exemple #3
0
        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;
            }
        }
Exemple #4
0
        void DepthDataReceived(object sender, BaseCamera.DataReceivedEventArgs e)
        {
            if (!BufferUsageDisabled)
            {
                DepthBufferInUse = true;
                switch (Mode)
                {
                case Modes.Depth480:
                    if (DepthMeasurementWindow != null)
                    {
                        int x1 = DepthMeasurementWindow.Value.X, y1 = DepthMeasurementWindow.Value.Y;
                        int x2 = DepthMeasurementWindow.Value.Width + x1, y2 = DepthMeasurementWindow.Value.Height + y1;
                        int n, dmax = 10000, w = x2 - x1 + 1, h = y2 - y1 + 1, pos, x;

                        byte[] data = e.Data.Data;
                        for (int i = x1; i <= x2; i++)
                        {
                            n = 0;
                            for (int j = y1; j <= y2; j++)
                            {
                                pos = (j * DepthWidth + i) * 2;
                                x   = data[pos + 1] << 8;
                                x  += data[pos];
                                n  += x;
                            }
                            n /= h;
                            if (n < dmax)
                            {
                                dmax = n;
                            }
                        }
                        Depth = dmax;
                        DepthCount++;
                        DepthSum    += Depth;
                        DepthAverage = (double)DepthSum / DepthCount;
                    }
                    FrameCounter++;
                    DepthTextureBuffer.SetData(e.Data.Data);
                    break;
                }
                DepthBufferInUse = false;
            }
            else
            {
                BufferReleaseARE.Set();
            }

            OnRawFrameIn(e.Data.Data, FrameTypes.Depth);
            if (RawSaveDepthNext)
            {
                string path = RawSavePath + ".rwd";
                try
                {
                    File.WriteAllBytes(path, e.Data.Data);
                    SendIOEvent(new IOEventArgs(path, true, null));
                }
                catch (Exception t)
                {
                    SendIOEvent(new IOEventArgs(path, false, t.Message));
                }
                RawSaveDepthNext = false;
            }
        }