Ejemplo n.º 1
0
        private async void FrameCollection_CollectionProgressed(ExampleMediaFrameCollection sender, ExampleMediaFrameCollectionProgressedEventArgs args)
        {
            if (IsCollectionCompleted)
            {
                // Discard extraneous frames

                args.Frame.Dispose();
                return;
            }

            if (args.Frame.SourceKind == MediaFrameSourceKind.Color)
            {
                CollectedColorFrames.Add(args.Frame);
            }
            else if (args.Frame.SourceKind == MediaFrameSourceKind.Infrared)
            {
                if (args.Frame.IsIlluminated == true)
                {
                    CollectedIlluminatedInfraredFrames.Add(args.Frame);
                }
                else
                {
                    CollectedNonIlluminatedInfraredFrames.Add(args.Frame);
                }
            }
            else
            {
                // Don't know how to handle, discard

                args.Frame.Dispose();
            }

            if (IsCollectionCompleted)
            {
                FrameCollection.CollectionProgressed -= FrameCollection_CollectionProgressed;
                await WriteToDiskAsync();
                await StopOperationAsync();
            }
        }
Ejemplo n.º 2
0
        private void FrameCollection_CollectionProgressed(ExampleMediaFrameCollection sender, ExampleMediaFrameCollectionProgressedEventArgs args)
        {
            if (args.Frame.SourceKind == MediaFrameSourceKind.Color)
            {
                ColorFrameEpochs.Enqueue(args.Frame.SystemRelativeTime.Value);
                if (ColorFrameEpochs.Count > 10)
                {
                    ColorFrameEpochs.TryDequeue(out _);
                }
            }
            else if (args.Frame.SourceKind == MediaFrameSourceKind.Infrared)
            {
                if (args.Frame.IsIlluminated == true)
                {
                    IlluminatedInfraredFrameEpochs.Enqueue(args.Frame.SystemRelativeTime.Value);
                    if (IlluminatedInfraredFrameEpochs.Count > 10)
                    {
                        IlluminatedInfraredFrameEpochs.TryDequeue(out _);
                    }
                }
                else
                {
                    NonIlluminatedInfraredFrameEpochs.Enqueue(args.Frame.SystemRelativeTime.Value);
                    if (NonIlluminatedInfraredFrameEpochs.Count > 10)
                    {
                        NonIlluminatedInfraredFrameEpochs.TryDequeue(out _);
                    }
                }
            }

            // Must either dispose or take ownership of the frame
            args.Frame.Dispose();
        }