Example #1
0
 public void Update(PlayDepthFrame frame)
 {
     if (frame != null)
     {
         frame.GetFrameDataAsync().ContinueWith(async (pixels) =>
         {
             await _bitmap.Dispatcher.InvokeAsync(() => {
                 _bitmap.FromByteArray(pixels.Result);
             });
         });
     }
 }
Example #2
0
        internal static PlayDepthFrame FromReader(BinaryReader reader, ICodec codec)
        {
            var frame = new PlayDepthFrame();

            frame.FrameType = FrameTypes.Depth;
            frame.RelativeTime = TimeSpan.FromMilliseconds(reader.ReadDouble());
            frame.FrameSize = reader.ReadInt64();

            long frameStartPos = reader.BaseStream.Position;

            frame.Codec = codec;
            frame.Codec.ReadDepthHeader(reader, frame);

            frame.Stream = reader.BaseStream;
            frame.StreamPosition = frame.Stream.Position;
            frame.Stream.Position += frame.FrameDataSize;

            // Do Frame Integrity Check
            var isGoodFrame = false;
            try
            {
                if (reader.ReadString() == PlayFrame.EndOfFrameMarker)
                {
                    isGoodFrame = true;
                }
            }
            catch { }

            if (!isGoodFrame)
            {
                System.Diagnostics.Debug.WriteLine("BAD FRAME...RESETTING");
                reader.BaseStream.Position = frameStartPos + frame.FrameSize;

                try
                {
                    if (reader.ReadString() != PlayFrame.EndOfFrameMarker)
                    {
                        throw new IOException("The recording appears to be corrupt.");
                    }
                    return null;
                }
                catch
                {
                    throw new IOException("The recording appears to be corrupt.");
                }

            }

            return frame;
        }
Example #3
0
 private void depthPlay_FrameArrived(PlayDepthFrame frame)
 {
     if (DepthFrameArrived != null)
         DepthFrameArrived(this, new PlayFrameArrivedEventArgs<PlayDepthFrame> { Frame = frame });
 }