From fc6bdfd5f43b8726ac2c652020d8b7fcd4679ed9 Mon Sep 17 00:00:00 2001 From: Nick Saw Date: Wed, 17 Jun 2020 00:33:21 +0000 Subject: [PATCH] Merged PR 43330: Release 0.12.53.2 Release 0.12.53.2 to master Related work items: #126416 --- .gitattributes | 1 + Build/Microsoft.Psi.ruleset | 6 +- Build/Sample.Psi.ruleset | 11 +- Build/Security.ruleset | 207 +++ Build/Test.Psi.ruleset | 20 +- CONTRIBUTING.md | 17 +- Directory.Build.props | 3 +- Psi.sln | 29 + README.md | 35 +- .../AzureKinectSample.csproj | 50 + Samples/AzureKinectSample/Program.cs | 165 ++ Samples/AzureKinectSample/README.md | 349 ++++ Samples/AzureKinectSample/SampleOutput.png | Bin 0 -> 128336 bytes Samples/AzureKinectSample/build.sh | 3 + Samples/AzureKinectSample/stylecop.json | 16 + Samples/KinectSample/KinectSample.csproj | 7 +- Samples/KinectSample/README.md | 2 +- .../LinuxSpeechSample.csproj | 10 +- Samples/LinuxSpeechSample/README.md | 2 +- .../OpenCVSample.Interop/AssemblyInfo.cpp | 6 +- .../OpenCVSample.Interop.vcxproj | 6 +- .../OpenCVSample/MainWindow.xaml.cs | 2 +- .../OpenCVSample/OpenCVSample.csproj | 22 +- .../RosArmControlSample.csproj | 10 +- Samples/RosArmControlSample/UArm.cs | 4 +- Samples/RosArmControlSample/UArmComponent.cs | 4 +- .../RosTurtleSample/RosTurtleSample.csproj | 10 +- Samples/SpeechSample/Program.cs | 4 +- Samples/SpeechSample/README.md | 2 +- Samples/SpeechSample/SpeechSample.csproj | 7 +- Samples/WebcamWithAudioSample/Program.cs | 2 +- Samples/WebcamWithAudioSample/README.md | 2 +- .../WebcamWithAudioSample.csproj | 7 +- Samples/WpfSample/README.md | 2 +- Samples/WpfSample/WpfSample.csproj | 7 +- .../Microsoft.Psi.Audio.Linux/AudioCapture.cs | 4 +- .../LinuxAudioInterop.cs | 195 +- .../Microsoft.Psi.Audio.Linux.csproj | 4 + .../AudioCapture.cs | 10 + .../AudioCaptureConfiguration.cs | 27 +- .../AudioPlayerConfiguration.cs | 22 +- .../AudioResampler.cs | 10 +- .../AudioResamplerConfiguration.cs | 11 +- .../Microsoft.Psi.Audio.Windows.csproj | 4 + .../AcousticFeaturesExtractor.cs | 4 +- .../AcousticFeaturesExtractorConfiguration.cs | 81 +- .../AcousticFeatures/FastFourierTransform.cs | 20 +- .../AcousticFeatures/FrequencyDomainEnergy.cs | 4 +- .../Audio/Microsoft.Psi.Audio/AudioBuffer.cs | 4 +- .../Microsoft.Psi.Audio.csproj | 4 + .../Microsoft.Psi.Audio/WaveFileHelper.cs | 2 +- .../Test.Psi.Audio/Test.Psi.Audio.csproj | 12 +- .../CameraIntrinsics.cs | 130 +- .../DepthDeviceCalibrationInfo.cs | 11 + .../DepthExtensions.cs | 24 +- .../ICameraIntrinsics.cs | 24 +- .../IDepthDeviceCalibrationInfo.cs | 14 +- .../LevenbergMarquardt.cs | 188 +- .../Microsoft.Psi.Calibration.csproj | 11 +- .../MultiCameraCalibration.cs | 21 +- .../Microsoft.Psi.Calibration/ProjectTo3D.cs | 4 +- .../RotationExtensions.cs | 165 ++ .../ThirdPartyNotices.txt | 38 + .../Test.Psi.Calibration/DistortionTests.cs | 107 +- .../LevenbergMarquardtTests.cs | 65 + .../Test.Psi.Calibration.csproj | 8 +- .../Test.Psi.Common/Test.Psi.Common.csproj | 8 +- Sources/Common/Test.Psi.Common/TestRunner.cs | 2 +- .../Annotations/AnnotatedEvent.cs | 17 +- .../Annotations/AnnotationPartition.cs | 5 +- .../Annotations/AnnotationSchema.cs | 2 +- .../Annotations/AnnotationSchemaRegistry.cs | 5 +- .../Annotations/AnnotationSimpleReader.cs | 5 +- .../Annotations/AnnotationSimpleWriter.cs | 4 +- Sources/Data/Microsoft.Psi.Data/Dataset.cs | 18 +- Sources/Data/Microsoft.Psi.Data/IPartition.cs | 2 +- .../Microsoft.Psi.Data/Json/JsonExporter.cs | 2 + .../Microsoft.Psi.Data/Json/JsonGenerator.cs | 4 +- .../Json/JsonSimpleReader.cs | 2 +- .../Json/JsonSimpleWriter.cs | 2 +- .../Json/JsonStoreReader.cs | 3 +- .../Json/JsonStoreWriter.cs | 1 + .../Json/JsonStreamMetadata.cs | 27 +- .../Microsoft.Psi.Data.csproj | 4 + Sources/Data/Microsoft.Psi.Data/Partition.cs | 3 +- Sources/Data/Microsoft.Psi.Data/Session.cs | 10 +- .../Microsoft.Psi.Data/SessionImporter.cs | 4 +- .../Data/Microsoft.Psi.Data/SimpleReader.cs | 12 + .../Data/Microsoft.Psi.Data/StorePartition.cs | 5 +- Sources/Data/Test.Psi.Data/AnnotationTests.cs | 2 +- Sources/Data/Test.Psi.Data/DatasetTests.cs | 2 +- Sources/Data/Test.Psi.Data/JsonTests.cs | 6 +- .../Data/Test.Psi.Data/SimpleReaderTests.cs | 25 + .../Data/Test.Psi.Data/Test.Psi.Data.csproj | 14 +- .../CameraDeviceInfo.cs | 5 + .../Microsoft.Psi.DeviceManagement.csproj | 4 + .../DepthImageCompressor.cs | 67 + .../DepthImageFromStreamDecoder.cs | 22 + .../DepthImageToPngStreamEncoder.cs | 21 + .../IBitmapEncoder.cs | 20 - .../ImageCompressor.cs | 75 +- .../ImageDecoder.cs | 50 - .../ImageEncoder.cs | 46 - .../ImageFromStreamDecoder.cs | 34 + .../ImageToJpegStreamEncoder.cs | 25 + .../ImageToPngStreamEncoder.cs | 20 + .../ImagingOperators.cs | 91 + .../JpegBitmapEncoder.cs | 32 - .../Microsoft.Psi.Imaging.Linux.csproj | 4 + .../PngBitmapEncoder.cs | 27 - .../Microsoft.Psi.Imaging.Linux/PsiImaging.cs | 59 - .../DepthImageCompressor.cs | 68 + .../DepthImageFromStreamDecoder.cs | 23 + .../DepthImageToPngStreamEncoder.cs | 32 + .../ImageCompressor.cs | 82 +- .../ImageDecoder.cs | 98 - .../ImageEncoder.cs | 81 - .../ImageFromStreamDecoder.cs | 41 + .../ImageToJpegStreamEncoder.cs | 39 + .../ImageToPngStreamEncoder.cs | 34 + .../ImagingOperators.cs | 67 + .../Microsoft.Psi.Imaging.Windows.csproj | 4 + .../PixelFormatHelpers.cs | 80 + .../PsiImaging.cs | 60 - .../Microsoft.Psi.Imaging/DepthImage.cs | 330 ++++ .../DepthImageDecoder.cs | 35 + .../DepthImageEncoder.cs | 36 + .../Microsoft.Psi.Imaging/DepthImagePool.cs | 53 + .../EncodedDepthImage.cs | 126 ++ .../EncodedDepthImagePool.cs | 25 + .../Microsoft.Psi.Imaging/EncodedImage.cs | 87 +- .../Microsoft.Psi.Imaging/EncodedImagePool.cs | 10 +- .../IDepthImageCompressor.cs | 51 + .../IDepthImageFromStreamDecoder.cs | 20 + .../IDepthImageToStreamEncoder.cs | 20 + .../Microsoft.Psi.Imaging/IImageCompressor.cs | 24 +- .../IImageFromStreamDecoder.cs | 27 + .../IImageToStreamEncoder.cs | 20 + .../Imaging/Microsoft.Psi.Imaging/Image.cs | 988 +++------- .../Microsoft.Psi.Imaging/ImageBase.cs | 671 +++++++ .../Microsoft.Psi.Imaging/ImageDecoder.cs | 50 + .../Microsoft.Psi.Imaging/ImageEncoder.cs | 36 + .../Microsoft.Psi.Imaging/ImageExtensions.cs | 1610 +++++++++++++++++ .../Microsoft.Psi.Imaging/ImagePool.cs | 29 +- .../Microsoft.Psi.Imaging/ImageTransformer.cs | 24 +- .../Microsoft.Psi.Imaging.csproj | 4 + .../Microsoft.Psi.Imaging/Operators.cs | 1127 ------------ .../Microsoft.Psi.Imaging/PixelFormat.cs | 202 --- .../PixelFormatExtensions.cs | 96 + .../PixelFormatHelper.cs | 108 ++ .../Microsoft.Psi.Imaging/PsiImaging.cs | 162 -- .../Microsoft.Psi.Imaging/StreamOperators.cs | 587 ++++++ .../Microsoft.Psi.Imaging/ToPixelFormat.cs | 22 +- .../Test.Psi.Imaging.Windows/ImageTester.cs | 351 +++- .../Properties/AssemblyInfo.cs | 6 +- .../Properties/Resources.Designer.cs | 215 ++- .../Properties/Resources.resx | 68 +- .../Resources/TestImage2.bmp | Bin 0 -> 1069294 bytes .../Resources/TestImage2_AbsDiff.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_BlueChannel.bmp | Bin 0 -> 269918 bytes .../Resources/TestImage2_CopyImage.bmp | Bin 0 -> 1069294 bytes .../Resources/TestImage2_DrawCircle.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_DrawLine.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_DrawRect.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_DrawText.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_FlipHoriz.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_FlipVert.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_GreenChannel.bmp | Bin 0 -> 269918 bytes .../Resources/TestImage2_Invert.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_Mask-6-0.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_Mask.bmp | Bin 0 -> 269986 bytes .../Resources/TestImage2_RedChannel.bmp | Bin 0 -> 269918 bytes .../Resources/TestImage2_Rotate_110.bmp | Bin 0 -> 1753030 bytes .../Resources/TestImage2_Rotate_Neg10.bmp | Bin 0 -> 1430470 bytes .../Resources/TestImage2_Threshold-2-0.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage2_Threshold.bmp | Bin 0 -> 1069210 bytes .../TestImage2_Threshold.bmp-4-0.bmp | Bin 0 -> 1069210 bytes .../Resources/TestImage_Scale_150_125.bmp | Bin 60376 -> 0 bytes .../TestImage_Scale_150_125_Point.bmp | Bin 0 -> 56554 bytes .../Resources/TestImage_Scale_25_200.bmp | Bin 33388 -> 0 bytes .../TestImage_Scale_25_200_Linear.bmp | Bin 0 -> 15254 bytes .../Resources/TestImage_Scale_50_25.bmp | Bin 8805 -> 0 bytes .../Resources/TestImage_Scale_50_25_Cubic.bmp | Bin 0 -> 3854 bytes .../Test.Psi.Imaging.Windows.csproj | 37 +- .../FaceRecognizer.cs | 232 +-- ...icrosoft.Psi.CognitiveServices.Face.csproj | 6 +- .../PersonGroupTasks.cs | 2 +- ....CognitiveServices.Language.Windows.csproj | 4 + .../PersonalityChat.cs | 2 +- ...soft.Psi.CognitiveServices.Language.csproj | 4 + .../AzureSpeechRecognizer.cs | 6 +- .../AzureSpeechRecognizerConfiguration.cs | 16 +- .../BingSpeechRecognizer.cs | 4 +- .../BingSpeechRecognizerConfiguration.cs | 16 +- ...rosoft.Psi.CognitiveServices.Speech.csproj | 4 + .../Service/SpeechRecognitionClient.cs | 5 +- .../Service/SpeechStartDetectedMessage.cs | 2 +- .../ImageAnalyzer.cs | 2 +- ...rosoft.Psi.CognitiveServices.Vision.csproj | 4 + ...Test.Psi.CognitiveServices.Language.csproj | 14 +- .../Test.Psi.CognitiveServices.Speech.csproj | 16 +- ...si.CognitiveServices.Vision.Windows.csproj | 9 +- ...crosoft.Psi.MicrosoftSpeech.Windows.csproj | 4 + .../MicrosoftSpeechRecognizer.cs | 3 +- .../MicrosoftSpeechRecognizerConfiguration.cs | 22 +- .../Microsoft.Psi.ROS.fsproj | 4 + .../ROS/Microsoft.Psi.ROS/RosMessage.fs | 4 +- .../ROS/Microsoft.Psi.ROS/XmlRpc.fs | 4 +- .../AzureKinectBodyListVisualizationObject.cs | 17 + .../AzureKinectBodyVisualizationObject.cs | 284 +++ ...ureKinect.Visualization.Windows.x64.csproj | 45 + .../stylecop.json | 16 + .../AzureKinectBody.cs | 162 ++ .../AzureKinectBodyTracker.cs | 133 ++ .../AzureKinectBodyTrackerConfiguration.cs | 35 + .../AzureKinectCore.cs | 461 +++++ .../AzureKinectExtensions.cs | 33 + .../AzureKinectSensor.cs | 243 +++ .../AzureKinectSensorConfiguration.cs | 87 + .../Microsoft.Psi.AzureKinect.x64.csproj | 49 + .../Microsoft.Psi.AzureKinect.x64.nuspec | 35 + .../Microsoft.Psi.AzureKinect.x64/build.sh | 3 + .../stylecop.json | 16 + .../KinectFace.cs | 2 +- .../KinectFaceDetector.cs | 8 +- ...crosoft.Psi.Kinect.Face.Windows.x64.csproj | 8 +- .../KinectBodyListVisualizationObject.cs | 17 + .../KinectBodyVisualizationObject.cs | 284 +++ ...ft.Psi.Kinect.Visualization.Windows.csproj | 46 + .../stylecop.json | 16 + .../DepthExtensions.cs | 83 - .../DepthToColorConverter.cs | 76 - .../IKinectSensor.cs | 62 - .../KinectBody.cs | 164 +- .../KinectExtensions.cs | 472 ----- .../KinectInternalCalibration.cs | 266 +-- .../KinectSensor.cs | 74 +- .../Microsoft.Psi.Kinect.Windows/Matrix.cs | 1420 --------------- .../Microsoft.Psi.Kinect.Windows.csproj | 8 +- .../Orientation.cs | 171 -- .../Test.Psi.Kinect.Windows.x64/Mesh.cs | 12 +- .../Test.Psi.Kinect.Windows.x64/MeshTests.cs | 2 +- .../QuaternionTest.cs | 64 - .../Test.Psi.Kinect.Windows.x64.csproj | 13 +- .../Microsoft.Psi.Language.csproj | 4 + .../LinuxVideoInterop.cs | 320 ++-- .../MediaCaptureInternal.cs | 12 +- .../Microsoft.Psi.Media.Linux.csproj | 4 + .../Microsoft.Psi.Media.Native.x64.vcxproj | 4 +- .../MediaCapture.cs | 105 +- .../MediaCaptureConfiguration.cs | 18 +- .../MediaSource.cs | 84 +- .../Microsoft.Psi.Media.Windows.x64.csproj | 4 + .../Mpeg4Writer.cs | 2 +- .../AssemblyInfo.cpp | 6 +- .../AssemblyInfo.rc | Bin 5104 -> 5104 bytes .../MP4Writer.cpp | 10 +- .../MP4Writer.h | 6 +- ...soft.Psi.Media_Interop.Windows.x64.vcxproj | 4 +- ...Microsoft.Psi.RealSense.Windows.x64.csproj | 11 +- .../Properties/AssemblyInfo.cs | 6 +- .../RealSenseSensor.cs | 12 +- .../AssemblyInfo.cpp | 6 +- ....Psi.RealSense_Interop.Windows.x64.vcxproj | 10 +- .../Microsoft.Psi.Interop.csproj | 8 +- .../Microsoft.Psi.Windows.csproj | 4 + .../PerfCounterCollection.cs | 2 +- .../Microsoft.Psi.Windows/PerfCounters.cs | 2 +- .../Common/Arrays/IndexDefinition.cs | 2 +- .../Microsoft.Psi/Common/Arrays/IndexerNd.cs | 2 +- .../Common/Arrays/RangeIndexDefinition.cs | 2 +- .../Microsoft.Psi/Common/BufferWriter.cs | 2 +- .../Runtime/Microsoft.Psi/Common/Envelope.cs | 2 +- .../Microsoft.Psi/Common/IStreamMetadata.cs | 9 +- .../AdjacentValuesInterpolator.cs | 2 +- .../FirstReproducibleInterpolator.cs | 2 +- .../LastReproducibleInterpolator.cs | 8 +- .../NearestReproducibleInterpolator.cs | 2 +- .../ReproducibleInterpolator{TIn,TResult}.cs | 2 +- .../ReproducibleInterpolator{T}.cs | 4 +- .../Common/Intervals/IInterval.cs | 8 +- .../Runtime/Microsoft.Psi/Common/Metadata.cs | 6 +- .../Runtime/Microsoft.Psi/Common/Platform.cs | 75 +- .../Microsoft.Psi/Common/PsiStreamMetadata.cs | 77 +- .../Runtime/Microsoft.Psi/Common/Shared.cs | 4 +- .../Microsoft.Psi/Common/SharedContainer.cs | 2 +- .../Microsoft.Psi/Common/TickCalibration.cs | 2 +- Sources/Runtime/Microsoft.Psi/Common/Time.cs | 2 +- .../Common/TypeResolutionHelper.cs | 19 +- .../Microsoft.Psi/Common/UnmanagedArray.cs | 8 +- .../Microsoft.Psi/Components/Generator{T}.cs | 10 +- .../Microsoft.Psi/Components/Processor.cs | 2 +- .../Components/RelativeTimeWindow.cs | 42 +- .../Runtime/Microsoft.Psi/Components/Zip.cs | 55 +- .../Runtime/Microsoft.Psi/Data/Exporter.cs | 211 +-- .../Runtime/Microsoft.Psi/Data/Importer.cs | 39 +- Sources/Runtime/Microsoft.Psi/Data/Store.cs | 479 +++-- .../Diagnostics/PipelineDiagnostics.cs | 2 +- .../PipelineDiagnosticsInternal.cs | 2 +- .../Microsoft.Psi/Executive/Pipeline.cs | 226 ++- .../Microsoft.Psi/Executive/Subpipeline.cs | 4 +- .../Microsoft.Psi/Microsoft.Psi.csproj | 19 +- .../Microsoft.Psi/Operators/Connectors.cs | 27 +- .../Microsoft.Psi/Operators/Enumerable.cs | 9 +- .../Microsoft.Psi/Operators/Generators.cs | 12 +- .../Microsoft.Psi/Operators/Interpolators.cs | 20 +- .../Runtime/Microsoft.Psi/Operators/Joins.cs | 2 +- .../Microsoft.Psi/Operators/Processors.cs | 26 + .../Microsoft.Psi/Operators/Statistical.cs | 2 +- .../Operators/VectorProcessors.cs | 45 +- .../Microsoft.Psi/Operators/Windows.cs | 17 - .../Runtime/Microsoft.Psi/Operators/Zips.cs | 20 +- .../Microsoft.Psi/Persistence/IndexEntry.cs | 4 +- .../Persistence/InfiniteFileReader.cs | 9 +- .../Persistence/InfiniteFileWriter.cs | 3 + .../Microsoft.Psi/Persistence/StoreReader.cs | 2 +- .../Microsoft.Psi/Persistence/StoreWriter.cs | 6 +- .../Microsoft.Psi/Remoting/RemoteExporter.cs | 6 +- .../Microsoft.Psi/Remoting/RemoteImporter.cs | 2 + .../Remoting/Transport/TcpTransport.cs | 1 + .../Microsoft.Psi/Scheduling/PriorityQueue.cs | 10 +- .../Microsoft.Psi/Scheduling/Scheduler.cs | 21 +- .../Scheduling/SchedulerContext.cs | 8 +- .../Scheduling/SimpleSemaphore.cs | 14 +- .../Serialization/KnownSerializers.cs | 9 +- .../Microsoft.Psi/Serialization/RefHandler.cs | 2 +- .../Serialization/StructHandler.cs | 2 +- .../Microsoft.Psi/Streams/Emitter{T}.cs | 2 +- .../Microsoft.Psi/Streams/Receiver{T}.cs | 2 +- .../Test.Psi.Windows/Test.Psi.Windows.csproj | 9 +- Sources/Runtime/Test.Psi/APITester.cs | 2 +- .../Test.Psi/CustomSerializationTester.cs | 2 +- .../Runtime/Test.Psi/DeliveryPolicyTest.cs | 34 +- .../Test.Psi/DynamicDeserializationTests.cs | 42 +- Sources/Runtime/Test.Psi/EmitterTester.cs | 10 +- Sources/Runtime/Test.Psi/FunctionalTests.cs | 4 +- Sources/Runtime/Test.Psi/GeneratorsTests.cs | 7 +- Sources/Runtime/Test.Psi/InteropTests.cs | 96 +- Sources/Runtime/Test.Psi/InterpolateTests.cs | 2 +- Sources/Runtime/Test.Psi/InterpolatorTests.cs | 62 +- Sources/Runtime/Test.Psi/JoinTests.cs | 33 +- Sources/Runtime/Test.Psi/OpProcessorTests.cs | 29 + Sources/Runtime/Test.Psi/OperatorTests.cs | 272 ++- Sources/Runtime/Test.Psi/PersistenceTest.cs | 257 ++- Sources/Runtime/Test.Psi/PipelineTest.cs | 394 +++- Sources/Runtime/Test.Psi/RemotingTests.cs | 4 +- Sources/Runtime/Test.Psi/SchedulerTester.cs | 2 +- .../Runtime/Test.Psi/SerializationTester.cs | 2 +- Sources/Runtime/Test.Psi/SharedTester.cs | 8 +- Sources/Runtime/Test.Psi/StatisticalTests.cs | 252 +-- Sources/Runtime/Test.Psi/Test.Psi.csproj | 32 +- Sources/Runtime/Test.Psi/TimeTester.cs | 4 +- .../Runtime/Test.Psi/TypeResolutionTests.cs | 77 + Sources/Runtime/Test.Psi/VectorTests.cs | 39 +- .../Microsoft.Psi.Speech.Windows.csproj | 4 + .../SystemSpeechIntentDetector.cs | 1 + .../SystemSpeechRecognizer.cs | 3 +- .../SystemSpeechRecognizerConfiguration.cs | 22 +- .../SystemSpeechSynthesizerConfiguration.cs | 26 +- .../Microsoft.Psi.Speech/GrammarInfo.cs | 2 +- .../Microsoft.Psi.Speech.csproj | 4 + .../SimpleVoiceActivityDetector.cs | 2 +- .../SystemSpeechRecognizerTests.cs | 4 +- .../Test.Psi.Speech.Windows.csproj | 73 +- .../Test.Psi.Speech/Test.Psi.Speech.csproj | 12 +- .../Microsoft.Psi.FiniteStateMachine.csproj | 4 + Sources/Tools/PsiStoreTool/Program.cs | 5 +- .../Tools/PsiStoreTool/PsiStoreTool.csproj | 10 +- Sources/Tools/PsiStoreTool/Readme.md | 2 +- Sources/Tools/PsiStoreTool/Utility.cs | 87 +- Sources/Tools/PsiStoreTool/Verbs.cs | 13 + .../Microsoft.Psi.PsiStudio/MainWindow.xaml | 10 +- .../MainWindowViewModel.cs | 199 +- .../Microsoft.Psi.PsiStudio.csproj | 7 +- .../PsiStudioSettings.cs | 64 +- .../Test.Psi.PsiStudio.csproj | 13 +- .../GraphViewer.cs | 8 +- .../Microsoft.Msagl.WpfGraphControl.csproj | 4 + .../NativeMethods.cs | 2 +- .../Microsoft.Msagl.WpfGraphControl/VEdge.cs | 2 +- .../Adapters/DepthImageToImageAdapter.cs | 36 + .../EncodedDepthImageToDepthImageAdapter.cs | 37 + .../EncodedDepthImageToImageAdapter.cs | 39 + .../Adapters/EncodedImageToImageAdapter.cs | 23 +- .../Adapters/ObjectAdapter.cs | 5 +- .../Adapters/PassthroughAdapter{T}.cs | 10 +- .../ObservableDataCollection{T}.cs | 4 +- .../Collections/ObservableDataItem{T}.cs | 2 +- .../ObservableKeyedCache{TKey,TItem}.cs | 8 +- .../ObservableSortedCollection{T}.cs | 6 +- .../Common/DisplayImage.cs | 31 +- .../Common/SnappingBehavior.cs | 26 + .../Converters/PlacementConverter.cs | 2 +- .../Converters/TimeSpanConverter.cs | 2 +- ...AdaptingInstantDataProvider{TSrc,TDest}.cs | 34 +- .../Data/DataManager.cs | 51 +- .../Data/DataStoreReader.cs | 43 +- .../Data/EpsilonInstantStreamReader{T}.cs | 22 +- .../IAdaptingInstantDataProvider{TSrc}.cs | 2 +- .../Data/IStreamReader.cs | 11 +- .../Data/PoolManager.cs | 2 +- .../Data/StreamAdapter{TSrc,TDest}.cs | 19 +- .../Data/StreamBinding.cs | 14 +- .../Data/StreamReader{T}.cs | 33 +- .../Data/StreamSummaryManager.cs | 8 +- .../Data/StreamSummary{TSrc,TDest}.cs | 8 +- .../DataTypes/TimeIntervalHistory.cs | 15 + .../Extensions/VisualizationExtensions.cs | 12 +- .../Helpers/IndexHelper.cs | 63 +- ...ft.Psi.Visualization.Common.Windows.csproj | 18 +- .../Navigation/CursorModeChangedEventArgs.cs | 2 +- .../Navigation/Navigator.cs | 41 +- .../ViewModels/DatasetViewModel.cs | 6 +- .../ViewModels/PartitionViewModel.cs | 8 +- .../ViewModels/PsiLiveStreamMetadata.cs | 7 +- .../ViewModels/SessionViewModel.cs | 6 +- .../ViewModels/StreamTreeNode.cs | 20 +- .../InstantVisualizationContainerView.xaml.cs | 9 +- ...tVisualizationPlaceholderPanelView.xaml.cs | 2 +- .../Views/TimelineSegmentView.xaml.cs | 2 +- .../Views/TimelineView.xaml.cs | 4 +- .../Views/VisualizationContainerView.xaml.cs | 28 +- ...DiagnosticsVisualizationObjectView.xaml.cs | 31 +- ...pelineDiagnosticsVisualizationPresenter.cs | 1486 +++++++-------- .../DiagnosticsVisualization/TypeSpec.cs | 2 +- .../ImageVisualizationObjectView.xaml.cs | 16 +- ...ectView{TPlotVisualizationObject,TData}.cs | 2 +- ...ervalHistoryVisualizationObjectViewItem.cs | 2 +- ...isual.cs => DepthImageAs3DMeshVisual3D.cs} | 29 +- .../Views/Visuals3D/KinectBodiesVisual.cs | 313 ---- .../Views/XYVisualizationPanelView.xaml.cs | 2 +- .../Views/XYZVisualizationPanelView.xaml | 4 +- .../Views/XYZVisualizationPanelView.xaml.cs | 77 +- .../VisualizationContext.cs | 79 +- .../AnimatedModel3DVisualizationObject.cs | 2 +- .../CoordinateSystemVisualizationObject.cs | 48 +- ... DepthImageAs3DMeshVisualizationObject.cs} | 8 +- ...hImageAs3DPointCloudVisualizationObject.cs | 138 ++ .../IModelVisual3DVisualizationObject.cs | 6 +- .../IStreamVisualizationObject.cs | 4 +- .../ImageVisualizationObjectBase{TData}.cs | 2 +- .../InstantVisualizationObject{TData}.cs | 40 +- .../KinectBodies3DVisualizationObject.cs | 71 - ...ectionBase{TVisualizationObject,TData}.cs} | 26 +- ...onObjectEnumerable{TVisObj,TData,TColl}.cs | 13 +- ...ModelVisual3DVisualizationObject{TData}.cs | 25 +- .../PipelineDiagnosticsVisualizationObject.cs | 4 +- .../PlotVisualizationObject{TData}.cs | 2 +- .../Rect3DVisualizationObject.cs | 26 +- .../StreamVisualizationObject{TData}.cs | 126 +- .../TimeIntervalHistoryVisualizationObject.cs | 6 +- .../TimelineVisualizationObject{TData}.cs | 20 +- ...ionObjectDictionary{TVisObj,TKey,TData}.cs | 29 +- ...datableVisual3DDictionary{TKey,TVisual}.cs | 2 +- .../UpdatableVisual3DList{TVisual}.cs | 2 +- .../VisualizationContainer.cs | 4 +- .../TimelineVisualizationPanel.cs | 2 +- .../VisualizationPanels/VisualizationPanel.cs | 2 +- .../VisualizationPanelFactory.cs | 2 +- .../VisualizationPanelType.cs | 2 +- .../VisualizationPanelTypeAttribute.cs | 2 +- .../XYZVisualizationPanel.cs | 60 +- .../VisualizerMap.cs | 18 +- .../VisualizerMetadata.cs | 55 + .../Properties/AssemblyInfo.cs | 6 +- .../Test.Psi.Visualization.csproj | 9 +- build.sh | 2 + 467 files changed, 14733 insertions(+), 9611 deletions(-) create mode 100644 .gitattributes create mode 100644 Build/Security.ruleset create mode 100644 Samples/AzureKinectSample/AzureKinectSample.csproj create mode 100644 Samples/AzureKinectSample/Program.cs create mode 100644 Samples/AzureKinectSample/README.md create mode 100644 Samples/AzureKinectSample/SampleOutput.png create mode 100644 Samples/AzureKinectSample/build.sh create mode 100644 Samples/AzureKinectSample/stylecop.json rename Sources/{Kinect/Microsoft.Psi.Kinect.Windows => Calibration/Microsoft.Psi.Calibration}/LevenbergMarquardt.cs (55%) create mode 100644 Sources/Calibration/Microsoft.Psi.Calibration/RotationExtensions.cs create mode 100644 Sources/Calibration/Microsoft.Psi.Calibration/ThirdPartyNotices.txt create mode 100644 Sources/Calibration/Test.Psi.Calibration/LevenbergMarquardtTests.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageCompressor.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageFromStreamDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageToPngStreamEncoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/IBitmapEncoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageDecoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageFromStreamDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToJpegStreamEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToPngStreamEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImagingOperators.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/JpegBitmapEncoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/PngBitmapEncoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Linux/PsiImaging.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageCompressor.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageFromStreamDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageToPngStreamEncoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageDecoder.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageFromStreamDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToJpegStreamEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToPngStreamEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImagingOperators.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/PixelFormatHelpers.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging.Windows/PsiImaging.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/DepthImage.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/DepthImageDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/DepthImageEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/DepthImagePool.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImage.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImagePool.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageCompressor.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageFromStreamDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageToStreamEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/IImageFromStreamDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/IImageToStreamEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/ImageBase.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/ImageDecoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/ImageEncoder.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/ImageExtensions.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/Operators.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/PixelFormat.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatExtensions.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatHelper.cs delete mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/PsiImaging.cs create mode 100644 Sources/Imaging/Microsoft.Psi.Imaging/StreamOperators.cs create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_AbsDiff.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_BlueChannel.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_CopyImage.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawCircle.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawLine.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawRect.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawText.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_FlipHoriz.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_FlipVert.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_GreenChannel.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Invert.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Mask-6-0.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Mask.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_RedChannel.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Rotate_110.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Rotate_Neg10.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Threshold-2-0.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Threshold.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Threshold.bmp-4-0.bmp delete mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_150_125.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_150_125_Point.bmp delete mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_25_200.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_25_200_Linear.bmp delete mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_50_25.bmp create mode 100644 Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_50_25_Cubic.bmp create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyListVisualizationObject.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyVisualizationObject.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/Microsoft.Psi.AzureKinect.Visualization.Windows.x64.csproj create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/stylecop.json create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBody.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTracker.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTrackerConfiguration.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectCore.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectExtensions.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensor.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensorConfiguration.cs create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.csproj create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.nuspec create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/build.sh create mode 100644 Sources/Kinect/Microsoft.Psi.AzureKinect.x64/stylecop.json create mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyListVisualizationObject.cs create mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyVisualizationObject.cs create mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/Microsoft.Psi.Kinect.Visualization.Windows.csproj create mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/stylecop.json delete mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthExtensions.cs delete mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthToColorConverter.cs delete mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Windows/IKinectSensor.cs delete mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectExtensions.cs delete mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Windows/Matrix.cs delete mode 100644 Sources/Kinect/Microsoft.Psi.Kinect.Windows/Orientation.cs delete mode 100644 Sources/Kinect/Test.Psi.Kinect.Windows.x64/QuaternionTest.cs create mode 100644 Sources/Runtime/Test.Psi/TypeResolutionTests.cs create mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/DepthImageToImageAdapter.cs create mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToDepthImageAdapter.cs create mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToImageAdapter.cs create mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/SnappingBehavior.cs rename Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/{KinectDepthVisual.cs => DepthImageAs3DMeshVisual3D.cs} (85%) delete mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectBodiesVisual.cs rename Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/{KinectDepth3DVisualizationObject.cs => DepthImageAs3DMeshVisualizationObject.cs} (72%) create mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DPointCloudVisualizationObject.cs delete mode 100644 Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectBodies3DVisualizationObject.cs rename Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/{ModelVisual3DVisualizationObjectCollectionBase{TVisObj,TData}.cs => ModelVisual3DVisualizationObjectCollectionBase{TVisualizationObject,TData}.cs} (89%) diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 00000000..526c8a38 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +*.sh text eol=lf \ No newline at end of file diff --git a/Build/Microsoft.Psi.ruleset b/Build/Microsoft.Psi.ruleset index 2dcea87f..2c43d686 100644 --- a/Build/Microsoft.Psi.ruleset +++ b/Build/Microsoft.Psi.ruleset @@ -1,5 +1,6 @@  - + + @@ -8,6 +9,7 @@ + @@ -71,7 +73,7 @@ - + \ No newline at end of file diff --git a/Build/Sample.Psi.ruleset b/Build/Sample.Psi.ruleset index 266fc5f6..f77500b8 100644 --- a/Build/Sample.Psi.ruleset +++ b/Build/Sample.Psi.ruleset @@ -1,9 +1,6 @@  - - - - - + + @@ -12,7 +9,7 @@ - + @@ -74,9 +71,9 @@ + - \ No newline at end of file diff --git a/Build/Security.ruleset b/Build/Security.ruleset new file mode 100644 index 00000000..977293d4 --- /dev/null +++ b/Build/Security.ruleset @@ -0,0 +1,207 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Build/Test.Psi.ruleset b/Build/Test.Psi.ruleset index 53387a63..e9ea3c6c 100644 --- a/Build/Test.Psi.ruleset +++ b/Build/Test.Psi.ruleset @@ -1,18 +1,15 @@  - - - - - + + - + - + @@ -70,15 +67,22 @@ + + + + - + + + + \ No newline at end of file diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 728a94cb..4a306a28 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing to Platform for Situated Intelligence -We welcome contributions from the community in a variety of forms: from simply using it and filing issues and bugs, to writing and releasing your own new components, to creating pull requests for bug fixes or new features, etc. This document describes some of the things you need to know if you are going to contribute to the Platform for Situated Intelligence ecosystem. Please read it carefully before making source code changes. +We welcome contributions from the community in a variety of forms: from simply using it and filing issues and bugs, to writing and releasing your own new components, to creating pull requests for bug fixes or new features, etc. This document describes some of the things you need to know if you are going to contribute to the Platform for Situated Intelligence ecosystem. ## Code of conduct @@ -60,12 +60,14 @@ Below is a description of the directory structure for the Platform for Situated | Sources | Audio | Contains class libraries for audio components. | | Sources | Calibration | Contains class libraries for calibrating cameras. | | Sources | Common | Contains class libraries for common test support. | -| Sources | Extensions | Contains class libraries that extend the \psi runtime class libraries. | +| Sources | Data | Contains class libraries for creating and manipulating datasets. | +| Sources | Devices | Contains class libraries that support enumerating devices. | | Sources | Imaging | Contains class libraries for \psi imaging, e.g. images, video capture, etc. | | Sources | Integrations | Contains integrations - libraries that provide shims around 3rd party libraries. | -| Sources | Kinect | Contains class libraries for Kinect sensor components. | +| Sources | Kinect | Contains class libraries for Azure Kinect and Kinect V2 sensor components. | | Sources | Language | Contains class libraries for natural language processing components. | | Sources | Media | Contains class libraries for media components. | +| Sources | RealSense | Contains class libraries for RealSense sensor component. | | Sources | Runtime | Contains class libraries for \psi runtime. | | Sources | Speech | Contains class libraries for speech components. | | Sources | Toolkits | Contains toolkits - e.g. Finite State Machine toolkit, etc. | @@ -74,10 +76,9 @@ Below is a description of the directory structure for the Platform for Situated ### Coding Style -Platform for Situated Intelligence is an organically grown codebase. The consistency of style reflects this. -For the most part, the team follows these [coding conventions](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions) along with these [design guidelines](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/). Pull requests that reformat the code will not be accepted. +For the most part, the Platform for Situated Intelligence codebase follows these [coding conventions](https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/inside-a-program/coding-conventions) along with these [design guidelines](https://docs.microsoft.com/en-us/dotnet/standard/design-guidelines/). -In case you would like to add a new project to the `Psi.sln` we require that the project is setup in a similar ways to the other projects to ensure a certain coding standard. +In case you would like to add a new project to the `Psi.sln` we require that the project is setup in a similar ways to the other projects to ensure consistency. ### Build and Test @@ -85,9 +86,7 @@ To fully validate your changes, do a complete rebuild and test for both Debug an ### Pull Requests -We accept __bug fix pull requests__. Please make sure there is a corresponding tracking issue for the bug. When you submit a PR for a bug, please link to the issue. - -We also accept __new feature pull requests__. We are available to discuss new features. We recommend you open an issue if you plan to develop new features. +We accept __bug fix pull requests__ as well as __new feature pull requests__. For bug fixes, please open a corresponding issue for the bug and link to it, if one does not already exist. We also recommend you open an issue if you plan to develop new features, which will help facilitate community discussions about the design, implementation, etc. Pull requests should: diff --git a/Directory.Build.props b/Directory.Build.props index a7856f10..6921f1ec 100644 --- a/Directory.Build.props +++ b/Directory.Build.props @@ -6,7 +6,7 @@ Microsoft Corporation microsoft,psi Microsoft - 0.11.82.2 + 0.12.53.2 $(AssemblyVersion) $(AssemblyVersion)-beta false @@ -21,6 +21,7 @@ FS2003 latest + false diff --git a/Psi.sln b/Psi.sln index 7af11486..9671802b 100644 --- a/Psi.sln +++ b/Psi.sln @@ -166,6 +166,7 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Build", "Build", "{4026C2BE Build\MSLogoGreySmall.png = Build\MSLogoGreySmall.png Build\RunDoxygen.ps1 = Build\RunDoxygen.ps1 Build\Sample.Psi.ruleset = Build\Sample.Psi.ruleset + Build\Security.ruleset = Build\Security.ruleset Build\Test.Psi.ruleset = Build\Test.Psi.ruleset EndProjectSection EndProject @@ -197,6 +198,14 @@ Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Psi.DeviceManagem EndProject Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Psi.CognitiveServices.Face", "Sources\Integrations\CognitiveServices\Microsoft.Psi.CognitiveServices.Face\Microsoft.Psi.CognitiveServices.Face.csproj", "{084FB05C-4022-40FD-B00B-E3229B882F08}" EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Psi.AzureKinect.Visualization.Windows.x64", "Sources\Kinect\Microsoft.Psi.AzureKinect.Visualization\Microsoft.Psi.AzureKinect.Visualization.Windows.x64.csproj", "{8D33307F-0E96-491A-9D31-9025709310F6}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Psi.AzureKinect.x64", "Sources\Kinect\Microsoft.Psi.AzureKinect.x64\Microsoft.Psi.AzureKinect.x64.csproj", "{C91D0412-1BB2-40D2-8DCA-A48B6C5B7E67}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "AzureKinectSample", "Samples\AzureKinectSample\AzureKinectSample.csproj", "{66639311-E7BE-4A5B-A35B-9BFF6D3F69F2}" +EndProject +Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "Microsoft.Psi.Kinect.Visualization.Windows", "Sources\Kinect\Microsoft.Psi.Kinect.Visualization.Windows\Microsoft.Psi.Kinect.Visualization.Windows.csproj", "{F31606FF-3737-45DC-8E89-6256AACD841F}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution Debug|Any CPU = Debug|Any CPU @@ -435,6 +444,22 @@ Global {084FB05C-4022-40FD-B00B-E3229B882F08}.Debug|Any CPU.Build.0 = Debug|Any CPU {084FB05C-4022-40FD-B00B-E3229B882F08}.Release|Any CPU.ActiveCfg = Release|Any CPU {084FB05C-4022-40FD-B00B-E3229B882F08}.Release|Any CPU.Build.0 = Release|Any CPU + {8D33307F-0E96-491A-9D31-9025709310F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {8D33307F-0E96-491A-9D31-9025709310F6}.Debug|Any CPU.Build.0 = Debug|Any CPU + {8D33307F-0E96-491A-9D31-9025709310F6}.Release|Any CPU.ActiveCfg = Release|Any CPU + {8D33307F-0E96-491A-9D31-9025709310F6}.Release|Any CPU.Build.0 = Release|Any CPU + {C91D0412-1BB2-40D2-8DCA-A48B6C5B7E67}.Debug|Any CPU.ActiveCfg = Debug|x64 + {C91D0412-1BB2-40D2-8DCA-A48B6C5B7E67}.Debug|Any CPU.Build.0 = Debug|x64 + {C91D0412-1BB2-40D2-8DCA-A48B6C5B7E67}.Release|Any CPU.ActiveCfg = Release|x64 + {C91D0412-1BB2-40D2-8DCA-A48B6C5B7E67}.Release|Any CPU.Build.0 = Release|x64 + {66639311-E7BE-4A5B-A35B-9BFF6D3F69F2}.Debug|Any CPU.ActiveCfg = Debug|x64 + {66639311-E7BE-4A5B-A35B-9BFF6D3F69F2}.Debug|Any CPU.Build.0 = Debug|x64 + {66639311-E7BE-4A5B-A35B-9BFF6D3F69F2}.Release|Any CPU.ActiveCfg = Release|x64 + {66639311-E7BE-4A5B-A35B-9BFF6D3F69F2}.Release|Any CPU.Build.0 = Release|x64 + {F31606FF-3737-45DC-8E89-6256AACD841F}.Debug|Any CPU.ActiveCfg = Debug|Any CPU + {F31606FF-3737-45DC-8E89-6256AACD841F}.Debug|Any CPU.Build.0 = Debug|Any CPU + {F31606FF-3737-45DC-8E89-6256AACD841F}.Release|Any CPU.ActiveCfg = Release|Any CPU + {F31606FF-3737-45DC-8E89-6256AACD841F}.Release|Any CPU.Build.0 = Release|Any CPU EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -520,6 +545,10 @@ Global {8AEFDD4F-CF2E-4392-AF46-378DE96126A5} = {A0856299-D28A-4513-B964-3FA5290FF160} {6B572F54-0E2F-4223-8283-14B3BAB7534A} = {8AEFDD4F-CF2E-4392-AF46-378DE96126A5} {084FB05C-4022-40FD-B00B-E3229B882F08} = {05481E26-A4CA-4F7D-B6FC-671A8AAC18B1} + {8D33307F-0E96-491A-9D31-9025709310F6} = {CB8286F5-167B-4416-8FE9-9B97FCF146D5} + {C91D0412-1BB2-40D2-8DCA-A48B6C5B7E67} = {CB8286F5-167B-4416-8FE9-9B97FCF146D5} + {66639311-E7BE-4A5B-A35B-9BFF6D3F69F2} = {1AA38339-B349-4AA7-A0A9-F92ADCFDB2DF} + {F31606FF-3737-45DC-8E89-6256AACD841F} = {CB8286F5-167B-4416-8FE9-9B97FCF146D5} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution SolutionGuid = {EAF15EE9-DCC5-411B-A9E5-7C2F3D132331} diff --git a/README.md b/README.md index b3842492..2a96cea5 100644 --- a/README.md +++ b/README.md @@ -3,47 +3,44 @@ ![Build status](https://dev.azure.com/msresearch/psi/_apis/build/status/psi-github-ci?branchName=master) [![Join the chat at https://gitter.im/Microsoft/psi](https://badges.gitter.im/Microsoft/psi.svg)](https://gitter.im/Microsoft/psi?utm_source=badge&utm_medium=badge&utm_campaign=pr-badge&utm_content=badge) -**Platform for Situated Intelligence** is an open, extensible framework that enables the development, fielding and study of situated, integrative-AI systems. +**Platform for Situated Intelligence** is an open, extensible framework that enables the development, fielding and study of multimodal, integrative-AI systems. In recent years, we have seen significant progress with machine learning techniques on various perceptual and control problems. At the same time, building end-to-end, multimodal, integrative-AI systems that leverage multiple technologies and act autonomously or interact with people in the open world remains a challenging, error-prone and time-consuming engineering task. Numerous challenges stem from the sheer complexity of these systems and are amplified by the lack of appropriate infrastructure and development tools. -The Platform for Situated Intelligence project aims to address these issues and provide a basis for developing, fielding and studying integrative-AI systems. The platform consists of three layers. The **Runtime** layer provides a parallel programming model centered around temporal streams of data, and enables easy development of components and applications using .NET, while retaining the performance properties of natively written, carefully tuned systems. A set of **Tools** enable multimodal data visualization, annotations, analytics, tuning and machine learning scenarios. Finally, an open ecosystem of **Components** encapsulate various AI technologies and allow for quick compositing of integrative-AI applications. For more information about the goals of the project, the types of systems that you can build using it, and the various layers see [Platform for Situated Intelligence Overview](https://github.com/microsoft/psi/wiki/Platform-Overview). +The Platform for Situated Intelligence project aims to address these issues and provide a basis for __developing, fielding and studying multimodal, integrative-AI systems__. The platform consists of three layers. The **Runtime** layer provides a parallel programming model centered around temporal streams of data, and enables easy development of components and applications using .NET, while retaining the performance properties of natively written, carefully tuned systems. A set of **Tools** enable multimodal data visualization, annotations, analytics, tuning and machine learning scenarios. Finally, an open ecosystem of **Components** encapsulate various AI technologies and allow for quick compositing of integrative-AI applications. + +For more information about the goals of the project, the types of systems that you can build using it, and the various layers see [Platform for Situated Intelligence Overview](https://github.com/microsoft/psi/wiki/Platform-Overview). # Using and Building -Platform for Situated Intelligence is built on the .NET Framework. Large parts of it are built on .NET Standard and therefore run both on Windows and Linux, whereas some components are specific and available only to one operating system (for instance the Kinect sensor component is available only for Windows.) +Platform for Situated Intelligence is built on the .NET Framework. Large parts of it are built on .NET Standard and therefore run both on Windows and Linux, whereas some components are specific and available only to one operating system. You can build applications based on Platform for Situated Intelligence either by leveraging nuget packages, or by cloning and building the code. Below are instructions: * [Using \\psi via Nuget packages](https://github.com/microsoft/psi/wiki/Using-via-NuGet-Packages) * [Building the \\psi codebase](https://github.com/microsoft/psi/wiki/Building-the-Codebase) -# Getting Started +# Documentation and Getting Started -__Brief Introduction__. A number of [tutorials](https://github.com/microsoft/psi/wiki/Basic-Tutorials) are available to get you started with using Platform for Situated Intelligence. We recommend starting with the [Brief Introduction](https://github.com/microsoft/psi/wiki/Brief-Introduction), which provides a guided walk-through for some of the main concepts in \psi. It shows how to create a simple program, describes the core concept of a stream, and explains how to transform, synchronize, visualize, persist to and replay streams from disk. We recommend that you first work through the examples in this tutorial to familiarize yourself with these core concepts. The [Writing Components](https://github.com/microsoft/psi/wiki/Writing-Components) tutorial explains how to write new \psi components, and the [Delivery Policies](https://github.com/microsoft/psi/wiki/Delivery-Policies) tutorial describes how to control throughput on streams in your application. +The documentation for Platform for Situated Intelligence is available in the [github project wiki](https://github.com/microsoft/psi/wiki). The documentation is still under construction and in various phases of completion. If you need further explanation in any area, please open an issue and label it `documentation`, as this will help us target our documentation development efforts to the highest priority needs. -__Advanced Topics__. A number of documents on more [advanced topics](https://github.com/microsoft/psi/wiki/More-Advanced-Topics) describe in more detail various aspects of the framework, including [stream operators](https://github.com/microsoft/psi/wiki/Stream-Operators), [synchronization](https://github.com/microsoft/psi/wiki/Synchronization), [remoting](https://github.com/microsoft/psi/wiki/Remoting), [interop](https://github.com/microsoft/psi/wiki/Interop), [shared objects and memory management](https://github.com/microsoft/psi/wiki/Shared-Objects), etc. +__Getting Started__. We recommend starting with the [Brief Introduction](https://github.com/microsoft/psi/wiki/Brief-Introduction) tutorial, which provides a guided walk-through for some of the main concepts in \psi. It shows how to create a simple \\psi application, describes the core concept of a stream, and explains how to transform, synchronize, visualize, persist to and replay streams from disk. We recommend that you first work through the examples in the [Brief Introduction](https://github.com/microsoft/psi/wiki/Brief-Introduction) to familiarize yourself with these core concepts, before you peruse the other available [tutorials](https://github.com/microsoft/psi/wiki/Basic-Tutorials). Two other helpful tutorials if you are just getting started are the [Writing Components](https://github.com/microsoft/psi/wiki/Writing-Components) tutorial, which explains how to write new \psi components, and the [Delivery Policies](https://github.com/microsoft/psi/wiki/Delivery-Policies) tutorial, which describes how to control throughput on streams in your application. +__Advanced Topics__. A set of documents on more [advanced topics](https://github.com/microsoft/psi/wiki/More-Advanced-Topics) describe in more detail various aspects of the framework, including [stream fusion and merging](https://github.com/microsoft/psi/wiki/Stream-Fusion-and-Merging), [interpolation and sampling](https://github.com/microsoft/psi/wiki/Interpolation-and-Sampling), [windowing operators](https://github.com/microsoft/psi/wiki/Windowing-Operators), [remoting](https://github.com/microsoft/psi/wiki/Remoting), [interop](https://github.com/microsoft/psi/wiki/Interop), [shared objects and memory management](https://github.com/microsoft/psi/wiki/Shared-Objects), etc. -__Samples__. Besides the tutorials and topics, it may be helpful to look through the set of [Samples](https://github.com/microsoft/psi/wiki/Samples) provided. While some of the samples address specialized topics such as how to leverage speech recognition components or how to bridge to ROS, reading them will give you more insight into programming with \psi. +__Samples__. Besides the tutorials and topics, we also recommend looking through the set of [Samples](https://github.com/microsoft/psi/wiki/Samples) provided. While some of the samples address specialized topics such as how to leverage speech recognition components or how to bridge to ROS, reading them will give you more insight into programming with \psi. __Components__. Additional useful information regarding available packages and components can be found in the [NuGet packages list](https://github.com/microsoft/psi/wiki/List-of-NuGet-Packages) and in the [component list](https://github.com/microsoft/psi/wiki/List-of-Components) pages. The latter page also has pointers to other repositories by third parties containing other \psi components. -__Documentation__. Like the rest of the codebase, the documentation available in the [wiki](https://github.com/microsoft/psi/wiki) is still under construction and in various phases of completion. If you need further explanation in any of these areas, please open an issue, label it `documentation`, as this will help us target our documentation development efforts to the highest priority needs. - -# Disclaimer - -The codebase is currently in beta and various aspects of the platform are at different levels of completion and robustness. There are probably still bugs in the code and we will likely be making breaking API changes. We plan to continuously improve the framework and we encourage the community to contribute. - -The [Roadmap](https://github.com/microsoft/psi/wiki/Roadmap) document provides more information about our future plans. +__API Reference__. An additional [API Reference](https://microsoft.github.io/psi/api/classes.html) is also available. # Getting Help -If you find a reproducible bug or if you would like to request a new feature or additional documentation, please file an [issue on the github repo](https://github.com/microsoft/psi/issues). If you do so, please make sure a corresponding issue has not already been filed. Use the [`bug`](https://github.com/microsoft/psi/labels/bug) label when filing issues that represent code defects, and provide enough information to reproduce. Use the [`feature request`](https://github.com/microsoft/psi/labels/feature%20request) label to request new features, and use the [`documentation`](https://github.com/microsoft/psi/labels/documentation) label to request additional documentation. +If you find a reproducible bug or if you would like to request a new feature or additional documentation, please file an [issue on the github repo](https://github.com/microsoft/psi/issues). If you do so, please first check whether a corresponding issue has already been filed. Use the [`bug`](https://github.com/microsoft/psi/labels/bug) label when filing issues that represent code defects, and provide enough information to reproduce. Use the [`feature request`](https://github.com/microsoft/psi/labels/feature%20request) label to request new features, and use the [`documentation`](https://github.com/microsoft/psi/labels/documentation) label to request additional documentation. # Contributing -We hope the community can help improve and evolve Platform for Situated Intelligence. If you plan to contribute to the codebase, please read the [Contributing Guidelines](https://github.com/microsoft/psi/wiki/Contributing) page. It describes how the source code is organized and things you need to know before making any source code changes. +We hope the community can help improve and evolve Platform for Situated Intelligence, and we welcome contributions in a variety of forms: from simply using it and filing issues and bugs, to writing and releasing your own new components, to creating pull requests for bug fixes or new features, etc. The [Contributing Guidelines](https://github.com/microsoft/psi/wiki/Contributing) page in the wiki describes in more detail a variety of ways in which you can get involved, how the source code is organized, and other useful things to know before starting to make source code changes. # Who is Using @@ -55,6 +52,12 @@ Platform for Situated Intelligence is currently being used in a number of indust If you would like to be added to this list, just add a [GitHub issue](https://github.com/Microsoft/psi/issues) and label it with the [`whoisusing`](https://github.com/Microsoft/psi/labels/whoisusing) label. Add a url for your research lab, website or project that you would like us to link to. +# Disclaimer + +The codebase is currently in beta and various aspects of the platform are at different levels of completion and robustness. There are probably still bugs in the code and we will likely be making breaking API changes. We plan to continuously improve the framework and we encourage the community to contribute. + +The [Roadmap](https://github.com/microsoft/psi/wiki/Roadmap) document provides more information about our future plans. + # License Platform for Situated Intelligence is available under an [MIT License](LICENSE.txt). See also [Third Party Notices](ThirdPartyNotices.txt). diff --git a/Samples/AzureKinectSample/AzureKinectSample.csproj b/Samples/AzureKinectSample/AzureKinectSample.csproj new file mode 100644 index 00000000..a2d68bb4 --- /dev/null +++ b/Samples/AzureKinectSample/AzureKinectSample.csproj @@ -0,0 +1,50 @@ + + + + Exe + netcoreapp3.1 + x64 + ..\..\Build\Sample.Psi.ruleset + false + AzureKinectSample.Program + + + + x64 + true + + bin\Debug\netcoreapp3.1\AzureKinectSample.xml + + + + x64 + true + + bin\Release\netcoreapp3.1\AzureKinectSample.xml + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + diff --git a/Samples/AzureKinectSample/Program.cs b/Samples/AzureKinectSample/Program.cs new file mode 100644 index 00000000..823c85e7 --- /dev/null +++ b/Samples/AzureKinectSample/Program.cs @@ -0,0 +1,165 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace AzureKinectSample +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using MathNet.Spatial.Euclidean; + using Microsoft.Azure.Kinect.BodyTracking; + using Microsoft.Azure.Kinect.Sensor; + using Microsoft.Psi; + using Microsoft.Psi.AzureKinect; + using Microsoft.Psi.Calibration; + using Microsoft.Psi.Imaging; + + /// + /// Azure Kinect sample program. + /// + public class Program + { + /// + /// Main entry point. + /// + public static void Main() + { + // camera resolution settings + const ColorResolution resolution = ColorResolution.R720p; + const int widthSource = 1280; + const int heightSource = 720; + + // down sampled resolution + const int widthOutput = 80; + const int heightOutput = 45; + const double scaleFactorWidth = (double)widthOutput / widthSource; + const double scaleFactorHeight = (double)heightOutput / heightSource; + + // background subtraction beyond this depth + const double maxDepth = 1.0; // meters + + const SensorOrientation initialOrientation = SensorOrientation.Default; + + using (var pipeline = Pipeline.Create("AzureKinectSample", DeliveryPolicy.LatestMessage)) + { + var azureKinect = new AzureKinectSensor( + pipeline, + new AzureKinectSensorConfiguration() + { + OutputImu = true, + ColorResolution = resolution, + DepthMode = DepthMode.WFOV_Unbinned, + CameraFPS = FPS.FPS15, + BodyTrackerConfiguration = new AzureKinectBodyTrackerConfiguration() + { + CpuOnlyMode = true, // false if CUDA supported GPU available + SensorOrientation = initialOrientation, + }, + }); + + StringBuilder sb = new StringBuilder(); + SensorOrientation lastOrientation = (SensorOrientation)(-1); // detect orientation changes + + // consuming color, depth, IMU, body tracking, calibration + azureKinect.ColorImage.Resize(widthOutput, heightOutput) + .Join(azureKinect.DepthImage) + .Join(azureKinect.Imu, TimeSpan.FromMilliseconds(10)) + .Pair(azureKinect.Bodies) + .Pair(azureKinect.DepthDeviceCalibrationInfo) + .Do(message => + { + var (color, depth, imu, bodies, calib) = message; + + // determine camera orientation from IMU + static SensorOrientation ImuOrientation(ImuSample imu) + { + const double halfGravity = 9.8 / 2; + return + (imu.AccelerometerSample.Z > halfGravity) ? SensorOrientation.Flip180 : + (imu.AccelerometerSample.Y > halfGravity) ? SensorOrientation.Clockwise90 : + (imu.AccelerometerSample.Y < -halfGravity) ? SensorOrientation.CounterClockwise90 : + SensorOrientation.Default; // upright + } + + // enumerate image coordinates while correcting for orientation + static (IEnumerable, IEnumerable, bool) EnumerateCoordinates(SensorOrientation orientation) + { + var w = Enumerable.Range(0, widthOutput); + var h = Enumerable.Range(0, heightOutput); + return orientation switch + { + SensorOrientation.Clockwise90 => (h.Reverse(), w, true), + SensorOrientation.Flip180 => (w.Reverse(), h.Reverse(), false), + SensorOrientation.CounterClockwise90 => (h, w.Reverse(), true), + _ => (w, h, false), // normal + }; + } + + // render color frame as "ASCII art" + sb.Clear(); + var bitmap = color.Resource.ToBitmap(); + var orientation = ImuOrientation(imu); + var (horizontal, vertical, swap) = EnumerateCoordinates(orientation); + foreach (var j in vertical.Where(n => n % 2 == 0)) + { + foreach (var i in horizontal) + { + var (x, y) = swap ? (j, i) : (i, j); + + // subtract background beyond max depth + var d = DepthExtensions.ProjectToCameraSpace(calib, new Point2D(x / scaleFactorWidth, y / scaleFactorHeight), depth); + if (!d.HasValue || d.Value.Z < maxDepth) + { + var p = bitmap.GetPixel(x, y); + sb.Append(" .:-=+*#%@"[(int)((p.R + p.G + p.B) / 76.5)]); + } + else + { + sb.Append(' '); // subtract background + } + } + + sb.Append(Environment.NewLine); + } + + // clear console when orientation changes + if (orientation != lastOrientation) + { + Console.Clear(); + lastOrientation = orientation; + } + + Console.SetCursorPosition(0, 0); + Console.WriteLine(sb.ToString()); + + // overlay head tracking + if (orientation == initialOrientation) + { + // body tracking works only in initially configured orientation + Console.BackgroundColor = ConsoleColor.Red; + foreach (var body in bodies) + { + var p = calib.ToColorSpace(body.Joints[JointId.Head].Pose.Origin); + var x = (int)(p.X * scaleFactorWidth); + var y = (int)(p.Y * scaleFactorHeight / 2); + if (x > 0 && x < widthOutput && y > 0 && y < heightOutput) + { + Console.SetCursorPosition(x, y / 2); + Console.Write(' '); + } + } + + Console.BackgroundColor = ConsoleColor.Black; + } + }); + + Console.BackgroundColor = ConsoleColor.Black; + Console.ForegroundColor = ConsoleColor.White; + Console.Clear(); + pipeline.RunAsync(); + Console.ReadLine(); // press Enter to end + } + } + } +} diff --git a/Samples/AzureKinectSample/README.md b/Samples/AzureKinectSample/README.md new file mode 100644 index 00000000..aaab4918 --- /dev/null +++ b/Samples/AzureKinectSample/README.md @@ -0,0 +1,349 @@ +# Azure Kinect Sample + +This sample demonstrates how to use the Azure Kinect sensor with body tracking and how to use the `Join()` and `Pair()` operators to synchronize and fuse streams. + +# Using the Color Image Stream + +First, let's get a minimal application up and running. The `AzureKinectSensor` component gives us access to various image streams from the device (color, depth, infrared) as well as other information such as IMU and temperature readings. We will start with the `ColorImage` stream. + +```csharp +using (var pipeline = Pipeline.Create("AzureKinectSample", DeliveryPolicy.LatestMessage)) +{ + var azureKinectSensor = new AzureKinectSensor( + pipeline, + new AzureKinectSensorConfiguration() + { + ColorResolution = ColorResolution.R720p, + CameraFPS = FPS.FPS15, + }); + + ... +} +``` +Notice that at construction time we can configure the frame rate (`CameraFPS`) and resolution (`ColorResolution`). A number of other configuration options are also available as part of the `AzureKinectSensorConfiguration`: + +- **DeviceIndex:** The index of the device to open (default 0). +- **ColorResolution:** The resolution of the color camera (default 1080p). +- **DepthMode:** The depth camera mode (default NFOV unbinned). +- **CameraFPS:** The desired frame rate (default 30 FPS). +- **SynchronizedImagesOnly:** Whether color and depth captures should be strictly synchronized (default `true`). +- **OutputColor:** Whether the color stream is emitted (default `true`). +- **OutputDepth:** Whether the depth stream is emitted (default `true`). +- **OutputInfrared:** Whether the infrared stream is emitted (default `true`). +- **OutputImu:** Whether to use the Azure Kinect's IMU (default `false`). +- **OutputCalibration:** Whether the Azure Kinect outputs its calibration settings (default `true`). +- **BodyTrackerConfiguration:** The body tracker configuration (default null). If null, no body tracking is performed. +- **DeviceCaptureTimeout:** The timeout used for device capture (default 1 minute). +- **FrameRateReportingFrequency:** The frequency at which frame rate is reported on the `FrameRate` emitter (default 2 seconds). + +For this demonstration we'll be resizing the color images to render as ASCII art at the console for a cross-platform solution. The `ColorImage` stream is of `Shared` on which several operators exist for cropping, transforming, encoding, etc. Below, we use the `Resize()` operator to scale the image down to 80 by 45 pixels, and then we apply a `Do()` operator in which we convert the image to ASCII art: + +```csharp +// down sampled resolution +const int widthOutput = 80; +const int heightOutput = 45; + +StringBuilder sb = new StringBuilder(); + +// consuming color +azureKinectSensor.ColorImage.Resize(widthOutput, heightOutput).Do(color => +{ + var bitmap = color.Resource.ToBitmap(); + + // render color frame as "ASCII art" + sb.Clear(); + for (int y = 0; y < heightOutput; y += 2) + { + for (int x = 0; x < widthOutput; x++) + { + var p = bitmap.GetPixel(x, y); + sb.Append(" .:-=+*#%@"[(int)((p.R + p.G + p.B) / 76.5)]); + } + + sb.Append(Environment.NewLine); + } + + Console.SetCursorPosition(0, 0); + Console.WriteLine(sb.ToString()); +}); + +Console.BackgroundColor = ConsoleColor.Black; +Console.ForegroundColor = ConsoleColor.White; +Console.Clear(); +pipeline.RunAsync(); +Console.ReadLine(); // press Enter to end +``` + +Here's an example output produced by this application: + +![Sample output](./SampleOutput.png) + +# Using the Depth Image Stream + +A core feature of the Azure Kinect sensor is depth perception. Next we'll use the `DepthImage` stream to perform background subtraction, i.e. to remove pixels beyond a distance threshold. + +```csharp +// background subtraction beyond this depth +const double maxDepth = 1.0; // meters +``` + +We will _not_ be resizing the depth image but will need to scale coordinates: + +```csharp +// camera resolution settings +const ColorResolution resolution = ColorResolution.R720p; +const int widthSource = 1280; +const int heightSource = 720; + +// down sampled resolution +const int widthOutput = 80; +const int heightOutput = 45; +const double scaleFactorWidth = (double)widthOutput / widthSource; +const double scaleFactorHeight = (double)heightOutput / heightSource; +``` + +The `ColorImage` and `DepthImage` streams emit independently. When the component is configured with `SynchronizedImagesOnly = true` (the default) then the images on each stream have matching originating times. However, they remain separate streams and may have varying latencies in the system. In a more complex system they may pass through different paths in the graph of components. We want to ensure that we receive pairs of color and depth images that correspond to the same originating time in the real world regardless of when they arrive in wall clock time at our block of code. To do this we use `Join()`. The operator buffers incoming messages and fuses them in pairs based on their originating times. We'll see later how `Join()` can also be used with a tolerance window to relax the requirement of _exactly_ matching originating times while still guaranteeing reproducibility. + +Additionally, we need the `DepthDeviceCalibrationInfo` to correlate the physical poses of the two cameras involved. This comes as a single message on another stream. Here we use `Pair()` to fuse this with the other data we receive; this time _without_ ensuring synchronicity. To learn more about the different types of fusion and synchronization operators available you can [visit this in-depth tutorial.](https://github.com/microsoft/psi/wiki/Synchronization) + +The result of the consecutive `Join()` and `Pair()` operators is a stream of tuple `message` which we can unpack with `var (color, depth, calib) = message`. + +```csharp +// consuming color, depth, and calibration +azureKinectSensor.ColorImage + .Resize(widthOutput, heightOutput) + .Join(azureKinectSensor.DepthImage) + .Pair(azureKinectSensor.DepthDeviceCalibrationInfo) + .Do(message => +{ + var (color, depth, calib) = message; + + ... + + }); +``` + +The `Microsoft.Psi.Calibration` namespace provides a number of useful functions for dealing with depth information via the `DepthExtensions` static class. We'll use `ProjectToCameraSpace()` to get the depth at each color image pixel. Any pixel known to be beyond the `maxDepth` threshold will be rendered blank. + +```csharp +var d = DepthExtensions.ProjectToCameraSpace(calib, new Point2D(x / scaleFactorWidth, y / scaleFactorHeight), depth); +if (!d.HasValue || d.Value.Z < maxDepth) +{ + var p = bitmap.GetPixel(x, y); + sb.Append(" .:-=+*#%@"[(int)((p.R + p.G + p.B) / 76.5)]); +} +else +{ + sb.Append(' '); // subtract background +} +``` + +# Using the Inertial Measurement Unit (IMU) Stream + +The Azure Kinect provides inertial information as well. A gyro gives instantaneous angular speed when the device is physically rotated and an accelerometer gives linear acceleration. + +We will assume that the device is relatively stationary and will used accelerometer values to measure the direction of gravity. With this we can rotate the output image to remain upright even as the device is physically turned on its side or upside down; much like mobile phones commonly do. + +While `OutputColor` and `OutputDepth` are configured to `true` by default, `OutputIMU` is not. We'll first enable this in the configuration passed in when constructing the sensor. + +```csharp +var azureKinectSensor = new AzureKinectSensor( + pipeline, + new AzureKinectSensorConfiguration() + { + ColorResolution = resolution, + CameraFPS = FPS.FPS15, + OutputImu = true, + }); +``` + +As with the other streams, we will `Join()` with the `Imu` stream. Unlike the color and depth streams, the IMU information flows at a higher rate. It does not obey the `CameraFPS` setting. By default `Join()` correlates messages by _exactly_ matching originating times. This will not work with the IMU because it's on a different cadence. We do want to take samples that are _reasonably_ near to each camera frame. The `Join()` operator allows us to specify what be mean by _reasonably near_; for instance, we can match messages within 10 milliseconds by using `.Join(azureKinectSensor.Imu, TimeSpan.FromMilliseconds(10))`. + +```csharp + // consuming color, depth, IMU, and calibration + azureKinectSensor.ColorImage.Resize(widthOutput, heightOutput) + .Join(azureKinectSensor.DepthImage) + .Join(azureKinectSensor.Imu, TimeSpan.FromMilliseconds(10)) + .Pair(azureKinectSensor.DepthDeviceCalibrationInfo) + .Do(message => + { + var (color, depth, imu, calib) = message; + + ... + + }); +``` + +To determine the orientation we observe the pull of gravity along each axis. + +```csharp +// determine camera orientation from IMU +SensorOrientation ImuOrientation(ImuSample imu) +{ + const double halfGravity = 9.8 / 2; // G ≈ 9.8m/s² + return + (imu.AccelerometerSample.Z > halfGravity) ? SensorOrientation.Flip180 : + (imu.AccelerometerSample.Y > halfGravity) ? SensorOrientation.Clockwise90 : + (imu.AccelerometerSample.Y < -halfGravity) ? SensorOrientation.CounterClockwise90 : + SensorOrientation.Default; // upright +} +``` + +We will enumerate pixels in the order required to render upright (from right-to-left, bottom-to-top when the device is upside down for example). + +```csharp +// enumerate image coordinates while correcting for orientation +(IEnumerable, IEnumerable, bool) EnumerateCoordinates(SensorOrientation orientation) +{ + var w = Enumerable.Range(0, widthOutput); + var h = Enumerable.Range(0, heightOutput); + switch (orientation) + { + case SensorOrientation.Clockwise90: return (h.Reverse(), w, true); + case SensorOrientation.Flip180: return (w.Reverse(), h.Reverse(), false); + case SensorOrientation.CounterClockwise90: return (h, w.Reverse(), true); + default: return (w, h, false); // normal + } +} +``` + +Changing our nested `for` loops to this order, while swapping `x` and `y` when sideways. + +```csharp +var orientation = ImuOrientation(imu); +var (horizontal, vertical, swap) = EnumerateCoordinates(orientation); +foreach (var j in vertical.Where(n => n % 2 == 0)) +{ + foreach (var i in horizontal) + { + var (x, y) = swap ? (j, i) : (i, j); + + ... + } + + sb.Append(Environment.NewLine); +} +``` + +To prevent displaying characters from previous frames we'll keep track of the `lastOrientation` and clear the console when changing between landscape and portrait renderings. + +```csharp +SensorOrientation lastOrientation = (SensorOrientation)(-1); // detect orientation changes + +... + +// clear console when orientation changes +if (orientation != lastOrientation) +{ + Console.Clear(); + lastOrientation = orientation; +} +``` + +# Body Tracking + +Using the depth and infrared image streams, the Azure Kinect may be used to [track one or many human bodies, including detailed joint positions](https://docs.microsoft.com/en-us/azure/kinect-dk/body-joints). + +The body tracker can make use of a CUDA supported GPU if one is available (and configured with `CpuOnlyMode = false`). The following other parameters are available as part of the `AzureKinectBodyTrackerConfiguration`: + +- **TemporalSmoothing:** The temporal smoothing to use across frames for the body tracker. Set between 0 for no smoothing and 1 for full smoothing (default 0.5 seconds). +- **CpuOnlyMode:** Whether to perform body tracking computation only on the CPU. If false, the tracker requires CUDA hardware and drivers (default `false`). +- **SensorOrientation:** The sensor orientation used by body tracking (default upright). + +We configure the Azure Kinect to perform body tracking by providing a body tracker configuration, as follows: + +```csharp +var azureKinectSensor = new AzureKinect( + pipeline, + new AzureKinectSensorConfiguration() + { + OutputImu = true, + ColorResolution = resolution, + DepthMode = DepthMode.WFOV_Unbinned, + CameraFPS = FPS.FPS15, + BodyTrackerConfiguration = + new AzureKinectBodyTrackerConfiguration() + { + CpuOnlyMode = true, // false if CUDA supported GPU available + }, + }); +``` + +Now we can fuse in and make use of the `Bodies` stream. + +```csharp +// consuming color, depth, IMU, body tracking, calibration +azureKinectSensor.ColorImage.Resize(widthOutput, heightOutput) + .Join(azureKinectSensor.DepthImage) + .Join(azureKinectSensor.Imu, TimeSpan.FromMilliseconds(10)) + .Pair(azureKinectSensor.Bodies) + .Pair(azureKinectSensor.DepthDeviceCalibrationInfo) + .Do(message => +{ + var (color, depth, imu, bodies, calib) = message; + + ... + + }); +``` + +Notice that we use `Pair()` to fuse in the `Bodies` stream. The `Bodies` stream generally comes at a lower frequency than the camera image streams. If we were to use a `Join()` here we would have perfectly synchronized data. That is, bodies in sync with color and depth image frames. However the frame rate would drop significantly (especially in `CpuOnlyMode`). + +We could use a tolerance `TimeSpan` as we did with the `Imu` stream, but `Join()` has an interesting side effect to consider. Generally before a joined message may be emitted, the _next_ messages outside of the tolerance window must first be seen to ensure that the _best_ match within the window has been chosen. This necessarily introduces some latency. With the high frequency `Imu` stream, this was fine. With the much lower frequency `Bodies` stream this would cause a significant delay. Instead of `Join()` we choose to use `Pair()` which will _immediately_ fuse the last body message (in wall clock time). No latency, but also no synchronicity or reproducibility guarantees. Reproducibility is the primary difference between `Join()` and `Pair()` as explained in more detail in the [synchronization tutorial.](https://github.com/microsoft/psi/wiki/Synchronization) + +Finally, we highlight each person's head with a red block; correlating the `Head` joint with the color image pixel coordinate using `ToColorSpace()`. + +```csharp +// overlay head tracking +if (orientation == SensorOrientation.Default) +{ + // body tracking works only in initially configured orientation + Console.BackgroundColor = ConsoleColor.Red; + foreach (var body in bodies) + { + var p = calib.ToColorSpace(body.Joints[JointId.Head].Pose.Origin); + var x = (int)(p.X * scaleFactorWidth); + var y = (int)(p.Y * scaleFactorHeight / 2); + if (x > 0 && x < widthOutput && y > 0 && y < heightOutput) + { + Console.SetCursorPosition(x, y / 2); + Console.Write(' '); + } + } + + Console.BackgroundColor = ConsoleColor.Black; +} +``` + +## Decoupled Body Tracking Component + +Body tracking can also be performed without a live, running Azure Kinect sensor, if the depth, IR, and calibration information streams are available. This functionality is implemented by the `AzureKinectBodyTracker` component. + +```csharp +var bodyTracker = new AzureKinectBodyTracker( + pipeline, + new AzureKinectBodyTrackerConfiguration() + { + CpuOnlyMode = true, // false if CUDA supported GPU available + }); +``` + +This component consumes `DepthImage` and `InfraredImage` streams as well as a the 'AzureKinectSensorCalibration` stream that contains the sensor calibration information; these streams are produced by the `AzureKinectSensor` component, and can be persisted and leveraged for running the tracker at a later time. + +For instace, assuming these streams were persisted into a store, we can open them up as follows: + +```csharp +var store = Store.Open(pipeline, "MyRecording", @"C:\Data"); +var depth = store.OpenStream>("DepthImage"); // DepthImage +var infrared = store.OpenStream>("InfraredStream"); // ColorImage +var calibration = store.OpenStream("AzureKinectSensorCalibration"); // AzureKinectSensorCalibration +``` + +The depth and infrared streams are joined and piped to the body tracker. The calibration stream is also separately piped to the body tracker. The tracker generates the resulting bodies on it's `Bodies` output stream. + +```csharp +depth.Join(infrared).PipeTo(bodyTracker); +calibration.PipeTo(bodyTracker.AzureKinectSensorCalibration); + +var bodies = bodyTracker.Bodies; +``` \ No newline at end of file diff --git a/Samples/AzureKinectSample/SampleOutput.png b/Samples/AzureKinectSample/SampleOutput.png new file mode 100644 index 0000000000000000000000000000000000000000..c00f02f2fdb480568801d5480b1efe8d37cef521 GIT binary patch literal 128336 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 literal 0 HcmV?d00001 diff --git a/Samples/AzureKinectSample/build.sh b/Samples/AzureKinectSample/build.sh new file mode 100644 index 00000000..99908579 --- /dev/null +++ b/Samples/AzureKinectSample/build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +dotnet build ./AzureKinectSample.csproj diff --git a/Samples/AzureKinectSample/stylecop.json b/Samples/AzureKinectSample/stylecop.json new file mode 100644 index 00000000..6f09427e --- /dev/null +++ b/Samples/AzureKinectSample/stylecop.json @@ -0,0 +1,16 @@ +{ + // ACTION REQUIRED: This file was automatically added to your project, but it + // will not take effect until additional steps are taken to enable it. See the + // following page for additional information: + // + // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md + + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "documentationRules": { + "companyName": "Microsoft Corporation", + "copyrightText": "Copyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the MIT license.", + "xmlHeader": false + } + } +} \ No newline at end of file diff --git a/Samples/KinectSample/KinectSample.csproj b/Samples/KinectSample/KinectSample.csproj index d81d614b..1d1465ab 100644 --- a/Samples/KinectSample/KinectSample.csproj +++ b/Samples/KinectSample/KinectSample.csproj @@ -1,8 +1,7 @@  net472 - false - false + ../../Build/Sample.Psi.ruleset Exe MultiModalSpeechDetection.Program @@ -43,6 +42,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Samples/KinectSample/README.md b/Samples/KinectSample/README.md index 4174ec8f..8c51f295 100644 --- a/Samples/KinectSample/README.md +++ b/Samples/KinectSample/README.md @@ -1,6 +1,6 @@ # Kinect Sample -This sample demostrates how to use the Kinect sensor and how to use the `Join()` operator to synchronize streams. The sample uses the +This sample demonstrates how to use the Kinect sensor and how to use the `Join()` operator to synchronize streams. The sample uses the Kinect's face tracking and the audio and video streams to detect when a user is speaking. The sample compiles and runs on Windows. __NOTE__: In order to run this sample, you must have a valid Cognitive Services Speech subscription key. You may enter this key at runtime, or set it in the static `AzureSubscriptionKey` variable on the `OperatorExtensions` class. For more information on how to obtain a subscription key for the Azure Speech Service, see [https://docs.microsoft.com/en-us/azure/cognitive-services/cognitive-services-apis-create-account](https://docs.microsoft.com/en-us/azure/cognitive-services/cognitive-services-apis-create-account) diff --git a/Samples/LinuxSpeechSample/LinuxSpeechSample.csproj b/Samples/LinuxSpeechSample/LinuxSpeechSample.csproj index 00ca4e5d..c5d63ebb 100644 --- a/Samples/LinuxSpeechSample/LinuxSpeechSample.csproj +++ b/Samples/LinuxSpeechSample/LinuxSpeechSample.csproj @@ -2,21 +2,21 @@ Exe - netcoreapp2.0 + netcoreapp3.1 ../../Build/Sample.Psi.ruleset true - bin\Release\netstandard2.0\LinuxSpeechSample.xml + bin\Release\netcoreapp3.1\LinuxSpeechSample.xml ../../Build/Sample.Psi.ruleset true - bin\Debug\netstandard2.0\LinuxSpeechSample.xml + bin\Debug\netcoreapp3.1\LinuxSpeechSample.xml @@ -33,6 +33,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Samples/LinuxSpeechSample/README.md b/Samples/LinuxSpeechSample/README.md index 244a5e74..1a14ff6d 100644 --- a/Samples/LinuxSpeechSample/README.md +++ b/Samples/LinuxSpeechSample/README.md @@ -1,6 +1,6 @@ # Speech Sample -This sample demostrates how to build a simple speech recognition application using the audio and speech components on Linux. +This sample demonstrates how to build a simple speech recognition application using the audio and speech components on Linux. __NOTES:__ diff --git a/Samples/OpenCVSample/OpenCVSample.Interop/AssemblyInfo.cpp b/Samples/OpenCVSample/OpenCVSample.Interop/AssemblyInfo.cpp index 8b355d8d..b691ac18 100644 --- a/Samples/OpenCVSample/OpenCVSample.Interop/AssemblyInfo.cpp +++ b/Samples/OpenCVSample/OpenCVSample.Interop/AssemblyInfo.cpp @@ -13,8 +13,8 @@ using namespace System::Security::Permissions; [assembly:AssemblyProductAttribute(L"OpenCVSampleInterop")]; [assembly:AssemblyCompanyAttribute(L"Microsoft Corporation")]; [assembly:AssemblyCopyrightAttribute(L"Copyright (c) Microsoft Corporation. All rights reserved.")]; -[assembly:AssemblyVersionAttribute("0.11.82.2")]; -[assembly:AssemblyFileVersionAttribute("0.11.82.2")]; -[assembly:AssemblyInformationalVersionAttribute("0.11.82.2-beta")]; +[assembly:AssemblyVersionAttribute("0.12.53.2")]; +[assembly:AssemblyFileVersionAttribute("0.12.53.2")]; +[assembly:AssemblyInformationalVersionAttribute("0.12.53.2-beta")]; [assembly:ComVisible(false)]; [assembly:CLSCompliantAttribute(true)]; diff --git a/Samples/OpenCVSample/OpenCVSample.Interop/OpenCVSample.Interop.vcxproj b/Samples/OpenCVSample/OpenCVSample.Interop/OpenCVSample.Interop.vcxproj index 530e4684..73ea77bc 100644 --- a/Samples/OpenCVSample/OpenCVSample.Interop/OpenCVSample.Interop.vcxproj +++ b/Samples/OpenCVSample/OpenCVSample.Interop/OpenCVSample.Interop.vcxproj @@ -38,7 +38,7 @@ true true Unicode - v141 + v142 Spectre @@ -46,7 +46,7 @@ false true Unicode - v141 + v142 Spectre @@ -162,4 +162,4 @@ copy $(OpenCVDlls) $(OutDir)..\..\..\OpenCVSample\bin\Release $(BuildDependsOn) CheckVariable - + \ No newline at end of file diff --git a/Samples/OpenCVSample/OpenCVSample/MainWindow.xaml.cs b/Samples/OpenCVSample/OpenCVSample/MainWindow.xaml.cs index 891dacb8..dfa7817a 100644 --- a/Samples/OpenCVSample/OpenCVSample/MainWindow.xaml.cs +++ b/Samples/OpenCVSample/OpenCVSample/MainWindow.xaml.cs @@ -42,7 +42,7 @@ namespace Microsoft.Psi.Samples.OpenCV (srcImage, env, e) => { // Our lambda here is called with each image sample from our stream and calls OpenCV to convert - // the image into a grayscale image. We then post the resulting gray scale image to our event queu + // the image into a grayscale image. We then post the resulting gray scale image to our event queue // so that the Psi pipeline will send it to the next component. // Have Psi allocate a new image. We will convert the current image ('srcImage') into this new image. diff --git a/Samples/OpenCVSample/OpenCVSample/OpenCVSample.csproj b/Samples/OpenCVSample/OpenCVSample/OpenCVSample.csproj index 214426b6..94dcb93c 100644 --- a/Samples/OpenCVSample/OpenCVSample/OpenCVSample.csproj +++ b/Samples/OpenCVSample/OpenCVSample/OpenCVSample.csproj @@ -1,22 +1,40 @@ - - + net472 false OpenCVSample WinExe + ../../../Build/Sample.Psi.ruleset bin\Debug\ x64 + bin\Debug\OpenCVSample.xml + true bin\Release\ x64 + bin\Release\OpenCVSample.xml + true + + + + + + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Samples/RosArmControlSample/RosArmControlSample.csproj b/Samples/RosArmControlSample/RosArmControlSample.csproj index d62d8312..3c2501b3 100644 --- a/Samples/RosArmControlSample/RosArmControlSample.csproj +++ b/Samples/RosArmControlSample/RosArmControlSample.csproj @@ -2,21 +2,21 @@ Exe - netcoreapp2.0 + netcoreapp3.1 ../../Build/Sample.Psi.ruleset true - bin\Debug\netstandard2.0\RosArmControlSample.xml + bin\Debug\netcoreapp3.1\RosArmControlSample.xml ../../Build/Sample.Psi.ruleset true - bin\Release\netstandard2.0\RosArmControlSample.xml + bin\Release\netcoreapp3.1\RosArmControlSample.xml @@ -33,6 +33,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Samples/RosArmControlSample/UArm.cs b/Samples/RosArmControlSample/UArm.cs index 4a01df67..b872051e 100644 --- a/Samples/RosArmControlSample/UArm.cs +++ b/Samples/RosArmControlSample/UArm.cs @@ -113,7 +113,7 @@ namespace ArmControlROSSample } ///

- /// Set absolute cartesian position. + /// Set absolute Cartesian position. /// /// Coordinate X. /// Coordinate Y. @@ -124,7 +124,7 @@ namespace ArmControlROSSample } /// - /// Set relative cartesian position. + /// Set relative Cartesian position. /// /// Delta X. /// Delta Y. diff --git a/Samples/RosArmControlSample/UArmComponent.cs b/Samples/RosArmControlSample/UArmComponent.cs index 954c5c8f..7efb16e9 100644 --- a/Samples/RosArmControlSample/UArmComponent.cs +++ b/Samples/RosArmControlSample/UArmComponent.cs @@ -43,12 +43,12 @@ namespace ArmControlROSSample public Receiver Pump { get; private set; } /// - /// Gets receiver of absolute cartesian positions. + /// Gets receiver of absolute Cartesian positions. /// public Receiver<(float, float, float)> AbsolutePosition { get; private set; } /// - /// Gets receiver of relative cartesian positions. + /// Gets receiver of relative Cartesian positions. /// public Receiver<(float, float, float)> RelativePosition { get; private set; } diff --git a/Samples/RosTurtleSample/RosTurtleSample.csproj b/Samples/RosTurtleSample/RosTurtleSample.csproj index 98ae03ce..e16ba02b 100644 --- a/Samples/RosTurtleSample/RosTurtleSample.csproj +++ b/Samples/RosTurtleSample/RosTurtleSample.csproj @@ -2,21 +2,21 @@ Exe - netcoreapp2.0 + netcoreapp3.1 ../../Build/Sample.Psi.ruleset true - bin\Debug\netstandard2.0\RosTurtleSample.xml + bin\Debug\netcoreapp3.1\RosTurtleSample.xml ../../Build/Sample.Psi.ruleset true - bin\Release\netstandard2.0\RosTurtleSample.xml + bin\Release\netcoreapp3.1\RosTurtleSample.xml @@ -34,6 +34,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Samples/SpeechSample/Program.cs b/Samples/SpeechSample/Program.cs index 841c8618..c8fc93dd 100644 --- a/Samples/SpeechSample/Program.cs +++ b/Samples/SpeechSample/Program.cs @@ -116,7 +116,7 @@ namespace Microsoft.Psi.Samples.SpeechSample { // Create the AudioCapture component to capture audio from the default device in 16 kHz 1-channel // PCM format as required by both the voice activity detector and speech recognition components. - audioInput = new AudioCapture(pipeline, new AudioCaptureConfiguration() { OutputFormat = WaveFormat.Create16kHz1Channel16BitPcm() }); + audioInput = new AudioCapture(pipeline, WaveFormat.Create16kHz1Channel16BitPcm()); } // Create System.Speech recognizer component @@ -202,7 +202,7 @@ namespace Microsoft.Psi.Samples.SpeechSample { // Create the AudioCapture component to capture audio from the default device in 16 kHz 1-channel // PCM format as required by both the voice activity detector and speech recognition components. - audioInput = new AudioCapture(pipeline, new AudioCaptureConfiguration() { OutputFormat = WaveFormat.Create16kHz1Channel16BitPcm() }); + audioInput = new AudioCapture(pipeline, WaveFormat.Create16kHz1Channel16BitPcm()); } // Perform voice activity detection using the voice activity detector component diff --git a/Samples/SpeechSample/README.md b/Samples/SpeechSample/README.md index 2b882f6d..80da6d2a 100644 --- a/Samples/SpeechSample/README.md +++ b/Samples/SpeechSample/README.md @@ -1,6 +1,6 @@ # Speech Sample -This sample demostrates how to build a simple speech recognition application using a number of different audio and speech components. In addition, it also demonstrates data logging and replay of logged data. The sample builds and runs on Windows. +This sample demonstrates how to build a simple speech recognition application using a number of different audio and speech components. In addition, it also demonstrates data logging and replay of logged data. The sample builds and runs on Windows. __NOTES:__ diff --git a/Samples/SpeechSample/SpeechSample.csproj b/Samples/SpeechSample/SpeechSample.csproj index c4a5db0c..f9fdcc6b 100644 --- a/Samples/SpeechSample/SpeechSample.csproj +++ b/Samples/SpeechSample/SpeechSample.csproj @@ -1,8 +1,7 @@  net472 - false - false + ../../Build/Sample.Psi.ruleset Exe Microsoft.Psi.Samples.SpeechSample.Program @@ -38,6 +37,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Samples/WebcamWithAudioSample/Program.cs b/Samples/WebcamWithAudioSample/Program.cs index e5ed815a..d9a30825 100644 --- a/Samples/WebcamWithAudioSample/Program.cs +++ b/Samples/WebcamWithAudioSample/Program.cs @@ -70,7 +70,7 @@ namespace Microsoft.Psi.Samples.WebcamWithAudioSample MediaCapture webcam = new MediaCapture(pipeline, 1920, 1080, 30); // Create the AudioCapture component to capture audio from the default device in 16 kHz 1-channel - IProducer audioInput = new AudioCapture(pipeline, new AudioCaptureConfiguration() { OutputFormat = WaveFormat.Create16kHz1Channel16BitPcm() }); + IProducer audioInput = new AudioCapture(pipeline, WaveFormat.Create16kHz1Channel16BitPcm()); var images = webcam.Out.EncodeJpeg(90, DeliveryPolicy.LatestMessage).Out; diff --git a/Samples/WebcamWithAudioSample/README.md b/Samples/WebcamWithAudioSample/README.md index ab35c27c..3bd6de6b 100644 --- a/Samples/WebcamWithAudioSample/README.md +++ b/Samples/WebcamWithAudioSample/README.md @@ -1,4 +1,4 @@ # WebCam + Audio Sample -This sample demostrates how to build a simple application that records audio and video from a webcam and displays the playback using +This sample demonstrates how to build a simple application that records audio and video from a webcam and displays the playback using the Platform for Situated Intelligence Studio's visualization client. The sample builds and runs on Windows. \ No newline at end of file diff --git a/Samples/WebcamWithAudioSample/WebcamWithAudioSample.csproj b/Samples/WebcamWithAudioSample/WebcamWithAudioSample.csproj index e0319beb..fc109cd4 100644 --- a/Samples/WebcamWithAudioSample/WebcamWithAudioSample.csproj +++ b/Samples/WebcamWithAudioSample/WebcamWithAudioSample.csproj @@ -1,8 +1,7 @@  net472 - false - false + ../../Build/Sample.Psi.ruleset Exe Microsoft.Psi.Samples.WebcamWithAudioSample.Program @@ -40,6 +39,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Samples/WpfSample/README.md b/Samples/WpfSample/README.md index 8987da40..ad1fc964 100644 --- a/Samples/WpfSample/README.md +++ b/Samples/WpfSample/README.md @@ -1,4 +1,4 @@ # WPF Sample -This sample demostrates how to build a simple application based on Windows Presentation Foundation (WPF). The application +This sample demonstrates how to build a simple application based on Windows Presentation Foundation (WPF). The application connects to a web camera and displays the video stream. The sample builds and runs on Windows. diff --git a/Samples/WpfSample/WpfSample.csproj b/Samples/WpfSample/WpfSample.csproj index 3082d4aa..3d9b0522 100644 --- a/Samples/WpfSample/WpfSample.csproj +++ b/Samples/WpfSample/WpfSample.csproj @@ -4,8 +4,7 @@ WinExe PsiWpfSample.App - false - false + ../../Build/Sample.Psi.ruleset true @@ -33,6 +32,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Sources/Audio/Microsoft.Psi.Audio.Linux/AudioCapture.cs b/Sources/Audio/Microsoft.Psi.Audio.Linux/AudioCapture.cs index e29b6e04..64710d60 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Linux/AudioCapture.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Linux/AudioCapture.cs @@ -126,11 +126,11 @@ namespace Microsoft.Psi.Audio { LinuxAudioInterop.Read(this.audioDevice, buf, blockSize); } - catch (Exception ex) + catch { if (this.audioDevice != null) { - throw ex; + throw; } } diff --git a/Sources/Audio/Microsoft.Psi.Audio.Linux/LinuxAudioInterop.cs b/Sources/Audio/Microsoft.Psi.Audio.Linux/LinuxAudioInterop.cs index 814d42cc..1d8f1384 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Linux/LinuxAudioInterop.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Linux/LinuxAudioInterop.cs @@ -10,7 +10,7 @@ namespace Microsoft.Psi.Audio /// Structs, enums and static methods for interacting with Advanced Linux Sound Architecture (ALSA) drivers. /// /// - /// This implimentation is based on this spec: http://www.alsa-project.org/alsa-doc/alsa-lib + /// This implementation is based on this spec: http://www.alsa-project.org/alsa-doc/alsa-lib /// The only dependency is on `asound`, which comes with the system. /// internal static class LinuxAudioInterop @@ -347,56 +347,24 @@ namespace Microsoft.Psi.Audio internal static unsafe AudioDevice Open(string name, Mode mode, int rate = 44100, int channels = 1, Format format = Format.S16LE, Access access = Access.Interleaved) { void* handle; - if (Open(&handle, name, (int)mode, 0) != 0) - { - throw new ArgumentException("Open failed."); - } + CheckResult(NativeMethods.Open(&handle, name, (int)mode, 0), "Open failed"); void* param; - if (HardwareParamsMalloc(¶m) != 0) - { - throw new ArgumentException("Hardware params malloc failed."); - } - - if (HardwareParamsAny(handle, param) != 0) - { - throw new ArgumentException("Hardware params any failed."); - } - - if (HardwareParamsSetAccess(handle, param, (int)access) != 0) - { - throw new ArgumentException("Hardware params set access failed."); - } - - if (HardwareParamsSetFormat(handle, param, (int)format) != 0) - { - throw new ArgumentException("Hardware params set format failed."); - } + CheckResult(NativeMethods.HardwareParamsMalloc(¶m), "Hardware params malloc failed"); + CheckResult(NativeMethods.HardwareParamsAny(handle, param), "Hardware params any failed"); + CheckResult(NativeMethods.HardwareParamsSetAccess(handle, param, (int)access), "Hardware params set access failed"); + CheckResult(NativeMethods.HardwareParamsSetFormat(handle, param, (int)format), "Hardware params set format failed"); int* ratePtr = &rate; int dir = 0; int* dirPtr = &dir; - if (HardwareParamsSetRate(handle, param, ratePtr, dirPtr) != 0) - { - throw new ArgumentException("Hardware params set rate failed."); - } + CheckResult(NativeMethods.HardwareParamsSetRate(handle, param, ratePtr, dirPtr), "Hardware params set rate failed"); + CheckResult(NativeMethods.HardwareParamsSetChannels(handle, param, (uint)channels), "Hardware params set channels failed"); + CheckResult(NativeMethods.HardwareParams(handle, param), "Hardware set params failed"); - if (HardwareParamsSetChannels(handle, param, (uint)channels) != 0) - { - throw new ArgumentException("Hardware params set channels failed."); - } + NativeMethods.HardwareParamsFree(param); - if (HardwareParams(handle, param) != 0) - { - throw new ArgumentException("Hardware set params failed."); - } - - HardwareParamsFree(param); - - if (PrepareHandle(handle) != 0) - { - throw new ArgumentException("Prepare handle failed."); - } + CheckResult(NativeMethods.PrepareHandle(handle), "Prepare handle failed"); return new AudioDevice(handle); } @@ -411,18 +379,23 @@ namespace Microsoft.Psi.Audio { fixed (void* bufferPtr = buffer) { - long err = Read(device.Handle, bufferPtr, (ulong)blockSize); + long err; + if (Environment.Is64BitOperatingSystem) + { + err = NativeMethods.Read64(device.Handle, bufferPtr, (ulong)blockSize); + } + else + { + err = NativeMethods.Read32(device.Handle, bufferPtr, (uint)blockSize); + } + if (err < 0) { - err = Recover(device.Handle, (int)err, 1); - if (err < 0) - { - throw new ArgumentException("Read recovery failed."); - } + CheckResult(NativeMethods.Recover(device.Handle, (int)err, 1), "Read recovery failed"); } else if (err != blockSize) { - throw new ArgumentException("Read failed."); + throw new ArgumentException($"Read failed (ALSA error code: {err})."); } } } @@ -441,14 +414,18 @@ namespace Microsoft.Psi.Audio fixed (void* bufferPtr = buffer) { byte* pb = (byte*)bufferPtr + offset; - err = Write(device.Handle, pb, (ulong)blockSize); + if (Environment.Is64BitOperatingSystem) + { + err = NativeMethods.Write64(device.Handle, pb, (ulong)blockSize); + } + else + { + err = NativeMethods.Write32(device.Handle, pb, (uint)blockSize); + } + if (err < 0) { - err = Recover(device.Handle, (int)err, 1); - if (err < 0) - { - throw new ArgumentException("Write recovery failed."); - } + CheckResult(NativeMethods.Recover(device.Handle, (int)err, 1), "Write recovery failed"); } else if (err != blockSize) { @@ -464,53 +441,24 @@ namespace Microsoft.Psi.Audio /// Device handle. internal static unsafe void Close(AudioDevice device) { - if (CloseHandle(device.Handle) != 0) + if (NativeMethods.CloseHandle(device.Handle) != 0) { throw new ArgumentException("Close failed."); } } - [DllImport("asound", EntryPoint = "snd_pcm_open")] - private static unsafe extern int Open(void** handle, [MarshalAs(UnmanagedType.LPStr)]string name, int capture, int mode); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_malloc")] - private static unsafe extern int HardwareParamsMalloc(void** param); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_any")] - private static unsafe extern int HardwareParamsAny(void* handle, void* param); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_access")] - private static unsafe extern int HardwareParamsSetAccess(void* handle, void* param, int access); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_format")] - private static unsafe extern int HardwareParamsSetFormat(void* handle, void* param, int format); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_rate_near")] - private static unsafe extern int HardwareParamsSetRate(void* handle, void* param, int* rate, int* dir); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_channels")] - private static unsafe extern int HardwareParamsSetChannels(void* handle, void* param, uint channels); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params")] - private static unsafe extern int HardwareParams(void* handle, void* param); - - [DllImport("asound", EntryPoint = "snd_pcm_hw_params_free")] - private static unsafe extern void HardwareParamsFree(void* param); - - [DllImport("asound", EntryPoint = "snd_pcm_prepare")] - private static unsafe extern int PrepareHandle(void* handle); - - [DllImport("asound", EntryPoint = "snd_pcm_recover")] - private static unsafe extern int Recover(void* handle, int error, int silent); - - [DllImport("asound", EntryPoint = "snd_pcm_readi")] - private static unsafe extern long Read(void* handle, void* buffer, ulong blockSize); - - [DllImport("asound", EntryPoint = "snd_pcm_writei")] - private static unsafe extern long Write(void* handle, void* buffer, ulong blockSize); - - [DllImport("asound", EntryPoint = "snd_pcm_close")] - private static unsafe extern int CloseHandle(void* handle); + /// + /// Check result code and throw argument exception upon failure from ALSA APIs. + /// + /// Result code returned by ALSA API. + /// Error message in case of failure. + private static void CheckResult(long result, string message) + { + if (result != 0) + { + throw new ArgumentException($"{message} (ALSA error code: {result})."); + } + } /// /// Audio device handle. @@ -532,5 +480,56 @@ namespace Microsoft.Psi.Audio /// public unsafe void* Handle { get; private set; } } + + private static class NativeMethods + { + [DllImport("asound", EntryPoint = "snd_pcm_open", BestFitMapping = false, ThrowOnUnmappableChar = true)] + internal static unsafe extern int Open(void** handle, [MarshalAs(UnmanagedType.LPStr)]string name, int capture, int mode); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_malloc")] + internal static unsafe extern int HardwareParamsMalloc(void** param); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_any")] + internal static unsafe extern int HardwareParamsAny(void* handle, void* param); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_access")] + internal static unsafe extern int HardwareParamsSetAccess(void* handle, void* param, int access); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_format")] + internal static unsafe extern int HardwareParamsSetFormat(void* handle, void* param, int format); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_rate_near")] + internal static unsafe extern int HardwareParamsSetRate(void* handle, void* param, int* rate, int* dir); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_set_channels")] + internal static unsafe extern int HardwareParamsSetChannels(void* handle, void* param, uint channels); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params")] + internal static unsafe extern int HardwareParams(void* handle, void* param); + + [DllImport("asound", EntryPoint = "snd_pcm_hw_params_free")] + internal static unsafe extern void HardwareParamsFree(void* param); + + [DllImport("asound", EntryPoint = "snd_pcm_prepare")] + internal static unsafe extern int PrepareHandle(void* handle); + + [DllImport("asound", EntryPoint = "snd_pcm_recover")] + internal static unsafe extern int Recover(void* handle, int error, int silent); + + [DllImport("asound", EntryPoint = "snd_pcm_readi")] + internal static unsafe extern int Read32(void* handle, void* buffer, uint blockSize); + + [DllImport("asound", EntryPoint = "snd_pcm_readi")] + internal static unsafe extern long Read64(void* handle, void* buffer, ulong blockSize); + + [DllImport("asound", EntryPoint = "snd_pcm_writei")] + internal static unsafe extern int Write32(void* handle, void* buffer, uint blockSize); + + [DllImport("asound", EntryPoint = "snd_pcm_writei")] + internal static unsafe extern long Write64(void* handle, void* buffer, ulong blockSize); + + [DllImport("asound", EntryPoint = "snd_pcm_close")] + internal static unsafe extern int CloseHandle(void* handle); + } } } diff --git a/Sources/Audio/Microsoft.Psi.Audio.Linux/Microsoft.Psi.Audio.Linux.csproj b/Sources/Audio/Microsoft.Psi.Audio.Linux/Microsoft.Psi.Audio.Linux.csproj index 79f661ec..80d2764d 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Linux/Microsoft.Psi.Audio.Linux.csproj +++ b/Sources/Audio/Microsoft.Psi.Audio.Linux/Microsoft.Psi.Audio.Linux.csproj @@ -36,6 +36,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCapture.cs b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCapture.cs index f5ec9c48..55d37f31 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCapture.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCapture.cs @@ -88,6 +88,16 @@ namespace Microsoft.Psi.Audio { } + /// + /// Initializes a new instance of the class with a specified output format. + /// + /// The pipeline to add the component to. + /// The output format to use. + public AudioCapture(Pipeline pipeline, WaveFormat outputFormat) + : this(pipeline, new AudioCaptureConfiguration() { OutputFormat = outputFormat }) + { + } + /// /// Gets the output stream of audio buffers. /// diff --git a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCaptureConfiguration.cs b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCaptureConfiguration.cs index 38a22a91..57cead24 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCaptureConfiguration.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioCaptureConfiguration.cs @@ -17,15 +17,6 @@ namespace Microsoft.Psi.Audio /// public AudioCaptureConfiguration() { - this.DeviceName = string.Empty; - this.TargetLatencyInMs = 20; - this.AudioEngineBufferInMs = 500; - this.AudioLevel = -1; - this.Gain = 1.0f; - this.OptimizeForSpeech = false; - this.UseEventDrivenCapture = true; - this.DropOutOfOrderPackets = false; - this.OutputFormat = null; } /// @@ -37,7 +28,7 @@ namespace Microsoft.Psi.Audio /// static method. If not specified, the /// default recording device will be selected. /// - public string DeviceName { get; set; } + public string DeviceName { get; set; } = string.Empty; /// /// Gets or sets the target audio latency (pull capture mode only). @@ -52,7 +43,7 @@ namespace Microsoft.Psi.Audio /// is set to true. In event-driven capture mode, the latency /// is determined by the rate at which the audio engine signals that it has new data available. /// - public int TargetLatencyInMs { get; set; } + public int TargetLatencyInMs { get; set; } = 20; /// /// Gets or sets the audio engine buffer. @@ -66,7 +57,7 @@ namespace Microsoft.Psi.Audio /// audio packets fast enough. Setting this to a larger value reduces the likelihood of /// encountering glitches in the captured audio stream. /// - public int AudioEngineBufferInMs { get; set; } + public int AudioEngineBufferInMs { get; set; } = 500; /// /// Gets or sets the audio input level. @@ -76,7 +67,7 @@ namespace Microsoft.Psi.Audio /// between 0.0 and 1.0 inclusive. If not specified, the current level of the selected /// recording device will be left unchanged. /// - public double AudioLevel { get; set; } + public double AudioLevel { get; set; } = -1; /// /// Gets or sets the additional gain to be applied to the captured audio. @@ -86,7 +77,7 @@ namespace Microsoft.Psi.Audio /// audio signal. Values greater than 1.0 boost the audio signal, while values in the range /// of 0.0 to 1.0 attenuate it. The default value is 1.0 (no additional gain). /// - public float Gain { get; set; } + public float Gain { get; set; } = 1.0f; /// /// Gets or sets a value indicating whether the captured audio should be pre-processed for @@ -98,7 +89,7 @@ namespace Microsoft.Psi.Audio /// the audio for speech recognition applications. By default, this option is set to false. /// This feature may not be available for all capture devices. /// - public bool OptimizeForSpeech { get; set; } + public bool OptimizeForSpeech { get; set; } = false; /// /// Gets or sets a value indicating whether to use event-driven or pull capture mode. When using @@ -109,7 +100,7 @@ namespace Microsoft.Psi.Audio /// by the audio engine (up to an amount equivalent to ) should /// the application be unable to consume the audio data quickly enough. /// - public bool UseEventDrivenCapture { get; set; } + public bool UseEventDrivenCapture { get; set; } = true; /// /// Gets or sets a value indicating whether the component should @@ -118,7 +109,7 @@ namespace Microsoft.Psi.Audio /// /// This is for internal use only and may be removed in future versions. /// - public bool DropOutOfOrderPackets { get; set; } + public bool DropOutOfOrderPackets { get; set; } = false; /// /// Gets or sets the desired format for the captured audio. @@ -128,6 +119,6 @@ namespace Microsoft.Psi.Audio /// Use this to specify a different format for the Out stream of /// the component. /// - public WaveFormat OutputFormat { get; set; } + public WaveFormat OutputFormat { get; set; } = null; } } diff --git a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioPlayerConfiguration.cs b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioPlayerConfiguration.cs index 4e306348..42329051 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioPlayerConfiguration.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioPlayerConfiguration.cs @@ -17,14 +17,6 @@ namespace Microsoft.Psi.Audio /// public AudioPlayerConfiguration() { - this.DeviceName = string.Empty; - this.TargetLatencyInMs = 20; - this.BufferLengthSeconds = 0.1; - this.AudioLevel = -1; - this.Gain = 1.0f; - - // Defaults to 16 kHz, 16-bit, 1-channel PCM samples - this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// @@ -36,7 +28,7 @@ namespace Microsoft.Psi.Audio /// static method. If not specified, the /// default playback device will be selected. /// - public string DeviceName { get; set; } + public string DeviceName { get; set; } = string.Empty; /// /// Gets or sets the target audio latency. @@ -46,9 +38,9 @@ namespace Microsoft.Psi.Audio /// at a time. This in turn determines the latency of the audio output (i.e. the amount of lag /// between when the audio was available and when the corresponding sound is produced). For /// live audio playback, we normally want this to be small. By default, this value is set to - /// 20 milliseconds. Is is safe to leave this unchanged. + /// 20 milliseconds. It is safe to leave this unchanged. /// - public int TargetLatencyInMs { get; set; } + public int TargetLatencyInMs { get; set; } = 20; /// /// Gets or sets the maximum duration of audio that can be buffered for playback. @@ -57,7 +49,7 @@ namespace Microsoft.Psi.Audio /// This controls the amount of audio that can be buffered while waiting for the playback /// device to be ready to render it. The default value is 0.1 seconds. /// - public double BufferLengthSeconds { get; set; } + public double BufferLengthSeconds { get; set; } = 0.1; /// /// Gets or sets the audio output level. @@ -67,7 +59,7 @@ namespace Microsoft.Psi.Audio /// between 0.0 and 1.0 inclusive. If not specified, the current level of the selected /// playback device will be left unchanged. /// - public float AudioLevel { get; set; } + public float AudioLevel { get; set; } = -1; /// /// Gets or sets the additional gain to be applied to the audio data. @@ -77,7 +69,7 @@ namespace Microsoft.Psi.Audio /// signal. Values greater than 1.0 boost the audio signal, while values in the range /// of 0.0 to 1.0 attenuate it. The default value is 1.0 (no additional gain). /// - public float Gain { get; set; } + public float Gain { get; set; } = 1.0f; /// /// Gets or sets the input format of the audio stream. @@ -87,6 +79,6 @@ namespace Microsoft.Psi.Audio /// set, the component will attempt to infer the audio format /// from the messages arriving on the input stream. /// - public WaveFormat InputFormat { get; set; } + public WaveFormat InputFormat { get; set; } = WaveFormat.Create16kHz1Channel16BitPcm(); } } diff --git a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResampler.cs b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResampler.cs index 1f4fabbe..7479fc6a 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResampler.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResampler.cs @@ -184,7 +184,7 @@ namespace Microsoft.Psi.Audio timestamp + (10000000L * length / this.Configuration.OutputFormat.AvgBytesPerSec), DateTimeKind.Utc); - if (originatingTime < this.lastOutputPostTime) + if (originatingTime <= this.lastOutputPostTime) { // If the input audio packet is larger than the output packet (as determined by the // target latency), then the packet will be split into multiple packets for resampling. @@ -195,10 +195,10 @@ namespace Microsoft.Psi.Audio // This could happen if the two consecutive input packets overlap in time, for example // if an automatic system time adjustment occurred between the capture of the two packets. // These adjustments occur from time to time to account for system clock drift w.r.t. - // UTC time. In order to ensure that this does not lead to resampled output sub-packets - // regressing in time, we manually enforce the output originating time to be no less than - // that of the previous packet. - originatingTime = this.lastOutputPostTime; + // UTC time. As this could in result in output message originating times not advancing + // or even regressing, we check for this and ensure that they are always monotonically + // increasing. + originatingTime = this.lastOutputPostTime + TimeSpan.FromTicks(1); } // post the data to the output stream diff --git a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResamplerConfiguration.cs b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResamplerConfiguration.cs index 532889cf..62afd7af 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResamplerConfiguration.cs +++ b/Sources/Audio/Microsoft.Psi.Audio.Windows/AudioResamplerConfiguration.cs @@ -17,9 +17,6 @@ namespace Microsoft.Psi.Audio /// public AudioResamplerConfiguration() { - this.TargetLatencyInMs = 20; - this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); - this.OutputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// @@ -30,9 +27,9 @@ namespace Microsoft.Psi.Audio /// turn determines the latency of the audio output. The larger this value, the more audio /// data is carried in each and the longer the audio latency. For /// live audio capture, we normally want this value to be small as possible. By default, - /// this value is set to 20 milliseconds. Is is safe to leave this unchanged. + /// this value is set to 20 milliseconds. It is safe to leave this unchanged. /// - public int TargetLatencyInMs { get; set; } + public int TargetLatencyInMs { get; set; } = 20; /// /// Gets or sets the input format of the audio stream to be resampled. @@ -42,11 +39,11 @@ namespace Microsoft.Psi.Audio /// set, the component will attempt to infer the audio format /// from the messages arriving on the input stream. /// - public WaveFormat InputFormat { get; set; } + public WaveFormat InputFormat { get; set; } = WaveFormat.Create16kHz1Channel16BitPcm(); /// /// Gets or sets the output format for the resampled audio. /// - public WaveFormat OutputFormat { get; set; } + public WaveFormat OutputFormat { get; set; } = WaveFormat.Create16kHz1Channel16BitPcm(); } } diff --git a/Sources/Audio/Microsoft.Psi.Audio.Windows/Microsoft.Psi.Audio.Windows.csproj b/Sources/Audio/Microsoft.Psi.Audio.Windows/Microsoft.Psi.Audio.Windows.csproj index 15b8e47b..c0c73b89 100644 --- a/Sources/Audio/Microsoft.Psi.Audio.Windows/Microsoft.Psi.Audio.Windows.csproj +++ b/Sources/Audio/Microsoft.Psi.Audio.Windows/Microsoft.Psi.Audio.Windows.csproj @@ -30,6 +30,10 @@ + + all + runtime; build; native; contentfiles; analyzers + \ No newline at end of file diff --git a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractor.cs b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractor.cs index 31d934cf..40ad3dc1 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractor.cs +++ b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractor.cs @@ -17,7 +17,7 @@ namespace Microsoft.Psi.Audio /// public sealed class AcousticFeaturesExtractor : IConsumer { - private Connector inAudio; + private readonly Connector inAudio; /// /// Initializes a new instance of the class. @@ -43,11 +43,9 @@ namespace Microsoft.Psi.Audio float frameRate = configuration.FrameRateInHz; int frameSize = (int)((configuration.InputFormat.SamplesPerSec * configuration.FrameDurationInSeconds) + 0.5); int frameShift = (int)((configuration.InputFormat.SamplesPerSec / frameRate) + 0.5); - int frameOverlap = frameSize - frameShift; int bytesPerSample = configuration.InputFormat.BlockAlign; int bytesPerFrame = bytesPerSample * frameSize; int bytesPerFrameShift = bytesPerSample * frameShift; - int bytesPerOverlap = bytesPerFrame - bytesPerFrameShift; int fftSize = 2; while (fftSize < frameSize) { diff --git a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractorConfiguration.cs b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractorConfiguration.cs index 913d0502..f607f28a 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractorConfiguration.cs +++ b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/AcousticFeaturesExtractorConfiguration.cs @@ -34,23 +34,8 @@ namespace Microsoft.Psi.Audio public AcousticFeaturesExtractorConfiguration() { // Default parameters for acoustic features computation - this.FrameDurationInSeconds = 0.025f; - this.FrameRateInHz = 100.0f; - this.AddDither = true; - this.DitherScaleFactor = 1.0f; - this.StartFrequency = 250.0f; - this.EndFrequency = 7000.0f; - this.LowEndFrequency = 3000.0f; - this.HighStartFrequency = 2500.0f; - this.EntropyBandwidth = 2500.0f; - this.ComputeLogEnergy = true; - this.ComputeZeroCrossingRate = true; - this.ComputeFrequencyDomainEnergy = true; - this.ComputeLowFrequencyEnergy = true; - this.ComputeHighFrequencyEnergy = true; - this.ComputeSpectralEntropy = true; - this.ComputeFFT = false; - this.ComputeFFTPower = false; + this.computeFFT = false; + this.computeFFTPower = false; // Defaults to 16 kHz, 16-bit, 1-channel PCM samples this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); @@ -59,58 +44,78 @@ namespace Microsoft.Psi.Audio /// /// Gets or sets the duration of the frame of audio over which the acoustic features will be computed. /// - public float FrameDurationInSeconds { get; set; } + public float FrameDurationInSeconds { get; set; } = 0.025f; /// /// Gets or sets the frame rate at which the acoustic features will be computed. /// - public float FrameRateInHz { get; set; } + public float FrameRateInHz { get; set; } = 100.0f; /// /// Gets or sets a value indicating whether dither is to be applied to the audio data. /// - public bool AddDither { get; set; } + public bool AddDither { get; set; } = true; /// /// Gets or sets the scale factor by which the dither to be applied will be multiplied. /// A scale factor of 1.0 will result in a dither with a range of -1.0 to +1.0. /// - public float DitherScaleFactor { get; set; } + public float DitherScaleFactor { get; set; } = 1.0f; /// /// Gets or sets the start frequency for frequency-domain features. /// - public float StartFrequency { get; set; } + public float StartFrequency { get; set; } = 250.0f; /// /// Gets or sets the end frequency for frequency-domain features. /// - public float EndFrequency { get; set; } + public float EndFrequency { get; set; } = 7000.0f; /// /// Gets or sets the end frequency for low-frequency features. /// - public float LowEndFrequency { get; set; } + public float LowEndFrequency { get; set; } = 3000.0f; /// /// Gets or sets the start frequency for high-frequency features. /// - public float HighStartFrequency { get; set; } + public float HighStartFrequency { get; set; } = 2500.0f; /// /// Gets or sets the bandwidth for entropy features. /// - public float EntropyBandwidth { get; set; } + public float EntropyBandwidth { get; set; } = 2500.0f; /// /// Gets or sets a value indicating whether to compute the log energy stream. /// - public bool ComputeLogEnergy { get; set; } + public bool ComputeLogEnergy { get; set; } = true; /// /// Gets or sets a value indicating whether to compute the zero-crossing rate stream. /// - public bool ComputeZeroCrossingRate { get; set; } + public bool ComputeZeroCrossingRate { get; set; } = true; + + /// + /// Gets or sets a value indicating whether to compute the frequency domain energy stream. + /// + public bool ComputeFrequencyDomainEnergy { get; set; } = true; + + /// + /// Gets or sets a value indicating whether to compute the low frequency energy stream. + /// + public bool ComputeLowFrequencyEnergy { get; set; } = true; + + /// + /// Gets or sets a value indicating whether to compute the high frequency energy stream. + /// + public bool ComputeHighFrequencyEnergy { get; set; } = true; + + /// + /// Gets or sets a value indicating whether to compute the spectral entropy stream. + /// + public bool ComputeSpectralEntropy { get; set; } = true; /// /// Gets or sets a value indicating whether to compute the FFT stream. @@ -148,26 +153,6 @@ namespace Microsoft.Psi.Audio } } - /// - /// Gets or sets a value indicating whether to compute the frequency domain energy stream. - /// - public bool ComputeFrequencyDomainEnergy { get; set; } - - /// - /// Gets or sets a value indicating whether to compute the low frequency energy stream. - /// - public bool ComputeLowFrequencyEnergy { get; set; } - - /// - /// Gets or sets a value indicating whether to compute the high frequency energy stream. - /// - public bool ComputeHighFrequencyEnergy { get; set; } - - /// - /// Gets or sets a value indicating whether to compute the spectral entropy stream. - /// - public bool ComputeSpectralEntropy { get; set; } - /// /// Gets or sets the format of the audio stream. /// diff --git a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FastFourierTransform.cs b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FastFourierTransform.cs index a1240521..0f499f42 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FastFourierTransform.cs +++ b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FastFourierTransform.cs @@ -10,14 +10,12 @@ namespace Microsoft.Psi.Audio /// internal sealed class FastFourierTransform { - private int fftSize; // FFT size - private int windowSize; // Size of the data window. FFTSize - WindowSize = ZeroPadSize - private int fftPow2; // FFT size in form of POW of 2 - private int halfFftSize; + private readonly int fftSize; // FFT size + private readonly int windowSize; // Size of the data window. FFTSize - WindowSize = ZeroPadSize + private readonly int fftPow2; // FFT size in form of POW of 2 - private float[] wriFactors; // SinCos(theta) array - private float[] alignedWriFactors; // SinCos(theta) array - 16 byte aligned - private short[] revMap; + private readonly float[] alignedWriFactors; // SinCos(theta) array - 16 byte aligned + private readonly short[] revMap; /// /// Initializes a new instance of the class. @@ -28,17 +26,15 @@ namespace Microsoft.Psi.Audio { this.fftSize = fftSize; this.windowSize = windowSize; - this.halfFftSize = this.fftSize >> 1; this.fftPow2 = 1; int size = 2; while (size < fftSize) { - size = size << 1; + size <<= 1; this.fftPow2++; } this.alignedWriFactors = new float[this.fftSize * 2]; - this.wriFactors = new float[(this.fftSize * 2) + 20]; this.revMap = new short[this.fftSize / 2]; this.alignedWriFactors[0] = 1.0f; this.alignedWriFactors[1] = -1.0f; @@ -68,7 +64,7 @@ namespace Microsoft.Psi.Audio while (j >= k) { j -= k; - k = k >> 1; + k >>= 1; } j += k; @@ -240,7 +236,7 @@ namespace Microsoft.Psi.Audio kk += limit; limit = incr; - incr = incr + incr; + incr += incr; } float xr1, xi1, xr2, xi2; diff --git a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FrequencyDomainEnergy.cs b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FrequencyDomainEnergy.cs index ccbc732b..f00c0bf0 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FrequencyDomainEnergy.cs +++ b/Sources/Audio/Microsoft.Psi.Audio/AcousticFeatures/FrequencyDomainEnergy.cs @@ -10,8 +10,8 @@ namespace Microsoft.Psi.Audio /// public sealed class FrequencyDomainEnergy : ConsumerProducer { - private int start; - private int end; + private readonly int start; + private readonly int end; /// /// Initializes a new instance of the class. diff --git a/Sources/Audio/Microsoft.Psi.Audio/AudioBuffer.cs b/Sources/Audio/Microsoft.Psi.Audio/AudioBuffer.cs index f5511930..a199ac1b 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/AudioBuffer.cs +++ b/Sources/Audio/Microsoft.Psi.Audio/AudioBuffer.cs @@ -18,8 +18,8 @@ namespace Microsoft.Psi.Audio /// public struct AudioBuffer { - private WaveFormat format; - private byte[] data; + private readonly WaveFormat format; + private readonly byte[] data; /// /// Initializes a new instance of the structure. diff --git a/Sources/Audio/Microsoft.Psi.Audio/Microsoft.Psi.Audio.csproj b/Sources/Audio/Microsoft.Psi.Audio/Microsoft.Psi.Audio.csproj index 7ade1b59..9b4dca4f 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/Microsoft.Psi.Audio.csproj +++ b/Sources/Audio/Microsoft.Psi.Audio/Microsoft.Psi.Audio.csproj @@ -35,6 +35,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Audio/Microsoft.Psi.Audio/WaveFileHelper.cs b/Sources/Audio/Microsoft.Psi.Audio/WaveFileHelper.cs index 9b207b06..7665a5d3 100644 --- a/Sources/Audio/Microsoft.Psi.Audio/WaveFileHelper.cs +++ b/Sources/Audio/Microsoft.Psi.Audio/WaveFileHelper.cs @@ -57,7 +57,7 @@ namespace Microsoft.Psi.Audio } /// - /// Reads the lenth in bytes of the data section of a Wave file. + /// Reads the length in bytes of the data section of a Wave file. /// /// The binary reader to read from. /// The number of byte of wave data that follow. diff --git a/Sources/Audio/Test.Psi.Audio/Test.Psi.Audio.csproj b/Sources/Audio/Test.Psi.Audio/Test.Psi.Audio.csproj index 5844bc0d..f146dbec 100644 --- a/Sources/Audio/Test.Psi.Audio/Test.Psi.Audio.csproj +++ b/Sources/Audio/Test.Psi.Audio/Test.Psi.Audio.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + netcoreapp3.1 false Audio unit tests Test.Psi.Audio.ConsoleMain @@ -27,10 +27,14 @@ - + + all + runtime; build; native; contentfiles; analyzers + + - - + + diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/CameraIntrinsics.cs b/Sources/Calibration/Microsoft.Psi.Calibration/CameraIntrinsics.cs index 55fe188d..7011eaae 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/CameraIntrinsics.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/CameraIntrinsics.cs @@ -3,6 +3,7 @@ namespace Microsoft.Psi.Calibration { + using System.Runtime.Serialization; using MathNet.Numerics.LinearAlgebra; using MathNet.Spatial.Euclidean; @@ -13,6 +14,9 @@ namespace Microsoft.Psi.Calibration { private Matrix transform; + [OptionalField] + private bool closedFormDistorts; + /// /// Initializes a new instance of the class. /// @@ -21,12 +25,14 @@ namespace Microsoft.Psi.Calibration /// The intrinsics transform matrix. /// The radial distortion parameters. /// The tangential distortion parameters. + /// Indicates which direction the closed form equation for Brown-Conrady Distortion model goes. I.e. does it perform distortion or undistortion. Default is to distort (thus making projection simpler and unprojection more complicated). public CameraIntrinsics( int imageWidth, int imageHeight, Matrix transform, Vector radialDistortion = null, - Vector tangentialDistortion = null) + Vector tangentialDistortion = null, + bool closedFormDistorts = true) { this.ImageWidth = imageWidth; this.ImageHeight = imageHeight; @@ -35,6 +41,7 @@ namespace Microsoft.Psi.Calibration this.TangentialDistortion = tangentialDistortion ?? Vector.Build.Dense(2, 0); this.FocalLengthXY = new Point2D(this.Transform[0, 0], this.Transform[1, 1]); this.PrincipalPoint = new Point2D(this.Transform[0, 2], this.Transform[1, 2]); + this.ClosedFormDistorts = closedFormDistorts; } /// @@ -70,6 +77,20 @@ namespace Microsoft.Psi.Calibration /// public Point2D PrincipalPoint { get; private set; } + /// + public bool ClosedFormDistorts + { + get + { + return this.closedFormDistorts; + } + + private set + { + this.closedFormDistorts = value; + } + } + /// public int ImageWidth { get; private set; } @@ -88,7 +109,7 @@ namespace Microsoft.Psi.Calibration Point3D tmp = new Point3D(pixelPt.X, pixelPt.Y, 1.0); tmp = tmp.TransformBy(this.transform); - return new Point2D(tmp.X, this.ImageHeight - tmp.Y); + return new Point2D(tmp.X, tmp.Y); } /// @@ -98,33 +119,63 @@ namespace Microsoft.Psi.Calibration Point3D tmp = new Point3D(pt.X, pt.Y, 1.0); tmp = tmp.TransformBy(this.InvTransform); - // Undistort the pixel + // Distort the pixel Point2D pixelPt = new Point2D(tmp.X, tmp.Y); if (undistort) { - pixelPt = this.UndistortPoint(pixelPt); + this.UndistortPoint(pixelPt, out pixelPt); } // X points in the depth dimension. Y points to the left, and Z points up. return new Point3D(depth, -pixelPt.X * depth, -pixelPt.Y * depth); } + /// + public bool UndistortPoint(Point2D distortedPt, out Point2D undistortedPt) + { + if (this.ClosedFormDistorts) + { + return this.InverseOfClosedForm(distortedPt, out undistortedPt); + } + + return this.ClosedForm(distortedPt, out undistortedPt); + } + /// public bool DistortPoint(Point2D undistortedPt, out Point2D distortedPt) { - double x = undistortedPt.X; - double y = undistortedPt.Y; + if (this.ClosedFormDistorts) + { + return this.ClosedForm(undistortedPt, out distortedPt); + } + + return this.InverseOfClosedForm(undistortedPt, out distortedPt); + } + + private bool InverseOfClosedForm(Point2D inputPt, out Point2D outputPt) + { + double k1 = this.RadialDistortion[0]; + double k2 = this.RadialDistortion[1]; + double k3 = this.RadialDistortion[2]; + double k4 = this.RadialDistortion[3]; + double k5 = this.RadialDistortion[4]; + double k6 = this.RadialDistortion[5]; + double t0 = this.TangentialDistortion[0]; + double t1 = this.TangentialDistortion[1]; + + double x = inputPt.X; + double y = inputPt.Y; // Our distortion model is defined as: // See https://docs.opencv.org/2.4/modules/calib3d/doc/camera_calibration_and_3d_reconstruction.html?highlight=convertpointshomogeneous // r^2 = x^2 + y^2 - // (1+k1*r^2+k2*r^3+k3^r^6) + // (1+k1*r^2+k2*r^4+k3^r^6) // Fx = x ------------------------ + t1*(r^2+ 2 * x^2) + 2 * t0 * x*y - // (1+k4*r^2+k5*r^3+k6^r^6) + // (1+k4*r^2+k5*r^4+k6^r^6) // - // (1+k1*r^2+k2*r^3+k3^r^6) + // (1+k1*r^2+k2*r^4+k3^r^6) // Fy = y ------------------------ + t0*(r^2+ 2 * y^2) + 2 * t1 * x*y - // (1+k4*r^2+k5*r^3+k6^r^6) + // (1+k4*r^2+k5*r^4+k6^r^6) // // We want to solve for: // 1 | @Fy/@y -@Fx/@y | @@ -147,15 +198,6 @@ namespace Microsoft.Psi.Calibration // @Fy/@x = y @d/@x + 2*t0*y + 2*t1*x // // In the code below @/@ is named 'dd'. - double k1 = this.RadialDistortion[0]; - double k2 = this.RadialDistortion[1]; - double k3 = this.RadialDistortion[2]; - double k4 = this.RadialDistortion[3]; - double k5 = this.RadialDistortion[4]; - double k6 = this.RadialDistortion[5]; - double t0 = this.TangentialDistortion[0]; - double t1 = this.TangentialDistortion[1]; - #pragma warning disable SA1305 bool converged = false; for (int j = 0; j < 100 && !converged; j++) @@ -169,7 +211,7 @@ namespace Microsoft.Psi.Calibration double dr2dy = 2 * y; double d = g / h; double dgdr2 = k1 + 2 * k2 * radiusSq + 3 * k3 * radiusSqSq; - double dhdr2 = k4 * 2 * k5 * radiusSq + 3 * k6 * radiusSqSq; + double dhdr2 = k4 + 2 * k5 * radiusSq + 3 * k6 * radiusSqSq; double dddr2 = (dgdr2 * h - g * dhdr2) / (h * h); double dddx = dddr2 * 2 * x; double dddy = dddr2 * 2 * y; @@ -183,7 +225,7 @@ namespace Microsoft.Psi.Calibration if (System.Math.Abs(det) < 1E-16) { // Not invertible. Perform no distortion - distortedPt = new Point2D(undistortedPt.X, undistortedPt.Y); + outputPt = new Point2D(inputPt.X, inputPt.Y); return false; } @@ -199,31 +241,40 @@ namespace Microsoft.Psi.Calibration // to be equal to 0: // 0 = F(xp) - Xu // 0 = F(yp) - Yu - xp -= undistortedPt.X; - yp -= undistortedPt.Y; + double errx = xp - inputPt.X; + double erry = yp - inputPt.Y; - if ((xp * xp) + (yp * yp) < 1E-16) + double err = (errx * errx) + (erry * erry); + if (err < 1.0e-16) { converged = true; break; } // Update our new guess (i.e. x = x - J(F(x))^-1 * F(x)) - x = x - ((dFydy * xp) - (dFxdy * yp)) / det; - y = y - ((-dFydx * xp) + (dFxdx * yp)) / det; + x = x - ((dFydy * errx) - (dFxdy * erry)) / det; + y = y - ((-dFydx * errx) + (dFxdx * erry)) / det; + #pragma warning restore SA1305 } - distortedPt = new Point2D(x, y); - return true; + if (converged) + { + outputPt = new Point2D(x, y); + } + else + { + outputPt = new Point2D(inputPt.X, inputPt.Y); + } + + return converged; } - /// - public Point2D UndistortPoint(Point2D distortedPt) + private bool ClosedForm(Point2D inputPt, out Point2D outputPt) { // Undistort pixel double xp, yp; - double radiusSquared = (distortedPt.X * distortedPt.X) + (distortedPt.Y * distortedPt.Y); + double radiusSquared = (inputPt.X * inputPt.X) + (inputPt.Y * inputPt.Y); if (this.RadialDistortion != null) { double k1 = this.RadialDistortion[0]; @@ -236,26 +287,27 @@ namespace Microsoft.Psi.Calibration double h = 1 + k4 * radiusSquared + k5 * radiusSquared * radiusSquared + k6 * radiusSquared * radiusSquared * radiusSquared; double d = g / h; - xp = distortedPt.X * d; - yp = distortedPt.Y * d; + xp = inputPt.X * d; + yp = inputPt.Y * d; } else { - xp = distortedPt.X; - yp = distortedPt.Y; + xp = inputPt.X; + yp = inputPt.Y; } // If we are incorporating tangential distortion, include that here if (this.TangentialDistortion != null && (this.TangentialDistortion[0] != 0.0 || this.TangentialDistortion[1] != 0.0)) { - double xy = 2.0 * distortedPt.X * distortedPt.Y; - double x2 = 2.0 * distortedPt.X * distortedPt.X; - double y2 = 2.0 * distortedPt.Y * distortedPt.Y; + double xy = 2.0 * inputPt.X * inputPt.Y; + double x2 = 2.0 * inputPt.X * inputPt.X; + double y2 = 2.0 * inputPt.Y * inputPt.Y; xp += (this.TangentialDistortion[1] * (radiusSquared + x2)) + (this.TangentialDistortion[0] * xy); yp += (this.TangentialDistortion[0] * (radiusSquared + y2)) + (this.TangentialDistortion[1] * xy); } - return new Point2D(xp, yp); + outputPt = new Point2D(xp, yp); + return true; } } } diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/DepthDeviceCalibrationInfo.cs b/Sources/Calibration/Microsoft.Psi.Calibration/DepthDeviceCalibrationInfo.cs index 66471cce..d88ab6d2 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/DepthDeviceCalibrationInfo.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/DepthDeviceCalibrationInfo.cs @@ -60,6 +60,7 @@ namespace Microsoft.Psi.Calibration Vector.Build.DenseOfArray(colorTangentialDistortionCoefficients)); this.ColorExtrinsics = new CoordinateSystem(depthToColorTransform); + this.ColorPose = this.ColorExtrinsics.Invert(); this.DepthIntrinsics = new CameraIntrinsics( depthWidth, @@ -69,24 +70,34 @@ namespace Microsoft.Psi.Calibration Vector.Build.DenseOfArray(depthTangentialDistortionCoefficients)); this.DepthExtrinsics = new CoordinateSystem(depthExtrinsics); + this.DepthPose = this.DepthExtrinsics.Invert(); } /// public CoordinateSystem ColorExtrinsics { get; } + /// + public CoordinateSystem ColorPose { get; } + /// public ICameraIntrinsics ColorIntrinsics { get; } /// public CoordinateSystem DepthExtrinsics { get; } + /// + public CoordinateSystem DepthPose { get; } + /// public ICameraIntrinsics DepthIntrinsics { get; } /// public Point2D ToColorSpace(Point3D point3D) { + // First convert the point into camera coordinates. var point3DInColorCamera = this.ColorExtrinsics.Transform(point3D); + + // Then convert to pixel space. return this.ColorIntrinsics.ToPixelSpace(point3DInColorCamera, true); } } diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/DepthExtensions.cs b/Sources/Calibration/Microsoft.Psi.Calibration/DepthExtensions.cs index a36593d2..83d67619 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/DepthExtensions.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/DepthExtensions.cs @@ -4,7 +4,9 @@ namespace Microsoft.Psi.Calibration { using System; + using System.Collections.Generic; using MathNet.Spatial.Euclidean; + using Microsoft.Psi; using Microsoft.Psi.Imaging; /// @@ -19,9 +21,9 @@ namespace Microsoft.Psi.Calibration /// Pixel coordinates in the color camera. /// Depth map. /// Point in camera coordinates. - internal static Point3D? ProjectToCameraSpace(IDepthDeviceCalibrationInfo depthDeviceCalibrationInfo, Point2D point2D, Shared depthImage) + public static Point3D? ProjectToCameraSpace(IDepthDeviceCalibrationInfo depthDeviceCalibrationInfo, Point2D point2D, Shared depthImage) { - var colorExtrinsicsInverse = depthDeviceCalibrationInfo.ColorExtrinsics.Inverse(); + var colorExtrinsicsInverse = depthDeviceCalibrationInfo.ColorPose; var pointInCameraSpace = depthDeviceCalibrationInfo.ColorIntrinsics.ToCameraSpace(point2D, 1.0, true); double x = pointInCameraSpace.X * colorExtrinsicsInverse[0, 0] + pointInCameraSpace.Y * colorExtrinsicsInverse[0, 1] + pointInCameraSpace.Z * colorExtrinsicsInverse[0, 2] + colorExtrinsicsInverse[0, 3]; double y = pointInCameraSpace.X * colorExtrinsicsInverse[1, 0] + pointInCameraSpace.Y * colorExtrinsicsInverse[1, 1] + pointInCameraSpace.Z * colorExtrinsicsInverse[1, 2] + colorExtrinsicsInverse[1, 3]; @@ -32,6 +34,20 @@ namespace Microsoft.Psi.Calibration return IntersectLineWithDepthMesh(depthDeviceCalibrationInfo, rgbLine, depthImage.Resource, 0.1); } + /// + /// Projects set of 2D image points into 3D. + /// + /// Tuple of depth image, list of points to project, and calibration information. + /// An optional delivery policy. + /// Returns a producer that generates a list of corresponding 3D points in Kinect camera space. + public static IProducer> ProjectTo3D( + this IProducer<(Shared, List, IDepthDeviceCalibrationInfo)> source, DeliveryPolicy<(Shared, List, IDepthDeviceCalibrationInfo)> deliveryPolicy = null) + { + var projectTo3D = new ProjectTo3D(source.Out.Pipeline); + source.PipeTo(projectTo3D, deliveryPolicy); + return projectTo3D; + } + /// /// Performs a ray/mesh intersection with the depth map. /// @@ -41,7 +57,7 @@ namespace Microsoft.Psi.Calibration /// Distance to march on each step along ray. /// Whether undistortion should be applied to the point. /// Returns point of intersection. - internal static Point3D? IntersectLineWithDepthMesh(IDepthDeviceCalibrationInfo calibration, Line3D line, Image depthImage, double skipFactor, bool undistort = true) + internal static Point3D? IntersectLineWithDepthMesh(IDepthDeviceCalibrationInfo calibration, Line3D line, DepthImage depthImage, double skipFactor, bool undistort = true) { // max distance to check for intersection with the scene double totalDistance = 5; @@ -67,7 +83,7 @@ namespace Microsoft.Psi.Calibration return null; } - private static float GetMeshDepthAtPoint(IDepthDeviceCalibrationInfo calibration, Image depthImage, Point3D point, bool undistort) + private static float GetMeshDepthAtPoint(IDepthDeviceCalibrationInfo calibration, DepthImage depthImage, Point3D point, bool undistort) { Point2D depthSpacePoint = calibration.DepthIntrinsics.ToPixelSpace(point, undistort); diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/ICameraIntrinsics.cs b/Sources/Calibration/Microsoft.Psi.Calibration/ICameraIntrinsics.cs index 4d901769..831bef17 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/ICameraIntrinsics.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/ICameraIntrinsics.cs @@ -49,6 +49,15 @@ namespace Microsoft.Psi.Calibration /// Point2D PrincipalPoint { get; } + /// + /// Gets a value indicating whether the closed form equation of the Brown-Conrady Distortion model + /// distorts or undistorts. i.e. if true then: + /// Xdistorted = Xundistorted * (1+K1*R2+K2*R3+... + /// otherwise: + /// Xundistorted = Xdistorted * (1+K1*R2+K2*R3+... + /// + bool ClosedFormDistorts { get; } + /// /// Gets the width of the camera's image (in pixels). /// @@ -92,10 +101,10 @@ namespace Microsoft.Psi.Calibration /// Newton's method is used to find the inverse of this. That is /// Xd(n+1) = Xd(n) + J^-1 * F(Xd,Yd). /// - /// The undistorted point in camera post-projection coordinates. - /// The distorted point. - /// True if 'distortedPoint' contains the distorted point, or false if the algorithm did not converge. - bool DistortPoint(Point2D undistortedPoint, out Point2D distortedPoint); + /// The undistorted point in camera post-projection coordinates. + /// The distorted point. + /// True if 'distortedPt' contains the distorted point, or false if the algorithm did not converge. + bool DistortPoint(Point2D undistortedPt, out Point2D distortedPt); /// /// Applies the camera's radial and tangential undistortion to the specified (distorted) point. @@ -110,8 +119,9 @@ namespace Microsoft.Psi.Calibration /// T0,T1 - tangential distortion coefficients. /// /// - /// Distorted point in camera post-projection coordinates. - /// Undistorted coordinates in camera post-projection coordinates. - Point2D UndistortPoint(Point2D distortedPoint); + /// Distorted point in camera post-projection coordinates. + /// Returns the undistorted point in camera post-projection coordinates. + /// True if 'undistortedPoint' contains the undistorted point, or false if the algorithm did not converge. + bool UndistortPoint(Point2D distortedPt, out Point2D undistortedPt); } } diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/IDepthDeviceCalibrationInfo.cs b/Sources/Calibration/Microsoft.Psi.Calibration/IDepthDeviceCalibrationInfo.cs index 873966a0..e52d1e3a 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/IDepthDeviceCalibrationInfo.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/IDepthDeviceCalibrationInfo.cs @@ -11,20 +11,30 @@ namespace Microsoft.Psi.Calibration public interface IDepthDeviceCalibrationInfo { /// - /// Gets the extrinsics defining the color camera's position with respect to the depth camera. + /// Gets the extrinsics associated with the color camera, which describes how to transform points in world coordinates to color camera coordinates (world => camera). /// CoordinateSystem ColorExtrinsics { get; } + /// + /// Gets the pose of the color camera in the world, which is obtained by inverting the extrinsics matrix (camera => world). + /// + CoordinateSystem ColorPose { get; } + /// /// Gets the intrinsics associated with the color camera. /// ICameraIntrinsics ColorIntrinsics { get; } /// - /// Gets the extrinsics defining the depth camera's position in the world. + /// Gets the extrinsics associated with the depth camera, which describes how to transform points in world coordinates to depth camera coordinates (world => camera). /// CoordinateSystem DepthExtrinsics { get; } + /// + /// Gets the pose of the depth camera in the world, which is obtained by inverting the extrinsics matrix (camera => world). + /// + CoordinateSystem DepthPose { get; } + /// /// Gets the intrinsics associated with the depth camera. /// diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/LevenbergMarquardt.cs b/Sources/Calibration/Microsoft.Psi.Calibration/LevenbergMarquardt.cs similarity index 55% rename from Sources/Kinect/Microsoft.Psi.Kinect.Windows/LevenbergMarquardt.cs rename to Sources/Calibration/Microsoft.Psi.Calibration/LevenbergMarquardt.cs index f8ef6a4f..cda820a2 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/LevenbergMarquardt.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/LevenbergMarquardt.cs @@ -1,15 +1,15 @@ // Copyright (c) Microsoft Corporation. All rights reserved. // Licensed under the MIT license. -namespace Microsoft.Psi.Kinect +namespace Microsoft.Psi.Calibration { using System; - using System.IO; + using MathNet.Numerics.LinearAlgebra; /// /// Defines a class for performing Levenberg-Marquardt optimization. /// - internal class LevenbergMarquardt + public class LevenbergMarquardt { private int maximumIterations = 100; private double minimumReduction = 1.0e-5; @@ -18,9 +18,6 @@ namespace Microsoft.Psi.Kinect private double initialLambda = 1.0e-3; private Function function; private Jacobian jacobianFunction; - private States state = States.Running; - private double rmsError; - private System.Diagnostics.Stopwatch stopWatch = new System.Diagnostics.Stopwatch(); /// /// Initializes a new instance of the class. @@ -35,7 +32,7 @@ namespace Microsoft.Psi.Kinect /// Initializes a new instance of the class. /// /// Cost function. - /// Jacobian. + /// Jacobian function. public LevenbergMarquardt(Function function, Jacobian jacobianFunction) { this.function = function; @@ -47,198 +44,116 @@ namespace Microsoft.Psi.Kinect /// /// Parameters. /// Matrix. - public delegate Matrix Function(Matrix parameters); + public delegate Vector Function(Vector parameters); /// /// J_ij, ith error from function, jth parameter. /// /// Parameters. /// Matrix. - public delegate Matrix Jacobian(Matrix parameters); + public delegate Matrix Jacobian(Vector parameters); /// /// States for optimization. /// public enum States { -#pragma warning disable SA1602 // Enumeration items must be documented + /// + /// Running. + /// Running, + + /// + /// Maximum iterations. + /// MaximumIterations, + + /// + /// Lambda too large. + /// LambdaTooLarge, + + /// + /// Reduction step too small. + /// ReductionStepTooSmall, -#pragma warning restore SA1602 // Enumeration items must be documented } /// /// Gets the RMS error. /// - public double RMSError - { - get { return this.rmsError; } - } + public double RMSError { get; private set; } /// /// Gets the optimization state. /// - public States State - { - get { return this.state; } - } - - /// - /// Performs unit test. - /// - public static void Test() - { - // generate x_i, y_i observations on test function - var random = new Random(); - - int n = 200; - - var matX = new Matrix(n, 1); - var matY = new Matrix(n, 1); - - double a = 100; - double b = 102; - for (int i = 0; i < n; i++) - { - double x = (random.NextDouble() / (Math.PI / 4.0)) - (Math.PI / 8.0); - double y = (a * Math.Cos(b * x)) + (b * Math.Sin(a * x)) + (random.NextDouble() * 0.1); - matX[i] = x; - matY[i] = y; - } - - Function f = (Matrix parameters) => - { - // return y_i - f(x_i, parameters) as column vector - var error = new Matrix(n, 1); - - double a2 = parameters[0]; - double b2 = parameters[1]; - - for (int i = 0; i < n; i++) - { - double y = (a2 * Math.Cos(b2 * matX[i])) + (b2 * Math.Sin(a2 * matX[i])); - error[i] = matY[i] - y; - } - - return error; - }; - - var levenbergMarquardt = new LevenbergMarquardt(f); - - var parameters0 = new Matrix(2, 1); - parameters0[0] = 90; - parameters0[1] = 96; - - var rmsError = levenbergMarquardt.Minimize(parameters0); - } + public States State { get; private set; } = States.Running; /// /// Minimizes function. /// /// Parameters. /// Returns the RMS. - public double Minimize(Matrix parameters) + public double Minimize(Vector parameters) { - this.state = States.Running; + this.State = States.Running; for (int iteration = 0; iteration < this.maximumIterations; iteration++) { this.MinimizeOneStep(parameters); - if (this.state != States.Running) + if (this.State != States.Running) { return this.RMSError; } } - this.state = States.MaximumIterations; + this.State = States.MaximumIterations; return this.RMSError; } - /// - /// Writes the specified matrix to the specified file. - /// - /// Matrix to write. - /// Name of output file. - public void WriteMatrixToFile(Matrix matA, string filename) - { - var file = new StreamWriter(filename); - for (int i = 0; i < matA.Rows; i++) - { - for (int j = 0; j < matA.Cols; j++) - { - file.Write(matA[i, j] + "\t"); - } - - file.WriteLine(); - } - - file.Close(); - } - /// /// Single step of the optimization. /// /// Parameters. /// Returns the error. - public double MinimizeOneStep(Matrix parameters) + public double MinimizeOneStep(Vector parameters) { // initial value of the function; callee knows the size of the returned vector var errorVector = this.function(parameters); - var error = errorVector.Dot(errorVector); + var error = errorVector.DotProduct(errorVector); // Jacobian; callee knows the size of the returned matrix var matJ = this.jacobianFunction(parameters); // J'*J - var matJtJ = new Matrix(parameters.Size, parameters.Size); - - // stopWatch.Restart(); - // JtJ.MultATA(J, J); // this is the big calculation that could be parallelized - matJtJ.MultATAParallel(matJ, matJ); - - // Console.WriteLine("JtJ: J size {0}x{1} {2}ms", J.Rows, J.Cols, stopWatch.ElapsedMilliseconds); + var matJtJ = matJ.TransposeThisAndMultiply(matJ); // J'*error - var matJtError = new Matrix(parameters.Size, 1); - - // stopWatch.Restart(); - matJtError.MultATA(matJ, errorVector); // error vector must be a column vector - - // Console.WriteLine("JtError: errorVector size {0}x{1} {2}ms", errorVector.Rows, errorVector.Cols, stopWatch.ElapsedMilliseconds); + var matJtError = matJ.TransposeThisAndMultiply(errorVector); // allocate some space - var matJtJaugmented = new Matrix(parameters.Size, parameters.Size); - var matJtJinv = new Matrix(parameters.Size, parameters.Size); - var matDelta = new Matrix(parameters.Size, 1); - var matNewParameters = new Matrix(parameters.Size, 1); + var matJtJaugmented = Matrix.Build.Dense(parameters.Count, parameters.Count); // find a value of lambda that reduces error double lambda = this.initialLambda; while (true) { // augment J'*J: J'*J += lambda*(diag(J)) - matJtJaugmented.Copy(matJtJ); - for (int i = 0; i < parameters.Size; i++) + matJtJ.CopyTo(matJtJaugmented); + for (int i = 0; i < parameters.Count; i++) { matJtJaugmented[i, i] = (1.0 + lambda) * matJtJ[i, i]; } - // WriteMatrixToFile(errorVector, "errorVector"); - // WriteMatrixToFile(J, "J"); - // WriteMatrixToFile(JtJaugmented, "JtJaugmented"); - // WriteMatrixToFile(JtError, "JtError"); - // solve for delta: (J'*J + lambda*(diag(J)))*delta = J'*error - matJtJinv.Inverse(matJtJaugmented); - matDelta.Mult(matJtJinv, matJtError); + var matJtJinv = matJtJaugmented.Inverse(); + var matDelta = matJtJinv * matJtError; // new parameters = parameters - delta [why not add?] - matNewParameters.Sub(parameters, matDelta); + var matNewParameters = parameters - matDelta; // evaluate function, compute error var newErrorVector = this.function(matNewParameters); - double newError = newErrorVector.Dot(newErrorVector); + double newError = newErrorVector.DotProduct(newErrorVector); // if error is reduced, divide lambda by 10 bool improvement; @@ -255,20 +170,19 @@ namespace Microsoft.Psi.Kinect // termination criteria: // reduction in error is too small - var diff = new Matrix(errorVector.Size, 1); - diff.Sub(errorVector, newErrorVector); - double diffSq = diff.Dot(diff); + var diff = errorVector - newErrorVector; + double diffSq = diff.DotProduct(diff); double errorDelta = Math.Sqrt(diffSq / error); if (errorDelta < this.minimumReduction) { - this.state = States.ReductionStepTooSmall; + this.State = States.ReductionStepTooSmall; } // lambda is too big if (lambda > this.maximumLambda) { - this.state = States.LambdaTooLarge; + this.State = States.LambdaTooLarge; } // change in parameters is too small [not implemented] @@ -276,20 +190,20 @@ namespace Microsoft.Psi.Kinect // if we made an improvement, accept the new parameters if (improvement) { - parameters.Copy(matNewParameters); + matNewParameters.CopyTo(parameters); error = newError; break; } // if we meet termination criteria, break - if (this.state != States.Running) + if (this.State != States.Running) { break; } } - this.rmsError = Math.Sqrt(error / errorVector.Size); - return this.rmsError; + this.RMSError = Math.Sqrt(error / errorVector.Count); + return this.RMSError; } /// @@ -314,17 +228,17 @@ namespace Microsoft.Psi.Kinect /// /// Parameters. /// Returns Jacobian. - public Matrix Jacobian(Matrix parameters) + public Matrix Jacobian(Vector parameters) { const double deltaFactor = 1.0e-6; const double minDelta = 1.0e-6; // evaluate the function at the current solution var errorVector0 = this.function(parameters); - var matJ = new Matrix(errorVector0.Size, parameters.Size); + var matJ = Matrix.Build.Dense(errorVector0.Count, parameters.Count); // vary each paremeter - for (int j = 0; j < parameters.Size; j++) + for (int j = 0; j < parameters.Count; j++) { double parameterValue = parameters[j]; // save the original value @@ -338,9 +252,9 @@ namespace Microsoft.Psi.Kinect // we only get error from function, but error(p + d) - error(p) = f(p + d) - f(p) var errorVector = this.function(parameters); - errorVector.Sub(errorVector0); + errorVector -= errorVector0; - for (int i = 0; i < errorVector0.Rows; i++) + for (int i = 0; i < errorVector0.Count; i++) { matJ[i, j] = errorVector[i] / delta; } diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/Microsoft.Psi.Calibration.csproj b/Sources/Calibration/Microsoft.Psi.Calibration/Microsoft.Psi.Calibration.csproj index 830d8959..1dc01080 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/Microsoft.Psi.Calibration.csproj +++ b/Sources/Calibration/Microsoft.Psi.Calibration/Microsoft.Psi.Calibration.csproj @@ -25,12 +25,19 @@ + + all + runtime; build; native; contentfiles; analyzers + - - + + + + + \ No newline at end of file diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/MultiCameraCalibration.cs b/Sources/Calibration/Microsoft.Psi.Calibration/MultiCameraCalibration.cs index bc24025d..65bb053b 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/MultiCameraCalibration.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/MultiCameraCalibration.cs @@ -132,14 +132,11 @@ namespace Microsoft.Psi.Calibration /// Values are stored in column-major order and assumes column-vectors /// (i.e. Matrix * Point versus Point * Matrix). /// Units are millimeters. - /// OpenCV basis is asssumed here (Forward=Z, Right=X, Down=Y): - /// Z (forward) - /// / - /// / - /// +----> X (right) - /// | - /// | - /// Y (down). + /// MathNet basis is asssumed here + /// Z ^ X + /// | / + /// |/ + /// Y ----+. /// [XmlArray] public double[] Extrinsics { get; set; } @@ -241,13 +238,7 @@ namespace Microsoft.Psi.Calibration mtx.SetColumn(3, mtx.Column(3) / 1000.0); mtx[3, 3] = 1; - // Extrinsics are stored in OpenCV basis, so convert here to MathNet basis. - var openCVBasis = new MathNet.Spatial.Euclidean.CoordinateSystem( - default, - MathNet.Spatial.Euclidean.UnitVector3D.ZAxis, - MathNet.Spatial.Euclidean.UnitVector3D.XAxis.Negate(), - MathNet.Spatial.Euclidean.UnitVector3D.YAxis.Negate()); - return new MathNet.Spatial.Euclidean.CoordinateSystem(openCVBasis.Invert() * mtx.Inverse() * openCVBasis); + return new MathNet.Spatial.Euclidean.CoordinateSystem(mtx.Inverse()); } } } diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/ProjectTo3D.cs b/Sources/Calibration/Microsoft.Psi.Calibration/ProjectTo3D.cs index 6e355e54..4f4569e7 100644 --- a/Sources/Calibration/Microsoft.Psi.Calibration/ProjectTo3D.cs +++ b/Sources/Calibration/Microsoft.Psi.Calibration/ProjectTo3D.cs @@ -15,7 +15,7 @@ namespace Microsoft.Psi.Calibration /// Inputs are the depth image, list of 2D points from the color image, and the camera calibration. /// Outputs the 3D points projected into the depth camera's coordinate system. /// - public sealed class ProjectTo3D : ConsumerProducer<(Shared, List, IDepthDeviceCalibrationInfo), List> + public sealed class ProjectTo3D : ConsumerProducer<(Shared, List, IDepthDeviceCalibrationInfo), List> { /// /// Initializes a new instance of the class. @@ -27,7 +27,7 @@ namespace Microsoft.Psi.Calibration } /// - protected override void Receive((Shared, List, IDepthDeviceCalibrationInfo) data, Envelope e) + protected override void Receive((Shared, List, IDepthDeviceCalibrationInfo) data, Envelope e) { var point2DList = data.Item2; var depthImage = data.Item1; diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/RotationExtensions.cs b/Sources/Calibration/Microsoft.Psi.Calibration/RotationExtensions.cs new file mode 100644 index 00000000..c2f326e9 --- /dev/null +++ b/Sources/Calibration/Microsoft.Psi.Calibration/RotationExtensions.cs @@ -0,0 +1,165 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Calibration +{ + using System; + using MathNet.Numerics.LinearAlgebra; + + /// + /// Define set of extensions for dealing with rotation matrices and vectors. + /// + public static class RotationExtensions + { + /// + /// Use the Rodrigues formula for transforming a given rotation from axis-angle representation to a 3x3 matrix. + /// Where 'r' is a rotation vector: + /// theta = norm(r) + /// M = skew(r/theta) + /// R = I + M * sin(theta) + M*M * (1-cos(theta)). + /// + /// Rotation in axis-angle vector representation, + /// where the angle is represented by the length (L2-norm) of the vector. + /// Rotation in a 3x3 matrix representation. + public static Matrix AxisAngleToMatrix(Vector vectorRotation) + { + if (vectorRotation.Count != 3) + { + throw new InvalidOperationException("The input must be a valid 3-element vector representing an axis-angle rotation."); + } + + double theta = vectorRotation.L2Norm(); + + var matR = Matrix.Build.DenseIdentity(3, 3); + + // if there is no rotation (theta == 0) return identity rotation + if (theta == 0) + { + return matR; + } + + // Create a skew-symmetric matrix from the normalized axis vector + var rn = vectorRotation.Normalize(2); + var matM = Matrix.Build.Dense(3, 3); + matM[0, 0] = 0; + matM[0, 1] = -rn[2]; + matM[0, 2] = rn[1]; + matM[1, 0] = rn[2]; + matM[1, 1] = 0; + matM[1, 2] = -rn[0]; + matM[2, 0] = -rn[1]; + matM[2, 1] = rn[0]; + matM[2, 2] = 0; + + // I + M * sin(theta) + M*M * (1 - cos(theta)) + var sinThetaM = matM * Math.Sin(theta); + matR += sinThetaM; + var matMM = matM * matM; + var cosThetaMM = matMM * (1 - Math.Cos(theta)); + matR += cosThetaMM; + + return matR; + } + + /// + /// Convert a rotation matrix to axis-angle representation (a unit vector scaled by the angular distance to rotate). + /// + /// Input rotation matrix. + /// Same rotation in axis-angle representation (L2-Norm of the vector represents angular distance). + public static Vector MatrixToAxisAngle(Matrix m) + { + if (m.RowCount != 3 || m.ColumnCount != 3) + { + throw new InvalidOperationException("The input must be a valid 3x3 rotation matrix in order to compute its axis-angle representation."); + } + + double epsilon = 0.01; + + // theta = arccos((Trace(m) - 1) / 2) + double angle = Math.Acos((m.Trace() - 1.0) / 2.0); + + // Create the axis vector. + var v = Vector.Build.Dense(3, 0); + + if (angle < epsilon) + { + // If the angular distance to rotate is 0, we just return a vector of all zeroes. + return v; + } + + // Otherwise, the axis of rotation is extracted from the matrix as follows. + v[0] = m[2, 1] - m[1, 2]; + v[1] = m[0, 2] - m[2, 0]; + v[2] = m[1, 0] - m[0, 1]; + + if (v.L2Norm() < epsilon) + { + // if the axis to rotate around has 0 length, we are in a singularity where the angle has to be 180 degrees. + angle = Math.PI; + + // We can extract the axis of rotation, knowing that v*vT = (m + I) / 2; + // First compute r = (m + I) / 2 + var r = Matrix.Build.Dense(3, 3); + m.CopyTo(r); + r[0, 0] += 1; + r[1, 1] += 1; + r[2, 2] += 1; + r /= 2.0; + + // r = v*vT = + // | v_x*v_x, v_x*v_y, v_x*v_z | + // | v_x*v_y, v_y*v_y, v_y*v_z | + // | v_x*v_z, v_y*v_z, v_z*v_z | + // Extract x, y, and z as the square roots of the diagonal elements. + var x = Math.Sqrt(r[0, 0]); + var y = Math.Sqrt(r[1, 1]); + var z = Math.Sqrt(r[2, 2]); + + // Now we need to determine the signs of x, y, and z. + double xsign; + double ysign; + double zsign; + + double xy = r[0, 1]; + double xz = r[0, 2]; + + if (xy > 0) + { + if (xz > 0) + { + xsign = 1; + ysign = 1; + zsign = 1; + } + else + { + xsign = 1; + ysign = 1; + zsign = -1; + } + } + else + { + if (xz > 0) + { + xsign = 1; + ysign = -1; + zsign = 1; + } + else + { + xsign = 1; + ysign = -1; + zsign = -1; + } + } + + v[0] = x * xsign; + v[1] = y * ysign; + v[2] = z * zsign; + } + + return v.Normalize(2) * angle; + } + } +} diff --git a/Sources/Calibration/Microsoft.Psi.Calibration/ThirdPartyNotices.txt b/Sources/Calibration/Microsoft.Psi.Calibration/ThirdPartyNotices.txt new file mode 100644 index 00000000..b19d6eb9 --- /dev/null +++ b/Sources/Calibration/Microsoft.Psi.Calibration/ThirdPartyNotices.txt @@ -0,0 +1,38 @@ +Microsoft Platform for Situated Intelligence + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +This project is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Microsoft Platform for Situated Intelligence product. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. + +1. RoomAlive Toolkit (https://github.com/Microsoft/RoomAliveToolkit) + +%% RoomAlive Toolkit NOTICES AND INFORMATION BEGIN HERE +========================================= +RoomAlive Toolkit + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF RoomAlive Toolkit NOTICES AND INFORMATION diff --git a/Sources/Calibration/Test.Psi.Calibration/DistortionTests.cs b/Sources/Calibration/Test.Psi.Calibration/DistortionTests.cs index 2e3d328c..4bb3513c 100644 --- a/Sources/Calibration/Test.Psi.Calibration/DistortionTests.cs +++ b/Sources/Calibration/Test.Psi.Calibration/DistortionTests.cs @@ -5,9 +5,9 @@ namespace Test.Psi.Calibration { using System; using System.IO; - using System.Net.Http.Headers; using System.Runtime.InteropServices; using MathNet.Numerics.LinearAlgebra; + using MathNet.Spatial.Euclidean; using Microsoft.Psi.Calibration; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -58,7 +58,11 @@ namespace Test.Psi.Calibration public void TestDistortion() { // Create a checkerboard image - var img = Microsoft.Psi.Imaging.Image.Create(1024, 1024, Microsoft.Psi.Imaging.PixelFormat.BGR_24bpp); + bool useColor = false; + bool reverseDirection = true; + int width = useColor ? 1280 : 640; + int height = useColor ? 720 : 576; + var img = new Microsoft.Psi.Imaging.Image(width, height, Microsoft.Psi.Imaging.PixelFormat.BGR_24bpp); unsafe { byte* row = (byte*)img.ImageData.ToPointer(); @@ -69,15 +73,15 @@ namespace Test.Psi.Calibration { if ((i / 20 + j / 20) % 2 == 0) { - col[0] = 255; - col[1] = 0; + col[0] = (byte)(255.0f * (float)j / (float)img.Width); + col[1] = (byte)(255.0f * (1.0f - (float)j / (float)img.Width)); col[2] = 0; } else { col[0] = 0; - col[1] = 0; - col[2] = 255; + col[1] = (byte)(255.0f * (float)i / (float)img.Height); + col[2] = (byte)(255.0f * (1.0f - (float)i / (float)img.Height)); } col += img.BitsPerPixel / 8; @@ -90,19 +94,67 @@ namespace Test.Psi.Calibration #endif // DUMP_IMAGES } + double[] colorAzureDistortionCoefficients = new double[6] + { + 0.609246314, + -2.84837151, + 1.63566089, + 0.483219713, + -2.66301942, + 1.55776918, + }; + double[] colorAzureTangentialCoefficients = new double[2] + { + -0.000216085638, + 0.000744335062, + }; + double[] colorIntrinsics = new double[4] + { + 638.904968, // cx + 350.822327, // cy + 607.090698, // fx + 607.030762, // fy + }; + double[] depthIntrinsics = new double[4] + { + 326.131775, // cx + 324.755524, // cy + 504.679749, // fx + 504.865875, // fy + }; + + double[] depthAzureDistortionCoefficients = new double[6] + { + 0.228193134, + -0.0650567561, + -0.000764187891, + 0.568694472, + -0.0599768497, + -0.0119919786, + }; + double[] depthAzureTangentialCoefficients = new double[2] + { + -9.04210319e-05, + -9.16166828e-05, + }; + // Setup our distortion coefficients - double[] distortionCoefficients = new double[6] { 1.10156359448570129, -0.049757665717193485, -0.0018714899575029596, 0.0, 0.0, 0.0 }; - double[] tangentialCoefficients = new double[2] { 0.0083588278483703853, 0.0 }; + var distortionCoefficients = useColor ? colorAzureDistortionCoefficients : depthAzureDistortionCoefficients; + var tangentialCoefficients = useColor ? colorAzureTangentialCoefficients : depthAzureTangentialCoefficients; // Next run distort on the image - var distortedImage = Microsoft.Psi.Imaging.Image.Create(img.Width, img.Height, img.PixelFormat); - var intrinsicMat = CreateMatrix.Dense(3, 3, new double[9] { 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0 }); + var distortedImage = new Microsoft.Psi.Imaging.Image(img.Width, img.Height, img.PixelFormat); + double[] colorArray = new double[9] { colorIntrinsics[2], 0.0, 0.0, 0.0, colorIntrinsics[3], 0.0, colorIntrinsics[0], colorIntrinsics[1], 1.0, }; + double[] depthArray = new double[9] { depthIntrinsics[2], 0.0, 0.0, 0.0, depthIntrinsics[3], 0.0, depthIntrinsics[0], depthIntrinsics[1], 1.0, }; + var intrinsicMat = CreateMatrix.Dense(3, 3, useColor ? colorArray : depthArray); var ci = new CameraIntrinsics( img.Width, img.Height, intrinsicMat, Vector.Build.DenseOfArray(distortionCoefficients), - Vector.Build.DenseOfArray(tangentialCoefficients)); + Vector.Build.DenseOfArray(tangentialCoefficients), + reverseDirection); + unsafe { byte* dstrow = (byte*)distortedImage.ImageData.ToPointer(); @@ -111,15 +163,18 @@ namespace Test.Psi.Calibration byte* dstcol = dstrow; for (int j = 0; j < distortedImage.Width; j++) { - MathNet.Spatial.Euclidean.Point2D pixelCoord = new MathNet.Spatial.Euclidean.Point2D((i - 512.0) / 1024.0, (j - 512.0) / 1024.0); - MathNet.Spatial.Euclidean.Point2D distortedPixelCoord; - ci.DistortPoint(pixelCoord, out distortedPixelCoord); + MathNet.Spatial.Euclidean.Point2D pixelCoord = new MathNet.Spatial.Euclidean.Point2D( + ((float)j - ci.PrincipalPoint.X) / ci.FocalLengthXY.X, + ((float)i - ci.PrincipalPoint.Y) / ci.FocalLengthXY.Y); - int px = (int)(distortedPixelCoord.X * 1024.0 + 512.0); - int py = (int)(distortedPixelCoord.Y * 1024.0 + 512.0); - if (px >= 0 && px < img.Width && py >= 0 && py < img.Height) + Point2D undistortedPoint; + bool converged = ci.UndistortPoint(pixelCoord, out undistortedPoint); + + int px = (int)(undistortedPoint.X * ci.FocalLengthXY.X + ci.PrincipalPoint.X); + int py = (int)(undistortedPoint.Y * ci.FocalLengthXY.Y + ci.PrincipalPoint.Y); + if (converged && px >= 0 && px < img.Width && py >= 0 && py < img.Height) { - byte* src = (byte*)img.ImageData.ToPointer() + py * distortedImage.Stride + px * distortedImage.BitsPerPixel / 8; + byte* src = (byte*)img.ImageData.ToPointer() + py * img.Stride + px * img.BitsPerPixel / 8; dstcol[0] = src[0]; dstcol[1] = src[1]; dstcol[2] = src[2]; @@ -136,7 +191,7 @@ namespace Test.Psi.Calibration } // Finally run undistort on the result - var undistortedImage = Microsoft.Psi.Imaging.Image.Create(img.Width, img.Height, img.PixelFormat); + var undistortedImage = new Microsoft.Psi.Imaging.Image(img.Width, img.Height, img.PixelFormat); unsafe { double err = 0.0; @@ -147,14 +202,16 @@ namespace Test.Psi.Calibration byte* dstcol = dstrow; for (int j = 0; j < undistortedImage.Width; j++) { - MathNet.Spatial.Euclidean.Point2D pixelCoord = new MathNet.Spatial.Euclidean.Point2D((i - 512.0) / 1024.0, (j - 512.0) / 1024.0); - MathNet.Spatial.Euclidean.Point2D distortedPixelCoord; + MathNet.Spatial.Euclidean.Point2D pixelCoord = new MathNet.Spatial.Euclidean.Point2D( + ((float)j - ci.PrincipalPoint.X) / ci.FocalLengthXY.X, + ((float)i - ci.PrincipalPoint.Y) / ci.FocalLengthXY.Y); + MathNet.Spatial.Euclidean.Point2D distortedPixelCoord, undistortedPixelCoord; ci.DistortPoint(pixelCoord, out distortedPixelCoord); - var undistortedPixelCoord = ci.UndistortPoint(distortedPixelCoord); + bool converged = ci.UndistortPoint(distortedPixelCoord, out undistortedPixelCoord); - int px = (int)(undistortedPixelCoord.X * 1024.0 + 512.0); - int py = (int)(undistortedPixelCoord.Y * 1024.0 + 512.0); - if (px >= 0 && px < img.Width && py >= 0 && py < img.Height) + int px = (int)(undistortedPixelCoord.X * ci.FocalLengthXY.X + ci.PrincipalPoint.X); + int py = (int)(undistortedPixelCoord.Y * ci.FocalLengthXY.Y + ci.PrincipalPoint.Y); + if (converged && px >= 0 && px < img.Width && py >= 0 && py < img.Height) { byte* src = (byte*)img.ImageData.ToPointer() + py * img.Stride + px * img.BitsPerPixel / 8; dstcol[0] = src[0]; diff --git a/Sources/Calibration/Test.Psi.Calibration/LevenbergMarquardtTests.cs b/Sources/Calibration/Test.Psi.Calibration/LevenbergMarquardtTests.cs new file mode 100644 index 00000000..7bec416b --- /dev/null +++ b/Sources/Calibration/Test.Psi.Calibration/LevenbergMarquardtTests.cs @@ -0,0 +1,65 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Test.Psi.Calibration +{ + using System; + using MathNet.Numerics.LinearAlgebra; + using Microsoft.Psi.Calibration; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + /// + /// Distortion tests. + /// + [TestClass] + public class LevenbergMarquardtTests + { + [TestMethod] + [Timeout(60000)] + public void TestOptimization() + { + // generate x_i, y_i observations on test function + var random = new Random(); + + int n = 200; + + var matX = Vector.Build.Dense(n); + var matY = Vector.Build.Dense(n); + + double a = 100; + double b = 102; + for (int i = 0; i < n; i++) + { + double x = (random.NextDouble() / (Math.PI / 4.0)) - (Math.PI / 8.0); + double y = (a * Math.Cos(b * x)) + (b * Math.Sin(a * x)) + (random.NextDouble() * 0.1); + matX[i] = x; + matY[i] = y; + } + + LevenbergMarquardt.Function f = (Vector parameters) => + { + // return y_i - f(x_i, parameters) as column vector + var error = Vector.Build.Dense(n); + + double a2 = parameters[0]; + double b2 = parameters[1]; + + for (int i = 0; i < n; i++) + { + double y = (a2 * Math.Cos(b2 * matX[i])) + (b2 * Math.Sin(a2 * matX[i])); + error[i] = matY[i] - y; + } + + return error; + }; + + var levenbergMarquardt = new LevenbergMarquardt(f); + + var parameters0 = Vector.Build.Dense(2); + parameters0[0] = 90; + parameters0[1] = 96; + + var rmsError = levenbergMarquardt.Minimize(parameters0); + } + } +} diff --git a/Sources/Calibration/Test.Psi.Calibration/Test.Psi.Calibration.csproj b/Sources/Calibration/Test.Psi.Calibration/Test.Psi.Calibration.csproj index c964a976..7af970a6 100644 --- a/Sources/Calibration/Test.Psi.Calibration/Test.Psi.Calibration.csproj +++ b/Sources/Calibration/Test.Psi.Calibration/Test.Psi.Calibration.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + netcoreapp3.1 false Calibration unit tests Test.Psi.Calibration.ConsoleMain @@ -30,10 +30,10 @@ - + - - + + diff --git a/Sources/Common/Test.Psi.Common/Test.Psi.Common.csproj b/Sources/Common/Test.Psi.Common/Test.Psi.Common.csproj index b7449351..e33166bc 100644 --- a/Sources/Common/Test.Psi.Common/Test.Psi.Common.csproj +++ b/Sources/Common/Test.Psi.Common/Test.Psi.Common.csproj @@ -20,8 +20,6 @@ true true - false - Microsoft Corporation @@ -31,8 +29,12 @@ + + all + runtime; build; native; contentfiles; analyzers + - + diff --git a/Sources/Common/Test.Psi.Common/TestRunner.cs b/Sources/Common/Test.Psi.Common/TestRunner.cs index a5df3d2a..2d3a1ce5 100644 --- a/Sources/Common/Test.Psi.Common/TestRunner.cs +++ b/Sources/Common/Test.Psi.Common/TestRunner.cs @@ -195,7 +195,7 @@ namespace Test.Psi.Common } /// - /// Due to the runtime's asynchronous behaviour, we may try to + /// Due to the runtime's asynchronous behavior, we may try to /// delete our test directory before the runtime has finished /// messing with it. This method will keep trying to delete /// the directory until the runtime shuts down. diff --git a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotatedEvent.cs b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotatedEvent.cs index 09911157..03ad512b 100644 --- a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotatedEvent.cs +++ b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotatedEvent.cs @@ -21,10 +21,10 @@ namespace Microsoft.Psi.Data.Annotations /// The end time of the annotated event. public AnnotatedEvent(DateTime startTime, DateTime endTime) { + this.CheckArguments(startTime, endTime); this.StartTime = startTime; this.EndTime = endTime; this.InternalAnnotations = new List(); - this.InitNew(); } /// @@ -85,14 +85,11 @@ namespace Microsoft.Psi.Data.Annotations } /// - /// Overridable method to allow derived object to initialize properties as part of object construction or after deserialization. + /// Overridable method to allow derived object to initialize properties after deserialization. /// protected virtual void InitNew() { - if (this.EndTime < this.StartTime) - { - throw new ArgumentException("startTime must preceed endTime.", "startTime"); - } + this.CheckArguments(this.StartTime, this.EndTime); } [OnDeserialized] @@ -100,5 +97,13 @@ namespace Microsoft.Psi.Data.Annotations { this.InitNew(); } + + private void CheckArguments(DateTime startTime, DateTime endTime) + { + if (endTime < startTime) + { + throw new ArgumentException("startTime must preceed endTime.", "startTime"); + } + } } } diff --git a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationPartition.cs b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationPartition.cs index 41780d36..9fe5db3a 100644 --- a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationPartition.cs +++ b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationPartition.cs @@ -16,6 +16,7 @@ namespace Microsoft.Psi.Data.Annotations private AnnotationPartition(Session session, string storeName, string storePath, string name) : base(session, storeName, storePath, name, typeof(AnnotationSimpleReader)) { + this.Reader = new AnnotationSimpleReader(storeName, storePath); } private AnnotationPartition() @@ -36,7 +37,7 @@ namespace Microsoft.Psi.Data.Annotations using (var writer = new AnnotationSimpleWriter(definition)) { writer.CreateStore(storeName, storePath); - writer.CreateStream(new JsonStreamMetadata(definition.Name, 0, typeof(AnnotatedEvent).AssemblyQualifiedName, storeName, storePath), new List>()); + writer.CreateStream(new JsonStreamMetadata(definition.Name, 0, typeof(AnnotatedEvent).AssemblyQualifiedName, null, storeName, storePath), new List>()); writer.WriteAll(ReplayDescriptor.ReplayAll); } @@ -57,7 +58,7 @@ namespace Microsoft.Psi.Data.Annotations } /// - /// Overridable method to allow derived object to initialize properties as part of object construction or after deserialization. + /// Overridable method to allow derived object to initialize properties after deserialization. /// protected override void InitNew() { diff --git a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchema.cs b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchema.cs index 9fc58d08..5737d6ad 100644 --- a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchema.cs +++ b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchema.cs @@ -95,7 +95,7 @@ namespace Microsoft.Psi.Data.Annotations /// /// Removes an annotation schema value from the current annotation schema. /// - /// The annotation schema value to remove from teh current annotation schema. + /// The annotation schema value to remove from the current annotation schema. public void RemoveSchemaValue(AnnotationSchemaValue schemaValue) { this.InternalValues.Remove(schemaValue); diff --git a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchemaRegistry.cs b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchemaRegistry.cs index c83e6eb7..21174d1b 100644 --- a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchemaRegistry.cs +++ b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSchemaRegistry.cs @@ -8,7 +8,7 @@ namespace Microsoft.Psi.Data.Annotations using System.Runtime.Serialization; /// - /// Provides a singleton resistry for annotation schemas. + /// Provides a singleton registry for annotation schemas. /// [DataContract(Namespace = "http://www.microsoft.com/psi")] public class AnnotationSchemaRegistry @@ -22,7 +22,6 @@ namespace Microsoft.Psi.Data.Annotations private AnnotationSchemaRegistry() { this.InternalSchemas = new List(); - this.InitNew(); } /// @@ -53,7 +52,7 @@ namespace Microsoft.Psi.Data.Annotations } /// - /// Overridable method to allow derived object to initialize properties as part of object construction or after deserialization. + /// Overridable method to allow derived object to initialize properties after deserialization. /// protected virtual void InitNew() { diff --git a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleReader.cs b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleReader.cs index cacad241..8b480f2d 100644 --- a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleReader.cs +++ b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleReader.cs @@ -19,8 +19,9 @@ namespace Microsoft.Psi.Data.Annotations /// The name of the application that generated the persisted files, or the root name of the files. /// The directory in which the main persisted file resides or will reside, or null to create a volatile data store. public AnnotationSimpleReader(string name, string path) - : base(name, path, AnnotationStoreCommon.DefaultExtension) + : this() { + this.Reader = new AnnotationStoreReader(name, path); } /// @@ -36,7 +37,7 @@ namespace Microsoft.Psi.Data.Annotations /// /// Existing used to initialize new instance. public AnnotationSimpleReader(AnnotationSimpleReader that) - : base(that) + : this(that.Name, that.Path) { } diff --git a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleWriter.cs b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleWriter.cs index f0b34882..f9bd0bd2 100644 --- a/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleWriter.cs +++ b/Sources/Data/Microsoft.Psi.Data/Annotations/AnnotationSimpleWriter.cs @@ -22,9 +22,9 @@ namespace Microsoft.Psi.Data.Annotations /// The annotated event definition used to create and validate annotated events for this store. /// If true, a numbered subdirectory is created for this store. public AnnotationSimpleWriter(string name, string path, AnnotatedEventDefinition definition, bool createSubdirectory = true) - : base(name, path, createSubdirectory, AnnotationStoreCommon.DefaultExtension) + : this(definition) { - this.definition = definition; + this.Writer = new AnnotationStoreWriter(name, path, definition, createSubdirectory); } /// diff --git a/Sources/Data/Microsoft.Psi.Data/Dataset.cs b/Sources/Data/Microsoft.Psi.Data/Dataset.cs index 9a427979..0e4920e9 100644 --- a/Sources/Data/Microsoft.Psi.Data/Dataset.cs +++ b/Sources/Data/Microsoft.Psi.Data/Dataset.cs @@ -43,7 +43,7 @@ namespace Microsoft.Psi.Data public string Name { get; set; } /// - /// Gets the orginating time interval (earliest to latest) of the messages in this dataset. + /// Gets the originating time interval (earliest to latest) of the messages in this dataset. /// [IgnoreDataMember] public TimeInterval OriginatingTimeInterval => @@ -87,7 +87,7 @@ namespace Microsoft.Psi.Data } /// - /// Creates a new dataset from an exising data store. + /// Creates a new dataset from an existing data store. /// /// The name of the data store. /// The path of the data store. @@ -227,7 +227,7 @@ namespace Microsoft.Psi.Data /// The name of the output data store. Default is null. /// The path of the output data store. Default is null. /// The replay descriptor to us. - /// A token for cancelling the asynchronous task. + /// A token for canceling the asynchronous task. /// A task that represents the asynchronous operation. public async Task CreateDerivedPartitionAsync( Action computeDerived, @@ -259,7 +259,7 @@ namespace Microsoft.Psi.Data /// A function to determine output path from the given Session. /// The replay descriptor to us. /// An object that can be used for reporting progress. - /// A token for cancelling the asynchronous task. + /// A token for canceling the asynchronous task. /// A task that represents the asynchronous operation. public async Task CreateDerivedPartitionAsync( Action computeDerived, @@ -286,7 +286,7 @@ namespace Microsoft.Psi.Data /// /// Asynchronously computes a derived partition for each session in the dataset. /// - /// The type of paramater passed to the action. + /// The type of parameter passed to the action. /// The action to be invoked to derive partitions. /// The parameter to be passed to the action. /// The output partition name to be created. @@ -295,7 +295,7 @@ namespace Microsoft.Psi.Data /// A function to determine output path from the given Session. /// The replay descriptor to us. /// An object that can be used for reporting progress. - /// A token for cancelling the asynchronous task. + /// A token for canceling the asynchronous task. /// A task that represents the asynchronous operation. public async Task CreateDerivedPartitionAsync( Action computeDerived, @@ -328,7 +328,7 @@ namespace Microsoft.Psi.Data /// /// Asynchronously computes a derived partition for each session in the dataset. /// - /// The type of paramater passed to the action. + /// The type of parameter passed to the action. /// The action to be invoked to derive partitions. /// The parameter to be passed to the action. /// The output partition name to be created. @@ -336,7 +336,7 @@ namespace Microsoft.Psi.Data /// The name of the output data store. Default is null. /// The path of the output data store. Default is null. /// The replay descriptor to us. - /// A token for cancelling the asynchronous task. + /// A token for canceling the asynchronous task. /// A task that represents the asynchronous operation. public async Task CreateDerivedPartitionAsync( Action computeDerived, @@ -372,7 +372,7 @@ namespace Microsoft.Psi.Data /// Adds sessions from data stores located in the specified path. /// /// The path that contains the data stores. - /// The name of the partion to be added when adding a new session. Default is null. + /// The name of the partition to be added when adding a new session. Default is null. public void AddSessionsFromExistingStores(string path, string partitionName = null) { this.AddSessionsFromExistingStores(path, path, partitionName); diff --git a/Sources/Data/Microsoft.Psi.Data/IPartition.cs b/Sources/Data/Microsoft.Psi.Data/IPartition.cs index 1e7953b4..780e3bfb 100644 --- a/Sources/Data/Microsoft.Psi.Data/IPartition.cs +++ b/Sources/Data/Microsoft.Psi.Data/IPartition.cs @@ -16,7 +16,7 @@ namespace Microsoft.Psi.Data string Name { get; set; } /// - /// Gets the orginating time interval (earliest to latest) of the messages in this partition. + /// Gets the originating time interval (earliest to latest) of the messages in this partition. /// TimeInterval OriginatingTimeInterval { get; } diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonExporter.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonExporter.cs index 74c7fbdb..fc6a4374 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonExporter.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonExporter.cs @@ -69,6 +69,8 @@ namespace Microsoft.Psi.Data.Json { this.writer.Dispose(); } + + this.throttle.Dispose(); } /// diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonGenerator.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonGenerator.cs index 32ae5cc6..7e45ae5b 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonGenerator.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonGenerator.cs @@ -61,7 +61,7 @@ namespace Microsoft.Psi.Data.Json public IEnumerable AvailableStreams => this.reader.AvailableStreams; /// - /// Gets the orginating time interval (earliest to latest) of the messages in the underlying data store. + /// Gets the originating time interval (earliest to latest) of the messages in the underlying data store. /// public TimeInterval OriginatingTimeInterval => this.reader.OriginatingTimeInterval; @@ -90,7 +90,7 @@ namespace Microsoft.Psi.Data.Json /// /// Type of data in underlying stream. /// The name of the stream. - /// The newly created emmitte that generates messages from the stream of type . + /// The newly created emitter that generates messages from the stream of type . public Emitter OpenStream(string streamName) { // if stream already opened, return emitter diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleReader.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleReader.cs index 805d7689..9c6cb0eb 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleReader.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleReader.cs @@ -27,7 +27,7 @@ namespace Microsoft.Psi.Data.Json public JsonSimpleReader(string name, string path, string extension = JsonStoreBase.DefaultExtension) : this(extension) { - this.OpenStore(name, path); + this.Reader = new JsonStoreReader(name, path, extension); } /// diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleWriter.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleWriter.cs index b6cf6135..b39a387a 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleWriter.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonSimpleWriter.cs @@ -28,7 +28,7 @@ namespace Microsoft.Psi.Data.Json public JsonSimpleWriter(string name, string path, bool createSubdirectory = true, string extension = JsonStoreBase.DefaultExtension) : this(extension) { - this.CreateStore(name, path, createSubdirectory); + this.Writer = new JsonStoreWriter(name, path, createSubdirectory, extension); } /// diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreReader.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreReader.cs index 48214738..d6c0249a 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreReader.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreReader.cs @@ -62,7 +62,7 @@ namespace Microsoft.Psi.Data.Json public IEnumerable AvailableStreams => this.catalog; /// - /// Gets the orginating time interval (earliest to latest) of the messages in the data store. + /// Gets the originating time interval (earliest to latest) of the messages in the data store. /// public TimeInterval OriginatingTimeInterval => this.originatingTimeInterval; @@ -113,6 +113,7 @@ namespace Microsoft.Psi.Data.Json { this.streamReader?.Dispose(); this.streamReader = null; + this.jsonReader?.Close(); this.jsonReader = null; } diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreWriter.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreWriter.cs index ca2f89dd..26e44469 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreWriter.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonStoreWriter.cs @@ -67,6 +67,7 @@ namespace Microsoft.Psi.Data.Json this.jsonWriter.WriteEndArray(); this.streamWriter.Dispose(); this.streamWriter = null; + this.jsonWriter.Close(); this.jsonWriter = null; } diff --git a/Sources/Data/Microsoft.Psi.Data/Json/JsonStreamMetadata.cs b/Sources/Data/Microsoft.Psi.Data/Json/JsonStreamMetadata.cs index d6177b65..ac409eb0 100644 --- a/Sources/Data/Microsoft.Psi.Data/Json/JsonStreamMetadata.cs +++ b/Sources/Data/Microsoft.Psi.Data/Json/JsonStreamMetadata.cs @@ -18,7 +18,6 @@ namespace Microsoft.Psi.Data.Json /// public JsonStreamMetadata() { - this.Reset(); } /// @@ -26,15 +25,17 @@ namespace Microsoft.Psi.Data.Json /// /// The name of the stream the metadata represents. /// The id of the stream the metadata represents. - /// The name of the type of data conatined in the stream the metadata represents. - /// The name of the partation where the stream is stored. - /// The path of the partation where the stream is stored. - public JsonStreamMetadata(string name, int id, string typeName, string partitionName, string partitionPath) + /// The name of the type of data contained in the stream the metadata represents. + /// The name of the type of supplemental metadata for the stream the metadata represents. + /// The name of the partition where the stream is stored. + /// The path of the partition where the stream is stored. + public JsonStreamMetadata(string name, int id, string typeName, string supplementalMetadataTypeName, string partitionName, string partitionPath) : this() { this.Name = name; this.Id = id; this.TypeName = typeName; + this.SupplementalMetadataTypeName = supplementalMetadataTypeName; this.PartitionName = partitionName; this.PartitionPath = partitionPath; } @@ -87,19 +88,9 @@ namespace Microsoft.Psi.Data.Json [JsonProperty(Order = 12)] public int MessageCount { get; set; } - /// - /// Reset statistics for this stream metadata instance. - /// - public virtual void Reset() - { - this.FirstMessageTime = default(DateTime); - this.LastMessageTime = default(DateTime); - this.FirstMessageOriginatingTime = default(DateTime); - this.LastMessageOriginatingTime = default(DateTime); - this.AverageMessageSize = 0; - this.AverageLatency = 0; - this.MessageCount = 0; - } + /// + [JsonProperty(Order = 13)] + public string SupplementalMetadataTypeName { get; set; } /// public void Update(Envelope envelope, int size) diff --git a/Sources/Data/Microsoft.Psi.Data/Microsoft.Psi.Data.csproj b/Sources/Data/Microsoft.Psi.Data/Microsoft.Psi.Data.csproj index 7f8d8795..987c0b3c 100644 --- a/Sources/Data/Microsoft.Psi.Data/Microsoft.Psi.Data.csproj +++ b/Sources/Data/Microsoft.Psi.Data/Microsoft.Psi.Data.csproj @@ -29,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Data/Microsoft.Psi.Data/Partition.cs b/Sources/Data/Microsoft.Psi.Data/Partition.cs index ea0f9dd0..a68f5d93 100644 --- a/Sources/Data/Microsoft.Psi.Data/Partition.cs +++ b/Sources/Data/Microsoft.Psi.Data/Partition.cs @@ -33,7 +33,6 @@ namespace Microsoft.Psi.Data this.StoreName = storeName; this.StorePath = storePath; this.Name = name ?? storeName; - this.InitNew(); } /// @@ -100,7 +99,7 @@ namespace Microsoft.Psi.Data public IEnumerable AvailableStreams => this.Reader?.AvailableStreams; /// - /// Overridable method to allow derived object to initialize properties as part of object construction or after deserialization. + /// Overridable method to allow derived object to initialize properties after deserialization. /// protected virtual void InitNew() { diff --git a/Sources/Data/Microsoft.Psi.Data/Session.cs b/Sources/Data/Microsoft.Psi.Data/Session.cs index 07eb942c..dc712268 100644 --- a/Sources/Data/Microsoft.Psi.Data/Session.cs +++ b/Sources/Data/Microsoft.Psi.Data/Session.cs @@ -71,7 +71,7 @@ namespace Microsoft.Psi.Data } /// - /// Gets the orginating time interval (earliest to latest) of the messages in this session. + /// Gets the originating time interval (earliest to latest) of the messages in this session. /// [IgnoreDataMember] public TimeInterval OriginatingTimeInterval => @@ -122,7 +122,7 @@ namespace Microsoft.Psi.Data /// /// The name of the annotation store. /// The path of the annotation store. - /// The annotated event definition to use when creating new annoted events in the newly created annotation partition. + /// The annotated event definition to use when creating new annotated events in the newly created annotation partition. /// The partition name. Default is null. /// The newly added annotation partition. public AnnotationPartition CreateAnnotationPartition(string storeName, string storePath, AnnotatedEventDefinition definition, string partitionName = null) @@ -135,7 +135,7 @@ namespace Microsoft.Psi.Data /// /// Asynchronously computes a derived partition for the session. /// - /// The type of paramater passed to the action. + /// The type of parameter passed to the action. /// The action to be invoked to derive partitions. /// The parameter to be passed to the action. /// The output partition name to be created. @@ -144,7 +144,7 @@ namespace Microsoft.Psi.Data /// The path of the output partition. Default is null. /// The replay descriptor to us. /// An object that can be used for reporting progress. - /// A token for cancelling the asynchronous task. + /// A token for canceling the asynchronous task. /// A task that represents the asynchronous operation. public async Task CreateDerivedPartitionAsync( Action computeDerived, @@ -274,7 +274,7 @@ namespace Microsoft.Psi.Data } /// - /// Due to the runtime's asynchronous behaviour, we may try to + /// Due to the runtime's asynchronous behavior, we may try to /// delete our test directory before the runtime has finished /// messing with it. This method will keep trying to delete /// the directory until the runtime shuts down. diff --git a/Sources/Data/Microsoft.Psi.Data/SessionImporter.cs b/Sources/Data/Microsoft.Psi.Data/SessionImporter.cs index 03bf4f99..a272d72a 100644 --- a/Sources/Data/Microsoft.Psi.Data/SessionImporter.cs +++ b/Sources/Data/Microsoft.Psi.Data/SessionImporter.cs @@ -31,7 +31,7 @@ namespace Microsoft.Psi.Data public string Name { get; private set; } /// - /// Gets the orginating time interval (earliest to latest) of the messages in the session. + /// Gets the originating time interval (earliest to latest) of the messages in the session. /// public TimeInterval OriginatingTimeInterval { get; private set; } @@ -76,7 +76,7 @@ namespace Microsoft.Psi.Data } /// - /// Determines if a specicif importer contains the named stream. + /// Determines if a specific importer contains the named stream. /// /// Partition name of the specific importer. /// The stream to search for. diff --git a/Sources/Data/Microsoft.Psi.Data/SimpleReader.cs b/Sources/Data/Microsoft.Psi.Data/SimpleReader.cs index 54447f2c..0208d7a0 100644 --- a/Sources/Data/Microsoft.Psi.Data/SimpleReader.cs +++ b/Sources/Data/Microsoft.Psi.Data/SimpleReader.cs @@ -114,6 +114,18 @@ namespace Microsoft.Psi.Data /// The metadata describing the specified stream. public PsiStreamMetadata GetMetadata(string streamName) => this.reader.GetMetadata(streamName); + /// + /// Returns the supplemental metadata for a specified storage stream. + /// + /// Type of supplemental metadata. + /// The name of the storage stream. + /// The metadata associated with the storage stream. + public T GetSupplementalMetadata(string streamName) + { + var meta = this.reader.GetMetadata(streamName); + return meta.GetSupplementalMetadata(this.Serializers); + } + /// /// Checks whether the specified storage stream exist in this store. /// diff --git a/Sources/Data/Microsoft.Psi.Data/StorePartition.cs b/Sources/Data/Microsoft.Psi.Data/StorePartition.cs index 0bc58493..af94bd61 100644 --- a/Sources/Data/Microsoft.Psi.Data/StorePartition.cs +++ b/Sources/Data/Microsoft.Psi.Data/StorePartition.cs @@ -15,6 +15,7 @@ namespace Microsoft.Psi.Data private StorePartition(Session session, string storeName, string storePath, string name) : base(session, storeName, storePath, name, typeof(SimpleReader)) { + this.Reader = new SimpleReader(storeName, storePath); } private StorePartition() @@ -40,7 +41,7 @@ namespace Microsoft.Psi.Data } /// - /// Creates a store partition from an exisitng data store. + /// Creates a store partition from an existing data store. /// /// The session that this partition belongs to. /// The store name of this partition. @@ -60,7 +61,7 @@ namespace Microsoft.Psi.Data } /// - /// Overridable method to allow derived object to initialize properties as part of object construction or after deserialization. + /// Overridable method to allow derived object to initialize properties after deserialization. /// protected override void InitNew() { diff --git a/Sources/Data/Test.Psi.Data/AnnotationTests.cs b/Sources/Data/Test.Psi.Data/AnnotationTests.cs index 30df4fc0..73368a22 100644 --- a/Sources/Data/Test.Psi.Data/AnnotationTests.cs +++ b/Sources/Data/Test.Psi.Data/AnnotationTests.cs @@ -49,7 +49,7 @@ namespace Test.Psi.Data.Annotations this.definition = new AnnotatedEventDefinition("Definition"); this.definition.AddSchema(this.booleanSchema); - this.metadata = new JsonStreamMetadata("Range", 1, typeof(AnnotatedEvent).AssemblyQualifiedName, this.name, this.path); + this.metadata = new JsonStreamMetadata("Range", 1, typeof(AnnotatedEvent).AssemblyQualifiedName, null, this.name, this.path); } /// diff --git a/Sources/Data/Test.Psi.Data/DatasetTests.cs b/Sources/Data/Test.Psi.Data/DatasetTests.cs index 0fa6e4e6..bbbc332c 100644 --- a/Sources/Data/Test.Psi.Data/DatasetTests.cs +++ b/Sources/Data/Test.Psi.Data/DatasetTests.cs @@ -388,7 +388,7 @@ namespace Test.Psi.Data var inputStream = importer.OpenStream("Root"); var derivedStream = inputStream.Sample(TimeSpan.FromMinutes(1), RelativeTimeInterval.Infinite).Select(x => x * parameter).Write("DerivedStream", exporter); - // add a dummy source and propose a long time interval so that the operation will block (and eventually be cancelled) + // add a dummy source and propose a long time interval so that the operation will block (and eventually be canceled) var generator = Generators.Repeat(pipeline, 0, int.MaxValue, TimeSpan.FromMilliseconds(1000)); var replayTimeInterval = TimeInterval.LeftBounded(importer.OriginatingTimeInterval.Left); pipeline.ProposeReplayTime(replayTimeInterval); diff --git a/Sources/Data/Test.Psi.Data/JsonTests.cs b/Sources/Data/Test.Psi.Data/JsonTests.cs index fbb4129d..5a898b9c 100644 --- a/Sources/Data/Test.Psi.Data/JsonTests.cs +++ b/Sources/Data/Test.Psi.Data/JsonTests.cs @@ -117,8 +117,8 @@ namespace Test.Psi.Data { writer.CreateStore(StoreName, OutputPath, false); - IStreamMetadata metadata1 = new JsonStreamMetadata("Stream1", 1, TypeName, PartitionName, OutputPath); - IStreamMetadata metadata2 = new JsonStreamMetadata("Stream2", 2, TypeName, PartitionName, OutputPath); + IStreamMetadata metadata1 = new JsonStreamMetadata("Stream1", 1, TypeName, null, PartitionName, OutputPath); + IStreamMetadata metadata2 = new JsonStreamMetadata("Stream2", 2, TypeName, null, PartitionName, OutputPath); List> stream1 = new List>(); stream1.Add(new Message(Data, FirstTime, FirstTime, 1, 0)); @@ -134,7 +134,7 @@ namespace Test.Psi.Data } var escapedOutputPath = OutputPath.Replace(@"\", @"\\"); - string expectedCatalog = "[{\"Name\":\"Stream1\",\"Id\":1,\"TypeName\":\"Test.Psi.Data.SimpleObject\",\"PartitionName\":\"JsonStore\",\"PartitionPath\":\"" + escapedOutputPath + "\",\"FirstMessageTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageTime\":\"2017-11-01T09:15:34.12345Z\",\"FirstMessageOriginatingTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageOriginatingTime\":\"2017-11-01T09:15:34.12345Z\",\"AverageMessageSize\":303,\"AverageLatency\":0,\"MessageCount\":2},{\"Name\":\"Stream2\",\"Id\":2,\"TypeName\":\"Test.Psi.Data.SimpleObject\",\"PartitionName\":\"JsonStore\",\"PartitionPath\":\"" + escapedOutputPath + "\",\"FirstMessageTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageTime\":\"2017-11-01T09:15:34.12345Z\",\"FirstMessageOriginatingTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageOriginatingTime\":\"2017-11-01T09:15:34.12345Z\",\"AverageMessageSize\":303,\"AverageLatency\":0,\"MessageCount\":2}]"; + string expectedCatalog = "[{\"Name\":\"Stream1\",\"Id\":1,\"TypeName\":\"Test.Psi.Data.SimpleObject\",\"PartitionName\":\"JsonStore\",\"PartitionPath\":\"" + escapedOutputPath + "\",\"FirstMessageTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageTime\":\"2017-11-01T09:15:34.12345Z\",\"FirstMessageOriginatingTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageOriginatingTime\":\"2017-11-01T09:15:34.12345Z\",\"AverageMessageSize\":303,\"AverageLatency\":0,\"MessageCount\":2,\"SupplementalMetadataTypeName\":null},{\"Name\":\"Stream2\",\"Id\":2,\"TypeName\":\"Test.Psi.Data.SimpleObject\",\"PartitionName\":\"JsonStore\",\"PartitionPath\":\"" + escapedOutputPath + "\",\"FirstMessageTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageTime\":\"2017-11-01T09:15:34.12345Z\",\"FirstMessageOriginatingTime\":\"2017-11-01T09:15:30.12345Z\",\"LastMessageOriginatingTime\":\"2017-11-01T09:15:34.12345Z\",\"AverageMessageSize\":303,\"AverageLatency\":0,\"MessageCount\":2,\"SupplementalMetadataTypeName\":null}]"; string expectedData = "[{\"Envelope\":{\"SourceId\":1,\"SequenceId\":0,\"OriginatingTime\":\"2017-11-01T09:15:30.12345Z\",\"Time\":\"2017-11-01T09:15:30.12345Z\"},\"Data\":{\"ArrayValue\":[0,1,2,3],\"BoolValue\":true,\"DateTimeValue\":\"2017-11-30T12:59:41.896745Z\",\"DoubleValue\":0.123456,\"IntValue\":123456,\"ListValue\":[4,5,6,7],\"StringValue\":\"abc\",\"TimeSpanValue\":\"01:02:03.4567890\"}},{\"Envelope\":{\"SourceId\":2,\"SequenceId\":0,\"OriginatingTime\":\"2017-11-01T09:15:30.12345Z\",\"Time\":\"2017-11-01T09:15:30.12345Z\"},\"Data\":{\"ArrayValue\":[0,1,2,3],\"BoolValue\":true,\"DateTimeValue\":\"2017-11-30T12:59:41.896745Z\",\"DoubleValue\":0.123456,\"IntValue\":123456,\"ListValue\":[4,5,6,7],\"StringValue\":\"abc\",\"TimeSpanValue\":\"01:02:03.4567890\"}},{\"Envelope\":{\"SourceId\":1,\"SequenceId\":1,\"OriginatingTime\":\"2017-11-01T09:15:34.12345Z\",\"Time\":\"2017-11-01T09:15:34.12345Z\"},\"Data\":{\"ArrayValue\":[0,1,2,3],\"BoolValue\":true,\"DateTimeValue\":\"2017-11-30T12:59:41.896745Z\",\"DoubleValue\":0.123456,\"IntValue\":123456,\"ListValue\":[4,5,6,7],\"StringValue\":\"abc\",\"TimeSpanValue\":\"01:02:03.4567890\"}},{\"Envelope\":{\"SourceId\":2,\"SequenceId\":1,\"OriginatingTime\":\"2017-11-01T09:15:34.12345Z\",\"Time\":\"2017-11-01T09:15:34.12345Z\"},\"Data\":{\"ArrayValue\":[0,1,2,3],\"BoolValue\":true,\"DateTimeValue\":\"2017-11-30T12:59:41.896745Z\",\"DoubleValue\":0.123456,\"IntValue\":123456,\"ListValue\":[4,5,6,7],\"StringValue\":\"abc\",\"TimeSpanValue\":\"01:02:03.4567890\"}}]"; string actualCatalog = string.Empty; string actualData = string.Empty; diff --git a/Sources/Data/Test.Psi.Data/SimpleReaderTests.cs b/Sources/Data/Test.Psi.Data/SimpleReaderTests.cs index 3bde4602..4c073388 100644 --- a/Sources/Data/Test.Psi.Data/SimpleReaderTests.cs +++ b/Sources/Data/Test.Psi.Data/SimpleReaderTests.cs @@ -98,5 +98,30 @@ namespace Test.Psi.Data Assert.AreEqual(result.Sum(x => x), probe * size); } } + + [TestMethod] + [Timeout(60000)] + public void RetrieveStreamSupplementalMetadata() + { + var name = nameof(this.RetrieveStreamSupplementalMetadata); + + // create store with supplemental meta + using (var p = Pipeline.Create("write")) + { + var store = Store.Create(p, name, this.path); + var stream0 = Generators.Range(p, 0, 10, TimeSpan.FromTicks(1)); + var stream1 = Generators.Range(p, 0, 10, TimeSpan.FromTicks(1)); + stream0.Write("NoMeta", store, true); + stream1.Write(("Favorite irrational number", Math.E), "WithMeta", store); + } + + // read it back with a simple reader + var reader = new SimpleReader(name, this.path); + Assert.IsNull(reader.GetMetadata("NoMeta").SupplementalMetadataTypeName); + Assert.AreEqual(typeof(ValueTuple).AssemblyQualifiedName, reader.GetMetadata("WithMeta").SupplementalMetadataTypeName); + var supplemental1 = reader.GetSupplementalMetadata<(string, double)>("WithMeta"); + Assert.AreEqual("Favorite irrational number", supplemental1.Item1); + Assert.AreEqual(Math.E, supplemental1.Item2); + } } } diff --git a/Sources/Data/Test.Psi.Data/Test.Psi.Data.csproj b/Sources/Data/Test.Psi.Data/Test.Psi.Data.csproj index 2a3dd798..720f44fa 100644 --- a/Sources/Data/Test.Psi.Data/Test.Psi.Data.csproj +++ b/Sources/Data/Test.Psi.Data/Test.Psi.Data.csproj @@ -1,7 +1,7 @@ - + - netcoreapp2.0 + netcoreapp3.1 false Test.Psi.Data.ConsoleMain @@ -31,10 +31,14 @@ - + + all + runtime; build; native; contentfiles; analyzers + + - - + + diff --git a/Sources/Devices/Microsoft.Psi.DeviceManagement/CameraDeviceInfo.cs b/Sources/Devices/Microsoft.Psi.DeviceManagement/CameraDeviceInfo.cs index adeb7522..61436b86 100644 --- a/Sources/Devices/Microsoft.Psi.DeviceManagement/CameraDeviceInfo.cs +++ b/Sources/Devices/Microsoft.Psi.DeviceManagement/CameraDeviceInfo.cs @@ -48,6 +48,11 @@ namespace Microsoft.Psi.DeviceManagement /// public string DeviceName { get; set; } + /// + /// Gets or sets the device id (index of device from systems perspective). + /// + public int DeviceId { get; set; } + /// /// Gets or sets the serial number for this device. Maybe empty string. /// diff --git a/Sources/Devices/Microsoft.Psi.DeviceManagement/Microsoft.Psi.DeviceManagement.csproj b/Sources/Devices/Microsoft.Psi.DeviceManagement/Microsoft.Psi.DeviceManagement.csproj index 99e19718..13e937f9 100644 --- a/Sources/Devices/Microsoft.Psi.DeviceManagement/Microsoft.Psi.DeviceManagement.csproj +++ b/Sources/Devices/Microsoft.Psi.DeviceManagement/Microsoft.Psi.DeviceManagement.csproj @@ -31,6 +31,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageCompressor.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageCompressor.cs new file mode 100644 index 00000000..166c1748 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageCompressor.cs @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using Microsoft.Psi.Common; + using Microsoft.Psi.Serialization; + + /// + /// Implements a compressor used by the serialization layer for compressing streams + /// of depth images in a generic fashion. This object should not be called directly, + /// but instead is used by the class. + /// + public class DepthImageCompressor : IDepthImageCompressor + { + private readonly IDepthImageToStreamEncoder encoder = null; + private readonly IDepthImageFromStreamDecoder decoder = null; + + /// + /// Initializes a new instance of the class. + /// + /// The depth compression method to be used. + public DepthImageCompressor(DepthCompressionMethod depthCompressionMethod) + { + this.DepthCompressionMethod = depthCompressionMethod; + switch (this.DepthCompressionMethod) + { + case DepthCompressionMethod.Png: + this.encoder = new DepthImageToPngStreamEncoder(); + break; + case DepthCompressionMethod.None: + break; + } + + this.decoder = new DepthImageFromStreamDecoder(); + } + + /// + public DepthCompressionMethod DepthCompressionMethod { get; set; } = DepthCompressionMethod.Png; + + /// + public void Serialize(BufferWriter writer, DepthImage depthImage, SerializationContext context) + { + if (this.encoder != null) + { + using var sharedEncodedDepthImage = EncodedDepthImagePool.GetOrCreate(depthImage.Width, depthImage.Height); + sharedEncodedDepthImage.Resource.EncodeFrom(depthImage, this.encoder); + Serializer.Serialize(writer, sharedEncodedDepthImage, context); + } + else + { + Serializer.Serialize(writer, depthImage, context); + } + } + + /// + public void Deserialize(BufferReader reader, ref DepthImage depthImage, SerializationContext context) + { + Shared sharedEncodedDepthImage = null; + Serializer.Deserialize(reader, ref sharedEncodedDepthImage, context); + using var sharedDepthImage = DepthImagePool.GetOrCreate(sharedEncodedDepthImage.Resource.Width, sharedEncodedDepthImage.Resource.Height); + sharedDepthImage.Resource.DecodeFrom(sharedEncodedDepthImage.Resource, this.decoder); + depthImage = sharedDepthImage.Resource.DeepClone(); + sharedEncodedDepthImage.Dispose(); + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageFromStreamDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageFromStreamDecoder.cs new file mode 100644 index 00000000..8cc8eb57 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageFromStreamDecoder.cs @@ -0,0 +1,22 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Runtime.InteropServices; + using SkiaSharp; + + /// + /// Implements a depth image decoder. + /// + public class DepthImageFromStreamDecoder : IDepthImageFromStreamDecoder + { + /// + public void DecodeFromStream(Stream stream, DepthImage depthImage) + { + var decoded = SKBitmap.Decode(stream); + Marshal.Copy(decoded.Bytes, 0, depthImage.ImageData, decoded.ByteCount); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageToPngStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageToPngStreamEncoder.cs new file mode 100644 index 00000000..991df2ef --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/DepthImageToPngStreamEncoder.cs @@ -0,0 +1,21 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using System.IO; + using SkiaSharp; + + /// + /// Implements a depth image encoder for PNG format. + /// + public class DepthImageToPngStreamEncoder : IDepthImageToStreamEncoder + { + /// + public void EncodeToStream(DepthImage depthImage, Stream stream) + { + depthImage.AsSKImage().Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/IBitmapEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/IBitmapEncoder.cs deleted file mode 100644 index 3453916a..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/IBitmapEncoder.cs +++ /dev/null @@ -1,20 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System.IO; - - /// - /// Bitmap encoder interface. - /// - public interface IBitmapEncoder - { - /// - /// Encode image to stream. - /// - /// Image to encode. - /// Stream to which to encode. - void Encode(Image image, Stream stream); - } -} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageCompressor.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageCompressor.cs index 194c79fc..990bc49e 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageCompressor.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageCompressor.cs @@ -7,74 +7,69 @@ namespace Microsoft.Psi.Imaging using Microsoft.Psi.Serialization; /// - /// ImageCompressor defines an object used by the serialization layer - /// for compressing streams of images in a generic fashion. This object - /// should not be called directly but instead if used by Microsoft.Psi.Imaging. + /// Implements a compressor used by the serialization layer for compressing streams + /// of images in a generic fashion. This object should not be called directly, but + /// instead is used by the class. /// public class ImageCompressor : IImageCompressor { - /// - /// Initializes a new instance of the class. - /// - public ImageCompressor() - { - } + private readonly IImageToStreamEncoder encoder = null; + private readonly IImageFromStreamDecoder decoder = null; /// /// Initializes a new instance of the class. /// - /// Compression method to be used by compressor. + /// The image compression method to be used. public ImageCompressor(CompressionMethod compressionMethod) { this.CompressionMethod = compressionMethod; - } - /// - /// Gets or sets the compression method being used by the compressor. - /// - public CompressionMethod CompressionMethod { get; set; } = CompressionMethod.PNG; - - /// - public void Serialize(BufferWriter writer, Image instance, SerializationContext context) - { - // Note: encoder instances are created here because they may have thread affinity. - IBitmapEncoder encoder = null; switch (this.CompressionMethod) { - case CompressionMethod.JPEG: - encoder = new JpegBitmapEncoder { QualityLevel = 90 }; + case CompressionMethod.Jpeg: + this.encoder = new ImageToJpegStreamEncoder { QualityLevel = 90 }; break; - case CompressionMethod.PNG: - encoder = new PngBitmapEncoder(); + case CompressionMethod.Png: + this.encoder = new ImageToPngStreamEncoder(); break; case CompressionMethod.None: break; } - if (encoder != null) + this.decoder = new ImageFromStreamDecoder(); + } + + /// + public CompressionMethod CompressionMethod { get; set; } = CompressionMethod.Png; + + /// + public void Serialize(BufferWriter writer, Image image, SerializationContext context) + { + if (this.encoder != null) { - using (var sharedEncodedImage = EncodedImagePool.GetOrCreate()) - { - sharedEncodedImage.Resource.EncodeFrom(instance, encoder.Encode); - Serializer.Serialize(writer, sharedEncodedImage, context); - } + using var sharedEncodedImage = EncodedImagePool.GetOrCreate(image.Width, image.Height, image.PixelFormat); + sharedEncodedImage.Resource.EncodeFrom(image, this.encoder); + Serializer.Serialize(writer, sharedEncodedImage, context); } else { - Serializer.Serialize(writer, instance, context); + Serializer.Serialize(writer, image, context); } } /// - public void Deserialize(BufferReader reader, ref Image target, SerializationContext context) + public void Deserialize(BufferReader reader, ref Image image, SerializationContext context) { - Shared encodedImage = null; - Serializer.Deserialize(reader, ref encodedImage, context); - using (var image = ImagePool.GetOrCreate(encodedImage.Resource.Width, encodedImage.Resource.Height, PixelFormat.BGR_24bpp)) - { - ImageDecoder.DecodeTo(encodedImage.Resource, image.Resource); - target = image.Resource.DeepClone(); - } + Shared sharedEncodedImage = null; + Serializer.Deserialize(reader, ref sharedEncodedImage, context); + + using var sharedImage = ImagePool.GetOrCreate( + sharedEncodedImage.Resource.Width, + sharedEncodedImage.Resource.Height, + sharedEncodedImage.Resource.PixelFormat); + sharedImage.Resource.DecodeFrom(sharedEncodedImage.Resource, this.decoder); + image = sharedImage.Resource.DeepClone(); + sharedEncodedImage.Dispose(); } } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageDecoder.cs deleted file mode 100644 index 893b70fa..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageDecoder.cs +++ /dev/null @@ -1,50 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System.Runtime.InteropServices; - using Microsoft.Psi; - using Microsoft.Psi.Components; - using SkiaSharp; - - /// - /// Pipeline component for decoding an image. - /// - public class ImageDecoder : ConsumerProducer, Shared> - { - /// - /// Initializes a new instance of the class. - /// - /// Pipeline this component is a part of. - public ImageDecoder(Pipeline pipeline) - : base(pipeline) - { - } - - /// - /// Decodes an encoded image into the given image instance. - /// - /// Encoded image to decode. - /// Image into which to decode. - public static void DecodeTo(EncodedImage encodedImage, Image image) - { - var decoded = SKBitmap.Decode(encodedImage.GetStream()); - Marshal.Copy(decoded.Bytes, 0, image.ImageData, decoded.ByteCount); - } - - /// - /// Pipeline callback method for decoding a sample. - /// - /// Encoded image to decode. - /// Pipeline information about the sample. - protected override void Receive(Shared encodedImage, Envelope e) - { - using (var image = ImagePool.GetOrCreate(encodedImage.Resource.Width, encodedImage.Resource.Height, PixelFormat.BGR_24bpp)) - { - DecodeTo(encodedImage.Resource, image.Resource); - this.Out.Post(image, e.OriginatingTime); - } - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageEncoder.cs deleted file mode 100644 index bcccc13a..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageEncoder.cs +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System; - using System.IO; - using Microsoft.Psi; - using Microsoft.Psi.Components; - - /// - /// Pipeline component for encoding an image. - /// - public class ImageEncoder : ConsumerProducer, Shared> - { - private readonly Func encoderFn; - - /// - /// Initializes a new instance of the class. - /// - /// Pipeline this component is a part of. - /// Callback method for encoding a single image sample. - public ImageEncoder(Pipeline pipeline, Func encoderFn) - : base(pipeline) - { - this.encoderFn = encoderFn; - } - - /// - /// Pipeline callback function for encoding an image sample. - /// - /// Image to be encoded. - /// Pipeline information about the sample. - protected override void Receive(Shared sharedImage, Envelope e) - { - // the encoder has thread affinity, so we need to re-create it (we can't dispatch the call since we sdon't know if the thread that created us is pumping messages) - var encoder = this.encoderFn(); - - using (var sharedEncodedImage = EncodedImagePool.GetOrCreate()) - { - sharedEncodedImage.Resource.EncodeFrom(sharedImage.Resource, encoder.Encode); - this.Out.Post(sharedEncodedImage, e.OriginatingTime); - } - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageFromStreamDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageFromStreamDecoder.cs new file mode 100644 index 00000000..f4be8515 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageFromStreamDecoder.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Runtime.InteropServices; + using SkiaSharp; + + /// + /// Implements an image decoder. + /// + public class ImageFromStreamDecoder : IImageFromStreamDecoder + { + /// + public void DecodeFromStream(Stream stream, Image image) + { + var decoded = SKBitmap.Decode(stream); + Marshal.Copy(decoded.Bytes, 0, image.ImageData, decoded.ByteCount); + } + + /// + public PixelFormat GetPixelFormat(Stream stream) + { + var decoded = SKBitmap.Decode(stream); + return decoded.ColorType switch + { + SKColorType.Bgra8888 => PixelFormat.BGRA_32bpp, + SKColorType.Gray8 => PixelFormat.Gray_8bpp, + _ => PixelFormat.Undefined, + }; + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToJpegStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToJpegStreamEncoder.cs new file mode 100644 index 00000000..9fdf5c11 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToJpegStreamEncoder.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using SkiaSharp; + + /// + /// Implements an image encoder for JPEG format. + /// + public class ImageToJpegStreamEncoder : IImageToStreamEncoder + { + /// + /// Gets or sets JPEG image quality (0-100). + /// + public int QualityLevel { get; set; } = 100; + + /// + public void EncodeToStream(Image image, Stream stream) + { + image.AsSKImage().Encode(SKEncodedImageFormat.Jpeg, this.QualityLevel).SaveTo(stream); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToPngStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToPngStreamEncoder.cs new file mode 100644 index 00000000..3294c460 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImageToPngStreamEncoder.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using SkiaSharp; + + /// + /// Implements an image encoder for PNG format. + /// + public class ImageToPngStreamEncoder : IImageToStreamEncoder + { + /// + public void EncodeToStream(Image image, Stream stream) + { + image.AsSKImage().Encode(SKEncodedImageFormat.Png, 100).SaveTo(stream); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImagingOperators.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImagingOperators.cs new file mode 100644 index 00000000..ec6e0c60 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/ImagingOperators.cs @@ -0,0 +1,91 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using SkiaSharp; + + /// + /// Implements stream operator methods for Imaging. + /// + public static partial class ImagingOperators + { + /// + /// Encodes an image to a JPEG format. + /// + /// A producer of images to encode. + /// JPEG quality to use. + /// An optional delivery policy. + /// A producer that generates the JPEG images. + public static IProducer> EncodeJpeg(this IProducer> source, int quality = 90, DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(new ImageToJpegStreamEncoder { QualityLevel = quality }, deliveryPolicy); + } + + /// + /// Encodes an image to a PNG format. + /// + /// A producer of images to encoder. + /// An optional delivery policy. + /// A producer that generates the PNG images. + public static IProducer> EncodePng(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(new ImageToPngStreamEncoder(), deliveryPolicy); + } + + /// + /// Decodes an encoded image. + /// + /// A producer of encoded images to decode. + /// An optional delivery policy. + /// A producer that generates the decoded images. + public static IProducer> Decode(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Decode(new ImageFromStreamDecoder(), deliveryPolicy); + } + + /// + /// Encodes a depth image to a PNG format. + /// + /// A producer of depth images to encode. + /// An optional delivery policy. + /// A producer that generates the PNG-encoded depth images. + public static IProducer> EncodePng(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(new DepthImageToPngStreamEncoder(), deliveryPolicy); + } + + /// + /// Decodes an encoded depth image. + /// + /// A producer of encoded depth images to decode. + /// An optional delivery policy. + /// A producer that generates the decoded depth images. + public static IProducer> Decode(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Decode(new DepthImageFromStreamDecoder(), deliveryPolicy); + } + + /// + /// Converts an image to a SkiaSharp SKImage. + /// + /// Image to convert to SKImage type. + /// SKImage. + internal static SKImage AsSKImage(this ImageBase image) + { + var data = SKData.Create(image.ImageData, image.Size); + var colorType = image.PixelFormat switch + { + // These are unsupported by SkiaSharp: BGRX_32bpp, BGR_24bpp, Gray_16bpp, RGBA_64bpp + PixelFormat.BGRA_32bpp => SKColorType.Bgra8888, + PixelFormat.Gray_8bpp => SKColorType.Gray8, + PixelFormat.Undefined => SKColorType.Unknown, + PixelFormat.Gray_16bpp => throw new ArgumentException($"Unsupported pixel format: {image.PixelFormat} (e.g. DepthImage)"), + _ => throw new ArgumentException($"Unsupported pixel format: {image.PixelFormat}"), + }; + var info = new SKImageInfo(image.Width, image.Height, colorType); + return SKImage.FromPixelData(info, data, image.Stride); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/JpegBitmapEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/JpegBitmapEncoder.cs deleted file mode 100644 index a1bd771f..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/JpegBitmapEncoder.cs +++ /dev/null @@ -1,32 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System.IO; - using SkiaSharp; - - /// - /// JPEG bitmap encoder. - /// - public class JpegBitmapEncoder : IBitmapEncoder - { - /// - /// Gets or sets JPEG image quality (0-100). - /// - public int QualityLevel { get; set; } - - /// - /// Encode image to stream. - /// - /// Image to be encoded. - /// Stream to which to encode. - public void Encode(Image image, Stream stream) - { - var data = SKData.Create(image.ImageData, image.Size); - var img = SKImage.FromPixelData(SKImageInfo.Empty, data, image.Stride); - var jpeg = img.Encode(SKEncodedImageFormat.Jpeg, this.QualityLevel); - jpeg.SaveTo(stream); - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/Microsoft.Psi.Imaging.Linux.csproj b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/Microsoft.Psi.Imaging.Linux.csproj index 90c3b2d0..2e472ba8 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/Microsoft.Psi.Imaging.Linux.csproj +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/Microsoft.Psi.Imaging.Linux.csproj @@ -29,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/PngBitmapEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/PngBitmapEncoder.cs deleted file mode 100644 index 088323cc..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/PngBitmapEncoder.cs +++ /dev/null @@ -1,27 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System.IO; - using SkiaSharp; - - /// - /// PNG bitmap encoder. - /// - public class PngBitmapEncoder : IBitmapEncoder - { - /// - /// Encode image to stream. - /// - /// Image to be encoded. - /// Stream to which to encode. - public void Encode(Image image, Stream stream) - { - var data = SKData.Create(image.ImageData, image.Size); - var img = SKImage.FromPixelData(SKImageInfo.Empty, data, image.Stride); - var png = img.Encode(SKEncodedImageFormat.Png, 100); - png.SaveTo(stream); - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/PsiImaging.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Linux/PsiImaging.cs deleted file mode 100644 index b1560873..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Linux/PsiImaging.cs +++ /dev/null @@ -1,59 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System; - - /// - /// Implements stream operator methods for Imaging. - /// - public static partial class ImagingOperators - { - /// - /// Converts from an Image to a compressed (encoded) image. - /// - /// Source image to encode. - /// Method to perform encoding. - /// An optional delivery policy. - /// Returns a producer that generates the encoded images. - public static IProducer> Encode(this IProducer> source, Func encoderFn, DeliveryPolicy> deliveryPolicy = null) - { - return source.PipeTo(new ImageEncoder(source.Out.Pipeline, encoderFn), deliveryPolicy); - } - - /// - /// Converts from an Image to a compressed JPEG image. - /// - /// Source image to compress. - /// JPEG quality to use. - /// An optional delivery policy. - /// Returns a producer that generates the JPEG images. - public static IProducer> EncodeJpeg(this IProducer> source, int quality = 90, DeliveryPolicy> deliveryPolicy = null) - { - return Encode(source, () => new JpegBitmapEncoder { QualityLevel = quality }, deliveryPolicy); - } - - /// - /// Converts from an Image to a compressed PNG image. - /// - /// Source image to compress. - /// An optional delivery policy. - /// Returns a producer that generates the PNG images. - public static IProducer> EncodePng(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) - { - return Encode(source, () => new PngBitmapEncoder(), deliveryPolicy); - } - - /// - /// Decodes an image that was previously encoded. - /// - /// Source image to compress. - /// An optional delivery policy. - /// Returns a producer that generates the decoded images. - public static IProducer> Decode(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) - { - return source.PipeTo(new ImageDecoder(source.Out.Pipeline), deliveryPolicy); - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageCompressor.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageCompressor.cs new file mode 100644 index 00000000..0cc44bd6 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageCompressor.cs @@ -0,0 +1,68 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using Microsoft.Psi.Common; + using Microsoft.Psi.Serialization; + + /// + /// Implements a compressor used by the serialization layer for compressing streams + /// of depth images in a generic fashion. This object should not be called directly, + /// but instead is used by the class. + /// + public class DepthImageCompressor : IDepthImageCompressor + { + private readonly IDepthImageToStreamEncoder encoder = null; + private readonly IDepthImageFromStreamDecoder decoder = null; + + /// + /// Initializes a new instance of the class. + /// + /// The depth image compression method to be used. + public DepthImageCompressor(DepthCompressionMethod depthCompressionMethod) + { + this.DepthCompressionMethod = depthCompressionMethod; + switch (this.DepthCompressionMethod) + { + case DepthCompressionMethod.Png: + this.encoder = new DepthImageToPngStreamEncoder(); + break; + case DepthCompressionMethod.None: + break; + } + + this.decoder = new DepthImageFromStreamDecoder(); + } + + /// + public DepthCompressionMethod DepthCompressionMethod { get; set; } = DepthCompressionMethod.Png; + + /// + public void Serialize(BufferWriter writer, DepthImage depthImage, SerializationContext context) + { + if (this.encoder != null) + { + using var sharedEncodedDepthImage = EncodedDepthImagePool.GetOrCreate( + depthImage.Width, depthImage.Height); + sharedEncodedDepthImage.Resource.EncodeFrom(depthImage, this.encoder); + Serializer.Serialize(writer, sharedEncodedDepthImage, context); + } + else + { + Serializer.Serialize(writer, depthImage, context); + } + } + + /// + public void Deserialize(BufferReader reader, ref DepthImage depthImage, SerializationContext context) + { + Shared sharedEncodedDepthImage = null; + Serializer.Deserialize(reader, ref sharedEncodedDepthImage, context); + using var sharedDepthImage = DepthImagePool.GetOrCreate(sharedEncodedDepthImage.Resource.Width, sharedEncodedDepthImage.Resource.Height); + sharedDepthImage.Resource.DecodeFrom(sharedEncodedDepthImage.Resource, this.decoder); + depthImage = sharedDepthImage.Resource.DeepClone(); + sharedEncodedDepthImage.Dispose(); + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageFromStreamDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageFromStreamDecoder.cs new file mode 100644 index 00000000..f5400404 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageFromStreamDecoder.cs @@ -0,0 +1,23 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Windows; + using System.Windows.Media.Imaging; + + /// + /// Implements a depth image decoder. + /// + public class DepthImageFromStreamDecoder : IDepthImageFromStreamDecoder + { + /// + public void DecodeFromStream(Stream stream, DepthImage depthImage) + { + var decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); + BitmapSource bitmapSource = decoder.Frames[0]; + bitmapSource.CopyPixels(Int32Rect.Empty, depthImage.ImageData, depthImage.Stride * depthImage.Height, depthImage.Stride); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageToPngStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageToPngStreamEncoder.cs new file mode 100644 index 00000000..cc45b495 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/DepthImageToPngStreamEncoder.cs @@ -0,0 +1,32 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Windows.Media.Imaging; + + /// + /// Implements a depth image encoder for PNG format. + /// + public class DepthImageToPngStreamEncoder : IDepthImageToStreamEncoder + { + /// + public void EncodeToStream(DepthImage depthImage, Stream stream) + { + var encoder = new PngBitmapEncoder(); + var bitmapSource = BitmapSource.Create( + depthImage.Width, + depthImage.Height, + 96, + 96, + depthImage.PixelFormat.ToWindowsMediaPixelFormat(), + null, + depthImage.ImageData, + depthImage.Stride * depthImage.Height, + depthImage.Stride); + encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); + encoder.Save(stream); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageCompressor.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageCompressor.cs index ca0044fd..e9907282 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageCompressor.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageCompressor.cs @@ -3,86 +3,70 @@ namespace Microsoft.Psi.Imaging { - using System.IO; - using System.Windows; - using System.Windows.Media.Imaging; using Microsoft.Psi.Common; using Microsoft.Psi.Serialization; /// - /// ImageCompressor defines an object used by the serialization layer - /// for compressing streams of images in a generic fashion. This object - /// should not be called directly but instead if used by Microsoft.Psi.Imaging. + /// Implements a compressor used by the serialization layer for compressing streams + /// of images in a generic fashion. This object should not be called directly, but + /// instead is used by the class. /// public class ImageCompressor : IImageCompressor { - /// - /// Initializes a new instance of the class. - /// - public ImageCompressor() - { - } + private readonly IImageToStreamEncoder encoder = null; + private readonly IImageFromStreamDecoder decoder = null; /// /// Initializes a new instance of the class. /// - /// Compression method to be used by compressor. + /// The image compression method to be used. public ImageCompressor(CompressionMethod compressionMethod) { this.CompressionMethod = compressionMethod; - } - - /// - /// Gets or sets the compression method being used by the compressor. - /// - public CompressionMethod CompressionMethod { get; set; } = CompressionMethod.PNG; - - /// - public void Serialize(BufferWriter writer, Image instance, SerializationContext context) - { - // Note: encoder instances are created here because they (in the case of media foundation) may have thread affinity. - BitmapEncoder encoder = null; switch (this.CompressionMethod) { - case CompressionMethod.JPEG: - encoder = new JpegBitmapEncoder { QualityLevel = 90 }; + case CompressionMethod.Jpeg: + this.encoder = new ImageToJpegStreamEncoder { QualityLevel = 90 }; break; - case CompressionMethod.PNG: - encoder = new PngBitmapEncoder(); + case CompressionMethod.Png: + this.encoder = new ImageToPngStreamEncoder(); break; case CompressionMethod.None: break; } - if (encoder != null) + this.decoder = new ImageFromStreamDecoder(); + } + + /// + public CompressionMethod CompressionMethod { get; set; } = CompressionMethod.Png; + + /// + public void Serialize(BufferWriter writer, Image image, SerializationContext context) + { + if (this.encoder != null) { - using (var sharedEncodedImage = EncodedImagePool.GetOrCreate()) - { - ImageEncoder.EncodeFrom(sharedEncodedImage.Resource, instance, encoder); - Serializer.Serialize(writer, sharedEncodedImage, context); - } + using var sharedEncodedImage = EncodedImagePool.GetOrCreate( + image.Width, image.Height, image.PixelFormat); + sharedEncodedImage.Resource.EncodeFrom(image, this.encoder); + Serializer.Serialize(writer, sharedEncodedImage, context); } else { - Serializer.Serialize(writer, instance, context); + Serializer.Serialize(writer, image, context); } } /// - public void Deserialize(BufferReader reader, ref Image target, SerializationContext context) + public void Deserialize(BufferReader reader, ref Image image, SerializationContext context) { - Shared encodedImage = null; - Serializer.Deserialize(reader, ref encodedImage, context); - using (var image = ImagePool.GetOrCreate(encodedImage.Resource.Width, encodedImage.Resource.Height, Imaging.PixelFormat.BGR_24bpp)) - { - ImageDecoder.DecodeTo(encodedImage.Resource, image.Resource); - target = image.Resource.DeepClone(); - } - - if (encodedImage != null) - { - encodedImage.Dispose(); - } + Shared sharedEncodedImage = null; + Serializer.Deserialize(reader, ref sharedEncodedImage, context); + using var sharedImage = ImagePool.GetOrCreate( + sharedEncodedImage.Resource.Width, sharedEncodedImage.Resource.Height, sharedEncodedImage.Resource.PixelFormat); + sharedImage.Resource.DecodeFrom(sharedEncodedImage.Resource, this.decoder); + image = sharedImage.Resource.DeepClone(); + sharedEncodedImage.Dispose(); } } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageDecoder.cs deleted file mode 100644 index 398e5adc..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageDecoder.cs +++ /dev/null @@ -1,98 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System; - using System.Windows; - using System.Windows.Media.Imaging; - using Microsoft.Psi; - using Microsoft.Psi.Components; - - /// - /// Component that decodes an image using a specified decoder (e.g. JPEG, PNG). - /// - public class ImageDecoder : ConsumerProducer, Shared> - { - private PixelFormat imagePixelFormat = PixelFormat.Undefined; - - /// - /// Initializes a new instance of the class. - /// - /// Pipeline this component is a part of. - public ImageDecoder(Pipeline pipeline) - : base(pipeline) - { - } - - /// - /// Decodes an encoded image into the given image instance. - /// - /// Encoded image to decode. - /// Image into which to decode. - public static void DecodeTo(EncodedImage encodedImage, Image image) - { - var decoder = BitmapDecoder.Create(encodedImage.GetStream(), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); - BitmapSource bitmapSource = decoder.Frames[0]; - bitmapSource.CopyPixels(Int32Rect.Empty, image.ImageData, image.Stride * image.Height, image.Stride); - } - - /// - /// Returns the pixel format of the image. - /// - /// Encoded image from which to get pixel format. - /// Returns the image's pixel format. - public static PixelFormat GetPixelFormat(EncodedImage encodedImage) - { - var decoder = BitmapDecoder.Create(encodedImage.GetStream(), BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); - BitmapSource bitmapSource = decoder.Frames[0]; - if (bitmapSource.Format == System.Windows.Media.PixelFormats.Bgr24) - { - return PixelFormat.BGR_24bpp; - } - else if (bitmapSource.Format == System.Windows.Media.PixelFormats.Gray16) - { - return PixelFormat.Gray_16bpp; - } - else if (bitmapSource.Format == System.Windows.Media.PixelFormats.Gray8) - { - return PixelFormat.Gray_8bpp; - } - else if (bitmapSource.Format == System.Windows.Media.PixelFormats.Bgr32) - { - return PixelFormat.BGRX_32bpp; - } - else if (bitmapSource.Format == System.Windows.Media.PixelFormats.Bgra32) - { - return PixelFormat.BGRA_32bpp; - } - else if (bitmapSource.Format == System.Windows.Media.PixelFormats.Rgba64) - { - return PixelFormat.RGBA_64bpp; - } - else - { - throw new NotImplementedException("Format not supported."); - } - } - - /// - /// Pipeline callback method for decoding a sample. - /// - /// Encoded image to decode. - /// Pipeline information about the sample. - protected override void Receive(Shared encodedImage, Envelope e) - { - if (this.imagePixelFormat == PixelFormat.Undefined) - { - this.imagePixelFormat = GetPixelFormat(encodedImage.Resource); - } - - using (var image = ImagePool.GetOrCreate(encodedImage.Resource.Width, encodedImage.Resource.Height, this.imagePixelFormat)) - { - DecodeTo(encodedImage.Resource, image.Resource); - this.Out.Post(image, e.OriginatingTime); - } - } - } -} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageEncoder.cs deleted file mode 100644 index 1e6f27ad..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageEncoder.cs +++ /dev/null @@ -1,81 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System; - using System.IO; - using System.Windows.Media.Imaging; - using Microsoft.Psi; - using Microsoft.Psi.Components; - - /// - /// Component that encodes an image using a specified encoder (e.g. JPEG, PNG). - /// - public class ImageEncoder : ConsumerProducer, Shared> - { - private readonly Func encoderFn; - - /// - /// Initializes a new instance of the class. - /// - /// Pipeline this component is a part of. - /// Callback method for encoding a single image sample. - public ImageEncoder(Pipeline pipeline, Func encoderFn) - : base(pipeline) - { - this.encoderFn = encoderFn; - } - - /// - /// Encodes an image in-place into the given encoded image instance using the specified encoder. - /// - /// Encoded image into which to encode in-place. - /// Image to be encoded. - /// Encoder to use. - public static void EncodeFrom(EncodedImage encodedImage, Image image, BitmapEncoder encoder) - { - System.Windows.Media.PixelFormat format; - if (image.PixelFormat == PixelFormat.BGR_24bpp) - { - format = System.Windows.Media.PixelFormats.Bgr24; - } - else if (image.PixelFormat == PixelFormat.Gray_16bpp) - { - format = System.Windows.Media.PixelFormats.Gray16; - } - else if (image.PixelFormat == PixelFormat.Gray_8bpp) - { - format = System.Windows.Media.PixelFormats.Gray8; - } - else - { - format = System.Windows.Media.PixelFormats.Bgr32; - } - - encodedImage.EncodeFrom(image, (_, stream) => - { - BitmapSource bitmapSource = BitmapSource.Create(image.Width, image.Height, 96, 96, format, null, image.ImageData, image.Stride * image.Height, image.Stride); - encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); - encoder.Save(stream); - }); - } - - /// - /// Pipeline callback function for encoding an image sample. - /// - /// Image to be encoded. - /// Pipeline information about the sample. - protected override void Receive(Shared sharedImage, Envelope e) - { - // the encoder has thread affinity, so we need to re-create it (we can't dispatch the call since we sdon't know if the thread that created us is pumping messages) - var encoder = this.encoderFn(); - - using (var sharedEncodedImage = EncodedImagePool.GetOrCreate()) - { - EncodeFrom(sharedEncodedImage.Resource, sharedImage.Resource, encoder); - this.Out.Post(sharedEncodedImage, e.OriginatingTime); - } - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageFromStreamDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageFromStreamDecoder.cs new file mode 100644 index 00000000..38c5549c --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageFromStreamDecoder.cs @@ -0,0 +1,41 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Windows; + using System.Windows.Media.Imaging; + + /// + /// Implements an image decoder. + /// + public class ImageFromStreamDecoder : IImageFromStreamDecoder + { + /// + public void DecodeFromStream(Stream stream, Image image) + { + var decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); + BitmapSource bitmapSource = decoder.Frames[0]; + var fmt = bitmapSource.Format.ToPixelFormat(); + if (fmt != image.PixelFormat) + { + using var img = Microsoft.Psi.Imaging.ImagePool.GetOrCreate(image.Width, image.Height, fmt); + bitmapSource.CopyPixels(Int32Rect.Empty, img.Resource.ImageData, img.Resource.Stride * img.Resource.Height, img.Resource.Stride); + img.Resource.CopyTo(image); + } + else + { + bitmapSource.CopyPixels(Int32Rect.Empty, image.ImageData, image.Stride * image.Height, image.Stride); + } + } + + /// + public PixelFormat GetPixelFormat(Stream stream) + { + var decoder = BitmapDecoder.Create(stream, BitmapCreateOptions.PreservePixelFormat, BitmapCacheOption.Default); + BitmapSource bitmapSource = decoder.Frames[0]; + return bitmapSource.Format.ToPixelFormat(); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToJpegStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToJpegStreamEncoder.cs new file mode 100644 index 00000000..b918736a --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToJpegStreamEncoder.cs @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Windows.Media.Imaging; + + /// + /// Implements an image encoder for JPEG format. + /// + public class ImageToJpegStreamEncoder : IImageToStreamEncoder + { + /// + /// Gets or sets JPEG image quality (0-100). + /// + public int QualityLevel { get; set; } = 100; + + /// + public void EncodeToStream(Image image, Stream stream) + { + // The encoder is created on every call (rather than in a constructor) + // b/c the encoder has thread affinity + var encoder = new JpegBitmapEncoder { QualityLevel = this.QualityLevel }; + var bitmapSource = BitmapSource.Create( + image.Width, + image.Height, + 96, + 96, + image.PixelFormat.ToWindowsMediaPixelFormat(), + null, + image.ImageData, + image.Stride * image.Height, + image.Stride); + encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); + encoder.Save(stream); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToPngStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToPngStreamEncoder.cs new file mode 100644 index 00000000..353138f7 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImageToPngStreamEncoder.cs @@ -0,0 +1,34 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + using System.Windows.Media.Imaging; + + /// + /// Implements an image encoder for PNG format. + /// + public class ImageToPngStreamEncoder : IImageToStreamEncoder + { + /// + public void EncodeToStream(Image image, Stream stream) + { + // The encoder is created on every call (rather than in a constructor) + // b/c the encoder has thread affinity + var encoder = new PngBitmapEncoder(); + var bitmapSource = BitmapSource.Create( + image.Width, + image.Height, + 96, + 96, + image.PixelFormat.ToWindowsMediaPixelFormat(), + null, + image.ImageData, + image.Stride * image.Height, + image.Stride); + encoder.Frames.Add(BitmapFrame.Create(bitmapSource)); + encoder.Save(stream); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImagingOperators.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImagingOperators.cs new file mode 100644 index 00000000..bc9db900 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/ImagingOperators.cs @@ -0,0 +1,67 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + /// + /// Implements stream operator methods for Imaging. + /// + public static partial class ImagingOperators + { + /// + /// Encodes an image to a JPEG format. + /// + /// A producer of images to encode. + /// JPEG quality to use. + /// An optional delivery policy. + /// A producer that generates the JPEG images. + public static IProducer> EncodeJpeg(this IProducer> source, int quality = 90, DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(new ImageToJpegStreamEncoder { QualityLevel = quality }, deliveryPolicy); + } + + /// + /// Encodes an image to a PNG format. + /// + /// A producer of images to encoder. + /// An optional delivery policy. + /// A producer that generates the PNG images. + public static IProducer> EncodePng(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(new ImageToPngStreamEncoder(), deliveryPolicy); + } + + /// + /// Decodes an encoded image. + /// + /// A producer of encoded images to decode. + /// An optional delivery policy. + /// A producer that generates the decoded images. + public static IProducer> Decode(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Decode(new ImageFromStreamDecoder(), deliveryPolicy); + } + + /// + /// Encodes a depth image to a PNG format. + /// + /// A producer of depth images to encode. + /// An optional delivery policy. + /// A producer that generates the PNG-encoded depth images. + public static IProducer> EncodePng(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(new DepthImageToPngStreamEncoder(), deliveryPolicy); + } + + /// + /// Decodes an encoded depth image. + /// + /// A producer of encoded depth images to decode. + /// An optional delivery policy. + /// A producer that generates the decoded depth images. + public static IProducer> Decode(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) + { + return source.Decode(new DepthImageFromStreamDecoder(), deliveryPolicy); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/Microsoft.Psi.Imaging.Windows.csproj b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/Microsoft.Psi.Imaging.Windows.csproj index 730b2bfd..761a1572 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/Microsoft.Psi.Imaging.Windows.csproj +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/Microsoft.Psi.Imaging.Windows.csproj @@ -24,6 +24,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/PixelFormatHelpers.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/PixelFormatHelpers.cs new file mode 100644 index 00000000..2b70870a --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/PixelFormatHelpers.cs @@ -0,0 +1,80 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using MediaPixelFormat = System.Windows.Media.PixelFormat; + + /// + /// Implements helper functions for manipulating instances. + /// + public static class PixelFormatHelpers + { + /// + /// Converts from \psi imaging pixel format to Windows.Media pixel format. + /// + /// The \psi imaging pixel format. + /// The corresponding Windows.Media pixel format. + public static MediaPixelFormat ToWindowsMediaPixelFormat(this PixelFormat pixelFormat) + { + if (pixelFormat == PixelFormat.Undefined) + { + throw new InvalidOperationException("Cannot convert the Undefined pixel format to a Windows.Media format."); + } + else if (pixelFormat == PixelFormat.BGR_24bpp) + { + return System.Windows.Media.PixelFormats.Bgr24; + } + else if (pixelFormat == PixelFormat.Gray_16bpp) + { + return System.Windows.Media.PixelFormats.Gray16; + } + else if (pixelFormat == PixelFormat.Gray_8bpp) + { + return System.Windows.Media.PixelFormats.Gray8; + } + else + { + return System.Windows.Media.PixelFormats.Bgr32; + } + } + + /// + /// Converts Windows.Media pixel format to \psi imaging pixel format. + /// + /// The Windows.Media pixel format. + /// The corresponding \psi imaging pixel format. + public static PixelFormat ToPixelFormat(this MediaPixelFormat mediaPixelFormat) + { + if (mediaPixelFormat == System.Windows.Media.PixelFormats.Bgr24) + { + return PixelFormat.BGR_24bpp; + } + else if (mediaPixelFormat == System.Windows.Media.PixelFormats.Gray16) + { + return PixelFormat.Gray_16bpp; + } + else if (mediaPixelFormat == System.Windows.Media.PixelFormats.Gray8) + { + return PixelFormat.Gray_8bpp; + } + else if (mediaPixelFormat == System.Windows.Media.PixelFormats.Bgr32) + { + return PixelFormat.BGRX_32bpp; + } + else if (mediaPixelFormat == System.Windows.Media.PixelFormats.Bgra32) + { + return PixelFormat.BGRA_32bpp; + } + else if (mediaPixelFormat == System.Windows.Media.PixelFormats.Rgba64) + { + return PixelFormat.RGBA_64bpp; + } + else + { + throw new NotSupportedException($"The {mediaPixelFormat} pixel format is not supported for Microsoft.Psi.Imaging"); + } + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/PsiImaging.cs b/Sources/Imaging/Microsoft.Psi.Imaging.Windows/PsiImaging.cs deleted file mode 100644 index 059bb400..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging.Windows/PsiImaging.cs +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System; - using System.Windows.Media.Imaging; - - /// - /// Implements stream operator methods for Imaging. - /// - public static partial class ImagingOperators - { - /// - /// Converts from an Image to a compressed (encoded) image. - /// - /// Source image to encode. - /// Method to perform encoding. - /// An optional delivery policy. - /// Returns a producer that generates the encoded images. - public static IProducer> Encode(this IProducer> source, Func encoderFn, DeliveryPolicy> deliveryPolicy = null) - { - return source.PipeTo(new ImageEncoder(source.Out.Pipeline, encoderFn), deliveryPolicy); - } - - /// - /// Converts from an Image to a compressed JPEG image. - /// - /// Source image to compress. - /// JPEG quality to use. - /// An optional delivery policy. - /// Returns a producer that generates the JPEG images. - public static IProducer> EncodeJpeg(this IProducer> source, int quality = 90, DeliveryPolicy> deliveryPolicy = null) - { - return Encode(source, () => new JpegBitmapEncoder { QualityLevel = quality }, deliveryPolicy); - } - - /// - /// Converts from an Image to a compressed PNG image. - /// - /// Source image to compress. - /// An optional delivery policy. - /// Returns a producer that generates the PNG images. - public static IProducer> EncodePng(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) - { - return Encode(source, () => new PngBitmapEncoder(), deliveryPolicy); - } - - /// - /// Decodes an image that was previously encoded. - /// - /// Source image to compress. - /// An optional delivery policy. - /// Returns a producer that generates the decoded images. - public static IProducer> Decode(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) - { - return source.PipeTo(new ImageDecoder(source.Out.Pipeline), deliveryPolicy); - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/DepthImage.cs b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImage.cs new file mode 100644 index 00000000..85217118 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImage.cs @@ -0,0 +1,330 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using System.Diagnostics; + using System.Drawing; + using System.Drawing.Imaging; + using Microsoft.Psi.Common; + using Microsoft.Psi.Serialization; + + /// + /// Represents a depth image, stored in unmanaged memory. + /// + /// Using this class it is possible as to allocate a new depth image in unmanaged memory, + /// as to just wrap provided pointer to unmanaged memory, where an image is stored. + [Serializer(typeof(DepthImage.CustomSerializer))] + public class DepthImage : ImageBase + { + /// + /// Initializes a new instance of the class. + /// + /// The unmanaged array containing the image. + /// Depth image width in pixels. + /// Depth image height in pixels. + /// Depth image stride (line size in bytes). + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public DepthImage(UnmanagedBuffer unmanagedBuffer, int width, int height, int stride) + : base(unmanagedBuffer, width, height, stride, PixelFormat.Gray_16bpp) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Pointer to image data in unmanaged memory. + /// Depth image width in pixels. + /// Depth image height in pixels. + /// Depth image stride (line size in bytes). + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public DepthImage(IntPtr imageData, int width, int height, int stride) + : base(imageData, width, height, stride, PixelFormat.Gray_16bpp) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Depth image width in pixels. + /// Depth image height in pixels. + public DepthImage(int width, int height) + : base(width, height, PixelFormat.Gray_16bpp) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Depth image width in pixels. + /// Depth image height in pixels. + /// Depth image stride (line size in bytes). + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public DepthImage(int width, int height, int stride) + : base(width, height, stride, PixelFormat.Gray_16bpp) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Locked bitmap data. + /// Indicates whether a copy is made (default is false). + /// + /// When the parameter is false (default), the depth image simply wraps + /// the bitmap data. As such, the bitmap data must stay locked for the duration of using the object. + /// + /// If the parameter is set to true, a copy of the bitmap + /// data is made, and the bitmap data can be released right after the has been constructed. + /// + /// + public DepthImage(BitmapData bitmapData, bool makeCopy = false) + : base(bitmapData, makeCopy) + { + CheckPixelFormat(bitmapData.PixelFormat); + } + + /// + /// Create a new from a specified bitmap. + /// + /// A bitmap to create the depth image from. + /// A new depth image, which contains a copy of the specified bitmap. + public static DepthImage CreateFrom(Bitmap bitmap) + { + CheckPixelFormat(bitmap.PixelFormat); + + DepthImage depthImage = null; + BitmapData sourceData = bitmap.LockBits( + new Rectangle(0, 0, bitmap.Width, bitmap.Height), + ImageLockMode.ReadOnly, + bitmap.PixelFormat); + + try + { + depthImage = new DepthImage(sourceData, true); + } + finally + { + bitmap.UnlockBits(sourceData); + } + + return depthImage; + } + + /// + /// Copies the depth image contents from a specified source locked bitmap data. + /// + /// Source locked bitmap data. + /// The method copies data from the specified bitmap into the depth image. + /// The depth image must be allocated and must have the same size as the specified + /// bitmap data. + public void CopyFrom(BitmapData bitmapData) + { + CheckPixelFormat(bitmapData.PixelFormat); + this.UnmanagedBuffer.CopyFrom(bitmapData.Scan0, this.UnmanagedBuffer.Size); + } + + /// + /// Copies the depth image contents from a specified bitmap. + /// + /// A bitmap to copy from. + /// The method copies data from the specified bitmap into the image. + /// The image must be allocated and must have the same size. + public void CopyFrom(Bitmap bitmap) + { + BitmapData bitmapData = bitmap.LockBits( + new Rectangle(0, 0, this.Width, this.Height), + ImageLockMode.ReadWrite, + PixelFormatHelper.ToSystemPixelFormat(this.PixelFormat)); + try + { + this.UnmanagedBuffer.CopyFrom(bitmapData.Scan0, this.UnmanagedBuffer.Size); + } + finally + { + bitmap.UnlockBits(bitmapData); + } + } + + /// + /// Copies the depth image from a specified source depth image of the same size. + /// + /// Source depth image to copy the depth image from. + /// The method copies the current depth image from the specified source depth image. + /// The size of the images must be the same. + public void CopyFrom(DepthImage source) + { + source.CopyTo(this); + } + + /// + /// Copies the depth image from a specified source image of the same size and format. + /// + /// Source image to copy the depth image from. + /// The method copies the current depth image from the specified source image. + /// The size of the images must be the same, and the source image must have format. + public void CopyFrom(Image source) + { + source.CopyTo(this); + } + + /// + /// Decodes a specified encoded depth image with a specified decoder into the current depth image. + /// + /// The encoded depth image to decode. + /// The depth image decoder to use. + /// The depth image width, height and pixel format must match. The method should not be called concurrently. + public void DecodeFrom(EncodedDepthImage encodedDepthImage, IDepthImageFromStreamDecoder depthImageDecoder) + { + if (encodedDepthImage.Width != this.Width || encodedDepthImage.Height != this.Height || encodedDepthImage.PixelFormat != this.PixelFormat) + { + throw new InvalidOperationException("Cannot decode from an encoded depth image that has a different width, height, or pixel format."); + } + + depthImageDecoder.DecodeFromStream(encodedDepthImage.ToStream(), this); + } + + /// + /// Encodes the depth image using a specified encoder. + /// + /// The depth image encoder to use. + /// A new, corresponding encoded depth image. + public EncodedDepthImage Encode(IDepthImageToStreamEncoder depthImageEncoder) + { + var encodedDepthImage = new EncodedDepthImage(this.Width, this.Height); + encodedDepthImage.EncodeFrom(this, depthImageEncoder); + return encodedDepthImage; + } + + /// + /// Copies the depth image into a target depth image of the same size. + /// + /// Target depth image to copy this depth image to. + /// The method copies the current depth image into the specified depth image. + /// The size of the images must be the same. + public void CopyTo(DepthImage target) + { + this.CopyTo(target.ImageData, target.Width, target.Height, target.Stride, target.PixelFormat); + } + + /// + /// Copies the depth image into a target image of the same size. + /// + /// Target image to copy this depth image to. + /// The method copies the current depth image into the specified image. + /// The size of the images must be the same. The method implements a translation of pixel formats. + public void CopyTo(Image target) + { + this.CopyTo(target.ImageData, target.Width, target.Height, target.Stride, target.PixelFormat); + } + + /// + /// Sets a pixel in the depth image. + /// + /// Pixel's X coordinate. + /// Pixel's Y coordinate. + /// Gray value to set pixel to. + public void SetPixel(int x, int y, int gray) + { + if (x < 0 || y < 0 || x >= this.Width || y >= this.Height) + { + return; + } + + unsafe + { + byte* src = (byte*)this.ImageData.ToPointer(); + int pixelOffset = x * this.BitsPerPixel / 8 + y * this.Stride; + switch (this.PixelFormat) + { + case PixelFormat.Gray_16bpp: + src[pixelOffset + 0] = (byte)((gray >> 8) & 0xff); + src[pixelOffset + 1] = (byte)(gray & 0xff); + break; + case PixelFormat.Gray_8bpp: + case PixelFormat.BGRA_32bpp: + case PixelFormat.BGR_24bpp: + case PixelFormat.BGRX_32bpp: + case PixelFormat.RGBA_64bpp: + throw new InvalidOperationException(ExceptionDescriptionUnexpectedPixelFormat); + case PixelFormat.Undefined: + default: + throw new ArgumentException(ExceptionDescriptionUnexpectedPixelFormat); + } + } + } + + /// + public override ImageBase CreateEmptyOfSameSize() + { + return new DepthImage(this.Width, this.Height); + } + + private static void CheckPixelFormat(System.Drawing.Imaging.PixelFormat pixelFormat) + { + if (pixelFormat != System.Drawing.Imaging.PixelFormat.Format16bppGrayScale) + { + throw new InvalidOperationException( + $"Depth images can only be constructed from bitmaps with {nameof(System.Drawing.Imaging.PixelFormat.Format16bppGrayScale)} format."); + } + } + + /// + /// Custom serializer used for reading/writing depth images. + /// + public class CustomSerializer : ImageBase.CustomSerializer + { + private static IDepthImageCompressor depthImageCompressor = null; + + /// + /// Configure the type of compression to use when serializing depth images. Default is no compression. + /// + /// Compressor to be used. + public static void ConfigureCompression(IDepthImageCompressor depthImageCompressor) + { + CustomSerializer.depthImageCompressor = depthImageCompressor; + } + + /// + public override void Serialize(BufferWriter writer, DepthImage instance, SerializationContext context) + { + DepthCompressionMethod depthCompressionMethod = (depthImageCompressor == null) ? DepthCompressionMethod.None : depthImageCompressor.DepthCompressionMethod; + Serializer.Serialize(writer, depthCompressionMethod, context); + if (depthCompressionMethod == DepthCompressionMethod.None) + { + base.Serialize(writer, instance, context); + } + else + { + depthImageCompressor.Serialize(writer, instance, context); + } + } + + /// + public override void Deserialize(BufferReader reader, ref DepthImage target, SerializationContext context) + { + var depthCompressionMethod = DepthCompressionMethod.None; + if (this.Schema.Version >= 4) + { + Serializer.Deserialize(reader, ref depthCompressionMethod, context); + } + + if (depthCompressionMethod == DepthCompressionMethod.None) + { + base.Deserialize(reader, ref target, context); + } + else + { + depthImageCompressor.Deserialize(reader, ref target, context); + } + } + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/DepthImageDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImageDecoder.cs new file mode 100644 index 00000000..c3fe58da --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImageDecoder.cs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using Microsoft.Psi; + using Microsoft.Psi.Components; + + /// + /// Component that decodes a depth image using a specified . + /// + public class DepthImageDecoder : ConsumerProducer, Shared> + { + private readonly IDepthImageFromStreamDecoder decoder; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline to add this component to. + /// The depth image decoder to use. + public DepthImageDecoder(Pipeline pipeline, IDepthImageFromStreamDecoder decoder) + : base(pipeline) + { + this.decoder = decoder; + } + + /// + protected override void Receive(Shared sharedEncodedDepthImage, Envelope envelope) + { + using var sharedDepthImage = DepthImagePool.GetOrCreate(sharedEncodedDepthImage.Resource.Width, sharedEncodedDepthImage.Resource.Height); + sharedDepthImage.Resource.DecodeFrom(sharedEncodedDepthImage.Resource, this.decoder); + this.Out.Post(sharedDepthImage, envelope.OriginatingTime); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/DepthImageEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImageEncoder.cs new file mode 100644 index 00000000..48f6229c --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImageEncoder.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using Microsoft.Psi; + using Microsoft.Psi.Components; + + /// + /// Component that encodes an image using a specified . + /// + public class DepthImageEncoder : ConsumerProducer, Shared> + { + private readonly IDepthImageToStreamEncoder encoder; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline to add this component to. + /// The depth image encoder to use. + public DepthImageEncoder(Pipeline pipeline, IDepthImageToStreamEncoder encoder) + : base(pipeline) + { + this.encoder = encoder; + } + + /// + protected override void Receive(Shared sharedDepthImage, Envelope e) + { + using var sharedEncodedDepthImage = EncodedDepthImagePool.GetOrCreate( + sharedDepthImage.Resource.Width, sharedDepthImage.Resource.Height); + sharedEncodedDepthImage.Resource.EncodeFrom(sharedDepthImage.Resource, this.encoder); + this.Out.Post(sharedEncodedDepthImage, e.OriginatingTime); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/DepthImagePool.cs b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImagePool.cs new file mode 100644 index 00000000..9a2f7b0d --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/DepthImagePool.cs @@ -0,0 +1,53 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.Drawing; + using System.Drawing.Imaging; + + /// + /// Provides a pool of shared depth images. + /// + public static class DepthImagePool + { + private static readonly KeyedSharedPool Instance = + new KeyedSharedPool(key => new DepthImage(key.width, key.height)); + + /// + /// Gets or creates a depth image from the pool. + /// + /// The requested image width. + /// The requested image height. + /// A shared depth image from the pool. + public static Shared GetOrCreate(int width, int height) + { + return Instance.GetOrCreate((width, height)); + } + + /// + /// Gets or creates a depth image from the pool and initializes it with a managed object. + /// + /// A bitmap from which to copy the image data. + /// A shared depth image from the pool containing a copy of the image data from . + public static Shared GetOrCreateFrom(Bitmap bitmap) + { + BitmapData sourceData = bitmap.LockBits( + new Rectangle(0, 0, bitmap.Width, bitmap.Height), + ImageLockMode.ReadOnly, + bitmap.PixelFormat); + Shared sharedDepthImage = null; + try + { + sharedDepthImage = GetOrCreate(bitmap.Width, bitmap.Height); + sharedDepthImage.Resource.CopyFrom(sourceData); + } + finally + { + bitmap.UnlockBits(sourceData); + } + + return sharedDepthImage; + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImage.cs b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImage.cs new file mode 100644 index 00000000..2300a078 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImage.cs @@ -0,0 +1,126 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using System.IO; + + /// + /// Defines an encoded depth image. + /// + public class EncodedDepthImage : IDisposable + { + /// + /// The memory stream storing the encoded bytes. + /// + private MemoryStream stream; + + /// + /// Initializes a new instance of the class. + /// + /// Width of encoded depth image in pixels. + /// Height of encoded depth image in pixels. + public EncodedDepthImage(int width, int height) + { + this.Width = width; + this.Height = height; + this.PixelFormat = PixelFormat.Gray_16bpp; + this.stream = new MemoryStream(); + } + + /// + /// Initializes a new instance of the class. + /// + /// Width of image in pixels. + /// Height of image in pixels. + /// Byte array used to initialize the image data. + public EncodedDepthImage(int width, int height, byte[] contents) + { + this.Width = width; + this.Height = height; + this.PixelFormat = PixelFormat.Gray_16bpp; + this.stream = new MemoryStream(); + this.stream.Write(contents, 0, contents.Length); + this.stream.Position = 0; + } + + /// + /// Gets the width of the depth image in pixels. + /// + public int Width { get; } + + /// + /// Gets the height of the depth image in pixels. + /// + public int Height { get; } + + /// + /// Gets the pixel format for the depth image. + /// + public PixelFormat PixelFormat { get; } + + /// + /// Releases the depth image. + /// + public void Dispose() + { + this.stream.Dispose(); + this.stream = null; + } + + /// + /// Returns the image data as stream. + /// + /// A new stream containing the image data. + public Stream ToStream() + { + // This method will only fail if the internal buffer is not set to be publicly + // visible, but we create the memory stream ourselves so this should not be an issue + if (!this.stream.TryGetBuffer(out ArraySegment buffer)) + { + throw new InvalidOperationException("The internal buffer is not publicly visible"); + } + + return new MemoryStream(buffer.Array, buffer.Offset, buffer.Count); + } + + /// + /// Returns the depth image data as a byte array. + /// + /// Byte array containing the image data. + public byte[] GetBuffer() + { + return this.stream.GetBuffer(); + } + + /// + /// Encodes a specified depth image with a specified encoder into the current encoded image. + /// + /// The depth image to encode. + /// The depth image encoder to use. + /// The depth image width, height and pixel format must match. The method should not be called concurrently. + public void EncodeFrom(DepthImage depthImage, IDepthImageToStreamEncoder depthImageEncoder) + { + if (depthImage.Width != this.Width || depthImage.Height != this.Height || depthImage.PixelFormat != this.PixelFormat) + { + throw new InvalidOperationException("Cannot encode from an image that has a different width, height, or pixel format."); + } + + this.stream.Position = 0; + depthImageEncoder.EncodeToStream(depthImage, this.stream); + } + + /// + /// Decodes the depth image using a specified decoder. + /// + /// The depth image decoder to use. + /// A new, corresponding decoded depth image. + public DepthImage Decode(IDepthImageFromStreamDecoder depthImageDecoder) + { + var depthImage = new DepthImage(this.Width, this.Height); + depthImage.DecodeFrom(this, depthImageDecoder); + return depthImage; + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImagePool.cs b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImagePool.cs new file mode 100644 index 00000000..be70c6a9 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedDepthImagePool.cs @@ -0,0 +1,25 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + /// + /// Provides a pool of shared encoded depth images. + /// + public static class EncodedDepthImagePool + { + private static readonly KeyedSharedPool Instance = + new KeyedSharedPool(key => new EncodedDepthImage(key.width, key.height)); + + /// + /// Gets or creates an encoded depth image from the pool. + /// + /// A shared encoded depth image from the pool. + /// The requested encoded depth image width. + /// The requested encoded depth image height. + public static Shared GetOrCreate(int width, int height) + { + return Instance.GetOrCreate((width, height)); + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImage.cs b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImage.cs index c3faf9ab..ec4c7f22 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImage.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImage.cs @@ -5,48 +5,54 @@ namespace Microsoft.Psi.Imaging { using System; using System.IO; - using System.Runtime.InteropServices; - using System.Runtime.InteropServices.ComTypes; + using System.Runtime.Serialization; /// /// Defines an encoded image. /// public class EncodedImage : IDisposable { + /// + /// The pixel format was added as a private optional field backed property + /// in order to maintain back-compatibility with an earlier version where + /// no pixel format was stored on the image. + /// + [OptionalField] + private readonly PixelFormat pixelFormat; + + /// + /// The memory stream storing the encoded bytes. + /// private MemoryStream stream; /// /// Initializes a new instance of the class. /// - public EncodedImage() - { - this.stream = new MemoryStream(); - } - - /// - /// Initializes a new instance of the class. - /// - /// Width of image in pixels. - /// Height of image in pixels. - /// Byte array used to initialize the image data. - public EncodedImage(int width, int height, byte[] contents) + /// Width of encoded image in pixels. + /// Height of encoded image in pixels. + /// Pixel format of the encoded image. + public EncodedImage(int width, int height, PixelFormat pixelFormat) { this.Width = width; this.Height = height; + this.pixelFormat = pixelFormat; this.stream = new MemoryStream(); - this.stream.Write(contents, 0, contents.Length); - this.stream.Position = 0; } /// /// Gets the width of the image in pixels. /// - public int Width { get; internal set; } + public int Width { get; } /// /// Gets the height of the image in pixels. /// - public int Height { get; internal set; } + public int Height { get; } + + /// + /// Gets the pixel format for the encoded image. + /// + public PixelFormat PixelFormat => this.pixelFormat; /// /// Releases the image. @@ -60,11 +66,17 @@ namespace Microsoft.Psi.Imaging /// /// Returns the image data as stream. /// - /// Stream containing the image data. - public Stream GetStream() + /// A new stream containing the image data. + public Stream ToStream() { - this.stream.Position = 0; - return this.stream; + // This method will only fail if the internal buffer is not set to be publicly + // visible, but we create the memory stream ourselves so this should not be an issue + if (!this.stream.TryGetBuffer(out ArraySegment buffer)) + { + throw new InvalidOperationException("The internal buffer is not publicly visible"); + } + + return new MemoryStream(buffer.Array, buffer.Offset, buffer.Count, false); } /// @@ -77,15 +89,32 @@ namespace Microsoft.Psi.Imaging } /// - /// Compresses an image using the specified encoder. + /// Encodes a specified image with a specified encoder into the current encoded image. /// - /// Image to compress. - /// Encoder to use to compress. - public void EncodeFrom(Image image, Action encodeFn) + /// The image to encode. + /// The image encoder to use. + /// The image width, height and pixel format must match. The method should not be called concurrently. + public void EncodeFrom(Image image, IImageToStreamEncoder imageEncoder) { - encodeFn(image, this.GetStream()); - this.Width = image.Width; - this.Height = image.Height; + if (image.Width != this.Width || image.Height != this.Height || image.PixelFormat != this.PixelFormat) + { + throw new InvalidOperationException("Cannot encode from an image that has a different width, height, or pixel format."); + } + + this.stream.Position = 0; + imageEncoder.EncodeToStream(image, this.stream); + } + + /// + /// Decodes the image using a specified decoder. + /// + /// The image decoder to use. + /// A new, corresponding decoded image. + public Image Decode(IImageFromStreamDecoder imageDecoder) + { + var image = new Image(this.Width, this.Height, this.PixelFormat); + image.DecodeFrom(this, imageDecoder); + return image; } } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImagePool.cs b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImagePool.cs index 484bf9c5..f021d8af 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImagePool.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/EncodedImagePool.cs @@ -8,15 +8,19 @@ namespace Microsoft.Psi.Imaging /// public static class EncodedImagePool { - private static readonly SharedPool Instance = new SharedPool(() => new EncodedImage(), 10); + private static readonly KeyedSharedPool Instance = + new KeyedSharedPool(key => new EncodedImage(key.width, key.height, key.pixelFormat)); /// /// Gets or creates an encoded image from the pool. /// /// A shared encoded image from the pool. - public static Shared GetOrCreate() + /// The requested encoded image width. + /// The requested encoded image height. + /// The requested encoded image pixel format. + public static Shared GetOrCreate(int width, int height, PixelFormat pixelFormat) { - return Instance.GetOrCreate(); + return Instance.GetOrCreate((width, height, pixelFormat)); } } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageCompressor.cs b/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageCompressor.cs new file mode 100644 index 00000000..b3c68b84 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageCompressor.cs @@ -0,0 +1,51 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using Microsoft.Psi.Common; + using Microsoft.Psi.Serialization; + + /// + /// Defines type of compression to use when serializing out a . + /// + public enum DepthCompressionMethod + { + /// + /// Use PNG compression. + /// + Png, + + /// + /// Use no compression. + /// + None, + } + + /// + /// Defines a interface for depth image compressors. + /// + public interface IDepthImageCompressor + { + /// + /// Gets or sets the compression method used by compressor. + /// + DepthCompressionMethod DepthCompressionMethod { get; set; } + + /// + /// Serialize compressor. + /// + /// Writer to which to serialize. + /// Depth image instance to serialize. + /// Serialization context. + void Serialize(BufferWriter writer, DepthImage depthImage, SerializationContext context); + + /// + /// Deserialize compressor. + /// + /// Reader from which to deserialize. + /// Target depth image to which to deserialize. + /// Serialization context. + void Deserialize(BufferReader reader, ref DepthImage depthImage, SerializationContext context); + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageFromStreamDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageFromStreamDecoder.cs new file mode 100644 index 00000000..ef05ba71 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageFromStreamDecoder.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + + /// + /// Defines a class that can decode a depth image. + /// + public interface IDepthImageFromStreamDecoder + { + /// + /// Decodes an encoded depth image from a stream into a given depth image. + /// + /// Stream containing the encoded depth image. + /// The depth image to decode into. + void DecodeFromStream(Stream stream, DepthImage depthImage); + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageToStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageToStreamEncoder.cs new file mode 100644 index 00000000..d4b8dd40 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/IDepthImageToStreamEncoder.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + + /// + /// Defines a class that can encode a depth image. + /// + public interface IDepthImageToStreamEncoder + { + /// + /// Encodes a depth image into a stream. + /// + /// Depth image to be encoded. + /// Stream to encode the depth image into. + void EncodeToStream(DepthImage depthImage, Stream stream); + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/IImageCompressor.cs b/Sources/Imaging/Microsoft.Psi.Imaging/IImageCompressor.cs index 8c6c597e..71247d50 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/IImageCompressor.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/IImageCompressor.cs @@ -7,30 +7,28 @@ namespace Microsoft.Psi.Imaging using Microsoft.Psi.Serialization; /// - /// Defines type of compression to use when serializing out an Image. + /// Defines type of compression to use when serializing out a . /// public enum CompressionMethod { /// - /// Use JPEG compression + /// Use JPEG compression. /// - JPEG, + Jpeg, /// - /// Use PNG compression + /// Use PNG compression. /// - PNG, + Png, /// - /// Use no compression + /// Use no compression. /// None, } /// - /// Interface implemented by the system specific assembly. - /// For instance, Microsoft.Psi.Imaging.Windows will define - /// an ImageCompressor that implements this interfaces. + /// Defines a interface for image compressors. /// public interface IImageCompressor { @@ -43,16 +41,16 @@ namespace Microsoft.Psi.Imaging /// Serialize compressor. /// /// Writer to which to serialize. - /// Image instance to serialize. + /// Image instance to serialize. /// Serialization context. - void Serialize(BufferWriter writer, Image instance, SerializationContext context); + void Serialize(BufferWriter writer, Image image, SerializationContext context); /// /// Deserialize compressor. /// /// Reader from which to deserialize. - /// Target image to which to deserialize. + /// Target image to which to deserialize. /// Serialization context. - void Deserialize(BufferReader reader, ref Image target, SerializationContext context); + void Deserialize(BufferReader reader, ref Image image, SerializationContext context); } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/IImageFromStreamDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/IImageFromStreamDecoder.cs new file mode 100644 index 00000000..fbf9cea0 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/IImageFromStreamDecoder.cs @@ -0,0 +1,27 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + + /// + /// Defines a class that can decode an image. + /// + public interface IImageFromStreamDecoder + { + /// + /// Decodes an encoded image from a stream into a specified image. + /// + /// Stream containing the encoded image. + /// The image to decode into. + void DecodeFromStream(Stream stream, Image image); + + /// + /// Gets the pixel format of an encoded image from a stream. + /// + /// Stream containing the encoded image. + /// The pixel format. + PixelFormat GetPixelFormat(Stream stream); + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/IImageToStreamEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/IImageToStreamEncoder.cs new file mode 100644 index 00000000..d6205616 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/IImageToStreamEncoder.cs @@ -0,0 +1,20 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System.IO; + + /// + /// Defines a class that can encode an image. + /// + public interface IImageToStreamEncoder + { + /// + /// Encodes an image into a stream. + /// + /// Image to be encoded. + /// Stream to encode the image into. + void EncodeToStream(Image image, Stream stream); + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/Image.cs b/Sources/Imaging/Microsoft.Psi.Imaging/Image.cs index 5f698019..4aaa2d07 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/Image.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/Image.cs @@ -7,23 +7,32 @@ namespace Microsoft.Psi.Imaging using System.Diagnostics; using System.Drawing; using System.Drawing.Imaging; - using System.Threading.Tasks; using Microsoft.Psi.Common; using Microsoft.Psi.Serialization; /// - /// The #Image class represents wrapper of an image in unmanaged memory. Using this class - /// it is possible as to allocate new image in unmanaged memory, as to just wrap provided - /// pointer to unmanaged memory, where an image is stored. + /// Represents an image, stored in unmanaged memory. /// + /// Using this class it is possible as to allocate a new image in unmanaged memory, + /// as to just wrap provided pointer to unmanaged memory, where an image is stored. [Serializer(typeof(Image.CustomSerializer))] - public class Image : IDisposable + public class Image : ImageBase { - private UnmanagedBuffer image; - private int width; - private int height; - private int stride; - private PixelFormat pixelFormat; + /// + /// Initializes a new instance of the class. + /// + /// The unmanaged array containing the image. + /// Image width in pixels. + /// Image height in pixels. + /// Image stride (line size in bytes). + /// Image pixel format. + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public Image(UnmanagedBuffer unmanagedBuffer, int width, int height, int stride, PixelFormat pixelFormat) + : base(unmanagedBuffer, width, height, stride, pixelFormat) + { + } /// /// Initializes a new instance of the class. @@ -37,32 +46,19 @@ namespace Microsoft.Psi.Imaging /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, /// this may lead to exceptions working with the unmanaged memory. public Image(IntPtr imageData, int width, int height, int stride, PixelFormat pixelFormat) + : base(imageData, width, height, stride, pixelFormat) { - this.image = UnmanagedBuffer.WrapIntPtr(imageData, height * stride); - this.width = width; - this.height = height; - this.stride = stride; - this.pixelFormat = pixelFormat; } /// /// Initializes a new instance of the class. /// - /// The unmanaged array containing the image. - /// Image width in pixels. - /// Image height in pixels. - /// Image stride (line size in bytes). - /// Image pixel format. - /// Using this constructor, make sure all specified image attributes are correct - /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, - /// this may lead to exceptions working with the unmanaged memory. - public Image(UnmanagedBuffer image, int width, int height, int stride, PixelFormat pixelFormat) + /// Width of image in pixels. + /// Height of image in pixels. + /// Pixel format. + public Image(int width, int height, PixelFormat pixelFormat) + : base(width, height, pixelFormat) { - this.image = image; - this.width = width; - this.height = height; - this.stride = stride; - this.pixelFormat = pixelFormat; } /// @@ -76,18 +72,7 @@ namespace Microsoft.Psi.Imaging /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, /// this may lead to exceptions working with the unmanaged memory. public Image(int width, int height, int stride, PixelFormat pixelFormat) - : this(UnmanagedBuffer.Allocate(height * stride), width, height, stride, pixelFormat) - { - } - - /// - /// Initializes a new instance of the class. - /// - /// Width of image in pixels. - /// Height of image in pixels. - /// Pixel format. - public Image(int width, int height, PixelFormat pixelFormat) - : this(UnmanagedBuffer.Allocate(height * width * GetBytesPerPixel(pixelFormat)), width, height, width * GetBytesPerPixel(pixelFormat), pixelFormat) + : base(width, height, stride, pixelFormat) { } @@ -95,219 +80,178 @@ namespace Microsoft.Psi.Imaging /// Initializes a new instance of the class. /// /// Locked bitmap data. - /// Unlike method, this constructor does not make - /// copy of managed image. This means that managed image must stay locked for the time of using the instance - /// of unamanged image. - public Image(BitmapData bitmapData) - { - this.image = UnmanagedBuffer.WrapIntPtr(bitmapData.Scan0, bitmapData.Height * bitmapData.Stride); - this.width = bitmapData.Width; - this.height = bitmapData.Height; - this.stride = bitmapData.Stride; - this.pixelFormat = PixelFormatHelper.FromSystemPixelFormat(bitmapData.PixelFormat); - } - - /// - /// Gets a pointer to image data in unmanaged memory. - /// - public IntPtr ImageData => this.image.Data; - - /// - /// Gets image width in pixels. - /// - public int Width => this.width; - - /// - /// Gets image height in pixels. - /// - public int Height => this.height; - - /// - /// Gets image stride (line size in bytes). - /// - public int Stride => this.stride; - - /// - /// Gets the size of the image in bytes (stride times height). - /// - public int Size => this.stride * this.height; - - /// - /// Gets the bits per pixel in the image. - /// - public int BitsPerPixel => PixelFormatHelper.GetBitsPerPixel(this.pixelFormat); - - /// - /// Gets image pixel format. - /// - public PixelFormat PixelFormat => this.pixelFormat; - - /// - /// Allocate new image in unmanaged memory. - /// - /// Image width. - /// Image height. - /// Image pixel format. - /// Return image allocated in unmanaged memory. - /// Allocate new image with specified attributes in unmanaged memory. + /// Indicates whether a copy is made (default is false). + /// + /// When the parameter is false (default), the image simply wraps + /// the bitmap data. As such, the bitmap data must stay locked for the duration of using the object. + /// + /// If the parameter is set to true, a copy of the bitmap + /// data is made, and the bitmap data can be released right after the has been constructed. + /// /// - public static Image Create(int width, int height, PixelFormat pixelFormat) + public Image(BitmapData bitmapData, bool makeCopy = false) + : base(bitmapData, makeCopy) { - int bytesPerPixel = pixelFormat.GetBitsPerPixel() / 8; - - // check image size - if ((width <= 0) || (height <= 0)) - { - throw new Exception("Invalid image size specified."); - } - - // calculate stride - int stride = width * bytesPerPixel; - - if (stride % 4 != 0) - { - stride += 4 - (stride % 4); - } - - // allocate memory for the image - return new Image(UnmanagedBuffer.Allocate(stride * height), width, height, stride, pixelFormat); } /// - /// Create unmanaged image from the specified managed image. + /// Creates a new from a specified bitmap. /// - /// Source locked image data. - /// Returns new unmanaged image, which is a copy of source managed image. - /// The method creates an exact copy of specified managed image, but allocated - /// in unmanaged memory. This means that managed image may be unlocked right after call to this - /// method. - public static Image FromManagedImage(BitmapData imageData) + /// A bitmap to create the image from. + /// A new image, which contains a copy of the specified bitmap. + public static Image FromBitmap(Bitmap bitmap) { - PixelFormat pixelFormat = PixelFormatHelper.FromSystemPixelFormat(imageData.PixelFormat); - - // allocate memory for the image - return new Image(UnmanagedBuffer.CreateCopyFrom(imageData.Scan0, imageData.Stride * imageData.Height), imageData.Width, imageData.Height, imageData.Stride, pixelFormat); - } - - /// - /// Create unmanaged image from the specified managed image. - /// - /// Source managed image. - /// Returns new unmanaged image, which is a copy of source managed image. - /// The method creates an exact copy of specified managed image, but allocated - /// in unmanaged memory. - public static Image FromManagedImage(Bitmap image) - { - Image dstImage = null; + Image image = null; // Make sure that the bitmap format specified is supported (not all Bitmap.PixelFormats are supported) - PixelFormatHelper.FromSystemPixelFormat(image.PixelFormat); + PixelFormatHelper.FromSystemPixelFormat(bitmap.PixelFormat); - BitmapData sourceData = image.LockBits( - new Rectangle(0, 0, image.Width, image.Height), + BitmapData sourceData = bitmap.LockBits( + new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, - image.PixelFormat); + bitmap.PixelFormat); try { - dstImage = FromManagedImage(sourceData); + image = new Image(sourceData, true); } finally { - image.UnlockBits(sourceData); + bitmap.UnlockBits(sourceData); } - return dstImage; + return image; } /// - /// Function to convert RGB color into grayscale. + /// Copies the image contents from a specified source locked bitmap data. /// - /// red component (Range=0..255). - /// green component (Range=0..255). - /// Blue component (Range=0..255). - /// Grayscale value (Range=0..255). - public static byte Rgb2Gray(byte r, byte g, byte b) + /// Source locked bitmap data. + /// The method copies data from the specified bitmap into the image. + /// The image must be allocated and must have the same size as the specified + /// bitmap data. + public void CopyFrom(BitmapData bitmapData) { - return (byte)(((4897 * r) + (9617 * g) + (1868 * b)) >> 14); + this.UnmanagedBuffer.CopyFrom(bitmapData.Scan0, this.UnmanagedBuffer.Size); } /// - /// Function to convert RGB color into grayscale. + /// Copies the image contents from a specified bitmap. /// - /// red component (Range=0..65535). - /// green component (Range=0..65535). - /// Blue component (Range=0..65535). - /// Grayscale value (Range=0..65535). - public static ushort Rgb2Gray(ushort r, ushort g, ushort b) + /// A bitmap to copy from. + /// The method copies data from the specified bitmap into the image. + /// The image must be allocated and must have the same size. + public void CopyFrom(Bitmap bitmap) { - return (ushort)(((4897 * r) + (9617 * g) + (1868 * b)) >> 14); - } - - /// - /// Set pallete of the 8 bpp indexed image to grayscale. - /// - /// Image to initialize. - /// The method initializes palette of - /// Format8bppIndexed - /// image with 256 gradients of gray color. - public static void SetGrayscalePalette(Bitmap image) - { - // check pixel format - if (image.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed) + BitmapData bitmapData = bitmap.LockBits( + new Rectangle(0, 0, this.Width, this.Height), + ImageLockMode.ReadWrite, + PixelFormatHelper.ToSystemPixelFormat(this.PixelFormat)); + try { - throw new Exception("Source image is not 8 bpp image."); + if (this.Stride != bitmapData.Stride) + { + unsafe + { + byte* src = (byte*)bitmapData.Scan0.ToPointer(); + byte* dst = (byte*)this.ImageData.ToPointer(); + for (int y = 0; y < this.Height; y++) + { + Buffer.MemoryCopy(src, dst, this.Stride, this.Stride); + src += bitmapData.Stride; + dst += this.Stride; + } + } + } + else + { + this.UnmanagedBuffer.CopyFrom(bitmapData.Scan0, this.UnmanagedBuffer.Size); + } } - - // get palette - ColorPalette cp = image.Palette; - - // init palette - for (int i = 0; i < 256; i++) + finally { - cp.Entries[i] = Color.FromArgb(i, i, i); + bitmap.UnlockBits(bitmapData); } - - // set palette back - image.Palette = cp; } /// - /// Dispose the object. + /// Copies the image from a specified source image of the same size. /// - /// Frees unmanaged resources used by the object. The object becomes unusable - /// after that. - /// The method needs to be called only in the case if unmanaged image was allocated - /// using method. In the case if the class instance was created using constructor, - /// this method does not free unmanaged memory. - /// - public void Dispose() - { - this.image.Dispose(); - this.image = null; - } - - /// - /// Copy unmanaged image. - /// - /// Destination image to copy this image to. - /// The method copies current unmanaged image to the specified image. - /// Size of the destination image must be exactly the same. Some differences in pixel + /// Source image to copy the image from. + /// The method copies the current image from the specified source image. + /// The size of the images must be the same. Some differences in pixel /// formats are allowed and the method implements a translation of pixel formats. - public void CopyTo(Image destImage) + public void CopyFrom(Image source) { - this.CopyTo(destImage.image.Data, destImage.Width, destImage.Height, destImage.Stride, destImage.PixelFormat); + source.CopyTo(this); } /// - /// Copies the psi image to a byte array buffer. + /// Copies the image from a specified source depth image of the same size. /// - /// The buffer to copy to. - /// The method copies current unmanaged image to the specified buffer. - /// The buffer must be allocated and must have the same size. - public void CopyTo(byte[] destinationBuffer) + /// Source depth image to copy the image from. + /// The method copies the current image from the specified source depth image. + /// The size of the images must be the same and the method implements a translation of pixel formats. + public void CopyFrom(DepthImage source) { - this.image.CopyTo(destinationBuffer); + source.CopyTo(this); + } + + /// + /// Decodes a specified encoded image with a specified decoder into the current image. + /// + /// The encoded image to decode. + /// The image decoder to use. + /// The image width, height and pixel format must match. The method should not be called concurrently. + public void DecodeFrom(EncodedImage encodedImage, IImageFromStreamDecoder imageDecoder) + { + if (encodedImage.Width != this.Width || encodedImage.Height != this.Height || + (encodedImage.PixelFormat != PixelFormat.Undefined && encodedImage.PixelFormat != this.PixelFormat)) + { + throw new InvalidOperationException("Cannot decode from an encoded image that has a different width, height, or pixel format."); + } + + imageDecoder.DecodeFromStream(encodedImage.ToStream(), this); + } + + /// + /// Encodes the image using a specified encoder. + /// + /// The image encoder to use. + /// A new, corresponding encoded image. + public EncodedImage Encode(IImageToStreamEncoder imageEncoder) + { + var encodedImage = new EncodedImage(this.Width, this.Height, this.PixelFormat); + encodedImage.EncodeFrom(this, imageEncoder); + return encodedImage; + } + + /// + /// Copies the image into a specified target image of the same size. + /// + /// Target image to copy this image to. + /// The method copies the current image into the specified target image. + /// The size of the images must be the same. Some differences in pixel + /// formats are allowed and the method implements a translation of pixel formats. + public void CopyTo(Image target) + { + this.CopyTo(target.ImageData, target.Width, target.Height, target.Stride, target.PixelFormat); + } + + /// + /// Copies the image into a target depth image of the same size. + /// + /// Target depth image to copy this image to. + /// The method copies the current image into the specified depth image. + /// The size of the images must be the same, and the image must have a pixel format. + public void CopyTo(DepthImage target) + { + if (this.PixelFormat != PixelFormat.Gray_16bpp) + { + throw new InvalidOperationException($"The image must have the {nameof(PixelFormat.Gray_16bpp)} pixel format in order to copy it to a {nameof(DepthImage)}."); + } + + this.CopyTo(target.ImageData, target.Width, target.Height, target.Stride, target.PixelFormat); } /// @@ -321,16 +265,16 @@ namespace Microsoft.Psi.Imaging /// Alpha channel's value. public void SetPixel(int x, int y, int r, int g, int b, int a) { - if (x < 0 || y < 0 || x >= (int)this.width || y >= (int)this.height) + if (x < 0 || y < 0 || x >= this.Width || y >= this.Height) { return; } unsafe { - byte* src = (byte*)this.image.Data.ToPointer(); + byte* src = (byte*)this.ImageData.ToPointer(); int pixelOffset = x * this.BitsPerPixel / 8 + y * this.Stride; - switch (this.pixelFormat) + switch (this.PixelFormat) { case PixelFormat.BGRA_32bpp: src[pixelOffset + 0] = (byte)r; @@ -351,500 +295,108 @@ namespace Microsoft.Psi.Imaging case PixelFormat.Gray_8bpp: src[pixelOffset] = (byte)r; break; + case PixelFormat.RGBA_64bpp: + src[pixelOffset + 0] = (byte)((r >> 8) & 0xff); + src[pixelOffset + 1] = (byte)(r & 0xff); + src[pixelOffset + 2] = (byte)((g >> 8) & 0xff); + src[pixelOffset + 3] = (byte)(g & 0xff); + src[pixelOffset + 4] = (byte)((b >> 8) & 0xff); + src[pixelOffset + 5] = (byte)(b & 0xff); + src[pixelOffset + 6] = (byte)((a >> 8) & 0xff); + src[pixelOffset + 7] = (byte)(a & 0xff); + break; + case PixelFormat.Undefined: default: - throw new Exception("Unsupported type"); + throw new ArgumentException(ExceptionDescriptionUnexpectedPixelFormat); } } } /// - /// Copies the psi image to an unmanaged buffer. + /// Sets a pixel in the image. /// - /// The destination buffer. - /// The destination image width. - /// The destination image height. - /// The destination image stride. - /// The destination pixel format. - public void CopyTo(IntPtr destination, int width, int height, int dstStride, PixelFormat destinationFormat) + /// Pixel's X coordinate. + /// Pixel's Y coordinate. + /// Gray value to set pixel to. + public void SetPixel(int x, int y, int gray) { - if ((this.width != width) || (this.height != height)) + if (x < 0 || y < 0 || x >= this.Width || y >= this.Height) { - throw new Exception("Destination image has different size or pixel format."); + return; } - // Check if pixel formats are the same. If so, do a straight up copy - if (this.PixelFormat == destinationFormat) - { - if (this.stride == dstStride) - { - this.image.CopyTo(destination, dstStride * height); - } - else - { - unsafe - { - int copyLength = (this.stride < dstStride) ? this.stride : dstStride; - - byte* src = (byte*)this.image.Data.ToPointer(); - byte* dst = (byte*)destination.ToPointer(); - - // copy line by line - for (int i = 0; i < this.height; i++) - { - Buffer.MemoryCopy(src, dst, copyLength, copyLength); - - dst += dstStride; - src += this.stride; - } - } - } - } - else if ((this.pixelFormat == PixelFormat.BGR_24bpp) && - (destinationFormat == PixelFormat.BGRX_32bpp)) - { - unsafe - { - byte* src = (byte*)this.image.Data.ToPointer(); - byte* dst = (byte*)destination.ToPointer(); - Parallel.For(0, this.Height, i => - { - byte* srcCopy = src + (this.stride * i); - byte* dstCopy = dst + (dstStride * i); - for (int j = 0; j < this.width; j++) - { - *dstCopy++ = *srcCopy++; - *dstCopy++ = *srcCopy++; - *dstCopy++ = *srcCopy++; - *dstCopy++ = 255; - } - }); - } - } - else if ((this.pixelFormat == PixelFormat.BGRX_32bpp) && - (destinationFormat == PixelFormat.BGR_24bpp)) - { - unsafe - { - byte* src = (byte*)this.image.Data.ToPointer(); - byte* dst = (byte*)destination.ToPointer(); - Parallel.For(0, this.Height, i => - { - byte* srcCopy = src + (this.stride * i); - byte* dstCopy = dst + (dstStride * i); - for (int j = 0; j < this.width; j++) - { - *dstCopy++ = *srcCopy++; - *dstCopy++ = *srcCopy++; - *dstCopy++ = *srcCopy++; - srcCopy++; - } - }); - } - } - else if ((this.pixelFormat == PixelFormat.BGR_24bpp) && - (destinationFormat == PixelFormat.Gray_8bpp)) - { - unsafe - { - byte* src = (byte*)this.image.Data.ToPointer(); - byte* dst = (byte*)destination.ToPointer(); - - Parallel.For(0, this.Height, i => - { - byte* srcCopy = src + (this.stride * i); - byte* dstCopy = dst + (dstStride * i); - for (int j = 0; j < this.width; j++) - { - *dstCopy++ = Rgb2Gray(*srcCopy, *(srcCopy + 1), *(srcCopy + 2)); - srcCopy += 3; - } - }); - } - } - else - { - this.CopyImageSlow(this.image.Data, this.pixelFormat, destination, dstStride, destinationFormat); - } - } - - /// - /// Copies data from a byte array buffer into the psi image. - /// - /// The buffer to copy from. - /// The method copies data from the specified buffer into the unmanaged image - /// The image must be allocated and must have the same size. - public void CopyFrom(byte[] sourceBuffer) - { - this.image.CopyFrom(sourceBuffer); - } - - /// - /// Copies data from an unmanaged buffer. - /// - /// A pointer to the unmanaged buffer to copy from. - /// The method copies data from the specified buffer into the unmanaged image - /// The image must be allocated and must have the same size. - public void CopyFrom(IntPtr sourcePtr) - { - this.image.CopyFrom(sourcePtr, this.image.Size); - } - - /// - /// Copies data from an unmanaged buffer. - /// - /// A bitmap to copy from. - /// The method copies data from the specified bitmap into the unmanaged image - /// The image must be allocated and must have the same size. - public void CopyFrom(Bitmap bitmap) - { - BitmapData bitmapData = bitmap.LockBits( - new Rectangle(0, 0, this.width, this.height), - ImageLockMode.ReadWrite, - PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat)); - try - { - this.image.CopyFrom(bitmapData.Scan0, this.image.Size); - } - finally - { - bitmap.UnlockBits(bitmapData); - } - } - - /// - /// Create managed image from the unmanaged. - /// - /// Returns managed copy of the unmanaged image. - /// The method creates a managed copy of the unmanaged image with the - /// same size and pixel format (it calls specifying - /// for the makeCopy parameter). - public Bitmap ToManagedImage() - { - return this.ToManagedImage(true); - } - - /// - /// Create managed image from the unmanaged. - /// - /// Make a copy of the unmanaged image or not. - /// Returns managed copy of the unmanaged image. - /// If the is set to , then the method - /// creates a managed copy of the unmanaged image, so the managed image stays valid even when the unmanaged - /// image gets disposed. However, setting this parameter to creates a managed image which is - /// just a wrapper around the unmanaged image. So if unmanaged image is disposed, the - /// managed image becomes no longer valid and accessing it will generate an exception. - public Bitmap ToManagedImage(bool makeCopy) - { - Bitmap dstImage = null; - - try - { - if (!makeCopy) - { - dstImage = new Bitmap(this.width, this.height, this.stride, PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat), this.image.Data); - if (this.pixelFormat == PixelFormat.Gray_8bpp) - { - Image.SetGrayscalePalette(dstImage); - } - } - else - { - // create new image of required format - dstImage = (this.pixelFormat == PixelFormat.Gray_8bpp) ? - Image.CreateGrayscaleImage(this.width, this.height) : - new Bitmap(this.width, this.height, PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat)); - - // lock destination bitmap data - BitmapData dstData = dstImage.LockBits( - new Rectangle(0, 0, this.width, this.height), - ImageLockMode.ReadWrite, - PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat)); - - int dstStride = dstData.Stride; - int lineSize = Math.Min(this.stride, dstStride); - - unsafe - { - byte* dst = (byte*)dstData.Scan0.ToPointer(); - byte* src = (byte*)this.image.Data.ToPointer(); - - if (this.stride != dstStride) - { - // copy image - for (int y = 0; y < this.height; y++) - { - Buffer.MemoryCopy(src, dst, lineSize, lineSize); - dst += dstStride; - src += this.stride; - } - } - else - { - var size = this.stride * this.height; - Buffer.MemoryCopy(src, dst, size, size); - } - } - - // unlock destination images - dstImage.UnlockBits(dstData); - } - - return dstImage; - } - catch (Exception) - { - if (dstImage != null) - { - dstImage.Dispose(); - } - - throw new Exception("The unmanaged image has some invalid properties, which results in failure of converting it to managed image."); - } - } - - /// - /// Reads image data as a series of bytes. - /// - /// Number of bytes to read. - /// Offset from start of image data. - /// Array of bytes read. - public byte[] ReadBytes(int count, int offset = 0) - { - return this.image.ReadBytes(count, offset); - } - - /// - /// Creates a copy of the image cropped to the specified dimensions. - /// - /// The left of the region to crop. - /// The top of the region to crop. - /// The width of the region to crop. - /// The height of the region to crop. - /// The cropped image. - public Shared Crop(int left, int top, int width, int height) - { - if ((left < 0) || (left > (this.width - 1))) - { - throw new ArgumentOutOfRangeException("left", "left is out of range"); - } - - if ((top < 0) || (top > (this.height - 1))) - { - throw new ArgumentOutOfRangeException("top", "top is out of range"); - } - - if ((width < 0) || ((left + width) > this.width)) - { - throw new ArgumentOutOfRangeException("width", "width is out of range"); - } - - if ((height < 0) || ((top + height) > this.height)) - { - throw new ArgumentOutOfRangeException("height", "height is out of range"); - } - - // Cropped image will be returned as a new image - original (this) image is not modified - Shared croppedImage = ImagePool.GetOrCreate(width, height, this.pixelFormat); - Debug.Assert(croppedImage.Resource.image.Data != IntPtr.Zero, "Unexpected empty image"); unsafe { - int bytesPerPixel = this.BitsPerPixel / 8; - - // Compute the number of bytes in each line of the crop region - int copyLength = width * bytesPerPixel; - - // Start at top-left of region to crop - byte* src = (byte*)this.image.Data.ToPointer() + (top * this.stride) + (left * bytesPerPixel); - byte* dst = (byte*)croppedImage.Resource.image.Data.ToPointer(); - - // Copy line by line - for (int i = 0; i < height; i++) + byte* src = (byte*)this.ImageData.ToPointer(); + int pixelOffset = x * this.BitsPerPixel / 8 + y * this.Stride; + switch (this.PixelFormat) { - Buffer.MemoryCopy(src, dst, copyLength, copyLength); - - src += this.stride; - dst += croppedImage.Resource.stride; + case PixelFormat.BGRA_32bpp: + src[pixelOffset + 0] = (byte)gray; + src[pixelOffset + 1] = (byte)gray; + src[pixelOffset + 2] = (byte)gray; + src[pixelOffset + 3] = (byte)255; + break; + case PixelFormat.BGR_24bpp: + case PixelFormat.BGRX_32bpp: + src[pixelOffset + 0] = (byte)gray; + src[pixelOffset + 1] = (byte)gray; + src[pixelOffset + 2] = (byte)gray; + break; + case PixelFormat.Gray_16bpp: + src[pixelOffset + 0] = (byte)((gray >> 8) & 0xff); + src[pixelOffset + 1] = (byte)(gray & 0xff); + break; + case PixelFormat.Gray_8bpp: + src[pixelOffset] = (byte)gray; + break; + case PixelFormat.RGBA_64bpp: + src[pixelOffset + 0] = (byte)((gray >> 8) & 0xff); + src[pixelOffset + 1] = (byte)(gray & 0xff); + src[pixelOffset + 2] = (byte)((gray >> 8) & 0xff); + src[pixelOffset + 3] = (byte)(gray & 0xff); + src[pixelOffset + 4] = (byte)((gray >> 8) & 0xff); + src[pixelOffset + 5] = (byte)(gray & 0xff); + src[pixelOffset + 6] = (byte)255; + src[pixelOffset + 7] = (byte)255; + break; + case PixelFormat.Undefined: + default: + throw new Exception(ExceptionDescriptionUnexpectedPixelFormat); } } - - return croppedImage; } - private static Bitmap CreateGrayscaleImage(int width, int height) + /// + public override ImageBase CreateEmptyOfSameSize() { - // create new image - Bitmap image = new Bitmap(width, height, PixelFormatHelper.ToSystemPixelFormat(PixelFormat.Gray_8bpp)); - - // set palette to grayscale - SetGrayscalePalette(image); - - // return new image - return image; - } - - private static int GetBytesPerPixel(PixelFormat pixelFormat) - { - return PixelFormatHelper.GetBytesPerPixel(pixelFormat); - } - - private void CopyImageSlow(IntPtr srcBuffer, PixelFormat srcFormat, IntPtr dstBuffer, int dstStride, PixelFormat dstFormat) - { - unsafe - { - int srcBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(srcFormat); - int dstBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(dstFormat); - Parallel.For(0, this.Height, i => - { - byte* srcCol = (byte*)srcBuffer.ToPointer() + (i * this.stride); - byte* dstCol = (byte*)dstBuffer.ToPointer() + (i * dstStride); - for (int j = 0; j < this.width; j++) - { - int red = 0; - int green = 0; - int blue = 0; - int alpha = 255; - switch (srcFormat) - { - case PixelFormat.Gray_8bpp: - red = green = blue = srcCol[0]; - break; - - case PixelFormat.Gray_16bpp: - red = green = blue = ((ushort*)srcCol)[0]; - break; - - case PixelFormat.BGR_24bpp: - blue = srcCol[0]; - green = srcCol[1]; - red = srcCol[2]; - break; - - case PixelFormat.BGRX_32bpp: - blue = srcCol[0]; - green = srcCol[1]; - red = srcCol[2]; - break; - - case PixelFormat.BGRA_32bpp: - blue = srcCol[0]; - green = srcCol[1]; - red = srcCol[2]; - alpha = srcCol[3]; - break; - - case PixelFormat.RGBA_64bpp: - red = ((ushort*)srcCol)[0]; - green = ((ushort*)srcCol)[1]; - blue = ((ushort*)srcCol)[2]; - alpha = ((ushort*)srcCol)[3]; - break; - } - - switch (dstFormat) - { - case PixelFormat.Gray_8bpp: - dstCol[0] = Rgb2Gray((byte)red, (byte)green, (byte)blue); - break; - - case PixelFormat.Gray_16bpp: - ((ushort*)dstCol)[0] = Rgb2Gray((ushort)red, (ushort)green, (ushort)blue); - break; - - case PixelFormat.BGR_24bpp: - case PixelFormat.BGRX_32bpp: - dstCol[0] = (byte)blue; - dstCol[1] = (byte)green; - dstCol[2] = (byte)red; - break; - - case PixelFormat.BGRA_32bpp: - dstCol[0] = (byte)blue; - dstCol[1] = (byte)green; - dstCol[2] = (byte)red; - dstCol[3] = (byte)alpha; - break; - - case PixelFormat.RGBA_64bpp: - ((ushort*)dstCol)[0] = (ushort)red; - ((ushort*)dstCol)[1] = (ushort)green; - ((ushort*)dstCol)[2] = (ushort)blue; - ((ushort*)dstCol)[3] = (ushort)alpha; - break; - } - - srcCol += srcBytesPerPixel; - dstCol += dstBytesPerPixel; - } - }); - } + return new Image(this.Width, this.Height, this.PixelFormat); } /// /// Custom serializer used for reading/writing images. /// - public class CustomSerializer : ISerializer + public class CustomSerializer : ImageBase.CustomSerializer { - private const int Version = 4; private static IImageCompressor imageCompressor = null; - private TypeSchema schema; /// - /// Maybe called to initialize type of compression to use. Default is no compression. + /// Configure the type of compression to use when serializing images. Default is no compression. /// - /// Compressor to be used. - public static void ConfigureCompression(IImageCompressor compressor) + /// Compressor to be used. + public static void ConfigureCompression(IImageCompressor imageCompressor) { - imageCompressor = compressor; + CustomSerializer.imageCompressor = imageCompressor; } - /// - /// Initialize custom serializer. - /// - /// Known serializers. - /// Target type schema. - /// Type schema. - public TypeSchema Initialize(KnownSerializers serializers, TypeSchema targetSchema) - { - if (targetSchema == null) - { - TypeMemberSchema[] schemaMembers = new TypeMemberSchema[6] - { - new TypeMemberSchema("compression", typeof(CompressionMethod).AssemblyQualifiedName, false), - new TypeMemberSchema("image", typeof(UnmanagedBuffer).AssemblyQualifiedName, true), - new TypeMemberSchema("width", typeof(int).AssemblyQualifiedName, true), - new TypeMemberSchema("height", typeof(int).AssemblyQualifiedName, true), - new TypeMemberSchema("stride", typeof(int).AssemblyQualifiedName, true), - new TypeMemberSchema("pixelFormat", typeof(Imaging.PixelFormat).AssemblyQualifiedName, true), - }; - var type = typeof(Imaging.Image); - var name = TypeSchema.GetContractName(type, serializers.RuntimeVersion); - this.schema = new TypeSchema(name, TypeSchema.GetId(name), type.AssemblyQualifiedName, TypeFlags.IsCollection, schemaMembers, Version); - } - else - { - this.schema = targetSchema; - } - - return this.schema; - } - - /// - /// Serialize image. - /// - /// Writer to which to serialize. - /// Image instace to serialize. - /// Serialization context. - public void Serialize(BufferWriter writer, Image instance, SerializationContext context) + /// + public override void Serialize(BufferWriter writer, Image instance, SerializationContext context) { CompressionMethod compressionMethod = (imageCompressor == null) ? CompressionMethod.None : imageCompressor.CompressionMethod; Serializer.Serialize(writer, compressionMethod, context); if (compressionMethod == CompressionMethod.None) { - Serializer.Serialize(writer, instance.image, context); - Serializer.Serialize(writer, instance.width, context); - Serializer.Serialize(writer, instance.height, context); - Serializer.Serialize(writer, instance.stride, context); - Serializer.Serialize(writer, instance.pixelFormat, context); + base.Serialize(writer, instance, context); } else { @@ -852,106 +404,24 @@ namespace Microsoft.Psi.Imaging } } - /// - /// Prepare target for cloning. - /// - /// Called before Clone, to ensure the target is valid. - /// Image instance from which to clone. - /// Image into which to clone. - /// Serialization context. - public void PrepareCloningTarget(Image instance, ref Image target, SerializationContext context) + /// + public override void Deserialize(BufferReader reader, ref Image target, SerializationContext context) { - if (target == null || - target.width != instance.width || - target.height != instance.height || - target.pixelFormat != instance.pixelFormat) + var compressionMethod = CompressionMethod.None; + if (this.Schema.Version >= 4) { - target?.Dispose(); - target = new Image(instance.width, instance.height, instance.pixelFormat); - } - } - - /// - /// Clone image. - /// - /// Image instance to clone. - /// Target image into which to clone. - /// Serialization context. - public void Clone(Image instance, ref Image target, SerializationContext context) - { - Serializer.Clone(instance.image, ref target.image, context); - Serializer.Clone(instance.width, ref target.width, context); - Serializer.Clone(instance.height, ref target.height, context); - Serializer.Clone(instance.stride, ref target.stride, context); - Serializer.Clone(instance.pixelFormat, ref target.pixelFormat, context); - } - - /// - /// Prepare target for deserialization. - /// - /// Called before Deserialize, to ensure the target is valid. - /// Reader being used. - /// Target image into which to deserialize. - /// Serialization context. - public void PrepareDeserializationTarget(BufferReader reader, ref Image target, SerializationContext context) - { - if (target == null) - { - target = (Image)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(Image)); - } - } - - /// - /// Deserialize image. - /// - /// Buffer reader being used. - /// Target image into which to deserialize. - /// Serialization context. - public void Deserialize(BufferReader reader, ref Image target, SerializationContext context) - { - CompressionMethod methodOfCompression = CompressionMethod.None; - if (this.schema.Version >= 4) - { - Serializer.Deserialize(reader, ref methodOfCompression, context); + Serializer.Deserialize(reader, ref compressionMethod, context); } - if (methodOfCompression == CompressionMethod.None) + if (compressionMethod == CompressionMethod.None) { - Serializer.Deserialize(reader, ref target.image, context); - Serializer.Deserialize(reader, ref target.width, context); - Serializer.Deserialize(reader, ref target.height, context); - Serializer.Deserialize(reader, ref target.stride, context); - if (this.schema.Version <= 2) - { - System.Drawing.Imaging.PixelFormat pixFmt = default(System.Drawing.Imaging.PixelFormat); - Serializer.Deserialize(reader, ref pixFmt, context); - target.pixelFormat = PixelFormatHelper.FromSystemPixelFormat(pixFmt); - } - else - { - Serializer.Deserialize(reader, ref target.pixelFormat, context); - } + base.Deserialize(reader, ref target, context); } else { imageCompressor.Deserialize(reader, ref target, context); } } - - /// - /// Clear image to be reused. - /// - /// Called once the object becomes unused and can be reused as a cloning target. - /// Target image to clear. - /// Serialization context. - public void Clear(ref Image target, SerializationContext context) - { - Serializer.Clear(ref target.image, context); - Serializer.Clear(ref target.width, context); - Serializer.Clear(ref target.height, context); - Serializer.Clear(ref target.stride, context); - Serializer.Clear(ref target.pixelFormat, context); - } } } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ImageBase.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ImageBase.cs new file mode 100644 index 00000000..6ebcd9d5 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ImageBase.cs @@ -0,0 +1,671 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using System.Drawing; + using System.Drawing.Imaging; + using System.Threading.Tasks; + using Microsoft.Psi.Common; + using Microsoft.Psi.Serialization; + + /// + /// Represents an image, stored in unmanaged memory. + /// + /// Using this class it is possible as to allocate a new image in unmanaged memory, + /// as to just wrap provided pointer to unmanaged memory, where an image is stored. + public abstract class ImageBase : IDisposable + { + /// + /// Exception message when unexpected pixel format is encountered. + /// + public const string ExceptionDescriptionUnexpectedPixelFormat = "Unexpected pixel format"; + + /// + /// Exception message when source and destination image sizes don't match. + /// + public const string ExceptionDescriptionSourceDestImageMismatch = "Source and destination images must be the same size"; + + private UnmanagedBuffer image; + private int width; + private int height; + private int stride; + private PixelFormat pixelFormat; + + /// + /// Initializes a new instance of the class. + /// + /// The unmanaged array containing the image. + /// Image width in pixels. + /// Image height in pixels. + /// Image stride (line size in bytes). + /// Image pixel format. + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public ImageBase(UnmanagedBuffer image, int width, int height, int stride, PixelFormat pixelFormat) + { + if (pixelFormat == PixelFormat.Undefined) + { + throw new ArgumentException("Cannot create an image with an Undefined pixel format."); + } + + this.image = image; + this.width = width; + this.height = height; + this.stride = stride; + this.pixelFormat = pixelFormat; + } + + /// + /// Initializes a new instance of the class. + /// + /// Pointer to image data in unmanaged memory. + /// Image width in pixels. + /// Image height in pixels. + /// Image stride (line size in bytes). + /// Image pixel format. + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public ImageBase(IntPtr imageData, int width, int height, int stride, PixelFormat pixelFormat) + : this(UnmanagedBuffer.WrapIntPtr(imageData, height * stride), width, height, stride, pixelFormat) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Image width in pixels. + /// Image height in pixels. + /// Image stride (line size in bytes). + /// Image pixel format. + /// Using this constructor, make sure all specified image attributes are correct + /// and correspond to unmanaged memory buffer. If some attributes are specified incorrectly, + /// this may lead to exceptions working with the unmanaged memory. + public ImageBase(int width, int height, int stride, PixelFormat pixelFormat) + : this(UnmanagedBuffer.Allocate(height * stride), width, height, stride, pixelFormat) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Width of image in pixels. + /// Height of image in pixels. + /// Pixel format. + public ImageBase(int width, int height, PixelFormat pixelFormat) + : this(UnmanagedBuffer.Allocate(height * width * pixelFormat.GetBytesPerPixel()), width, height, width * pixelFormat.GetBytesPerPixel(), pixelFormat) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Locked bitmap data. + /// Indicates whether a copy is made (default is false). + /// + /// When the parameter is false (default), the image simply wraps + /// the bitmap data. As such, the bitmap data must stay locked for the duration of using the object. + /// + /// If the parameter is set to true, a copy of the bitmap + /// data is made, and the bitmap data can be released right after the has been constructed. + /// + /// + public ImageBase(BitmapData bitmapData, bool makeCopy = false) + { + this.image = makeCopy ? + UnmanagedBuffer.CreateCopyFrom(bitmapData.Scan0, bitmapData.Stride * bitmapData.Height) : + UnmanagedBuffer.WrapIntPtr(bitmapData.Scan0, bitmapData.Height * bitmapData.Stride); + this.width = bitmapData.Width; + this.height = bitmapData.Height; + this.stride = bitmapData.Stride; + this.pixelFormat = PixelFormatHelper.FromSystemPixelFormat(bitmapData.PixelFormat); + } + + /// + /// Gets a pointer to unmanaged buffer that wraps the image data in unmanaged memory. + /// + public UnmanagedBuffer UnmanagedBuffer => this.image; + + /// + /// Gets a pointer to the image data in unmanaged memory. + /// + public IntPtr ImageData => this.image.Data; + + /// + /// Gets image width in pixels. + /// + public int Width => this.width; + + /// + /// Gets image height in pixels. + /// + public int Height => this.height; + + /// + /// Gets image stride (line size in bytes). + /// + public int Stride => this.stride; + + /// + /// Gets the size of the image in bytes (stride times height). + /// + public int Size => this.stride * this.height; + + /// + /// Gets the bits per pixel in the image. + /// + public int BitsPerPixel => this.pixelFormat.GetBitsPerPixel(); + + /// + /// Gets image pixel format. + /// + public PixelFormat PixelFormat => this.pixelFormat; + + /// + /// Disposes the image. + /// + /// Frees unmanaged resources used by the object. The image becomes unusable after that. + public void Dispose() + { + this.image.Dispose(); + this.image = null; + } + + /// + /// Copies the image to a destination byte array buffer. + /// + /// The destination buffer to copy the image to. + /// The method copies current unmanaged image to the specified buffer. + /// The buffer must be allocated and must have the same size. + public void CopyTo(byte[] destinationBuffer) + { + this.image.CopyTo(destinationBuffer); + } + + /// + /// Copies the image to a destination pointer. + /// + /// The destination pointer to copy the image to. + /// The destination width. + /// The destination height. + /// The destination stride. + /// The destination pixel format. + public void CopyTo(IntPtr destination, int width, int height, int stride, PixelFormat pixelFormat) + { + if ((this.width != width) || (this.height != height)) + { + throw new InvalidOperationException("Destination image has different size."); + } + + // Check if pixel formats are the same. If so, do a straight up copy + if (this.PixelFormat == pixelFormat) + { + if (this.stride == stride) + { + this.image.CopyTo(destination, stride * height); + } + else + { + unsafe + { + int copyLength = (this.stride < stride) ? this.stride : stride; + + byte* src = (byte*)this.image.Data.ToPointer(); + byte* dst = (byte*)destination.ToPointer(); + + // copy line by line + for (int i = 0; i < this.height; i++) + { + Buffer.MemoryCopy(src, dst, copyLength, copyLength); + + dst += stride; + src += this.stride; + } + } + } + } + else if ((this.pixelFormat == PixelFormat.BGR_24bpp) && + (pixelFormat == PixelFormat.BGRX_32bpp || + pixelFormat == PixelFormat.BGRA_32bpp)) + { + unsafe + { + byte* src = (byte*)this.image.Data.ToPointer(); + byte* dst = (byte*)destination.ToPointer(); + Parallel.For(0, this.Height, i => + { + byte* srcCopy = src + (this.stride * i); + byte* dstCopy = dst + (stride * i); + for (int j = 0; j < this.width; j++) + { + *dstCopy++ = *srcCopy++; + *dstCopy++ = *srcCopy++; + *dstCopy++ = *srcCopy++; + *dstCopy++ = 255; + } + }); + } + } + else if ((this.pixelFormat == PixelFormat.BGRX_32bpp) && + (pixelFormat == PixelFormat.BGR_24bpp)) + { + unsafe + { + byte* src = (byte*)this.image.Data.ToPointer(); + byte* dst = (byte*)destination.ToPointer(); + Parallel.For(0, this.Height, i => + { + byte* srcCopy = src + (this.stride * i); + byte* dstCopy = dst + (stride * i); + for (int j = 0; j < this.width; j++) + { + *dstCopy++ = *srcCopy++; + *dstCopy++ = *srcCopy++; + *dstCopy++ = *srcCopy++; + srcCopy++; + } + }); + } + } + else if ((this.pixelFormat == PixelFormat.BGR_24bpp) && + (pixelFormat == PixelFormat.Gray_8bpp)) + { + unsafe + { + byte* src = (byte*)this.image.Data.ToPointer(); + byte* dst = (byte*)destination.ToPointer(); + + Parallel.For(0, this.Height, i => + { + byte* srcCopy = src + (this.stride * i); + byte* dstCopy = dst + (stride * i); + for (int j = 0; j < this.width; j++) + { + *dstCopy++ = Operators.Rgb2Gray(*srcCopy, *(srcCopy + 1), *(srcCopy + 2)); + srcCopy += 3; + } + }); + } + } + else + { + this.CopyImageSlow(this.image.Data, this.pixelFormat, destination, stride, pixelFormat); + } + } + + /// + /// Copies data from a source byte array buffer into the image. + /// + /// The buffer to copy the image from. + /// The method copies data from the specified buffer into the image. + /// The image must be allocated and must have the same size. + public void CopyFrom(byte[] sourceBuffer) + { + this.image.CopyFrom(sourceBuffer); + } + + /// + /// Copies data from a source pointer into the image. + /// + /// A source pointer to copy the image data from. + /// The method copies data from the specified buffer into the unmanaged image + /// The image must be allocated and must have the same size. + public void CopyFrom(IntPtr source) + { + this.image.CopyFrom(source, this.image.Size); + } + + /// + /// Creates a from the image. + /// + /// Indicates whether to make a copy of the image data or not. + /// A corresponding image. + /// If the parameter is set to , then the method + /// creates a copy of the image, so the stays valid even when the + /// image gets disposed. However, setting this parameter to creates a image which is just a wrapper around the image data. In this case, if the image is disposed, the + /// will no longer be valid and accessing it will generate an exception. + public Bitmap ToBitmap(bool makeCopy = true) + { + Bitmap bitmap = null; + + try + { + if (!makeCopy) + { + bitmap = new Bitmap(this.width, this.height, this.stride, PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat), this.image.Data); + if (this.pixelFormat == PixelFormat.Gray_8bpp) + { + Operators.SetGrayscalePalette(bitmap); + } + } + else + { + // create new image of required format + bitmap = new Bitmap(this.width, this.height, PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat)); + if (this.pixelFormat == PixelFormat.Gray_8bpp) + { + // set palette to grayscale + Operators.SetGrayscalePalette(bitmap); + } + + // lock destination bitmap data + BitmapData bitmapData = bitmap.LockBits( + new Rectangle(0, 0, this.width, this.height), + ImageLockMode.ReadWrite, + PixelFormatHelper.ToSystemPixelFormat(this.pixelFormat)); + + int bitmapStride = bitmapData.Stride; + int lineSize = Math.Min(this.stride, bitmapStride); + + unsafe + { + byte* dst = (byte*)bitmapData.Scan0.ToPointer(); + byte* src = (byte*)this.image.Data.ToPointer(); + + if (this.stride != bitmapStride) + { + // copy image + for (int y = 0; y < this.height; y++) + { + Buffer.MemoryCopy(src, dst, lineSize, lineSize); + dst += bitmapStride; + src += this.stride; + } + } + else + { + var size = this.stride * this.height; + Buffer.MemoryCopy(src, dst, size, size); + } + } + + // unlock destination images + bitmap.UnlockBits(bitmapData); + } + + return bitmap; + } + catch (Exception) + { + if (bitmap != null) + { + bitmap.Dispose(); + } + + throw new Exception("The image has some invalid properties, which caused a failure while converting it to managed image."); + } + } + + /// + /// Reads image data as a series of bytes. + /// + /// Number of bytes to read. + /// Offset from start of image data. + /// Array of bytes read. + public byte[] ReadBytes(int count, int offset = 0) + { + return this.image.ReadBytes(count, offset); + } + + /// + /// Creates an empty image of the same size. + /// + /// An empty image of the same size. + public abstract ImageBase CreateEmptyOfSameSize(); + + private void CopyImageSlow(IntPtr sourceIntPtr, PixelFormat sourceFormat, IntPtr destinationIntPtr, int destinationStride, PixelFormat destinationFormat) + { + unsafe + { + int srcBytesPerPixel = sourceFormat.GetBytesPerPixel(); + int dstBytesPerPixel = destinationFormat.GetBytesPerPixel(); + Parallel.For( + 0, + this.Height, + i => + { + byte* srcCol = (byte*)sourceIntPtr.ToPointer() + (i * this.stride); + byte* dstCol = (byte*)destinationIntPtr.ToPointer() + (i * destinationStride); + for (int j = 0; j < this.width; j++) + { + int red = 0; + int green = 0; + int blue = 0; + int alpha = 255; + switch (sourceFormat) + { + case PixelFormat.Gray_8bpp: + red = green = blue = srcCol[0]; + break; + + case PixelFormat.Gray_16bpp: + red = green = blue = ((ushort*)srcCol)[0]; + break; + + case PixelFormat.BGR_24bpp: + blue = srcCol[0]; + green = srcCol[1]; + red = srcCol[2]; + break; + + case PixelFormat.BGRX_32bpp: + blue = srcCol[0]; + green = srcCol[1]; + red = srcCol[2]; + break; + + case PixelFormat.BGRA_32bpp: + blue = srcCol[0]; + green = srcCol[1]; + red = srcCol[2]; + alpha = srcCol[3]; + break; + + case PixelFormat.RGBA_64bpp: + red = ((ushort*)srcCol)[0]; + green = ((ushort*)srcCol)[1]; + blue = ((ushort*)srcCol)[2]; + alpha = ((ushort*)srcCol)[3]; + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(ExceptionDescriptionUnexpectedPixelFormat); + } + + switch (destinationFormat) + { + case PixelFormat.Gray_8bpp: + dstCol[0] = Operators.Rgb2Gray((byte)red, (byte)green, (byte)blue); + break; + + case PixelFormat.Gray_16bpp: + ((ushort*)dstCol)[0] = Operators.Rgb2Gray((ushort)red, (ushort)green, (ushort)blue); + break; + + case PixelFormat.BGR_24bpp: + case PixelFormat.BGRX_32bpp: + dstCol[0] = (byte)blue; + dstCol[1] = (byte)green; + dstCol[2] = (byte)red; + break; + + case PixelFormat.BGRA_32bpp: + dstCol[0] = (byte)blue; + dstCol[1] = (byte)green; + dstCol[2] = (byte)red; + dstCol[3] = (byte)alpha; + break; + + case PixelFormat.RGBA_64bpp: + ((ushort*)dstCol)[0] = (ushort)red; + ((ushort*)dstCol)[1] = (ushort)green; + ((ushort*)dstCol)[2] = (ushort)blue; + ((ushort*)dstCol)[3] = (ushort)alpha; + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(ExceptionDescriptionUnexpectedPixelFormat); + } + + srcCol += srcBytesPerPixel; + dstCol += dstBytesPerPixel; + } + }); + } + } + + /// + /// Custom serializer used for reading/writing images. + /// + /// The type of image to custom serialize. + public abstract class CustomSerializer : ISerializer + where TImage : ImageBase + { + private const int Version = 4; + + /// + /// Gets the type schema. + /// + protected TypeSchema Schema { get; private set; } + + /// + /// Initialize custom serializer. + /// + /// Known serializers. + /// Target type schema. + /// Type schema. + public virtual TypeSchema Initialize(KnownSerializers serializers, TypeSchema targetSchema) + { + if (targetSchema == null) + { + TypeMemberSchema[] schemaMembers = new TypeMemberSchema[6] + { + new TypeMemberSchema("compression", typeof(CompressionMethod).AssemblyQualifiedName, false), + new TypeMemberSchema("image", typeof(UnmanagedBuffer).AssemblyQualifiedName, true), + new TypeMemberSchema("width", typeof(int).AssemblyQualifiedName, true), + new TypeMemberSchema("height", typeof(int).AssemblyQualifiedName, true), + new TypeMemberSchema("stride", typeof(int).AssemblyQualifiedName, true), + new TypeMemberSchema("pixelFormat", typeof(PixelFormat).AssemblyQualifiedName, true), + }; + var type = typeof(TImage); + var name = TypeSchema.GetContractName(type, serializers.RuntimeVersion); + this.Schema = new TypeSchema(name, TypeSchema.GetId(name), type.AssemblyQualifiedName, TypeFlags.IsClass, schemaMembers, Version); + } + else + { + this.Schema = targetSchema; + } + + return this.Schema; + } + + /// + /// Serialize image. + /// + /// Writer to which to serialize. + /// Image instance to serialize. + /// Serialization context. + public virtual void Serialize(BufferWriter writer, TImage instance, SerializationContext context) + { + Serializer.Serialize(writer, instance.image, context); + Serializer.Serialize(writer, instance.width, context); + Serializer.Serialize(writer, instance.height, context); + Serializer.Serialize(writer, instance.stride, context); + Serializer.Serialize(writer, instance.pixelFormat, context); + } + + /// + /// Prepare target for cloning. + /// + /// Called before Clone, to ensure the target is valid. + /// Image instance from which to clone. + /// Image into which to clone. + /// Serialization context. + public virtual void PrepareCloningTarget(TImage instance, ref TImage target, SerializationContext context) + { + if (target == null || + target.width != instance.width || + target.height != instance.height || + target.pixelFormat != instance.pixelFormat) + { + target?.Dispose(); + target = (TImage)instance.CreateEmptyOfSameSize(); + } + } + + /// + /// Clone image. + /// + /// Image instance to clone. + /// Target image into which to clone. + /// Serialization context. + public virtual void Clone(TImage instance, ref TImage target, SerializationContext context) + { + Serializer.Clone(instance.image, ref target.image, context); + Serializer.Clone(instance.width, ref target.width, context); + Serializer.Clone(instance.height, ref target.height, context); + Serializer.Clone(instance.stride, ref target.stride, context); + Serializer.Clone(instance.pixelFormat, ref target.pixelFormat, context); + } + + /// + /// Prepare target for deserialization. + /// + /// Called before Deserialize, to ensure the target is valid. + /// Reader being used. + /// Target image into which to deserialize. + /// Serialization context. + public virtual void PrepareDeserializationTarget(BufferReader reader, ref TImage target, SerializationContext context) + { + if (target == null) + { + target = (TImage)System.Runtime.Serialization.FormatterServices.GetUninitializedObject(typeof(TImage)); + } + } + + /// + /// Deserialize image. + /// + /// Buffer reader being used. + /// Target image into which to deserialize. + /// Serialization context. + public virtual void Deserialize(BufferReader reader, ref TImage target, SerializationContext context) + { + Serializer.Deserialize(reader, ref target.image, context); + Serializer.Deserialize(reader, ref target.width, context); + Serializer.Deserialize(reader, ref target.height, context); + Serializer.Deserialize(reader, ref target.stride, context); + if (this.Schema.Version <= 2) + { + System.Drawing.Imaging.PixelFormat pixFmt = default; + Serializer.Deserialize(reader, ref pixFmt, context); + target.pixelFormat = PixelFormatHelper.FromSystemPixelFormat(pixFmt); + } + else + { + Serializer.Deserialize(reader, ref target.pixelFormat, context); + } + } + + /// + /// Clear image to be reused. + /// + /// Called once the object becomes unused and can be reused as a cloning target. + /// Target image to clear. + /// Serialization context. + public virtual void Clear(ref TImage target, SerializationContext context) + { + Serializer.Clear(ref target.image, context); + Serializer.Clear(ref target.width, context); + Serializer.Clear(ref target.height, context); + Serializer.Clear(ref target.stride, context); + Serializer.Clear(ref target.pixelFormat, context); + } + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ImageDecoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ImageDecoder.cs new file mode 100644 index 00000000..49eb2ea7 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ImageDecoder.cs @@ -0,0 +1,50 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using Microsoft.Psi; + using Microsoft.Psi.Components; + + /// + /// Component that decodes an image using a specified . + /// + public class ImageDecoder : ConsumerProducer, Shared> + { + private readonly IImageFromStreamDecoder decoder; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline to add this component to. + /// The image decoder to use. + public ImageDecoder(Pipeline pipeline, IImageFromStreamDecoder decoder) + : base(pipeline) + { + this.decoder = decoder; + } + + /// + protected override void Receive(Shared sharedEncodedImage, Envelope envelope) + { + // The code below maintains back-compatibility with encoded images which did not store the pixel format + // on the instance, but only in the stream. If the pixel format is unknown, we call upon the decoder to + // retrieve the pixel format. This might be less performant, but enables decoding in the right format + // even from older versions of encoded images. + var pixelFormat = sharedEncodedImage.Resource.PixelFormat == PixelFormat.Undefined ? + this.decoder.GetPixelFormat(sharedEncodedImage.Resource.ToStream()) : sharedEncodedImage.Resource.PixelFormat; + + // If the decoder does not return a valid pixel format, we throw an exception. + if (pixelFormat == PixelFormat.Undefined) + { + throw new ArgumentException("The encoded image does not contain a supported pixel format."); + } + + using var sharedImage = ImagePool.GetOrCreate( + sharedEncodedImage.Resource.Width, sharedEncodedImage.Resource.Height, pixelFormat); + sharedImage.Resource.DecodeFrom(sharedEncodedImage.Resource, this.decoder); + this.Out.Post(sharedImage, envelope.OriginatingTime); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ImageEncoder.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ImageEncoder.cs new file mode 100644 index 00000000..dd3f76a6 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ImageEncoder.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using Microsoft.Psi; + using Microsoft.Psi.Components; + + /// + /// Component that encodes an image using a specified . + /// + public class ImageEncoder : ConsumerProducer, Shared> + { + private readonly IImageToStreamEncoder encoder; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline to add this component to. + /// The image encoder to use. + public ImageEncoder(Pipeline pipeline, IImageToStreamEncoder encoder) + : base(pipeline) + { + this.encoder = encoder; + } + + /// + protected override void Receive(Shared sharedImage, Envelope e) + { + using var sharedEncodedImage = EncodedImagePool.GetOrCreate( + sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat); + sharedEncodedImage.Resource.EncodeFrom(sharedImage.Resource, this.encoder); + this.Out.Post(sharedEncodedImage, e.OriginatingTime); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ImageExtensions.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ImageExtensions.cs new file mode 100644 index 00000000..29224ece --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ImageExtensions.cs @@ -0,0 +1,1610 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using System.Drawing; + using System.Drawing.Imaging; + using System.Threading.Tasks; + + /// + /// Sampling mode used by various imaging operators. + /// + public enum SamplingMode + { + /// + /// Sampling mode using nearest neighbor interpolation. + /// + Point, + + /// + /// Sampling mode using bilinear interpolation. + /// + Bilinear, + + /// + /// Sampling mode using bicubic interpolation. + /// + Bicubic, + } + + /// + /// Thresholding modes. + /// + public enum Threshold + { + /// + /// Thresholds pixels such that: + /// dst(x,y) = maxvalue if (src(x,y)>threshold) + /// = 0 otherwise + /// + Binary, + + /// + /// Thresholds pixels such that: + /// dst(x,y) = 0 if (src(x,y)>threshold) + /// = maxvalue otherwise + /// + BinaryInv, + + /// + /// Thresholds pixels such that: + /// dst(x,y) = threshold if (src(x,y)>threshold) + /// = src(x,y) otherwise + /// + Truncate, + + /// + /// Thresholds pixels such that: + /// dst(x,y) = src(x,y) if (src(x,y)>threshold) + /// = 0 otherwise + /// + ToZero, + + /// + /// Thresholds pixels such that: + /// dst(x,y) = 0 if (src(x,y)>threshold) + /// = src(x,y) otherwise + /// + ToZeroInv, + } + + /// + /// Axis along which to flip an image. + /// + public enum FlipMode + { + /// + /// Leave image unflipped + /// + None, + + /// + /// Flips image along the horizontal axis + /// + AlongHorizontalAxis, + + /// + /// Flips image along the vertical axis + /// + AlongVerticalAxis, + } + + /// + /// Various imaging operators. + /// + public static partial class Operators + { + /// + /// Constant passed to ExtractChannel to indcate the red channel should be extracted. + /// + public const int ExtractRedChannel = 0; + + /// + /// Constant passed to ExtractChannel to indcate the green channel should be extracted. + /// + public const int ExtractGreenChannel = 1; + + /// + /// Constant passed to ExtractChannel to indicate the blue channel should be extracted. + /// + public const int ExtractBlueChannel = 2; + + /// + /// Constant passed to ExtractChannel to indicate the alpha channel should be extracted. + /// + public const int ExtractAlphaChannel = 3; + + /// + /// Set palette of the 8 bpp indexed image to grayscale. + /// + /// Image to initialize. + /// The method initializes palette of + /// Format8bppIndexed + /// image with 256 gradients of gray color. + public static void SetGrayscalePalette(Bitmap bitmap) + { + // check pixel format + if (bitmap.PixelFormat != System.Drawing.Imaging.PixelFormat.Format8bppIndexed) + { + throw new ArgumentException("Source image is not 8 bpp image."); + } + + // get palette + ColorPalette cp = bitmap.Palette; + + // init palette + for (int i = 0; i < 256; i++) + { + cp.Entries[i] = Color.FromArgb(i, i, i); + } + + // set palette back + bitmap.Palette = cp; + } + + /// + /// Function to convert RGB color into grayscale. + /// + /// red component (Range=0..255). + /// green component (Range=0..255). + /// Blue component (Range=0..255). + /// Grayscale value (Range=0..255). + public static byte Rgb2Gray(byte r, byte g, byte b) + { + return (byte)(((4897 * r) + (9617 * g) + (1868 * b)) >> 14); + } + + /// + /// Function to convert RGB color into grayscale. + /// + /// red component (Range=0..65535). + /// green component (Range=0..65535). + /// Blue component (Range=0..65535). + /// Grayscale value (Range=0..65535). + public static ushort Rgb2Gray(ushort r, ushort g, ushort b) + { + return (ushort)(((4897 * r) + (9617 * g) + (1868 * b)) >> 14); + } + + /// + /// Flips an image along a specified axis. + /// + /// Image to flip. + /// Axis along which to flip. + /// A new flipped image. + public static Image Flip(this Image image, FlipMode mode) + { + var destImage = new Image(image.Width, image.Height, image.PixelFormat); + image.Flip(destImage, mode); + return destImage; + } + + /// + /// Flips an image along a specified axis. + /// + /// Image to flip. + /// Destination image where to store results. + /// Axis along which to flip. + public static void Flip(this Image image, Image destImage, FlipMode mode) + { + if (image.Width != destImage.Width || image.Height != destImage.Height) + { + throw new ArgumentException("Destination image's width/height must match the source image width/height"); + } + + if (image.PixelFormat == PixelFormat.Gray_16bpp) + { + // We can't handle this through GDI. + unsafe + { + int sourceBytesPerPixel = image.PixelFormat.GetBytesPerPixel(); + int destinationBytesPerPixel = destImage.PixelFormat.GetBytesPerPixel(); + byte* sourceRow = (byte*)image.ImageData.ToPointer(); + byte* destinationRow = (byte*)destImage.ImageData.ToPointer(); + int ystep = destImage.Stride; + if (mode == FlipMode.AlongHorizontalAxis) + { + destinationRow += destImage.Stride * (image.Height - 1); + ystep = -destImage.Stride; + } + + int xstep = destinationBytesPerPixel; + int xoffset = 0; + if (mode == FlipMode.AlongVerticalAxis) + { + xoffset = destinationBytesPerPixel * (destImage.Width - 1); + xstep = -destinationBytesPerPixel; + } + + for (int i = 0; i < image.Height; i++) + { + byte* sourceColumn = sourceRow; + byte* destinationColumn = destinationRow + xoffset; + for (int j = 0; j < image.Width; j++) + { + ((ushort*)destinationColumn)[0] = ((ushort*)sourceColumn)[0]; + sourceColumn += sourceBytesPerPixel; + destinationColumn += xstep; + } + + sourceRow += image.Stride; + destinationRow += ystep; + } + } + } + else + { + // This block handles the rest of the pixel format cases + using var bitmap = new Bitmap(image.Width, image.Height, PixelFormatHelper.ToSystemPixelFormat(image.PixelFormat)); + using var graphics = Graphics.FromImage(bitmap); + switch (mode) + { + case FlipMode.AlongHorizontalAxis: + graphics.TranslateTransform(0.0f, image.Height - 1); + graphics.ScaleTransform(1.0f, -1.0f); + break; + + case FlipMode.AlongVerticalAxis: + graphics.TranslateTransform(image.Width - 1, 0.0f); + graphics.ScaleTransform(-1.0f, 1.0f); + break; + + case FlipMode.None: + break; + } + + using (var destinationImage = image.ToBitmap()) + { + graphics.DrawImage(destinationImage, new Point(0, 0)); + } + + destImage.CopyFrom(bitmap); + } + } + + /// + /// Resizes an image by the specified scale factors using the specified sampling mode. + /// + /// Image to resize. + /// Scale factor to apply in X direction. + /// Scale factor to apply in Y direction. + /// Sampling mode for sampling of pixels. + /// Returns a new image scaled by the specified scale factors. + public static Image Scale(this Image image, float scaleX, float scaleY, SamplingMode mode) + { + int scaledWidth = (int)Math.Abs(image.Width * scaleX); + int scaledHeight = (int)Math.Abs(image.Height * scaleY); + Image destImage = new Image(scaledWidth, scaledHeight, image.PixelFormat); + image.Scale(destImage, scaleX, scaleY, mode); + return destImage; + } + + /// + /// Resizes an image by the specified scale factors using the specified sampling mode. + /// + /// Image to resize. + /// Image to store scaled results. + /// Scale factor to apply in X direction. + /// Scale factor to apply in Y direction. + /// Sampling mode for sampling of pixels. + public static void Scale(this Image image, Image destImage, float scaleX, float scaleY, SamplingMode mode) + { + if (scaleX == 0.0 || scaleY == 0.0) + { + throw new System.ArgumentOutOfRangeException("Unexpected scale factors"); + } + + int scaledWidth = (int)Math.Abs(image.Width * scaleX); + int scaledHeight = (int)Math.Abs(image.Height * scaleY); + if (destImage.Width != scaledWidth || destImage.Height != scaledHeight) + { + throw new ArgumentException($"Destination image must be size={scaledWidth}x{scaledHeight}."); + } + + if (image.PixelFormat == PixelFormat.Gray_16bpp) + { + throw new System.InvalidOperationException( + "Scaling 16bpp images is not currently supported. " + + "Convert to a supported format such as color or 8bpp grayscale first."); + } + + int dstWidth = (int)(image.Width * scaleX); + int dstHeight = (int)(image.Height * scaleY); + using var bitmap = new Bitmap(dstWidth, dstHeight, PixelFormatHelper.ToSystemPixelFormat(image.PixelFormat)); + using var graphics = Graphics.FromImage(bitmap); + graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; + switch (mode) + { + case SamplingMode.Point: + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; + break; + + case SamplingMode.Bilinear: + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + break; + + case SamplingMode.Bicubic: + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + break; + } + + graphics.ScaleTransform(scaleX, scaleY); + + using (var managedimg = image.ToBitmap()) + { + graphics.DrawImage(managedimg, new Point(0, 0)); + } + + destImage.CopyFrom(bitmap); + } + + /// + /// Resize an image. + /// + /// Image to resize. + /// Image where to store resized source image. + /// Final width of desired output. + /// Final height of desired output. + /// Method for sampling pixels when rescaling. + public static void Resize(this Image image, Image destImage, float finalWidth, float finalHeight, SamplingMode samplingMode = SamplingMode.Bilinear) + { + float scaleX = finalWidth / image.Width; + float scaleY = finalHeight / image.Height; + image.Scale(destImage, scaleX, scaleY, samplingMode); + } + + /// + /// Rotates an image. + /// + /// Image to rotate. + /// Number of degrees to rotate in counter clockwise direction. + /// Pixel resampling method. + /// Rotated image. + public static Image Rotate(this Image image, float angleInDegrees, SamplingMode mode) + { + int rotatedWidth; + int rotatedHeight; + float originx; + float originy; + DetermineRotatedWidthHeight(image.Width, image.Height, angleInDegrees, out rotatedWidth, out rotatedHeight, out originx, out originy); + Image rotatedImage = new Image(rotatedWidth, rotatedHeight, image.PixelFormat); + image.Rotate(rotatedImage, angleInDegrees, mode); + return rotatedImage; + } + + /// + /// Rotates an image. + /// + /// Image to rotate. + /// Image where to store rotated source image. + /// Number of degrees to rotate in counter clockwise direction. + /// Pixel resampling method. + public static void Rotate(this Image image, Image destImage, float angleInDegrees, SamplingMode mode) + { + int rotatedWidth; + int rotatedHeight; + float originx, originy; + DetermineRotatedWidthHeight(image.Width, image.Height, angleInDegrees, out rotatedWidth, out rotatedHeight, out originx, out originy); + using var bitmap = new Bitmap(rotatedWidth, rotatedHeight, PixelFormatHelper.ToSystemPixelFormat(image.PixelFormat)); + using var graphics = Graphics.FromImage(bitmap); + graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; + switch (mode) + { + case SamplingMode.Point: + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; + break; + + case SamplingMode.Bilinear: + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + break; + + case SamplingMode.Bicubic: + graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; + graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; + graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; + graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; + break; + } + + graphics.TranslateTransform(-originx, -originy); + graphics.RotateTransform(angleInDegrees); + + using (var managedimg = image.ToBitmap()) + { + graphics.DrawImage(managedimg, new Point(0, 0)); + } + + destImage.CopyFrom(bitmap); + } + + /// + /// Creates a copy of the image cropped to the specified dimensions. + /// + /// Image to crop. + /// The left of the region to crop. + /// The top of the region to crop. + /// The width of the region to crop. + /// The height of the region to crop. + /// The cropped image. + public static Image Crop(this Image image, int left, int top, int width, int height) + { + Image croppedImage = new Image(width, height, image.PixelFormat); + image.Crop(croppedImage, left, top, width, height); + return croppedImage; + } + + /// + /// Creates a copy of the image cropped to the specified dimensions. + /// + /// Image to crop. + /// Destination image that cropped area is copied to. + /// The left of the region to crop. + /// The top of the region to crop. + /// The width of the region to crop. + /// The height of the region to crop. + /// The cropped image. + public static Image Crop(this Image image, Image croppedImage, int left, int top, int width, int height) + { + if (croppedImage.Width < width) + { + throw new ArgumentOutOfRangeException("destImage.Width", "destination image width is too small"); + } + + if (croppedImage.Height < height) + { + throw new ArgumentOutOfRangeException("destImage.Height", "destination image height is too small"); + } + + if ((left < 0) || (left >= image.Width)) + { + throw new ArgumentOutOfRangeException("left", "left is out of range"); + } + + if ((top < 0) || (top >= image.Height)) + { + throw new ArgumentOutOfRangeException("top", "top is out of range"); + } + + if ((width < 0) || ((left + width) > image.Width)) + { + throw new ArgumentOutOfRangeException("width", "width is out of range"); + } + + if ((height < 0) || ((top + height) > image.Height)) + { + throw new ArgumentOutOfRangeException("height", "height is out of range"); + } + + // Cropped image will be returned as a new image - original (this) image is not modified + System.Diagnostics.Debug.Assert(croppedImage.ImageData != IntPtr.Zero, "Unexpected empty image"); + unsafe + { + int bytesPerPixel = image.BitsPerPixel / 8; + + // Compute the number of bytes in each line of the crop region + int copyLength = width * bytesPerPixel; + + // Start at top-left of region to crop + byte* src = (byte*)image.ImageData.ToPointer() + (top * image.Stride) + (left * bytesPerPixel); + byte* dst = (byte*)croppedImage.ImageData.ToPointer(); + + // Copy line by line + for (int i = 0; i < height; i++) + { + Buffer.MemoryCopy(src, dst, copyLength, copyLength); + + src += image.Stride; + dst += croppedImage.Stride; + } + } + + return croppedImage; + } + + /// + /// Creates a copy of the depth image cropped to the specified dimensions. + /// + /// Depth image to crop. + /// The left of the region to crop. + /// The top of the region to crop. + /// The width of the region to crop. + /// The height of the region to crop. + /// The cropped depth image. + public static DepthImage Crop(this DepthImage image, int left, int top, int width, int height) + { + DepthImage croppedImage = new DepthImage(width, height, image.Stride); + image.Crop(croppedImage, left, top, width, height); + return croppedImage; + } + + /// + /// Creates a copy of the image cropped to the specified dimensions. + /// + /// Image to crop. + /// Destination image that cropped area is copied to. + /// The left of the region to crop. + /// The top of the region to crop. + /// The width of the region to crop. + /// The height of the region to crop. + public static void Crop(this DepthImage image, DepthImage croppedImage, int left, int top, int width, int height) + { + if (croppedImage.Width < width) + { + throw new ArgumentOutOfRangeException("destImage.Width", "destination image width is too small"); + } + + if (croppedImage.Height < height) + { + throw new ArgumentOutOfRangeException("destImage.Height", "destination image height is too small"); + } + + if ((left < 0) || (left > (image.Width - 1))) + { + throw new ArgumentOutOfRangeException("left", "left is out of range"); + } + + if ((top < 0) || (top > (image.Height - 1))) + { + throw new ArgumentOutOfRangeException("top", "top is out of range"); + } + + if ((width < 0) || ((left + width) > image.Width)) + { + throw new ArgumentOutOfRangeException("width", "width is out of range"); + } + + if ((height < 0) || ((top + height) > image.Height)) + { + throw new ArgumentOutOfRangeException("height", "height is out of range"); + } + + // Cropped image will be returned as a new image - original (this) image is not modified + System.Diagnostics.Debug.Assert(croppedImage.ImageData != IntPtr.Zero, "Unexpected empty image"); + unsafe + { + int bytesPerPixel = image.BitsPerPixel / 8; + + // Compute the number of bytes in each line of the crop region + int copyLength = width * bytesPerPixel; + + // Start at top-left of region to crop + byte* src = (byte*)image.ImageData.ToPointer() + (top * image.Stride) + (left * bytesPerPixel); + byte* dst = (byte*)croppedImage.ImageData.ToPointer(); + + // Copy line by line + for (int i = 0; i < height; i++) + { + Buffer.MemoryCopy(src, dst, copyLength, copyLength); + + src += image.Stride; + dst += croppedImage.Stride; + } + } + } + + /// + /// Convert a depth image into a pseudo-colorized image, where more distant pixels are closer to blue, and near pixels are closer to red. + /// + /// Depth image to pseudo-colorize. + /// A tuple indicating the range (MinValue, MaxValue) of the depth values in the image. + /// The pseudo-colorized image in BGR_24bpp format. + public static Image PseudoColorize(this DepthImage depthImage, (ushort MinValue, ushort MaxValue) range) + { + var colorizedImage = new Image(depthImage.Width, depthImage.Height, PixelFormat.BGR_24bpp); + depthImage.PseudoColorize(colorizedImage, range); + return colorizedImage; + } + + /// + /// Convert a depth image into a pseudo-colorized image, where more distant pixels are closer to blue, and near pixels are closer to red. + /// + /// Depth image to pseudo-colorize. + /// Target color image. Must be in BGR_24bpp format. + /// A tuple indicating the range (MinValue, MaxValue) of the depth values in the image. + public static void PseudoColorize(this DepthImage depthImage, Image colorizedImage, (ushort MinValue, ushort MaxValue) range) + { + if (depthImage.Width != colorizedImage.Width || depthImage.Height != colorizedImage.Height) + { + throw new ArgumentException("Destination color image must have same width and height as source depth image."); + } + + if (colorizedImage.PixelFormat != PixelFormat.BGR_24bpp) + { + throw new InvalidOperationException("Only BGR 24bpp pixel format is supported for the destination color image."); + } + + unsafe + { + // Portions adapted from: + // https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/tools/k4aviewer/k4adepthpixelcolorizer.h + Parallel.For(0, depthImage.Height, iy => + { + ushort* src = (ushort*)((byte*)depthImage.ImageData.ToPointer() + (iy * depthImage.Stride)); + byte* dst = (byte*)colorizedImage.ImageData.ToPointer() + (iy * colorizedImage.Stride); + + for (int ix = 0; ix < depthImage.Width; ix++) + { + ushort depth = *src; + + if (depth == 0) + { + dst[0] = 0; + dst[1] = 0; + dst[2] = 0; + + dst += 3; + src += 1; + continue; + } + + // clamp the pixel + ushort clampedDepth = depth > range.MaxValue ? range.MaxValue : depth; + clampedDepth = depth < range.MinValue ? range.MinValue : depth; + + // get the hue + float hue = (clampedDepth - range.MinValue) / (float)(range.MaxValue - range.MinValue); + + // We want to go from blue (at 2/3 in hue space) to red (at 0 in hue space), so + // remap accordingly + // See also: https://en.wikipedia.org/wiki/HSL_and_HSV#/media/File:HSV-RGB-comparison.svg + hue = 1 - hue * .2f / .3f; + + float red = .0f; + float green = .0f; + float blue = .0f; + + if (hue < 0.25) + { + red = .0f; + green = hue / 0.25f; + blue = 1.0f; + } + else if (hue < 0.5) + { + red = .0f; + green = 1.0f; + blue = 1.0f - (hue - 0.25f) / 0.25f; + } + else if (hue < 0.75) + { + red = (hue - 0.5f) / 0.25f; + green = 1.0f; + blue = .0f; + } + else + { + red = 1.0f; + green = 1 - (hue - 0.75f) / 0.25f; + blue = .0f; + } + + dst[0] = (byte)(red * 255); + dst[1] = (byte)(green * 255); + dst[2] = (byte)(blue * 255); + + dst += 3; + src += 1; + } + }); + } + } + + /// + /// Determines the dimensions of an image after it has been rotated. + /// + /// Width (in pixels) of original image. + /// Height (in pixels) of original image. + /// Angle (in degrees) of rotation being applied. + /// Outputs the rotated image's width. + /// Outputs the rotated image's height. + /// The X coordinate of the origin after rotation (maybe negative). + /// The Y coordinate of the origin after rotation (maybe negative). + public static void DetermineRotatedWidthHeight(int imageWidth, int imageHeight, float angleInDegrees, out int rotatedWidth, out int rotatedHeight, out float originx, out float originy) + { + float ca = (float)System.Math.Cos(angleInDegrees * System.Math.PI / 180.0f); + float sa = (float)System.Math.Sin(angleInDegrees * System.Math.PI / 180.0f); + float minx = 0.0f; + float miny = 0.0f; + float maxx = 0.0f; + float maxy = 0.0f; + AddRotatedPointToBBox((float)(imageWidth - 1), 0.0f, ref minx, ref miny, ref maxx, ref maxy, ca, sa); + AddRotatedPointToBBox((float)(imageWidth - 1), (float)(imageHeight - 1), ref minx, ref miny, ref maxx, ref maxy, ca, sa); + AddRotatedPointToBBox(0.0f, (float)(imageHeight - 1), ref minx, ref miny, ref maxx, ref maxy, ca, sa); + rotatedWidth = (int)(maxx - minx + 1); + rotatedHeight = (int)(maxy - miny + 1); + originx = minx; + originy = miny; + } + + private static void AddRotatedPointToBBox(float x, float y, ref float minx, ref float miny, ref float maxx, ref float maxy, float ca, float sa) + { + float nx = (x * ca) - (y * sa); + float ny = (x * sa) + (y * ca); + if (nx < minx) + { + minx = nx; + } + + if (nx > maxx) + { + maxx = nx; + } + + if (ny < miny) + { + miny = ny; + } + + if (ny > maxy) + { + maxy = ny; + } + } + } + + /// + /// Set of operators used for drawing on an image. + /// + public static partial class Operators + { + /// + /// Draws a rectangle at the specified pixel coordinates on the image. + /// + /// Image to draw on. + /// Pixel coordinates for rectangle. + /// Color to use for drawing. + /// Width of line. + public static void DrawRectangle(this Image image, Rectangle rect, Color color, int width) + { + using Bitmap bm = image.ToBitmap(false); + using var graphics = Graphics.FromImage(bm); + using var pen = new Pen(new SolidBrush(color)); + pen.Width = width; + graphics.DrawRectangle(pen, rect); + } + + /// + /// Draws a line from point p0 to p1 in pixel coordinates on the image. + /// + /// Image to draw on. + /// Pixel coordinates for start of line. + /// Pixel coordinates for end of line. + /// Color to use for drawing. + /// Width of line. + public static void DrawLine(this Image image, Point p0, Point p1, Color color, int width) + { + using Bitmap bm = image.ToBitmap(false); + using var graphics = Graphics.FromImage(bm); + using var pen = new Pen(new SolidBrush(color)); + pen.Width = width; + graphics.DrawLine(pen, p0, p1); + } + + /// + /// Draws a circle centered at the specified pixel (p0) with the specified radius. + /// + /// Image to draw on. + /// Pixel coordinates for center of circle. + /// Radius of the circle. + /// Color to use for drawing. + /// Width of line. + public static void DrawCircle(this Image image, Point p0, int radius, Color color, int width) + { + using Bitmap bm = image.ToBitmap(false); + using var graphics = Graphics.FromImage(bm); + using var pen = new Pen(new SolidBrush(color)); + pen.Width = width; + graphics.DrawEllipse(pen, p0.X - radius, p0.Y - radius, 2 * radius, 2 * radius); + } + + /// + /// Renders text on the image at the specified pixel (p0). + /// + /// Image to draw on. + /// Text to render. + /// Pixel coordinates for center of circle. + /// Color to use when drawing text. Optional. + /// Name of font to use. Optional. + /// Size of font. Optional. + public static void DrawText(this Image image, string str, Point p0, Color color = default(Color), string font = "Arial", float fontSize = 24.0f) + { + font ??= "Arial"; + using Bitmap bm = image.ToBitmap(false); + using var graphics = Graphics.FromImage(bm); + using Font drawFont = new Font(font, fontSize); + using SolidBrush drawBrush = new SolidBrush(color); + using StringFormat drawFormat = new StringFormat(); + drawFormat.FormatFlags = 0; + graphics.DrawString(str, drawFont, drawBrush, p0.X, p0.Y, drawFormat); + } + } + + /// + /// Set of transforms for copying image data. + /// + public static partial class Operators + { + /// + /// Copies a source image into a destination image using the specified masking image. + /// See for further details. + /// + /// Source image. + /// Destination image. + /// Masking image. If null then ignored. + public static void CopyTo(this Image srcImage, Image destImage, Image maskImage) + { + if (srcImage.Width != destImage.Width || srcImage.Height != destImage.Height) + { + throw new System.Exception(Image.ExceptionDescriptionSourceDestImageMismatch); + } + + Rectangle srcRect = new Rectangle(0, 0, srcImage.Width - 1, srcImage.Height - 1); + srcImage.CopyTo(srcRect, destImage, new Point(0, 0), maskImage); + } + + /// + /// Copies a portion of the source image into a destination image. + /// See for further details. + /// + /// Source image. + /// Destination image. + /// Rectangle to copy. + public static void CopyTo(this Image srcImage, Image destImage, Rectangle rect) + { + if (srcImage.Width != destImage.Width || srcImage.Height != destImage.Height) + { + throw new ArgumentException(Image.ExceptionDescriptionSourceDestImageMismatch); + } + + srcImage.CopyTo(rect, destImage, new Point(rect.Left, rect.Right), null); + } + + /// + /// Copies a portion of a source image into a destination image. + /// See for further details. + /// + /// Source image. + /// Source rectangle to copy from. + /// Destination image. + /// Top left corner of destination image where to copy to. + public static void CopyTo(this Image srcImage, Rectangle srcRect, Image destImage, Point destTopLeftPoint) + { + if (srcImage.Width != destImage.Width || srcImage.Height != destImage.Height) + { + throw new System.Exception(Image.ExceptionDescriptionSourceDestImageMismatch); + } + + srcImage.CopyTo(srcRect, destImage, destTopLeftPoint, null); + } + + /// + /// Copies a portion of a source image into a destination image using the specified masking image. + /// Only pixels from the 'srcImage' inside the 'srcRect' are copied. If a 'maskImage' is specified + /// (it maybe null, in which case no mask is applied) then source pixels are only copied if their + /// corresponding mask pixel is > 0. The copied pixels are placed in the 'destImage' at a rectangle + /// the same size (potentially clipped by the 'destImage' boundaries) located at 'destTopLeftCorner'. + /// + /// The following picture may help clarify. In the picture '2' are pixels that are potentially copied + /// and 'x' are pixels in the 'maskImage' with values > 0. + /// + /// \verbatim + /// srcImage maskImage destImage + /// +-------------------------+ +-------------------------+ +-------------------------+ + /// | srcRect | | (srcRect) | | | + /// | +---------+ | | ........... | | | + /// | |222222222| | | . xxxx.xxxx | CopyTo | | + /// | |222222222| | + | . xxxxxx.xxxxxx | ========> | destTopLeftCorner | + /// | |222222222| | | . xxxxxxx.xxxxx | | O---------+ | + /// | +---------+ | | ........... | | | 2222| | + /// | | | | | | 222222| | + /// +-------------------------+ +-------------------------+ +-----------+---------+---+ + /// dropped pixels => . xxxxxxx. + /// due to being +.........+ + /// outside image + /// boundary + /// \endverbatim + /// . + /// + /// + /// Source image. + /// Source rectangle to copy from. + /// Destination image. + /// Top left corner of destination image where to copy to. + /// Masking image. If null then ignored. + public static void CopyTo(this Image srcImage, Rectangle srcRect, Image destImage, Point destTopLeftCorner, Image maskImage) + { + if (maskImage != null) + { + if (srcImage.Width != maskImage.Width || srcImage.Height != maskImage.Height) + { + throw new ArgumentException("Mask image size must match source image size"); + } + + if (maskImage.PixelFormat != PixelFormat.Gray_8bpp) + { + throw new ArgumentException("Mask image must be of type PixelFormat.Gray_8bpp"); + } + } + + // Clip source rectangle against source image size + int srcX = (srcRect.X < 0) ? 0 : srcRect.X; + int srcY = (srcRect.Y < 0) ? 0 : srcRect.Y; + int srcW = (srcRect.X + srcRect.Width > srcImage.Width) ? (srcImage.Width - srcRect.X) : srcRect.Width; + int srcH = (srcRect.Y + srcRect.Height > srcImage.Height) ? (srcImage.Height - srcRect.Y) : srcRect.Height; + + // Clip destination point against destination image + int dstX = (destTopLeftCorner.X < 0) ? 0 : destTopLeftCorner.X; + int dstY = (destTopLeftCorner.Y < 0) ? 0 : destTopLeftCorner.Y; + dstX = (dstX >= destImage.Width) ? destImage.Width - 1 : dstX; + dstY = (dstY >= destImage.Height) ? destImage.Height - 1 : dstY; + + // Next clip further if rect of that size would lie outside the destination image + srcW = (dstX + srcW > destImage.Width) ? (destImage.Width - dstX) : srcW; + srcH = (dstY + srcH > destImage.Height) ? (destImage.Height - dstY) : srcH; + + PixelFormat srcFormat = srcImage.PixelFormat; + PixelFormat dstFormat = destImage.PixelFormat; + System.IntPtr sourceBuffer = srcImage.ImageData; + System.IntPtr destBuffer = destImage.ImageData; + System.IntPtr maskBuffer = (maskImage != null) ? maskImage.ImageData : System.IntPtr.Zero; + unsafe + { + int srcBytesPerPixel = srcFormat.GetBytesPerPixel(); + int dstBytesPerPixel = dstFormat.GetBytesPerPixel(); + int maskBytesPerPixel = PixelFormat.Gray_8bpp.GetBytesPerPixel(); + byte* srcRow = (byte*)sourceBuffer.ToPointer() + (srcY * srcImage.Stride) + (srcX * srcBytesPerPixel); + byte* dstRow = (byte*)destBuffer.ToPointer() + (dstY * destImage.Stride) + (dstX * dstBytesPerPixel); + byte* maskRow = null; + if (maskImage != null) + { + maskRow = (byte*)maskBuffer.ToPointer() + (srcY * maskImage.Stride) + (srcX * maskBytesPerPixel); + } + + for (int i = 0; i < srcH; i++) + { + byte* srcCol = srcRow; + byte* dstCol = dstRow; + byte* maskCol = maskRow; + for (int j = 0; j < srcW; j++) + { + bool copyPixel = true; + if (maskImage != null) + { + if (*maskCol == 0) + { + copyPixel = false; + } + } + + if (copyPixel) + { + int red = 0; + int green = 0; + int blue = 0; + int alpha = 255; + switch (srcFormat) + { + case PixelFormat.Gray_8bpp: + red = green = blue = srcCol[0]; + break; + + case PixelFormat.Gray_16bpp: + red = green = blue = ((ushort*)srcCol)[0]; + break; + + case PixelFormat.BGR_24bpp: + blue = srcCol[0]; + green = srcCol[1]; + red = srcCol[2]; + break; + + case PixelFormat.BGRX_32bpp: + blue = srcCol[0]; + green = srcCol[1]; + red = srcCol[2]; + break; + + case PixelFormat.BGRA_32bpp: + blue = srcCol[0]; + green = srcCol[1]; + red = srcCol[2]; + alpha = srcCol[3]; + break; + + case PixelFormat.RGBA_64bpp: + red = ((ushort*)srcCol)[0]; + green = ((ushort*)srcCol)[1]; + blue = ((ushort*)srcCol)[2]; + alpha = ((ushort*)srcCol)[3]; + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + switch (dstFormat) + { + case PixelFormat.Gray_8bpp: + dstCol[0] = Operators.Rgb2Gray((byte)red, (byte)green, (byte)blue); + break; + + case PixelFormat.Gray_16bpp: + ((ushort*)dstCol)[0] = Operators.Rgb2Gray((ushort)red, (ushort)green, (ushort)blue); + break; + + case PixelFormat.BGR_24bpp: + case PixelFormat.BGRX_32bpp: + dstCol[0] = (byte)blue; + dstCol[1] = (byte)green; + dstCol[2] = (byte)red; + dstCol[3] = 255; + break; + + case PixelFormat.BGRA_32bpp: + dstCol[0] = (byte)blue; + dstCol[1] = (byte)green; + dstCol[2] = (byte)red; + dstCol[3] = (byte)alpha; + break; + + case PixelFormat.RGBA_64bpp: + ((ushort*)dstCol)[0] = (ushort)red; + ((ushort*)dstCol)[1] = (ushort)green; + ((ushort*)dstCol)[2] = (ushort)blue; + ((ushort*)dstCol)[3] = (ushort)alpha; + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + } + + srcCol += srcBytesPerPixel; + dstCol += dstBytesPerPixel; + maskCol += maskBytesPerPixel; + } + + srcRow += srcImage.Stride; + dstRow += destImage.Stride; + if (maskImage != null) + { + maskRow += maskImage.Stride; + } + } + } + } + } + + /// + /// Basic color transforms on images. + /// + public static partial class Operators + { + /// + /// Inverts each color component in an image. + /// + /// Source image to invert. + /// Returns an new image with the inverted results. + public static Image Invert(this Image srcImage) + { + Image invertedImage = new Image(srcImage.Width, srcImage.Height, srcImage.PixelFormat); + srcImage.Invert(invertedImage); + return invertedImage; + } + + /// + /// Inverts each color component in an image. + /// + /// Source image to invert. + /// Destination image where to store inverted results. + public static void Invert(this Image srcImage, Image destImage) + { + if (srcImage.Width != destImage.Width || srcImage.Height != destImage.Height) + { + throw new System.Exception(Image.ExceptionDescriptionSourceDestImageMismatch); + } + + unsafe + { + int srcBytesPerPixel = srcImage.PixelFormat.GetBytesPerPixel(); + int dstBytesPerPixel = destImage.PixelFormat.GetBytesPerPixel(); + byte* srcRow = (byte*)srcImage.ImageData.ToPointer(); + byte* dstRow = (byte*)destImage.ImageData.ToPointer(); + for (int i = 0; i < srcImage.Height; i++) + { + byte* srcCol = srcRow; + byte* dstCol = dstRow; + for (int j = 0; j < srcImage.Width; j++) + { + switch (srcImage.PixelFormat) + { + case PixelFormat.Gray_8bpp: + dstCol[0] = (byte)(255 - srcCol[0]); + break; + + case PixelFormat.Gray_16bpp: + ((ushort*)dstCol)[0] = (byte)(65535 - srcCol[0]); + break; + + case PixelFormat.BGR_24bpp: + dstCol[0] = (byte)(255 - srcCol[0]); + dstCol[1] = (byte)(255 - srcCol[1]); + dstCol[2] = (byte)(255 - srcCol[2]); + break; + + case PixelFormat.BGRX_32bpp: + dstCol[0] = (byte)(255 - srcCol[0]); + dstCol[1] = (byte)(255 - srcCol[1]); + dstCol[2] = (byte)(255 - srcCol[2]); + dstCol[3] = (byte)srcCol[3]; + break; + + case PixelFormat.BGRA_32bpp: + dstCol[0] = (byte)(255 - srcCol[0]); + dstCol[1] = (byte)(255 - srcCol[1]); + dstCol[2] = (byte)(255 - srcCol[2]); + dstCol[3] = (byte)srcCol[3]; + break; + + case PixelFormat.RGBA_64bpp: + dstCol[0] = (byte)(255 - srcCol[0]); + dstCol[1] = (byte)(255 - srcCol[1]); + dstCol[2] = (byte)(255 - srcCol[2]); + dstCol[3] = (byte)srcCol[3]; + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + srcCol += srcBytesPerPixel; + dstCol += dstBytesPerPixel; + } + + srcRow += srcImage.Stride; + dstRow += destImage.Stride; + } + } + } + + /// + /// Clears each color component in an image to the specified color. + /// + /// Image to clear. + /// Color to clear to. + public static void Clear(this Image image, Color clr) + { + unsafe + { + int srcBytesPerPixel = image.PixelFormat.GetBytesPerPixel(); + byte* srcRow = (byte*)image.ImageData.ToPointer(); + for (int i = 0; i < image.Height; i++) + { + byte* srcCol = srcRow; + for (int j = 0; j < image.Width; j++) + { + switch (image.PixelFormat) + { + case PixelFormat.Gray_8bpp: + srcCol[0] = Operators.Rgb2Gray(clr.R, clr.G, clr.B); + break; + + case PixelFormat.Gray_16bpp: + ((ushort*)srcCol)[0] = Operators.Rgb2Gray((ushort)clr.R, (ushort)clr.G, (ushort)clr.B); + break; + + case PixelFormat.BGR_24bpp: + srcCol[2] = clr.R; + srcCol[1] = clr.G; + srcCol[0] = clr.B; + break; + + case PixelFormat.BGRX_32bpp: + srcCol[2] = clr.R; + srcCol[1] = clr.G; + srcCol[0] = clr.B; + srcCol[3] = 255; + break; + + case PixelFormat.BGRA_32bpp: + srcCol[2] = clr.R; + srcCol[1] = clr.G; + srcCol[0] = clr.B; + srcCol[3] = clr.A; + break; + + case PixelFormat.RGBA_64bpp: + ((ushort*)srcCol)[3] = (ushort)((clr.R << 8) | clr.R); + ((ushort*)srcCol)[2] = (ushort)((clr.G << 8) | clr.G); + ((ushort*)srcCol)[1] = (ushort)((clr.B << 8) | clr.B); + ((ushort*)srcCol)[0] = (ushort)((clr.A << 8) | clr.A); + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + srcCol += srcBytesPerPixel; + } + + srcRow += image.Stride; + } + } + } + + /// + /// Extracts a single channel from the image and returns it as a gray scale image. + /// + /// Image to extract from. + /// Index of channel to extract from. This should be one of the following: ExtractRedChannel, ExtractGreenChannel, ExtractBlueChannel, or ExtractAlphaChannel. + /// Returns a new grayscale image containing the color from the specified channel in the original source image. + public static Image ExtractChannel(this Image image, int channel) + { + Image destImage = new Image(image.Width, image.Height, PixelFormat.Gray_8bpp); + image.ExtractChannel(destImage, channel); + return destImage; + } + + /// + /// Extracts a single channel from the image and returns it as a gray scale image. + /// + /// Image to extract from. + /// Image to write results to. + /// Index of channel to extract from. This should be one of the following: ExtractRedChannel, ExtractGreenChannel, ExtractBlueChannel, or ExtractAlphaChannel. + public static void ExtractChannel(this Image image, Image destImage, int channel) + { + if (image.Width != destImage.Width || image.Height != destImage.Height) + { + throw new InvalidOperationException(Image.ExceptionDescriptionSourceDestImageMismatch); + } + + if (destImage.PixelFormat != PixelFormat.Gray_8bpp) + { + throw new ArgumentException("Destination must be of pixel format type: Gray_8bpp."); + } + + if (image.PixelFormat != PixelFormat.BGRA_32bpp && + image.PixelFormat != PixelFormat.BGRX_32bpp && + image.PixelFormat != PixelFormat.BGR_24bpp) + { + throw new InvalidOperationException("Extract only supports the following pixel formats: BGRA_32bpp, BGRX_32bpp, and BGR_24bpp"); + } + + if (channel < 0 || + (image.PixelFormat != PixelFormat.BGR_24bpp && channel > 3) || + (image.PixelFormat == PixelFormat.BGR_24bpp && channel > 2)) + { + throw new ArgumentException("Unsupported channel"); + } + + unsafe + { + int srcBytesPerPixel = image.PixelFormat.GetBytesPerPixel(); + int dstBytesPerPixel = PixelFormat.Gray_8bpp.GetBytesPerPixel(); + byte* srcRow = (byte*)image.ImageData.ToPointer(); + byte* dstRow = (byte*)destImage.ImageData.ToPointer(); + for (int i = 0; i < image.Height; i++) + { + byte* srcCol = srcRow; + byte* dstCol = dstRow; + for (int j = 0; j < image.Width; j++) + { + dstCol[0] = srcCol[channel]; + srcCol += srcBytesPerPixel; + dstCol += dstBytesPerPixel; + } + + srcRow += image.Stride; + dstRow += destImage.Stride; + } + } + } + } + + /// + /// Imaging math operators. + /// + public static partial class Operators + { + /// + /// Performs per channel thresholding on the image. + /// + /// Image to be thresholded. + /// Threshold value. + /// Maximum value. + /// Type of thresholding to perform. + /// The thresholded image. + public static Image Threshold(this Image image, int threshold, int maxvalue, Threshold type) + { + Image thresholdedImage = new Image(image.Width, image.Height, image.PixelFormat); + image.Threshold(thresholdedImage, threshold, maxvalue, type); + return thresholdedImage; + } + + /// + /// Performs per channel thresholding on the image. + /// + /// Image to be thresholded. + /// Destination image where thresholded results are stored. + /// Threshold value. + /// Maximum value. + /// Type of thresholding to perform. + public static void Threshold(this Image srcImage, Image destImage, int threshold, int maxvalue, Threshold type) + { + unsafe + { + int bytesPerPixel = srcImage.PixelFormat.GetBytesPerPixel(); + byte* srcRow = (byte*)srcImage.ImageData.ToPointer(); + byte* dstRow = (byte*)destImage.ImageData.ToPointer(); + for (int i = 0; i < srcImage.Height; i++) + { + byte* srcCol = srcRow; + byte* dstCol = dstRow; + for (int j = 0; j < srcImage.Width; j++) + { + int r = 0, g = 0, b = 0, a = 255; + switch (srcImage.PixelFormat) + { + case PixelFormat.BGRA_32bpp: + b = srcCol[0]; + g = srcCol[1]; + r = srcCol[2]; + a = srcCol[3]; + break; + + case PixelFormat.BGRX_32bpp: + b = srcCol[0]; + g = srcCol[1]; + r = srcCol[2]; + break; + + case PixelFormat.BGR_24bpp: + b = srcCol[0]; + g = srcCol[1]; + r = srcCol[2]; + break; + + case PixelFormat.Gray_16bpp: + r = g = b = a = ((ushort*)srcCol)[0]; + break; + + case PixelFormat.Gray_8bpp: + r = g = b = a = srcCol[0]; + break; + + case PixelFormat.RGBA_64bpp: + r = ((ushort*)srcCol)[0]; + g = ((ushort*)srcCol)[1]; + b = ((ushort*)srcCol)[2]; + a = ((ushort*)srcCol)[3]; + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + switch (type) + { + case Imaging.Threshold.Binary: + r = (r > threshold) ? maxvalue : 0; + g = (g > threshold) ? maxvalue : 0; + b = (b > threshold) ? maxvalue : 0; + a = (a > threshold) ? maxvalue : 0; + break; + + case Imaging.Threshold.BinaryInv: + r = (r > threshold) ? 0 : maxvalue; + g = (g > threshold) ? 0 : maxvalue; + b = (b > threshold) ? 0 : maxvalue; + a = (a > threshold) ? 0 : maxvalue; + break; + + case Imaging.Threshold.Truncate: + r = (r > threshold) ? threshold : r; + g = (g > threshold) ? threshold : g; + b = (b > threshold) ? threshold : b; + a = (a > threshold) ? threshold : a; + break; + + case Imaging.Threshold.ToZero: + r = (r > threshold) ? r : 0; + g = (g > threshold) ? g : 0; + b = (b > threshold) ? b : 0; + a = (a > threshold) ? a : 0; + break; + + case Imaging.Threshold.ToZeroInv: + r = (r > threshold) ? 0 : r; + g = (g > threshold) ? 0 : g; + b = (b > threshold) ? 0 : b; + a = (a > threshold) ? 0 : a; + break; + + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + switch (destImage.PixelFormat) + { + case PixelFormat.BGRA_32bpp: + dstCol[0] = (byte)b; + dstCol[1] = (byte)g; + dstCol[2] = (byte)r; + dstCol[3] = (byte)a; + break; + + case PixelFormat.BGRX_32bpp: + dstCol[0] = (byte)b; + dstCol[1] = (byte)g; + dstCol[2] = (byte)r; + dstCol[3] = (byte)a; + break; + + case PixelFormat.BGR_24bpp: + dstCol[0] = (byte)b; + dstCol[1] = (byte)g; + dstCol[2] = (byte)r; + break; + + case PixelFormat.Gray_16bpp: + ((ushort*)srcCol)[0] = (ushort)r; + break; + + case PixelFormat.Gray_8bpp: + srcCol[0] = (byte)r; + break; + + case PixelFormat.RGBA_64bpp: + ((ushort*)srcCol)[0] = (ushort)r; + ((ushort*)srcCol)[1] = (ushort)g; + ((ushort*)srcCol)[2] = (ushort)b; + ((ushort*)srcCol)[3] = (ushort)a; + break; + + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + srcCol += bytesPerPixel; + dstCol += bytesPerPixel; + } + + srcRow += srcImage.Stride; + dstRow += destImage.Stride; + } + } + } + + /// + /// Computes the absolute difference between two images. + /// + /// First image. + /// Second image. + /// Difference image. + public static Image AbsDiff(this Image imageA, Image imageB) + { + Image diffImage = new Image(imageA.Width, imageA.Height, imageA.PixelFormat); + imageA.AbsDiff(imageB, diffImage); + return diffImage; + } + + /// + /// Computes the absolute difference between two images. + /// + /// First image. + /// Second image. + /// Destination image where to store difference image. + public static void AbsDiff(this Image imageA, Image imageB, Image destImage) + { + if (imageA.Width != imageB.Width || imageA.Height != imageB.Height || imageA.PixelFormat != imageB.PixelFormat) + { + throw new ArgumentException("Images sizes/types don't match"); + } + + unsafe + { + int bytesPerPixel = imageA.PixelFormat.GetBytesPerPixel(); + byte* srcRowA = (byte*)imageA.ImageData.ToPointer(); + byte* srcRowB = (byte*)imageB.ImageData.ToPointer(); + byte* dstRow = (byte*)destImage.ImageData.ToPointer(); + for (int i = 0; i < imageA.Height; i++) + { + byte* srcColA = srcRowA; + byte* srcColB = srcRowB; + byte* dstCol = dstRow; + int delta0, delta1, delta2, delta3; + for (int j = 0; j < imageA.Width; j++) + { + switch (imageA.PixelFormat) + { + case PixelFormat.BGRA_32bpp: + delta0 = srcColA[0] - srcColB[0]; + delta1 = srcColA[1] - srcColB[1]; + delta2 = srcColA[2] - srcColB[2]; + delta3 = srcColA[3] - srcColB[3]; + dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); + dstCol[1] = (byte)((delta1 < 0) ? -delta1 : delta1); + dstCol[2] = (byte)((delta2 < 0) ? -delta2 : delta2); + dstCol[3] = (byte)((delta3 < 0) ? -delta3 : delta3); + break; + + case PixelFormat.BGRX_32bpp: + delta0 = srcColA[0] - srcColB[0]; + delta1 = srcColA[1] - srcColB[1]; + delta2 = srcColA[2] - srcColB[2]; + dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); + dstCol[1] = (byte)((delta1 < 0) ? -delta1 : delta1); + dstCol[2] = (byte)((delta2 < 0) ? -delta2 : delta2); + dstCol[3] = 255; + break; + + case PixelFormat.BGR_24bpp: + delta0 = srcColA[0] - srcColB[0]; + delta1 = srcColA[1] - srcColB[1]; + delta2 = srcColA[2] - srcColB[2]; + dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); + dstCol[1] = (byte)((delta1 < 0) ? -delta1 : delta1); + dstCol[2] = (byte)((delta2 < 0) ? -delta2 : delta2); + break; + + case PixelFormat.Gray_16bpp: + delta0 = ((ushort*)srcColA)[0] - ((ushort*)srcColB)[0]; + ((ushort*)dstCol)[0] = (ushort)((delta0 < 0) ? -delta0 : delta0); + break; + + case PixelFormat.Gray_8bpp: + delta0 = srcColA[0] - srcColB[0]; + dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); + break; + + case PixelFormat.RGBA_64bpp: + delta0 = (ushort)(((ushort*)srcColA)[0] - ((ushort*)srcColB)[0]); + delta1 = (ushort)(((ushort*)srcColA)[1] - ((ushort*)srcColB)[1]); + delta2 = (ushort)(((ushort*)srcColA)[2] - ((ushort*)srcColB)[2]); + delta3 = (ushort)(((ushort*)srcColA)[3] - ((ushort*)srcColB)[3]); + ((ushort*)dstCol)[0] = (ushort)((delta0 < 0) ? -delta0 : delta0); + ((ushort*)dstCol)[1] = (ushort)((delta1 < 0) ? -delta1 : delta1); + ((ushort*)dstCol)[2] = (ushort)((delta2 < 0) ? -delta2 : delta2); + ((ushort*)dstCol)[3] = (ushort)((delta3 < 0) ? -delta3 : delta3); + break; + + case PixelFormat.Undefined: + default: + throw new ArgumentException(Image.ExceptionDescriptionUnexpectedPixelFormat); + } + + srcColA += bytesPerPixel; + srcColB += bytesPerPixel; + dstCol += bytesPerPixel; + } + + srcRowA += imageA.Stride; + srcRowB += imageB.Stride; + dstRow += destImage.Stride; + } + } + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ImagePool.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ImagePool.cs index f2848628..181659fc 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/ImagePool.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ImagePool.cs @@ -3,7 +3,7 @@ namespace Microsoft.Psi.Imaging { - using System; + using System.Drawing; using System.Drawing.Imaging; /// @@ -12,7 +12,7 @@ namespace Microsoft.Psi.Imaging public static class ImagePool { private static readonly KeyedSharedPool Instance = - new KeyedSharedPool(key => Image.Create(key.width, key.height, key.format)); + new KeyedSharedPool(key => new Image(key.width, key.height, key.format)); /// /// Gets or creates an image from the pool. @@ -29,29 +29,26 @@ namespace Microsoft.Psi.Imaging /// /// Gets or creates an image from the pool and initializes it with a managed Bitmap object. /// - /// A bitmap from which to copy the image data. - /// A shared image from the pool containing a copy of the image data from . - public static Shared GetOrCreate(System.Drawing.Bitmap image) + /// A bitmap from which to copy the image data. + /// A shared image from the pool containing a copy of the image data from . + public static Shared GetOrCreateFromBitmap(Bitmap bitmap) { - BitmapData sourceData = image.LockBits( - new System.Drawing.Rectangle(0, 0, image.Width, image.Height), + BitmapData sourceData = bitmap.LockBits( + new Rectangle(0, 0, bitmap.Width, bitmap.Height), ImageLockMode.ReadOnly, - image.PixelFormat); - Shared sharedImg = null; + bitmap.PixelFormat); + Shared sharedImage = null; try { - sharedImg = GetOrCreate(image.Width, image.Height, PixelFormatHelper.FromSystemPixelFormat(image.PixelFormat)); - unsafe - { - Buffer.MemoryCopy(sourceData.Scan0.ToPointer(), sharedImg.Resource.ImageData.ToPointer(), sourceData.Stride * sourceData.Height, sourceData.Stride * sourceData.Height); - } + sharedImage = GetOrCreate(bitmap.Width, bitmap.Height, PixelFormatHelper.FromSystemPixelFormat(bitmap.PixelFormat)); + sharedImage.Resource.CopyFrom(sourceData); } finally { - image.UnlockBits(sourceData); + bitmap.UnlockBits(sourceData); } - return sharedImg; + return sharedImage; } } } diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ImageTransformer.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ImageTransformer.cs index 2d968121..25d84d55 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/ImageTransformer.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ImageTransformer.cs @@ -9,17 +9,18 @@ namespace Microsoft.Psi.Imaging /// /// Defines the delegate used to perform an image transformation. /// - /// Source image to be transformed. - /// Destination for transformed image. - public delegate void TransformDelegate(Image src, Image dest); + /// Source image to be transformed. + /// Destination for transformed image. + public delegate void TransformDelegate(Image source, Image destination); /// /// Component that transforms an image given a specified transformer. /// public class ImageTransformer : ConsumerProducer, Shared> { - private TransformDelegate transformer; - private PixelFormat pixelFormat; + private readonly TransformDelegate transformer; + private readonly PixelFormat pixelFormat; + private System.Func> sharedImageAllocator; /// /// Initializes a new instance of the class. @@ -27,11 +28,14 @@ namespace Microsoft.Psi.Imaging /// Pipeline this component is a part of. /// Function for transforming the source image. /// Pixel format for destination image. - public ImageTransformer(Pipeline pipeline, TransformDelegate transformer, PixelFormat pixelFormat) + /// Optional image allocator for creating new shared image. + public ImageTransformer(Pipeline pipeline, TransformDelegate transformer, PixelFormat pixelFormat, System.Func> sharedImageAllocator = null) : base(pipeline) { this.transformer = transformer; this.pixelFormat = pixelFormat; + sharedImageAllocator ??= (width, height, pixelFormat) => ImagePool.GetOrCreate(width, height, pixelFormat); + this.sharedImageAllocator = sharedImageAllocator; } /// @@ -41,11 +45,9 @@ namespace Microsoft.Psi.Imaging /// Pipeline sample information. protected override void Receive(Shared sharedImage, Envelope e) { - using (var psiImageDest = ImagePool.GetOrCreate(sharedImage.Resource.Width, sharedImage.Resource.Height, this.pixelFormat)) - { - this.transformer(sharedImage.Resource, psiImageDest.Resource); - this.Out.Post(psiImageDest, e.OriginatingTime); - } + using var sharedResultImage = this.sharedImageAllocator (sharedImage.Resource.Width, sharedImage.Resource.Height, this.pixelFormat); + this.transformer(sharedImage.Resource, sharedResultImage.Resource); + this.Out.Post(sharedResultImage, e.OriginatingTime); } } } \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/Microsoft.Psi.Imaging.csproj b/Sources/Imaging/Microsoft.Psi.Imaging/Microsoft.Psi.Imaging.csproj index 6ab1e2d3..ca193375 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/Microsoft.Psi.Imaging.csproj +++ b/Sources/Imaging/Microsoft.Psi.Imaging/Microsoft.Psi.Imaging.csproj @@ -31,6 +31,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/Operators.cs b/Sources/Imaging/Microsoft.Psi.Imaging/Operators.cs deleted file mode 100644 index 795eb213..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging/Operators.cs +++ /dev/null @@ -1,1127 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -#pragma warning disable SA1402 // File may only contain a single class -#pragma warning disable SA1649 // File name must match first type name - -namespace Microsoft.Psi.Imaging -{ - using System.Drawing; - - /// - /// Sampling mode used by various imaging operators. - /// - public enum SamplingMode - { - /// - /// Sampling mode using nearest neighbor interpolation. - /// - Point, - - /// - /// Sampling mode using bilinear interpolation. - /// - Bilinear, - - /// - /// Sampling mode using bicubic interpolation. - /// - Bicubic, - } - - /// - /// Thresholding modes. - /// - public enum Threshold - { - /// - /// Thresholds pixels such that: - /// dst(x,y) = maxvalue if (src(x,y)>threshold) - /// = 0 otherwise - /// - Binary, - - /// - /// Thresholds pixels such that: - /// dst(x,y) = 0 if (src(x,y)>threshold) - /// = maxvalue otherwise - /// - BinaryInv, - - /// - /// Thresholds pixels such that: - /// dst(x,y) = threshold if (src(x,y)>threshold) - /// = src(x,y) otherwise - /// - Truncate, - - /// - /// Thresholds pixels such that: - /// dst(x,y) = src(x,y) if (src(x,y)>threshold) - /// = 0 otherwise - /// - ToZero, - - /// - /// Thresholds pixels such that: - /// dst(x,y) = 0 if (src(x,y)>threshold) - /// = src(x,y) otherwise - /// - ToZeroInv, - } - - /// - /// Axis along which to flip an image. - /// - public enum FlipMode - { - /// - /// Leave image unflipped - /// - None, - - /// - /// Flips image along the horizontal axis - /// - AlongHorizontalAxis, - - /// - /// Flips image along the vertical axis - /// - AlongVerticalAxis, - } - - /// - /// Various imaging operators. - /// - public static partial class Operators - { - /// - /// Flips an image along a specified axis. - /// - /// Image to flip. - /// Axis along which to flip. - /// A new flipped image. - public static Shared Flip(this Image image, FlipMode mode) - { - if (image.PixelFormat == PixelFormat.Gray_16bpp) - { - // We can't handle this through GDI. - Shared dstImage = ImagePool.GetOrCreate(image.Width, image.Height, image.PixelFormat); - unsafe - { - int srcBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(image.PixelFormat); - int dstBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(dstImage.Resource.PixelFormat); - byte* srcRow = (byte*)image.ImageData.ToPointer(); - byte* dstRow = (byte*)dstImage.Resource.ImageData.ToPointer(); - int ystep = dstImage.Resource.Stride; - if (mode == FlipMode.AlongHorizontalAxis) - { - dstRow += dstImage.Resource.Stride * (image.Height - 1); - ystep = -dstImage.Resource.Stride; - } - - int xstep = dstBytesPerPixel; - int xoffset = 0; - if (mode == FlipMode.AlongVerticalAxis) - { - xoffset = dstBytesPerPixel * (dstImage.Resource.Width - 1); - xstep = -dstBytesPerPixel; - } - - for (int i = 0; i < image.Height; i++) - { - byte* srcCol = srcRow; - byte* dstCol = dstRow + xoffset; - for (int j = 0; j < image.Width; j++) - { - ((ushort*)dstCol)[0] = ((ushort*)srcCol)[0]; - srcCol += srcBytesPerPixel; - dstCol += xstep; - } - - srcRow += image.Stride; - dstRow += ystep; - } - } - - return dstImage; - } - else - { - using (var bitmap = new Bitmap(image.Width, image.Height)) - { - using (var graphics = Graphics.FromImage(bitmap)) - { - switch (mode) - { - case FlipMode.AlongHorizontalAxis: - graphics.TranslateTransform(0.0f, image.Height - 1); - graphics.ScaleTransform(1.0f, -1.0f); - break; - - case FlipMode.AlongVerticalAxis: - graphics.TranslateTransform(image.Width - 1, 0.0f); - graphics.ScaleTransform(-1.0f, 1.0f); - break; - } - - using (var dstimage = image.ToManagedImage()) - { - graphics.DrawImage(dstimage, new Point(0, 0)); - } - - return ImagePool.GetOrCreate(bitmap); - } - } - } - } - - /// - /// Resizes an image by the specified scale factors using the specified sampling mode. - /// - /// Image to resize. - /// Scale factor to apply in X direction. - /// Scale factor to apply in Y direction. - /// Sampling mode for sampling of pixels. - /// Returns a new image scaled by the specified scale factors. - public static Shared Scale(this Image image, float scaleX, float scaleY, SamplingMode mode) - { - if (scaleX == 0.0 || scaleY == 0.0) - { - throw new System.Exception("Unexpected scale factors"); - } - - if (image.PixelFormat == PixelFormat.Gray_16bpp) - { - throw new System.NotSupportedException( - "Scaling 16bpp images is not currently supported. " + - "Convert to a supported format such as color or 8bpp grayscale first."); - } - - int dstWidth = (int)(image.Width * scaleX); - int dstHeight = (int)(image.Height * scaleY); - using (var bitmap = new Bitmap(dstWidth, dstHeight)) - { - using (var graphics = Graphics.FromImage(bitmap)) - { - graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; - switch (mode) - { - case SamplingMode.Point: - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; - break; - - case SamplingMode.Bilinear: - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - break; - - case SamplingMode.Bicubic: - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - break; - } - - graphics.ScaleTransform(scaleX, scaleY); - - using (var managedimg = image.ToManagedImage()) - { - graphics.DrawImage(managedimg, new Point(0, 0)); - } - - return ImagePool.GetOrCreate(bitmap); - } - } - } - - /// - /// Rotates an image. - /// - /// Image to rotate. - /// Number of degrees to rotate in counter clockwise direction. - /// Pixel resampling method. - /// Rotated image. - public static Shared Rotate(this Image image, float angleInDegrees, SamplingMode mode) - { - float ca = (float)System.Math.Cos(angleInDegrees * System.Math.PI / 180.0f); - float sa = (float)System.Math.Sin(angleInDegrees * System.Math.PI / 180.0f); - float minx = 0.0f; - float miny = 0.0f; - float maxx = 0.0f; - float maxy = 0.0f; - float x = image.Width - 1; - float y = 0.0f; - float nx = (x * ca) - (y * sa); - float ny = (x * sa) + (y * ca); - if (nx < minx) - { - minx = nx; - } - - if (nx > maxx) - { - maxx = nx; - } - - if (ny < miny) - { - miny = ny; - } - - if (ny > maxy) - { - maxy = ny; - } - - x = image.Width - 1; - y = image.Height - 1; - nx = (x * ca) - (y * sa); - ny = (x * sa) + (y * ca); - if (nx < minx) - { - minx = nx; - } - - if (nx > maxx) - { - maxx = nx; - } - - if (ny < miny) - { - miny = ny; - } - - if (ny > maxy) - { - maxy = ny; - } - - x = 0.0f; - y = image.Height - 1; - nx = (x * ca) - (y * sa); - ny = (x * sa) + (y * ca); - if (nx < minx) - { - minx = nx; - } - - if (nx > maxx) - { - maxx = nx; - } - - if (ny < miny) - { - miny = ny; - } - - if (ny > maxy) - { - maxy = ny; - } - - int dstWidth = (int)(maxx - minx + 1); - int dstHeight = (int)(maxy - miny + 1); - using (var bitmap = new Bitmap(dstWidth, dstHeight)) - { - using (var graphics = Graphics.FromImage(bitmap)) - { - graphics.CompositingMode = System.Drawing.Drawing2D.CompositingMode.SourceCopy; - switch (mode) - { - case SamplingMode.Point: - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighSpeed; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.NearestNeighbor; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighSpeed; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighSpeed; - break; - - case SamplingMode.Bilinear: - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.Bilinear; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - break; - - case SamplingMode.Bicubic: - graphics.CompositingQuality = System.Drawing.Drawing2D.CompositingQuality.HighQuality; - graphics.InterpolationMode = System.Drawing.Drawing2D.InterpolationMode.HighQualityBicubic; - graphics.SmoothingMode = System.Drawing.Drawing2D.SmoothingMode.HighQuality; - graphics.PixelOffsetMode = System.Drawing.Drawing2D.PixelOffsetMode.HighQuality; - break; - } - - graphics.TranslateTransform(-minx, -miny); - graphics.RotateTransform(angleInDegrees); - - using (var managedimg = image.ToManagedImage()) - { - graphics.DrawImage(managedimg, new Point(0, 0)); - } - - return ImagePool.GetOrCreate(bitmap); - } - } - } - } - - /// - /// Set of operators used for drawing on an image. - /// - public static partial class Operators - { - /// - /// Draws a rectangle at the specified pixel coordinates on the image. - /// - /// Image to draw on. - /// Pixel coordinates for rectangle. - /// Color to use for drawing. - /// Width of line. - public static void DrawRectangle(this Image image, Rectangle rect, Color color, int width) - { - using (Bitmap bm = image.ToManagedImage(false)) - { - using (var graphics = Graphics.FromImage(bm)) - { - using (var pen = new Pen(new SolidBrush(color))) - { - pen.Width = width; - graphics.DrawRectangle(pen, rect); - } - } - } - } - - /// - /// Draws a line from point p0 to p1 in pixel coordinates on the image. - /// - /// Image to draw on. - /// Pixel coordinates for start of line. - /// Pixel coordinates for end of line. - /// Color to use for drawing. - /// Width of line. - public static void DrawLine(this Image image, Point p0, Point p1, Color color, int width) - { - using (Bitmap bm = image.ToManagedImage(false)) - { - using (var graphics = Graphics.FromImage(bm)) - { - using (var pen = new Pen(new SolidBrush(color))) - { - pen.Width = width; - graphics.DrawLine(pen, p0, p1); - } - } - } - } - - /// - /// Draws a circle centered at the specified pixel (p0) with the specified radius. - /// - /// Image to draw on. - /// Pixel coordinates for center of circle. - /// Radius of the circle. - /// Color to use for drawing. - /// Width of line. - public static void DrawCircle(this Image image, Point p0, int radius, Color color, int width) - { - using (Bitmap bm = image.ToManagedImage(false)) - { - using (var graphics = Graphics.FromImage(bm)) - { - using (var pen = new Pen(new SolidBrush(color))) - { - pen.Width = width; - graphics.DrawEllipse(pen, p0.X - radius, p0.Y - radius, 2 * radius, 2 * radius); - } - } - } - } - - /// - /// Renders text on the image at the specified pixel (p0). - /// - /// Image to draw on. - /// Text to render. - /// Pixel coordinates for center of circle. - public static void DrawText(this Image image, string str, Point p0) - { - using (Bitmap bm = image.ToManagedImage(false)) - { - using (var graphics = Graphics.FromImage(bm)) - { - using (Font drawFont = new Font("Arial", 24)) - { - using (SolidBrush drawBrush = new SolidBrush(Color.Black)) - { - using (StringFormat drawFormat = new StringFormat()) - { - drawFormat.FormatFlags = 0; - graphics.DrawString(str, drawFont, drawBrush, p0.X, p0.Y, drawFormat); - } - } - } - } - } - } - } - - /// - /// Set of transforms for copying image data. - /// - public static partial class Operators - { - /// - /// Copies a source image into a destination image using the specified masking image. - /// Only pixels in the source image whose corresponding mask image pixels are > 0 - /// are copied to the destination image. - /// - /// Source image. - /// Destination image. - /// Masking image. - public static void CopyTo(this Image srcImage, Image dstImage, Image maskImage) - { - if (srcImage.Width != dstImage.Width || srcImage.Height != dstImage.Height) - { - throw new System.Exception("Source and destination images must be the same size"); - } - - Rectangle srcRect = new Rectangle(0, 0, srcImage.Width - 1, srcImage.Height - 1); - Rectangle dstRect = new Rectangle(0, 0, dstImage.Width - 1, dstImage.Height - 1); - srcImage.CopyTo(srcRect, dstImage, dstRect, maskImage); - } - - /// - /// Copies a source image into a destination image using the specified masking image. - /// Only pixels in the source image whose corresponding mask image pixels are > 0 - /// are copied to the destination image. Only pixels from the srcRect are copied - /// to the destination rect. - /// - /// Source image. - /// Destination image. - /// Rectangle to copy. - public static void CopyTo(this Image srcImage, Image dstImage, Rectangle rect) - { - if (srcImage.Width != dstImage.Width || srcImage.Height != dstImage.Height) - { - throw new System.Exception("Source and destination images must be the same size"); - } - - srcImage.CopyTo(rect, dstImage, rect, null); - } - - /// - /// Copies a source image into a destination image using the specified masking image. - /// Only pixels in the source image whose corresponding mask image pixels are > 0 - /// are copied to the destination image. Only pixels from the srcRect are copied - /// to the destination rect. - /// - /// Source image. - /// Source rectangle to copy from. - /// Destination image. - /// Destunatuin rectangle to copy to. - public static void CopyTo(this Image srcImage, Rectangle srcRect, Image dstImage, Rectangle dstRect) - { - if (srcImage.Width != dstImage.Width || srcImage.Height != dstImage.Height) - { - throw new System.Exception("Source and destination images must be the same size"); - } - - srcImage.CopyTo(srcRect, dstImage, dstRect, null); - } - - /// - /// Copies a source image into a destination image using the specified masking image. - /// Only pixels in the source image whose corresponding mask image pixels are > 0 - /// are copied to the destination image. Only pixels from the srcRect are copied - /// to the destination rect. - /// - /// Source image. - /// Source rectangle to copy from. - /// Destination image. - /// Destination rectangle to copy to. - /// Masking image. - public static void CopyTo(this Image srcImage, Rectangle srcRect, Image dstImage, Rectangle dstRect, Image maskImage) - { - if (srcRect.Width != dstRect.Width || srcRect.Height != dstRect.Height) - { - throw new System.Exception("Source and destination rectangles sizes must match"); - } - - if (maskImage != null) - { - if (srcImage.Width != maskImage.Width || srcImage.Height != maskImage.Height) - { - throw new System.Exception("Mask image size must match source image size"); - } - - if (maskImage.PixelFormat != PixelFormat.Gray_8bpp) - { - throw new System.Exception("Mask image must be of type PixelFormat.Gray_8bpp"); - } - } - - PixelFormat srcFormat = srcImage.PixelFormat; - PixelFormat dstFormat = dstImage.PixelFormat; - System.IntPtr srcBuffer = srcImage.ImageData; - System.IntPtr dstBuffer = dstImage.ImageData; - System.IntPtr maskBuffer = (maskImage != null) ? maskImage.ImageData : System.IntPtr.Zero; - unsafe - { - int srcBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(srcFormat); - int dstBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(dstFormat); - int maskBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(PixelFormat.Gray_8bpp); - byte* srcRow = (byte*)srcBuffer.ToPointer() + (srcRect.Y * srcImage.Stride) + (srcRect.X * srcBytesPerPixel); - byte* dstRow = (byte*)dstBuffer.ToPointer() + (dstRect.Y * dstImage.Stride) + (dstRect.X * dstBytesPerPixel); - byte* maskRow = null; - if (maskImage != null) - { - maskRow = (byte*)maskBuffer.ToPointer() + (srcRect.Y * maskImage.Stride) + (srcRect.X * maskBytesPerPixel); - } - - for (int i = 0; i < srcRect.Height; i++) - { - byte* srcCol = srcRow; - byte* dstCol = dstRow; - byte* maskCol = maskRow; - for (int j = 0; j < srcRect.Width; j++) - { - bool copyPixel = true; - if (maskImage != null) - { - if (*maskCol == 0) - { - copyPixel = false; - } - } - - if (copyPixel) - { - int red = 0; - int green = 0; - int blue = 0; - int alpha = 255; - switch (srcFormat) - { - case PixelFormat.Gray_8bpp: - red = green = blue = srcCol[0]; - break; - - case PixelFormat.Gray_16bpp: - red = green = blue = ((ushort*)srcCol)[0]; - break; - - case PixelFormat.BGR_24bpp: - blue = srcCol[0]; - green = srcCol[1]; - red = srcCol[2]; - break; - - case PixelFormat.BGRX_32bpp: - blue = srcCol[0]; - green = srcCol[1]; - red = srcCol[2]; - break; - - case PixelFormat.BGRA_32bpp: - blue = srcCol[0]; - green = srcCol[1]; - red = srcCol[2]; - alpha = srcCol[3]; - break; - - case PixelFormat.RGBA_64bpp: - red = ((ushort*)srcCol)[0]; - green = ((ushort*)srcCol)[1]; - blue = ((ushort*)srcCol)[2]; - alpha = ((ushort*)srcCol)[3]; - break; - } - - switch (dstFormat) - { - case PixelFormat.Gray_8bpp: - dstCol[0] = Image.Rgb2Gray((byte)red, (byte)green, (byte)blue); - break; - - case PixelFormat.Gray_16bpp: - ((ushort*)dstCol)[0] = Image.Rgb2Gray((ushort)red, (ushort)green, (ushort)blue); - break; - - case PixelFormat.BGR_24bpp: - case PixelFormat.BGRX_32bpp: - dstCol[0] = (byte)blue; - dstCol[1] = (byte)green; - dstCol[2] = (byte)red; - break; - - case PixelFormat.BGRA_32bpp: - dstCol[0] = (byte)blue; - dstCol[1] = (byte)green; - dstCol[2] = (byte)red; - dstCol[3] = (byte)alpha; - break; - - case PixelFormat.RGBA_64bpp: - ((ushort*)dstCol)[0] = (ushort)red; - ((ushort*)dstCol)[1] = (ushort)green; - ((ushort*)dstCol)[2] = (ushort)blue; - ((ushort*)dstCol)[3] = (ushort)alpha; - break; - } - } - - srcCol += srcBytesPerPixel; - dstCol += dstBytesPerPixel; - maskCol += maskBytesPerPixel; - } - - srcRow += srcImage.Stride; - dstRow += dstImage.Stride; - if (maskImage != null) - { - maskRow += maskImage.Stride; - } - } - } - } - } - - /// - /// Basic color transforms on images. - /// - public static partial class Operators - { - /// - /// Inverts an image. - /// - /// Image to invert. - /// Returns the inverted image. - public static Shared Invert(this Image image) - { - Shared dstImage = ImagePool.GetOrCreate(image.Width, image.Height, image.PixelFormat); - unsafe - { - int srcBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(image.PixelFormat); - int dstBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(dstImage.Resource.PixelFormat); - byte* srcRow = (byte*)image.ImageData.ToPointer(); - byte* dstRow = (byte*)dstImage.Resource.ImageData.ToPointer(); - for (int i = 0; i < image.Height; i++) - { - byte* srcCol = srcRow; - byte* dstCol = dstRow; - for (int j = 0; j < image.Width; j++) - { - switch (image.PixelFormat) - { - case PixelFormat.Gray_8bpp: - dstCol[0] = (byte)(255 - srcCol[0]); - break; - - case PixelFormat.Gray_16bpp: - ((ushort*)dstCol)[0] = (byte)(65535 - srcCol[0]); - break; - - case PixelFormat.BGR_24bpp: - dstCol[0] = (byte)(255 - srcCol[0]); - dstCol[1] = (byte)(255 - srcCol[1]); - dstCol[2] = (byte)(255 - srcCol[2]); - break; - - case PixelFormat.BGRX_32bpp: - dstCol[0] = (byte)(255 - srcCol[0]); - dstCol[1] = (byte)(255 - srcCol[1]); - dstCol[2] = (byte)(255 - srcCol[2]); - break; - - case PixelFormat.BGRA_32bpp: - dstCol[0] = (byte)(255 - srcCol[0]); - dstCol[1] = (byte)(255 - srcCol[1]); - dstCol[2] = (byte)(255 - srcCol[2]); - dstCol[3] = (byte)(255 - srcCol[3]); - break; - } - - srcCol += srcBytesPerPixel; - dstCol += dstBytesPerPixel; - } - - srcRow += image.Stride; - dstRow += dstImage.Resource.Stride; - } - } - - return dstImage; - } - - /// - /// Clears an image. - /// - /// Image to clear. - /// Color to clear to. - public static void Clear(this Image image, Color clr) - { - unsafe - { - int srcBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(image.PixelFormat); - byte* srcRow = (byte*)image.ImageData.ToPointer(); - for (int i = 0; i < image.Height; i++) - { - byte* srcCol = srcRow; - for (int j = 0; j < image.Width; j++) - { - switch (image.PixelFormat) - { - case PixelFormat.Gray_8bpp: - srcCol[0] = Image.Rgb2Gray(clr.R, clr.G, clr.B); - break; - - case PixelFormat.Gray_16bpp: - ((ushort*)srcCol)[0] = Image.Rgb2Gray((ushort)clr.R, (ushort)clr.G, (ushort)clr.B); - break; - - case PixelFormat.BGR_24bpp: - srcCol[2] = clr.R; - srcCol[1] = clr.G; - srcCol[0] = clr.B; - break; - - case PixelFormat.BGRX_32bpp: - srcCol[2] = clr.R; - srcCol[1] = clr.G; - srcCol[0] = clr.B; - break; - - case PixelFormat.BGRA_32bpp: - srcCol[3] = clr.R; - srcCol[2] = clr.G; - srcCol[1] = clr.B; - srcCol[0] = clr.A; - break; - } - - srcCol += srcBytesPerPixel; - } - - srcRow += image.Stride; - } - } - } - - /// - /// Extracts a single channel from the image and returns it as a gray scale image. - /// - /// Image to extract from. - /// Index of channel to extract from. - /// Returns a new grayscale image containing the color from the specified channel in the original source image. - public static Shared ExtractChannel(this Image image, int channel /* 0=red, 1=green, 2=blue, 3=alpha */) - { - if (image.PixelFormat != PixelFormat.BGRA_32bpp && - image.PixelFormat != PixelFormat.BGRX_32bpp && - image.PixelFormat != PixelFormat.BGR_24bpp) - { - throw new System.Exception("Extract only supports the following pixel formats: BGRA_32bpp, BGRX_32bpp, and BGR_24bpp"); - } - - if (channel < 0 || - (image.PixelFormat != PixelFormat.BGR_24bpp && channel > 3) || - (image.PixelFormat == PixelFormat.BGR_24bpp && channel > 2)) - { - throw new System.Exception("Unsupported channel"); - } - - Shared dstImage = ImagePool.GetOrCreate(image.Width, image.Height, PixelFormat.Gray_8bpp); - unsafe - { - int srcBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(image.PixelFormat); - int dstBytesPerPixel = PixelFormatHelper.GetBytesPerPixel(PixelFormat.Gray_8bpp); - byte* srcRow = (byte*)image.ImageData.ToPointer(); - byte* dstRow = (byte*)dstImage.Resource.ImageData.ToPointer(); - for (int i = 0; i < image.Height; i++) - { - byte* srcCol = srcRow; - byte* dstCol = dstRow; - for (int j = 0; j < image.Width; j++) - { - dstCol[0] = srcCol[channel]; - srcCol += srcBytesPerPixel; - dstCol += dstBytesPerPixel; - } - - srcRow += image.Stride; - dstRow += dstImage.Resource.Stride; - } - } - - return dstImage; - } - } - - /// - /// Imaging math operators. - /// - public static partial class Operators - { - /// - /// Performs per channel thresholding on the image. - /// - /// Image to be thresholded. - /// Threshold value. - /// Maximum value. - /// Type of thresholding to perform. - /// The thresholded image. - public static Shared Threshold(this Image image, int threshold, int maxvalue, Threshold type) - { - Shared dstImage = ImagePool.GetOrCreate(image.Width, image.Height, image.PixelFormat); - - unsafe - { - int bytesPerPixel = PixelFormatHelper.GetBytesPerPixel(image.PixelFormat); - byte* srcRow = (byte*)image.ImageData.ToPointer(); - byte* dstRow = (byte*)dstImage.Resource.ImageData.ToPointer(); - for (int i = 0; i < image.Height; i++) - { - byte* srcCol = srcRow; - byte* dstCol = dstRow; - for (int j = 0; j < image.Width; j++) - { - int r = 0, g = 0, b = 0, a = 0; - switch (image.PixelFormat) - { - case PixelFormat.BGRA_32bpp: - b = srcCol[0]; - g = srcCol[1]; - r = srcCol[2]; - a = srcCol[3]; - break; - - case PixelFormat.BGRX_32bpp: - b = srcCol[0]; - g = srcCol[1]; - r = srcCol[2]; - break; - - case PixelFormat.BGR_24bpp: - b = srcCol[0]; - g = srcCol[1]; - r = srcCol[2]; - break; - - case PixelFormat.Gray_16bpp: - r = g = b = a = ((ushort*)srcCol)[0]; - break; - - case PixelFormat.Gray_8bpp: - r = g = b = a = srcCol[0]; - break; - - case PixelFormat.RGBA_64bpp: - r = ((ushort*)srcCol)[0]; - g = ((ushort*)srcCol)[1]; - b = ((ushort*)srcCol)[2]; - a = ((ushort*)srcCol)[3]; - break; - - default: - break; - } - - switch (type) - { - case Imaging.Threshold.Binary: - r = (r > threshold) ? maxvalue : 0; - g = (g > threshold) ? maxvalue : 0; - b = (b > threshold) ? maxvalue : 0; - a = (a > threshold) ? maxvalue : 0; - break; - - case Imaging.Threshold.BinaryInv: - r = (r > threshold) ? 0 : maxvalue; - g = (g > threshold) ? 0 : maxvalue; - b = (b > threshold) ? 0 : maxvalue; - a = (a > threshold) ? 0 : maxvalue; - break; - - case Imaging.Threshold.Truncate: - r = (r > threshold) ? threshold : r; - g = (g > threshold) ? threshold : g; - b = (b > threshold) ? threshold : b; - a = (a > threshold) ? threshold : a; - break; - - case Imaging.Threshold.ToZero: - r = (r > threshold) ? r : 0; - g = (g > threshold) ? g : 0; - b = (b > threshold) ? b : 0; - a = (a > threshold) ? a : 0; - break; - - case Imaging.Threshold.ToZeroInv: - r = (r > threshold) ? 0 : r; - g = (g > threshold) ? 0 : g; - b = (b > threshold) ? 0 : b; - a = (a > threshold) ? 0 : a; - break; - } - - switch (image.PixelFormat) - { - case PixelFormat.BGRA_32bpp: - dstCol[0] = (byte)b; - dstCol[1] = (byte)g; - dstCol[2] = (byte)r; - dstCol[3] = (byte)a; - break; - - case PixelFormat.BGRX_32bpp: - dstCol[0] = (byte)b; - dstCol[1] = (byte)g; - dstCol[2] = (byte)r; - break; - - case PixelFormat.BGR_24bpp: - dstCol[0] = (byte)b; - dstCol[1] = (byte)g; - dstCol[2] = (byte)r; - break; - - case PixelFormat.Gray_16bpp: - ((ushort*)srcCol)[0] = (ushort)r; - break; - - case PixelFormat.Gray_8bpp: - srcCol[0] = (byte)r; - break; - - case PixelFormat.RGBA_64bpp: - ((ushort*)srcCol)[0] = (ushort)r; - ((ushort*)srcCol)[1] = (ushort)g; - ((ushort*)srcCol)[2] = (ushort)b; - ((ushort*)srcCol)[3] = (ushort)a; - break; - - default: - break; - } - - srcCol += bytesPerPixel; - dstCol += bytesPerPixel; - } - - srcRow += image.Stride; - dstRow += dstImage.Resource.Stride; - } - } - - return dstImage; - } - - /// - /// Computes the absolute difference between two images. - /// - /// First image. - /// Second image. - /// Difference image. - public static Shared AbsDiff(this Image imageA, Image imageB) - { - if (imageA.Width != imageB.Width || imageA.Height != imageB.Height || imageA.PixelFormat != imageB.PixelFormat) - { - throw new System.Exception("Images sizes/types don't match"); - } - - Shared dstImage = ImagePool.GetOrCreate(imageA.Width, imageA.Height, imageA.PixelFormat); - - unsafe - { - int bytesPerPixel = PixelFormatHelper.GetBytesPerPixel(imageA.PixelFormat); - byte* srcRowA = (byte*)imageA.ImageData.ToPointer(); - byte* srcRowB = (byte*)imageB.ImageData.ToPointer(); - byte* dstRow = (byte*)dstImage.Resource.ImageData.ToPointer(); - for (int i = 0; i < imageA.Height; i++) - { - byte* srcColA = srcRowA; - byte* srcColB = srcRowB; - byte* dstCol = dstRow; - int delta0, delta1, delta2, delta3; - for (int j = 0; j < imageA.Width; j++) - { - switch (imageA.PixelFormat) - { - case PixelFormat.BGRA_32bpp: - delta0 = srcColA[0] - srcColB[0]; - delta1 = srcColA[1] - srcColB[1]; - delta2 = srcColA[2] - srcColB[2]; - delta3 = srcColA[3] - srcColB[3]; - dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); - dstCol[1] = (byte)((delta1 < 0) ? -delta1 : delta1); - dstCol[2] = (byte)((delta2 < 0) ? -delta2 : delta2); - dstCol[3] = (byte)((delta3 < 0) ? -delta3 : delta3); - break; - - case PixelFormat.BGRX_32bpp: - delta0 = srcColA[0] - srcColB[0]; - delta1 = srcColA[1] - srcColB[1]; - delta2 = srcColA[2] - srcColB[2]; - dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); - dstCol[1] = (byte)((delta1 < 0) ? -delta1 : delta1); - dstCol[2] = (byte)((delta2 < 0) ? -delta2 : delta2); - break; - - case PixelFormat.BGR_24bpp: - delta0 = srcColA[0] - srcColB[0]; - delta1 = srcColA[1] - srcColB[1]; - delta2 = srcColA[2] - srcColB[2]; - dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); - dstCol[1] = (byte)((delta1 < 0) ? -delta1 : delta1); - dstCol[2] = (byte)((delta2 < 0) ? -delta2 : delta2); - break; - - case PixelFormat.Gray_16bpp: - delta0 = ((ushort*)srcColA)[0] - ((ushort*)srcColB)[0]; - ((ushort*)dstCol)[0] = (ushort)((delta0 < 0) ? -delta0 : delta0); - break; - - case PixelFormat.Gray_8bpp: - delta0 = srcColA[0] - srcColB[0]; - dstCol[0] = (byte)((delta0 < 0) ? -delta0 : delta0); - break; - - case PixelFormat.RGBA_64bpp: - delta0 = (ushort)(((ushort*)srcColA)[0] - ((ushort*)srcColB)[0]); - delta1 = (ushort)(((ushort*)srcColA)[1] - ((ushort*)srcColB)[1]); - delta2 = (ushort)(((ushort*)srcColA)[2] - ((ushort*)srcColB)[2]); - delta3 = (ushort)(((ushort*)srcColA)[3] - ((ushort*)srcColB)[3]); - ((ushort*)dstCol)[0] = (ushort)((delta0 < 0) ? -delta0 : delta0); - ((ushort*)dstCol)[1] = (ushort)((delta1 < 0) ? -delta1 : delta1); - ((ushort*)dstCol)[2] = (ushort)((delta2 < 0) ? -delta2 : delta2); - ((ushort*)dstCol)[3] = (ushort)((delta3 < 0) ? -delta3 : delta3); - break; - - default: - throw new System.Exception("Unexpected image format"); - } - - srcColA += bytesPerPixel; - srcColB += bytesPerPixel; - dstCol += bytesPerPixel; - } - - srcRowA += imageA.Stride; - srcRowB += imageB.Stride; - dstRow += dstImage.Resource.Stride; - } - } - - return dstImage; - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormat.cs b/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormat.cs deleted file mode 100644 index fb429bf7..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormat.cs +++ /dev/null @@ -1,202 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -#pragma warning disable SA1402 // File may only contain a single class -#pragma warning disable SA1649 // File name must match first type name - -namespace Microsoft.Psi.Imaging -{ - using System; - - /// - /// PixelFormat defines. - /// - public enum PixelFormat - { - /// - /// Used when the pixel format isn't defined. - /// - Undefined, - - /// - /// Defines an grayscale image where each pixel is 8 bits. - /// - Gray_8bpp, - - /// - /// Defines an grayscale image where each pixel is 16 bits. - /// - Gray_16bpp, - - /// - /// Defines an color image format where each red/green/blue component is 8 bits. - /// The byte order in memory is: bb gg rr. - /// - BGR_24bpp, - - /// - /// Defines an color image format where each red/green/blue component is 8 bits. - /// The byte order in memory is: bb gg rr xx. - /// - BGRX_32bpp, - - /// - /// Defines an color image format where each red/green/blue/alpha component is 8 bits. - /// The byte order in memory is: bb gg rr aa. - /// - BGRA_32bpp, - - /// - /// Defines an color image format where each red/green/blue/alpha component is 16 bits. - /// The byte order in memory is: rrrr gggg bbbb aaaa. - /// - RGBA_64bpp, - } - - /// - /// Defines a set of extensions for getting info about a PixelFormat. - /// - public static class PixelFormatExtensions - { - /// - /// Returns the number of bits per pixel for a given pixel format. - /// - /// Pixel format for which to find bits per pixel. - /// Number of bits per pixel for the given pixel format. - public static int GetBitsPerPixel(this PixelFormat pixelFormat) - { - return PixelFormatHelper.GetBytesPerPixel(pixelFormat) * 8; - } - - /// - /// Returns the number of bytes per pixel for a given pixel format. - /// - /// Pixel format for which to find bytes per pixel. - /// Number of bytes per pixel for the given pixel format. - public static int GetBytesPerPixel(this PixelFormat pixelFormat) - { - return PixelFormatHelper.GetBytesPerPixel(pixelFormat); - } - } - - /// - /// Set of static functions for manipulating pixel formats. - /// - public static class PixelFormatHelper - { - /// - /// Converts from a system pixel format into a Psi.Imaging pixel format. - /// - /// System pixel format to be converted. - /// Psi.Imaging pixel format that matches the specified system pixel format. - public static PixelFormat FromSystemPixelFormat(System.Drawing.Imaging.PixelFormat pf) - { - if (pf == System.Drawing.Imaging.PixelFormat.Format24bppRgb) - { - return PixelFormat.BGR_24bpp; - } - - if (pf == System.Drawing.Imaging.PixelFormat.Format32bppRgb) - { - return PixelFormat.BGRX_32bpp; - } - - if (pf == System.Drawing.Imaging.PixelFormat.Format8bppIndexed) - { - return PixelFormat.Gray_8bpp; - } - - if (pf == System.Drawing.Imaging.PixelFormat.Format16bppGrayScale) - { - return PixelFormat.Gray_16bpp; - } - - if (pf == System.Drawing.Imaging.PixelFormat.Format32bppArgb) - { - return PixelFormat.BGRA_32bpp; - } - - if (pf == System.Drawing.Imaging.PixelFormat.Format64bppArgb) - { - return PixelFormat.RGBA_64bpp; - } - - throw new Exception("Unsupported pixel format"); - } - - /// - /// Converts from a Psi.Imaging PixelFormat to a System.Drawing.Imaging.PixelFormat. - /// - /// Pixel format to convert. - /// The system pixel format that corresponds to the Psi.Imaging pixel format. - public static System.Drawing.Imaging.PixelFormat ToSystemPixelFormat(PixelFormat pf) - { - switch (pf) - { - case PixelFormat.BGR_24bpp: - return System.Drawing.Imaging.PixelFormat.Format24bppRgb; - - case PixelFormat.BGRX_32bpp: - return System.Drawing.Imaging.PixelFormat.Format32bppRgb; - - case PixelFormat.Gray_8bpp: - return System.Drawing.Imaging.PixelFormat.Format8bppIndexed; - - case PixelFormat.Gray_16bpp: - return System.Drawing.Imaging.PixelFormat.Format16bppGrayScale; - - case PixelFormat.BGRA_32bpp: - return System.Drawing.Imaging.PixelFormat.Format32bppArgb; - - case PixelFormat.RGBA_64bpp: - return System.Drawing.Imaging.PixelFormat.Format64bppArgb; - - default: - throw new Exception("Unknown pixel format?!"); - } - } - - /// - /// Returns number of bits/pixel for the specified pixel format. - /// - /// Pixel format for which to detemine number of bits/pxiel. - /// Number of bits per pixel in specified format. - public static int GetBitsPerPixel(PixelFormat pixelFormat) - { - return GetBytesPerPixel(pixelFormat) * 8; - } - - /// - /// Returns number of bytes/pixel for the specified pixel format. - /// - /// Pixel format for which to determine number of bytes. - /// Number of bytes in each pixel of the specified format. - public static int GetBytesPerPixel(PixelFormat pixelFormat) - { - switch (pixelFormat) - { - case PixelFormat.Gray_8bpp: - return 1; - - case PixelFormat.Gray_16bpp: - return 2; - - case PixelFormat.BGR_24bpp: - return 3; - - case PixelFormat.BGRX_32bpp: - case PixelFormat.BGRA_32bpp: - return 4; - - case PixelFormat.RGBA_64bpp: - return 8; - - case PixelFormat.Undefined: - return 0; - - default: - throw new Exception("Unknown pixel format"); - } - } - } -} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatExtensions.cs b/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatExtensions.cs new file mode 100644 index 00000000..5a76fce2 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatExtensions.cs @@ -0,0 +1,96 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + /// + /// Defines the various pixel formats supported by the type. + /// + public enum PixelFormat + { + /// + /// Used when the pixel format isn't defined. + /// + Undefined, + + /// + /// Defines an grayscale image where each pixel is 8 bits. + /// + Gray_8bpp, + + /// + /// Defines an grayscale image where each pixel is 16 bits. + /// + Gray_16bpp, + + /// + /// Defines an color image format where each red/green/blue component is 8 bits. + /// The byte order in memory is: bb gg rr. + /// + BGR_24bpp, + + /// + /// Defines an color image format where each red/green/blue component is 8 bits. + /// The byte order in memory is: bb gg rr xx. + /// + BGRX_32bpp, + + /// + /// Defines an color image format where each red/green/blue/alpha component is 8 bits. + /// The byte order in memory is: bb gg rr aa. + /// + BGRA_32bpp, + + /// + /// Defines an color image format where each red/green/blue/alpha component is 16 bits. + /// The byte order in memory is: rrrr gggg bbbb aaaa. + /// + RGBA_64bpp, + } + + /// + /// Defines a set of extensions for getting info about a PixelFormat. + /// + public static class PixelFormatExtensions + { + /// + /// Returns the number of bits per pixel for a given pixel format. + /// + /// Pixel format for which to find bits per pixel. + /// Number of bits per pixel for the given pixel format. + public static int GetBitsPerPixel(this PixelFormat pixelFormat) + { + return PixelFormatHelper.GetBytesPerPixel(pixelFormat) * 8; + } + + /// + /// Returns the number of bytes per pixel for a given pixel format. + /// + /// Pixel format for which to find bytes per pixel. + /// Number of bytes per pixel for the given pixel format. + public static int GetBytesPerPixel(this PixelFormat pixelFormat) + { + return PixelFormatHelper.GetBytesPerPixel(pixelFormat); + } + + /// + /// Returns the pixel format correspond to the specified pixel format. + /// + /// The pixel format. + /// The corresponding pixel format. + public static PixelFormat ToPsiPixelFormat(this System.Drawing.Imaging.PixelFormat pixelFormat) + { + return PixelFormatHelper.FromSystemPixelFormat(pixelFormat); + } + + /// + /// Returns the pixel format correspond to the specified pixel format. + /// + /// The pixel format. + /// The corresponding pixel format. + public static System.Drawing.Imaging.PixelFormat ToSystemPixelFormat(this PixelFormat pixelFormat) + { + return PixelFormatHelper.ToSystemPixelFormat(pixelFormat); + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatHelper.cs b/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatHelper.cs new file mode 100644 index 00000000..497e1744 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/PixelFormatHelper.cs @@ -0,0 +1,108 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + + /// + /// Set of static functions for manipulating pixel formats. + /// + internal static class PixelFormatHelper + { + /// + /// Converts from a system pixel format into a Psi.Imaging pixel format. + /// + /// System pixel format to be converted. + /// Psi.Imaging pixel format that matches the specified system pixel format. + internal static PixelFormat FromSystemPixelFormat(System.Drawing.Imaging.PixelFormat pixelFormat) + { + if (pixelFormat == System.Drawing.Imaging.PixelFormat.Format24bppRgb) + { + return PixelFormat.BGR_24bpp; + } + + if (pixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppRgb) + { + return PixelFormat.BGRX_32bpp; + } + + if (pixelFormat == System.Drawing.Imaging.PixelFormat.Format8bppIndexed) + { + return PixelFormat.Gray_8bpp; + } + + if (pixelFormat == System.Drawing.Imaging.PixelFormat.Format16bppGrayScale) + { + return PixelFormat.Gray_16bpp; + } + + if (pixelFormat == System.Drawing.Imaging.PixelFormat.Format32bppArgb) + { + return PixelFormat.BGRA_32bpp; + } + + if (pixelFormat == System.Drawing.Imaging.PixelFormat.Format64bppArgb) + { + return PixelFormat.RGBA_64bpp; + } + + throw new NotSupportedException($"The {pixelFormat} pixel format is not currently supported by {nameof(Microsoft.Psi.Imaging)}."); + } + + /// + /// Converts from a Psi.Imaging PixelFormat to a System.Drawing.Imaging.PixelFormat. + /// + /// Pixel format to convert. + /// The system pixel format that corresponds to the Psi.Imaging pixel format. + internal static System.Drawing.Imaging.PixelFormat ToSystemPixelFormat(PixelFormat pixelFormat) + { + return pixelFormat switch + { + PixelFormat.BGR_24bpp => System.Drawing.Imaging.PixelFormat.Format24bppRgb, + PixelFormat.BGRX_32bpp => System.Drawing.Imaging.PixelFormat.Format32bppRgb, + PixelFormat.Gray_8bpp => System.Drawing.Imaging.PixelFormat.Format8bppIndexed, + PixelFormat.Gray_16bpp => System.Drawing.Imaging.PixelFormat.Format16bppGrayScale, + PixelFormat.BGRA_32bpp => System.Drawing.Imaging.PixelFormat.Format32bppArgb, + PixelFormat.RGBA_64bpp => System.Drawing.Imaging.PixelFormat.Format64bppArgb, + PixelFormat.Undefined => + throw new InvalidOperationException( + $"Cannot convert {nameof(PixelFormat.Undefined)} pixel format to {nameof(System.Drawing.Imaging.PixelFormat)}."), + _ => throw new Exception("Unknown pixel format."), + }; + } + + /// + /// Returns number of bytes/pixel for the specified pixel format. + /// + /// Pixel format for which to determine number of bytes. + /// Number of bytes in each pixel of the specified format. + internal static int GetBytesPerPixel(PixelFormat pixelFormat) + { + switch (pixelFormat) + { + case PixelFormat.Gray_8bpp: + return 1; + + case PixelFormat.Gray_16bpp: + return 2; + + case PixelFormat.BGR_24bpp: + return 3; + + case PixelFormat.BGRX_32bpp: + case PixelFormat.BGRA_32bpp: + return 4; + + case PixelFormat.RGBA_64bpp: + return 8; + + case PixelFormat.Undefined: + return 0; + + default: + throw new ArgumentException("Unknown pixel format"); + } + } + } +} diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/PsiImaging.cs b/Sources/Imaging/Microsoft.Psi.Imaging/PsiImaging.cs deleted file mode 100644 index afee2dd6..00000000 --- a/Sources/Imaging/Microsoft.Psi.Imaging/PsiImaging.cs +++ /dev/null @@ -1,162 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Imaging -{ - using System; - using System.Drawing; - using System.Linq; - - /// - /// Implements stream operator methods for Imaging. - /// - public static partial class Operators - { - /// - /// Converts the source image to a different pixel format. - /// - /// The source stream. - /// The pixel format to convert to. - /// An optional delivery policy. - /// The resulting stream. - public static IProducer> Convert(this IProducer> source, PixelFormat pixelFormat, DeliveryPolicy> deliveryPolicy = null) - { - return source.PipeTo(new ToPixelFormat(source.Out.Pipeline, pixelFormat), deliveryPolicy); - } - - /// - /// Converts an image to a different pixel format using the specified transformer. - /// - /// Source image to compress. - /// Method for converting an image sample. - /// Pixel format to use for converted image. - /// An optional delivery policy. - /// Returns a producer that generates the transformed images. - public static IProducer> Transform(this IProducer> source, TransformDelegate transformer, PixelFormat pixelFormat, DeliveryPolicy> deliveryPolicy = null) - { - return source.PipeTo(new ImageTransformer(source.Out.Pipeline, transformer, pixelFormat), deliveryPolicy); - } - - /// - /// Crops an image using the specified rectangle. - /// - /// Source of image and rectangle samples. - /// An optional delivery policy. - /// Returns a producer generating new cropped image samples. - public static IProducer> Crop(this IProducer<(Shared, Rectangle)> source, DeliveryPolicy<(Shared, Rectangle)> deliveryPolicy = null) - { - return source.Process<(Shared, Rectangle), Shared>( - (rectWithImage, env, e) => - { - using (var croppedImage = rectWithImage.Item1.Resource.Crop( - rectWithImage.Item2.Left, - rectWithImage.Item2.Top, - rectWithImage.Item2.Width, - rectWithImage.Item2.Height)) - { - e.Post(croppedImage, env.OriginatingTime); - } - }, deliveryPolicy); - } - - /// - /// Converts an image to grayscale. - /// - /// Image producer to use as source images. - /// An optional delivery policy. - /// Producers of grayscale images. - public static IProducer> ToGray(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) - { - return Convert(source, PixelFormat.Gray_8bpp, deliveryPolicy); - } - - /// - /// Resizes an image. - /// - /// Image to scale. - /// Final width of desired output. - /// Final height of desired output. - /// An optional delivery policy. - /// Returns a producer that generates resized images. - public static IProducer> Resize(this IProducer> source, float finalWidth, float finalHeight, DeliveryPolicy> deliveryPolicy = null) - { - return source.Process, Shared>( - (image, env, emitter) => - { - float scaleX = finalWidth / image.Resource.Width; - float scaleY = finalHeight / image.Resource.Height; - using (var resizedImage = image.Resource.Scale(scaleX, scaleY, SamplingMode.Bilinear)) - { - emitter.Post(resizedImage, env.OriginatingTime); - } - }, deliveryPolicy); - } - - /// - /// Flips an image about the horizontal or vertical axis. - /// - /// Image to flip. - /// Axis about which to flip. - /// An optional delivery policy. - /// A producer that generates flip images. - public static IProducer> Flip(this IProducer> source, FlipMode mode, DeliveryPolicy> deliveryPolicy = null) - { - if (mode == FlipMode.None) - { - // just post original image in the case of a no-op - return source.Process, Shared>( - (image, env, emitter) => emitter.Post(image, env.OriginatingTime), deliveryPolicy); - } - else - { - return source.Process, Shared>( - (image, env, emitter) => - { - using (var flippedImage = image.Resource.Flip(mode)) - { - emitter.Post(flippedImage, env.OriginatingTime); - } - }, deliveryPolicy); - } - } - - /// - /// Computes the absolute difference between two images. - /// - /// Images to diff. - /// An optional delivery policy. - /// Producer that returns the difference image. - public static IProducer> AbsDiff(this IProducer<(Shared, Shared)> sources, DeliveryPolicy<(Shared, Shared)> deliveryPolicy = null) - { - return sources.Process, Shared>, Shared>( - (images, env, e) => - { - using (var destImage = images.Item1.Resource.AbsDiff(images.Item2.Resource)) - { - e.Post(destImage, env.OriginatingTime); - } - }, deliveryPolicy); - } - - /// - /// Thresholds the image. See Threshold for what modes of thresholding are available. - /// - /// Images to threshold. - /// Threshold value. - /// Maximum value. - /// Type of thresholding to perform. - /// An optional delivery policy. - /// Producer that returns the difference image. - public static IProducer> Threshold(this IProducer> image, int threshold, int maxvalue, Threshold thresholdType, DeliveryPolicy> deliveryPolicy = null) - { - return image.Process, Shared>( - (srcimage, env, e) => - { - using (var destImage = srcimage.Resource.Threshold(threshold, maxvalue, thresholdType)) - { - e.Post(destImage, env.OriginatingTime); - } - }, deliveryPolicy); - } - } -} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/StreamOperators.cs b/Sources/Imaging/Microsoft.Psi.Imaging/StreamOperators.cs new file mode 100644 index 00000000..14b7c5b1 --- /dev/null +++ b/Sources/Imaging/Microsoft.Psi.Imaging/StreamOperators.cs @@ -0,0 +1,587 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Imaging +{ + using System; + using System.Drawing; + using Microsoft.Psi.Components; + + /// + /// Implements operators for processing streams of images. + /// + public static partial class Operators + { + /// + /// Converts a stream of images into a stream of depth images. + /// + /// A producer of images. + /// An optional delivery policy. + /// Optional image allocator for creating new shared depth image. + /// A corresponding stream of depth images. + /// The images in the source stream need to be in format. + public static IProducer> ToDepthImage(this IProducer> source, DeliveryPolicy> deliveryPolicy = null, Func> sharedDepthImageAllocator = null) + { + sharedDepthImageAllocator ??= DepthImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var sharedDepthImage = sharedDepthImageAllocator(sharedImage.Resource.Width, sharedImage.Resource.Height); + sharedDepthImage.Resource.CopyFrom(sharedImage.Resource); + emitter.Post(sharedDepthImage, envelope.OriginatingTime); + }, + deliveryPolicy); + } + + /// + /// Converts a stream of depth images into a stream of format images. + /// + /// A producer of depth images. + /// An optional delivery policy. + /// Optional image allocator for creating new shared depth image. + /// A corresponding stream of images. + public static IProducer> ToImage(this IProducer> source, DeliveryPolicy> deliveryPolicy = null, Func> sharedDepthImageAllocator = null) + { + sharedDepthImageAllocator ??= (width, height) => ImagePool.GetOrCreate(width, height, PixelFormat.Gray_16bpp); + return source.Process, Shared>( + (sharedDepthImage, envelope, emitter) => + { + using var sharedImage = sharedDepthImageAllocator(sharedDepthImage.Resource.Width, sharedDepthImage.Resource.Height); + sharedImage.Resource.CopyFrom(sharedDepthImage.Resource); + emitter.Post(sharedImage, envelope.OriginatingTime); + }, + deliveryPolicy); + } + + /// + /// Converts the source image to a different pixel format. + /// + /// The source stream. + /// The pixel format to convert to. + /// An optional delivery policy. + /// Optional image allocator for creating new shared image. + /// The resulting stream. + public static IProducer> ToPixelFormat(this IProducer> source, PixelFormat pixelFormat, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + return source.PipeTo(new ToPixelFormat(source.Out.Pipeline, pixelFormat, sharedImageAllocator), deliveryPolicy); + } + + /// + /// Converts a shared image to a different pixel format using the specified transformer. + /// + /// Source image to compress. + /// Method for converting an image sample. + /// Pixel format to use for converted image. + /// An optional delivery policy. + /// Optional image allocator for creating new shared image. + /// Returns a producer that generates the transformed images. + public static IProducer> Transform(this IProducer> source, TransformDelegate transformer, PixelFormat pixelFormat, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + return source.PipeTo(new ImageTransformer(source.Out.Pipeline, transformer, pixelFormat, sharedImageAllocator), deliveryPolicy); + } + + /// + /// Crops a shared depth image using the specified rectangle. + /// + /// Source of image and rectangle samples. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer generating new cropped image samples. + public static IProducer> Crop(this IProducer<(Shared, Rectangle)> source, DeliveryPolicy<(Shared, Rectangle)> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process<(Shared, Rectangle), Shared>( + (tupleOfSharedImageAndRectangle, envelope, emitter) => + { + using var croppedSharedImage = sharedImageAllocator(tupleOfSharedImageAndRectangle.Item2.Width, tupleOfSharedImageAndRectangle.Item2.Height, tupleOfSharedImageAndRectangle.Item1.Resource.PixelFormat); + tupleOfSharedImageAndRectangle.Item1.Resource.Crop( + croppedSharedImage.Resource, + tupleOfSharedImageAndRectangle.Item2.Left, + tupleOfSharedImageAndRectangle.Item2.Top, + tupleOfSharedImageAndRectangle.Item2.Width, + tupleOfSharedImageAndRectangle.Item2.Height); + emitter.Post(croppedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Crops a shared image using the specified rectangle. + /// + /// Source of image and rectangle samples. + /// An optional delivery policy. + /// Optional image allocator to create new shared depth image. + /// Returns a producer generating new cropped image samples. + public static IProducer> Crop(this IProducer<(Shared, Rectangle)> source, DeliveryPolicy<(Shared, Rectangle)> deliveryPolicy = null, Func> sharedDepthImageAllocator = null) + { + sharedDepthImageAllocator ??= DepthImagePool.GetOrCreate; + return source.Process<(Shared, Rectangle), Shared>( + (tupleOfSharedImageAndRectangle, envelope, emitter) => + { + using var croppedSharedImage = sharedDepthImageAllocator(tupleOfSharedImageAndRectangle.Item2.Width, tupleOfSharedImageAndRectangle.Item2.Height); + tupleOfSharedImageAndRectangle.Item1.Resource.Crop( + croppedSharedImage.Resource, + tupleOfSharedImageAndRectangle.Item2.Left, + tupleOfSharedImageAndRectangle.Item2.Top, + tupleOfSharedImageAndRectangle.Item2.Width, + tupleOfSharedImageAndRectangle.Item2.Height); + emitter.Post(croppedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Convert a producer of depth images into pseudo-colorized images, where more distant pixels are blue, and closer pixels are reddish. + /// + /// Source producer of depth images. + /// A tuple indicating the range (MinValue, MaxValue) of the depth values in the image. + /// An optional delivery policy. + /// Optional image allocator to create new shared images (in format). + /// A producer of pseudo-colorized images. + public static IProducer> PseudoColorize( + this IProducer> source, + (ushort MinValue, ushort MaxValue) range, + DeliveryPolicy> deliveryPolicy = null, + Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= (width, height) => ImagePool.GetOrCreate(width, height, PixelFormat.BGR_24bpp); + return source.Process, Shared>( + (sharedDepthImage, envelope, emitter) => + { + using var colorizedImage = sharedImageAllocator(sharedDepthImage.Resource.Width, sharedDepthImage.Resource.Height); + sharedDepthImage.Resource.PseudoColorize(colorizedImage.Resource, range); + emitter.Post(colorizedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Converts a shared image to grayscale. + /// + /// Image producer to use as source images. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Producers of grayscale images. + public static IProducer> ToGray(this IProducer> source, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + return source.ToPixelFormat(PixelFormat.Gray_8bpp, deliveryPolicy, sharedImageAllocator); + } + + /// + /// Resizes a shared image. + /// + /// Image to scale. + /// Final width of desired output. + /// Final height of desired output. + /// Method for sampling pixels when rescaling. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates resized images. + public static IProducer> Resize(this IProducer> source, float finalWidth, float finalHeight, SamplingMode samplingMode = SamplingMode.Bilinear, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var resizedSharedImage = sharedImageAllocator((int)finalWidth, (int)finalHeight, sharedImage.Resource.PixelFormat); + sharedImage.Resource.Resize(resizedSharedImage.Resource, finalWidth, finalHeight, samplingMode); + emitter.Post(resizedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Scales a shared by the specified scale factors. + /// + /// Image to scale. + /// Scale factor for X. + /// Scale factor for Y. + /// Method for sampling pixels when rescaling. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates resized images. + public static IProducer> Scale(this IProducer> source, float scaleX, float scaleY, SamplingMode samplingMode = SamplingMode.Bilinear, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + int finalWidth = (int)(sharedImage.Resource.Width * scaleX); + int finalHeight = (int)(sharedImage.Resource.Height * scaleY); + using var scaledSharedImage = sharedImageAllocator(finalWidth, finalHeight, sharedImage.Resource.PixelFormat); + sharedImage.Resource.Scale(scaledSharedImage.Resource, scaleX, scaleY, samplingMode); + emitter.Post(scaledSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Flips a shared image about the horizontal or vertical axis. + /// + /// Image to flip. + /// Axis about which to flip. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// A producer that generates flip images. + public static IProducer> Flip(this IProducer> source, FlipMode mode, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + if (mode == FlipMode.None) + { + // just post original image in the case of a no-op + return source; + } + else + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var flippedSharedImage = sharedImageAllocator(sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat); + sharedImage.Resource.Flip(flippedSharedImage.Resource, mode); + emitter.Post(flippedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + } + + /// + /// Scales a shared image by the specified scale factors. + /// + /// Image to scale. + /// Angle for rotation specified in degrees. + /// Sampling mode to use when sampling pixels. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates rotated images. + public static IProducer> Rotate(this IProducer> source, float angleInDegrees, SamplingMode samplingMode, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + DetermineRotatedWidthHeight( + sharedImage.Resource.Width, + sharedImage.Resource.Height, + angleInDegrees, + out int rotatedWidth, + out int rotateHeight, + out float originx, + out float originy); + using var rotatedSharedImage = sharedImageAllocator(rotatedWidth, rotateHeight, sharedImage.Resource.PixelFormat); + rotatedSharedImage.Resource.Clear(Color.Black); + sharedImage.Resource.Rotate(rotatedSharedImage.Resource, angleInDegrees, samplingMode); + emitter.Post(rotatedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Draws a rectangle over a shared image. + /// + /// Image to draw rectangle on. + /// Pixel coordinates for rectangle. + /// Color to use when drawing the rectangle. + /// Line width (in pixels) of each side of the rectangle. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates images overdrawn with a rectangle. + public static IProducer> DrawRectangle(this IProducer> source, Rectangle rect, Color color, int width, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var drawRectSharedImage = sharedImageAllocator(sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat); + drawRectSharedImage.Resource.CopyFrom(sharedImage.Resource); + drawRectSharedImage.Resource.DrawRectangle(rect, color, width); + emitter.Post(drawRectSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Draws a line over a shared image. + /// + /// Image to draw line on. + /// Pixel coordinates for one end of the line. + /// Pixel coordinates for the other end of the line. + /// Color to use when drawing the line. + /// Line width (in pixels). + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates images overdrawn with a line. + public static IProducer> DrawLine(this IProducer> source, Point p0, Point p1, Color color, int width, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var drawLineSharedImage = sharedImageAllocator(sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat); + drawLineSharedImage.Resource.CopyFrom(sharedImage.Resource); + drawLineSharedImage.Resource.DrawLine(p0, p1, color, width); + emitter.Post(drawLineSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Draws a circle over a shared image. + /// + /// Image to draw circle on. + /// Center of circle (in pixels). + /// Radius of circle (in pixels). + /// Color to use when drawing the circle. + /// Line width (in pixels). + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates images overdrawn with a circle. + public static IProducer> DrawCircle(this IProducer> source, Point p0, int radius, Color color, int width, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var drawCircleSharedImage = sharedImageAllocator(sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat); + drawCircleSharedImage.Resource.CopyFrom(sharedImage.Resource); + drawCircleSharedImage.Resource.DrawCircle(p0, radius, color, width); + emitter.Post(drawCircleSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Draws a piece of text over a shared image. + /// + /// Image to draw text on. + /// Text to render. + /// Coordinates for start of text (in pixels). + /// Color to use while drawing text. + /// Name of font to use. Optional. + /// Size of font. Optional. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Returns a producer that generates images overdrawn with text. + public static IProducer> DrawText(this IProducer> source, string text, Point p0, Color color, string font = null, float fontSize = 24.0f, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sharedImage, envelope, emitter) => + { + using var drawTextSharedImage = sharedImageAllocator(sharedImage.Resource.Width, sharedImage.Resource.Height, sharedImage.Resource.PixelFormat); + drawTextSharedImage.Resource.CopyFrom(sharedImage.Resource); + drawTextSharedImage.Resource.DrawText(text, p0, color, font, fontSize); + emitter.Post(drawTextSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Inverts each color channel in a shared image. + /// + /// Images to invert. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Producer that returns the inverted image. + public static IProducer> Invert(this IProducer> source, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sourceImage, envelope, emitter) => + { + using var invertedSharedImage = sharedImageAllocator(sourceImage.Resource.Width, sourceImage.Resource.Height, sourceImage.Resource.PixelFormat); + sourceImage.Resource.Invert(invertedSharedImage.Resource); + emitter.Post(invertedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Clears a shared image to the specified color. + /// + /// Images to clear. + /// Color to set image to. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Producer that returns the cleared image. + public static IProducer> Clear(this IProducer> source, Color clr, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sourceImage, envelope, emitter) => + { + using var clearedSharedImage = sharedImageAllocator(sourceImage.Resource.Width, sourceImage.Resource.Height, sourceImage.Resource.PixelFormat); + clearedSharedImage.Resource.Clear(clr); + emitter.Post(clearedSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Extracts a color channel from a shared image. Returned image is of type Gray_8bpp. + /// + /// Images to extract channel from. + /// Index of which channel to extract. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Producer that returns the extracted channel as a gray scale image. + public static IProducer> ExtractChannel(this IProducer> source, int channel, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return source.Process, Shared>( + (sourceImage, envelope, emitter) => + { + using var channelSharedImage = sharedImageAllocator(sourceImage.Resource.Width, sourceImage.Resource.Height, PixelFormat.Gray_8bpp); + sourceImage.Resource.ExtractChannel(channelSharedImage.Resource, channel); + emitter.Post(channelSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Computes the absolute difference between two images. + /// + /// Images to diff. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Producer that returns the difference image. + public static IProducer> AbsDiff(this IProducer<(Shared, Shared)> sources, DeliveryPolicy<(Shared, Shared)> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return sources.Process<(Shared, Shared), Shared>( + (tupleOfSharedImages, envelope, emitter) => + { + using var absdiffSharedImage = sharedImageAllocator(tupleOfSharedImages.Item1.Resource.Width, tupleOfSharedImages.Item1.Resource.Height, tupleOfSharedImages.Item1.Resource.PixelFormat); + tupleOfSharedImages.Item1.Resource.AbsDiff(tupleOfSharedImages.Item2.Resource, absdiffSharedImage.Resource); + emitter.Post(absdiffSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Thresholds the image. See Threshold for what modes of thresholding are available. + /// + /// Images to threshold. + /// Threshold value. + /// Maximum value. + /// Type of thresholding to perform. + /// An optional delivery policy. + /// Optional image allocator to create new shared image. + /// Producer that returns the difference image. + public static IProducer> Threshold(this IProducer> image, int threshold, int maxvalue, Threshold thresholdType, DeliveryPolicy> deliveryPolicy = null, Func> sharedImageAllocator = null) + { + sharedImageAllocator ??= ImagePool.GetOrCreate; + return image.Process, Shared>( + (sharedSourceImage, envelope, emitter) => + { + using var thresholdSharedImage = sharedImageAllocator(sharedSourceImage.Resource.Width, sharedSourceImage.Resource.Height, sharedSourceImage.Resource.PixelFormat); + sharedSourceImage.Resource.Threshold(thresholdSharedImage.Resource, threshold, maxvalue, thresholdType); + emitter.Post(thresholdSharedImage, envelope.OriginatingTime); + }, deliveryPolicy); + } + + /// + /// Encodes a shared image using a specified encoder component. + /// + /// A producer of images to encode. + /// Constructor function that returns an encoder component given a pipeline. + /// An optional delivery policy. + /// A producer that generates the encoded images. + public static IProducer> Encode( + this IProducer> source, + Func, Shared>> encoderConstructor, + DeliveryPolicy> deliveryPolicy = null) + { + return source.PipeTo(encoderConstructor(source.Out.Pipeline), deliveryPolicy); + } + + /// + /// Encodes a shared image using a specified image-to-stream encoder. + /// + /// A producer of images to encode. + /// The image-to-stream encoder to use when encoding images. + /// An optional delivery policy. + /// A producer that generates the encoded images. + public static IProducer> Encode( + this IProducer> source, + IImageToStreamEncoder encoder, + DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(p => new ImageEncoder(p, encoder), deliveryPolicy); + } + + /// + /// Decodes an encoded image using a specified decoder component. + /// + /// A producer of images to decode. + /// Constructor function that returns a decoder component given a pipeline. + /// An optional delivery policy. + /// A producer that generates the decoded images. + public static IProducer> Decode( + this IProducer> source, + Func, Shared>> decoderConstructor, + DeliveryPolicy> deliveryPolicy = null) + { + return source.PipeTo(decoderConstructor(source.Out.Pipeline), deliveryPolicy); + } + + /// + /// Decodes an encoded image using a specified image-from-stream decoder. + /// + /// A producer of images to decode. + /// The image-from-stream decoder to use when decoding images. + /// An optional delivery policy. + /// A producer that generates the decoded images. + public static IProducer> Decode( + this IProducer> source, + IImageFromStreamDecoder decoder, + DeliveryPolicy> deliveryPolicy = null) + { + return source.Decode(p => new ImageDecoder(p, decoder), deliveryPolicy); + } + + /// + /// Encodes a depth image using a specified encoder component. + /// + /// A producer of depth images to encode. + /// Constructor function that returns an encoder component given a pipeline. + /// An optional delivery policy. + /// A producer that generates the encoded depth images. + public static IProducer> Encode( + this IProducer> source, + Func, Shared>> encoderConstructor, + DeliveryPolicy> deliveryPolicy = null) + { + return source.PipeTo(encoderConstructor(source.Out.Pipeline), deliveryPolicy); + } + + /// + /// Encodes a depth image using a specified depth-image-to-stream encoder. + /// + /// A producer of depth images to encode. + /// The depth image encoder to use. + /// An optional delivery policy. + /// A producer that generates the encoded depth images. + public static IProducer> Encode( + this IProducer> source, + IDepthImageToStreamEncoder encoder, + DeliveryPolicy> deliveryPolicy = null) + { + return source.Encode(p => new DepthImageEncoder(p, encoder), deliveryPolicy); + } + + /// + /// Decodes a depth image using a specified decoder component. + /// + /// A producer of depth images to decode. + /// Constructor function that returns a decoder component given a pipeline. + /// An optional delivery policy. + /// A producer that generates the decoded depth images. + public static IProducer> Decode( + this IProducer> source, + Func, Shared>> decoderConstructor, + DeliveryPolicy> deliveryPolicy = null) + { + return source.PipeTo(decoderConstructor(source.Out.Pipeline), deliveryPolicy); + } + + /// + /// Decodes a depth image using a specified depth-image-from-stream decoder. + /// + /// A producer of depth images to decode. + /// The depth image decoder to use. + /// An optional delivery policy. + /// A producer that generates the decoded depth images. + public static IProducer> Decode( + this IProducer> source, + IDepthImageFromStreamDecoder decoder, + DeliveryPolicy> deliveryPolicy = null) + { + return source.Decode(p => new DepthImageDecoder(p, decoder), deliveryPolicy); + } + } +} \ No newline at end of file diff --git a/Sources/Imaging/Microsoft.Psi.Imaging/ToPixelFormat.cs b/Sources/Imaging/Microsoft.Psi.Imaging/ToPixelFormat.cs index cbf96b5a..7ea31b0e 100644 --- a/Sources/Imaging/Microsoft.Psi.Imaging/ToPixelFormat.cs +++ b/Sources/Imaging/Microsoft.Psi.Imaging/ToPixelFormat.cs @@ -7,21 +7,25 @@ namespace Microsoft.Psi.Imaging using Microsoft.Psi.Components; /// - /// Pipeline component that converts an Image to a different format. + /// Pipeline component that converts an shared Image to a different format. /// internal class ToPixelFormat : ConsumerProducer, Shared> { - private PixelFormat pixelFormat; + private readonly PixelFormat pixelFormat; + private System.Func> sharedImageAllocator; /// /// Initializes a new instance of the class. /// - /// The pipline. - /// The pixel format to conver to. - internal ToPixelFormat(Pipeline pipeline, PixelFormat pixelFormat) + /// The pipeline. + /// The pixel format to convert to. + /// Optional image allocator for creating new shared image. + internal ToPixelFormat(Pipeline pipeline, PixelFormat pixelFormat, System.Func> sharedImageAllocator = null) : base(pipeline) { this.pixelFormat = pixelFormat; + sharedImageAllocator ??= (width, height, pixelFormat) => ImagePool.GetOrCreate(width, height, pixelFormat); + this.sharedImageAllocator = sharedImageAllocator; } /// @@ -38,11 +42,9 @@ namespace Microsoft.Psi.Imaging } else { - using (var image = ImagePool.GetOrCreate(sharedImage.Resource.Width, sharedImage.Resource.Height, this.pixelFormat)) - { - sharedImage.Resource.CopyTo(image.Resource); - this.Out.Post(image, e.OriginatingTime); - } + using var image = this.sharedImageAllocator (sharedImage.Resource.Width, sharedImage.Resource.Height, this.pixelFormat); + sharedImage.Resource.CopyTo(image.Resource); + this.Out.Post(image, e.OriginatingTime); } } } diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/ImageTester.cs b/Sources/Imaging/Test.Psi.Imaging.Windows/ImageTester.cs index 8774de39..dae1a291 100644 --- a/Sources/Imaging/Test.Psi.Imaging.Windows/ImageTester.cs +++ b/Sources/Imaging/Test.Psi.Imaging.Windows/ImageTester.cs @@ -6,22 +6,234 @@ namespace Test.Psi.Imaging { using System; - using System.IO; - using System.Windows.Media.Imaging; using Microsoft.Psi; + using Microsoft.Psi.Common; using Microsoft.Psi.Imaging; + using Microsoft.Psi.Serialization; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class ImageTester { - private Image testImage = Image.FromManagedImage(Properties.Resources.TestImage); - private Image testImage_0_0_200_100 = Image.FromManagedImage(Properties.Resources.TestImage_Crop_0_0_200_100); - private Image testImage_153_57_103_199 = Image.FromManagedImage(Properties.Resources.TestImage_Crop_153_57_103_199); - private Image testImage_73_41_59_37 = Image.FromManagedImage(Properties.Resources.TestImage_Crop_73_41_59_37); - private Image testImage_50_25 = Image.FromManagedImage(Properties.Resources.TestImage_Scale_50_25); - private Image testImage_150_125 = Image.FromManagedImage(Properties.Resources.TestImage_Scale_150_125); - private Image testImage_25_200 = Image.FromManagedImage(Properties.Resources.TestImage_Scale_25_200); + private Image testImage = Image.FromBitmap(Properties.Resources.TestImage); + private Image testImage2 = Image.FromBitmap(Properties.Resources.TestImage2); + private Image testImage2_Threshold = Image.FromBitmap(Properties.Resources.TestImage2_Threshold); + private Image testImage2_RedChannel = Image.FromBitmap(Properties.Resources.TestImage2_RedChannel); + private Image testImage2_GreenChannel = Image.FromBitmap(Properties.Resources.TestImage2_GreenChannel); + private Image testImage2_BlueChannel = Image.FromBitmap(Properties.Resources.TestImage2_BlueChannel); + private Image testImage2_CopyImage = Image.FromBitmap(Properties.Resources.TestImage2_CopyImage); + private Image testImage2_Invert = Image.FromBitmap(Properties.Resources.TestImage2_Invert); + private Image testImage2_Mask = Image.FromBitmap(Properties.Resources.TestImage2_Mask); + private Image testImage2_FlipHoriz = Image.FromBitmap(Properties.Resources.TestImage2_FlipHoriz); + private Image testImage2_FlipVert = Image.FromBitmap(Properties.Resources.TestImage2_FlipVert); + private Image testImage2_Rotate_Neg10 = Image.FromBitmap(Properties.Resources.TestImage2_Rotate_Neg10); + private Image testImage2_Rotate_110 = Image.FromBitmap(Properties.Resources.TestImage2_Rotate_110); + private Image testImage2_DrawRect = Image.FromBitmap(Properties.Resources.TestImage2_DrawRect); + private Image testImage2_DrawLine = Image.FromBitmap(Properties.Resources.TestImage2_DrawLine); + private Image testImage2_DrawCircle = Image.FromBitmap(Properties.Resources.TestImage2_DrawCircle); + private Image testImage2_DrawText = Image.FromBitmap(Properties.Resources.TestImage2_DrawText); + private Image testImage2_AbsDiff = Image.FromBitmap(Properties.Resources.TestImage2_AbsDiff); + private Image testImage_0_0_200_100 = Image.FromBitmap(Properties.Resources.TestImage_Crop_0_0_200_100); + private Image testImage_153_57_103_199 = Image.FromBitmap(Properties.Resources.TestImage_Crop_153_57_103_199); + private Image testImage_73_41_59_37 = Image.FromBitmap(Properties.Resources.TestImage_Crop_73_41_59_37); + private Image testImage_50_25_Cubic = Image.FromBitmap(Properties.Resources.TestImage_Scale_50_25_Cubic); + private Image testImage_150_125_Point = Image.FromBitmap(Properties.Resources.TestImage_Scale_150_125_Point); + private Image testImage_25_200_Linear = Image.FromBitmap(Properties.Resources.TestImage_Scale_25_200_Linear); + + [TestMethod] + [Timeout(60000)] + public void Image_FlipViaOperator() + { + using (var pipeline = Pipeline.Create("FlipViaOperator")) + { + using (var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat)) + { + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Flip(FlipMode.None).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2, img.Resource); + }); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Flip(FlipMode.AlongHorizontalAxis).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_FlipHoriz, img.Resource); + }); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Flip(FlipMode.AlongVerticalAxis).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_FlipVert, img.Resource); + }); + pipeline.Run(); + } + } + } + + [TestMethod] + [Timeout(60000)] + public void Image_RotateViaOperator() + { + using (var pipeline = Pipeline.Create("RotateViaOperator")) + { + using (var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat)) + { + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Rotate(-10.0f, SamplingMode.Point).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_Rotate_Neg10, img.Resource); + }); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Rotate(110.0f, SamplingMode.Point).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_Rotate_110, img.Resource); + }); + pipeline.Run(); + } + } + } + + [TestMethod] + [Timeout(60000)] + public void Image_DrawRectangleViaOperator() + { + using (var pipeline = Pipeline.Create("DrawRectangleViaOperator")) + { + using (var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat)) + { + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).DrawRectangle(new System.Drawing.Rectangle(20, 20, 255, 255), System.Drawing.Color.White, 3).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_DrawRect, img.Resource); + }); + pipeline.Run(); + } + } + } + + [TestMethod] + [Timeout(60000)] + public void Image_DrawLineViaOperator() + { + using (var pipeline = Pipeline.Create("DrawLineViaOperator")) + { + using (var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat)) + { + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).DrawLine(new System.Drawing.Point(0, 0), new System.Drawing.Point(255, 255), System.Drawing.Color.White, 3).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_DrawLine, img.Resource); + }); + pipeline.Run(); + } + } + } + + [TestMethod] + [Timeout(60000)] + public void Image_DrawCircleViaOperator() + { + using (var pipeline = Pipeline.Create("DrawCircleViaOperator")) + { + using (var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat)) + { + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).DrawCircle(new System.Drawing.Point(250, 250), 100, System.Drawing.Color.White, 3).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_DrawCircle, img.Resource); + }); + pipeline.Run(); + } + } + } + + [TestMethod] + [Timeout(60000)] + public void Image_DrawTextViaOperator() + { + using (var pipeline = Pipeline.Create("DrawTextViaOperator")) + { + using (var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat)) + { + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).DrawText("Testing", new System.Drawing.Point(100, 100), System.Drawing.Color.White).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_DrawText, img.Resource); + }); + pipeline.Run(); + } + } + } + + [TestMethod] + [Timeout(60000)] + public void Image_CopyImage() + { + using var destImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat); + destImage.Resource.Clear(System.Drawing.Color.Black); + System.Drawing.Rectangle rect = new System.Drawing.Rectangle(50, 300, 100, 255); + this.testImage2.CopyTo(rect, destImage.Resource, new System.Drawing.Point(-10, 0), this.testImage2_Mask); + this.AssertAreImagesEqual(this.testImage2_CopyImage, destImage.Resource); + } + + [TestMethod] + [Timeout(60000)] + public void Image_Invert() + { + using var pipeline = Pipeline.Create("ImageInvert"); + using var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat); + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Invert().Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_Invert, img.Resource); + }); + pipeline.Run(); + } + + [TestMethod] + [Timeout(60000)] + public void Image_AbsDiff() + { + using var pipeline = Pipeline.Create("ImageAbsDiff"); + using var sharedImage = ImagePool.GetOrCreate(this.testImage2_DrawCircle.Width, this.testImage2_DrawCircle.Height, this.testImage2_DrawCircle.PixelFormat); + this.testImage2_DrawCircle.CopyTo(sharedImage.Resource); + using var sharedImage2 = ImagePool.GetOrCreate(this.testImage2_DrawRect.Width, this.testImage2_DrawRect.Height, this.testImage2_DrawRect.PixelFormat); + this.testImage2_DrawRect.CopyTo(sharedImage2.Resource); + Generators.Sequence(pipeline, new[] { (sharedImage, sharedImage2) }, default, null, keepOpen: false).AbsDiff().Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_AbsDiff, img.Resource); + }); + pipeline.Run(); + } + + [TestMethod] + [Timeout(60000)] + public void Image_Threshold() + { + using var pipeline = Pipeline.Create("ImageThreshold"); + using var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat); + this.testImage2.CopyTo(sharedImage.Resource); + Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false).Threshold(10, 170, Threshold.Binary).Do((img) => + { + this.AssertAreImagesEqual(this.testImage2_Threshold, img.Resource); + }); + pipeline.Run(); + } + + [TestMethod] + [Timeout(60000)] + public void Image_ExtractChannels() + { + using var pipeline = Pipeline.Create("ImageExtractChannel"); + using var sharedImage = ImagePool.GetOrCreate(this.testImage2.Width, this.testImage2.Height, this.testImage2.PixelFormat); + this.testImage2.CopyTo(sharedImage.Resource); + var seq = Generators.Sequence(pipeline, new[] { sharedImage }, default, null, keepOpen: false); + var rchannel = seq.ExtractChannel(0); + var gchannel = seq.ExtractChannel(1); + var bchannel = seq.ExtractChannel(2); + rchannel.Join(gchannel.Join(bchannel)).Do((imgs) => + { + this.AssertAreImagesEqual(this.testImage2_RedChannel, imgs.Item1.Resource); + this.AssertAreImagesEqual(this.testImage2_GreenChannel, imgs.Item2.Resource); + this.AssertAreImagesEqual(this.testImage2_BlueChannel, imgs.Item3.Resource); + }); + pipeline.Run(); + } [TestMethod] [Timeout(60000)] @@ -97,25 +309,25 @@ namespace Test.Psi.Imaging // Crop the entire image region (a no-op) and verify that the original image is preserved using (var croppedImage = this.testImage.Crop(0, 0, this.testImage.Width, this.testImage.Height)) { - this.AssertAreImagesEqual(this.testImage, croppedImage.Resource); + this.AssertAreImagesEqual(this.testImage, croppedImage); } // Crop an upper-left region and verify using (var croppedImage = this.testImage.Crop(0, 0, 200, 100)) { - this.AssertAreImagesEqual(this.testImage_0_0_200_100, croppedImage.Resource); + this.AssertAreImagesEqual(this.testImage_0_0_200_100, croppedImage); } // Crop a lower-right region and verify using (var croppedImage = this.testImage.Crop(153, 57, 103, 199)) { - this.AssertAreImagesEqual(this.testImage_153_57_103_199, croppedImage.Resource); + this.AssertAreImagesEqual(this.testImage_153_57_103_199, croppedImage); } // Crop an interior region and verify using (var croppedImage = this.testImage.Crop(73, 41, 59, 37)) { - this.AssertAreImagesEqual(this.testImage_73_41_59_37, croppedImage.Resource); + this.AssertAreImagesEqual(this.testImage_73_41_59_37, croppedImage); } } @@ -124,9 +336,9 @@ namespace Test.Psi.Imaging public void Image_CropDifferentRegions() { // Crop a slightly different interior region of the same size and verify that the data is different (as a sanity check) - using (var sharedCroppedImage = this.testImage.Crop(74, 42, 59, 37)) + using (var croppedImage = this.testImage.Crop(74, 42, 59, 37)) { - var croppedImage_74_42_59_37 = sharedCroppedImage.Resource; + var croppedImage_74_42_59_37 = croppedImage; CollectionAssert.AreNotEqual( this.testImage_73_41_59_37.ReadBytes(this.testImage_73_41_59_37.Size), croppedImage_74_42_59_37.ReadBytes(croppedImage_74_42_59_37.Size)); @@ -138,11 +350,9 @@ namespace Test.Psi.Imaging public void EncodeImage() { // Crop a slightly different interior region of the same size and verify that the data is different (as a sanity check) - EncodedImage encImg = new EncodedImage(); - ImageEncoder.EncodeFrom(encImg, this.testImage, new PngBitmapEncoder()); - Image target = new Image(this.testImage.Width, this.testImage.Height, this.testImage.Stride, this.testImage.PixelFormat); - ImageDecoder.DecodeTo(encImg, target); - this.AssertAreImagesEqual(this.testImage, target); + var encodedImage = this.testImage.Encode(new ImageToPngStreamEncoder()); + var decodedImage = encodedImage.Decode(new ImageFromStreamDecoder()); + this.AssertAreImagesEqual(this.testImage, decodedImage); } [TestMethod] @@ -150,13 +360,10 @@ namespace Test.Psi.Imaging public void EncodeImageJpg() { // Crop a slightly different interior region of the same size and verify that the data is different (as a sanity check) - EncodedImage encImg = new EncodedImage(); - ImageEncoder.EncodeFrom(encImg, this.testImage, new JpegBitmapEncoder()); - Image target = new Image(this.testImage.Width, this.testImage.Height, this.testImage.Stride, this.testImage.PixelFormat); - ImageDecoder.DecodeTo(encImg, target); - Image target2 = new Image(this.testImage.Width, this.testImage.Height, this.testImage.Stride, this.testImage.PixelFormat); - ImageDecoder.DecodeTo(encImg, target2); - this.AssertAreImagesEqual(target, target2); + var encodedImage = this.testImage.Encode(new ImageToJpegStreamEncoder()); + var decodedImage = encodedImage.Decode(new ImageFromStreamDecoder()); + var decodedImage2 = encodedImage.Decode(new ImageFromStreamDecoder()); + this.AssertAreImagesEqual(decodedImage, decodedImage2); } [TestMethod] @@ -164,32 +371,102 @@ namespace Test.Psi.Imaging public void Image_Scale() { // Scale using nearest-neighbor - this.AssertAreImagesEqual(this.testImage_50_25, this.testImage.Scale(0.5f, 0.25f, SamplingMode.Point).Resource); + this.AssertAreImagesEqual(this.testImage_50_25_Cubic, this.testImage.Scale( + (float)this.testImage_50_25_Cubic.Width / (float)this.testImage.Width, + (float)this.testImage_50_25_Cubic.Height / (float)this.testImage.Height, + SamplingMode.Bicubic)); // Scale using bilinear - this.AssertAreImagesEqual(this.testImage_150_125, this.testImage.Scale(1.5f, 1.25f, SamplingMode.Bilinear).Resource); + this.AssertAreImagesEqual(this.testImage_150_125_Point, this.testImage.Scale( + (float)this.testImage_150_125_Point.Width / (float)this.testImage.Width, + (float)this.testImage_150_125_Point.Height / (float)this.testImage.Height, + SamplingMode.Point)); // Scale using bicubic - this.AssertAreImagesEqual(this.testImage_25_200, this.testImage.Scale(0.25f, 2.0f, SamplingMode.Bicubic).Resource); + this.AssertAreImagesEqual(this.testImage_25_200_Linear, this.testImage.Scale( + (float)this.testImage_25_200_Linear.Width / (float)this.testImage.Width, + (float)this.testImage_25_200_Linear.Height / (float)this.testImage.Height, + SamplingMode.Bilinear)); // Attempt to scale 16bpp grayscale - should throw NotSupportedException - var depthImage = Image.Create(100, 100, PixelFormat.Gray_16bpp); - Assert.ThrowsException(() => depthImage.Scale(0.5f, 0.5f, SamplingMode.Point)); + var depthImage = new Image(100, 100, PixelFormat.Gray_16bpp); + Assert.ThrowsException(() => depthImage.Scale(0.5f, 0.5f, SamplingMode.Point)); } - private void AssertAreImagesEqual(Image referenceImage, Image subjectImage) + [TestMethod] + [Timeout(60000)] + public void Image_Serialize() { + // create the serialization context + var knownSerializers = new KnownSerializers(); + var context = new SerializationContext(knownSerializers); + + // serialize the image + var writer = new BufferWriter(this.testImage.Size); + Serializer.Serialize(writer, this.testImage, context); + + // verify the image type schema + string contract = TypeSchema.GetContractName(typeof(Image), knownSerializers.RuntimeVersion); + Assert.IsTrue(knownSerializers.Schemas.ContainsKey(contract)); + + // deserialize the image and verify the data + Image targetImage = null; + var reader = new BufferReader(writer.Buffer); + Serializer.Deserialize(reader, ref targetImage, context); + this.AssertAreImagesEqual(this.testImage, targetImage); + } + + [TestMethod] + [Timeout(60000)] + public void DepthImage_Serialize() + { + // generate a "depth image" for testing + var testImage16bpp = new Image(this.testImage.Width, this.testImage.Height, PixelFormat.Gray_16bpp); + this.testImage.CopyTo(testImage16bpp); + var testDepthImage = DepthImage.CreateFrom(testImage16bpp.ToBitmap()); + + // create the serialization context + var knownSerializers = new KnownSerializers(); + var context = new SerializationContext(knownSerializers); + + // serialize the image + var writer = new BufferWriter(testDepthImage.Size); + Serializer.Serialize(writer, testDepthImage, context); + + // verify the image type schema + string contract = TypeSchema.GetContractName(typeof(DepthImage), knownSerializers.RuntimeVersion); + Assert.IsTrue(knownSerializers.Schemas.ContainsKey(contract)); + + // deserialize the image and verify the data + DepthImage targetDepthImage = null; + var reader = new BufferReader(writer.Buffer); + Serializer.Deserialize(reader, ref targetDepthImage, context); + this.AssertAreImagesEqual(testDepthImage, targetDepthImage); + } + + private void AssertAreImagesEqual(ImageBase referenceImage, ImageBase subjectImage) + { + Assert.AreEqual(referenceImage.GetType(), subjectImage.GetType()); Assert.AreEqual(referenceImage.PixelFormat, subjectImage.PixelFormat); Assert.AreEqual(referenceImage.Width, subjectImage.Width); Assert.AreEqual(referenceImage.Height, subjectImage.Height); - Assert.AreEqual(referenceImage.Size, subjectImage.Size); // compare one line of the image at a time since a stride may contain padding bytes for (int line = 0; line < referenceImage.Height; line++) { - CollectionAssert.AreEqual( - referenceImage.ReadBytes(referenceImage.Width * referenceImage.BitsPerPixel / 8, line * referenceImage.Stride), - subjectImage.ReadBytes(subjectImage.Width * subjectImage.BitsPerPixel / 8, line * subjectImage.Stride)); + var refbytes = referenceImage.ReadBytes(referenceImage.Width * referenceImage.BitsPerPixel / 8, line * referenceImage.Stride); + var subjbytes = subjectImage.ReadBytes(subjectImage.Width * subjectImage.BitsPerPixel / 8, line * subjectImage.Stride); + if (referenceImage.PixelFormat == PixelFormat.BGRX_32bpp) + { + // BGRX images can have any value for they alpha channel. Here we normalize them to 255 + for (int i = 0; i < referenceImage.Width; i++) + { + refbytes[4 * i + 3] = 255; + subjbytes[4 * i + 3] = 255; + } + } + + CollectionAssert.AreEqual(refbytes, subjbytes); } } } diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/AssemblyInfo.cs b/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/AssemblyInfo.cs index afbcb7fa..6f4b42ca 100644 --- a/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/AssemblyInfo.cs +++ b/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/AssemblyInfo.cs @@ -10,6 +10,6 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("Copyright (c) Microsoft Corporation. All rights reserved.")] [assembly: ComVisible(false)] [assembly: Guid("191df615-3d8f-45a3-b763-dd4a604a712a")] -[assembly: AssemblyVersion("0.11.82.2")] -[assembly: AssemblyFileVersion("0.11.82.2")] -[assembly: AssemblyInformationalVersion("0.11.82.2-beta")] +[assembly: AssemblyVersion("0.12.53.2")] +[assembly: AssemblyFileVersion("0.12.53.2")] +[assembly: AssemblyInformationalVersion("0.12.53.2-beta")] diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.Designer.cs b/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.Designer.cs index d8bc8e87..4a3928b5 100644 --- a/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.Designer.cs +++ b/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.Designer.cs @@ -103,9 +103,9 @@ namespace Test.Psi.Imaging.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap TestImage_Scale_150_125 { + internal static System.Drawing.Bitmap TestImage_Scale_150_125_Point { get { - object obj = ResourceManager.GetObject("TestImage_Scale_150_125", resourceCulture); + object obj = ResourceManager.GetObject("TestImage_Scale_150_125_Point", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -113,9 +113,9 @@ namespace Test.Psi.Imaging.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap TestImage_Scale_25_200 { + internal static System.Drawing.Bitmap TestImage_Scale_25_200_Linear { get { - object obj = ResourceManager.GetObject("TestImage_Scale_25_200", resourceCulture); + object obj = ResourceManager.GetObject("TestImage_Scale_25_200_Linear", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } @@ -123,9 +123,212 @@ namespace Test.Psi.Imaging.Properties { /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// - internal static System.Drawing.Bitmap TestImage_Scale_50_25 { + internal static System.Drawing.Bitmap TestImage_Scale_50_25_Cubic { get { - object obj = ResourceManager.GetObject("TestImage_Scale_50_25", resourceCulture); + object obj = ResourceManager.GetObject("TestImage_Scale_50_25_Cubic", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2 + { + get + { + object obj = ResourceManager.GetObject("TestImage2", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_Threshold + { + get + { + object obj = ResourceManager.GetObject("TestImage2_Threshold", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_RedChannel + { + get + { + object obj = ResourceManager.GetObject("TestImage2_RedChannel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_GreenChannel + { + get + { + object obj = ResourceManager.GetObject("TestImage2_GreenChannel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_BlueChannel + { + get + { + object obj = ResourceManager.GetObject("TestImage2_BlueChannel", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_Mask + { + get + { + object obj = ResourceManager.GetObject("TestImage2_Mask", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_FlipHoriz + { + get + { + object obj = ResourceManager.GetObject("TestImage2_FlipHoriz", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_CopyImage + { + get + { + object obj = ResourceManager.GetObject("TestImage2_CopyImage", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_Invert + { + get + { + object obj = ResourceManager.GetObject("TestImage2_Invert", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_FlipVert + { + get + { + object obj = ResourceManager.GetObject("TestImage2_FlipVert", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_Rotate_Neg10 + { + get + { + object obj = ResourceManager.GetObject("TestImage2_Rotate_Neg10", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_Rotate_110 + { + get + { + object obj = ResourceManager.GetObject("TestImage2_Rotate_110", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_DrawRect + { + get + { + object obj = ResourceManager.GetObject("TestImage2_DrawRect", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_DrawLine + { + get + { + object obj = ResourceManager.GetObject("TestImage2_DrawLine", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_DrawCircle + { + get + { + object obj = ResourceManager.GetObject("TestImage2_DrawCircle", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_DrawText + { + get + { + object obj = ResourceManager.GetObject("TestImage2_DrawText", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap TestImage2_AbsDiff + { + get + { + object obj = ResourceManager.GetObject("TestImage2_AbsDiff", resourceCulture); return ((System.Drawing.Bitmap)(obj)); } } diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.resx b/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.resx index 254f4fd7..232ccfae 100644 --- a/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.resx +++ b/Sources/Imaging/Test.Psi.Imaging.Windows/Properties/Resources.resx @@ -121,6 +121,60 @@ ..\Resources\TestImage.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TestImage2.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_RedChannel.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_GreenChannel.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_BlueChannel.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_FlipHoriz.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_AbsDiff.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_FlipVert.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_Rotate_Neg10.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_Rotate_110.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_DrawRect.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_DrawLine.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_DrawCircle.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_DrawText.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_CopyImage.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_Invert.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_Threshold.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_Mask.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + + ..\Resources\TestImage2_Mask.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\TestImage_Crop_0_0_200_100.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -130,13 +184,13 @@ ..\Resources\testimage_crop_73_41_59_37.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\TestImage_Scale_150_125.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TestImage_Scale_150_125_Point.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\TestImage_Scale_25_200.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TestImage_Scale_25_200_Linear.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\TestImage_Scale_50_25.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\TestImage_Scale_50_25_Cubic.bmp;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - \ No newline at end of file + diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2.bmp new file mode 100644 index 0000000000000000000000000000000000000000..313db424efe96d305bdca46cbd043beb4f531aed GIT binary patch literal 1069294 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%0Ak;|T7OoI!UBme>1PpKfaDLf%{_Rr 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 zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d| z0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdb zFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?0 z00Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u< z3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}L?000Rs# zzyJdbFu(u<3^2d|0}L?000Rs#zyJdbFu(u<3^2d|0}R}@1}@)!b=T!TzIxmK`FFAJ zbI$++3@~sT8@Tt8tGn)bIO|ICfK1@Ma2vlDWI}%*V1R+!)xf>qy}Ik($C3pe&3fqC zy8OV^U6<4eX0R|Xg;I=UE?SGgo@V%_ZuVsSE%>=0vTyC8}Cb%sO+^#v;pWEL7 z8DM~c?;E)9iL1NrOD4E)W`fJ96SQ}5c`Fl`C;0xyiya>e1{h#~fm_kQxBqdnz{&)F zlG?!R9W)bMN+!6JI>9A%0(AoQLIxOMfPq`mz_<&%Gr{G|6EqK8$~?iU z6I@K4;6i%`GJ#B_ZpZ)w3^1^x4Sf6GrXJAsue1JDRx-hT*YytWNuA)H^bJNPXq{m0 zMI3d4>_==SP$#%Ga-n?h^T+@L4BUPOF8{lHZ%-DuZz~ggXJ&%V6Wo`1g8R}txTo_3 zGZS<#;^kz5?mK9mU}b{N7+x?>u%ok~uK~B;*8rb$pK}HnsDVq#1DBHp?#XkL3I5IZ z>jc+lg6%p%GeLU?J)b}(;K|n%1{h#~ft_pMLUO>!1lx6jSY5GePsf#jfp4FzW=(1ovgeur-3Q<~%|79kfo+Ot9H^u$2kU zcg9dAkO}<#fB^;=VBk4z;KYBpmIs;%&NUNcjZBbSux1KcEBH=VYX!{&=^fmYI>Ehb zFXEgrZ13RGoF}-Dd4f%yAbo@LdI!&G2RE84{d|8nVSoV!cD{j=$pozvv_`O9C+J*3 z_Z~D4+}l}#tkwzcN$+4}g4PO>2`;yHkUGKT&J(0gaB*gW_6{y=_YPzNnZVx<7+`<_ z2A-1!j{e81yN)FfoJryho zrDlRzC%BM0!G+m7SapJP>IBaj56>n~`Z@j{!TAP;36cj| zC%BZEf=j6rTx=$IBL97A1Q(JC&LtCcFXFk(7>-PECH02~xZ26C{NDLxfB^<}j)5=z zm#e$Jk}U9*JevzvCTJe$Ji(|HBnKQw259f#aGqnPAm9I2@8DE&Kr_LbDOmR&ta*Za zvhUzh&L_B>b*Y(P)(KW7xHvOG>jcdN-FI*) z-Sx#}fiE=^WHl3feJdAqreMqyG!taCR!1p5VgF1Q)jE3C?HV!MS9Dv#U;!OmOCY z#&()9zh7nRTO;_RtdR+t3$oVU zgOv%|I~e_g>oY;JK=Z(+RxoP>D-X1P&{{$F9bBHhgVqVgKE(D8=DvgW4$h}ea6U7J z+nJ!}6P$S{nc#t}`#IZ5&ir0^Wq<(&p4$dKm>ked@X=&|_7288L7wd&tX$Cj2VYHn zVAKhc1@6e})(E=yV9(41`;!C4*+qGFKVoYIt4?ro)(E=ypml=t$phnzf@Xr*J7^}j zI5WY8>^(T2OmJ?_6P)W_#91de(@c;W!RfB#0=|3<7+`<_1{kIBUL7c)+`zk&1)2xmmmKhcto9B*o@eI?x;kgr{z3Z&>+GWIGr{iUfN`GTsuLs! z9LidAhV31UGYVQG$U2+az`41a3p!J<>I9dX31*$3dl6SA=#1gn^bXFZPB8WyJe(}> zQ0`(*CNN`o;|{!+d<+?2fPvfFz}u1qnhD;U)p>#s%}mf*LHh@vN)BkPpqb$FsSk`? zkY~>>`g&>vYtFEF;I8C>eaQjs9~{iHYn)S%JkUAARVV0qhV36T6LiLKWrB-2pWs4z z2N#kFE~I~OzOw{b=jJ@Y*_8?AUc{ble5#q?iaLS!@$LOS_WAeuXMlklHSo6oadlTS z!MmCXk^x#LXeQ`P!Kf7^6LijS>`6=}_`=Kt?H!E%!B!?1=M=P7&|I*U3D!KpcJE;A zM_hLvG!u-K-oeE=PjDf1g7e*rxHV(AdIx8d3C?ye;={8}kW6suejaYrgP+e30}L>5 z`x-Ek znG0GcXpLah2~rzacOHy;54P(BnK5jgU}S>M6eJT|n3-VJ3C?6MV&@6Y%uI0lk!zX2 zzJuG>u&-Y}_Y5$=z>OPtQ?kIDk^xqopt)d^36cYv33^V!=Io+mfpvD#xC<$Hpfd&E zOdeSK4%Qh3%>_NTX#0%g?Of3Ph@B}|^919Jf@FdVtrH{B0}R}b21X{Bb%K=(-jf}SXeMZ#VC_ZhjA1juDVf0e47+?SyB)ul`7?9Rz>OJrb+W+g zS|`ZrOu;)+BWUkn^bb}hn011WCkK2wt9K!_PS86Ky2csDsS}Jd3X%s}E9lupn=_7Q zF4*3Ca4b2XXB4bE54!iDtGQsDPmtch`DB7~sS})^^8}qSJUis?TNG2HP8Rpsjh@*EfGeLU?W6m&Hpyw8ivkX%wIG^6Z`P2xy z@8DeO1ZPtxIG5hRs1c-haAx)nS|=ENgJgoS@8H2?jR$TlC&`&Uehe_c00Xz9f$dDt zzQNnG-kA*0-a*eU8oh(m3EDsCxkcTN*jmAuCwPiX&>BJ4$^~Q2aAtyo$pby#_(-44 z1bMDnL2Cq?^9-8_R-GWZpqb!YGQpYD3C^TWaHg4{E4_o$^BludTXh1x1MlVA@xAQN z%sm4P+=zi!{;%{6x>6%}L$bi?9W)cXJL`SX%@r<)1#`h4@isuQGl&>6#(30fyO)0I51=^Z2! zoO(1XnV@xo6X_kCe1MA^apC9k!vF&e+s0Y2wG=L|5g47_|h z6Xf-qv)-OH>IBUNS?wQuI5}Y5kGN_DohA5OR_6)2nhCy<8bR0S9V82M??E%cIM1+| zAUR<44_YTk7HB3Idk>Nc`fTrDoM*V52~sCGJLd^j@8DGX2FV1cw=%)WN0Kj6Cm5OF zexKv@Ire0M0R|Xg;F%bBdHM#gYVY8GUh5ycIT@g}g4PK}tsr@zXBvJmnPB9C%n^)x z59U09)jAbDVO??E#` z<_XTFMsRj(#;|pQ?mK9mpfiT86P(J7;mJqy+|C5*1nLB4ju~Kp0S2D2ftTca|I3;Q z@_bD*L2|$wn+dYso*d9j&^$2iKFI5J#__5X^gP4X3YrI2Cg`09D-(3au$iD|6f_g8 za|*ieVC+3e7FfN5)jwF7;6gINx$HYQJ9`Ibvlp?wgVW6fohL{xIGI{OGr`GZg7ywh zJd*tkvrcgAewpx@WJ3Q9Ck!ya00TAflH`Fun012JBp19f>-G8G-#S722VKns&$0J80}L?000Ym&z>EL))m<-6 z9%!B5W%=GeY6W?=PS9*H_9NzXYXn{I&-ecJ55`PE>I0oI>@2}&vU)$_IHO?Zfz957 zWPw#D*quDknS!2W*m;6OSw~VQ=s5+OnS%Uyd!FE2GePPEBNME7g4PJS=DvfG2_8?4 z;L&S!f)mLE-FI+8o!}YQi=K%W|BbIJ3^2gJt!v7ci%xX!Pk=q)|}zy?4ss^nFrcC82b^M3$off z80Q(zIzi7Z8kwMb4rZO;O!po9X;x|kr=Q45E;!LT!O8>==f}we#~#d*31k9&LTT-FI*zYf~q9 zBtM>+pmhShgIhPx`n!tHEdvZNaPthjAbFs5f*0l4I>8?%1H2-uwSs1XRVV2AMPtse zy@OS1?LDwhKJ6LxluHM0yk_~zn(#QnK24hcRGQp@5mHo^L$vNSwK#HG<}W zF>9DC(7A$Ug0nLd^lXCDbKgNT!KvnfuG9%mWu9Qv2{L0idI!k_#~(@_NG3S0PVltZ z(0l6Uy{CLEeJmMZV5b^*;i?m~R?u9~-a%I93}2h?|J{$+T+mGLuH=B8as0mIfOS9O zNAu&4XSGi7>12S;7=At(V9gY?R?s}q`w>@-VC_94UQ%g9DRV#o$Ax?n_UJNVBoLLzzdQIo|h~z z`UkBOBoB<4f;?C6pt+#;BaS-~n+dW$G;=}g1mk|hWPx?Q@v0T9-oZDL2fDU%!P<}5 znS#z4wr|i(Fz!9bvw7f2nPBckY@ML{4q7KToq2-R2~IQJU%&J?^b8KAk~_w(#L!K<^H3sxq0%d8W;E6>gnv{ul&5nCtd-h+_|k_A@(V4QK> zOpx`pWPnX3$m_e33%Vb1PclI31kDAbR*+}w1#6~YGiNw^2WPq$F*60H=8WN~oKMg? zK{LVeStmIDSYAJxl{&#unc!(N;ZAhx_w4H}0}L>5a}E4r^1!bq18g!uUcV?AV9Xgd z7i2XTw13b#LGMj&ouD%X%>&~uq&#~+;>ZNe19|<~JXbTgAZNO&<7r%>=CzWVKH4+pQ6FB@4W?nIJjfm3fX# zkSy?~l?n1(dlI|g zSHksg&WP+}T^6OnuC%9FztUrgpmodNq12^BmPyU}|f~?U$NG4cy zf-!42GeK(vuS~6=x!?_1ohMlRgK-y9GC}JE-IKWTz_=rE=7QBf=s5-B-h){q7hBpSOQ-VCI2QBS>wanP5{RXfBwU;B+#<$=N$-COFwlkU7KdJ6M_E=wsLF z1Z$o^o#5sh^1k#jWq<(&cD{ihO%`Y-XzyUn6s$VIUz7=6mrT%^g64wWeXx25J>X?}!S}A^g2Rtq%LIqB=b&|hLl5ly&ztw2&mjX0Fu=ggHqcD)4aoxIjN@j4WPw#HSa%_oUR1 zlLOi}X#e1K$pP&jw0E$%BQd#P+>e;&x-+?VAN0(botdDy;P4|^ z%>?QMPdQVv(=Ge``+Cd(0}R}lfsqN42Yx)OGlpHim@Lq}2b)ZgA9wG;%dKO&i1mirz=7Fr9QP8~ytrd(+kk@z5I>9*OcxHmJ z{~#IQ_*|#bHyCSXf)mXIbH;F!2~sCm=Mx-yJlWvUtcS1F2$~5FK5%0nH|~7=7+`<_ z25vP2%>+NxOppw)T_@-{1uGN$PF}D6L2Ct@IzjWmT%%TyJn-&({~xu2JU^P+KHvNPAxS3$&g6&L@4A7Z^ zo>?@`H%@(^=NUE^^vt5oxkb$cImfV>;COlmoiSYV1glOk^1%0!2~sQQEWwdvf>9?( zE|3YlpKrPMv#e%Lh5-g{#K6o1?H_Dr4YxAEuQd}S1FTHYJkVUw{y{UrcAemz$p@_y zbe^F1CVwDn%o*l;|ELwDN3doJdUnw`<2cVXQ_ypcSMT7iyzah(eaQfwF&t+cw?>fH zqehU|CuW_Xdl6426SPinB)x+pTXljXnK3*vGr_^fzTZ1gCy)o^0R|XgfPpOovv1H@ zf|UtIonY1qI#19{&^*xnh@(!hl?h%oGr_18BnNb!p!XiUD_Nj*f@XrAY1o;9?nzwz zgVqVwS%&M5#4%Hl9MJQP@65AvhCR=)wSwk?W`cG1K{LTPyC|99MCt_11jn)$@pxto zk9FU{);vM$1c#dm9?vtGV7pFm;QpYR`1|tvrf=VuzCmWAH2P}AnQH({y*+RnwenSdyrf(GC}GB<36O; z36c$(3A!iotNGsljXXP3&>F$I`(T`1lz-Peu=XCbR`67r;MmLrN0JGS%z1*=2@WL_ z9G;or;KTW~9?DAZ;J^bifsD)m0}L?0z%VfLK<5dzX9|8YSzyc)Bp0+!&|J`3!9U3A zoZ)sRculgv>$92(-rO3&T+IaSAGA*Jv3&3USTeyU@?3L<%>}(9ab<$-I}%$bSec-; zg4H`%nc!%92(x$4I>E8j3Az{Y=*$G&chF35_=&943EDe2kW6s!k^H!sAbCJ0@E-7W zkO2l5U|`F@b(!FYW}TpW57z#Jl?hrW*kpp43tp8R&`hv;2h9ZU*vbU$9gG@5o}DN7 zMAoO01Geu??)gPMr(pZ;gY7)fOwe-*nhTliSF+Rz)cSUMtU}l2-GJ*Hf&3Z5S zby#A6ft_xknIIWp%oL+n5429uOt9TQSiOUh31*#O<$_HnNPS@R z4q7M3Y93gd$9H+j{A_FA``Sua3GnW`w^Q9R_~yhpml1nLdIy;&IF#POb|yG@T_)JuI>G(e|3Nds+nNiuGeKT&GQq47 zv`*0TjW@l6pnMfvNfB^;=*fOwkLB9Vt6KvNCekwn1@8Fk`0Xk#Y zOfdQf$pBBv1jz!;1YOMpD;Km*(0dO)FzW;#&U4Kfu1xUxWP#0`VQK`;1>2dRxnOTH z!M^kjnhVBELGnQN9~^C+AgjHD)(N^7vF8}JchF35aAkt;<>!4jzeX}a&nIaAVAKip z4rJ?_k*)n295KMatzuxif6z>jHF^ih0zZ*8GC`idymGq~?Kfo?&VO-H+Haj++ab2YSZwxc4B>W`f?4*g8Si+Lze-keUfr zouHZENb^8*K{G+?1jz&k=U&7^nI|~dl{!JsENUhgb%Nx9eKQm6kqNwyZSTe=6|`2+Ot8rXvrf=VFzN)!0<9H% zd@B=tcIJU~@4=tT1jzuMFAkRX&&g9KJ3wzyJdb+=ziyCrBRHWP-e2nV|iHpHBv8F8Hmi-+hWY z!RQ?%6TBgrVC+3e4tV=@nc&080?h;K-sJWVHuoc@XRyvQ?EQ%CAGB6*S296YGr``h zu_rM-g!T@`8Ah2gJe1zSp{-1CD0PAZGZP$0?_gi+1mDe?nPBw}%oxfjXcW9ME}!U(aeLSo;rNoDA>>S$~+-TEV7HkSx$#&`i+&LF)wX zPko@Zf{_dIT=N9Y1f3}ubB4_YSx>tAU}l2d%>oU3`Ddk+pL6C6$^Xz!r=4q7KT zlo`W=D-)!5Ffzfc6YPB?zs|#1S90&7I)N;GBU#$d<%any`V%>`ST;7~Hbp=5#s$pi;7U%2myJXf6{nPBf@S(ztTnPBhz zPmzso)z7a#m#?T+li}SL*~nmD)gO3YrOiJ$-{QQ?U96$pEbrbd5}q zEbyjef!>+CGQpZL{9v-dnkV>V`Ub5Pe0t`BFD46oA!}uVuO|a^PvXi1cP9&U??LAY znh8cONG3RxeFv=-9Lk*G$^`po?_ghY!Twn%*!$g?2_DJwp{&#i>^qQ&)C?J5fB^>n z5(CKrohkU?tRHC}n5**y+x>$VCKJ3U>-T3Kcx9g5d+@rf&J?`0xge{#VATnl2|kh> z(3yhXn>_A4n3-UlX*e@M`v;vT80Q=}7bFX;^NYre;mib`DQG4b^8_;!97vs@nPC6y z9W)c{O|4*Lg2$5sk_q-aoW4PF!S4J2l8?g=lBN8&vNr<^Fu=gAXka@NjY2A1o`pE1jz;M9rWy?o^!m;I3Bfv>oUQYwrT|{6SPLK>ID1q zdYy6H-oeTQ2a*X6q<64Cdk@+>XeMaypqXHQW(=>-1a~JBs1wLU{(is!0}L?mGzPZn z1lP|Q{&F%vdk8Pc^F_%4t5)#Ryl$P~HCe3_w14pCtTAVp9MD?9_4gh$6Lg-SHG)wm z$g`QCt8<3yJi|M->I9uB*v$Tw`hO%9URQsKYIuJ zS|>;**wfxY>I8efo7LVyGQr&sXQ>l-Py8V73I8oG3@~sT8|Xa2I=5(?Q?S)P_^srD z)(Kv)T_;E;cxBeA6O5UH{J5E*=NtF#gZ2(SkUY?tf{)Ey@Tug1ah72+K)OM3HIeI z!%dx_eS^#s?4Frmcj^SYSDj#Hf;%3R34A}4i5Osj0S10h18c6JxnO02(L0!#pml=w z4qiTM1)V8a{exzL=7H5e_;Z;c`Jm?(t=_?3mI*pju=)oF(l;3A9Is5UdIy;?+?zVV zo@9bObH;FY>jcRJcRiLhGr^q?rT*{$3qPm@|2;DdFu=g=ZD92e{-R9KI>E>Uvrh1; zJYSz2(0PJQoglS>_hj{)f+y`gm^FgcJJ@7`)C$%eiLDhh53D-Dm@`a`VC+9=?;v{- z_jNB~=LwPtc5h{ZyVE-mZOJ^Z93h0S2C(fgekaptFXp z6Z}Hz1EY74EHLH_^IW;0XBV|burfh&!8^KUCTN}DgR^(g^9(;eGeOTO_B@=w>%Cq}e zFy!OL00Rs#aJw65CivOpfo6jC4xZOckms5yXszH?S?wLXCOP1ZS*uRaTrlbc$pOs- zy&tjnA$>AApzE{A0&7p=s1+m&d^PLq$pGWt^tzDzTMx`{`}qp3^4F)4g8&Ef>|f{ zm1cshW`f^K4(M9_gU%W@7c>*JPVlzW23DP*y@TF+urfjG1S=DaT0!ds$pT+$9?0vj z&P?#lnF(4aXeLDY~g1yZItrcv|7~YvoaA)cSccxCzOmIi)1f4NdC-7c) zw(kW$j~xaWVBqSm=7QDa-RVP^egSR9j zw0F=v@ZPNVUzZD3|KQUz6MUg{g1l}fX#b!!f>9@EtsrZialAKs4_YVKn;FBsvre!l ub%H&q6WratLG~hU&ls*uFzN&kB_GHHPrDcO**fv_e2rm%0S2Dd!2bthe$1x; literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawCircle.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawCircle.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a6b0aad0860c311a6fa1a85348897a16e4fb11fe GIT binary patch literal 1069210 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�z3#1<4_;x;^3$%RO2|lH#4f2B42R`IJ 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 Bu2=v7 literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawRect.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawRect.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a46af5aa4f85e203dc7309b21575470eed3bbde0 GIT binary patch literal 1069210 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 z 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 T^#tMp_X$!x0ef&>Pw@W$&kC0~ literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawText.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawText.bmp new file mode 100644 index 0000000000000000000000000000000000000000..87d85fee93b0125c325b8d30e406a70b44776554 GIT binary patch literal 1069210 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

tx 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 literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_FlipHoriz.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_FlipHoriz.bmp new file mode 100644 index 0000000000000000000000000000000000000000..64501cf364b9b22ef002d47c21d0954cab5b92a3 GIT binary patch literal 1069210 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�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∈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 AD4>SsUi@d~yA7JxN+;tyw_rnj~4LYA47V z79Uu`^A;Df4w_40*(O*)zbr3ly|UoCEUQ|izxIICI)HUgF0j7p_c{3)UoY*{`MqY2 z$E=UlW0s!I&2tv7iFh5nHfiTt<=UBE&-yy&y5}BvKSJ(N()(AV6G-lJ?t8Kx6ONNO zLB>qRkSXH{)$aXg3V)H4d!lJ|k>`=aKs(w-+YW_gGO}$6(dma}(Am{}lPLQmf;7Oh*af0j>JWgK=eITD5=moV8OvDY`Bk=o$ zGDmO#o#0sL>=Qi1x(bUP?Dl~b_<&BZ7S>CgfIR<~xWF&qUiew#1ZUqvjTfB$1KQt* z@9{G_!M8y#_$J^4Yj4E|Zh@P5{Tty1zzJ4fhXZ^Kz6xK4Yv2nU&*zI5Tupw8WBg>} z1dECjEV{fn!KHY>CDb@U=ieX13Ge~EKqr`Y7Uz8?oCfP~0XTYfw-X$#7o3U{z#N=l z&LV1@VA_Jl3EV4~HjnFgEF8miJ(@g{oZEQ8#926j%)kex;{sEP7fhy}0EglM2g8^K zy`aNz5-%7qtZ@SWZh@a6_;(9-m%gxP;{~115c=@{LwH~JUP0$OhyTjB=-CPE-)s|X zLI0-MipP3Ea#OXB%hm;*V0+lHunVaZ>;Zd1ykH;d(4TrB41yt`6YK{EK%zPW z*A88v_5tgxKW4pFS-XDKPOzAE%@W$Ow8b*oHCb0z&@U^iv|iQ1wcB-C+O_RzudOp!TEs8r5}APT+N}eZV^RB=@V%IDvhs>-*f3 z59k7pi}!K@$5lhiLgb+W_1;Q)TH80Z+FHy_iTD(X*=mGM4mDZbbg0>6j13@SFGw1{HgFlvb zQYWyM+6UqS$=~z1JYAs+*p3sJ`oQm6#0TO8zvXdxqN4JG9jN0319Soyi3^N{ai9~( zOngAHPoNXbgA*QN9fd`ZJ%Ttv#|MfRoc#dnzT6MLg!|y<@KYS%9(({N$af0#0zW%A z{o9Qboc_(m2|8YI3r=toesCjy=kOc&!1Zt~b#a0fU&aT%*f_zm&$CbPx$eD!MR#DdJQoh|`yr64q_&56gl@z?7`i{Y7w0mNU z(r>ouMW5K8x}7>eo2}{F7T(JTYA4v6=gL0N9|ppp!cbE5g8gB5VFW2ULA+oLwLWk# zj4S8{5+|5MEzWV7@1{~`UYtSg{FwPO^Q`H-s}qQGa!+0mCveW!3$iB6qYnB&@V_}- zOU$f2$)22GG0%$^SiAn2sckQ9v5fZe9#}!2tSp(@_A02?W@}kf(t2&dzW4Hg_G3QZ zpUrFfyEa9Ru};s$a|-SAJ(b6#zBai&dVsYl?Q5(91n+}&?uYAsdygRZF`0X8=H8o* zhnltzIBr7xa#K#=*b~QNUE2Y6ygv-I~w+YSEA^J?M*rj8K) zNF8(n9YNv;dVth!paV0(+SRQyx`c=@qyD|UAGf-_6Szu z1k1Qar@|6g#5Fsm@dCeB(Ag)LPaY4)vHl;!bv+u6Xz<@5jGGNJVFuS9Cm1`G`Y`Ut zWH=Obf=X2*-Us@_zAz95!H~j! zq&^Vzg0>Tkp)b^4FrI#CJAreXbKTTJ=0)es%$u20onJH8nmWOI`9Qr#P_GN~__;8j zI{#hiS|eF|T!*B+Ud08no-O7%HLih6!Axy?S;cbdntH8W$z$UBoV1p#-{zV^UE9}Q z`_o?EdaVBWyl#F^ez*M|Lw$Vpaa-rSJja@xzg|#ZpZdC4dp)JT&bjtx?nj-uSGjlI zNBhj&+hl$3YadAMIEfqR191V=*vt4!Z8|RNacVuQFtf^x@8k>~n^uwc!xZ|g zO_>anN~V6d6X*jWE?~ad;tks2b?WdMwQMN7TIDO$H9h&jOFTzvH_!=QtazR}JV&h$ zn5o+?@E0BnwG&vkeLydW5BxWEO`ISZCouH^dAdR;&<{-cU4=ei+myBwJWgNn0)3zl zZJnSW41l&1`1!#!h!Y%9yudwzlOAF1Bu|0t6RdiWH5xZq2ksMezF&w3=mY26&u0f@ zoZ#GhspADd!UcW^IKf#s!I|G}_6bhEi`V%k+yS@Y0k^^}{EnO8M)(H*e}wDEYw>}v zHBPYVON|rw`N6W!;R2t5Pjif)f~yLjC{A!W4scnw7o2c0ZRqS1T!06h59c;MFz-xU z;Ec)%*5LtbaD!Fkij7@IEyD%m)W!)qdj+R(?H0g^pcBYEJm8py&UX!uz!B!c92{U) z@q+1%7r0k2RwtMQ6X8(q(b&RhJYXdC2vR2i|9zt0IrQHsx?i9d^xGTy7AM%F>=o>U z5A>maUqkO+j0^c!=z52EfPGtlZAopm>t6JU{i!#VTk#y(8ny*}Krh%4b}8&e?g4v( zPVfQf3wy)9g@NQC7*ZHY>II??$bnFM!6@3gKp01T2#hb(PT-s-nfInri*sYx!ARW&w3@UCMfuwJYmdaxu>dOQ>B3 zmsTvJ4(&D7cGldL)HSPUhpgMlH9Tf*%DSpfdwuEmv5@DRd96DAeI7&7W6Lq+ICBm; zC$m0ZYp+AdwMpi>c|EOjee3kPi}xYv{jqIkZ>PR**51?HU+=Ye--F}8aglVa*v^*d0&B;dI0i!;wa(c*F0)`}mDY~$q~pD2YH6FkH-hh#!@!(Wu z?GP78zQ$uAUSR45H80baS4zG_iY}0}mKO`UL7RAhj-VTazfy}XkowQ1ZR!Fw&(IFF z6IjO!;sR!T;P<6AL+u4RL5Le9f5&4|d%+X5p;vk;lRbkFZX{yPV)**5rp8);-AD4QIfaa1NaPD;(f~ja}#c67HkEm%g7hdj;p* zL;kpN0{=$A>EGpNzfFD%7r3i9!5xhgoOUyLQ{x0{aDr9W7bo~Czgxac`x+8DUhvsw zpJ3Ui_Aqae^b37bjRsE@`}A<|6Xs#tGipE11u9Jr0hAqj7;wH_ zAPj;b1)X4jh!Y$@eISf1j3Q+Wj4kK`<6wNDCns=T%eX=Vsn@KCYc0 zb9gqxz>WWC8cw1CI!waRrYYgyK|taav+!vBpIWQ|R__F88R zUPWC~uia~Stj0Cpwkc~%>IJnMq`&@IUpK!eb&esKW7G$hff;Pe(u!P%T$B15dEIgy z&0Jq=ue5E%&WX@2B^;#`~UoZU)CjO+9Whmdy8Z0>@v*q&d5VK2YO$4%4Zp z!HkmD8UJS96YccHAaU$1zLI&7eR6_VCEK+p-o zOQkkN7YMZzSjP+W0MQGQ*5O&|_&_rI1%Ki(Yg6I_sda&xp1dG#5En>3&Ck}v3CvCT zK)k?w0)AVd?hPF$_zmlbJcbiI&bmWAuAmdlEVxJD_X&;#oxpv9Q(zG;Aj=+V@Uw$8 zpckA5XTh1j!UG<_1I+syFF5C3TtO%J33(6C`4P|k0WNSi_4n|B?@)h>*SHJrgxldZ zUiTJW|0eQA@*AxGUx(}9Yw#6Z;7c6G7s)Tc=csXlWmj{IpT-S7i5FZ+{R#5p#R)EN z_6q#`;G|0$FE~jjxPbFKzc|6UocCE9yN*8-4>*JRG*}C3*dJI8t6)XhD_F{PTHH8+ zdj)e&fs?xT3OawU;JC&K{9b{7@3`}Kj1I>KW*26V;AaS(&krVXUnT%v;CBv390CW! z=w`1#C-8d(o$nj&$Gsd1Ltqf>ix+@i(04DKV0ZWc_kI_0$Hoi#;01kpF*f91p{s-I zx!A6Ai_%W!c}e?2uTs}(En8Ko54;by2fbiN*adbg>`6-B!aihw*cS%CKo|@|3&Tjg zK=gs(a1e|DePA?vi2)7YJ#uEq%2Yw13Xm%I`_~`>o9!Uyjw|&Utulo@bj}1GBzH^|j0O ztTR54>+Zd9Pr%GQO4j$!`x$bNz31Ur>iB?Jj}OO;ZPPK-CgaO=%w_DEA!BnkeZg^S zZOTlTUNZHx(r5Y}XfuVrFqt|`qL#)5;sbxDEwu~0MLWDnUGqBaHwv$jK@X^Tm3Es~ z=zF>FQkB;Fz>7Wb0)1_sr!O9m)CWTC1J-|m+6n$#+HF60hW?(sKtISnf%*Fu@qwr4 zuW9?h?|59EtkSyj0sWv4xJMuZU??6i0^$S{9xI<4Ji4*#@L#jefqMkUKhn^X6ZpA- zta+IA8y7eO2RIAPfe*<8-A?eK`{@5U{DkNHnA8b=2sptR--qwM+X>d)jtAV|Cg-&n{d>$Y89P2+`ummS?pJ2&VIKh>T7cBZ14saQK6fSKz z>BG3dMNpie^IgMpXrJ9UfqMnVpVsUXyyFF{iWe;BI_U&UU{T`*ey^ajS8x*76FQ$E z%%eW8>=WPwoqvOHIBqbfIKeD(TDKGE1@0H<1S4<)_X_la1IBRQWF*vHuzzuaA>;to z|9u-L*nKbR55Vq?6YRbtx!L}sy{$J3GvC^{_bn(940ygWszq|Jj>r5BMPT1@{PKAJ`WLz(5!bLtzN)2l~JPh2i8uFcL<= z=)xHC;DSydK>ruH67egCaP?F8|GjGc_7+6CeRj5}m`+_Yjdsmc+Ec*v zy&-w8Bz^z*KI+~d_(xUOPGB7;FyE|rgF5I3p>_l74Hd6a*Tf6Vmn!~7trsM%UnuAS z;kim|MuYcwOo@mjSqCbQ?P=18JvnoE#|r{frZ^pF!KbQK<066 zkB4LNfukBHIP7o|CeOtOX2HzH3;a&On5pa+n3G^4K5!`D1qY06yx@RQIKc=w5DoyH zU>FR6LHNJ`av$z@KkB{6JsbMq27PvEyrAO*+ZHG2BLC%`wZDt^^JcI`$+YbYdCY9r zy-Hs)&)KT(Y)<$y~B&}Uf%@q|Zsl|0UX$6Ikm3@=S}i3;Z{aOPoLtsHyi2p5`&p1L6hAxWSV=R`Xlh@&s!@!99YZ zpbs4Io8klH1ep97YZuIh!$BYL`vk|s37`|WSD+6ph1v)Fj^SzG_X*A*{XW5m;6m^- zgmZ9$^X`S8Q~$I$!H=nN0{02dDNb_yWfypM%dfpC2s!6vz6>;sjUV0Us|;a5;MfI>Dv1ae|XChKo4Q3+Ou^&Mi)G z7UzE^oPisiMy@BhhJY?0?h_1$g9;maEpwgoo%7;U$Xw~%>AX6-q_uOfb8+V7IDzxE^LYMSFY|oX09_!sKFlvL*3_&okLo?A_>Lo(OM>s6x**p36l4ZQv}-i!D^GWV^{+*5NNc%PHG z_sO2Tz_F7tWX1k5UZ8XGT|diXe}&{< zsO8V_rz)+VX`vIez2Fb@g|-ja{yjWhp$FJDMIQ*iqYkwjQ1|(5gHA96^nvUX_+5gI z6ObJzc$D=GI(r19PLMqU_X*lguL#*$j3&1;{AN-Q`eT@^G_fsDK3Frhr z!U=u=-v_sgBZX#|l0dNBG zdj)=m;CBo3f&&hM;jI4$ko%E?8#-RlpSoYOSJ3x^_`q(AgIyXg@b4V<*&epV1$q_q zf-c5U!)7IIr#8bD)c=fLJSX^E>)x;pY+tbx^)9emVGlA+(3e{Fh5?0vB&du|+Hghe^T%TmTz-w5OYn;rrukT5H zuWBE#_Fe|>bMW3f4s4rg#~aPKWHRF^V=I1;F=sjsWloD(v}YHrWk!|t7`L8Um{!$O zs3q@@$<$#Ib?EB)-^?ZQclbw1>o`GtAo(Vbg*T`}d?5K6k8LQVjt7{pRJ=?bY8SB9 z1A-1v^8#&ozDjG+3E~C%K%3eLbb76xMT1))g;UMXub~b<7H`)p9tM>$apg z0Y0D;xJRH9%%0D6mE#*Hn0ajD1e1^4*fsU=)?UFh?n#)^xPhM^_-_#0E9iXJa4b2d z+X?)>p&6d#hKiG`E zHd~bE*>By({$8zq+r10#BSkmZsjv&VTcIZ>*q6r!6b6$r1ct$Wuqh`P#baX%2a__c z&~}2%Z)WB{=f=#J&Y?0BGOwD>znP0o=jP1c@d4-cwi9H1FkLs2t|j$4)AoU^Psyxd zS=Scx^EFFo#|4th=yR#%~lChKpVS)E$a2XUB?U7@iVED^>f>=>F=q3e_iKT zbNtEr+&ur9`r26Mx|z9_UR<5NoQy;x94UEiyooFMnLzTY~4Z8PWwae{b2osOl9 zD>E)&U5`I&$7IM@olT!(H_V_88RO>ELVUpYf_ux8|3;t2~J6ZD< z?YE)MH%t2s(%O8z;x%g7P^I;&g-toZ%RK&4i}!MZI6zVl2+vZti5uty;m_26f~55` z6>T?&6Z{v?Y15MvJjL^ZE)ev9nkP&9x6Jd@y-B^G;{@aZPq4;`*)P7wB{mVFBYNf`peD)y(=3l6FnK|K;i!x+#94yn)$^nwZCT;}{Hne#FSPNh#W ze>$gTo;96&Gbh*cv~ze(=6f^$ZCI}p^XYd@nO8DvO`ITWkZY1_mFra2FxN9#T&1;S zJv^0KmbO?%yT)~PB_yr0E}J#&_1kvV_qEhwJ9Tnh=}YE$KDU0&{4S57jmH-}e$OkJ zbIduLxejKoP10+ZYnjaTjTa=n{<$Z)M`qgxYT5Kn+d&B!cA24?+>_YAVae=+4`xf>g_k{s4 z5C*|u7zRV3-X|DN`#{hKMioYrq7#fQIgXU^pcgo&WnOdMbFMR;2d6^jO6O4LQpsHF z{2OW~aE{gqGOx!4ocF~wA?rid4pXwmm|1@oP)pV(GwatPYS%DxafRz&a9yl%-CPDq zYxmvF6@_{oUPYhSmt0L9;sQP8TAmlyQA^r!hWuP!&-C{s>tjjnaeBPLb7_-v&UHxU zI(f}%+AfgmZpO=UPfYJoeZS%cxtGb@>$rfKv5>62G2MG7 zq#b5ZOU8F{Dt%!Jb&c-}nOvAi*7WQIae?I9%pKt^>hLCYO}yZB`on9~VFR_iTCjel z)Mj{@I{b}VUaZnu7f3!&UGp4mdA8!O)S>MJw*Q$Ew7uZJ`I*pm1K0naoFIN+_T&Wm z0CaqS+#TWsL!NlI6Szm0K0{02#ujjg~gVnGKcar4|M=iw*mNY)l*(*4OdI7F=BH#pm zhTvYojBpg!y?DXYx!i|2FbifjZs7L{4w1uPA}%1~VH`ey6LkI^f?hDP@qz>Jf&&hK z{qTTc-CmHtTQHz6<6v*l3qH_zf&Xu1@w)}Rw}by+>}*N?OOw3MH-oN{)|(>Fam~+j ztlRXWuQzN{&z&)p%>P*%Tr1`m=8;mb zG1dzp>rqcmkacV^&kL@7*5;`du9>#YWt(6H{VOY0mD+x5S=|F!*ORXM*5-SW=bQEG z=6BV{lGiw7GdNadW`$#UI+&?#JKk%i(3ZR(Oowxb$q$nk;{(MBPCB1+ zK96?sf)mf=|C=g{f4P+o5 z(7(`++^aaj2XKL1siE^Z!gj?Adeer^cMG;8yS*UwW}WwZcfai|s^`^h``h%UZyR_Y z#0hqw-U)UAz2F0dy~uvBZ^Z!W!7v1d7UBi_)7A?{6b>SFf-x`}+D>pNeG(sVKAQy2 zahdZnH#%2l{>;3ZdDi(?;snmuAx>asuFo3anozG5^J$A~N?qHI4`fZM_Xx6%E#i5y zxMB%)&8f6qFO$~G3M)#wR}ixPwliz>YM$F>4Siv4sm+>oRXfkEvwqF?@AlX{)?hp5 zkn=Hfo}O!c4XnLJxn9Y5K(1%)1F60KZ6C0$w@G{;>3#GbC#`eeP04t0e8d}5+pfou zb;g$YUS2SV$Hj3vyQFo-uc-@&V>@Kb*Exm9CGU%5-Y*k*EHqB=59W{mU9kRp3*A88 zs(7>1ro7SOb=u)IYS~cnUS9Ar&l5c$Sv!GVAhi>`KwIklg4zjm13e(<0#dtx^`9zg zC(s2X9$>8tw9yIT0d+o2e|U;I{3mtz9W`{E;7R6u=nFc*0l#GpfkU2Xd|)z}&khcM zoOKIyg5%{;*22eF8{wVL4fKIWSbIr7JIFqPPM{CCPoNWY_6bOxz&m4fY1Ehim!$U&Bpsg0)|U;smQd zU!36T#tGajSbi0J0k(7Z_ghKypN3Bsm(!z*x`=4uNrnctPf~$@GWJfteef zGo3#(r)I8o-i;5K^_=Y-o_XEO{BOD*#0ln6&j;6%WY!h4b^_O@1z=|V%6jJdW^Ib= zUybXdEUj2Z9ad0Fd)-aHE|4{PHFa=3x31Uqx?am;??s-Q*D(D({yyva_j)WomSZw= z{APV_Ip1Wig-#&3PW5&3`o#h2^qSZA!PqYB$gcYIFkI<})qY zP7pWv1J4WkK=?g%hzlg2;<1{R6X*qfo@`v8vqwO!4~&r~SZ7F`!0!@tzE40N3CHOJ za3U;ttZ{lI z#R<;+J}&TG_)c+xyV!rY6K;cB;TE`w-*qD%fD^309h@;`Bk7Y-FdD|f!7#3%4~&Pl7i7*eGdDUHSJEF=m3lQ9+G~2+W?UfkI{HHWSbiq2Y36tNyK`)2jw_kt&-o;C&Srfr za-GcDp}dx%CpYlg>jE|L0`Hf#9$xk#XOG~wtOuYI$e~ZL#=z9VY+OK&!~@(Xm@kj9 z2Et-k2uor4qpY_DonSqj`3UPc=mj5om~|g6gnV{z@%_}l#1V9Yd*Nq|6S!9pFVG3x zCpi1t4QJlP>)r`>z-@3V-~{V$fNxNL9T&I`t}RaR74nN5+cofo#tBw`1|PV(+Xl##FX22d<~%Rzc7l`7YxW9sf(3F0*JC}`WnJS0^Vg888z1QW zyToPPPSEj!g^d^Z?-Kp4;gReWxL@Gs2c6Flj@j5X_h_8pDDHz!aCqYcQ)lA?vx*Z; zC#MxJn9O~fh!ad;{U2Yv;9ycO7!9KUFBoxP=*39 znAxeY4Y}RM&H8NBI6?3Kr}Le|`tKL$0%0?1v7I{Ei@q%i_F4BXY(vHgcA(y+um|~p zihk6x59|vAU~pk5DZ^ktXgk3O`g(GLwig`A^D>_~$7P;#4s>30e#~6y{Fym5^K9nc z%+Hyx^?}UgwF@}+XHCd@F^|45pE_%b>rB1=ETFw9AE?(hy>$TB3Yi4p8ec~D$ zR#4ZtF4wH0y}In)}>#0>^>lp++wVZLiFD$`~`}7Bc>3 z)6ST*cAO?Nc9YY2%rR|BJ=Ukv4!#$rfH}F4_e!0MYXay4qwxSgJD5zJ&kfusaF5`af=-|h zEFkp(ybyuWVR$1?TcH&PgW#KR?h3{7yl~2`VLLxO?{y{p z5lxzOFhV0B0%8~fBoKy>kN_csgba{`gapVONXQ)Kgn0&;MNtqHL6KH*qET!W#aX}s zQ5tL;5pAYG82oFabzrj-tgF0WW%LR3 zf?3PplyHJ+ONfiuo(qWc!waU(#RE=+6YzjJ#96q&Od?+3*g*qMFcHR2fywNfiNW~s zIKh$ZvvDvM^nybxCm6*(J-9f*fu&b4oc+Bo`Or6e4cmu&FW3_w*aLQl55unE1YV!$ zeGVN*uxGIS`vQ9gO|M`};y-bW$^U^~o9SKhcM;zXpOg3;^L~Ya#GagBd)9xTurpCU z1cM8^6ZeF@VDExXFbs5p{b6{C`oM^ak>rw2&{L0KERT!lKFM=peXh*&spr}}-+B(t zb90`r^ZZ?(*FE?Dqdq~_66=h$CF{>z^28dIwJYnGb!tCOiu8dx zF5_|QaK`ik>%X~iWr>-)ELr#K+;#8d1inU+ufLpi{{D>S`5x={Z|-OEbLMBv&z##K zV{WJ1e!1<^4QlsFCvac54|1PmbU$@^!EDymyqy=+KH#xYA1}F_$C5FRFC8E~z~irG za0~R?Sji6Kwbnd>g*S&(u!v zHD2#t_zHXp{tfQI1HJ&CFFx=&e(z^_51)qH$#3Jm+)DllxCK5QPO$1GT;N8yp5^O^ z*TP5m3|9tAE)Orz2^>FIf)i{WKiI(MUe7i-8_o(RaQvX@6|9S1!HKJ)PcY|H;xe|| z((r;=Cx;Upw=ldQ#}B5S#4=7Wd3Iq|ae^7_gX!S|I)T?8jGqKY;{wo(Ask5@7hZ6v zUT`Q*0L`_Dqr(XrFF3Hc!T#*;eZvd(8cM!bpd07}dkyBekX=}Y9drWNetTSU8zT7s zlHRvv;XNEv@=qLVy@=5K-M_sHyo<-h=VjiTd<*CYTSDyw|H`twA9R8pz+SEYO0CS_H4`kE@T1>|hdcDsdX<1G8byqtrj* ze6UBbU zgO$V;uq>Ql_9?`Zae~FL5Ej6Ew(Uu9BHLL`fZ6!KESL#1U^-4Pjs0;3l2R34hwVw=NgU}SvZJ&d|>nn4%m-;-*AIrL-ByUVb5T^ zSkJxU`C0Ouo#*iU-j{CR`9Ety)(GS5ik^JHIyASCwJK{^UDs+aSj_V!YhoR(o2NiV z^QApt4VKQ@?DC2ZdaCcPTh&4OK)pVHw(~XpJ^8!yy%>G3M&EahpGWG?YM$F7qdriR z+t6+5_RW~vI=6lLS;q7LV>(?%_i66idSB=Muf0GA&^5n|9+Bx+$VUIT9s@fuX%;#Bz?fRvG5WxseRxD z*1K#>o+p>*I?x4@zmos0@GMbWm$`0WZj@&#o+eLpgmi-12mZwRbb*Y2WS#Wn1W&U5 zKOv(YP@@m%02yl^c%1dW>w(Akeh0h2Zp8=o{|$8mbb>=*?62t)z(kk|Gk!%q1A7H0 z!rX#R;QT_z4wl18uurfS^no)#CpZT-{46-{r#Jyz^b`0I4)9Po!3EzZevjw;2l0V$ zf(`#pybllf27C>^8cuN5mx~kJ!|(V4e4gKT7x8oOSv=q~yoXQ2r{I&kC%FYajtATv zy@HiD@_ui?1FkJja5bOdD(-c7WpRSbiW6MKXM|HOAfAT@oLl+?=Y$i?J(KNm299(( z+h%QHHE~rq!R%AncCxfM!4l%4aDo{N@PT>Voxonf)Z@borXEK=gZ-cv90OBeGCm*^ zVM6hOBiVQ304He14-O-afzj;OQGxRcM!+El-~;>P19-u(VL{^rd*cLqundh8=mxvO z2RT;c19-sp#R;}8y@El+f#C%94Vr#I7snhm|2^G(;9ab9ee;-)7hKi}j9ZjkCy*^+ z5Nr+q3h#&Q-~)vZ5;`)lh7k8I)IRV|PB4n+%V^LE4y~f+G|zFK_dNgQ z`OtHt=SuNBDia~kwRzt4Je=oezq{o*Je|OEz32p<`|G+eo8@EH-tJgMt$U6(UAuIPcR?R8wm^Tc(=PAACcE-%mVb?e`g zx$i08m+!NF@8z0WiEc#u3k z@_6aV2RdCKogj}rV=|dM$zwH-Ut>=`;4z+f+)Mr)7?0@SA3MPtZ??UH*T`#LWqA{1 ze1$xDx#Y$~FGwG#c+W;BP!f^ngy%3u-4wFVF!xd75>i2mE)5olcNG z@LxRskGw!P==1?yAo)G{_3Dy$Vu#HxS z6P&o5-pZ+krQrm#PsRrplP_eu>ICzNbJ@-(k)Hsy6U@W`X7Jc__Qf>z$y7XG3UM;= zX!g@YzzYr?-#UTg2hKN?5o6e=hk#yiF#8xMuvahwCvd*uh<(}j(73@q91nZp0DBO3 z3oqE~LmVf&z|O@D@Pejaunor%UeJsq48#TCeg6#a;duKe=z^&8?;=X)a<1>%3;KWzhTUP$!Vu!#un!D{ePKW7bb=AAlaYndL>W`!p~S=B z@It2-)aS@Nk9tn^JnK0(&%x;fdEV~H2|V}f14e7Y@g`|9`N z`>UxxLw+`6e%^W;WL|Hh^a5jUPovv8aeKQTj5=EG7h~=(_gRwrGxx3gI_dNQj|WLF z$e4bR$5O_0fjs6i=CL@5*OJMFTsC^_CV4z(^jIHXp$F8Y6Xf4WrxWPOy@=`j^yW!2`}B$~olc!g+Av&)@8IDO~hZ+~7xezz^XE z@F0AzIKczO3GRd{2;wx+VL#UgyX^s8YeggACRdy z!DQmm;RHt>MQ`WG$_ox>UmhA9dI;;`kdfg9hu{Qy!T$Th@Nk0t_u)7giW}?&L&$e8 zUZ4{|bA95@#S6B_1-7I9Z$sQVXnFWA+QhV1L*|m1&$pYP#8g!k%jCNjAmJMgW3o3 zJeTJ}&yjhq^xT=}Q={kHJP+r2*&c!C>^y(xdEN88=lxD6$T~5b$0Tb?)*9a zrw>gao{-?#7G&*Nv!XfAGt+!k(!+(yRSZuRzbTi4q=mvdj#`z4(q zWA4Y?r|#o)z|1`sTxU$u1&n#zFObXg9q0w= z0(I`XzrkOtXfEji8UMn%B;DZ8tP>relRvSpC;p4|xiB2H3ALs#p0Apva z7gXp4JA-|K-H7%I95=|ZgX|GxpWs+Lz;T0Fk8+=XXvPg5q5hFCA}+xLmcdH$#tF!E z0(%5<4s7^&IKlZu=M-EDI>ALh#u0FWi++FuJor{8IQLup+`sc0_eHPZ+^><}`&K77 z>kIs@&%>SYx#9$$4ktM6R$QPsfxUvYA7lAuxRLsQ1MxcE_qD|duI95`1($~tEW4C= zNpXS;iRbfq^??no6D-sTpcy|njkpfhls>^K;_`3;uRqWU8W!UMi`b?M!wF{1Bc2pY zn-gB(_`%d!^aqZE8PO-0bS!adIKhNT#R(?j1vCio)?dVJWuBNGta4>V?FOmo{RMY&)4Y%=6P<< z^L?KGvmO{{SIi+#YA?u|RL8o8bvnUfUS|Qz zY%bX=$bFPPko(S<`_+A%?q^=_`#c`<_^5p#j~$PrbONKtm&aPhJpM9H=CK-&)np>M zY)|=6{8Z=6XOzb6r3W$oS{7>^gHvC-`sjn%WEWfh3*aDb{t8 zKA;CAwHKJ{1U0&W{0<(E_#X22kvC58SopyHzokZieS)#XoJ-*RLP;mEM{ok96D%oC zunZS)+(7IRtR=QKO2S3IGeuNkNfT$CEzw`;d!_Ryh?hhw8 z_den`SpHgZf_sY>+(Y~#+)dBm^Kd8JffsxhZs&b`iuZFX-~^5zto}F@Cvc8o(<`{X zb%Ny|2`5;7Me%}5iQxFbDHpbVg2oHh^ZygihO@#696xCK1na^H=B^^H!~x)hQ(GvcsJ>{9p; zF`Zyfa@ia9Dsd=LI-TGk*2%#zvc$SiFot!9g3)tZp65L8tgd_VPjG|%_$=gQBN zpFLx}4cs=lopRgdwya}r=Q_GiT<*yU(hG7wW=s#z3(^NX4$M6cJU(2mkCXHPqsLKA zdZ))&9(NvtGO3ClpGTK<#)*Z@^Ozpbdh?^eT=ZdM{v8;P=)k`j(FG1K@vTnq`kSo_ zn7>w$E>K5(;FSt};AKcJsPmUtU-JUX@_ZG|(+Sc8>R7vg9w5(lpbI3=km~>$&6B6e z6TLtm$Y`EEU`!`4KGi`_PVk>RN74r}{(*J6fF96+KCnGrururi`oOTqiW86@3VOi= z{2;G6&IBXwNGHf1f%6MDJApm`=l;BBC%E{>_`pN>!4Ja=F8m(P z`z}0CxW9FRW=_G^dA+aV0AC3wI0q*<>x+<1a2GCcNAwADPJv!LE{96h8K)F1n(QgzCM^Zf_;A=`2nyWxeSGUV6Sij=NdZa&}$Q$YZ35* z=Kmz^$g*tLdV#%y?d84EE3ju^ub@{S=z?B7(pA>iaSPV(e28_T z6YK`N7xpIZ14ey7hQod(9zZ-0Mig{{QD8g-Mi+E~Jg0eH^BkAwLC=fgxiZh6o>x7m zCZ2=yJnZ?|^R(yeB+u=6zOQ{C>%wfFZ@nC--dPK+gJP{T zy3RbK`4aZwDa2$c%huUt#AV%L>jTzkYxoMDBg-4ImUne?gH=3F(hu~3l{`P4A)~M7 z`gq-VeSc39@1^w=-(!;RJw8wCJbun3w}IOsw~;ZoTgKd`>0HKoyXUqyO75qO?mzcq z&D%MF`#+BdkB{^N^E_^Pa)CUy(g%!F3VAHLZ0>QIZji^UF^^-9>+uDT^UU+uAIG|6 zEP0K8FG>ClwNCKHn?3gk-pLC#@iR&71?DdobOUqaOI3W4yygX#6TLumf%F4iz-43d zSMu5i(gTb-fMjk=7s&WD>qHNzT|ghGoj?z$z2GU9lPAd&9U##G%xf3W2NJ!Yc7xw> zzAoqkLqH$cA4U~)0)0THz*IQ)*VM0qeS-P0@KOFh5S;u7HS*!`g4INO1lcDz^A|C< z(76Qm37k)0pTPM9m%ybz#RYy0KVsbvWBkDXk9eU@@SSji3-1pn@Y(~Nz_Ei3_l6U! z|1vJ{Z{+tBC%B7i5#)2>1!sI37l1Q#g4>E0d_0_B?ajErO{Gt81Mxbz20l`p;0ivI zTn3l$880SY6h4qnuw(;HbWS)y;{~UO4|F=g2`gB?91l3P@`97`fhDjA7QlR%SDfG^ zw)qL_;3Hcpsx-d%uGh>=aI5ub^SO;sZEA;|A|-yx?8USVDh}!9Mr_a4vs4H^}w6 z!4}Z3P&>iatlJKDDC|hw33i4L!C$e=L6Y@iHtS}y9jz%6 zHKwciJ{t9>iyG8LeUhkC^N90Vww_tbvaT&;-6B}XI-_-8qCT333!KclQyQ$Vx|eOh!~$WKc7zEwrKq*w~O1z?X!TG+by@F+tO{D#P)C9!0oT6xxRLRI*$z#*#vFdS~cr4eX3mA2So}9qH ziTwNUZzca;4lB9K-JRg?EWZwKlxQxmRlG_ro2qCouRyv$#*M72d5LAIeZc&Mf-Ycg zl-dc*^@5~!gTJy~o~_UWl4rPM2V~~2sAt5Jh&q8ZPJkEKCs;;YO_b9f zrVhiI;PnQL6a11|Pu}LS<<-$Auvf7BGPsn_cQHP25nLGK2PdD44{ZRPVDZ`E1&hyQyPQG3j<}Y% zCi(;?tzg?NFHW$u^a+*_1t*xjuz0~dJU~u_6JQP;&-R~%6U>AeFdYw&V__;DFa;*D z-;O3uBpww`(2OA*L4G*<^{~nd4j~`O{yv!feo#2UsQrn`0WIU>DE{q|*uZWZhmcv|>MUIiPSLQAWVQg^@&^K*kj6bDHP8+6O#0 zrVpeOcz%^U=XxHV%IDAXv*+tLmv?bK7tiZmrAOS=)B)>(bs?Eet`it_0XXM!q{=#yi1Bh<$bPwnSuGa_5 zJH0>`_%AR%)j>~A@C46E^Z;|C{J!vb8=JWVzY8B|`UH zz_G*`#F;aqZkKrRCN1eg2_ehfbfC%EWA z9xqOC;djU%zy-d=&)y$SaPBvwPjK$N;RN;xbOPrStk(&?0C(X6ca~nkXUIPdpMqQA zlf1uMcz+)!ehhBrJ>LX3!gX+M^a&a#xQfqp1ze5~Tn3kf6P$bj`T4lOdBq7fupQR7 zPO$I{^3z}~Ua$sM!%DWDEQe)q3Y;8H;PnUg3T7^Vd90hu_C66#VB60j&IY|;CLG6p znZbUU-rWi87dU>P6HGXY{WqTdcqH+N=oRP%V-JNf>|+^)6O6;LGqOJm4O{3(ouk+y!^S9q^gf2~NL_|jIDx$a`vi_1EW5CBf^+eL_0cC-d=}f}OgJ4*!vogAT38iMV6Wh$ zIeuWT;Mf^~PB3K}Oob`J_6hWXcXEP#cw8Uo zbb=AAlXQaY5sc=2j$!>6Vt&Wb3&ye>=fAGz92k9qF8Zlm^j&p>E}WnX7s%+jxKAN^ z1-d}cr+7gh&hdRJALv6}=u>KiQ5Q)1Qd@KZ`vZNU&*pd%xmd5}^VqzC`2yB2pjIv< z4>zz5_O0q+dO^e`z53$?eTxsgo7!sLx2d=0QFpDq;R4|X=F-23%bTbZ^ex}-t>^s< z=>>X#wLfvWZ?zojIJcV+*aXD zZoBy%)b5qrJ)*rE_leX_pbxaPj+eb4`$OH)4_%j@*!Bssx72!pE|7FO!9VhW+6DeM zV+ZL3#_SPfOec6dF9;|2fBD=0JG@b$52O=hOcyY2s(6Jwc_$~>$n#z*=m9k^u$(+k zZvD?_o-UB_f8zwY!9Q|=Kl2=U8gzoB(+6Dc$qD|*dOabXz?e>8e4+z=z;$|p`QyPL z;?A%=cn#vP-@V!EAfh;*Af4do-@MuDXxw146R@looban~f*dzk%JNct;8a-gNO(bK zpJ4qjsoT&v0Z}Ko1THuJ3?KLj>vV#LSk?=^58uTH{sRwqfc)Fx1n1pH{3fsS4X#W0 zDpBwP{}!G!1)IM=XYEc;f96O6?P zntK);%zmd|Fy_GG1p5~!7={n*3wsC6+ycB{$nFKapy?OvLfjcX$Z@qJ>;T(xe91Pj z6+R#XsQ>-n>@^5B_X>J9KA;CkdO>gUEg<^@1ITp(eL%JW`vlVI1iP~C!>}77`|y2F`Zivm8_Xcr31$*!HPk*3PH+P2!wK4W67}{Z*2`RS zU0^v#(FLZ!-FTP)WU@5N~KA_Kp8-(llnRS8u+-?hr zo{8Hf{3$$Y0gts_;I@rkjGhn<7TY}Cp!PI-IW_v+Y+gSc&t8H3p!7c-AbikxTthm6 zy#dFUy7!hGbBbf>?VZ5BKzc#+t=@j@Af2GIS73i2Nhi<)(hGC|m(vN}dFND| ze3bWm6Y)mk^>8hpLq5W1Dqi5&K{Kb|65QuvxQNeue&Cz}#|;*rL%-l`;+bq4SbSQL za|-6I#s^li{Z@n*%v%~haMH=d;slNz%!cFVhZh`w67fX#!JHUBm_7>^fGIOsH-mU= zVQM(R(UYTBaP&lcZUVi6@j-J9!dTqka5xMX7{h)Z4WnQrE^sg$R47hR-^a*)fljdh z5PV<{^4*DpiM!$gyO6`qI}!B(7`z?F7-X+NC-8qGyk`KhfANAo9FI6b8AE8CfS!R~ zV6GEnpI{)l=mYi$wgtxxL@%&Upd0K0;R9Wb59kGZa-Q4+^n$&K`@k?rAFx-jKkwr} zIDqvB5l0YPC+K31p?w1B-T1&^#KT!0%lZ5W2ruZ%c~U3nTlqj=e4r1#g1!ym1bs`N zz}Ocr=*xLLm`=S3AIR93TA&jIvv~Y?m|d7doWo;5f4m@QeV~8i1K|XEK{|mkSV)v~ zfKR;RSkQxIy@UUZ8J= z9~dR(utd~J(@iIH{M*M09P83yV}7Ay1nC1uk>}V!`hYQ=AblWRAY=5?!Vm1R9SYfN z3m5o1fAeqj!0W7gtpj}^*+ibyK2UqXMxOIB7+>n(MV3VmNOS;mqdeEa|F%!?7k=(p zFv>H9bb&h7PLMue{8I=2#j^ad@KhDe(*-i>1j!TR$sfp*$2lh#C$LZ897D$qhCjx+ zo@k$73~?+pV+Z(vy@JLG$n6p60y6JctrML5Xxk%5Cs_9g^%ip6Amr`UU9)gXj~; zR;5=kpy?HKQCssqhuI_02gF{1eFD)3>=PJuf*d>033LISU>DA1$zYacH`eXW?-&Am zkq;%N6X*rQS>6wZlOI5o5e;38ALs?W=@azE3HmlZ5KhpW^IGr52Xun5ZUD6|qAswg*H)ktBszgLbE~F)T3hAhj%6JoS;k}G06Iai zoOM~dqmKI>f2-mLS>s)2?cb`nLFB7hw~EggzTi5aAFr3M6|Zj(!rvFaKU^i;Al{q( zf_VS&8T?$L7sTiEv&MGNkupy&a9gEIxgB+a*q*vpdO`GN?9sG+n(X16z&c4E2p8yE zJkOp%?AzGStqbae_KWmG`vv-e{iKZM_Ly`5^Kb*bKJ!*6$T>LKGtdiqc7oSgU-KHv@@f^$Hx*tXCf5I& zjVvc`=L9eEoEIu|0qOJsmph%{udJ(imgOXUAY<(X=DL7xkWNthK&KPv0+K#pe5!*d z%d#=i3DN~JrVo_Z^a$_*=Mv<6f?IGpv49XMtnUWcd?*ds_Mm{*+Oz>H~rkWS?LrPB3$JcPFq<&^W=dM5w)B z%0wJsLSa1dNF3k@7#mK|_`n$U^=S6HPB60gz(K?VssH;E_an-_xWF*tKE%BOonY8* zFc=ru6+Rq3FnAZ@j<7>X2hlIk z3Hq1bRQSMT{2=DFM9(V5wPMbTE^suDM}I5of6k3@eoT;K2VETV-F-ke$R2?%kkl@a zy@J*W{!Z=C@37d*~$@Pft($OnTxf}yy; zaN;N!qZhz9I117Urt1X1E>1xG&pyFoa=kz&Xyy_;N*#S9oIo$g9>Io(`OXg6Be>|7 z)Ofh;7xW0Aae|+Q6I}Wb_bd2eIKjo=<9Xl33mzzag8O-m`^di;PH^s5!wJs&3h_%g z!N2i)zK9Rp%{2(0htI{>!8xBH%I)weJm6ONB<~L=a85yvADn(8%h%H%xQ@?pO*p}t zt645iu<9~gpg6(O3;Em^!1-`4pC2!1dIaZC|IZ?)N1zil;|J^Tfi<|mDwbFBKNMHM za+a5}E#(wEUyseS9eUc+8u<4nKr^R5*cNV6WhCz2E@y{lW)E4aEaMC-54CgN8(( zVEFFg1;cmcID*Cpb}CM=BTldb#~3)b!229JcF?%MfZ_vvn_j`@`G)W5%`w_*Gtn#P zYWf8ISs%TEu4XQQ^9i=)Tohi=n_fW|y@J*Yb|oK7o!<={H`t@s7WhDrPOvYJ?aMm* z1Uf-@K|jV0!U^<(k<{%`M9~k%^xCrV0lnaG^5_%vWBg!C&VyUx1zR>=a1?PO&zV5f z3Bm`qEKV?h^YH+_vkl-}9UMzcrjhFdxvRGgAe_KBs99dZy4ne>|3TE+WzF)S;st}K!vpbv7G0nd-5`8m z5I$f&u!-g?yXDzC&>7-+@w2|B;|3A+kHFs>eT!wR(_!on=rc;?I5u|!UtM^TENe^Za$cYbJ>e=JEs$5jIo^T-{@`bFJtVx@B$q#Jd@IHddUM>mF5<)zk0OpQ*c&i+ z9!+?FF>>eLrVC_@aRcY*w)1q~I*;HD{{EBK$kP1doLe98MhfTj~XD9yj<+aRTCrzovHK0E>w4;yQ##c-+oyt@-z{v*~s#N$7J2jP40AMijp!A19n6F7Eo!Pnty#RgaK7mf457;L-{U*2}oM7Fx-JQU(gH@N~1DC-i za4`;W5%EH}fc!kXU;~^3XX65AvTY#y1ShWzC$Lwr*$Ga?3t%2TFz;kMUI3=OI)OeA(f6Vg z7^AnL8*JUYXWxIgK>PXpoasP%k=tVd=t@Sn)%?vdwrA~GZr9k}t&izuwX2z*0PZ_I zF7}~bFtBkwUBGol_jS0SV@HwaF)^LvMsGBR6X*u6vro_u95aaHD|=D)r5vw{F)Q^aGtB(FG>3?kI?{G2I}Xz%jFMf!_Qbm^;5F=isITqz5?embw1_ zcX;D%c%Aj~8ob)UCYF;*1S3+VzGpJBbE z3uJtnb@Ja;H2+gY`an8?vG#$?pJcuKC+Gm3(RIIvKNKDhCvYx-eS)FCiyndV2}VNt zK+`AqEj0z~5gZ5h3Fbi4BOoro3v_~0U>Vpaa4x|r;%UUDPe9ZOHvE#BO>}_)?J4aTwD4CR}rslonX}^trIwQpbyw1ICXt@ zC(sLYf|E~UJFVgVMzDAl+f7#B0n3XMEDa}^SDfIaMQr2w;RO1?97rcPzH)+@GuS87 z*+0{8fMekpm;#eauV7+_6O0chIBF~&a2Om~oM03Y4j&04Z~>g)aGjux9i$W3BM_ay z|Ccy?57@1+YxsapFl4820{a8bGi=y~K0z{wV{jnL1Bm#*_I-(4K<{vZL7pe1tBHC+ zALz@n^oIek73ZG!v3?tJyRgcGC}WUt^5&Y`0ryuh&o=NTHq4ID$renE^Iq#F#t4Wd`z7=q{G$(+~i863lU zdj?ZE_j^vCM(pkdIgSusV2$v5W?+38)O`1h*w&$}NybhmsB2u*y@Axft-(4N-<6|h z5WRwQgw_WJ;s=f+WUbBKK`dL3Pv!NDk;nJ=u6>gsmse;B`bV@K~A7@e})8^ zPtZ64KA;nba|;_M_$~DT>=Eb#&Lv1Ea4tbQ!2!O*p~YtGR~a zs^SEfvJRU01Q)UnR-7MRuwp&i;hg9bEIo@@jU6mm+d4t^2^KA98=i^}EX4szpTMz$ z6Bn=y_6bg$OFSu@V9p%kY&aeln8kjfPoNVVH;w$*aDwT_6fc;>zMJ@FuVW?){E%>haXmPJV+W)5ZF>X4EGhVDe% zF~$t^fg#&+yvZQ^0F3qubb_W=&^LTwP!~~p;ReunLF8SWJNiKM3v_~BO~2rMtP{Q9 z{h$}58+?#lCrBJa&<7Id6^Ok8y}(|9a|>jD&Szv zu;~Sa7qmW*;|B5k@QQd%U$6Z={=OXB@cpD8So`DswfzA7CVK)oR$zZ1w?*40$exPZ zE1h6aH_ys#93Bu}b^_1MeG)zpZV>w{oi6ra-2*e*rYsBPL@=ajOTqo${W!7zkjOOwZyx74DEO+ue z>*TqL|G!S~46h}Bu6UZfrY9e;{wI2Xxlx|#KnHjd(giX;!Mb#U%vpX9Z1*_lW2pNC z&GiP4MW4W4L5>?7^Bd|4*e5t1bb@B=fS69u^a&n~{(wFp_6bBM$Z-RE1e=|JTpwt9 z1jNP(eoFii>mQ0f!DSDI6I}Wq_`w6@-@*s}op@hyg0B}RxVLoz#}4choOd^T9v8T? zb%G6_CcmBcbQ_*>EAbPBoAH5<7ALrY_kBG+a4qo~T;L<&18c9~b6w77)CVpJCs=h6 z%NO7SI>EWDTOUra>}+}iXGM?Tl+$nlSiH9M3RXp*Kp${E!J?(%1oha#yoIb=P@G^M z@x;QM)(MWA#Xgyd3rr7=JGMB%6!zC-)=dg0aO_~S6O3cO9s$J(jy@C@7y~%L;iF(A z`3T}cF>Y`;eFB}J@q(d5*#~zVQaJ%Wa1iJOO^;v~9@{B=U~``UA8_no@HUkb48RA# zKEcj?$$Ph6pbzK;*)OQBO|)O28@!unuOOWu<{X9>*em!TkMGF&W+&JMc4eLY0=;05 zg1v&Acc>G@ID&HuV$Naq3*x%O@PgHhu03eStFsnG?>fi3qraU_kYflL z(+#YTSr@Zr#`kK+5t8(R>=$H@KKk|9yH793zJBx!tl>GX5RTw{0&9FbrVwu6@=Bg- z%*XYDPRGdKmoAd^KfT5JugA3SKgL9&7ZRS3Uf^d>AJC6t`^5M`Jw{NE&2&0JxS4YY z^t5n;m_rcbJ+bd%ABGQvt^%r9*{Kp${j9252iV*DWb0^tIA48=IXmc<9`4>(p8 zE|5N&y@BWp#Bpie*9W4%6@3BgzrBDQGq5*cKfra46IlOs0`t5MCtM)=1NuPZanCRR ze&V{`w>m+3KxfnmUM*}Q_C)Ok=>i!y@-r_Lbb>m6f#pOGFgMC`9q0vr>w&+r?%5vr z3+obnKy-qPPnTt5l3rl^Q-v;2lTPp?>z^v<04_fP=EfSmpknj&aNP95G(6xKn1UNj!V8WrJ%R~1!IAU_@PV99(DVupV|fhwSq_OlLG1+N z4!{j`0@*hhxeq=7O|M`Gad+4a2fzoKIflEG9>Gq;9bvoZ5e(TTe4vSg$Oqy9G64EP z@9=@`yKnnP@HerUW<^|Cx#QmoWpQ~xL-lcFK`^;D9+KM zjOkL25!7y=ce!1|zoJ(YeF4`+Z=jt&5OW7&u4p!^>!UwK+koZ0LPV@;b`8F$2`>H``MtdESBPK21@0+6@CD*s z(I+_f4xHpOxCu^h&Zl@kw-IkGJ%W!D;k1tuZ{mI52-o8P*Rk$e;zvL)xU%gNIG_D?YFu4=7HsTqig)oM72Hw$objHI)-AXB(axPOtzcuuq^D=mbrlU_RS< zUKu+$kqGGoC(a5V&2vnNMR3LV7I_tfnx{u2pS*Qkz)%d&*OvuustR3VOZO2^t^h;`ohw7C4Te8`vvIC-@g~-5|ZdYZ2nU1<@wy%r(+1$sd{4?TQ9H;DR@*CRx)!1?XgsQA9x)~j>^ z=g4P`b38n2pmXZY>+i}@KVzOj`@OpT&YeEs{fyEDTo-;2j*vbO*CbfWy=GBA$Y>td zE5`VMV+wiwVqRa6{eig7(bq}`X>&aw-iPm{ol6+=33FaV+>0URP54=}H_~p0aHMt{ zS@+v*mVT8U(0$Cn?H+EX3*;Qa?CIpVPxJ(0&OrBhgfXu)e6aO^sQ>M8p%;kt-(x1` zq{RF|kEM3JAbcRlt?UJ)8|2&pqsM4FHsE~O>=8s?pml)g5p?zibb*{dV6Fproq^*7 z(HqbQf>Ffo^9laW@*5R;!D}77%5t)ayyg{_<>e}FEXziDsp3WQ2!ilFGwda{;{ABJO$|mdVqQQfHCtY$p28l3F>YD4gJmAK(Jt4=(*K*Cjpx--i3c3G5SG z{0;b8IKhQq2`6ag6Womtd>&803C{gou>Lc}32qN3Sbr!5W-kHQP*9mL9>W z#HDab^a>U&E>5tBI3Fi~6X)RqClOD8IpoK)A7&9}!VH)mJ}?U>m~{+3Fa;NwL_C`P zHj#V+j1MoEJnqe2lgF}eVe(WtUqOr`#Jt0CoR|Ghg7(#kMeD92V8AUD1`xex0VBf&&>-B?(URxLQ>h%NbV9d4G6}&dz zodZ7;Y5X!|he~2HbYeB}~`a zYIBbuJxmX9o7eL_94`=Ez^Ko)a|z?#RM`*8m_F$K52A;ZJ`hgOzwv_THF+&T_&_^v zAm$0QPLMr=Vo-*9UUkAg?*FPmoUF*uk05%q1Xhc7k7q6I?=+D?lf>^5^sl zeilw}<&TRK{E+w{PJj>CCvfcGvTwuvl@okDoZ#Ynd0m`f^Blu3a!rCx0O#Hbcfe

`4V+KVxWORe02qh|^n<<} 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�%=+1#$rT1gS@$y4CuaJ2>QBIe~DWfO!KrL$JOu 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

I9uDufho~%}&sb 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

jrqjKwKch@9$G^ zgX1Cf4EWuiIfMjGki6hn#`xq1jPLlsh~xxqk_!x@Z=fHH!VUH^=@*PhUch<#1v&xq z2+0YYL%<7$>IKXp48jQpjbSchKOWCMki0-Q0DA=^VFb@bFBn2XSA3w??mTCD1>NZt zIDgO;CvXnI^#y4jp(h@-3pGx#BYvzGbMHdf zqmY~c7x2CW2Y`DH^nybmdIaGF&KuY#aPD9#G&#ZVa00x*`x2Z9>0U*+K>E8!q;m(! z2}t)LUP|f&?nCq*hI7bpg0!9hA4oj{GOaJf1s3W9!uap{LY*LdAk7=R&NzYtxVA8@ zFC-i14%WO%ulyCpK}di5=ogHcc);Tjdk~xY1TQr^fj;mI$L=|ZHHOhAcGHwoWMT8h6ULPQlH=kJYXKr=X&xw@)~Gx0_P4M{yxm+8eCF*;3BSxPH;YX z9-Nz<;Gwg~GjV}gaC&xvwC~`Q>;?7-9yqDFPp}#%&W1mOmz zE)d6hfSzDVqZ4?n7dWS2O87vyfF2Np3q)SQ$E<57h*~eu1p=MG-ho*=f&Bt~AW|m? zPl$d&_&|6-ctK<81iC;t!CBOz3q-KSVEtL)Q!@C3x<(fWzRU?e;B(~tl2Lp7Ud6lA z(&z&o>jQc~r1c+|HvsztJK_QM31Z%$A1>f}f^@H<-{&5|Xfpkc1Drq~7za8*`nyN} zR@N7i-p^Pk&Kp#l+25<2HUGRXqPjCUpY2E-Aa4mtjzVHgr2j+tJCP;e@ zaD=oEk!-quAubSe2e~b}qDP<;ya3O?2tR=z;Q~K|@PcQv6FmD=c7kU&@^5j1t=1E) zPOy9g zuea=p56DpJA+S630O-&ALi#};-Y2~Z-Eo1Q*$JXgaQjZ#2^Q~w6G%IJplxB>(l2Pk z`;MO#q6-8!Q|k$GQ$ZiF4lgjn1?E#rIDwwfk`sgrM7HDwjc(vP!W=Ne4Qell9zo0< zm^C_rP7tXJ)PxV1jXeX8^@5l`XmkR7z;mXY4Z47w-MYEf18{+ucEgv+X2h_aBvAkRH4t1adH1am* z@Bkg5J!y}?{RTS0uHagNfn@3v-~q!q-izE<@PPy2J1`Ey3G5L}#1HEAg{en?7o_!t z_<-{Ur;_RZh16%g!Os9ZzV1gz2P8ScD~yA`U`zy^AgwQanQ<1v z3G{+`EkW%B_6c5i5g+(5F7Ttu37*3Po+(c7^dCFH=11uftj7<)xr3)4gf)Dh)um5x zKY1S>a1Y!Kl@ru`0-fNAg*;wa05@kRc>D%jU>;n@bGoMV2yQMw>WA4ei0AsE`fFI}td*B0ur?uI# z2Wtz4;RJ*60T~Lzm_rygh4GynA;k|;;shfSoKH@GC*TTuGl!rPjKB$8Q!q013aAgo z2@WOMhp@-N}KzanyfA2QQ3;HmJ&}Rhwf?AE)ZU@lTLt#=>~ttHQye{R(ip}fI&(#P1v+x<&5}$HjK55`%jwO7+{ICUT7qEU0B6R|fO?jtK`+zRsu?b&;Z{h?y z!p_kBt^7BSbb|iW&Kv9r>HdZIK)P4a|H)2pFsTn525HX$8TT)Y^@a7k!3)M4F|9Ae3s%dkj9Ks?IByX5CP?=*#t9w;=ME(HA;x_PVtt{#g0$!0XSe{o z@Kg9n=@a~bd;vFjp3ix<*$JL`k{-cE*pT}K&K>9jn;$Mt@KAAr2k?Sb_`u5S1e@+5 z?}p+88}HJ!Xr?h}L)teJ@u-~($;&Q9>aG_J8ufDbr#uzE6HFsbwj zj>QG=0rwp=Il*|2561xxD^4&j&mZUm_uvKhjD-VmgZ*)W{a`d+us1mhaDv!(kepx$ z$B@<(3?%!*09>&T?~%TEL9ar05+6wO2VIH}bie^{1J@L!UO~IuBXFHzc!7HnqfcNi z0G+@L!U^;MYaJlm!1~5=PAAX>BCYj+8XZ9o&eLCs1tJ@r zKpzNnf<`Z}e-J)kh7&l45Kdq%I)OCy3Uq?toYuKFV5XYiQIi)iHsJ-y2gvPkg6(hv z=MQ#*)Gs)lv8_TU=z;-!qjE@`yV|hIG4DbT?Ah@=`xr5zUSKxZX-Gp9&e?zg) zo;>$GbDv<>!PLbGy6(pKKR_pdIDxq?7YED&v=0#vxSm=c zaNmJFg7AU(I|r#p@T=kk_(19tyv~>b;RN?m$Gm|)(C7qdEx{{{hq!=V5c>|o2hzQY ze$F_J2Ruz~CZkW_yg@=I_%ZwlANV0Y@B;aKvlBe?6!nwY31Tl|I6>+WtmSJzRGeUS zc7mr?{;?B0xs0_1OX(Tt1-EA(*tnQnga_aSPuxP@T%2G&IWIfGW7qM#u7SBc$2o8n z&-V(rym-N7)U$J+!2O8!2_C+HJg@k`*?I23^#txkv`^r^1N#KY2lRrIOP^pG3E>5+ zkHZc00&w3!>Jd!91CD|t0Vi1zf;hLHI!G6}02HJ#z@#X3|>2Huynn zXw~cn;R2E21d-tbxsA=?qtN3_$flgrE=mxbHgb&y= znB73EF$gEHUl2}UEsZ|Vk{9R$$rHGaO>V$ga}MXvYIcG))b)sRAbEhj0_G9+ z5PJozE3j7(IfC;ZkH8D`fsv(OVCn?T;02S~Bq!MWm{v_bF!D%h8PDg26X*rwDlcFT zVUIG0pckZm!T$6Lm_u;Q;clbx0G(hjp5Jhu-*ApuQ?TnEFqr2K-3Q?YgK&Y}3Vrkf z=Mi$Bpp$NpynySvQ}Kcwx#m0KW9^$sa|vH7ZeV`p0*t}DUz_-X`aeMr2=s#BQ|jQ$ zyrA}gsC9vsoZvmq*VH~>9WG$%12wpSUf@~+=MMCNu8`&pNP7fvKjUFI!3fX^n${BF z0?r*A@@C#|a3pyY=meACcu4mu!U;}-|EIh&jk2=3)^+`1VrT_XL}M5GCPuMAM0!L81W}PrL5+!RG%?4Ma2iL(NmLYL`={>n z&b8*=tG0#bCQ71Xr>4eTdh+%kMZ)-$3^((!Gjq<=F3Q>`vhKD#|#)@A!8g_>5u33Et)!^H#v_ zRg^jb9^e^)&lf5quzMQ6&h-_1mcViXe86&oSA!E+J|HLfP2}Z}6FmPS^$)6PzHE6P%9^oR@V1 z`9Q`A&cF?31}BggY?>CFU?WbToM6ML(FsoGJ(>_1OFao67#%Z$5g{X3BPW2>jRD(t zP>cUnMJn)v@{kieG=!gp!Fa%+$iT!23h@9~(L4G8Zg77APH-Z0jdTg~1nM6sC%CsQ z9w6F4eyDfzJHe3;cwUgYfF9Seyuf`x)qUVL*0+LJt=$Ra0$O{O6UYOE)~Oe0otqWN z2jmE;7sv^e5qM2~!21XC0l9(K+}VQMtRQs*cLa9<^$fID748D6m&9Y$1u&m$jVk>F z?;j{D=oC4AUYq9bbI1umeS?A&JU~v+M_d%$fP6r1Fwpu4TsP$gasiw`GX{fM4<rU%Ff0OaDpf*<1taC}eB zD_)?Pf==om;0DLL6R7?Z?@QZ2UR&Oq|JDikeh_goM7yG!3oqikPoPDa5|V1-~kyYzyUlbXtC!2ADDlL-vNK(_X5@C3t3+Q%Ro+W zH7Fy{y^5@FfD2^qU&z{K38?M_HcRjhzpH=G?{M&0f?Ox?S%S>H3Em1hfzJ|Xp1}7U zcurvVCU}D^{`JHO@Bz&eSVr(F|K91+e_UIIDusa zPvHhTVFx^cXKds9ZiUBM<^<1f?&}b80{Otb z?V}gu;{k1Og1oE`xEII?+zaFa!u>!sb%IBwqIe|NY`@s$Tx5D!Rc|f|> zu^hm0C-A($s~&epkP|q|;#yTc;8l5n`@zw?z+K>LUci4V7jPDG&0(#qKt9k8FX%*0 z(1~>?t?`26=YpI-Zos-g$P0K(S%KvP(FyvK4~RY&kqJ--$_?-U7ypA86wBm=o|?8h9w5q9em#H3-}U|fe}4T}JXawPaNGyHe#V~(c|c086CB~sKLOPgcLJ{; z@#lvVj^+gK^EJ+2S%YQ?Iztzb6ZD3{{|Y{!&qgi)ye4*t8@9=vX%n5$S?|G0D_|TcltmYWx1kbL-1y;ZVa9_*`mg59>!(DJE+yS?R z-oegWcuhCL4G}rPwb2Q#PP|}QPEN2GC%7bf!Ghof+IJw-KX`mLTojzZyx=_C;2by` zW@Vk=kuz9Nk6tj1_hD-EfzzTBObSjQA6P#g7Z?X)f)AJ%jAT6=nxGLEXn;Dh0g*aE zMeqT6fpUU}2FI*mAU_*L(4S*DfhdHYfETPNzya_A_W{caI`eY{?gCcxV;`YS$O)G7 zJILKYE+98>7f7pnfjmI#JK^>OcL6;n7jQf;P<0>h>RzB@ty3qE56A-?xqy3tG6Ok) zdw^HDz}1n|3zQXjULY56A8;4YvD`o?BXBqH9zr@-VA%oZ?oyB|xDUt$pq=W1KqsoX zfVlxKAP>L`y3dgha9tB}0S6ZdIRV$g+5FoWN9eCQn@r$Bu90L1#qt9=!3D|)@PZ5E z2V83fIY9}IP{v$=@_{mD3@Sj5P;m|ppv-`^e4s)-1G#~G;3vTgYI#gPP)kNoKa*TQ zUXXEvyynIkdCg7C6u1}IOo8?vXn*3VFiAeZ_oj~^Kadwx-~|=(f-yWd^7qG?) ztbfqR^}n9iQXjH{fmOU_oWQdJn=cs3c_A-QR?xec>;IrY?;>g+&Sf9YDOIxt$_l#o z4sKw5gl@Q)+yEc2KEglY1#NlXEGr0kL6|$_u{?+O*4C=N_CNbJ*IXy~oY(Kj1GIJ@ z@cJo_iPoIp2#-5*0P#_RT)>ar3qIsA=L6QlT|kxVza3M}3Gjd};7-sFCs0mcpK%bK zpoVID5dX|90gMJYK{`vIoM0+w&w-pk_bL*zG&|JAq~l zweLV#fjhy@8=@0jhx@=2*Wd*|i%zhN^8o4{XwFc*1I-g`TLhQj0}G-P%nMGi<>KfB z7vcosd_3UXh@9Xo&NXb756p;6k2%2<>SR0sHk}%LV8cXwK#YfR!3pFAnXF(09?%4h zF@CABmKERx#rQx8J%qu`7nEp? zBZxAbpp49*0xzgwEf1)omr%yMp{;R(YSy*P5tt8{6Yv-wP>&DPQyb+3f*wLWnL)iO zj?gGin8DWw^8&ul6dqF#L0*6p)RGlcaKB>%AE=TOjO96vjb1QXPJqKeSrfI1*U-r8 zie4~KJ%l=5Uk$HanL!0EG?c2WUWoOgN%R*z>5 z!3n7U#C!Auzzeh&L30IRpCZRC96-nXe6;$Q9{;xS6|d)uK_2Yz(ShvPu9v8Vja1<~29!~HB=mg#V68Z+csQq9dPM}!=Wdxcfr~~B$+JiWp zs=k5tAdY*F`9kWcRDJG|d_cVe%@=B(Ku%zvb3i>`PVn!{7J}yl^AjgnawyCfYMwxQ z4)hrZ_BjXC)CrUk=-vc2OF-3UB>w{L0-G;pocIsmJ|_95Z~o)c_( zD{+F~a!mtsf;YGhzRC5G>N$a&Kt8Yw%n4rOIt{tK1DhpyCEGiY6C8LE4&ViFV1ICe z=XbYs0>5XGIl(sEU@PByOG_u%vk@0qpE$v4p3B3qlIOL8=Z6m{C-50V-+Q2(AmaqL z;sLk7jgcFI56B62Tmx4JFW7!1^@`{Omjx$yVlh=LicT<(ItS)*?k0Wlh{8wn$z2^x7{ z8=yXTft*17gVhx{fhgnsFNGm67zRZr7)Tv}6Z8#OPS86zf%*q43X&c|S6rYAe$asm z_qV6E4Y&`a8NoeySszedAmjyJwU!e&a)ZUo@&Y-5&ZZB zp(;|zIj9Uh1i68*eTw7+cAvu{&YS4Z`IHyP2YPe9soj4>72WUwXm`Bw0z3`!wf+HX zQ176f+<-oUxj`Q9<#(2^cP)v%P~%PVi*N3HEKn1-8Ot(Frz( zoM6v}tP?!DhV^QEU{!R22YGG}@Emc1UH9SzcL$!ni^o8{gQst&-Wqd)n|WRMfG{7p zE^&gZcOI0Y}5NIzi$bsQc5>rVh137`*z#j6go1{6M%5 z=rQ*JRe69i1J4Iy&0pNc9#fSMh)#m6z>pIxBqP8Nx|1OU7vQ=^R?r8m$_3`+Hy6d) z|EGAs#qxqs2lBYG0`mfL1i66La)UB+0#(<+ zpda*!eFVIq`;YJgaiR!b;IjptI&|5^&a)Q(cQZJAPIH?ch zI>9G=oj8*4anAaiyue*RRc_!UJ|HjnK0fe+zclCl5Ke>wkQ2xUieV@&kZ}Um$_X?} zFcQ=|7|Zp40!}aqPGvm>lqf4Kz<6C-8d{ zXrACY(0rlYzwq5KOQ5}oey<{T0`D6fZNAVmg0yd7pL6gQ*QMX`?^du`0&406w&&mt zuAw-9?>Wfy4%`Q*`(EW5j|ccZM9mm#p5S2W1kd9Fpq${qUe-8)%@{tzfB!T*#qkc< z&U#yL0_{7n-oa+-CLF+>U@ac7Ci(zQu zT;QgF`Ug9%hiiiqsCS^f2g(VaSO!bsGQbHuBiOc(^CafOoUc29e84y_>jax;g`7aW zgUvIe51dY&7JXncRh)tgObR){#_>3Th)$raz?@)oa01O3u4~NZ1l~JXT@`(xf?5Vc zae)%t0JQhup&}RI110 z$N`ptsvJOT)m$Ht6UYZrEGxhRaD#T{16l_!I36dE2gnJO703mgUeODBkrf0d;5sKi zQ2)Rx*FGFTK2R(dzyXT2HWy&6{=tQL&82bxkQY=iPf&3_eS53%_`JO48p{Zj6W|8) z5o#TG0;|CX8m)hzHP?JOf@KBr0dfNR2=aj@dIycn8aCkrjnjC1DqcWVAnMqEAgaX4 z{GAg7ZouBeim^P`ljH=z9)yZfNnX&18w?9xP~5=ltrfgRWds=~h(1t)2Mopo@Pm*U z&_j?H^urMbKp)PvyA!w%c>SC|6Q9ASN!9vq5xGE0t`~gFpXd63jt?ie6MVp9NAUt>1nr>{4&Y9p zzJccicJD&GKu%zL5Tg^QZy+a7Mj#(BCwMRJIiQ{nz7Nr72`nSP2`&=R2Q**keS?Lp z7at0J1LXvoCAboNmOxJ6dk!>Dkj@vH6Z{LmN5T6B+IJu)@Ou?K$lCWD$O%O11iFWz zKKsb;Rb)BAn_S<(=Lx)Tpq!x9JqPXsIDzE^RC$5t1P6b`@k<=PNIe*xU>|ia?15*) zJi&7~!E-o)W(-p&*cY8(?;|+DMzR9fyB;@K2WxPG)xisPt)#99PT;)*Il(i(j85>2 zR-E9*tP^P8!IRg;oIpMRJFaY*6KI~`iAB*17E%{PCz!`Mn-iH$y$Bz;5YER3&W*i; zS**{3Gb3kk-e=$g(|Hfv38vrzr@|>XfS8o{z}V0`u>Ju)pqyac2xx*~I6-6V9n?~5 zLQY^_P?>dthf8sSA-F(s@PUjI$Oj4|@_~Yw6Py@(2l&7PU7{Csrgq3Wf$cxY=jW~s zjY)t&E_UIYYTYNkm>yN={IU8^{UF526p0 zogaD!RXBpV0R4j+TtH4xcMhHawagaOGF#9%i|aYm;RdSa1#*I)Fi%Kkp!tF(oS=!E zU<6*!L=QnUa<60M1agAL$-xV>2chm%zOQ+KI|0{!+(5I2+JjIBKg;)6r%s@Z;K$G(ieboqkrO}}Xuhx!hJl=5 z6u1*;mf#dP?Y%f(NVPo&|H&)?sBa*AAEI&sWdyn}L3(e3C5LbVP~X6F0^f(IjNp1u zPH+?0J&oVx_aGi{2i5i*L?_UU;c^_ndIzlC3p7XY(A%MJ;Cl|#H%NO2asu0PK+W8% z2rtO&Igk$|PGEZuUT=MtKwe-@@SAK-keMgI3Di3{urE5n?$A5XjG;NfPJH0W-~{`( z;Rjn`OUMcKZf={%O}z0`-0;=u#S%drA zLL1ikAuEs<$OD$gdUvdPtTivtW4S&cFG%wNtuHh4|tUih$Jh>mkU5U{GbyVfjI#)hsWav zqPx66Il(1z0xd47(m0p6ff*QO)J%l>eb#epw0A3&$u(kRI^bs1*;@|$%CXPj;zy-_) zXD5;sSRX-7(1rKP+<^D33r^6P_plRHet;L)y$dp4!2c`X88?s*$O~F? z19yS6e#+Mhxq#{?2}f8v?g3s?A2`g{=~z{yKA`mnARq9`+MVEse{Ie?0X!p+6AS`5 zf$nLnS%O+<0NtBF8G-g8+P#XX6Wu1qfz21b8=OEHfzKEE=OJnjqRkgll@rJbY@Xn4t{1F5 zCuq?(cq=$T=Dq}Pat#EZFWmV?$OwF%pv8RQYh1Tq;M;7;&t zbOP%i{1P{~3-07~+zz+FEx`wN-blRxt~{uF{U^`B*eR1@Hg*>(Z=HmtPU=Cc2 z7tD?s!G$3wFef;N^LsYTg0nzb!OV~owB`hwDcCd#FPMl6j1OKQC)jWjjDgX(z(^R; zx)ZF$3)a*?W%PkEeg=k;7nB4q(467J#r$jx#03TfFL=WMi=3bhkL3m23FHEf{6Mtk26yqeT)=(6s~n&;QXgWB>nQ8e z+4K(N1eO(0-3@R8cY_*vf%!mif;yZ)d4c@Ey`YYsLfzST0Dhp%AUFYQIYGt^$Oz~o zC?6Q1{s9b^6EIgWEINTcFHxVPTtiOKATMD5K@CnIFOU;d(LWHjH*s{x39NrGg4bbA zfD6bAhQ+)9Cn&Dw^;dy10&18mz!4HJkQ?+V=DZFBoWS}AIDzI1SL7Ee6f0KVJ;{(<= zpxT~;*SPk+&NY~7dk(1P1h2Gof)_b{@i#cZ%kWax2`nerA9I2|)aV4yKh1x?6P^q? zft~4 zFg0WZw)bE%@5!kgpTc`Ii8_HgK5`Ou3>?J?wC_MUfii;B3A7(ElM|HS1;rsN(2U`# z0U;xBCwQnZI6-F4(49a&;I!vwtOHPO??FDbO+YT-ULY6Hu{=O)cLDbTc|a~{X5d+Y zJAsbn0y=KZ3FHIfmRSEDCrC2`d4XKOt9(GmX-1&6yMb4^fwPRYkO!!yZjiV@-V)B6 z9S0}S+@WOz>_=!P76&irPPL3cPJkPj3&;oL1^7TAGX+k+`DEeH4<|4eh*fTo0WT<# z3;Z;=K)HMX52%W@JUT&*9y7QGlNZz&T&vliSVLx@oS+6bXrO9sS%G{Y_7R%ce=rP& z%Ll0D1@ZwH3Bv_G(8NqZaDx2iVe}7%krgyd=6kaLK>dRnd4bOr$PeTMnR!FJ<|ML% z(Yywnpd1${9l`4}A86A&q=EhcPEcgfLm@9PFYv6O3=bHJKMkc0;k-pBD5NSQu)Lrz zRZc*)%%E4&Lnz=q>V^-T2tULZ96d!NVS-&))WROJHB=d8tN zN!9vO_**M{!ed9ktJcE3;3L+Kdw|yu`7`lB4v7!Q362B#KmiV*zCm9cKpBC3#(|sw zAILZX>k$GUI0@{t5OD!Hfii+AFb#YkqWT8%fs7O20orpQ9}sgv8NtFsAtShyYED3P zC%F1gF(-&Vkj@e)C%8Rz0vzD(f8lp7)$UF3dwy55wta}Kl@n;sfmjQ=FM)sdQN{^y z1N-cw)Cu0;`Ui3X^$l#k5EuB`o`dKF>KP~}@L2*mf%YA|@G{^82Va1L@H}6$ANIl? zoM0C`131C+JMn=XxWIPU7M)-V^-;WFGaj&sx*t zIl+ba!37~Fc>G-IIdC@2;yj;;1KgAd3F9_kN$p)i{h zJXpZ`M1GD0USPe0F8pkX&d>qcL)+*DZGscX2jl^{$OGI3+znK}$q76+@am2rA8gxl^Ilo9zszWE`SsC8k*nSYe*Zs zAivq1fV`kUC^NtZdiA1a@&de|fcHY+1YK}~F7ytB`U#d5;0HEyh!e;Qlofn;@`A6p z4vQ}$pC?soc|b1m0wFi}B&k{-iO2=CRuvz$!eJg0A10(;@IH@&_YIU2Xuhz3Dkta< z<^)vb1pXNZ);GWh?EZ!LfSh1Fr1OQDoZvr0PN3d_->XRXB~VV_eSdDRXc+-cARn;3h`;CeH|V~`D?u57?qQhr4c2q4 ztibMJ_*U=%cY@4(;hVt;JR|rd&%Huwz-`1WTe1ENaCG=7!#ZGJ-7^1~g;1<=m_jJa$%ag2!-z%`;nZ zg2}i5SWYmB^+cEuoM7X)tP?0F(B6X$BdAUI08X&Bk@vWsbscNS%o9|G{(bf?mq@Hg6_-~bRi!I@LtLXIL`DCIU-CkR3PLO)RXMCNG=uGAFKkYuqW2Ay6X^bhBI5+Cl@n;c!5aL) z?pMTGP9Pr;o54Qk;I~}AV5`6fG*94t1Dhv!gKOyPp?_dAhIoK_2m8dUH~|iztl%KX z2h=zC?{Wg|MKmYaMSYs@u`}cZ`?piK1t-w`3HCo4a)N!Ecx+?L3D(A(;9;CVtjy*F z+KZ?eL-~Mm0_{bV6Fhwf^>*s5a7)Mu4eBhek1W#VY>%S6~29y(cMxgmZ zeV3`+(PP@`5xg@U?uvaVJpC$qVwi{^u>_nn5*ifR4C;d_Z)kmmnX| zTtN@$g&)WZ%n70o$OSS^z`BS&f@K7_L2+E02e=Q!tYF9-uAeqfpvvbK$OSl-6KGun z$_#3h8N^z5L39M1K-oa>0j+TXxq&>u;F>NM0I$jkMzRNCwC4q0nJXB{Oo2H8J%nM= z2^w$$n=6nPoJM~FC$Ox5IYZ4F)=l7fsfR#TP(Fs|Jcho3ykHcsM+^s?pxnFwCt%i4 z_cAJGZ(ULblECEx_Tr4u|l10S27 zb%M=PVn%QZRp15QJIKumHjD~RpuLFh1lB*Oi%w9B16Dyrq?8KE3RXuacz7U=Fd#ZX zUnRP%xtET@Xp1$=!pCs1bK8A0j={#dRT zc>myNPLP`$xC5lsGXqt30(pSesRwASxq@8Mydc*HLoF;V?2f z!bs%=WCz1%@fdZqasr&d{6IcnUcmR06GSgi|DeI<3V0s!0cHy7PQghmD`1TmXr`c? z%%J=vo;Upi`G7eAc|kdOLFsUT8#GcII1f0%5IF%kK~c550Puo-F)Jt}FDNR(5lW&H z6jKM&Pmmkn1ch<}fe-XBC%^^d0|xKa3A|Tw0;+ll9XsKA&=Eh#Z_nEE0;6c zb%8IrMt=cv0k5C27IFch_1|*P)JSWgTL^*->A-WSNCy*1I22)@vE^s=y6KKXTGfTkw!o&%b6X2w!D=4I33ji9 z74SgT37%b^IDvfNc3#76Stoe^%g zgA=Hl6P!Tp8gc@gGwcw2;DPr1ytQQw@`3yC0wXW@zCvYE7RW_i^Aaw!H2iytV2fV6};2D8ecLaHX_YAzc52(rm)IV?^P<0>hYAzrj z__`BxlM|2|bT>Cpl^bwPTCA)<6>x;YOPDQ$e)J8B$Oq&GML5DBxxfOl@%aIFf>PX| z+?;^xqkI4dFfZ^*Mo@_>RN@3RtmOvE3hLOGC^x9X6B@L}3DiRvCZZFl8hC+v2AVC9 z6NJp5t@*%6`GEBh1;nVSg)7x4Pp@F<0%o_4{p32`XCpeksgcryM z>hJ;e4{FE@G;>%fCl~{xq8E&yx)U&OC?_awhPGEfmxxf$Q2I?hHj|)D~j@nL6kh%f+y7nV{d-DQ0 zf%p>S0bb<=;6Q~Ng!6y-|{rCuL@o~aOti|D^YAqK?`G8~RefAqbdpHid;{?hH zdP6^u6Zm}zDxwqAQso4;2l3Cr2|Oe4`xj1*J}{kn256Q*_cYeMihR$3oWS=S%=>qG z2VhQs8!SGA4?t#?05?!ZV4sov$81huy#sOr%@Snh3-JNn)7U=yh`Jmfu)e`N{O*R8 zB07QQ3p1Z{z}oLk@CYto_a;c3!21R*oB$6{R*<=WA;){5#pfKn8ZrWRf=urKAIP0C zeBn9#U~k9@4nB(yJOfX`PF&zg*p35igRSHOTOc~Y-c9_S8#$H}tm8SX0Xf0Lurjdw zew^SwxEJn$yWy8S_q*UueBk!P32qKfu=56dKwfYyToasN=T+1zVOcgOkQ3}!9KB#+ z>rSw3Hhuu=8*GKgqZ6bvhMFgMY$jfi<^)rs6HLx}f$c|}fWM8$2XF$-7;YRx9i4Ro z%^7N@V0|Mr-~{#5n&<@8yzdoI7O;$+bjfPGEZy z-3vNooj^YDK)c`u?gRJbW%na`Uf?y&3ban0Kx_8`&k1sUKu#d!1DY*Jy+CVsfpje& zaQ>%W;Ijqp2J(W`4crCNDj$#wIC6p3$aq1U=40gq%oB9X(5AT?KH&6Nf)n5XasjQC z6%<170@iW^a{)4M`M^T{{mXH&zyX{g^V>ELoyYZ3;05Jm1(noFxd9$fZIxqp0aYA8 z9v~m6rv|v*;{pvFt2SzlBMdu_>$rRXHyAD-ppJ+cfq4Nv1my!GsiT-VkPnQJ56o)I z{sY~=DBQzn_>ABM!#yjQ!d?Zk0%2Zo3eQKG!O1+o)C-gojFlHeH;@mgkD#o8b*Y>n z;#q-u2%0yP4-CNvv=>2MASWm)<$U4;g(>oaL7e-(ychj>FFY&o8oi)P0WMIGZ<#?y zyrAQ8@&bIIWAp+t0%Zo7nZs|b7ktGv_)AEAKf| zs*FHBAhZwBoPc^R$O+PW6WDyAoB$WNN0@m&X={*c>mH;pCzJX>8Jtxrpihkiv z@Q3W41J4LFU#QPWeu%p29j*tgwdX)&a)P(G_Pot?>9^U8pv8RQn_U0i;2H_uJCGBI z-C$1e8rSDnxpqT3PjK)zWCX8-`xB^l@FHID;tROJL0sSf$O-o01iJwzIDixAo<#?C zW}V=<=mg3M%n2T$ZffZSd)H)rVE2Qp!LkB5!Sdh)>K*LD2X^5DyYArm-xi$UnVWfC zHw7oqjA5pCa1F2dXSe`Ppm~BPm%&ojm*E1JMix;Q2A-G~W(u?yQ8|HS1s4V%*m^$o z+>jHraDtz3&d+Sc38q9ZIF0va5=_JgCIqziU}JQGjiZAT_>7@?2N^G@3qG*6mRiYs z539?l>2I?J{6AYsEhXMSY^n=2{Lp`Gp6yO9W^0U;9iVr9&$ju4N3ECz(L0;$` zq+W0@kBM9__}@B#&l!5vOo3(y(%Axc1F!A`K2M;kj6jZ{Y{1v5?gQ=txz+Om`9PW( z$O+sLJSRwHM}4d4ZgOYdffSFe2hkFv@(OElvP(0XYI*FiL#{_X5os!U%H$ zzK`Y%r-mLvW1KgvS6(m)N0Apy;CYVcxr?zpZ+QWG5-Uf^32*_ZloK=sCm5ps0Sv7p z8>kLWpgzJ7d|;3}LG%J;2J!-T1M44<8CVZNS%F-j52*GeC!l&Cp_}Ce^bUTgynu=q zv^$QO0=%GON6i=T-bXJu=6n1+;04Eg>)hZgUe^~nd>)Tg-38nS{Pmxjt z@-fGbyMR|+{||$zkO!o^ADqDY2CUUPkP{UCg;@eHAE4^qg_K%wQCwTe|uA}e_*!_xL=lc6vz~%{F4Njn0f^^34rQhHJFT+dtz>C2NUU;6b z*$;bR4<4{9@>Fz!9el6t*_^V+%L(ocPN1B? zoj`jLciqP8xRuv)3-u=Ijc@}_@blmWPhE`zh^wL#TtQv>btmu{LpgzY!JOy=vqRrN z8G)Q&%Xx4voDFAjuHkVx!A$B5>U7*-8cc~y#sy9bPT+Hfw)bFMjuVWES;27L(_zpE z4WW0i4j))o9ehAJ!CLu189p!+N>~q$PB0+)0984GIYDoJZiIY5bdPk6PHTr=bX%oTLJjB7|HCuq~$ zleO}JUN}K7^$)pyD3Tl`usKyDZ$qDMAmfnG?GJ-}tp%FJ|WVXO6bB0ay5}M2nLX{6R;Ra3Q z1|z7Wlo>E%pgM}&U=$vpI)>hX)|w|6br$|0H<-zPBOjQ7XHc8)0nHTXzJ~Gv?Li1W z!1Fp;_dMqLPUN|d=Q-mB<^%K(sv+YABin|32spveCeDF+2MwH$IuV>;5Lv+x{J?U8 z3f!QatOYM9loN=-%x;vZa{h~W9Lx)%5A?Fi`_z+sr+4szZYSV#>K}9`FNjXiG2;Zv z3wW=;udINd2dZWZ`>Jf|<<%LE;}7x-E(;EwPqYv&Wz z@&a)rK^~yv)CWG|*g4EvxDVty0S@3ffjdFkH!vr_2Zn+&0(S!6hp0UV`rISmhj=n; z^$t#Z4=12bqiU8Q*9mOTL39FrMzTKV!0&0S-ofHSah8C31=wdF{VAt!@JD_>;RSXN zLu%&U1b9K}1l~8e_YeGz#s#c*@Oyrj|1NO?uKRXx0v@yb6;UlGc#G>2_0Q@ z6Fm1ge()&Z1p7AyCs5yD-&!1Cb#MZ|KY?WgEARrGVE4UT|CjT8@237Tc!8WiGX-*j zXKvv&-3&Lv&+&olvrgbSfqDl!mciwmi_54>;8J{PQOpPyL?4)o56nrN;G&i}!IpFI z0Wpj7EGIaVb1vKoPEWkxG~Sm}qZ3RdBXGvG?gSfff(=c<3D(I8>Y*k$fpP*vUQh-@ zLr!2$Fo>TGu=^DBr}m3pARp)%yuh76y#r+gMrSHsu%ZJ$Ywe+3@B(v#HuwOz2gnV4 z?HPfpJRs$6j)glx+Cy+ZkO#OE$O{~I0_$IIme{JWEkK-oZW0*<2( zm=nkg__IRu0l5G~C}X}rSwT59+dpt02>pX<`U%x| zLA`PUFdx7P8ZXY~1Z)?s*)%0Jq>?1@eNXsdxdkaWcCDRKppRKP4EKu0h=`}=jWglhT;Mx zFc?1=NF4zEp&#@OF0cwO5at90)D!rb>K2`#3$-&&AUZ(1=ml-4`N0WtUBEK}ukHu# z0$$VE0`~*2@&U(vz^nT}t_!#mq?v)|1+BS&X9PZH=rzp>@}tW{h3G4k=mb;vJ8=T#1qt7x26$$_Y4DUN9CHfZzmpz!(^g6AV|y zkCYcQa&GFgPB4h|5M>3pK~Ys(yI+CsSum&!Pc!TTZ>-^iAYB>RG z%@cerCwPVHJa|svy@MBi#bYnRfvgj}urFo>(FqPbg&RDH3+#X=@PKWwHTb}DkKzNH zgA;h~VBb2P!y2B$!??jJ)++%Y*z-Wh2{ccj`xETGn|c?|`xn$Zc@1}Da{_k)%@aI* zeas2)0_6lxT@{>Q=Q8S2&c$W01Rq!&oM6W#c)0$aq{~9Pis$7!#a8dl7A(U^sPH$O+UtFfXXV z0YUwPwH4q#P{Pl`;E)w)ra(@xdH~=A+I#SDAAV*Ep=Us|1m*=NP`gDZ=uGVpQ18H; zpe-(tAAO)rcAntAyf8zcDpDs%SbqeL%TD zt`q1n?;UuR56Bbb0a|<2+MU3&0`~&dbhhAXjvYCH)_6cVa~OPp-}`vNvCH^3qjCbO zoS@qkIX5s?M3M%KpTylcw1GRIw#^MF_)Ox%?G~xpR*0_LW1k@(^0og$60!`!tqnIx+ z7qF~=>%07byda=ig8b&O9FL(2Wd&pC9gI1PKRYwJ!A$;}=^R5QE0|0!F`2*DoPg(X z3N8S00=a>_pq`wdRz9Gd;3PZ&AE;JNz^q{&PYaHNLtY4zO00*;9 zpczBW6L?Ob-huWV$O$x0U|z6=_2a<{C-6DLt+Rp;C?l}F2jm2rCwT01JYWh;4p>fb3h&KCn814_#Xvl^%Lh7e z+@7B|d|*XB89|%G3-VY;+y&$VsS_wGkPCd18>BAa8G+Y3`EMP$fIPr!>IA6|$OSwn z@R)1o8q^sKf`VqZ3r)1#*H~ zs$8HJN60z>Yx07|pDG&=@&c~YtVbvxAS)PQJp+!F5s(|053p8FFp8N1^$Fw&W6tNg zFBdqMHH?)LkRe#rT3+xIcLKi8^oaKlrr-l|0%#;BFvtp&7g!HrJg;MXHY;!^s2r8; zAC$=l#4sQ$D5G~Uw1IP1-?n*ht#Sg^Rh+*nY6a)DjPomo;sSC5%LrH(=i>yy3w}&q zAQ!OyK_47Wd4Vzl%M0WOI39jrc|lj!P#I)U#CfXo zfXa-32naF=2qK_3)vB#?dpxb@eC70}6AIsCw zuyb3m4t2=X{PfUiTu;kS4~HSs!}TEQkm>xH)W-AqbD{A9{%ox;(3-z{CU1j=3k4sa z>P30!`iuCOt@3$LYi9+jsa3OK4xcx*@7yevtjjNfc|2d#viUrZm$07C^QiTL{B-dG z*3@nbdHxrs(%mklUP|S$|C1FNxLH_r=Flo%>lkOIasb#J}%NRom$g5(lwoWKy-uRbZTu$q%@scCwfDlbn3yrP?cpvO**xqHl2E?4jLi@ z(y5J&FeIJYG?+S+Iy{})d~)Oz>d18J;Zc#()2S_EU@V*w*g8I)+BzYfdSoI@g2^x? zuzhMewf#Jpo=)vJKb_h+17^a7>C~eaQ7@*>g4u9MI<;#aEJ&wzFNDhidlsitd#->h z)2YXk_oqFPK>JsXG>C^#uVkvbQtVpL0 zu7Wk`)S(Bc>!|DDL3ju@rc+ODPN$yQN_~X79d-r|?@Ff*?@p(l-V6KS@pS5$C*V*z z^{hCYPCfTbI`#aste<23E7rfJz6dYzelPR?M4qBP35Vd|Z~6Fs1JuVOd#QU~;dy{v zukswhPT2k$&u?Vw8@xu5jns$U|q z*Kjx7^)~+=;5NABU-)+hH^Gg6;NK!#_ecH>Q?I060gK_XchaeaFkk#@IyDz&!>oTx zr!It<|2LgFpE{j7?N8~{IWPszK9WvNf(dXYjQRI;>U1~_M*caS8Ue#$$bY0$jgk8Q zOs8s~3M!!NFX>cI=mFi{O{Y4+@qbOH+QHG#5`OR=`&g3qxfUNpK1@`tKT7a1Yv&Wz z;?u}yIqT24)?;7f@Fmyct3>^pwXpwG{~MB*_?Vimf5gXYJ|HLfF&{e|_2azsk8p!y z=_Kf!I9RL=u#S;pciXg zz}%oOdzPqVFT)3V_RCNAs$qYtWsMJ%_h%2RhXxpc7Yqzk4Q7uV%w9R9MY?)eUb=cX zoD`g(dIb9`ZcuMdz&<<*%n8_!$KV2DES$l9eI|?#$O(o_!UN8h6R`i|11HG|@Byn+ z@c@IzrsbuF-~~gbQqQBF$De@<48joxogdbXx}F|fU=VK5ID`Fv1|Q3eJP2M;KNBy& z2kOlS`1mi@nmQ{#U41d16SYd~*>VCtcih038)`XTP$mzM6IjIsx8wrfc(Ho`heE* z0e1qgNjGpGxPkZ6+MU2%KyKj3104B)BNuSo3FHAbcaZfgRIug6UZ=*fEp+?IM^JnN6J=onU_Of?b!g7cPRu z?2F<`9N_BU1CL!7oM7*bStrW#4pyL+jX=*TV+( z=!dAAs1FAxcuG#N4G-8!eU!Qj_GF#lnaA1Z4+JN8=E>j$&ptza76*8q`YY-BM#HE-r&FiE$uJBT7))&xtm~i}7pVG6 zI@O2Tiz+85!Uej3oS*=Hh6@}6{|7Qo;4a|x1NJ=eVKaQhV?sWl`e|INI-jv_j?Z~q zUhpMot?Jibu@+xP{yRHCijOf5RGpk_oFFAH5ct4RxPkJ4kQ-2O0_6n9-~)1kV+xcN zuzz&madHCHV^uo`7wAAeu{(QE_xyAhFfZtd3zX%hyHmU21;u^j1GoXTMMgE^kA*3T)=#Q{XbOv?NY&OM(uDJujL|M(?!Y(c#Y)*_`osv z!BNzZ69gwn;RluzC@b)cz%m1_JugsAI)S@@s%HeroWQ+6RZifJ;F*D{Jis#ot((gU z^q5@Wwpir?-{uB#fh6t(Ufm1a4desDT|hpd>n2$N|E`vae7vAV$O%@oV*fun(k3{; zs$=;cejF6S@zDo5QoDqlV0AaX=NCaSlt5Wv9W~00XE4 zse@ohGfpsqy+%$jDzIfVE^vDEfpJvGIKjl=1C|p^PN%j_fpdZrY@0@%4m02a_OuJ( zB0S(?m>t-4N!AH0C%BaTa8dMuE7%{eWPMdrC-9tL-!IumZ;4KD2R~=a3GSla%^tgi zdN0@av0jP~EDug_U{y9JIIs>6crZADa)Ku}MJL!2y|I+GCIN2)aRlPyg*KX3n(Xe_NC|q)LbVx@Y~=6`>Fe0!3n7H0&@a9KskZ=05$0Z zTVCU}c_TQ%CaUEG)CXbRo52YzCt$6NU^y&rPPHWAD9Em2`+}2@&Py>7nlZe0_6mg;VhU4A|LoHajkWdFXFYT^EqpI!B+|Xe{q5oAM@YlD7@iEKVT2Q2Li0+2Xcd- zvp?VkqOD~G>>qeR$P1`s1Rcl>EHA(T)H~=T$O^hZr($IUpo{=7=tAw@o4rf)4Nf30 z=+UnQIYGz@dg1`R>f{A^>0a^yvV!u)ymSS$0nSh5EtkiSWUHzpgR>O@SNa*GS2g;!j-~;Qbf)lK#nh(@a>!KGlP#f7p z#9)5L1j`AAvp$)uU_>D41j-3EkI6d0)^V)I;{p?4Qe-l9O7MYgQ>kKFaDp8(*v|w` zkm()FVXvFZ^(Dax9$i3P2$#j2;BxlGE8t4F8Yh6g*HW*i-Uv6bhbElh@jGw;ffMY% z2bMr|g8fU`cURy9E2*ofYv2LgU@bndJ~)AL0&{}R!3V5&u#G)@2RsV9U=Qp~IKct- z`a=mPc!vG|S$G~7c%k{;!Qq$q^Ir}*!GYiKalrnF=L8uicqKT&4*39V!vm~$@CMI6 zYh?uTflbs6px(iH$T$J()xYEG3e-2qH~}7@j3AQ}L?^hFn(Q4|-vAf5_Kz_qV7>UA z-~{r41?>L|K~7-313Vy;6W{^XH%K_a*?+K9F>R4|%)0fY*ZFe z@&(t5) zdb=FJbAzM@Xe}2|PT(0qvbqnr3n)KuAMolv;8k9r{6IC=3H;ifK)r(`xo+StplWNL zAM=71At#U*EN_Jq9L@LapF^AI1nsHE;ROXDE07DU?ik&m8?`$WK?yFdBOT} z=$rKcbAsyN1?n9<*q^A?w<5o|d# zkrSN7J|!lzXH9`~1J*x?PN0lHS%G>7$_aK{j1SC$IXJ;wn8)51onZH+!3%aR#tp83 zD{+FWf)l8BU`}vDaDu%zCvt+@S>F*dg2(R(PVo4BIKcf7oj_h7CwO8_aDoHT2@XDp z7d({B37*`-zWoT-+e1#E-oaD5ae+OsH#ou5`*8s|!9g70DR?^Y+;jNA^T7#hmf%Gm ze~I^l=6VMnuLdX3Jb^g@RZg(=bzTF|Ji(?nc^z4ApeiF+4-dQ* zSjA(SC-9s=8G-r-nkUH265s}&6UYfXC%Exn!aRX;0_z=6eU?Buft)}Y!F-SpC?}W& z7lCqu3&3*%^$nC0m=jPnOE3=3zynUFj-sCW=j<#&#tCo%IYBLGmY@>K|B_CXLNRp5 z13H5_0UqFegOr@$+q~d?-XFKzst9CHS267vS|v)89NfE)Y*Cnz8rIF6q&k7G|M z484O69oc72Oj%CQ0XOKPyr78Mg9`G2F8DzAGWITg9&kqV0_6k~!o1;-iPW>@19|D8@&eBZKUkiU{x6bYvlzE=hH7xW&f|gKpud%kQt~}3o?Qld4V|rpBr-qRbW0~PQYWTxPbD3 za`}LA0=a=)zC+H*(SQz>T$KnF&AGC#ISSu$mFStDB z1j-8J0U0;oYbTi#Xr1cw6htQ| z#0fe_C+I@$2E}~OcS`xWunZ^Y4dtx+vM*FnE1`;gLQYT%b?h7cgA;5RKpoh;6IfPo z3j57S_M1^uaXNd@nCJv!sd#~U2g(VyPNbeqos0{Jb6_f*hX+gxIl=bxn>vB{z^vc| zmKDsy3l;=4Pq1qdE^s;Zir@shuTD6@4eXgW1}9KX;PV8J-xi(V&fo=^oZ$ZG1k3S& z6|fRk1t(BWaBzLLcW`JU>xW@0KCmq~!IL}ifk$Cibb`mIj|bcdGQERm*#Do)Izf}( z!OOu3p27`$mcVlY%@Qapu-?Hdd`@8Vg;e)}WKN*@LhBvi2bLAQ&g;oz@&V-p?gXpf z;%f>A&@91n*2)T&vTib8h!fl{-say4$O(ka7gDeJ11>NA$iHQ{JR&EM56lDQ1nL_o zBe)3EH;@x3CpZssonZWtFiUU-RXKs?2~Gvg7Y>7=IKUtn0Gcm!C+N%CoPa7P=mH&a z0%Zj4aeyXH@E-eG61jl;fY%Rs%-z6!z@6Y@-sZ>!K7&ud*Sh{Zl3eRC_W`e8@|g2A z>;LXfkkZHa4U?v8Qv5(UL9hNi4t+R(&__AJp!{?n ze4s*35WOJu599-Q0My_H^{3|J15|vV4&(#<@qzyMzyNZB0ps|2e>~N^05_PFmmYW) z`#oMTSjYqDA%xyR=pPKEhcHlC!MVx~_;Xar2nHB(0$jsp3tFTH;0O&+FK~i7`9RDJ zYM42!ox$gVC)BEMU_QX-M6FQYz%qiE6W{}VX7OB*6sU~8_;2@*Bw z1fChl3*-c<$&5g`KrZeE?g6UG5q!2lE}-?dIe~kDyMP=anG+wtP`v}79Ti1;RGG=0QrFE9(|yQ+7obs%uGQa zJOCe9+c)@ta)R~v!1@~YjJoIpjnn}^wRwWUO>=^cBXEIJ0`dZPf`@T}hsQ?7u_uj( z3An&nASa+cG6l|ob8&#FO`X6pf|)TVm=$sY%LwL%oFM50K4a)kpqyaOHE=C%a2?zT zHvvwda|e5GrQ!tEJGe7A!M-Kzv-iS%*_^<72P+d!uns49FgU@%jnqx-*PE$ZvQD6R zf@Dtc)L!=XeXt*%;OGBC@Dx0a4?KepJPW^K{Q~vZ^bcO*Z7;&h^c^7M1gte*=<@{1 z2!!SfAHxMSPp}L8%t4c!02i>{!5h3z_`pL{a{_$8dk2~&Fel)#6}W)U6Wqt+_rj9j zH*@A7I)R-zzy~yAsGPuN38*$pfD%)GiMH9aKZ`tv9^o=7bt}i@QgrCp!vd|Lo2Yp0e+D20qy^C16A=s0y%;6 z5$hx$bM43j#3!-(wOk#C$+GK`LD!Cjj|?xq-Yu6tN$5lM}E{^$1R2a|O{0dh{V9a4(P(RFDx+l@pZK zaxIuEFdvW;2%MloSpl<#6|5~I7)~}oPEeytPEcoA0aac=@1Xx_SyW#}h@PHyHiIh^yVouN-7w8+Qq*g~Cs39k)XW!@# z4Z#PL6Koh1vx1?acks|~>dEXgBdDiPN8tpg!DtwR4~Vglbb^Waz@%?F!6WB|j9}Yz zJYYs-W^e+XMcgqv(L0#W{wEf~rLc&flNZAk?2T7a6Hc(_dLD~Tpx%LU0y)9n+u2j` zfqi%50r$X?=mhsum*NG>q6@4F8G-r+2i7%pf`glIfro<=9NNZuJ0zUI<_R8SZ^sFq zkrN!Gf_ewf90r`=nP<6v9^?f$f%*s5H+YHne;FqL%L%9l!JWWzg5O3TpeAzyJBRox zuJszvGi-T-*MO?t!N%8l4Z(W{I*X_?2W#*E^$m3HziIlu?Z z38)RYKrQ=!(g}KTUGkT#6R2-sPJjorf*-@*>>Iq#+dqiN2efX^3qIy?@dU)Gy+-s&EhRDjyKvJtvUgm={px1Lg&-$qHI=EgxXrmfF_5KzRX9fFHOQ6m(J# zfqh3V0EOfPmKVqgK$(H%1ih#rCr~dzS%LXL6`nvwARj2LB`1&*&^zekS;0W|&wX z!21VYbDcnbklRa0&KbxDlo_}OsQPSy*Q6JCX3(4us8^uJo9i8TR*-apTsK(C|0_RG zU78p0oWR_mRn`fV6UYnHKhQkE%HyL86vo;)IDyU`h>R1Iur7^RL2o>uPc|p8S;Lx; z6{vS$GX)L72_9_BI>Cma>?_0AUrwUp1RF;NC&=Ukrv)!CCm5G?0^Ofr%S1RU>jYcR zi8;Y}^be-t1?N*Qpn}g6B%NUAB{3(MADrOPOM??6=LwoP!42%2c!6>P-Jc-i1h?S> z?gjU-UV;nU2XcaCIKgsQ0jt=D*8ooN#5(rn^&uzFJi&qJ1ez!C-hthp;L*@KIQ&?c zF+BV@RZj3k@PenGq$Zr;8Tr5qVa6~sOMnwtPJjn^@4#|`-|+DXJV0{O>Kj;2fCJp~yKrBECg%{}{^pqj%@U}8a3y$7 za4CMU@Ev9h;S%t90%ZhtZvtx438vr!XM@flPB@b78|WOOdIvUNNIePEI~WK$hbSkg z0Xadx{|x64d*TCfg09dR3P8OB^$jvUz&eu?ycgF=7f5=*hrC^Ul)!z!oxoi{4&Z*^ z^>ZH6<3elUKH&8$9+MY{@2(TrTme~u%@$DI4deqYl@&nSwt4B+a)Dp4$553QWcmo5 z*oW|fLV*`_0qY^i3(E4-ol2?lf!>1st1o+*sARwE2RMPeKz)QvRv;&60Gyx?PN1xy z&*10;ctH(LP(e;mF(NPBPg#L{K#WpWpqxOJJsT%b4?!~p$_fUke*kiV0Wgp=2%0At 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

TS@>vxIpfuy5Fr4Rz-+}vigd*Rw$nR)Rq=_7Z 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�VS|6w`HBf(0p$%7=r}x3 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 z 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

PKK!8*oMP?Z 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

`{7#Jfo~ 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 MK>tM-m6_oG0gw>{IRF3v literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_GreenChannel.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_GreenChannel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..c1bd3a95bcd9160f8fe1b1041c4bb2481018e412 GIT binary patch literal 269918 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�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⪼ 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%0DITLM+=p3BKcEZ; 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

rL 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

MJql&~D)I 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 zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv 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 zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnw zfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz z0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8< z2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|Drd zBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J- zkbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(T zKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU z0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb z1SB8<2}nQ!5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ! z5|DrdBp?9^NI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^ zNI(J-kbndvAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbndv zAOQ(TKmrnwfCMBU0SQPz0uqpb1SB8<2}nQ!5|DrdBp?9^NI(J-kbneU*987Qkmu~* literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Mask.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Mask.bmp new file mode 100644 index 0000000000000000000000000000000000000000..8fca6f93831b39fca6d0542172ad4ae4268f651f GIT binary patch literal 269986 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 literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_RedChannel.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_RedChannel.bmp new file mode 100644 index 0000000000000000000000000000000000000000..cf6548ac62de0642255f495e2adc8686a20676be GIT binary patch literal 269918 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 Wq5vEy3$u{4ac~`b5EvYM;{O9ufL*x& literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Rotate_110.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Rotate_110.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f4f15b377c9399a5a21d178d3dd8e281a283389d GIT binary patch literal 1753030 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ΜH;}OSLUn|rmS4aJ%+ZG zS;CWLZDsXgRwDZ!K$T#4?J?v>1x52;3vNaU5jlcOh!;@*{i zP|f}w*pj_F=1QD7@R$dWHI~eU$GXZ`TgiRUxo2g}fyccoV-I+&t$bt1mCS>iE13`9 zU%2s2eQfh%uHD07$gJFZSI4s6(-_giPe`yMa*e-V$GBx)WbAs9pRDKM<2cfNGRmA& zPHX&;WOvOt%Uo%e%sfeLnI%2O&6DOw+zjd3*<*IslbG_X-V1fHqkB1*G)v;JqsN&o z&5d~GMvv|JSj&@{D`7-)q}|-uj@`!>_mFwg9BE(H>vGLF%S;I$wlY_`4>wZdd+F;i z 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�v#&SSb?uSqjdjmD`{|LoVkhsmt#-`%si`%+p-QvEc@7V z9bYrQe*Qduy{yTYMV8E2WXxFqt@tFrSNmBce$V)v68V16s=xZ*L8nY~L|%X4lXWlM z(Y#$>&vcuqC;nI9HQ(;{3iZoi{v}>2`$CJFozeaD#O!D0cGo(h>rD4| zZH^SOb{~6Yjc%FS@;0V3N;z@o&D1Bw-Z1Vsj7Q3Gym456q!%+vYkI*H5@J?K&sn8j zIaIvz82)%v^vhBoo5p^H0i0m)zQ!%}%K%3h1Re4Sc?5?zfWMM0gCpu+KUvbM#_+wuuY+Frl9T}c!f*u)I3;V1j zb<1!}wufiZ3%4xm#W?0-_K6uLKbLdMC6#yTpRS)^TR0}$(>0gqn2__$NAS!?xF4Kp zE~0P!n9zSr$D|*mYjVGO4Sgo}{~Ye?Y2-8>o48I+PQx$t&X`;BnBMy!%x;`=n%B$k zZ@lu}PmsDLUKu%=`fm%?Flsz}nEJ!5L;fY-OxJXu+8xs=vsbU*%`5Hel9{z%rZ;xF zX7z_B*Haw5lRXO$B<&QInXFo|euQ25PnSk6L24sgpUe-F+oamw3yrEVGX%0IFl$7;dB?)~?|f6%9HXP4Ih3HF6L zoRB))6Az5-neLnWoAlEYqwnp@J~@Ak?S8$o&9AH9X5XJBoUvrgCawRiame`05w$bP zn7!JkPM3_&C-FP`ca^5%)PMC}_FlgOc)f*7*1l+MzxK)6DcxRg(jUYQ0ii z>zDeXY0p|XCI-1Z`(}Eh=~_Q@|GIClCbwlzhZNVkp_x5Xe>6Exx3kMmr*zv0-soJ? z92wKpCrvnkJD$`j!P#Ua9vPmAHx7fI8Q_n{@khNfz#Ru&lR2x@E5j|Pk>K_3NPSXR zw_Z7u?QnP&i7O1?4(8wk#VzrPqtv>jbIK$5r1a~TI^6AP1FI_S-e3JE6 z9PJkHyRFjK;H+}%Mm%#fkhNE?+tjSXE7|7Uvd}*tyhL$^7V4P(jMrW%lMwI zWtsc1UXrkm8s9XZ;Ad{#l3K4^f@dxuZ-L)$5$KnTxKEs4hHL7Z!u_XfKB!~rma?Q_ zCVky<4)^^`;jx*cQX+ji zzl`hTydFk1b4s(Wb9QMjXOW%$Sg&)R+AGr`^+jE&)D}DfLl&}v!Qj%U*TLZ`Pbxc z3pizZrSnSN(phD`uQIQLr&r#KTltwC=al#UEBS9^g0J06zx7J{_MrC7cKx5FPwIiK zfBpxzf$%}MQM=8*i&=l|c7OWelP2FYaNkm!QTwx5lW}d^+TWoNe~*(ooRZ(MeIF^m zbN=m4UQZwV_g=pTbV5Cn*IuNxJ*ho0dztk%YrV1VxfVTAvd+xD$uXea&sx$cGheQH zFHyTT>-xpAHsyJEp``V51?$A#4R{vPE%nKIonC35V_7?|)H6B8wQFlhx9oIEeX`Rj zbDch^Q*!LQE$NYU>W=PTr**FJCaK}S9#t~D8BoC9KPaeb}Tl7bqCXbKT&0~(KQx?2t z9&=57QorOezxSbrX%CPx3yf2H>X(7_6kO8TWO)~%yh@vF|BXsmG0Z=mg$V|=9ryc>HhknnJ#H&eLL^WS!FmS`-WF`;f=j8 z9cJT_kCFwig^yc?3$CIM;g*}o9XR0bW@f2Vb{~PmFaXEd#{VD3yprQsJFn#U>ia7v za$I&^Ie}yK#2dgdeIm#Gm{)RMX}ywjme<4cI(QFm>AW(of$NnzrF@(EyQE(EI{W|! zlpn$y4U>LCUw+Q|7vwMDP3pHmpL~b>HTfI(E$;SrBwjiB@9F;oYnbwTQvMPC3I4$L zeP9owwx)+_17ZAl%{{oN+v zwfqd>jrslkzV!UL!#V92T6g?onMsn-6CTqlDW=0{nCEcnVnwQxxSrK+Phspy;AqoGhYOIW+yMuOP;4ro}=cN6dw63`3zhy zX`O4`Qgq2o>#GHhbAR@}OTDtD_R4h5>}94`x?NvP+-{vt>3-rm_o-8#tlcti7jB6= zo&jA_+%KGRG+yb9lAd$Qm{pR_CtLK&bV?jD+)|(9{Hs$ALQR7$m-_MuO>P2aYr z)-N|gxF!Ad>}zig&bY>;w}zgM8EZ0qGaQrc;hgsM&B79XM%^Z0)ACt#_ znsZIvlIMhe8K3!?MLieDv9rks;XZ1fkNoYT=HHDR|EE!1Jm-sBj_Ts|GU`_JK6~kr znfBb4YwM)bDQ~yFonvON_Dp-}k>-c1wRO6t=~`~*m+6yrc6y~Q>Acd^FEht+zXZJ` zZaIE7ITsdEL+h1m8?PL{nLb`Qejn_`BM*?!eH4ySL-#PQs9SP8>*jdZ%`t8Q$6Bw0 z$Gnnb^+b-_;glTTb7nb#^Fa^ig^8SBCUNeW$a!w!7aR1-p4Z@OZ2Lyzm6LGFm{)$6 zzI-2kz&4ojBT{tBpRnK0K&OOBZ_<;u;BC+?e*=|U>XlREcc53MTmFIlidRngXZrtw zoBgp#>sXgwcqH2*@wF)s9$EEb+rKsaDP*GGr3*&7kJvADxG8nc8pAnV=RP=Ne82p@ zWH_X2Yq#^WIA@KoTk4p*{tx>69?m1f9jRl@@0>HrsoWPjW&Ax)?h{@&AN==TzXx>7 zPC9+kwVo(-oxM!`(Yj9EF>yZWHZyys>qLjFYu7oqtW$?fr{p-&&Ms@GOwW9Q?TJol zZQiJOj#}(J3p%A-FFajRm$dHmO5IZU|LK@Zn);!cwSH*NOwtkS%zZeH#(ri}?`NI; z%+6joWIqnmqDR7B69;lW8Q?#A z1vkVVM{X2q{n1>{ZDft`_3a1NlKoPLXHu`?XIduKV7-J~VvpbD34ZS7{QP2XiJnP+ z5xI!oB7X13aLmU@XP9O!n7nlpK9bk3QJfydIE zMtYrm7LTcUFOU5!o&z!0e1x1wPaZ7H#wR~X4P&R{lstdCc#i9q367~}a_A4zD_y5U znyzcFw3qAj%g)Sw(lgT|bN!cmvUW=y(sjCI=IuPQc1&ykU31;htgn6B>m+BE;hJ5I zQ;wZZ&W1-}A&$6&Tn1|^w$a~O*oQM7pay4_JeN}r{oyc&Hw*)bIk1KSgKnF z9ET@xtQMVe0>^Y`mR<*+$T`I8;1fAtIjfxb1yZM!*8s0<-SV3_;9{>7B);N?* z`9p(qOC2-bXK9w&8D`Eh^|mRl|9C4?I@aNN?pw(DVeNt8ivJ%z$3C$?b$B7`?8VxC ze*Lm!|r-{Q|zezsn+x45J}ne)g<`kgKre*q^t%5xPr zsGludCq=)MTxW7zYu|gRZ*sf~E?2dVSi7a`B;C^O`k-sGbNjinEw|VEX6-(SGsvj% z#j}O;ciwc$vt#IkE_te}NnJ9$lJn=8f=+o_mn8McM5jEJ^ip%~l@WY#gbc5=hGEbv z!!7a0@XGs2vL41Ab<1JS=TYmH)VgHA`ThiTc;(#6DRF{9*Pv4l;*iIROSXwa=#esr zJL;2%VPIi{Ua3zG;2zE>59*VoPI+)iSWj(6O|Im2`sG^cRs0OP^avmcJhHhprr znQlp~SEge+({zrhXC{x)3%BHc(={J~dDH>-tuxFy+@Eu-c`S5Ioifljsb})o>6+7c zEN3M=-qRKrujDy#FaO^WZaJ5n&-&rQ9P)l#@{>U7nWO$230?QXT@9mntyQE?+Oy8J z{%9|~GW{{VGWX4OdZc~p^hwiw(l^s3b062bWA^{wQs`xp z90OaY;pmXq

5tu`T9|CY~7k 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�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�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%0DC5Do)-R^e5y1KP7X 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

s7J#l{uAO6~vlZUbi6q$$TojO23Nh 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 NyWqZ?)%! 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 Ls2%u-b>RO8&3C9w literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Threshold-2-0.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_Threshold-2-0.bmp new file mode 100644 index 0000000000000000000000000000000000000000..7d41dc09fda0f7542383fc08e970f6907b8de651 GIT binary patch literal 1069210 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

*;(YQh=`8xd=*)E>7&kYxS^62EQ)LR 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 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_150_125_Point.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_150_125_Point.bmp new file mode 100644 index 0000000000000000000000000000000000000000..fd58f44cdd16158557219d054d1dc6badaf94cfa GIT binary patch literal 56554 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 E0ej+pEdT%j literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_25_200.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_25_200.bmp deleted file mode 100644 index 0f8b72b1e89a44d4acfc8c006c024ecf7385fa1a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33388 zcmW(*cRZEv`@he?v5!3x$KEqOWFDi;j1bvU5#rcn9V@F4B4kz+S!HJ&duODKjAN5c zR@U!)e}A0UbDlq*=e}OobKTc{y+^E}z9uCZD;WTQQd>*oF5!v>016Pqgnv?H&RK*D z#Oto68YuhDwobT#JF4DM1)wsK{M??1a8HWSy6*)5Rr~*bkZ$*n4*>{=XltmN_}gqX znfbAq)s)8Cj;yA>=D(#=P$b~4GyAIGm=Q(V_567RuybI7r3a3VOVw#OtVoLO>FH5wY5FzA=d0nJy=HSXXW%1#y1iC&Ywo3c_SH=5 z9qLfoFMIhrxBpW-pV@sL{m`rBcli~yTgLHBzUV>9%O@>+Psx+_X47i6%>T}eWXHEC z%pN#>N%@u@?59`W{fv=cp+4(r_Lli^!4B0<%%WX)!_8mGeqfGN^hrFpj?#GO79GwCaqh`&J zcvsD!a98cRPk-YB?|$yi`K^PvcM44O-M*rFzKww%9tE0b{r>KYSA<9yi;l&FzaJ{S z+6=l%>6{Es>`&uWn7i^P2^5*knElZCNy&q4Q*Y;;ync|cJwA3}0iV(+$}Pf@0C^A#z><=(?| z;#{Z7`2T{RXKw^n$qA1*nhH+TH$Per4Dts{#EHSR6j4!zx$`?_v5?%KN+m#J?K z;wD{Jt}5`itD~39b4?-mjD;mawn{dZ%0AE)1*S1}`-%u9xLO*%aLYDhGb!bm`jRJC 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 S>5kt3@@I6)RIgmeKIVUyGQK7N diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_25_200_Linear.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_25_200_Linear.bmp new file mode 100644 index 0000000000000000000000000000000000000000..5a7a4b19d38e303058bb04fea3fda7334fe179ae GIT binary patch literal 15254 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 byfFM9ib+C?tjPLy00000NkvXXu0mjf<=yZ0 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_50_25_Cubic.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage_Scale_50_25_Cubic.bmp new file mode 100644 index 0000000000000000000000000000000000000000..a2ee05ed2ab4ad61e8330eeace72297c23280f38 GIT binary patch literal 3854 zcmYjU=T;j@8tr|7*}pU10c0`?fGm@9mV|Q7xs`Ly0U?Q?00=PH277Gm8GFu|r`QME z+Y;khovS{rQgwZ|zWT!LZQ)P<6D@MObZUH4VjJe6g#@Youw7e(W>uw&3}yRiuY(4>$oXkd=2A)+Iq0Q9-y%1uVD@~ z%~xIVJ_B>s{m1LR;|>4uX6R&@%o7AlwbHv_fpP-7=@ie>g<=KxsjCtCZ-_Cd1EORLxdm5g*?R<^Z-!5HU_9A|H9@W`%3s42)&oR^8$tdWILvkNFBl!9 zFEDd2(b|bO@zhTA4D?|Wpnk^Ax8an?=?44~tZ#-I{To<;Em(XFQq~L`yo?E!A#WLP^2VoWHfRdz|EM{Gl`^9hY(qaFN8b78H=p=j~DD&f=_Y|qe7HT4_y_Q)*^jR%y99v;>82Mp@ZelxZ{o7zvN)@R+>M`iuJ zq;iMULO3H&!472sVL+FA31Zd|op+Yz9fc)VY0Xzfi0wpA5lw>ZrMP&btlq;8j9WTi z>{ow~-EZ#hpU&&=B!zDnv0Z+}U*?`ESfkMVWNv@%;R)mT*Lv|4)9hEjJG$R`4}Qmk zmWwZj<|kF-QChi2BB25xh1RGHtfAo$gfP=lH9jb7?^X2&&B>$gl-f3204|h~_UFGB z{=Lu3+5PUk2DLv)pbHD%Y?ptSJ6}w#C-}nH?4k8!YJb6?^#V_Qb9BFBCN;VH-FEfO z()ns^J;8VClMl-JqoVd8ufA7Q-zkpYp&Bb|4}wgaAdIIEuDidm6PTs;-^bP5UGq1#Bj@{xHdUh0CGuTf?rJ}Mv72n8KkUY-DhWdf7ljCRDL;Wpqpt21ez$Mldp^O|Xm^wzc@0tSq>zi=Nt&x4z`7FZFhbjV@x)b+mvj zI!YW{@s+K}P)7*j=QYiXZObp4hF`V}FSZT;*)g=l zZ~?SK=Mc|1$a4;wDu7aLlF7!}wj6@f{a zZvvVNEwtB2aWjqzE%W}sge)+nfE)_rC>feKONUOAW?OO`djWyA;67UR)>fhXLZ_RN z^PPBWFL|+_y5gp-T9dB<%o9m&oRbL&4IA<@tGG}M>(4!H$ zDmo@~62ydvM2ThUDA|RE1fUxMD7`;A3PTrx8er)#l0cteQ;}UnL@fJiYds>{G3cDm zZnD#(bIHvhF%jjrhXo3P9+0#A+%*pZDcj{{F87n2?O1ao*jRR>QRmr)BugEJ44qO0 z#szlp5;|C#@HC){Qtb&!!`DZS)g}74(*M^n7Pw-jaF+A+HHdtAjIm?~u6& zf+_cMpdqXokb-1?ZbeXGkj#C(oM=HWL%a7iGI+rP>`QfQZCKDK5~Fo(jz2Re@tlKp;#*UMK=|nU5~Rdre?c3>}SkjXAQ2cN+9{ zyo>C{ng>ZJEU1L85Ry6f3}OC8RJfJ&RI9Xn4?w;?pHu;rn*t_4Xk%voK`gSL>L3TU zA>|`y6v8Oc5Rr}N7b9;KB4dFp&e?JtONM&=F(%ojG>g*FGpYdm#Wuv*hA5o*+7zEN zCl_q#MSEt+ky|F8f%_##7C%><`89VDSalU}1WV5R4=iKk#~_LMxka*%{1QoF5mzTA e>sA1F53V8>S#;(X9NBq$21<3#o}JMK3F3b%nXsP# literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Test.Psi.Imaging.Windows.csproj b/Sources/Imaging/Test.Psi.Imaging.Windows/Test.Psi.Imaging.Windows.csproj index f90860ef..88961e75 100644 --- a/Sources/Imaging/Test.Psi.Imaging.Windows/Test.Psi.Imaging.Windows.csproj +++ b/Sources/Imaging/Test.Psi.Imaging.Windows/Test.Psi.Imaging.Windows.csproj @@ -100,17 +100,23 @@ ResXFileCodeGenerator Resources.Designer.cs + Designer + + 2.9.8 + runtime; build; native; contentfiles; analyzers + all + - 2.1.0 + 2.1.1 - 2.1.0 + 2.1.1 1.1.118 @@ -137,13 +143,26 @@ - - - - - - - + + + + + + + + + + + + + + + + + + + + diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/FaceRecognizer.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/FaceRecognizer.cs index 3f8bcf37..9cafd07a 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/FaceRecognizer.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/FaceRecognizer.cs @@ -1,124 +1,124 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.CognitiveServices.Face -{ - using System; +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.CognitiveServices.Face +{ + using System; using System.Collections.Generic; using System.Drawing.Imaging; - using System.IO; - using System.Linq; - using System.Threading.Tasks; - using Microsoft.Azure.CognitiveServices.Vision.Face; - using Microsoft.Azure.CognitiveServices.Vision.Face.Models; - using Microsoft.Psi; - using Microsoft.Psi.Components; - using Microsoft.Psi.Imaging; - - ///

- /// Component that performs face recognition via Microsoft Cognitive Services Face API. - /// - /// The component takes in a stream of images and produces a stream of messages containing detected faces and candidate identities of each - /// person in the image. A Microsoft Cognitive Services Face API - /// subscription key is required to use this component. In addition, a person group needs to be created ahead of time, and the id of the person group - /// passed to the component via the configuration. For more information, and to see how to create person groups, see the full direct API for. - /// Microsoft Cognitive Services Face API - /// - public sealed class FaceRecognizer : AsyncConsumerProducer, IList>>, IDisposable - { + using System.IO; + using System.Linq; + using System.Threading.Tasks; + using Microsoft.Azure.CognitiveServices.Vision.Face; + using Microsoft.Azure.CognitiveServices.Vision.Face.Models; + using Microsoft.Psi; + using Microsoft.Psi.Components; + using Microsoft.Psi.Imaging; + + /// + /// Component that performs face recognition via Microsoft Cognitive Services Face API. + /// + /// The component takes in a stream of images and produces a stream of messages containing detected faces and candidate identities of each + /// person in the image. A Microsoft Cognitive Services Face API + /// subscription key is required to use this component. In addition, a person group needs to be created ahead of time, and the id of the person group + /// passed to the component via the configuration. For more information, and to see how to create person groups, see the full direct API for. + /// Microsoft Cognitive Services Face API + /// + public sealed class FaceRecognizer : AsyncConsumerProducer, IList>>, IDisposable + { /// /// Empty results. - /// - private static readonly IList> Empty = new IList<(string, double)>[0]; - - /// - /// The configuration to use for this component. - /// - private readonly FaceRecognizerConfiguration configuration; - - /// - /// The client that communicates with the cloud image analyzer service. - /// - private FaceClient client = null; - - /// - /// The group of persons from the cognitive services API. - /// - private Dictionary people = null; - - /// - /// Initializes a new instance of the class. - /// - /// The pipeline to add the component to. - /// The component configuration. - public FaceRecognizer(Pipeline pipeline, FaceRecognizerConfiguration configuration) - : base(pipeline) - { - this.configuration = configuration; - this.RateLimitExceeded = pipeline.CreateEmitter(this, nameof(this.RateLimitExceeded)); - this.client = new FaceClient(new ApiKeyServiceClientCredentials(this.configuration.SubscriptionKey)) - { - Endpoint = this.configuration.Endpoint, - }; - this.client.PersonGroupPerson.ListAsync(this.configuration.PersonGroupId).ContinueWith(list => - { - this.people = list.Result.ToDictionary(p => p.PersonId); - }).Wait(); - } - - /// - /// Gets a stream that indicates the rate limit for the service calls was exceeded. - /// - /// A value of true is posted on the stream each time the rate limit for calling Cognitive Services FACE API is exceeded. - public Emitter RateLimitExceeded { get; } - - /// - /// Disposes the face recognizer component. - /// - public void Dispose() - { - this.client.Dispose(); - this.client = null; - } - - /// - protected override async Task ReceiveAsync(Shared data, Envelope e) - { - using (Stream imageFileStream = new MemoryStream()) - { - try - { - // convert image to a Stream and send to Cog Services - data.Resource.ToManagedImage(false).Save(imageFileStream, ImageFormat.Jpeg); - imageFileStream.Seek(0, SeekOrigin.Begin); - - var detected = (await this.client.Face.DetectWithStreamAsync(imageFileStream, recognitionModel: this.configuration.RecognitionModelName)).Select(d => d.FaceId.Value).ToList(); - - // Identify each face - if (detected.Count > 0) - { - var identified = await this.client.Face.IdentifyAsync(detected, this.configuration.PersonGroupId); - var results = identified.Select(p => (IList<(string, double)>)p.Candidates.Select(c => (this.people[c.PersonId].Name, c.Confidence)).ToList()).ToList(); - this.Out.Post(results, e.OriginatingTime); - } + ///

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 GLa0L|I=TcH1$M3>h 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 I2UI)wKh4wEssI20 literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawLine.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_DrawLine.bmp new file mode 100644 index 0000000000000000000000000000000000000000..339b519ac65afd54c81005b59df3a5cbfa36bfb4 GIT binary patch literal 1069210 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

c&aO!>F& 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 A&j0`b literal 0 HcmV?d00001 diff --git a/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_AbsDiff.bmp b/Sources/Imaging/Test.Psi.Imaging.Windows/Resources/TestImage2_AbsDiff.bmp new file mode 100644 index 0000000000000000000000000000000000000000..f85462b00754ddf8b6044df6a4781d317d61c31c GIT binary patch literal 1069210 zcmeI*d6-;vo$v8;@AKTh?zlV7IOB}VII9cpjyf)*GtM~f8?p%s2(rq)L(-i+A%u{y zBq0kS5S9QT5Lq?p?sN!{KnOboSrQgSHkDD)JKy{Ho^yU()k$|%b#-;sS>ES)zR$0^ z>QvSFy?$lt!N z1nivt$j;di*}Pj+w?%f|?aBdnsy0Qoz{k5ZdLB@nuT0?OnIO&v$^}b34^(G@pDPo1 zc_vUExLD=mGUWngf%OHRN0tg_0Kpg=)YfWTx)~b3UJG)P%JTO;v zuJXXSo(DV|Xq=}!Fi$;#^HdAeCs?39!TFvGlm$Ys!21MCf2M5kXeASPk6@|tz_MRz zR3^AseS)|=52TqO72WNuOAHmMA5cdf}F7PqrfwWf;dIp{cY;}?g;?ZwkPe#~T zlzR|B009IL7+Sz)t&VKgb!lC%44_Of=O-%91Zz~v196|gGr_tz7YzMM?Z4Mn>3iR^ zLC6DX4j9M;{_{;LWrKLsZ8iiDKmY**5U2>)td+_DS4VcnHR=gmo8*Dn$^)~~OfXw{ z;OwMNPhVP+dLxIjthinYkc<00IagFqD8zyCkw1m+5=|a%BN! zf|+S1m|e*PLp`sk_r;mObHKVZ4|qlhKl^pj#JQl- zCn(Zfo1IIX3qm&VT(Cj4F&%ZA4FLoYKmdU}3)qaM>I+&n6L_u2^VG)l z*yDUqoe4Y}cx@&dj43=XjsOA(AkcCFo3=z5!1KU`Nfwx~Oj$s=K$(E8ae=s3pd1kL zfMjIyBjk1>*5hWrMUjbU3^%0tg_0KuHB`(p=?$b5zO% z)07FOC7Gb4937puJ*7P0<^6(iTO%6+2q1s}0%I)@=K;?IQgBQsKb;x)a0R#|0ph*FnJUg<lL6^OGyng=`+{8sfM*&w?M#*ra_00KD>ut}#Y3(Qo_ zQYjaBuVCt&92_}^=mOPwz%#+K_6jfvAb zfzTs(R+->wWda}B5I_I{1Q2Lcz`CbJHqkSI=Yb>>H2Pfj%cj87X(rgF@lj<1FE#`a zKmY**h7+*KQzGl0syr}V=6DKJH zC=*OpCYY>DpmPUo#S?f;Ibf^39OnVg1muF^tuZq~009I>BVZFJsxOdcg1ApGZ8R^( zb8{f@kaEHO$^>5bsy3_G5I_I{1j;L5-Ca6Y(5;$~WP*uP%8OCLncuHmuw|gg1tt6l zFl7V~Kp+;d?(vaLP$rn9OfVto6F^fwfxFWl!DeNHjk>*2BO3w;Ab>!51gv|Ua)2^{ z_X#E>eS-4Lo|*0_;O7mz?uc_ik_~p;ho2EZ009JwCt%&DDhHgV@?7AVU_$XG$&5xU zkn{+WKEZ9u2OH=YjM$JTAbz|1gz_X$hwpV zCa6y^;gsS`jG2s?fM4m^=aqAdoYGI1h9w6LcM;9>MWBJ9-W`ivper zLfuHeAd5@HF(H5e0y_!VxFgjYI7(T-GlBX9WP+WHxT84%&jdHd^>TCrxu7{jo`nDc z2((eax|9jJJrk%$F!9(nzB6xCbOG-V+@wr!gX((Kbt*Ol5I_KdYzkQSk0Ki%GQrW= zJV=fz*8$rgT2fTi)x|Uu+ z$Jc`cKmY**ss*h3Q00Kb(@bz=^+Vi7U`zy7D+^o`*K_eWCU3%vB7gt_2#i?3PV-FQ zeS#xK{9K-ZK(hkgBUn{c&AtxLLjVB;5NM5nbselMaEQ(ss868t25bnlQ{Y-%UvRZ* zm5L1k1Q0-=a{@O0ApO3fGJ&5v=sLV}2f{m-R>1SX)#?>o6&Janv>yZ}jsOB36|mC| zR1WxI(j%B~NJo!_H!rt<=Yp%!x{`iDxjzid9svY8B4Fc`2fC6zK}QaNH$|XIz_Y*= zX{{g^RLO7?0R#{jTLBw)fbxL)1fB~f96Yvf#;YUHpn&HBuNC%-2A{!h2q1s}0;3VI zuKkq<(oCQ}0UH8Y5x6|g1D*+Bc;JLsv!KL&H+R4s)A%H-M1Z>>C z$^)uy^$EHUDACNBYTg8rJm8risk|LO$BO_02xMKr#w!nuSD!%V4%iULx`5|_OH|A0 z6=Z#>I6edr$eDnR-$!}Cdj!e^a5%5fKk+Q)>_RN^PJ}-&@0tl2%z{c&ZJfKX_?U`V|vQ3})=3L++ z<$?>93%uA6KmY**Mkiq1$^_j>CK%l-@oWUzFOXyc&jrt@_*+KpUjg0`0R)O7VB_~v z9#AIe+NUT}Vjd+FSeE7i&joAS9{=ibz1@sBBupAr% z0tn<#z`FKSe?XaF{N6b{dJY+Z!2;eRSfWhe#fAU^2p}*rfq_iW_1%#@k-ZVfpn&%X zmc+S$^9LDR9u5fs1TrjO(+ULZk;#irbjRe zMxL580nY>HrkB7-XUyJ%7e*j!0-;ynxquA;1Q0+V5r{Lv zWdD5w`UHF?$|K;J!1I9j3pj^Ro^@xY2p}-LfKB|SvVg87P$pnQplkvm7tkvx+sZRv z1P~ZXAnp-N^6Lx91Vj07U$F&3kAOZwvDcZ|A%H+*0yat47fw+om_#OMOpLvXBoMAK zq)$+!Rb?)X2$=of$m~_BKS{?|YuvG3qx)XFL%lBj*~d_C&~2|brscQ)G_5yj+_C;l z_j&#K5cOu=7wRu{`!CY++iw}7{z~_G{dHPzts4Ed*W1#1yT(xO(CzB_8~yxFRT%wt zsK3?izu%$$F0$u!-y{DJ*?s?*)JBaPRDJ&x*;>^N?}}`-YNhHb)n)HaYMI8R?}==& zYJuuJulGiFj_NG0T_T&QnxUGen({vVt$_FIzfYLfIE|-#AgPlyp7bHrNA&Z@G^$Sd zgzA%#o%U(fzp6eP*|^WC{$2GSdYv!m^}eY3lIkm}ud2SL9PrISA03;ryN*HsjpP}7 z=@|CbvFxMU-&gIc+E2%LfW`wOoApE0!TR|SjfbiZ*Bp*aYVOgR*DoG{4Y{nthzL*)t5)M>I&7BkzKD^y;9>f8n2D)X4MTp)_6l? zYg9Miq*1kYO;UZmTH_woI<5CDk!|$4Rkt@LwNc|;n|0q7eJ;H2)6c4{4<+@;Bav-? zLZ2Pg_9s=(ruBk8Q(nK(XU#OKd{q6RPF3&o-`e+As^?YDs-96jrP`)?JgrAHKB8h9 zEKq&!U;#dZarmjw0!bG56a9PhDpeR?t=pkqquZ~os@LhZ*XwsE|Nam4M&0%bc_55$ z(tTbb3xqrn#*hu(tbM$ybAaFe%e1O9f#(4K*~d^J7x?(rw5s!f-+p^ly+gOX!gqfd z|5o>T>3e@*^xL8SUbj`xD-Uc}26#l}x!^99=YlvByi4CDs@2K{tKY5fp|qB3^i1I8 znPB02^&O~jAQS8o*=&_(f|>8rcdp7a!KC-=ds{W`1Nx5Fc$!Af11I?Sp-Lt=`Qyq1 z|B_^aQ$D5rKco7rsyY+=r*gp;RbNtlCCLPnzCP&lZj*M^`|hC};I)^IV{aYLKDxcH zMz8%<2dEBI1~^EgGQq6FbnJ&Gb=DEe1V<%#V9qf~CYXDI=6RCpWYsB=%^#;4uiM>n zPBS(zsQl>XGe9ZP)nxvuXWCpDVB5 zt8AeBJHGlmf2e%m`-Jkx{kCTUuj)+Txxn)PnPAYzeb5iyBk(*xCK$xR4+R%UvcRkK zZ;jWhtLinn?e*Fn%JV>Vc@B7eTD3BPX93R!K6+K>f{+P32ZZ_y-L9^X2g3LkJ?E|v%ous82?81y;Bv&kO#uJLk@^@f$~6{2{aDM1p5BpsPatU z<$Z$dRjblk@os%Tsg}P--(xDz1dHFBXXU=pH4DC=o55(UKv1nV8VYTHR(&r8edU;RkcGVn6{hl z+e7car)sYx6U^907#RW-SwM_ZoBISUKwGNl4lnGW{rdpvaaD{56)=0JbYK^N@tF>;P2d-BRxUnh| z{8VeYHq8Wm8kGlbS+Cllx-HEEn>6039B@}!_a=G3GeO7$TOZYD=JB+i)%bMuhwU#Y z6Z~5Bo9GYED-Trl2dc9{$O1#<1MdqAmkGRA5c&kwnc!jF&$hEbIDbGU*x81AiYrjb z1g|dcB$?TW1pM5A`SpcUb{*04*g0PUe*VDE8*uJm=yjt{FtiKz7F(c_30_s~i88x} z1#F5k!Bo!#TwmBQS`K&gOu)H=;TNtt6U?WVGCUNI6iT3y3Fs3PYGIq4j7|E6^1!#^ zOwi;@@U)x=kO}H9l%F>URex{xKp_7DWP<#!VJl}~Q$r^BRx4kY*UF$k=n-%|!SIU{ zdIj_ehBxAoVhL0-0p|{iwX)64#wMrd4W@D}L34und6s7a&jSzA7aw-fLXUt(-F^i@JZ0gt5Bk(=}J%XkY zbM(aUdx(DifNgkzaQ=W^!SF^rQXBy?L2=e{v@@~ko(a?=IQ`qBeJP%w1A%Zo!9!$% znyW>hpe7Fw7EFLlP_P9Z#dK`Ce&=AiX9D^JqhQRTleu<1H)KqeTmTV9{wnZSDlWP;i&=+_Z=E|{lcL!jsal}y0(1Vvx# zdh?4jfzBK7I|ucoit%{3o`7=)wb#=#L8#h$@+boN7a$Yle+^qTgZNs48Oj7_aPFX0 zrdfU+?+oyw-!}+V zj2SVDW(49M!A$)g;w&;jGk$q|4(ARUUo|p8<5ujMZ-I~p_+7+&uj6QsKIs$es!YJ& zG#;&GUY_rnz5-`8MaF%NJZY_F6UMA}TArsuE?>n~I0wE8ai&bqX z9?iW#k_TST?;YfRB}X@bBoojl7@cCio*k|yc!=-0x(gRFfuBEML!ih4p+{iGxq~9F zbG^C6J%X9vQJ-MB+8^oD_KEdc9bM$P_1l}W{ zPf&l+$OQF`*rON%mFo$}1jSg<=4O%f33gL1*rT}@;90p7AQLpcWalY6`LzT-vLR4p z0q+ka^@bu(leyIqusO-K1U83EP=~584|^tfP<21wb9L7=^a;oWb*b1P=K^Ma-r$WY zGC|Ila#V+Jb9C-tj`{?1_8isg@Z|gmcpi92#kqs}YZiJ0{4QdBEB45@KqV8rG2av6 z=tm_G_X+0g9@*LS2}T8(qbGYN@H{}Dp#GwTOhBKYz7>1qTYyZE@AYfd(N{77eS%h* zX8m=%N8q`DOi+KN$OQF`*rON%NhV0n9~5Io%%T|qJ6q=s)FZI7_iE74k>j~;FQ0NhGjbVK&_QO3y=wlzQT>qFU|w=_Tk(?<7BzsGxP{JcTjs7Jqz$V2eplO zv^WBlOu#jU#aY$nW|H&>_Ew+Z`^~)o&&rj6_Xs=>&?l(9Y@tuUwFI@Dc(fP-W^dBD z1Ft_T#)Ozf(*ib6dBFPw3-)dLHF#ov1jq!9tyRbb=W_0#F);SZwE&qQ*UQ(^gSQ2K z-hfQdQq&B;SU7h;pP=?4d4Irj0eynnPCQx+0Wv``*0EKy@bdR*;?d#=_;mzH{dsXF#Y~zOu!YJ5OZHch37SUC$rHo51Md~E4K3hVAe=iG zdJpbJpjZM)9(c2I0hyp!E8E;`;!LnmnP4HApgF<(JnMn9Pe3LZe$D6;3~$3D#T4)? zkkp%tIYDMMA_0r@zz@_XIB-PIW9R${_;mzaPf&Z^JQIXoLG3+x6oFz0kO_*hj;)-9 zpEt0DKU6L_xRo!MxUUK?3sQmKW|`5 z4^$>NB-6*q!HrJ9Gr`?yjqa6-`E37P1AgD2m}|?dh8OTGVD=Yr4ZjzUlu01&5iC6@ zvWv(BMPB!N^_@qbVE7fLM=-n%j}%vcOi@UkQW#-v{fL(N`GQnZ$75u1yz1by?0^!^NnPBJDTc8}k zxr3cuxTp96WP;+aaWgaY^9FX&;i@B=c{u{a z{y$OJpD9hqQf6YeR8KqV9WRXHZiEE^W^^9FYLk*Z@Fehxe4 zN5HQm;CB&sUaxT8z;gi`0%a30dyCE;BvrP#GvC?*aUQtjC}o0UYwyUTxfJkBz`28+ zm(DXm$OSt;$~_1aTOeFZ;JJVefocJ}Og)0jj#eF4eK)rYBEa(r$gVzNM9*XA> zRvxQ7a6+63Y~`tS_U7R{354G};BOWstLA^F$jkEp*B9pLlgzQUQXu33`UI_1E!Jz< z%9A3`17w0?tt)+k!Rs0Rb|F22!7lt%E&;Q*s!!m>xr1`8eB-lCGQr8p1gACrB=*d_ zfcFQyxSk+cDtZK&|HyKHZ4gNEz}w?o(1y3;EpjMeD?JaWPjKycRd)_&z#$JM5c&jU zf+#*`5Y8QN-e9Ot3-^^pAjt%8Qzm#@S*FZ9n-H*-o(H;A6PkE7PsyS{_`L(JF&vx; zvba_p69VlL@GKCjUGK^J($NB(4nKF!B6EC2zkKlZ_10n%o`T4>!vFc%#3V} z*O?7Jj~%lo5HdlT|69qNH^|=Sk|XM@fMc=#N%1pJ(VR~i3ikzYsP<(YsD0R$=n-X926 zxtCiA)E2Nco(IlREl@42y)%zyQXu4kvYk6vlxBg@C&=XDa8L+zNWkpxlnIjR&>`@) zITf(Jd68{6UzuQWPG?Z=!zL5ZBPjR(0+{_!0wE8W{licXa~}f33ix>g>sz8+uvE2d z*!_4Qn*wFb1dG)psO}SFb7eRx1Ue^R_V?-&B-Od2;GOd-U>g?4dB8T23G%jvo(cT# z72T;S%jS82>j=uS+RU>V0q+kancyFrc{d0@+>$^=(Nwq<1jW>k(TlqnNb=K=2%upxlJ&;n-v zs66mbD*6ON3vq8F0=DIHx51mX7&GeFNFAdp#sBoDkx znc!WSJw^^J`vSJ<3T1*-kv+azx!}6&A23H4=K()&Q1t5w!gYn=ya7v(00P4cB$>eb z1Z0BYm3X8P0ekRT<$~*!3vO2RHS!ep>7YQkmY~R)V2Lu1XM)ft=pZ+5jX*90=o92( znR0WG_TY``6Z9$*tk2Ccm-RsXyg||X1R)c6kAMvU1nLWzy<0s3ulLm7nLQAwBM|op z;!M!5T(GIm-aOn%fshIADCqa4=K(T7CqH4lcOC^i3nca4JRUyBoIwHmrSiZpZ`J4O zE{zXm@CZ317YLc4i02M2P#y^9418om0D;B?k{-b>`uCem(3lu|H6mcYyjOX^>oI+{ zUTowk?9*m}kO_*`C-6MrwIt02ZD!@|5XiNFndgC|ay=0aK63&|9(Y>0fJ~6N#nAzk zAroZLont~E%K{+}_{fGpD+SCRRo=9LYUOM5TB8>TnP8LFs3==?kHGr`YzQDQG6A#q z>)&jz_l@j{?2SMJ0@azoZ?k1bz%zkgOHh7Bh8T@kRO3cCiq}}4w@s) zm4Ih~Kc+=4$j;IgDHDV|5XS5%b0i4lOThaBW*>+vUq{Z-=1CxAg5N0{c(HX}ApC8D zy#L<8h59^&EZ{u?HUto8Ucl^w$^%I?|0+Baf%*cT3qmF!7u5F}>peUZgj_Jz?=@Dh zzf5!ROi-N*#_GLzT?EP?kn{-11Z7z3PS4TL8+aB7+2Cc}X6u|l$OC!4o`5{ixz7*p zTucG852;V!_2FVpkXdC)AmoA2FUZuvmF!^ho(a515X!Rw8v+Q7Ucl@l$^%{>9sP^( z3J5eHKrUzisSUgMbp(0+y@QL$18w+(@D^nhsAPhVlyUmZxkCcpC-8FzUR+zynMLqE zf&UG|yq!C^SjSwQ2|A<4yCP6b0keNrkHG6=#hf6s%B(=h1i#Y1@m_50706>ISf1vA zkO|r=#=9Xp40cqU*&0D-X)Nb^1x_Uo#!J^TfppJlm|W;SM5D{6oIi72z`Q( z34CN5I|0uGetlt9uQ9w#$F^f87&{GK836=bAmjnFPXU5J#|5hMfZrw;jNOuiOt4YT zS=&M$2${go8?YgOz}O2UeS%LZ8+>}~-;8%apg{r80?(zHz(=;$3wS2*YYelN2`<+$ z?U)H#KYLyg0R)B;F#C-1fY-kc^)UA#&@lne1%5ukGeM}19ZUh=IBR`^6G!} zKVbG*)#uv(=DZ^U4G2`{fuHNU!hdEPy+FtWw|Cgn^T3XoVDz)&6%at68G(=o%>KQZ zr}G>H+9u#Vf{+h98_+Wt9euc#pi_N*WLmeacA%H-81-w6y)aTp##=IK>O$vl8KsIO+ zFnwAlGQlck0nY_3zVy#6yA2gFez(4aub20lKWR)bGvHwlDH zaC@7+ldsYHT&?m<5c&ix1Of0QeVi{fpIhlG$0VNKy@zg``GFWY?6~-OEA{g z6I`qJ*f9@ypMVVk1hOY!_Fu{bUr>E1dk4o6A<&?JXM!hHAtU(cKeG)l5Hi77^$AwX z-^=rWpEC%#VE7~A5d;wEv_O&vzNk#_#ZDgz?~lN!1wuCPJg`kgE*PG4EHlB6W$#s; z3H-bP8v+PqTfnn`*_Tyc&GvzEbOuIv0dY;Nuf5{0uGPi$H?{o&!7|gk0d6;4xL%v%zRH!B1r9d7wHIggnsT(y$u> z2xLsavp}ef9U6y&KuZNY0}Pc5{Jt`7;dc&3dhWopfY;5cn^e`App1^p8G#}Rn0;ND z;G3#%6=_<`1%Y7&JR5{wLFgBFF7Vr4W!XFv`0pGvk_pyozcp#?m zWB|_ue)|!X-yUjg{8c-@=bf5^|IR`67V?1i2&ywd^*-E20D6V(K&}Lm zJm8sN?_3=>2a7-_1^oLzeD{a3`o4$txc}^9bv>w`y;{B9r`PnlU*$Q#%WvPEmgj=a zD$fI+3#$7Bo(I?vKmY+3F#Eo0pLj$B0R);82t9(~azMxhArtt|;r3AD1A4r={QKU2 z4r90-vVf1C1H#Yuq(6sD;5`Db>MRhhCm<6vx8^(xfg%c+?W;WCwSN(($D9!8m_Wz@ z)#Fg#|JC>TcfJ4Y{~y0P6NI1rdq3oXkO6!Qw?iiI(Q`qqE&Oc)GC?gR9z&p90-goT zexN$AToY%u2y{>&eD_!9fpEJz3;6Aj2SOGI-}@m8G&>FN6NFwtv#-JP5I~?<0%iv& z4YRnZWCia!s7sB2aRHaPA=dje?SMFnt6N zkbq}_P=FwSKzRhn1m#(4W{NGqS2?Y9|8yzK!8k8fJI~q2((xr$poGY z$OJ8><>e5_v_QDNkn0IDy-XY&0&NwjWP-!n`o6pw0tj?gz^^0lJm7!7kPQI@5O4vr zLsj$%_%t9;HUTn0*;btSB2Ztz&lw~|pP;@LdmvC80nY?p^a+ZyrpyF^(F%kf0oN0Z zR+8rs1)K~iJ+KD;&p2xLnj^a$t^WNTeG8U#8ikeoO0 zOu+9QbaEYdZv@&c;J=ILd4N7ayXAR51hOj-dIUbQA%H-61VW$S7Ucpq1Q0;L1uA`l zV*o(_ff5Oj2}-osOcj9!1(H6&(aHu#H~0*8LjZvy2!u?)^#ny&P3C|=YXm$Cglf$z z@+t@*kOzTqJpq{@539v7BG4XzkO$0;YtI|bO>A8brb8xgAA_54sN+4tc&K2d=a}xmsN-W_0 zfuv3>u>w;^pnL)$56~wl-`X={1cno+WCG3|3}?js2ozC(Oi;vCWlji;PQdKMv`=vI z=w66tBY;4z1pIFnd5>VdiVXn-5O9G?CZJEiCjx;o33#8tGXdug%Czdt6@l6U;aUP8 z*$_aWJOUvT&?hL*nln=b>Io!$0zZGixr2IEJdQw-1jqzMT21DHKx+iZ1g&x8RS?LV zK)A+`K0)4Aj^jmO>;$|&5Nhn+g;z!ZfvgFHziZsjHHKMR8jc5njtL}rfO7{OTL9h| zfes0T>kGNYutN*L+ai!bfzTuHkqrR^$|FFZpge2MOc7{Q!0c3=JMbFU=u_Aa0R##l z;Qax=mVoOC3b2?=0f80?BzeHEDIgQHh?JK>AQu8;f?O;U2Z=yi1wxO2Owd+#-VA|` z3xrI-HHIBu3Jw5)%m|PPGP4vM2m);t@J!%ECTJ@=Z-zjo1jt=dd3F2ozf&&j^%PpwcIpP+kOPjz9?o{BIk39$2ShLjVB;T)_JSNs$ToL?BQmfpC2x znV?Lo&Rh|wEfDem=MHK+@hAdC6Yw5^|IPuwcTlvIWj+WrFF>E5c{`qoK%NCcCZJD{ z=T+p`5ooP|*#w00IcOK#~b2X`BQI0tl2yVExaO3DR6pqG>Z#1Q4hp;8`H4sWtZEAp{U8n!qg& zC=;mGDI2gMfB*t6K%aom0RrU|SnrwOZe;=$8v+O*-~vgHU<&6B_&6X?GJ*BCDG%J4 zRLQ2!bP+&c7y+{+5BSK200QL^SbvN1!0i_Gsn`%e009?BGQo6>(*Z#Mff5OJmlKqlZ5fk2rA*8fC*pJ1&rfr)(gCjx;o3H0Bn zOrTuQr(#0@0R&vY&l!aC2Z$hmKzRiEuU95eE?B3L4FLoYaDgNfcrG{{5Cjk?kwE`y z}&8m1Q5udK>t!@f{T<1RBQ+!fPf2d?tsq$0_7A~cY%KIK-GI8nV_7X0A`KA&H_m$ zm>u^Dc7Bw55I~@)0_zs5Pq0wGcc76C0R#|mfpFe{YYh23AW$xW{_~Xy7O795VnYA{ z1YE$gKqy2IK%hJV>*lLRpj^LXM(hH zc=#ML0tk$OK*$4}I~W68UJ`)}3-r&?xr4Km3+8g}Aj8YVp&`�kb*u3EC>on<0=5 zf&SUb1Ih$FDmDZVK)?me&KW2~5I~?j0_)CDpFq`jCYhi-tIkXjs4bB63Favm%&Wa4 zk0O9Tp#=J8DG$t4X=FnH0R&vYvp~`-AQSM3K%h(l{WH`jQ1zWoCMeUoGgky^2~;w{ z`L%ZAF$54Om_XljJ{{=*bqPf z0T&2)z(+O&5Gap8-vs4>NlBGw*31+E1ZoLX&K)eSwHuEifIz_n`nuF7@LZr`LjVB; zTp;NaERIJ+5I~?j0)5@e1gaht8v+O*-~wafIx`^)}4}O0_6fW1Q0;L1w0Fo3HU4^ zP(FcmCo2;u7xbP=CMe(PGh+mX7DzII=K}f!Lkn>)0>u>QJ4u;9xnQk|4FLoYaDhrD zxEK%w5Gawrx)aqSP%iLdLjVB;T)^z&wCEG?i9n!C0=>!vJ;y5(Xku?VO#TD>8;C%uwHUtnrzy*@)36k>% zh#-JKc?5coRi8k;g0&ji5I_I{7fAX9m&PL^2p~`%f!?FlBRD3h^30l*XpA_yQ*9)aE?b?!i!podIQo<(P-2-Fcs zdIX*euCB8u4|AW$NKzQdFWRBM$D*bqPf0T=M= z2tpx(00QL^@IFD0GJzKx0tg`B0wE7@jUk^01j;4Qdx-i3hpJCNCMeg!Gg|~|2$-!_ zF7V>qK@BDzLZEO0y$2_mphvlY4FLoYaDhrDSPcjQ2$V>m=OCRoP^}>olxWqNDgw0y zl5+=1ub}pxJcLBqj0tFQ4{l4;mX95))0tg`B0+md_ z^#pt(5Ga#C&-auE(p*rcc{5i85Exz{$pqdjxO@1Wcmx3i3Mb&1AmoC=O^yj6fIw3M z$$5h<$^=`QdOlA=0D*i8^r%PBvyXlkQQ3eE0R#|mfuv91nSgT#d?FAilfXcqfJ{)P zWoNDk)D-akKvG+4?#F`&AW$rUUiApPPq0?Sh5!NxxIoAQoIBw2fIztfdiGB80GXg% z>&|Qus3lOz1oR1NIq?_*MH7fKfpWnb`UFK=TIPd5(*k6Irs;Sh0=X7g`(5=3lnH*S zVnYA{1YE#u>p&rb00QL^=KX;&FLjVB;T)?j_v_IQ`KiX6E&AP!8n3tLx2tvg8jY(|D=qr(6{^d1`%;a|RTo?In+q-a^-_&XG%ivt zRLxhNr#i=?U(Hp`vFN4QsxwtHRWp)$VX8$hOtI+sNva8|uC&H!JXLjyMbDk6I>Dk} z9;Z51b+mpy(xPXNQ2ofFUmT|KP>lzx4zlRy2dWNG{Xn&!YG0N9`*F|gqtf4Yc}mx5 zKc)YF_0(<_J^dYxyQ;oz(Uad&eN**y{rokJU$JQWmsMZV?fpm~tf1i%u$9pv1^NFg_Z)=Wsr(=BEf7bl(*8F|kqH)WoResyc zZ>#P~Ym3b8Qf>B8hH=T$$IY@GC|PgzlKY)ib%$=>@p;{+xF{j9ppOP`TJrO(Z6s$0LIQRU;U`aH#@ z&(^JJZP2(upSSpDjT?5Ys_*Ew>Xz!-&7$?YThy;w=cUhXud2suPxT2jdM;o?009JC z;D3Iv@Bd$?dEgfsw<`lYuJ8RvG;Y=SpuYF-t>l4M?$CGtM%AsV^{REMo+K0e?kCCs zH>qw=U8h>D@BeF(Jn-8qlT7g2%QRkU(aXz~11?H3L7WE`D+8Rb@Bam=`Kt3&=cwlD z`+s&?voy|3^T2fFf$B^!G06kZjn{YnX=xrfSsCC&)$zLTxFi!id$h)*l1%W6A0?UK z7aZRq2@T)p)N)za28cy&qE!__*#@#rZ&U^q>9q z-JS=+=$XKOmc>9m@J!$(r?@-^RMloV##un)X3qtxI1_|X)^~a-8^pOFjA<_LY~Z)X07)UL_|D$fc&dOldcn=*k$&jfvG#hGA_HGg#jZbRarh2R@58SUjaIbQ~7S)}qP09ebsWzzkRlUjso(a|{1EiTC?h*W0 zKVPdnuu656>PpoL)n&>Am!v&{Wy%CgRTn4^EYkP?LXGqFoj*^v&(-a-(@b!d#xpH? z@r)!Byg0oo4@}ngzw*Ef6ZBo*rQ72)o~jIRipG;Qo~ZG7Wq{)}9;@*veeWNs`jP5z z)uFoY5RC`v`~HU-l?&n?!T$PrKb7);XM(5q*7yH+HSSr-1l}v~Oz@=sJ$_36PJ5pq z&IJ0mf4ly@_Z~r9`u^}d;5~wE`tI>Ouub1dPw4w9?h)vF>~Ve9#eITL>bAZQAJcbb zT>4J+9>HTDNisp)BhYvBK%Zb2-B$Vc{?Fc>l=leY{(#0f59qOhOyK*f2KoePE_nC@ zX*TdtHINBDr0;&cpZ5sv_uC)Vm{zzQGC|xM(6M?J@Y``V&~48G-Y1UpgiE&K!yXkz;i$-~ct+-d< zxggC3o(tk0fky8cgnmJs2Rs*OP2&n#ARRp$+^%(x>&qIeOP>qx6I9oroTX1W_@UwoR$ zop;`DzWL_s{@Z{1Z{2_Y@Bh7M7QLU zOLqV3fBmm+sil_cUh|sQbW1P2bhpeh%XG^wyKJ}Ia?5qgFTZ@Z!U`*NE3UX=x6(>0 zbt|vDa<|GVt8}Zbx@x!DYO8gtufBRWY0{)_jWyQj)?9PVZmqS}>egO+?QWfQ*6G$= zcinEi_15dwUw{2>gAF$5Hr#N-ZljGh>LyQ~+-89P3DO0-5HruS* zeDlq_Ew&ZNL5Y-3~kK(CxV6 zj@?c>?bPkO^UmEayX?~Ky6djpZoBQ)?Y{f&-5z`F(e1hCp50!1?bYqQ_uk#>UiZ50 z^{;<@x6eNNbo=hRZ@1rm`*r*8zkheY0S9yk9(Z7P&_M@v2OoTJ_l7sTp*!S|L%Kr` zJ+wRQu*14HzVVIS;fEjIz3EMF>W(<#i0;TEkL->*>ZtC`Z+>(4mbbj6JNoFOyJLMx>HX*wR`6~-`TzEUGM7N{qA>nr=50Mclzn4cW0b&MtA0!XLj#-&wIM}zW2S| zS!bQqoqhJ%-TU76zV7|+e}DIZ4}73I=bUr84}S22-G@H(q3+ys&+X1T@4W8(^Uv=- z{NWFG7hG^bcj1K>b|3l3N4k%G^rPKH7hTj{eDTHI$3FJ4?&BZ-cz4Mqmvon2dTIBG zPkf^LQ}$o-FV}T-PgYMweF^yZt8Bn`R4BHU;lddjcE#0lR z-r9ZZTi@!w{q1je-}%mWy6=AXyWRJ`_r31>-~WF1gCG2$`{56N*xh#9ZQbp+-`?GE z#~t0Bci!3Eb=O_pkAC!{?(Vzq?(Vtgp6=dz@9lp4;~#hT-FIJi|NZxO4?OTd_uzvM zb`L%DQ1|e|4|hNL$xphU{`9Ba&wlo^?vY0x=^lOb(eAOw9_t=|{PFJRKmU36i(mYr z`{gfx+5PHQzv`ZN;)(9pzy5Xif9^T` zJ^QRKrfdG`Pf!2p>8GE1N^kc^z3m@<|9gE1eU{(qGwGx06Y7ILp%47aU;OeHztBHI z{}%m|9)0Z5NA)k%KUDwTpZw&ZhaZ0E;Rhdj;K2v=l{}!YN8i%D_v$OV=k9y-1!}wN z&O2`V!S}!Som+4H#?3c7k~7l7k>D>b3b^_ z``>r=S?@XH^mo7Oou{6B@`)!Lf81M-Ir=ScKI+If9e&uM2OoUU{`>8_&)$3QwdWqY z?z;0%JM6ICwp(wr#pauBw#mkm^@Cq`owX)ST5YveR$O6)WtUxgi6s_UWZ?xDTwwmW z=bGC-aQ1HGFu8zk*_k`{dZ4T4PbX;86W->VYwr2vPvt)KzfSOjx#ycp$GxxHx#r?o z9_p6Eb8(^{>N@OjIWDNT)4TdDwWAM_e@flW@V`qqc=3h5zVMe9{`wceN1K53%yWMh z4umivK{x;jh5wN=2u(uy-nEVjr(!U13I%zk6j{c5ql&EQ*^MJCb_Y=<3v zmt9PViDg(&;LQ-wgV@}MxI~bmQ;iVrwZp}7eXffAg#_IT&;4hpT@K9X1`b|);V-y@ zzXF42pM4&OfIGk;3^@4xAA|ycfIq+;Jc&DyHwX^o4vd4|9{>cogP+J5KKL-s;K2v( zf1q%HLog7813A_^@4WrCAADChxaH=XZj?Xx^0n7|0UTUufAH~(KPnuYf8Mzb2l#_i zPCD`J@&|8~KRDt@;ouDiA9Tz?^9rKTo4cxQSk;iggb5@;}56ecdl>-x+;ER~YpLxB)%3^?MuItURGVOm2H) zdfS#GnBMmsvEAh$e6C+*PoO7stTrs~^I~zsfR8du|Dcy%z#sfoQ22`@!?Owtfag2t5k=u+aFy!*U1-3lH8ek8nRQ5JA8lfCG?#KltGfzWd#8 z-}23`D=yq{{g2i|}7d*5^BY32tfi60#MHt~a_ zjyys*IOLFn4?5rg#RdBV5%nFmQ(V}3%PsH+8*Q+``s=Q}#u}@yz8W}KdfBBG7e83& z)#3;9>06yqbHBoQK!J;4>iU_2F&nGgxqsy`a$$k@Z)Ru58!o^*dN%PRuQ47leSlDR zjtIPQ9MLTPbK(w!0(k@dDJaMxfCL2w(Zr{w;)$XMzx_>!Vt8W1LGc6eMBG96fq3Fi zfAY{nKY3VWS%Eq5*PMrJTW*>T-apejW$?+y>;adCMl_0ae3Uq;)^e` zh+rUoFb?hjd;|jR-e~ZTwE=?oqpi#?BisCCbv^~Vw*LrAz;oE>_yG9}-Li41h5^45 zClLgEQ)mSa{6C{xOBX6{&H_+yEp$LNW1>*pk_=}%EE`nef3~>Q= zfIA>E2ndxfh#oj$xF>NzJn{D1zW=@Ne*4yMG=K1=FMRH^SHllJacSa0pD&!5d_g=> zI5-xbcoaPGkT)EBz=84y!GU<5s#TWzuV7MpD{d1LX!_10NqjY+Goyvj<;FE5_B zZX7vu2A z2H3`c;1xdS^qx-MD0-l%V0R!KC~q7|8=W{NZ&YA_CjJ(lsJxN1@d;?+kTAp_zz-fF zUwHVZK?3dog3$W|#f7`?N#3ZqkbL3Wx7_men{ISm_>$rRIJo>%pZLVb@CO%s_&mpj zmN&u^-+t`d#1oGaKREm_a6sNDdZ2s(o@g9w>9`=CxbC`Z$seq?T6m)3!s5;w=bL}N zX1wWrIWv3A*UAmIIEnnAWqH{ucJvW;F?QlVM)yNUiF(H7&+)13uNRl)vojv4ui^sq zz~105${C+i#?b2rNf>(lK=J|kLN6c0Av7HH`a#PZ1%!uxYJT9XQAoHCj{rTeKL}AI zVX!|?T=>S;OGjHR$~zhQ45 z@hx`dNa9A$gF0|hfRLB-sBqL@i5I#THeiVMcU`RE7lKl?1n2jYqEaNbz{0G{{;@dM*v@4a^4t@(p(6c@w~CU3mq z`s=S_ASiDXL0D?3CB+Yk0O3Z(H0CuzxUOBm@pQ z$d&4PAZ)m_-Hx#^Tc4i1@vry;^aJ7G+2A1bp!k6k2G~LG51Nc*1>u(x6yXQjDlC{L zk~Ibg&;tpIB8p;)I0X5F4ej z^A9#VHavE3Tm9T^Y>xSHe}r3SPcst-i~}J7`M~_ZvU1BC z1%&v6$jSkN;z9_5>49~mU;g6fr6=MIOb;G;1RMwmN)|*9M*TtKi3tqS6P+)7m$)E) zKwP+{cw&nSAGzQ>@&);W_naAB86And@#v$Dc+;EUi3f!r2nV|h2j&Oc;tw|6WE1j6 z+`**PR$f`|VCkjt2MaGOcQDR4C`;H|myyihAddXfF{$o)n@0+anSGmQ>J0zt{X$-; zbIA(W24}z{`GUg0>;OS^2kS_Q3lM~7p9w!0m6406(a>5M5b$qxpe&BK*KSQU2hAA9&wcXPwz_aKZ`ViPjHV zzF?lH`U1Lgc;c2@Y(7Og(nd-gNgE|A8wX3-9|#BH2YionV#7dXHjJgMSq~W0uiZa& zo(L3tkGUHhvQy831&r?dT+$zWeEtRT2Y)dP%nytMg$3ycqKQx85E?(QtQ>xjI+K-U zg@w`+U0tw47!w%e4upb658#P*2u(i_4#x5W=?6nxxb#xt0G z=m$qAE+8ZAzpv^{(hr<3w7gONU?b^?(v_(*t+M=z#0BXGs&_BoxG;`5sGlW2+A;q- zgc}L@J@YJRz^)inyI41y?aZU$6hG~=;$3(Ro8QFYp#BlF@o#w{{(z`JSQxSe!@zMt z`oSNn&}4!z>JFfZ4F*&gAPA2oZKU8x*66t4z#w{Xe-8t@1JlHoH{MEIu%7rO;sW`? zr#_i{;UnaY@(1w5(@%SM>I>wJ){z_+8b3f+-g(Cnez3_V!hvKYJB0WHbfm@)X5+h? z){hMKkdbiMF|@6X*~_z|{pmSJ3v>qlj0qXM{=jzTrzLs_nG#?%+!%Y z1@nVc8_61<{c|G-BlQL9Od*QN92FPr4*){Z#5jbOHzr@8?u>juwqTwZcR+ms9Z5vd zJW+b$fP>Mz@lx`}3rbghANoO$gX4vRqva3YB%XNifd|MTh$rr4p19)JrT={{}vGFy1l_{_t=i0&`N~1tc+iA!gdD|28S7eKA?=R zS8^y9$WHb-rak@%v-b~q5q99j(K3=)B0#9LanKV@5CVgem52TV`Ga5n(p4t;gA^EC zXBuc?_<_nyNf#6r(2+_%5J8ZRWE@amxRLsT{K3`Mk%}K&@Zs~x7tR(A&OH5H#D$Yi zJU;&5Ey96#BIN~eu$S{j%8k(zH&fYp@`f9%yY@P3y8U2zr;ST4vassT=*qMA?M(%t zT#Q@)ZgZ=LdgR}??|n25fTv{hvb6U5^RidC00Z_Uln~mL+um&2zx@kH8(;&-eg2?x{{Qg{CJ6_;J6`ohOjUm$O^Kj`bu#~%CEx8M(=C(?(aGL!Sh9b3Mj zGSeoLB_B90tV-Qk^~R;;4i;HNGLrm3eoO7!7>|4ZYJoz*!1pnu%nvQfOgsO&Fp-7)femylsF0q$rt1go_VHV@bpuEY{D}7 zLFEerO&lc%B_y@-f>2-q!8}osq2hvZ;PwN6FeYDU{Gf2)d;y+#;e{Vgz0vsseJJt= zZ$DmfL3tx_;f>Oj(GT`jT-beAhXd&dp+4=5X=C!d2 zmWst}O)SM<*&Y*zByf+NeHN|()9X~-U|_C+?RCdXbi*M(^bUtP%LlVFOSdn*@RDUD z(?oDkVZrVIhtSf6N*vvPApO8{;;*eH(w8QNV4C=Nnh&bHkT#UyAV6?nh(C}=2o9(- zQFpd}kh*iLGpW9yzO>306c>^&ygPd0+mCh>;mQ^lK59MjgC97%^aJ&!olJjX zcp^Fyb!YNM*O_+RdFLH>5DugxsXb9~VT1M7U1#k{t4~@v{$S}P6&BP&$_+7C)se(dLuKl-TY!OtutMNU+{(CY^<#gY$F zU>M@Uca<+x9}0S+`_eAIoV*c#;JPz7AYZ7ywBsBX-rV@Xfd}lr54!Rm=}Qv~+=e1K zaYN;e@&{|IwkqWXwV}Wd2n!2P*q{0D>~FkcYpCy7I=t!Fubc?mTJrw4sP5!VeadKN#nH!6vC2TP~)y zv2gi-0mEX&3i*PDvjH9K0l_Jb58UZR{U0pRFK)IE8iu!>bu54b6UD|8pOvosEb@W+ zk>U>ee8JuT96Sj@mJ@Ji)fdle|eH9nv4|dsUr|q|MyRrhq#v5-)ok{#aZE4aE zmR(8$LTf|8IODpt%jI6T{)y);008e-cC|%0Qa1OlFkqnIA=m*s+VT?a!H@rZO+T3v z{CJjcULaq1LG++c7r+4ofv_N9x%mTvf)j?{{PwriwqE@Q(UD9P;RnC~dVq{Hq9+Ol zV*~_PBK?WV8{N0Ae&t&KFEQ!_IL9+_P&>uRGo2 z`E6&sL^eIn>3Zm=K!K0xd|uBx86>$L565kL@g?O8Y>gj8N2Xoe)@>KL3pA)g53d;VQ>h^7OKwlJ#e7$3*g|(=~MOi1^N>& zrX9(Bs_%O*b!W-SC!chZ;)3*p)~AY&q&C&p#~hd|_qf z3#1E+FG5^c03B)EzR2N1Hmt2?%lV16XDHb38w~pKV`FcDMeW<}^@R50HNXN-)Q7HX zwo4BmU{?0z4+c3g^dR0q?x0T>EF*~@xGl|nX$=U!QX@)$KwNNnAx*0C2>>C1fr4Wn z7lwi(4gq&?*PV=G5kD|bWIU7f#PlCTM@n2cM`fn>!V}+ls^fxq;?dES50idykoduV zW$Hn6cBPK`;XI%8izhxmMUqbuVMeuRDiKlt8v zzTNuLq#uMINKdSKV~Yz_Z#?xK))Uj8c;w+jeL;HSp1Uh=L{NO~Yq#EVO9_gb(3U2i zD1Km`h>WEA0$pjM2hCXH@m-F&M*GRyWW8l|v_OERy_pnyQW(BmLHF^QuGwiyV}gXRxfSm^uG><-!>R~*7aN*P>W7@Id*M=D*JxL}@0 z-I=_RaV+XfyWDkW=?53kkAy#P-8uf?c=`{HK3e+08xKD$!&p>buzsLnEQ$-;Y_sK7 z9=@>QM(eM$_S%z_H?F+0;=;0&8|hOO4(0?un95N3?PAAl*qKv^4j9-5?}=d!1PM96 z2Sj03cZ7&>-kdMU8}tc76&xcVJgr6)hA%iUSVaN|Jq~D8ZT$zh18AazB)9?YpwAb8 zf%}m{6B8EX4)6%@1N^~v?GL0M+;H7>t^c6ckuEr2`2u<4d)xkai_!(hg{`&(2OC>gUOV~1@+-<8h$x~Xi6+j0Z*&?1HT&84SXgJ|rw<+i zgEDy@8Ymz|fBxS=VR*;|rrM@+XsR<_;bGxGFd$)gPMZ^kv?GNmW*m#+0(s*o4u-rj zV=)oflamCjmaA?zwDEjy1wuc)tS_v z2v2lBlH4;T67~*?5{u*X3i! zJT?w;d=vthoUL4hjqXF*)7d-&b_|UAP#m6(&o}m^FDhSv9oQc{Cm<*;I4qzmGyee! z0(EDL$_0Zs1lm-~AEZz9F*yWliHZ&J2OPn4`2e-Ht|{s5k6J(2!I=?7l~ z2kJk#y!EMGpyAGpU$Bm(dSmhh;ehE6jyU|V#D)F$Ro=LVrayomY%d*&@e7-1T-*A@ z1p#5um5l=rUl{v!%;872DF(%?{ADXU`vJ!jE^K8T<1~FPUORqvpZXsB2oig8V_^ z!uR2c$``C3w777^WuN?nb)?dj6&I8@mY!JSSeidjf1>IO)(?ma#=(|~3sa;giYBfr zo|t?g!xtFFqTvg3(jnAW9oxl{{sm)Mo7FqEvw;8%42{A^?s$qnZ@jK{r#9qlK9)al zz7QEHfk8MRUoa4!O2Xhi6cYsa0rOz=vU2H20HM_u#1E7&{6qqR$GBFVN&Z0mApW4C zAViTq6!^h680UJ!S6bc(PeezOuB>tIi3{{6#vi=haX~uL;cv7*IFM;D(3Ry5APAWT zL(`#!<2DL&neQntqAzruzo7 zbMQrgptulSnQ<&3iUkAW0wmFKp>ROf*!%%;A@kw@gP%KVBr4z#ekOLnyf~FEw7B53 zvE&2gjdBPh{J?PmevtZt`GM<9=85kse=w3aCN9vIcA)%$aiIFbjyrC@!?xRMI+QKo ziSh@|8}SDWcXqx|!&oK=2YH*Az8SQP&O;2%-{=hwjFuQ4pv=JycK}1^X`*?e>P)x; z(F52);|C)+z#lOELHGfEX~98?jrap43l$dvgb+pf1LGj&My5X?F!cUF;~QOHxW+tD zI#TM+(Ulp$fUc~vv&Xd^CtX=O(oy0E#)0dN)|Hz-5I<-*aNY;O5De4+S(^aIzOr7Mr}gDaIUr2n9FB&I*;b!GH} zqnQuI<5J zPJ}2vIPgUB1;)AF4NVLXtRoHjLGniO1;qvW)r? zqlN?d1E$TheBf!a5*7#yk&$}+z}_JJ2c;t^WB7UUg~-bI19au!;34-T2?rtw2@91s z;t?t?4F2G2Hw<;>@(17`^+xIo6&F-rh<@O_QR5eyKcF3Hhzlw+#UH3IP19gVPh9>r zsxK@`8;Xa$kIR=hBNwsZF}`xo4a zD{;gjNKb?xSV4%4RQ{k6NAkvz;m(N*0Rj$zgn_V7{$Nx;aAbfUjPgX{g8L6LFOKp? z`~iJw=b#^0PZU33T-$NSYQ8k{MD-_zCu&?9^@UxOE>ylC98BJ5J@G{KCkh9tJBJ_4 zf#J?C_r1riSUl#({y@MW$cq4k9&^+;+2z(}<<1v)xi^`u8jr+}p<&jZf!}}4)FbE0=BQNrq!v#j3=?~84j`agilLZheFxVYT#S^Ptxe86c z`87gP#RUy|m!L@6SiOmc0T}}Xq0xg9l8PR^7nmjs zUAgiF&xcZZV~Y#uNQw&@$D;m&ZIm}kKTu#;Z#~Vg9G>Xukut1pj@BEewM$vgzijVg zU2plBkAQ$@f`)b(z~dMBiFS1S?n^%)aWqfVJQxVeatGcN7swo&g3#PS=s~58atS|I zXn4G*iAfj?1N#H%iNpm92u(;*#vpo7{6M<0>rB=YgM(IYl#X-}eX96__a|>eM>>hP zpt>`m*?6koRC+QFuqapzWL1E}mw4PXXrsR#ipopHRu?vwC ztG?iJqxFLV0t7+*iM^gU=t$xR?oS-imD8V?x^v|V6&I`{2?wW~a-zmF9j9?Djthq= zE@+(Vz8=@Mhvq}UA5^{|en9`h+UiRqE-bf<^G0ULT5!I3CMquY=N$_d81$g5-1dA< zvwjf6IofL{vOB)kAFk$nq3K8j1_9w2d4!S=nm<5LBr-@P!2w>kG*n8TYPvwkvN02Mk}ZjznBgeN!?&pY!2cNPL{HRwDC7$#ouqt0 zeX8*X3~xj~U_29j>mKjC4byBpZ`{y0Sk=1n^2<1H)GS%FE05<_IRn>(L+|hS z@yFWD{B=cxA^X`KIWPlnIzy+7@dwYzA>a?>4hRg@pC}xVFCZum4gon)JQ06jD3q?O zw6Xj_^aJxm&x?aQxKEpO<$KvAB=z**&f9*_^u)3H0sV;{zu>wv{Gj?&-Iqo?Qa^q{ z{mT0>%yo}FcHc$)2WmjrW}B_#4oDa1KUjN>RmmHdbN|7j3(FzUhcXAg(dmBe!~0M9l9ed1M-lDwmjUMhyz0uQbd!DTAx2yIuCxYXj}iRx3;xHi7l ziQH`Ldc(n_27r4nq z(8NrURSsc9PqdEo07BAzcm(qU!h#$^0>hoRw{dNmcb~d5`a$2H=(xZ<81e_FSKfHS z+mCx2y7HS{XL`dSt~WC6zIdYf0q#I;>!gjEPF2Gj(GyotzCgb+quy0tm}kOp;5QoH ztsY`~ZL&uG*KPhd!l8P?2lLnm$N#4EgVY<*531};RA@jzSgyWx`-5@_zy8$|5Jjg8 z3JZ@{{{e9UJ<<9B@`3u5r^y=&2b33n#JG3y1J8?dbNIo~x9<6ogag$VK42W2aoTB& zV>waniCTX_Jn_gH_RcsK_<`qB?duDgPStg$b)+LXE-a_j7leaMgE8U$pjp;d#;`B~ z{`Y^eeR~Wfasp^5Sa5{H3K-pQ-Y$GF8 zV30p(dSaAir;SM*Ll2@K+(o)TovHP$izlWJC3>RrM)je<6B`c96Hij!h(C~iaKsVm zLxCTlD<^NHKXIEax72W^O&G?quJVOdS4BTqhT+bOGHKodX#JqY1t$!+gH~v2 zI+BUvj};kA6N7_{UuZhg%{PD5{GjzG(w8>iz&w$BLE~892ge?(wsrNTC2!on`VW*Y zh$k}b{#ILUu0BrR1>pn)g@uWW3;d$XsJhQzf1hVKIGp7d@I*Tl z;FQ_M{ch+#sIqhTLEndBp4jV&ns?v*2VsfH7k=q^b$|Yg5)_333kb$Rs?H_|ZCYK? z11AjT2gC(!iVGUwSmWB5W}CQxKcEjq!xui{y7LFLPFMPsTiuy;y5NcFLy3N%VQrEV z6&K78AP5@QMx9B5;>s(nu-r1syapK1ez3qi3>TU6+jQQ;Hpl9*eC%x)G_wabbzV-K zlb;kE)I?dSJ6Gc9xPYE$UAf6fYEu;s!Vi=-iXc28dLU6bJTZYGK!`hV-q`vNtS3Sg z;}1j>izg2KNLrsMIPm<5)sG|`Xnm%0qAQjyAJ(nbP9&lA&-G!hn)FjTn_7zhZ> z9oQkwYBbNLqh^ajs{2T^{L)9>&tI%Of4BO`oVblcvG&^ofjP z*?5zUnNF3yv{hGLb%o`_6Gae|HqJAyt1rxqJz`<3I{aTyF)rc_a>X1Ny*jTR=dINj z`h=m?nUXL-6p0E0LFn}ZM+F51nh(;4LfJW!siG_!2qW!C$jTOy;to=0N?;&g_zrPF z;}>qA{~&SU)4{<-%$w)=6Rjg@T^`k$gagUSsxQ#5tiWJ@U>%9!&YCt)aY5zAEjFE^ z<=Qq#T)-bJznlmH`oV%smo^8!&{wdJ-*Mz^W#lqE2ic9AXh4|y{2U*-z$?7pj6PjF z(J=5j97EnXR#%QYsEnaxBn5`*LP1V^oB~6yC&CZZuT0q)e}Ik@0U-o|#Id!dG4B0) zZT>{{p;Uc=Y4b9V=7@fv^%qW)u6z>n=6T(|BZ&*DFC1{7=0ib0*lqV(hC{ltr&FEG zbgJr4^mrzZi+WMV#V7%@Jo|w8b zG*N#vEH@b`x-xM=MFC;E7Uz&7f1~_h~ym6~7RA3N4*nm3I z8f&V)fIlE_WcY&o!8{WuEH_i;$L~kBDTa=5%f#H(|GM)YHzQc^qw&7MAM`v?X=4hG zO;d7?m|O-%8QyYA4mx*5lE z)7QRwef6OP2bX4k<@6_#FR&g9`GR#M)fbKg2lTD)&-{t%Lveqi`qCU11Oxbi`jOOz zLY+zV#u~l=4m1zJf6Ny1$I#m6udF`U-sUgdjACPsd}8CEgd||#Wx86UYGmbVL%|>5 z5gI{Aok{#4p+Rv00ig$i+=29iA#qGx5DGk>YVkyHpuF*R>xupRNY$@=W#b3r3+HJW zPx}Ma7leb8PZkc;w@!V5<(-2AbR_G_%&WUiO_vs3nc+;Ut|VP~xz{YY)S}@BOshLb zzSNhy=!j)&x7`^9^=a%N+9%@#V}xt^?7Drq_n5`wjtj~cA|&AtA|N;{RDHofaQi`E zkPd{ZH!puWJsHpa13;%IjuLGjKzewcA>-_$r3@x+X0 z8sfr7-H*h4DAXI7Zha(QFh5|qwwhL#ajrW_KR{2^Fc#^`Ebq*)w$)dbp2+-2;s=X( zdFP4mLy;wIS&VDT#+r*u`g-d&l+P{9@PIiK1vpc=W1`~TQZS^WnJ4CV)* zKrB%pNL&y>h_DO_P!#b9W(Yk`j6WE02R{-NfB`s2oyj^9`9k^=OF!t>=`s%JM0NqUj=>KyoM{9Ht~?J3LuBRDnF52<7k;IF zWdsEAL`4Oq3rv47G$7y(rqh7X#|1eAJc595JM-d{j&wt>BVFlnEc7E~K2_<;@dqs~ z9EYx)dZYNkf&1;ZkNJV}1$3m>Zms!|rc5DU5D=6&s?H=FEb|)a%8M?V{a*P*p#UJXYNH%NH6&^LLZ3Jq2*3XW?MTTRX+){C zF-nqj<(?)+Poy7dWFE~Z2;v8oHi{?~41OekQ2c=T(t2I_>VYSQ9|Q+YS5E(dcp}s8 zD=sK3?6=SBmny{RFL2)7Tp@4&)Cq_qdKT_(>t}}UAo_D0~thf*yC|@{0{fYZ3 zE~w6==}-WI+`;BkrbtgznMrx$8gd8H4?K@1{YcW4Ctgn+ENT=O4kJb%0l=`UlL8ID zcvcPl3a?XGKt6~=AX#9&HtR?sicg^{KUH<6-XCNh47Dew*od_JxB|ndp4jWkX+J0+ z^yAt{9EUnn^(V?7e6{?+=RbRuaNxeQi(O|@|3TFk!Vjz~tImW!I1HZXc`!1rZKs{K zr*C~r&4(iWz;Pk^!AdJ=;Jf(2;)^cC{D~7-cE$`g=rr~S7REj~_RMDgc0bJ}#^JyS zKR{4)SP(rJ@`b0;t_%`>H}wDpw;v!QNjxwR&<|?jyn!Z4S9aez*@Cw4#1arp4;bIr z_bXdhrvKnG6&L7J#UE(8wD1G;15LB7`ogjB1LHvcz&etaW7%DOs$Rd5`ofe=rzmf< zuDr&im0fq1exQ5-9L%@Ch-)5)@A7Y5qS>%nxZRgC$kSsEa%lRWFDL)4cboa=iYDR^ z`g)`C#)gC_Nv&_a+E7~F_(al1hBpcbt#4gKQM08H8K%k`oh}3j8uxA>ByrR--@*a& zD=RMC*pFut4yym4`jHwA#_&Y9p)h`-`qs@4G~Ielvn?2C+I`iTs4o}?%V^xY%8m91 z^UeGhHtVmL+I%C19(^kNLs*#gH=LPQLK1tPD0cu&taL$jrl;L~Aexv4#o$2w2kAp0 zUy!csiX(+*m}2sU(hsJmCx$0_J`~3Vr3>j#^!x`msqXxh)S0v#OY1+l@WSZI?o;)$ zeT-*Py-~XIo8gJk6U`6Ymxe#^w0WCLN7@h|zz#lZh5ADO4bR}$H7=(a0DkB8 z_B|xp0liOu0z3VKarpq#xd{A#^1|4-FlK%vkWfU?Kp zNFAQ)`Mj8e{Y$1}%Go+px^mLS=X;*m3XYBp&;x)_{-AJxt}KS&>VkzN^&eP9@^opb zFBk@K2(B~X5ex&o0Rn>c#5+B%4IGFcR6i0psC9kmPaNq(Ih}lgdZXe(AO66cK?zu>+!jbo8NIOUWRyjm(o}f8f3}^&haz zx0Yw3UwI4ltxH!{Uz&uZHQb*lSs7iKG7~z|9Q|%z{s$^cW8C~d9W(ps9u5T$F4xXw ze_S_U5PFcb(L~YN!k>kNo+#QKltUQ8f+s*wRB+;0^q}d=8NlGM&^IJGbL{I2@duI< zJ?`E4g5rYwL908n{(|E|`c%aaGCxw~jhbeg`A}NkXgv`eFi)291?E?ljzoRI^+t_* zUy1Px8qb8REFhpKj_a2>6BqM4*Sohn?)86xvyMhzoQW&X+NtJ=p$ENwkgPF0v1JT$ z2XP2)Kd6L(Y=LTHoPiRCR$mxXW}2QqaK6yo0ps4`2e(pp4h}Rij_S@=2nWokN}cIE zjbni)N>?T>oUCQK=u4x{r1nJdgZ(qU(f+`F>(LWg=3C49${#pyR9rwtT9|<>#D(^4 z&)T;)bFZrR;!gkjk!+rael+#v+CiPucBejNydIZ75KlxtNWLH(^!y z*3prUBX6`n@Up&|Z=JgH?z^Ynxb3#mmDR62nZ9-A#SuR+Pi*6vCf*-RYs~&gzcYq1 z#>#$fIAOd@Kju2+58#PHLg@$YM^c?hVWAfg8c#GqXyaHcBxzb4V2}xttRFC+Dms#A zB7GhP5r@vcq!TJI9M$Lbq z^&4Bh@VeJ)Jr?Q<(v_(*ZLU5PFXu|$D1NZA#xH~)PwO9PJq|4 zKj`%X;ea|*9D*BFsV^WP6hWXXO$`Wz1IY&-_fB9C5|TDT5TqVdeWB%z_yhV>?-xDz zG5Ue)ja7FZ*5SY(6b_^-fBI9O)I{5^J2Sp<1PAU{K307w>Pu7Ky8VIbOdj{HzI77> zmS5OB{Rf&BM>-PxK=nq}=~~?S!9@3^^-vhIQ*9?bF=$VM7hn)n414YQalN-c7$u6m zp4j+-JVMJGl`)L=q5Qhs0c9rY&V+>;zaWRu`-7ezq`(jy2nnt`%NvwGu%5{L%GZB6 z>-HsYr2oJ?(Q!fZ=6U>r=SMpBt;~mVg!O|rgdfn4q=qEThazDa9FQ=GA81`)wV|m0 zK;svd5>H%|d||@IxyF*%t=}7%Nq=a>u63;U1MTtX6-G`Uhh2|jK}l-$h4Ke!NP3#E zFyan+9LOOkaV+`3L@|+Js53b(s7>|Z@Pl4P`Z0~FkrRak7Z|87peLFiz!S4RQ|b%O z8zm%}A1E%IDI74)6@Gv}NI#NzBEy~S4|Wv})Q3X9a`6NDk(4)TI@OgJ#zH?5`oVbb~rli1;)Yr{UwMCkrPc66Brsl2thzR=<`O0ggQ2+K@y_m7Ha~zTnjg4dnSP`r z2@K>52khtm#4Ok5K2@e$XS}n@3rZN6FHQXil97x9{K3TcAN1e*u+v+*-_dg~w?DjW zocD?!m?yUJOwYK`Bzh42z$y|zKvkx|U{%=-Np=Vc3nGdwU1;-QpeA}iQ{RVjzZgOl zo*NJ#iW=XDj&$octsgX=2o9V#YN9ObiLNhb+`AG-#mEDKJI9K5y z)yAeHrOp%`iG%@~*mNWj#nhPy4CV)( zN3)L$^r<%efcX!SFMRMEO{i*rkhsA7iB)gRd}+~@y?o=2+c7^9{RbOQreE3h1@T0| zU|IF0DK6L_^b2T>{}(%*E5^9fnz-;#PZufBqdK#HLBBJdYtQbXrX!8=gN6e;1QLb> z1}n=I7vv3SP?SH&rD zu5x_=9N-UmXU+0YZFg#rc#vC86I<9*o`9gH0$`>+`X1|W7qCyoI z(zQLm9<^@&(r$l`jMb z%(Ja=Ear*SnT}IG(wmQDz_a{;8j|b}m~UNSVSD-ySf>jeX}xu&BZ(iV&Ln@}`a;Gp z{6{pVVb%6Ori_(!o1MC!`ayrz@DldMZ8JXzQ8W&kelVIZ*dZV*yV3+dfFV$4QsyX@ zs0k2E6oG;B#*ANZ|3Uac>r0D65DH2_=-1(hj->S)NBjZvp?Dt6iz;ty{NSCZYN9NU zYjeF(;~VKe(0J#}gF)U%fg!pwt{u%Y!?FHlb7Y6Q^Jt?g?!f87pV1HO4~i$Y0>f{jBY^{8@Px-NsNiV*VCX;4 zGF`o{OvX_BKuADF8ml7}PgGyp%{Sd}eTxgsn`a!fy0dU_R>m`(>haDV&vYd7>K?-U z2g1R~d}+0e=cZ~%(s*adNaMFf-uB|$`=F!=E;&bP*ey%=o1DBiWL};4;nuxg5ZI!NgP|= zc*hUF|GgF$s&BpN%Hju=FMQB?qVomyA87uA$`?G|Spyj24?ND5aqrt~Z2@6Z)tQ_x z(4V;SO4gCk519U70`H&#P;9 z(9gHdyt*WgnNQU~z#Rw)w5}Tl77#|dggF+nisdr z&-(of3Jk>$!V?`AhH18?EEft&M+ywG5C`=I6Gi6>@(8XkIBg_d=y8z1;0f1Ziqr6e zjB`!jdao;gCVAr}Oq>@T$vD6tpdSzy&<|LrEAu1mXJOg>%IHWImb0#}>dq=Ox&MH1 zZCbC5xPYKI2fopnv4u=KYF%L=%pnKIK07nlo%wSe7hGo&4CD?xpefU>izv4GLfnA` z#gTLYo(K+TKWK%fG_FfmcHSr%DFp@`g5rWvU>vl>5qD7Y>Qy!B$#_Bl9CM(AE4v^P#*(^CyZZGVlHb#f9GPgRS`K!wh4S$fbvkT7+2H*hszzsvLk^ewJ`cNt?AR`$E z^r0j$xbEB>0_8^f58Al4^dF?Y;64=98-oMIg;9QR(n;kH=u30H01l)dXn>>iMDj+Z zjfxA*r@8_C%F>afCo+Fx5k>sL1boBOw-|4%|FJhwfL(tU-}ohdHrN=Rp8mzg;i&b4 z03n5@TCS~67@{A&t>!gN_cHhn&&-;oCl98k%J!k#knbetZ z2(3Rc^q?A5#SWq?KVhC2g77$jq3Oz=AgQGbV{qU)6NRQ;M>0>8j>LQ@^r?Oop7=$@ z1?I^TPgK6p`jNyF6&F%pI9dL{^+x8+JIwPd6Bk&2VGrg%kbbbW*7;^W6z18^L|Lrk zseGa00^=L!Bhj9?D1B+@i4*7#%H+29V18TF z4>7;(?z=i(M}nIMo2gzsE}$ST^fHn&N7om~7eWuLB#9`(6G!VzsEN)RS-1~nIrRmn z3-CnaV3;>A^#%0Ak+iXmZ*21?q9fg4J(2!{)|d9Nk6vh=IF=uvC%XTDex&G$?o;(R zmdt;k^%uw&He!CH_y#xIn9Ab%hzsL(XR573c}1Luuxo^AS( zdVfGalIsh^1^QGojzv1sdFP(%dH0D6tiy4V^M$4(B`!!;ZhE44qUO~NKTzSB_1er6 z=|jnS@8Dnpb>(Kt+&8PYqX40vX(!~!5FzT+kylJ*$=Q2oo(KwPPZT|Ho9eTmKn{U) z;pwMI7kVKHn&`fD5k(ajwEe>KA1ExC9`yP_{6TOKS-D`~GE?z`v?FOg)y5ApzLB_q zKe&SaMDfJZ6V;CdKaieyYIq`jC~cnYng?TV^aIa_vJD9X^Pz|*dO#EU0ez}or%MaE z${$QjzJTqYZ?stl|>Y59Z%~A$rr*C@dvFh&3Pm9 z=D9yHIui5ZsBzu%U>vN8arW8g^{*o?peL%lpz)1csO-Gah7AXr5M?>fkF=;4Y{MUn ze9hzfy-stnn7O@Og#|t2uO4YfdpNAmW$DU70m*_Lg4KgoXc~scb+n3@k?Qu&n0AVZF8m7Fcke37r?G zxqh241_uT*bhgnQ_Wgej_D{8Q$Nj$Yg-RFV4@UDwaG=0op7^^=polvt9SNeCcI7sX zB|1_P2C;+aiIkmNeZg{K<&E+O&;#Ov$1em2U%B?$Yw!ouneYdxF9ZkbPn4cWor%1$ z#<_|o9{Ps#Bc;Beac$dgukwP&wJBfNkbY(Bi7V5my5y4h1M>rZeG|OZJL=9D;AR92 z_6dBVk)spw8R3bQFgR~iSZE1@@`dyxp(_gry`C6;ki3yHlj}@o>Y@9UKrA)R;C=b*2%dHJcg+GB$s`)g2Z%7GNki@T||sY3)?*$9HqSARve! zz!Qrok~T&^D1T7=z{3~B6f0dIU+}^_(GzRDbFUvvuP?2|1*Hp$3^;`N1M5iiCxQd< zMAmb?BI6e{AByYF)sJ+>yBX(79}43ewQe7MY4o9Ffu{7Ss&Aco6*zj^+bPr;xn4f)ocPS)iB1@lGLSIf5zG@u zbfmywL_TP70e+x-0fu0jIMf@XBlU^n18hzkGma%?CLzK8VCwk~GJfI8k-YKzVcdIg zK)q4xcruPf<6P5^H{kfy_}LQ2znCGX9{(y;md3?VP`!9(s_kB$Tos@@p=Ab~;iV6YyG^MxC~g0AfO)?IJ(dMxn= zAMiMq@B{ayC0}rz=@9iJQEyb;+2fgZ*lt@*jH5D>8q>%Z=syro)OaTP(w1Dc_ZugsZVtzZv+QdeVVw?>Wz&b zoT2^$@x;DwJ$0r-G=3rLH(EcSA4&YcI+Ewr)q3w)pNR>U)vvs`9D@A8+!L2KHtXg0 z9z)CU{P}<1`Y}g1$b(_?f#KnJ?|Hs7_yO(8jtb5jiy$B)C13a>G;s(FN*l!!B`k{{ zR9x`P`;ik#98nWJ-@58dnO8S;XO*3WgJD>k1H5DqSZCtk>S=MPv% zI{oz06X{D+z40im_ulKu`|NG~Ky~Njjh;78^#$?;^`))O`i;vjWgKW74i%m!1P4=@ z(+|tcgUNemz|(*NOB)FV6CW6F^Y_ z-I;lHU2kL|4)KHSx7(J!b=GUseCzAem!<_-)Ud4a3&|G*gNarHj08NyxEM>Xx zL-Bg=&_uff$p>)Z`c#=mb2I9V8?LW@W!87rLS0(0O}erMx=KJ`;5)XM4IH6RX}xA4<~?s53cV5EQ64GVgxo zLm3)TrYbOyHbz;NdSH4$;@IQBaiRJTG%pT%qT<5Eti#c8aK>oeSvctX59AM|E4v>_ z{=jiT>-uh{zO;=*6W3WAnz$IoHge4^wzMwu;t-nD30r~-P zL47F9r%FGP`qD%XGLNPvNMa(4MYIlw=)r$TKay-1Gsf_}>45-G)qg$*cyPeCHg~;r z985pv61aoZojt5g&_&(XY(7cdy@gX5|aQ!Er3$s793V!~;Ds&R)(J)Ssw{ zFt*luu2X8jv({%~{DRi)(>z(~MA5pwnm2D^cw&s(f9kD)!LKB@g5*T2LLwSLO0ivjFWZpcv zgT4<1JyHIExG*wr-VGkV;QoWs4_ck+9P0;XXd%z6*QR{oZAW|EzQgE4IY{%R?IU41 zI+FX5RBxQJ$tLurt%t6x0naNhPu{3T6z7dvugzcnczu~Kf1UO=gN5@exBZ*#D;P9P z1S$>}_40O=mw%sGer6O08Ryy)1j`4Y!16)sM=B)=hwy|7&nU|h5Hi1Vc%pRW#0B&N z6Gg>^2dFb;Tw8Mpr5|V=Pvf9;B+Zwm`4ho`2!iKFa=-F<(i78vFyxKLy;c4od85|t z^ZJd63z`>ahwWLHM{!|ea6rDmxOWMP@(1LNUg&!Q8x)71yG><0-~nR$m{0p`IU!H^ zR)_er)8NTD0SD8>^e3tjCHX@1M8m-DAVkr1=M)&!sEUA~d2y<5UG6{)2n2>cE+k*T z9VB5uRvsPSIF+7AeIa${8`?UajUQa>er4ex^B+`w!TiAe2htO@4hMB6uj9!&-}E0S zE^MXwP(%SD5 z5CP#&!oeUX_W1%h`0X%`MF|5bgJ@zL!axvGV2D4Ed=LS_=|WHt0ipPT=0B*u_2P-2 z|Lj#YA4+EcK;{9|#AGYdg;47uq=2;)%%@)PF#~vIK-p@CR}TEa1rc&h()y z$@m59%5&(~HI1#tny;*B^BV`8A6)PhkN^<;&m*3zBhy@Xybe@cKu!!0+g-V)d<8TsY~3yixr~6&Iu< z1qbkht+rxaU(JgXet@oQ94KGVI-XjeY2qhP3;=A;`i*1PK%i_L+xuv05ryb z8{vue2hWzE7?0q%P!lM^4|-kM)1^s1=+lK?(5X5G2XY8g2?(Z%_6HRi#`pv2NZqx>u>P*#_c9O?4p(|HhIJk{(++z>s*_M8wgh6$tDI0I3zBKBM z?ms|ALPsJlEI3i}!C*E_SXRZzHmUD}3IifQ&;g=CprBjr=g^!$0lKpKR9$5P21yu@ z4@M$GWsZZe9G;lIG$FwXf+BUmbGeWF+Q4$UIr`2f;z&g6m9*3!eYL z{J`}_=L^)G6&DUatnx0i{GleI5VqFVKHRXEr z15b=YR7hZWsBqBw(yDR&ZXANvZ`9V-<)J_EM(K&yHXZ4*emoO>X__xh^X5@^KGk_6 z{Riq#>~&?$udIQt<_9~d&a|!gfeMZr;}4h@2OUZLV2BG7*oR`Xl@)E+{Mv15tlmtV zJx*kgqddu8&hWlXURUY&XB!8pJI5V_C*lwKzBG?(BV$ONX|(K&q9}I|ARr@&Af#Kl zrdyYq*z`oFjSt+{rwa}XjUQD1fpnzcpw?qCKWKI5HjYJkV;kps><|~EAF$3hXUdOVZj!ii&aq(j_~)W?PJ#OR3|ZM1&F!K$h^+8;m^nMspxehzH9 z=-BIGN}DssW!q-*R|$)HX4v#`>RBMbl~fGV0DUglpXtv$_AO@bpV4q&AQTKDABY}k z982j3{dlJIBZVar7s3-IEz2WReSw6*IOyp?=08ZjFwCmoz z`%oCa@czmds=mft{d9;YB+U{Q8>v0>szHnfjwuh9daGir7{HyhiFFUTXbHr0V9iYFQcA_%TC zg(o5-g($YP(LfMEP{A?vM(YPZ%lwJySMFheKY$-NUl5`hteBC|}S7%Noz52F371 z@&y{#=O7MZ^k$|2z(4c`1Rb(#!0PO1YkN2W9{N`2@xYsQ0gSf+PkJgB%@eb8`yvFP z7Zj0^EFhpK5*Hj8YGEGh$|L=WNgGpcbU%{R1M)^9!=oP1BwhKZ@Wf$Vp8M`E8A<*i zalt}TaNzZsq#s<@`cN*vocUB07cLm1C%*gCQ%^ow3w>)`+c8I{?wq)wc{E#n0Re%2 zW#x?>$X7+X4j_28#x&;OWgviRt7phOyVF5i+^g#T;QNev_iVK24hY(#kjcNFUtlOu!@YNw-pdU&8fc^v37w`vXhbN~0KocO) zmnMHudZHHMfG6&w}S$?X@~?s)~q z;ybFttDUPS$H{{@|*sq$7Pw zIFLX1Na~GhNXj^t;s?jR^%(lnw2&up!F?#NvyQa$PCM+t_(u7I&8RaaE~L<;J`@T~ z@&~Fo>YJZ)TV31MmCdldOb*raj?K<7SyaDxKLZ2|3r_Y4juCbvg_E*B7Y7UD^e?D< zK^a4;3k?TuK!6`8ag>Y%PwX8+^&{CKlz!lZL4~Hr56CsNCpd*#A%tRR9Hx6#TNpV4qs$ckm)?@ih=06}V zT=3!aBWXSqzWb(2q>crEStyvSeOXFQM`sx0%UZU0D;AA zd-k~=TaL`&XL^~_!VfB600&7IRAA_7;s_3UJ<-B4`T=2~Da%HJh@w0~+E6^swZcLi zLiqy?cm@c9fhWQc4!-}r?|$pnTU2+3Cu#tL=1X&2_#}Gbg%^HU{y_SHbtDa7c*n`) zjrfD39T(mx9Iz0F^u(qg>_DAK3;Sw;rqT~Iux*udGoO_WVFVIIegi{6GW&J+ajrccR`%zp@&VJkj<#Ypn%OTybUk z(w1D3zBF{@kg!?)_Fnddm_`=z^Rbw2+4$M(DHs7e{Pw-^ke@vF{Ba6am zXzrlJ1s3{FT=?2o$rr9wABq~1w1A`6;n0Mt8qXwMIr@Pb6i-H1c3kjyrb7jT@&|iU zZ}hk};b2P4-fcdRSRbHGpN zwA?pr=y4&07xPHZfFtg*gQeR$&8XFO+Ak!V(D!NgLgN(Cf;^fyxW; z1JeVAg$!t7!u8|}o>y0a!8{RqQ2Zcm>x~|GqO9Tv^dDUJ<<@_IegIEYU^wsG4>GWg zyipS@(|_>xW0@d{ys;K!$pA-9xGo$>P~27n7_R)>wVD)vO@i@*B5$zfPQeD@&)38C)y@1KoH=G8rYV;^>+pbUbqh&s38e|uumpj*FqdSXky)M zw%S^H;%1rv0e`^6d8=7RN&|uhG|j1cV@y-#!ALPwkPu_*)_BmZkzxz;TL%IGi;iP_ z><=`2y4)8#yo9THhpQJ7X4d#4=f8xm93*(4Yr!BmsJt=yLDI&th3D|Z;D8YfG$2S! zBs7>FH2t9EjrWBhR9JA{s1AghP?fr~btLPFpZlzM;^mip@=^&1!U1tX4N31k>&!Dw zCto;O6C|n5bj+KRH#%Qnovyt#;CZ)QcihnvVSod4hF$;axv5=y03*O=Za|R5eTwb?jqm(&K)?n4HoE5>{g24|&eFf9aFBK+ zvW3!-><^F=U3f-5@K!n!LK1PoBj1xRASa?LlQ=qGKv5JwFhh`hFh)RdTqqdOhoXGp z`^gugC-(V59~X=RO@x6zP~lnrKof0?C(^G>-e`Uxo=AV~+4Y-k9+V=*kk7%O6~qyb+$L!t!nzY&~7Lt~% zfh>Z7Cc>DVZ*S@^xLr&4{+-sZ6_c^?`zE^U)&i2P>ZpL-vl$myTOPuv`zZr}AAO;v zF6Z~lm3eYD{w?SSHP5#B0iog9)`!yiky@K-pEp*4VN_3adBHdcKd^xC(}#rwWeXM* z$K(q`#sE>g{fAnR#ryyr>3Vb|&6{`S73c?yW6^}F^r=={kUua#kUuaElrJ2r_1f?U z#Shef01n^>n>b%kfnhBHVU-mHgsL~Hz@Q0|l8aAm&)Ip5Ik1;*wM~VDfI#-mR^|@| z`eX3~fTf@TdN`;vyi;f9;(jB)-)z9(Rq%sqKX6zG4E~Icc*Ke*TPY%5);`T`U0qbG_d-lX-JuK!Z_f#SktmtFetj|&IZmGKAS z2Q;Py2hJCcVq#qy(}aWM3%l;RlP22M!aQ4VvAObvO(xTTARTGas&WW55k?A*YDAfx zFK_yAk$G&PfjrG&+(M zMb_y821Es5Fz^FSv;9Zb`R)tPi3=tO3Jfi8w65%uqx%n1d#2n7Kk$6(P8XyoIxL7M zHXyjZQ2YS>py!F=2hJPOl^qw}3r}qRAQLDO7u0`X9C(5x=}4+KYC=`w!e*OJp1i^O z>);PcKWGgI5ftrOXYk9Kq0oOQ~(Sf4rj6FvwW*ZoHDur zg!lrzBiNYL4IH>_UG>JyhvKk6-Uv%%W0-3t46W`=d0|vfZ2Ey1f-?pZhM$6i!Vo`TAd7UQ${ST+cpDSvkuOL;P{N=E-=!;i z0Y@*;B!3`&fIomA5EoWUTwp*`HKxtRS2x|S+?F8x*Dtn=X4~41v9qn78=1JQpZmIP z=LHzXL#{Oy5_m&`oBtuRjsxe7y{~ zfJbO`=je%o0YI>-?0zIIQZ6QgX&9s-!#$H#zRuDMnD zm|M$;fakau(*V=Z)q*S5{Oyc=Nfoj#i$)Xm@gpi@2B zc%u3b#1qXDpA`-wD-#$}Ur5G~^;pCcoi>ip1LA@^5bO}d6jfqSXc!w9s{KIi%2|$O z6bD||_ZHO~Q(sWt=zKvF=aDZE7tVEDFi#|J)HoJ3D0)KG_=AcIdoy9$ZeFO1g5&0! zCoUvkkUwA`ixP(TgYhmj$rup)G%Sc>M-srk>^2Q6!@AF3M2d8);4)X(Wkh-({fpjGMgPqV5 z!GZDxEyS_GI*toC1aJ_CVEuqtJ{y~VeZ%WP0zXXIPWRkl##qlgdQbao9oOL7yX^Cjc2f)+_H>PpnFl*WsYRAU#oa=URUuZ73Sh zWFRolcBzTc6AgnD993sB4u}l#1`P-%ioHJ=cw*$lrXOTJ6!jx1U$_Q;pt^JNh3E(3 ziD$i6Jh61;THqOeAYEA#?~5lkVc9&9!n5)Pc%mAT6c~DbphlExK+re+%3sn9oDpx# zEoMqxNPF30S($Av#Ap z?cgiknxLjGE-Wv1u+$=~=qe#e-|H)WM=yVZUYpnB2l!R`o3|#R;}{&9%ZM^(ENBqa zK_4|BFe|nu6tEc$_z94~onFjwosw{oeY8oQ;V)jH#{>VWe43a4^rO$b6rw105E)4@ zc+N2BWh4)L@9PU0*M_R>=~S!#pyiEm2lxXTk|HEM#C#|wiuXU*XksrQkTw43PU*_% ziQi&Al*$*(4@Toc7IYO3m|!{e#(^Jby*B#;>I;=G2nX9BBxwMH1cVKgH>%LIiVDxJ zGcCD9^9QpR7V=d#EMWPB1lhob7bLI}mSsnl$8Oxps94xWwuy~_+ynv5?wA@V1RPw4 zXM9~?U|*nneH3mDP3`b_CN}B|FBUz(A3R(0D<^NXKd7>EWF*4E5ExjRXBf_edf<{H zae=__GxA2^04OA1=<5se2jT~~1LjjzKay|&PefPN#5mVnvs7@Sgc8=M`u`s(mJ{%Hs1jsm<$YpiQAOCsd-FR33Zz#+J1biwu z_$&XHLm+2}KTz7Jz~FR&Y(X3A@)S>0BT6}hzE9Om0! z)cgmYU>Tlhe^C9(S6-pK@e|G$=v&W(s%K_lU)7yeZ$v+MvvedH6c1{7BXuTCl=WJz z#KDLruk_7;CQXbZhp>`o&hyHBtiUi^`a%26)jdB({D44U3&kvj1q>zg%AztBnBWE+ zaL}f=`PtQTm|pi4D|Cupz;XX&kJqPK#RYZsc%Xci_Q_@#4&nzy2EpKY2tqQ378p zst-jx@$;WgpQhD*0~}pw%7m)hZ>I$uwQ`>uQ5eW# zp12Zmfyy)fV8Qw4pMCwH|KjliL~LxrANRJ9?lGwC7%0da$h409F{-StlQ^XFd?uFH zNua@d9IPXpk%zhu@%NGQ~Q{MF42Vd1404TBfr4roAlz6ipf6m+ zNZna^V_#>Ae88G48QW%lAQ|Z=s7U$`kKnAa8kVOT*CsvjTPidqZ&bf>`qtH_3Jx@W z!Fi)}W#Isx_zn$lr2nAB1?kFKs7pB5dvC`D6&S)3-It~U!+PS0YpuT8Dl4t1mAaN) zYVjo&TjbShS)PAf8Wj1??Ul{oRl7>QV9S9C>=&<|egC>;VgUg|+uU{m9Mg$$6Slh! z@E>Le622=800IzUtl@jCSQr2^2?Bk5;)30QBt`eFKl{AX1@|lC4}^n$TAb9KNgIP% zEaBjt$`?*nKhkmF;K(DHP&JKdH4(<{yX@5T1LDHu$?L1Ypn@X=VWs7lUs@fCi!HM7 ztAWAzG#~(if`TkVSa4{tXTbE@2mr$$_SB}Q{H!dExdj#gV`Q|~V114V9UQ8wc~=jx zevoE7@K~S3cku`_AvkDqVuWRd z1=XFSCqfh-dPq1JaR<;u;efnRfx+XMM)C#5FMQrQ(q*6gg!+|-I#czb(3gfkcyE&WFM z9DJVP15M`xPxlb~Kt%B`E;Yp=5En{E>epvVy>TcrMOaQdlJo=913C~G*p?}lX#4^Lp1}eBfO_Lu5|-@` zPU-o9d7=h5s$rRl^J)S``2+DpPn_og&x#8oimNCvr~yHWqH!RCz!y2)FJ?v$=GW)% zUN^FbZRPv?cH3{>tPqRas=3iVK*;~z;kX{_MI6+p!|pzoUEv^?ty_-jWN^S1SJ2lN?c&Uw(38iQB@OVY5YRphXPLo2fOc~ zd|{^@v~u4zTWq1YARS2qp4VM_jkVSwZ(M=6u*Bl0S|-9uG9~`NcD2!UEWdIN*~}m!Px)jX7z_|cUSBtP6))GOH_ZRqFK5JE?+vE< ztbgmFU?BYfh9DS3SOx}FXHsAg5RxyrAxZ1GqALRfC61~$7E#PV7U4jNV@5pNAC#^v zBp3$w8wXGXbf6dJ zsfjRx1LX_kjT_RS7#ys)5-Ykcz0_ihE&S?NyTCB}LXv-mEhs<@WI3$Qjqhc}+;dPi z#o+8^V<%STsXXg5cp3oYRNwkkAK`}U8wuVK0@wiMu=BTUKl+^Mff7d&hEyC`rwbVL zf?_;E)fb{46b@LA#hqy>HyQQ zpvnEp8oy9D_|S*cmv*-N0XR6-aX~!s7)_ukp6CJ3`)ffKCdxuTFb=lX$~>9~W3q7I zhGhy2g#+gc3(f~W;Kw}cTfX;(0t^rf#qf9rwpi2m?3Qt{Ik+hE8w`a6KhvJdIeyw# zn|tng>z=y-1ULt6d>F7WGyf>@#20~q9K!RFmYp^>hY){Yni&0{`Gen#$VedwZcuDX zd8Y2n2nGQ`NWdMaz;IuLWwC?Ag`x-O%9(gS{6PAF;)44R%n#^4IRCu#BSlYqhj75e zIOs^OFJz)DPmE)p7=PdeU7J5pzOeertE>P|Txtp7VBuE_2Xfdm^?gnA-SVybJGTk? zpC~`nkxhmlwSPT|&GU?Gt`9SxkQoU073B|d9$ZFS-8EN(Kd@WiKA%A!M|--RiGLY5 zcmW`^RumBg$w-wixbBQUu%2jo;PH)P{ekmFBE#Sipa-rm7zZE$Z{WBfZ-74tPgGza zE(8Y}@BH=RiC?5&+2h(07tobmXHs0SesIdkOsJ{>481={!*ZJ-DL6n++*AYGlrJc6 zREJ{u0|7z&pe2se*mgz_@ICAQeC7Juv4fD1TOiSIGI9Ne?F#rg_x5IoUw)3rL+O!> zZD9BUhD2WB)AZ_jM;(Hm(p%PBXIGE-WHY|W8`vG7D9RtW7bP%AU@$vq^CKy5%rKVF zgDO0`^6a$H`GUJpN>235dCeif6Ui3@1p5Q>g(M8h8$EHJ@&)=($QOtU^dr%rcyaPZ z7WQQV1nLV}@E!d?6KVGPfq0^bq9@uOiv!|peX#O!>NV z&8tTSU$DR}zCa%g>cdAfTKSwWzu6zi9h5&HS!n(sZE5I8b_nzz^gs|(>;psU&I$`S z1eX`mf1s$K@l3>pxC7zfKIaRdppOf8p&xks0t>RVJ{0kTY2t$G3z{G)3;U8ck}qh2 zq&FRYc=AT$fQc|vXmZ}@`ofgS)R{E0Z4K#2;RnksvDjjZ{QE-xW*ofymov>X`BFy? z`v6~h+du(^5xjI09LUCi0xQn1J7I5Le(m1$%P$Y$sE}hge@>lmKAo6AVUyzq^ykZQ zNiM3l^Pj;tZ+#4l+d@I1bOw-adf>QFm8R!O9Q%a9dZIH&PmeT;1M-E|e*jO6kYpfK zd4amKV34VCoG{$Sk}S<1r~#qrNUl3;0>xHuWWx3IBYjc>-Fb>?(fIFSHd87KwM}%QS)F(KhT7#@&_8vBpfJTxX=st zIbR@e%tBqBK=J6K!GQ<9*MzE`2tzA4YW#v%aNJY^g8czJakZ6JSz-C*mX@Bl*kZ~X z|BYYhG)8`<1NAE_ZwnlZ0-0tmA_0cs&p*@b+hp?!0WzwrJFkFXJL}zTX{^jK-OJ*f zqI;b?w*irJe15G4k$BGcaBGB`GVpCJQ0ErhH$TxqRH7n-z!Tz9Up5FDfr#RS3pAVBD0Q2IeHD5k!^#5iBS z`NoWMHBVIkffr<9J`@dnS04&EsC)q&I4&I3Cf23iXr8#+F1x@Jg@Y~Ch{A#_#)167 z>MO0Z!V1eSBc8Z~{lUNftA0{{>-(ABbM>vt==}I_22e8p7BL0CQj9PA*habT<0(f@C$!? zGY-rTW=XX8#ecjhxem1r- zIInj0r9hEF)lDfx*=XJM)*H7r{9yEID~;d`vuH1Oj-Gc03j}@(DDX@-r@%d7;iV`B z+PZkH1`V2f0TAo&bF8nvo>j#Ta5oHr2W1K*0|J2eS6>uWJmdx3PV|_y}6LD?x-uQonf!Lq?K|-X6?Db z3Ur2mb;_z~)U%8(Id{BqvHj1L4om_E9`ZB`&rA3m*HKRa1b>#_=8y8{6C~vDVSZmR zMcz~N>}IMO60~41{fBn^V6gX{PL}@_dmvLJU`UA~<^Y3WfnvuG07B!5sXvH(P^d6j$2!PpgkDo#q-jq=Ow=q zYbzE41lON?-nc?-oxGE~g#=Lm6w0-G)w`swHeeta2ryjxy2qjm4Zb8OzyROp9dGJK zWaT?!5Ka>C@mBnsy8prJ%m0Zz9CS6yi5qQXc`kn8w^Bt=@Y_ZYhT;InfH`RO%Ap6* zk&1cX;E6Uc5HFB$+y;B#4vv|araf3^+*;ybsHh5B_h97ZNrqBmMrl-vfjS9IGVhU$h4a8wYV93Wf>@krM?1IFKiH z`Gu-ODIBg z1

+ private static readonly IList> Empty = new IList<(string, double)>[0]; + + /// + /// The configuration to use for this component. + /// + private readonly FaceRecognizerConfiguration configuration; + + /// + /// The client that communicates with the cloud image analyzer service. + /// + private FaceClient client = null; + + /// + /// The group of persons from the cognitive services API. + /// + private Dictionary people = null; + + /// + /// Initializes a new instance of the class. + /// + /// The pipeline to add the component to. + /// The component configuration. + public FaceRecognizer(Pipeline pipeline, FaceRecognizerConfiguration configuration) + : base(pipeline) + { + this.configuration = configuration; + this.RateLimitExceeded = pipeline.CreateEmitter(this, nameof(this.RateLimitExceeded)); + this.client = new FaceClient(new ApiKeyServiceClientCredentials(this.configuration.SubscriptionKey)) + { + Endpoint = this.configuration.Endpoint, + }; + this.client.PersonGroupPerson.ListAsync(this.configuration.PersonGroupId).ContinueWith(list => + { + this.people = list.Result.ToDictionary(p => p.PersonId); + }).Wait(); + } + + /// + /// Gets a stream that indicates the rate limit for the service calls was exceeded. + /// + /// A value of true is posted on the stream each time the rate limit for calling Cognitive Services FACE API is exceeded. + public Emitter RateLimitExceeded { get; } + + /// + /// Disposes the face recognizer component. + /// + public void Dispose() + { + this.client.Dispose(); + this.client = null; + } + + /// + protected override async Task ReceiveAsync(Shared data, Envelope e) + { + using (Stream imageFileStream = new MemoryStream()) + { + try + { + // convert image to a Stream and send to Cog Services + data.Resource.ToBitmap(false).Save(imageFileStream, ImageFormat.Jpeg); + imageFileStream.Seek(0, SeekOrigin.Begin); + + var detected = (await this.client.Face.DetectWithStreamAsync(imageFileStream, recognitionModel: this.configuration.RecognitionModelName)).Select(d => d.FaceId.Value).ToList(); + + // Identify each face + if (detected.Count > 0) + { + var identified = await this.client.Face.IdentifyAsync(detected, this.configuration.PersonGroupId); + var results = identified.Select(p => (IList<(string, double)>)p.Candidates.Select(c => (this.people[c.PersonId].Name, c.Confidence)).ToList()).ToList(); + this.Out.Post(results, e.OriginatingTime); + } else { this.Out.Post(Empty, e.OriginatingTime); - } - } - catch (APIErrorException exception) - { - // swallow exceptions unless it's a rate limit exceeded - if (exception.Body.Error.Code == "RateLimitExceeded") - { - this.RateLimitExceeded.Post(true, e.OriginatingTime); - } - else - { - throw exception; - } - } - } - } - } + } + } + catch (APIErrorException exception) + { + // swallow exceptions unless it's a rate limit exceeded + if (exception.Body.Error.Code == "RateLimitExceeded") + { + this.RateLimitExceeded.Post(true, e.OriginatingTime); + } + else + { + throw; + } + } + } + } + } } \ No newline at end of file diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/Microsoft.Psi.CognitiveServices.Face.csproj b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/Microsoft.Psi.CognitiveServices.Face.csproj index 4a50350d..7e8fc470 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/Microsoft.Psi.CognitiveServices.Face.csproj +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/Microsoft.Psi.CognitiveServices.Face.csproj @@ -3,7 +3,7 @@ netstandard2.0 true true - false + ../../../../Build/Microsoft.Psi.ruleset Provides components for using Microsoft's Cognitive Services Face API. @@ -21,6 +21,10 @@
+ + all + runtime; build; native; contentfiles; analyzers + all diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/PersonGroupTasks.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/PersonGroupTasks.cs index d0dd918a..c3b4271d 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/PersonGroupTasks.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Face/PersonGroupTasks.cs @@ -62,7 +62,7 @@ namespace Microsoft.Psi.CognitiveServices.Face { var files = Generators.Sequence(pipeline, Directory.GetFiles(directory), TimeSpan.FromTicks(1)); files - .Select(file => ImagePool.GetOrCreate(new Bitmap(File.OpenRead(file)))) + .Select(file => ImagePool.GetOrCreateFromBitmap(new Bitmap(File.OpenRead(file)))) .RecognizeFace(new FaceRecognizerConfiguration(subscriptionKey, endpoint, groupId)) .Join(files) .Do(x => diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/Microsoft.Psi.CognitiveServices.Language.Windows.csproj b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/Microsoft.Psi.CognitiveServices.Language.Windows.csproj index 6e4e62b2..83207651 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/Microsoft.Psi.CognitiveServices.Language.Windows.csproj +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/Microsoft.Psi.CognitiveServices.Language.Windows.csproj @@ -25,6 +25,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/PersonalityChat.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/PersonalityChat.cs index 828d60c9..1ae55002 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/PersonalityChat.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language.Windows/PersonalityChat.cs @@ -9,7 +9,7 @@ namespace Microsoft.Psi.CognitiveServices.Language using Microsoft.Psi.Components; /// - /// Component that generates dialogue responses to textual inputs using the Microsoft Cognitive Services Personality Chat API. + /// Component that generates dialog responses to textual inputs using the Microsoft Cognitive Services Personality Chat API. /// /// /// The component takes in text-based phrases or utterances on its input stream and generates diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language/Microsoft.Psi.CognitiveServices.Language.csproj b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language/Microsoft.Psi.CognitiveServices.Language.csproj index 54aeb27f..8123146b 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language/Microsoft.Psi.CognitiveServices.Language.csproj +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Language/Microsoft.Psi.CognitiveServices.Language.csproj @@ -29,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizer.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizer.cs index 0988f179..5beaef4e 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizer.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizer.cs @@ -26,7 +26,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// public sealed class AzureSpeechRecognizer : AsyncConsumerProducer, IStreamingSpeechRecognitionResult>, IDisposable { - // For cancelling any pending recognition tasks before disposal + // For canceling any pending recognition tasks before disposal private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); /// @@ -295,7 +295,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech // get the current (oldest) recognition task from the queue if (!this.pendingRecognitionTasks.TryPeek(out var currentRecognitionTask)) { - // This proabaly means that we have just received an end-of-dictation response which normally + // This probably means that we have just received an end-of-dictation response which normally // arrives after a successful recognition result, so we would have already completed the // recognition task. Hence we just ignore the response. return; @@ -343,7 +343,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech // update the in-progress recognition task currentRecognitionTask.AppendResult(e.PartialResult); - // Since this is a partial response, VAD may not yet have signalled the end of speech + // Since this is a partial response, VAD may not yet have signaled the end of speech // so just use the last audio packet time (which will probably be ahead). this.PostWithOriginatingTimeConsistencyCheck(this.PartialRecognitionResults, currentRecognitionTask.BuildPartialSpeechRecognitionResult(), originatingTime); diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizerConfiguration.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizerConfiguration.cs index 5604ae6a..029e9e9c 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizerConfiguration.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/AzureSpeechRecognizerConfiguration.cs @@ -19,12 +19,6 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// public AzureSpeechRecognizerConfiguration() { - this.Language = "en-us"; - this.SubscriptionKey = null; // This must be set to the key associated with your account - this.Region = null; // This must be set to the region associated to the key - - // Defaults to 16 kHz, 16-bit, 1-channel PCM samples - this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// @@ -35,7 +29,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// this defaults to "en-us" (U.S. English). Other supported locales include "en-gb", /// "de-de", "es-es", "fr-fr", "it-it" and "zh-cn". /// - public string Language { get; set; } + public string Language { get; set; } = "en-us"; /// /// Gets or sets the subscription key. @@ -47,15 +41,15 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// https://azure.microsoft.com/en-us/try/cognitive-services/ for more information on obtaining a /// subscription. /// - public string SubscriptionKey { get; set; } + public string SubscriptionKey { get; set; } = null; /// - /// Gets or sets the expected input format of the audio stream. + /// Gets the expected input format of the audio stream. /// /// /// Currently, the only supported input audio format is 16000 Hz, 1-channel, 16-bit PCM. /// - public WaveFormat InputFormat { get; set; } + public WaveFormat InputFormat { get; } = WaveFormat.Create16kHz1Channel16BitPcm(); /// /// Gets or sets the region. @@ -63,6 +57,6 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// /// This is the region that is associated to the subscription key. /// - public string Region { get; set; } + public string Region { get; set; } = null; } } diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizer.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizer.cs index c9fc200b..312bb834 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizer.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizer.cs @@ -36,7 +36,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech [Obsolete("The Bing Speech service will be retired soon. Please use the AzureSpeechRecognizer instead.", false)] public sealed class BingSpeechRecognizer : AsyncConsumerProducer, IStreamingSpeechRecognitionResult>, ISourceComponent, IDisposable { - // For cancelling any pending recognition tasks before disposal + // For canceling any pending recognition tasks before disposal private readonly CancellationTokenSource cancellationTokenSource = new CancellationTokenSource(); /// @@ -357,7 +357,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech this.lastPartialResult = e.PartialResult.Text; var result = this.BuildPartialSpeechRecognitionResult(e.PartialResult.Text); - // Since this is a partial response, VAD may not yet have signalled the end of speech + // Since this is a partial response, VAD may not yet have signaled the end of speech // so just use the last audio packet time (which will probably be ahead). this.PostWithOriginatingTimeConsistencyCheck(this.PartialRecognitionResults, result, this.lastAudioOriginatingTime); diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizerConfiguration.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizerConfiguration.cs index df8a4799..82ba94cb 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizerConfiguration.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/BingSpeechRecognizerConfiguration.cs @@ -29,12 +29,6 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// public BingSpeechRecognizerConfiguration() { - this.Language = "en-us"; - this.RecognitionMode = SpeechRecognitionMode.Interactive; - this.SubscriptionKey = null; // This must be set to the key associated with your account - - // Defaults to 16 kHz, 16-bit, 1-channel PCM samples - this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// @@ -45,7 +39,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// this defaults to "en-us" (U.S. English). Other supported locales include "en-gb", /// "de-de", "es-es", "fr-fr", "it-it" and "zh-cn". /// - public string Language { get; set; } + public string Language { get; set; } = "en-us"; /// /// Gets or sets the speech recognition mode. @@ -54,7 +48,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// The speech recognition mode must be one of the values defined in the enumeration /// . The default value is . /// - public SpeechRecognitionMode RecognitionMode { get; set; } + public SpeechRecognitionMode RecognitionMode { get; set; } = SpeechRecognitionMode.Interactive; /// /// Gets or sets the subscription key. @@ -71,14 +65,14 @@ namespace Microsoft.Psi.CognitiveServices.Speech /// instead. You may obtain a subscription key for the Azure Speech service here: /// https://azure.microsoft.com/en-us/try/cognitive-services/?api=speech-services. /// - public string SubscriptionKey { get; set; } + public string SubscriptionKey { get; set; } = null; /// - /// Gets or sets the expected input format of the audio stream. + /// Gets the expected input format of the audio stream. /// /// /// Currently, the only supported input audio format is 16000 Hz, 1-channel, 16-bit PCM. /// - public WaveFormat InputFormat { get; set; } + public WaveFormat InputFormat { get; } = WaveFormat.Create16kHz1Channel16BitPcm(); } } diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Microsoft.Psi.CognitiveServices.Speech.csproj b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Microsoft.Psi.CognitiveServices.Speech.csproj index aaaed584..01f39a09 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Microsoft.Psi.CognitiveServices.Speech.csproj +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Microsoft.Psi.CognitiveServices.Speech.csproj @@ -29,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechRecognitionClient.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechRecognitionClient.cs index 4751b961..8e0e3b15 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechRecognitionClient.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechRecognitionClient.cs @@ -57,12 +57,12 @@ namespace Microsoft.Psi.CognitiveServices.Speech.Service } /// - /// An event that is raised when a final speech recognition response has beeen received. + /// An event that is raised when a final speech recognition response has been received. /// public event EventHandler OnResponseReceived; /// - /// An event that is raised when a partial speech recognition response has beeen received. + /// An event that is raised when a partial speech recognition response has been received. /// public event EventHandler OnPartialResponseReceived; @@ -76,6 +76,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech.Service { this.authentication.Dispose(); this.semaphore.Dispose(); + this.webSocket.Dispose(); } /// diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechStartDetectedMessage.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechStartDetectedMessage.cs index e546f8c3..9e06f981 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechStartDetectedMessage.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/Service/SpeechStartDetectedMessage.cs @@ -17,7 +17,7 @@ namespace Microsoft.Psi.CognitiveServices.Speech.Service } /// - /// Gets or sets the the offset (in 100-nanosecond units) when speech was detected in the + /// Gets or sets the offset (in 100-nanosecond units) when speech was detected in the /// audio stream, relative to the start of the stream. /// public int Offset { get; set; } diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/ImageAnalyzer.cs b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/ImageAnalyzer.cs index e5ff9b58..ba740e9f 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/ImageAnalyzer.cs +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/ImageAnalyzer.cs @@ -242,7 +242,7 @@ namespace Microsoft.Psi.CognitiveServices.Vision using (Stream imageFileStream = new MemoryStream()) { // convert image to a stream and send to service - data.Resource.ToManagedImage(false).Save(imageFileStream, System.Drawing.Imaging.ImageFormat.Jpeg); + data.Resource.ToBitmap(false).Save(imageFileStream, System.Drawing.Imaging.ImageFormat.Jpeg); imageFileStream.Seek(0, SeekOrigin.Begin); try { diff --git a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/Microsoft.Psi.CognitiveServices.Vision.csproj b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/Microsoft.Psi.CognitiveServices.Vision.csproj index 845c32f0..5dbdf378 100644 --- a/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/Microsoft.Psi.CognitiveServices.Vision.csproj +++ b/Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Vision/Microsoft.Psi.CognitiveServices.Vision.csproj @@ -28,6 +28,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Language/Test.Psi.CognitiveServices.Language.csproj b/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Language/Test.Psi.CognitiveServices.Language.csproj index 672c1731..c48f6942 100644 --- a/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Language/Test.Psi.CognitiveServices.Language.csproj +++ b/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Language/Test.Psi.CognitiveServices.Language.csproj @@ -1,8 +1,8 @@ - + Exe - netcoreapp2.0 + netcoreapp3.1 false Test.Psi.CognitiveServices.Language.ConsoleMain @@ -30,10 +30,14 @@ - + + all + runtime; build; native; contentfiles; analyzers + + - - + + diff --git a/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Speech/Test.Psi.CognitiveServices.Speech.csproj b/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Speech/Test.Psi.CognitiveServices.Speech.csproj index fd899f1a..3adb4089 100644 --- a/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Speech/Test.Psi.CognitiveServices.Speech.csproj +++ b/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Speech/Test.Psi.CognitiveServices.Speech.csproj @@ -1,8 +1,8 @@ - + Exe - netcoreapp2.0 + netcoreapp3.1 false Test.Psi.CognitiveServices.Speech.ConsoleMain @@ -21,7 +21,7 @@ - + @@ -30,10 +30,14 @@ - + + all + runtime; build; native; contentfiles; analyzers + + - - + + diff --git a/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Vision.Windows/Test.Psi.CognitiveServices.Vision.Windows.csproj b/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Vision.Windows/Test.Psi.CognitiveServices.Vision.Windows.csproj index 2b38a5f0..ada852c6 100644 --- a/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Vision.Windows/Test.Psi.CognitiveServices.Vision.Windows.csproj +++ b/Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Vision.Windows/Test.Psi.CognitiveServices.Vision.Windows.csproj @@ -1,20 +1,17 @@  net472 - false - false + ../../../../Build/Test.Psi.ruleset Exe - ../../../../Build/Test.Psi.ruleset true x64 - ../../../../Build/Test.Psi.ruleset true x64 @@ -26,6 +23,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all diff --git a/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/Microsoft.Psi.MicrosoftSpeech.Windows.csproj b/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/Microsoft.Psi.MicrosoftSpeech.Windows.csproj index 0772c30d..e3fe2e29 100644 --- a/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/Microsoft.Psi.MicrosoftSpeech.Windows.csproj +++ b/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/Microsoft.Psi.MicrosoftSpeech.Windows.csproj @@ -24,6 +24,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizer.cs b/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizer.cs index b93969e6..1e7b0fb3 100644 --- a/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizer.cs +++ b/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizer.cs @@ -199,7 +199,7 @@ namespace Microsoft.Psi.MicrosoftSpeech public Emitter AudioLevelUpdated { get; } /// - /// Gets the output stream of emulate recognize completed completed events. + /// Gets the output stream of emulate recognize completed events. /// public Emitter EmulateRecognizeCompleted { get; } @@ -273,6 +273,7 @@ namespace Microsoft.Psi.MicrosoftSpeech // Free any other managed objects here. this.recognizeCompleteManualReset.Dispose(); this.recognizeCompleteManualReset = null; + this.inputAudioStream.Dispose(); } /// diff --git a/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizerConfiguration.cs b/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizerConfiguration.cs index 024a8bf3..6f3795de 100644 --- a/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizerConfiguration.cs +++ b/Sources/Integrations/MicrosoftSpeech/Microsoft.Psi.MicrosoftSpeech.Windows/MicrosoftSpeechRecognizerConfiguration.cs @@ -21,12 +21,6 @@ namespace Microsoft.Psi.MicrosoftSpeech /// public MicrosoftSpeechRecognizerConfiguration() { - this.Language = "en-us"; - this.Grammars = null; - this.BufferLengthInMs = 1000; - - // Defaults to 16 kHz, 16-bit, 1-channel PCM samples - this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// @@ -41,7 +35,7 @@ namespace Microsoft.Psi.MicrosoftSpeech /// in a particular language. For a list of supported Runtime Languages and to download them, see /// http://go.microsoft.com/fwlink/?LinkID=223569. /// - public string Language { get; set; } + public string Language { get; set; } = "en-us"; /// /// Gets or sets the list of grammar files. @@ -53,7 +47,7 @@ namespace Microsoft.Psi.MicrosoftSpeech /// At least one grammar is required in order to use the . /// [XmlElement("Grammar")] - public GrammarInfo[] Grammars { get; set; } + public GrammarInfo[] Grammars { get; set; } = null; /// /// Gets or sets the length of the recognizer's input stream buffer in milliseconds. @@ -65,31 +59,31 @@ namespace Microsoft.Psi.MicrosoftSpeech /// on the length of audio to buffer in milliseconds and the audio input format. By default, a 1000 ms /// buffer is used. It is safe to leave this value unchanged. /// - public int BufferLengthInMs { get; set; } + public int BufferLengthInMs { get; set; } = 1000; /// /// Gets or sets the number of milliseconds during which the internal speech detection /// engine accepts input containing only silence before making a state transition. /// - public int InitialSilenceTimeoutMs { get; set; } + public int InitialSilenceTimeoutMs { get; set; } = 0; /// /// Gets or sets the number of milliseconds during which the internal speech detection /// engine accepts input containing only background noise before making a state transition. /// - public int BabbleTimeoutMs { get; set; } + public int BabbleTimeoutMs { get; set; } = 0; /// /// Gets or sets the number of milliseconds of silence that the internal speech detection /// engine will accept at the end of unambiguous input before making a state transition. /// - public int EndSilenceTimeoutMs { get; set; } + public int EndSilenceTimeoutMs { get; set; } = 150; /// /// Gets or sets the number of milliseconds of silence that the internal speech detection /// engine will accept at the end of ambiguous input before making a state transition. /// - public int EndSilenceTimeoutAmbiguousMs { get; set; } + public int EndSilenceTimeoutAmbiguousMs { get; set; } = 500; /// /// Gets or sets the expected input format of the audio stream. @@ -100,6 +94,6 @@ namespace Microsoft.Psi.MicrosoftSpeech /// static methods to create the appropriate /// object. If not specified, a default value of 16000 Hz is assumed. /// - public WaveFormat InputFormat { get; set; } + public WaveFormat InputFormat { get; set; } = WaveFormat.Create16kHz1Channel16BitPcm(); } } diff --git a/Sources/Integrations/ROS/Microsoft.Psi.ROS/Microsoft.Psi.ROS.fsproj b/Sources/Integrations/ROS/Microsoft.Psi.ROS/Microsoft.Psi.ROS.fsproj index 7f6dcfdf..d19c2286 100644 --- a/Sources/Integrations/ROS/Microsoft.Psi.ROS/Microsoft.Psi.ROS.fsproj +++ b/Sources/Integrations/ROS/Microsoft.Psi.ROS/Microsoft.Psi.ROS.fsproj @@ -41,6 +41,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Integrations/ROS/Microsoft.Psi.ROS/RosMessage.fs b/Sources/Integrations/ROS/Microsoft.Psi.ROS/RosMessage.fs index 24c0f77a..dd7af846 100644 --- a/Sources/Integrations/ROS/Microsoft.Psi.ROS/RosMessage.fs +++ b/Sources/Integrations/ROS/Microsoft.Psi.ROS/RosMessage.fs @@ -22,8 +22,8 @@ module RosMessage = type RosFieldVal = | BoolVal of bool // introduced in ROS 0.9 - | Int8Val of int8 // depricated alias: byte - | UInt8Val of uint8 // depricated alias: char + | Int8Val of int8 // deprecated alias: byte + | UInt8Val of uint8 // deprecated alias: char | Int16Val of int16 | UInt16Val of uint16 | Int32Val of int32 diff --git a/Sources/Integrations/ROS/Microsoft.Psi.ROS/XmlRpc.fs b/Sources/Integrations/ROS/Microsoft.Psi.ROS/XmlRpc.fs index 7b48cbef..bc8d08be 100644 --- a/Sources/Integrations/ROS/Microsoft.Psi.ROS/XmlRpc.fs +++ b/Sources/Integrations/ROS/Microsoft.Psi.ROS/XmlRpc.fs @@ -211,11 +211,11 @@ module XmlRpc = (new XmlRpcReader(client.GetResponse().GetResponseStream())).ReadMethodResponse() // An XmlRpc "server" listens for requests on a particular TCP port, waiting for HTTP POSTs - // I didn't like how HttpListener requires admin privilages and restricts listening blanketly on a port + // I didn't like how HttpListener requires admin privileges and restricts listening blanketly on a port // Instead we handle a very minimal HTTP protocol right here // A port is assigned and returned. // Your callback is called with method name and args and is expected to return a value (XmlRpcValue) or throw - // Again, no attemt is made here to parse the method call or validate arguments, etc. + // Again, no attempt is made here to parse the method call or validate arguments, etc. let xmlRpcListen (callback: string -> XmlRpcValue list -> XmlRpcValue) = let listener = new TcpListener(IPAddress.Any, 0) listener.Start() diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyListVisualizationObject.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyListVisualizationObject.cs new file mode 100644 index 00000000..bdf6de19 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyListVisualizationObject.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect.Visualization +{ + using System.Collections.Generic; + using Microsoft.Psi.AzureKinect; + using Microsoft.Psi.Visualization.VisualizationObjects; + + /// + /// Implements a visualization object for a list of Azure Kinect bodies. + /// + [VisualizationObject("Visualize Azure Kinect Bodies")] + public class AzureKinectBodyListVisualizationObject : ModelVisual3DVisualizationObjectEnumerable> + { + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyVisualizationObject.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyVisualizationObject.cs new file mode 100644 index 00000000..dcfab7d6 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/AzureKinectBodyVisualizationObject.cs @@ -0,0 +1,284 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect.Visualization +{ + using System; + using System.ComponentModel; + using System.Runtime.Serialization; + using System.Windows; + using System.Windows.Media; + using HelixToolkit.Wpf; + using Microsoft.Azure.Kinect.BodyTracking; + using Microsoft.Psi.AzureKinect; + using Microsoft.Psi.Visualization.VisualizationObjects; + using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; + using Win3D = System.Windows.Media.Media3D; + + /// + /// Implements a visualization object for Azure Kinect bodies. + /// + [VisualizationObject("Visualize Azure Kinect Body")] + public class AzureKinectBodyVisualizationObject : ModelVisual3DVisualizationObject + { + private readonly BillboardTextVisual3D billboard; + private readonly UpdatableVisual3DDictionary visualJoints; + private readonly UpdatableVisual3DDictionary<(JointId ChildJoint, JointId ParentJoint), PipeVisual3D> visualBones; + + private Color color = Colors.White; + private double inferredJointsOpacity = 30; + private double thicknessMm = 30; + private bool showBillboard = false; + private int polygonResolution = 6; + private double billboardHeightCm = 100; + + /// + /// Initializes a new instance of the class. + /// + public AzureKinectBodyVisualizationObject() + { + this.visualJoints = new UpdatableVisual3DDictionary(null); + this.visualBones = new UpdatableVisual3DDictionary<(JointId ChildJoint, JointId ParentJoint), PipeVisual3D>(null); + + this.billboard = new BillboardTextVisual3D() + { + Background = Brushes.Gray, + Foreground = new SolidColorBrush(Colors.White), + Padding = new Thickness(5), + }; + + this.UpdateVisibility(); + } + + /// + /// Gets or sets the color. + /// + [DataMember] + [Description("Color of the body.")] + public Color Color + { + get { return this.color; } + set { this.Set(nameof(this.Color), ref this.color, value); } + } + + /// + /// Gets or sets the inferred joints opacity. + /// + [DataMember] + [Description("Opacity for rendering inferred joints and bones.")] + public double InferredJointsOpacity + { + get { return this.inferredJointsOpacity; } + set { this.Set(nameof(this.InferredJointsOpacity), ref this.inferredJointsOpacity, value); } + } + + /// + /// Gets or sets the thickness. + /// + [DataMember] + [DisplayName("Thickness (mm)")] + [Description("Diameter of bones and radius of joints (mm).")] + public double ThicknessMm + { + get { return this.thicknessMm; } + set { this.Set(nameof(this.ThicknessMm), ref this.thicknessMm, value); } + } + + /// + /// Gets or sets a value indicating whether to show a billboard with information about the body. + /// + [DataMember] + [PropertyOrder(0)] + [Description("Show a billboard with information about the body.")] + public bool ShowBillboard + { + get { return this.showBillboard; } + set { this.Set(nameof(this.ShowBillboard), ref this.showBillboard, value); } + } + + /// + /// Gets or sets the height at which to draw the billboard (cm). + /// + [DataMember] + [PropertyOrder(1)] + [DisplayName("Billboard Height (cm)")] + [Description("Height at which to draw the billboard (cm).")] + public double BillboardHeightCm + { + get { return this.billboardHeightCm; } + set { this.Set(nameof(this.BillboardHeightCm), ref this.billboardHeightCm, value); } + } + + /// + /// Gets or sets the number of divisions to use when rendering polygons for joints and bones. + /// + [DataMember] + [Description("Level of resolution at which to render joint and bone polygons (minimum value is 3).")] + public int PolygonResolution + { + get { return this.polygonResolution; } + set { this.Set(nameof(this.PolygonResolution), ref this.polygonResolution, value < 3 ? 3 : value); } + } + + /// + public override void UpdateData() + { + if (this.CurrentData != null) + { + this.UpdateVisuals(); + } + + this.UpdateVisibility(); + } + + /// + public override void NotifyPropertyChanged(string propertyName) + { + if (propertyName == nameof(this.Color) || + propertyName == nameof(this.InferredJointsOpacity) || + propertyName == nameof(this.ThicknessMm) || + propertyName == nameof(this.PolygonResolution)) + { + this.UpdateVisuals(); + } + else if (propertyName == nameof(this.ShowBillboard)) + { + this.UpdateBillboardVisibility(); + } + else if (propertyName == nameof(this.BillboardHeightCm)) + { + this.UpdateBillboard(); + } + else if (propertyName == nameof(this.Visible)) + { + this.UpdateVisibility(); + } + } + + private void UpdateVisuals() + { + this.visualJoints.BeginUpdate(); + this.visualBones.BeginUpdate(); + + if (this.CurrentData != null) + { + var trackedEntitiesBrush = new SolidColorBrush(this.Color); + var untrackedEntitiesBrush = new SolidColorBrush( + Color.FromArgb( + (byte)(Math.Max(0, Math.Min(100, this.InferredJointsOpacity)) * 2.55), + this.Color.R, + this.Color.G, + this.Color.B)); + + // update the joints + foreach (var jointType in this.CurrentData.Joints.Keys) + { + var jointState = this.CurrentData.Joints[jointType].Confidence; + var visualJoint = this.visualJoints[jointType]; + visualJoint.BeginEdit(); + var isTracked = jointState == JointConfidenceLevel.High || jointState == JointConfidenceLevel.Medium; + var visible = jointState != JointConfidenceLevel.None && (isTracked || this.InferredJointsOpacity > 0); + + if (visible) + { + var jointPosition = this.CurrentData.Joints[jointType].Pose.Origin; + + if (visualJoint.Radius != this.ThicknessMm / 1000.0) + { + visualJoint.Radius = this.ThicknessMm / 1000.0; + } + + var fill = isTracked ? trackedEntitiesBrush : untrackedEntitiesBrush; + if (visualJoint.Fill != fill) + { + visualJoint.Fill = fill; + } + + visualJoint.Transform = new Win3D.TranslateTransform3D(jointPosition.X, jointPosition.Y, jointPosition.Z); + + visualJoint.PhiDiv = this.PolygonResolution; + visualJoint.ThetaDiv = this.PolygonResolution; + + visualJoint.Visible = true; + } + else + { + visualJoint.Visible = false; + } + + visualJoint.EndEdit(); + } + + // update the bones + foreach (var bone in AzureKinectBody.Bones) + { + var parentState = this.CurrentData.Joints[bone.ParentJoint].Confidence; + var childState = this.CurrentData.Joints[bone.ChildJoint].Confidence; + var parentIsTracked = parentState == JointConfidenceLevel.High || parentState == JointConfidenceLevel.Medium; + var childIsTracked = childState == JointConfidenceLevel.High || childState == JointConfidenceLevel.Medium; + var isTracked = parentIsTracked && childIsTracked; + var visible = parentState != JointConfidenceLevel.None && childState != JointConfidenceLevel.None && (isTracked || this.InferredJointsOpacity > 0); + var visualBone = this.visualBones[bone]; + visualBone.BeginEdit(); + if (visible) + { + if (visualBone.Diameter != this.ThicknessMm / 1000.0) + { + visualBone.Diameter = this.ThicknessMm / 1000.0; + } + + var joint1Position = this.visualJoints[bone.ParentJoint].Transform.Value; + var joint2Position = this.visualJoints[bone.ChildJoint].Transform.Value; + + visualBone.Point1 = new Win3D.Point3D(joint1Position.OffsetX, joint1Position.OffsetY, joint1Position.OffsetZ); + visualBone.Point2 = new Win3D.Point3D(joint2Position.OffsetX, joint2Position.OffsetY, joint2Position.OffsetZ); + + var fill = isTracked ? trackedEntitiesBrush : untrackedEntitiesBrush; + if (visualBone.Fill != fill) + { + visualBone.Fill = fill; + } + + visualBone.ThetaDiv = this.PolygonResolution; + + visualBone.Visible = true; + } + else + { + visualBone.Visible = false; + } + + visualBone.EndEdit(); + } + + // set billboard position + this.UpdateBillboard(); + } + + this.visualJoints.EndUpdate(); + this.visualBones.EndUpdate(); + } + + private void UpdateBillboard() + { + if (this.CurrentData != null) + { + var origin = this.CurrentData.Joints[JointId.Pelvis].Pose.Origin; + this.billboard.Position = new Win3D.Point3D(origin.X, origin.Y, origin.Z + (this.BillboardHeightCm / 100.0)); + this.billboard.Text = this.CurrentData.ToString(); + } + } + + private void UpdateVisibility() + { + this.UpdateChildVisibility(this.visualJoints, this.Visible && this.CurrentData != default); + this.UpdateChildVisibility(this.visualBones, this.Visible && this.CurrentData != default); + this.UpdateBillboardVisibility(); + } + + private void UpdateBillboardVisibility() + { + this.UpdateChildVisibility(this.billboard, this.Visible && this.CurrentData != default && this.ShowBillboard); + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/Microsoft.Psi.AzureKinect.Visualization.Windows.x64.csproj b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/Microsoft.Psi.AzureKinect.Visualization.Windows.x64.csproj new file mode 100644 index 00000000..22e05b1b --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/Microsoft.Psi.AzureKinect.Visualization.Windows.x64.csproj @@ -0,0 +1,45 @@ + + + net472 + Microsoft.Psi.AzureKinect.Visualization.Windows.x64 + Microsoft.Psi.AzureKinect.Visualization + x64 + ../../../Build/Microsoft.Psi.ruleset + + + DEBUG;TRACE + bin\Debug\net472\Microsoft.Psi.AzureKinect.Visualization.Windows.x64.xml + true + + + + bin\Release\net472\Microsoft.Psi.AzureKinect.Visualization.Windows.x64.xml + true + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/stylecop.json b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/stylecop.json new file mode 100644 index 00000000..6f09427e --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.Visualization/stylecop.json @@ -0,0 +1,16 @@ +{ + // ACTION REQUIRED: This file was automatically added to your project, but it + // will not take effect until additional steps are taken to enable it. See the + // following page for additional information: + // + // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md + + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "documentationRules": { + "companyName": "Microsoft Corporation", + "copyrightText": "Copyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the MIT license.", + "xmlHeader": false + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBody.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBody.cs new file mode 100644 index 00000000..563fd317 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBody.cs @@ -0,0 +1,162 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using System.Collections.Generic; + using System.Numerics; + using MathNet.Numerics.LinearAlgebra; + using MathNet.Spatial.Euclidean; + using Microsoft.Azure.Kinect.BodyTracking; + + /// + /// Represents a body detected by the Azure Kinect. + /// + public class AzureKinectBody + { + private static readonly CoordinateSystem KinectBasis = new CoordinateSystem(default, UnitVector3D.ZAxis, UnitVector3D.XAxis.Negate(), UnitVector3D.YAxis.Negate()); + private static readonly CoordinateSystem KinectBasisInverted = KinectBasis.Invert(); + + /// + /// Initializes a new instance of the class. + /// + public AzureKinectBody() + { + for (int i = 0; i < Skeleton.JointCount; i++) + { + this.Joints.Add((JointId)i, (null, JointConfidenceLevel.None)); + } + } + + /// + /// Gets the bone relationships. + /// + /// + /// Bone connections defined here: https://docs.microsoft.com/en-us/azure/Kinect-dk/body-joints. + /// + public static List<(JointId ChildJoint, JointId ParentJoint)> Bones { get; } = new List<(JointId, JointId)> + { + // Spine + (JointId.SpineNavel, JointId.Pelvis), + (JointId.SpineChest, JointId.SpineNavel), + (JointId.Neck, JointId.SpineChest), + + // Left arm + (JointId.ClavicleLeft, JointId.SpineChest), + (JointId.ShoulderLeft, JointId.ClavicleLeft), + (JointId.ElbowLeft, JointId.ShoulderLeft), + (JointId.WristLeft, JointId.ElbowLeft), + (JointId.HandLeft, JointId.WristLeft), + (JointId.HandTipLeft, JointId.HandLeft), + (JointId.ThumbLeft, JointId.WristLeft), + + // Right arm + (JointId.ClavicleRight, JointId.SpineChest), + (JointId.ShoulderRight, JointId.ClavicleRight), + (JointId.ElbowRight, JointId.ShoulderRight), + (JointId.WristRight, JointId.ElbowRight), + (JointId.HandRight, JointId.WristRight), + (JointId.HandTipRight, JointId.HandRight), + (JointId.ThumbRight, JointId.WristRight), + + // Left leg + (JointId.HipLeft, JointId.Pelvis), + (JointId.KneeLeft, JointId.HipLeft), + (JointId.AnkleLeft, JointId.KneeLeft), + (JointId.FootLeft, JointId.AnkleLeft), + + // Right leg + (JointId.HipRight, JointId.Pelvis), + (JointId.KneeRight, JointId.HipRight), + (JointId.AnkleRight, JointId.KneeRight), + (JointId.FootRight, JointId.AnkleRight), + + // Head + (JointId.Head, JointId.Neck), + (JointId.Nose, JointId.Head), + (JointId.EyeLeft, JointId.Head), + (JointId.EarLeft, JointId.Head), + (JointId.EyeRight, JointId.Head), + (JointId.EarRight, JointId.Head), + }; + + /// + /// Gets the joint information. + /// + public Dictionary Joints { get; } = new Dictionary(); + + /// + /// Gets the body's tracking ID. + /// + public uint TrackingId { get; private set; } + + /// + /// Copies new joint and tracking information for this body from a Microsoft.Azure.Kinect body instance. + /// + /// The Microsoft.Azure.Kinect body instance to populate this body from. + public void CopyFrom(Body body) + { + this.TrackingId = body.Id; + + for (int i = 0; i < Skeleton.JointCount; i++) + { + var joint = body.Skeleton.GetJoint(i); + var position = joint.Position; + var orientation = joint.Quaternion; + var confidence = joint.ConfidenceLevel; + this.Joints[(JointId)i] = (this.CreateCoordinateSystem(position, orientation), confidence); + } + } + + /// + public override string ToString() + { + return $"ID: {this.TrackingId}"; + } + + private CoordinateSystem CreateCoordinateSystem(Vector3 position, System.Numerics.Quaternion orientation) + { + // Convert the quaternion to a rotation matrix (System.Numerics) + var jointRotation = Matrix4x4.CreateFromQuaternion(orientation); + + // In the System.Numerics.Matrix4x4 joint rotation above, the axes of rotation are defined as follows: + // X: [M11; M12; M13] + // Y: [M21; M22; M23] + // Z: [M31; M32; M33] + // However, joint rotation axes are defined differently from the Azure Kinect sensor axes, as defined here: + // https://docs.microsoft.com/en-us/azure/Kinect-dk/body-joints + // and here: + // https://docs.microsoft.com/en-us/azure/Kinect-dk/coordinate-systems + // Joint Axes: + // X + // | Y + // | / + // | / + // Z <----+ + // Azure Kinect Axes: + // Z + // / + // / + // +---->X + // | + // | + // | + // Y + // Therefore we first create a transformation matrix in Azure Kinect basis by converting axes: + // X (Azure Kinect) = -Z (Joint) + // Y (Azure Kinect) = -X (Joint) + // Z (Azure Kinect) = Y (Joint) + // and converting from millimeters to meters. + var transformationMatrix = Matrix.Build.DenseOfArray(new double[,] + { + { -jointRotation.M31, -jointRotation.M11, jointRotation.M21, position.X / 1000.0 }, + { -jointRotation.M32, -jointRotation.M12, jointRotation.M22, position.Y / 1000.0 }, + { -jointRotation.M33, -jointRotation.M13, jointRotation.M23, position.Z / 1000.0 }, + { 0, 0, 0, 1 }, + }); + + // Finally, convert from Azure Kinect's basis to MathNet's basis: + return new CoordinateSystem(KinectBasisInverted * transformationMatrix * KinectBasis); + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTracker.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTracker.cs new file mode 100644 index 00000000..e45be057 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTracker.cs @@ -0,0 +1,133 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using System; + using System.Collections.Generic; + using Microsoft.Azure.Kinect.BodyTracking; + using Microsoft.Azure.Kinect.Sensor; + using Microsoft.Psi; + using Microsoft.Psi.Components; + using DepthImage = Microsoft.Psi.Imaging.DepthImage; + using Image = Microsoft.Psi.Imaging.Image; + + /// + /// Component that performs body tracking from the depth/IR images captured by the Azure Kinect sensor. + /// + /// It is important that Depth and IR images do *not* go through lossy encoding/decoding (e.g., JPEG) + /// before arriving at the tracker. Unencoded or non-lossy (e.g. PNG) encoding are okay. + public sealed class AzureKinectBodyTracker : ConsumerProducer<(Shared Depth, Shared IR), List>, IDisposable + { + private readonly AzureKinectBodyTrackerConfiguration configuration; + private readonly List currentBodies = new List(); + private readonly Capture capture = new Capture(); + + private Tracker tracker = null; + private byte[] depthBytes = null; + private byte[] infraredBytes = null; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline to add this component to. + /// An optional configuration to use for the body tracker. + public AzureKinectBodyTracker(Pipeline pipeline, AzureKinectBodyTrackerConfiguration configuration = null) + : base(pipeline) + { + this.configuration = configuration ?? new AzureKinectBodyTrackerConfiguration(); + this.AzureKinectSensorCalibration = pipeline.CreateReceiver(this, this.ReceiveCalibration, nameof(this.AzureKinectSensorCalibration)); + } + + /// + /// Gets the receiver for sensor calibration needed to initialize the tracker. + /// + public Receiver AzureKinectSensorCalibration { get; } + + /// + public void Dispose() + { + if (this.tracker != null) + { + this.tracker.Dispose(); + this.tracker = null; + } + + this.capture?.Dispose(); + } + + /// + protected override void Receive((Shared Depth, Shared IR) depthAndIRImages, Envelope envelope) + { + if (this.tracker != null) + { + // Allocate depth and IR image buffers. + if (this.capture.Depth == null || this.capture.IR == null || this.depthBytes == null || this.infraredBytes == null) + { + this.capture.Depth = new Azure.Kinect.Sensor.Image(ImageFormat.Depth16, depthAndIRImages.Depth.Resource.Width, depthAndIRImages.Depth.Resource.Height); + this.capture.IR = new Azure.Kinect.Sensor.Image(ImageFormat.IR16, depthAndIRImages.IR.Resource.Width, depthAndIRImages.IR.Resource.Height); + this.depthBytes = new byte[depthAndIRImages.Depth.Resource.Size]; + this.infraredBytes = new byte[depthAndIRImages.IR.Resource.Size]; + } + + // Copy the depth image data. + depthAndIRImages.Depth.Resource.CopyTo(this.depthBytes); + var depthMemory = new Memory(this.depthBytes); + depthMemory.CopyTo(this.capture.Depth.Memory); + + // Copy the IR image data. + depthAndIRImages.IR.Resource.CopyTo(this.infraredBytes); + var infraredMemory = new Memory(this.infraredBytes); + infraredMemory.CopyTo(this.capture.IR.Memory); + + // Call the body tracker. + this.tracker.EnqueueCapture(this.capture); + using (var bodyFrame = this.tracker.PopResult(false)) + { + // Parse the output into a list of KinectBody's to post + if (bodyFrame != null) + { + uint bodyIndex = 0; + while (bodyIndex < bodyFrame.NumberOfBodies) + { + if (bodyIndex >= this.currentBodies.Count) + { + this.currentBodies.Add(new AzureKinectBody()); + } + + this.currentBodies[(int)bodyIndex].CopyFrom(bodyFrame.GetBody(bodyIndex)); + bodyIndex++; + } + + this.currentBodies.RemoveRange((int)bodyIndex, this.currentBodies.Count - (int)bodyIndex); + } + else + { + this.currentBodies.Clear(); + } + } + + this.Out.Post(this.currentBodies, envelope.OriginatingTime); + } + } + + private void InitializeTracker(Calibration calibration) + { + this.tracker = Tracker.Create(calibration, new TrackerConfiguration() + { + SensorOrientation = this.configuration.SensorOrientation, + ProcessingMode = this.configuration.CpuOnlyMode ? TrackerProcessingMode.Cpu : TrackerProcessingMode.Gpu, + }); + + this.tracker.SetTemporalSmooting(this.configuration.TemporalSmoothing); + } + + private void ReceiveCalibration(Calibration calibration, Envelope envelope) + { + if (this.tracker == null) + { + this.InitializeTracker(calibration); + } + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTrackerConfiguration.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTrackerConfiguration.cs new file mode 100644 index 00000000..6b05c4fc --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectBodyTrackerConfiguration.cs @@ -0,0 +1,35 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using Microsoft.Azure.Kinect.BodyTracking; + + /// + /// Represents the Azure Kinect body tracker configuration. + /// + public class AzureKinectBodyTrackerConfiguration + { + /// + /// Gets or sets the temporal smoothing to use across frames for the body tracker. + /// + /// + /// Set between 0 (no smoothing) and 1 (full smoothing). Less smoothing will increase + /// the responsiveness of the detected skeletons but will cause more positional and + /// orientational jitters. + /// + public float TemporalSmoothing { get; set; } = 0.5f; + + /// + /// Gets or sets a value indicating whether to perform body tracking computation only + /// on the CPU. + /// + /// If false, the tracker requires CUDA hardware and drivers. + public bool CpuOnlyMode { get; set; } = false; + + /// + /// Gets or sets the sensor orientation used by body tracking. + /// + public SensorOrientation SensorOrientation { get; set; } = SensorOrientation.Default; + } +} diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectCore.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectCore.cs new file mode 100644 index 00000000..95d7cc0a --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectCore.cs @@ -0,0 +1,461 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using System; + using System.Collections.Generic; + using System.ComponentModel; + using System.Diagnostics; + using System.Threading; + using System.Threading.Tasks; + using MathNet.Numerics.LinearAlgebra; + using MathNet.Spatial.Euclidean; + using Microsoft.Azure.Kinect.Sensor; + using Microsoft.Psi; + using Microsoft.Psi.Calibration; + using Microsoft.Psi.Components; + using Microsoft.Psi.DeviceManagement; + using Microsoft.Psi.Imaging; + using Image = Microsoft.Psi.Imaging.Image; + + /// + /// Component that captures core sensor streams (color, depth, IR, and IMU) from the Azure Kinect device. + /// + internal sealed class AzureKinectCore : ISourceComponent, IDisposable + { + private readonly Pipeline pipeline; + private readonly AzureKinectSensorConfiguration configuration; + + /// + /// The underlying Azure Kinect device. + /// + private Device device = null; + private Thread captureThread = null; + private Thread imuSampleThread = null; + private bool shutdown = false; + + private int colorImageWidth; + private int colorImageHeight; + private int depthImageWidth; + private int depthImageHeight; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline this component is a part of. + /// Configuration to use for the device. + public AzureKinectCore(Pipeline pipeline, AzureKinectSensorConfiguration config = null) + { + this.pipeline = pipeline; + this.configuration = config ?? new AzureKinectSensorConfiguration(); + + if (this.configuration.OutputColor) + { + if (this.configuration.ColorResolution == ColorResolution.Off) + { + throw new ArgumentException("Invalid configuration: Cannot output color stream when color resolution is set to Off."); + } + + if (this.configuration.ColorFormat != ImageFormat.ColorBGRA32) + { + throw new NotImplementedException("Invalid configuration: Psi so far only supports BGRA32 pixel format for the AzureKinect color camera"); + } + } + + if (this.configuration.OutputDepth) + { + if (this.configuration.DepthMode == DepthMode.Off) + { + throw new ArgumentException("Invalid configuration: Cannot output depth stream when depth mode is set to Off."); + } + + if (this.configuration.DepthMode == DepthMode.PassiveIR) + { + throw new ArgumentException("Invalid configuration: Cannot output depth stream when depth mode is set to PassiveIR."); + } + } + + if (this.configuration.OutputInfrared && this.configuration.DepthMode == DepthMode.Off) + { + throw new ArgumentException("Invalid configuration: Cannot output IR stream when depth mode is set to Off. Try DepthMode=PassiveIR if the intent is to capture only IR."); + } + + this.DepthImage = pipeline.CreateEmitter>(this, nameof(this.DepthImage)); + this.InfraredImage = pipeline.CreateEmitter>(this, nameof(this.InfraredImage)); + this.ColorImage = pipeline.CreateEmitter>(this, nameof(this.ColorImage)); + this.Imu = pipeline.CreateEmitter(this, nameof(this.Imu)); + this.DepthDeviceCalibrationInfo = pipeline.CreateEmitter(this, nameof(this.DepthDeviceCalibrationInfo)); + this.AzureKinectSensorCalibration = pipeline.CreateEmitter(this, nameof(this.AzureKinectSensorCalibration)); + this.FrameRate = pipeline.CreateEmitter(this, nameof(this.FrameRate)); + this.Temperature = pipeline.CreateEmitter(this, nameof(this.Temperature)); + this.DepthAndIRImages = pipeline.CreateEmitter<(Shared, Shared)>(this, nameof(this.DepthAndIRImages)); + + this.DetermineImageDimensions(); + } + + /// + /// Gets the current image from the color camera. + /// + public Emitter> ColorImage { get; private set; } + + /// + /// Gets the current infrared image. + /// + public Emitter> InfraredImage { get; private set; } + + /// + /// Gets the current depth image. + /// + public Emitter> DepthImage { get; private set; } + + /// + /// Gets the current frames-per-second actually achieved. + /// + public Emitter FrameRate { get; private set; } + + /// + /// Gets the current IMU sample. + /// + public Emitter Imu { get; private set; } + + /// + /// Gets the Azure Kinect depth device calibration information as an object (see Microsoft.Psi.Calibration). + /// + public Emitter DepthDeviceCalibrationInfo { get; private set; } + + /// + /// Gets the underlying device calibration (provided directly by Azure Kinect SDK and required by the body tracker). + /// + public Emitter AzureKinectSensorCalibration { get; private set; } + + /// + /// Gets the Kinect's temperature in degrees Celsius. + /// + public Emitter Temperature { get; private set; } + + /// + /// Gets both the depth and IR images together (required by the body tracker). + /// + internal Emitter<(Shared Depth, Shared IR)> DepthAndIRImages { get; private set; } + + /// + /// Returns the number of Kinect for Azure devices available on the system. + /// + /// Number of available devices. + public static int GetInstalledCount() + { + return Device.GetInstalledCount(); + } + + /// + public void Dispose() + { + if (this.device != null) + { + this.device.Dispose(); + this.device = null; + } + } + + /// + public void Start(Action notifyCompletionTime) + { + // notify that this is an infinite source component + notifyCompletionTime(DateTime.MaxValue); + + this.device = Device.Open(this.configuration.DeviceIndex); + this.device.StartCameras(new DeviceConfiguration() + { + ColorFormat = this.configuration.ColorFormat, + ColorResolution = this.configuration.ColorResolution, + DepthMode = this.configuration.DepthMode, + CameraFPS = this.configuration.CameraFPS, + SynchronizedImagesOnly = this.configuration.SynchronizedImagesOnly, + }); + + this.captureThread = new Thread(new ThreadStart(this.CaptureThreadProc)); + this.captureThread.Start(); + + if (this.configuration.OutputImu) + { + this.device.StartImu(); + this.imuSampleThread = new Thread(new ThreadStart(this.ImuSampleThreadProc)); + this.imuSampleThread.Start(); + } + } + + /// + public void Stop(DateTime finalOriginatingTime, Action notifyCompleted) + { + this.shutdown = true; + TimeSpan waitTime = TimeSpan.FromSeconds(1); + if (this.captureThread != null && this.captureThread.Join(waitTime) != true) + { + this.captureThread.Abort(); + } + + this.device.StopCameras(); + + if (this.configuration.OutputImu) + { + if (this.imuSampleThread != null && this.imuSampleThread.Join(waitTime) != true) + { + this.imuSampleThread.Abort(); + } + + this.device.StopImu(); + } + + notifyCompleted(); + } + + private void CaptureThreadProc() + { + if (this.configuration.ColorResolution == ColorResolution.Off && + this.configuration.DepthMode == DepthMode.Off) + { + return; + } + + var colorImageFormat = PixelFormat.BGRA_32bpp; + var infraredImageFormat = PixelFormat.Gray_16bpp; + + var calibrationPosted = false; + + Stopwatch sw = new Stopwatch(); + int frameCount = 0; + sw.Start(); + + while (this.device != null && !this.shutdown) + { + if (this.configuration.OutputCalibration && !calibrationPosted) + { + // Compute and post the device's calibration object. + var currentTime = this.pipeline.GetCurrentTime(); + var calibration = this.device.GetCalibration(); + + if (calibration != null) + { + this.AzureKinectSensorCalibration.Post(calibration, currentTime); + + var colorExtrinsics = calibration.ColorCameraCalibration.Extrinsics; + var colorIntrinsics = calibration.ColorCameraCalibration.Intrinsics; + var depthIntrinsics = calibration.DepthCameraCalibration.Intrinsics; + + if (colorIntrinsics.Type == CalibrationModelType.Rational6KT || depthIntrinsics.Type == CalibrationModelType.Rational6KT) + { + throw new Exception("Calibration output not permitted for deprecated internal Azure Kinect cameras. Only Brown_Conrady calibration supported."); + } + else if (colorIntrinsics.Type != CalibrationModelType.BrownConrady || depthIntrinsics.Type != CalibrationModelType.BrownConrady) + { + throw new Exception("Calibration output only supported for Brown_Conrady model."); + } + else + { + Matrix colorCameraMatrix = Matrix.Build.Dense(3, 3); + colorCameraMatrix[0, 0] = colorIntrinsics.Parameters[2]; + colorCameraMatrix[1, 1] = colorIntrinsics.Parameters[3]; + colorCameraMatrix[0, 2] = colorIntrinsics.Parameters[0]; + colorCameraMatrix[1, 2] = colorIntrinsics.Parameters[1]; + colorCameraMatrix[2, 2] = 1; + Matrix depthCameraMatrix = Matrix.Build.Dense(3, 3); + depthCameraMatrix[0, 0] = depthIntrinsics.Parameters[2]; + depthCameraMatrix[1, 1] = depthIntrinsics.Parameters[3]; + depthCameraMatrix[0, 2] = depthIntrinsics.Parameters[0]; + depthCameraMatrix[1, 2] = depthIntrinsics.Parameters[1]; + depthCameraMatrix[2, 2] = 1; + Matrix depthToColorMatrix = Matrix.Build.Dense(4, 4); + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 3; j++) + { + // The AzureKinect SDK assumes that vectors are row vectors, while the MathNet SDK assumes + // column vectors, so we need to flip them here. + depthToColorMatrix[i, j] = colorExtrinsics.Rotation[(j * 3) + i]; + } + } + + depthToColorMatrix[3, 0] = colorExtrinsics.Translation[0]; + depthToColorMatrix[3, 1] = colorExtrinsics.Translation[1]; + depthToColorMatrix[3, 2] = colorExtrinsics.Translation[2]; + depthToColorMatrix[3, 3] = 1.0; + var metersToMillimeters = Matrix.Build.Dense(4, 4); + metersToMillimeters[0, 0] = 1000.0; + metersToMillimeters[1, 1] = 1000.0; + metersToMillimeters[2, 2] = 1000.0; + metersToMillimeters[3, 3] = 1.0; + var millimetersToMeters = Matrix.Build.Dense(4, 4); + millimetersToMeters[0, 0] = 1.0 / 1000.0; + millimetersToMeters[1, 1] = 1.0 / 1000.0; + millimetersToMeters[2, 2] = 1.0 / 1000.0; + millimetersToMeters[3, 3] = 1.0; + depthToColorMatrix = (metersToMillimeters * depthToColorMatrix * millimetersToMeters).Transpose(); + + double[] colorRadialDistortion = new double[6] + { + colorIntrinsics.Parameters[4], + colorIntrinsics.Parameters[5], + colorIntrinsics.Parameters[6], + colorIntrinsics.Parameters[7], + colorIntrinsics.Parameters[8], + colorIntrinsics.Parameters[9], + }; + double[] colorTangentialDistortion = new double[2] { colorIntrinsics.Parameters[13], colorIntrinsics.Parameters[12] }; + double[] depthRadialDistortion = new double[6] + { + depthIntrinsics.Parameters[4], + depthIntrinsics.Parameters[5], + depthIntrinsics.Parameters[6], + depthIntrinsics.Parameters[7], + depthIntrinsics.Parameters[8], + depthIntrinsics.Parameters[9], + }; + double[] depthTangentialDistortion = new double[2] { depthIntrinsics.Parameters[13], depthIntrinsics.Parameters[12] }; + + // Azure Kinect uses a basis under the hood that assumes Forward=Z, Right=X, Down=Y. + var kinectBasis = new CoordinateSystem(default, UnitVector3D.ZAxis, UnitVector3D.XAxis.Negate(), UnitVector3D.YAxis.Negate()); + + var cameraCalibration = new DepthDeviceCalibrationInfo( + calibration.ColorCameraCalibration.ResolutionWidth, + calibration.ColorCameraCalibration.ResolutionHeight, + colorCameraMatrix, + colorRadialDistortion, + colorTangentialDistortion, + kinectBasis.Invert() * depthToColorMatrix * kinectBasis, + calibration.DepthCameraCalibration.ResolutionWidth, + calibration.DepthCameraCalibration.ResolutionHeight, + depthCameraMatrix, + depthRadialDistortion, + depthTangentialDistortion, + CoordinateSystem.CreateIdentity(4)); + + this.DepthDeviceCalibrationInfo.Post(cameraCalibration, currentTime); + } + + calibrationPosted = true; + } + } + + // Wait for a capture on a thread pool thread + using var capture = this.device.GetCapture(this.configuration.DeviceCaptureTimeout); + if (capture != null) + { + var currentTime = this.pipeline.GetCurrentTime(); + + if (this.configuration.OutputColor && capture.Color != null) + { + using var sharedColorImage = ImagePool.GetOrCreate(this.colorImageWidth, this.colorImageHeight, colorImageFormat); + sharedColorImage.Resource.CopyFrom(capture.Color.Memory.ToArray()); + this.ColorImage.Post(sharedColorImage, currentTime); + } + + Shared sharedIRImage = null; + Shared sharedDepthImage = null; + + if (this.configuration.OutputInfrared && capture.IR != null) + { + sharedIRImage = ImagePool.GetOrCreate(this.depthImageWidth, this.depthImageHeight, infraredImageFormat); + sharedIRImage.Resource.CopyFrom(capture.IR.Memory.ToArray()); + this.InfraredImage.Post(sharedIRImage, currentTime); + } + + if (this.configuration.OutputDepth && capture.Depth != null) + { + sharedDepthImage = DepthImagePool.GetOrCreate(this.depthImageWidth, this.depthImageHeight); + sharedDepthImage.Resource.CopyFrom(capture.Depth.Memory.ToArray()); + this.DepthImage.Post(sharedDepthImage, currentTime); + + if (sharedIRImage != null) + { + this.DepthAndIRImages.Post((sharedDepthImage, sharedIRImage), currentTime); + } + } + + sharedIRImage?.Dispose(); + sharedDepthImage?.Dispose(); + + this.Temperature.Post(capture.Temperature, currentTime); + + ++frameCount; + if (sw.Elapsed > this.configuration.FrameRateReportingFrequency) + { + this.FrameRate.Post((double)frameCount / sw.Elapsed.TotalSeconds, currentTime); + frameCount = 0; + sw.Restart(); + } + } + } + } + + private void ImuSampleThreadProc() + { + while (this.device != null && !this.shutdown) + { + this.Imu.Post(this.device.GetImuSample(TimeSpan.MaxValue), this.pipeline.GetCurrentTime()); + } + } + + private void DetermineImageDimensions() + { + // Initialize the color image width and height based on config + switch (this.configuration.ColorResolution) + { + case ColorResolution.R720p: + this.colorImageWidth = 1280; + this.colorImageHeight = 720; + break; + case ColorResolution.R1080p: + this.colorImageWidth = 1920; + this.colorImageHeight = 1080; + break; + case ColorResolution.R1440p: + this.colorImageWidth = 2560; + this.colorImageHeight = 1440; + break; + case ColorResolution.R1536p: + this.colorImageWidth = 2048; + this.colorImageHeight = 1536; + break; + case ColorResolution.R2160p: + this.colorImageWidth = 3840; + this.colorImageHeight = 2160; + break; + case ColorResolution.R3072p: + this.colorImageWidth = 4096; + this.colorImageHeight = 3072; + break; + case ColorResolution.Off: + break; + default: + throw new InvalidEnumArgumentException($"Unexpected Azure Kinect Color Resolution: {this.configuration.ColorResolution}"); + } + + // Initialize the depth image width and height based on config + switch (this.configuration.DepthMode) + { + case DepthMode.NFOV_2x2Binned: + this.depthImageWidth = 320; + this.depthImageHeight = 288; + break; + case DepthMode.NFOV_Unbinned: + this.depthImageWidth = 640; + this.depthImageHeight = 576; + break; + case DepthMode.WFOV_2x2Binned: + this.depthImageWidth = 512; + this.depthImageHeight = 512; + break; + case DepthMode.WFOV_Unbinned: + case DepthMode.PassiveIR: + this.depthImageWidth = 1024; + this.depthImageHeight = 1024; + break; + case DepthMode.Off: + break; + default: + throw new InvalidEnumArgumentException($"Unexpected Azure Kinect Depth Mode: {this.configuration.DepthMode}"); + } + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectExtensions.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectExtensions.cs new file mode 100644 index 00000000..f8d6ff2e --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectExtensions.cs @@ -0,0 +1,33 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using System; + using Microsoft.Azure.Kinect.Sensor; + + /// + /// Helper class with extension methods for Azure Kinect data types. + /// + public static class AzureKinectExtensions + { + /// + /// Gets the range of pixel values for a specified depth mode. + /// + /// The depth mode. + /// A tuple indicating the range of pixel values, in millimeters. + public static (ushort MinValue, ushort MaxValue) GetRange(this DepthMode depthMode) + { + // Using the same values as in: + // https://github.com/microsoft/Azure-Kinect-Sensor-SDK/blob/develop/tools/k4aviewer/k4astaticimageproperties.h + return depthMode switch + { + DepthMode.NFOV_2x2Binned => (500, 5800), + DepthMode.NFOV_Unbinned => (500, 4000), + DepthMode.WFOV_2x2Binned => (250, 3000), + DepthMode.WFOV_Unbinned => (250, 2500), + _ => throw new Exception("Invalid depth mode."), + }; + } + } +} diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensor.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensor.cs new file mode 100644 index 00000000..f65f8879 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensor.cs @@ -0,0 +1,243 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using System; + using System.Collections.Generic; + using Microsoft.Azure.Kinect.Sensor; + using Microsoft.Psi; + using Microsoft.Psi.Calibration; + using Microsoft.Psi.DeviceManagement; + using DepthImage = Microsoft.Psi.Imaging.DepthImage; + using Image = Microsoft.Psi.Imaging.Image; + + /// + /// Component that captures all sensor streams and tracked bodies from the Azure Kinect device. + /// + public class AzureKinectSensor : Subpipeline + { + private static List allDevices = null; + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline to add this component to. + /// Configuration to use for the sensor. + /// An optional default delivery policy for the subpipeline (defaults is LatestMessage). + /// An optional delivery policy for sending the depth-and-IR images stream to the body tracker (default is LatestMessage). + public AzureKinectSensor( + Pipeline pipeline, + AzureKinectSensorConfiguration configuration = null, + DeliveryPolicy defaultDeliveryPolicy = null, + DeliveryPolicy bodyTrackerDeliveryPolicy = null) + : base(pipeline, nameof(AzureKinectSensor), defaultDeliveryPolicy ?? DeliveryPolicy.LatestMessage) + { + if (configuration == null) + { + configuration = new AzureKinectSensorConfiguration(); + } + + if (configuration.BodyTrackerConfiguration != null) + { + if (!configuration.OutputCalibration) + { + throw new Exception($"The body tracker requires that the {nameof(AzureKinectSensor)} component must be configured to output calibration."); + } + + if (!configuration.OutputInfrared || !configuration.OutputDepth) + { + throw new Exception($"The body tracker requires that the {nameof(AzureKinectSensor)} component must be configured to output both Depth and IR streams."); + } + } + + var azureKinectCore = new AzureKinectCore(this, configuration); + + // Connect the sensor streams + this.ColorImage = azureKinectCore.ColorImage.BridgeTo(pipeline, nameof(this.ColorImage)).Out; + this.Imu = azureKinectCore.Imu.BridgeTo(pipeline, nameof(this.Imu)).Out; + this.DepthImage = azureKinectCore.DepthImage.BridgeTo(pipeline, nameof(this.DepthImage)).Out; + this.InfraredImage = azureKinectCore.InfraredImage.BridgeTo(pipeline, nameof(this.InfraredImage)).Out; + this.FrameRate = azureKinectCore.FrameRate.BridgeTo(pipeline, nameof(this.FrameRate)).Out; + this.Temperature = azureKinectCore.Temperature.BridgeTo(pipeline, nameof(this.Temperature)).Out; + this.DepthDeviceCalibrationInfo = azureKinectCore.DepthDeviceCalibrationInfo.BridgeTo(pipeline, nameof(this.DepthDeviceCalibrationInfo)).Out; + this.AzureKinectSensorCalibration = azureKinectCore.AzureKinectSensorCalibration.BridgeTo(pipeline, nameof(this.AzureKinectSensorCalibration)).Out; + + // Pipe captures and calibration to the body tracker + if (configuration.BodyTrackerConfiguration != null) + { + var bodyTracker = new AzureKinectBodyTracker(this, configuration.BodyTrackerConfiguration); + azureKinectCore.DepthAndIRImages.PipeTo(bodyTracker, bodyTrackerDeliveryPolicy ?? DeliveryPolicy.LatestMessage); + azureKinectCore.AzureKinectSensorCalibration.PipeTo(bodyTracker.AzureKinectSensorCalibration, DeliveryPolicy.Unlimited); + this.Bodies = bodyTracker.BridgeTo(pipeline, nameof(this.Bodies)).Out; + } + else + { + // create unused emitter to allow wiring while OutputBodies=false + this.Bodies = pipeline.CreateEmitter>(this, nameof(this.Bodies)); + } + } + + /// + /// Gets a list of all available capture devices. + /// + public static IEnumerable AllDevices + { + get + { + if (allDevices == null) + { + allDevices = new List(); + int numDevices = Device.GetInstalledCount(); + for (int i = 0; i < numDevices; i++) + { + CameraDeviceInfo di = new CameraDeviceInfo + { + FriendlyName = $"AzureKinect-{i}", + DeviceName = $"AzureKinect-{i}", + DeviceType = "AzureKinect", + DeviceId = i, + }; + Device dev; + try + { + dev = Device.Open(i); + } + catch (Exception) + { + continue; + } + + di.SerialNumber = dev.SerialNum; + dev.Dispose(); + di.Sensors = new List(); + for (int k = 0; k < 3; k++) + { + CameraDeviceInfo.Sensor sensor = new CameraDeviceInfo.Sensor(); + uint[,] resolutions = null; + switch (k) + { + case 0: // color mode + sensor.Type = CameraDeviceInfo.Sensor.SensorType.Color; + resolutions = new uint[,] + { + { 1280, 720, 1 }, + { 1920, 1080, 1 }, + { 2560, 1440, 1 }, + { 3840, 2160, 1 }, + { 2048, 1536, 1 }, + { 4096, 3072, 0 }, + }; + break; + case 1: // depth mode + sensor.Type = CameraDeviceInfo.Sensor.SensorType.Depth; + resolutions = new uint[,] + { + { 640, 576, 1 }, + { 320, 288, 1 }, + { 512, 512, 1 }, + { 1024, 1024, 0 }, + }; + break; + case 2: // IR mode + sensor.Type = CameraDeviceInfo.Sensor.SensorType.IR; + resolutions = new uint[,] + { + { 1024, 1024, 1 }, + }; + break; + } + + sensor.Modes = new List(); + uint[] frameRates = { 30, 15, 5 }; + for (int j = 0; j < resolutions.Length / 3; j++) + { + foreach (var fr in frameRates) + { + if (fr == 30 && resolutions[j, 2] == 0) + { + continue; // Mode doesn't support 30fps + } + + CameraDeviceInfo.Sensor.ModeInfo mi = new CameraDeviceInfo.Sensor.ModeInfo + { + Format = Imaging.PixelFormat.BGRA_32bpp, + FrameRateNumerator = fr, + FrameRateDenominator = 1, + ResolutionWidth = resolutions[j, 0], + ResolutionHeight = resolutions[j, 1], + }; + sensor.Modes.Add(mi); + } + } + + di.Sensors.Add(sensor); + } + + allDevices.Add(di); + } + } + + return allDevices; + } + } + + // Note: the following emitters mirror those in AzureKinectSensorCore + + /// + /// Gets the current image from the color camera. + /// + public Emitter> ColorImage { get; private set; } + + /// + /// Gets the current infrared image. + /// + public Emitter> InfraredImage { get; private set; } + + /// + /// Gets the current depth image. + /// + public Emitter> DepthImage { get; private set; } + + /// + /// Gets the current frames-per-second actually achieved. + /// + public Emitter FrameRate { get; private set; } + + /// + /// Gets the current IMU sample. + /// + public Emitter Imu { get; private set; } + + /// + /// Gets the Azure Kinect's depth device calibration information. + /// + public Emitter DepthDeviceCalibrationInfo { get; private set; } + + /// + /// Gets the underlying device calibration (provided by Azure Kinect SDK). + /// + public Emitter AzureKinectSensorCalibration { get; private set; } + + /// + /// Gets the Kinect's temperature in degrees Celsius. + /// + public Emitter Temperature { get; private set; } + + // Note: the following emitter mirrors that in AzureKinectBodyTracker + + /// + /// Gets the emitter of lists of currently tracked bodies. + /// + public Emitter> Bodies { get; private set; } + + /// + /// Returns the number of Kinect for Azure devices available on the system. + /// + /// Number of available devices. + public static int GetInstalledCount() + { + return Device.GetInstalledCount(); + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensorConfiguration.cs b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensorConfiguration.cs new file mode 100644 index 00000000..28259eb8 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/AzureKinectSensorConfiguration.cs @@ -0,0 +1,87 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.AzureKinect +{ + using System; + using Microsoft.Azure.Kinect.Sensor; + + /// + /// Represents the Azure Kinect configuration. + /// + public class AzureKinectSensorConfiguration + { + /// + /// Gets or sets the index of the device to open. + /// + public int DeviceIndex { get; set; } = 0; // K4A_DEVICE_DEFAULT = 0 + + /// + /// Gets the color image format, i.e. . + /// + /// This property does not have a setter because currently + /// the component only supports the + /// . + public ImageFormat ColorFormat { get; } = ImageFormat.ColorBGRA32; + + /// + /// Gets or sets the resolution of the color camera. + /// + public ColorResolution ColorResolution { get; set; } = ColorResolution.R1080p; + + /// + /// Gets or sets the depth camera mode. + /// + public DepthMode DepthMode { get; set; } = DepthMode.NFOV_Unbinned; + + /// + /// Gets or sets the desired frame rate. + /// + public FPS CameraFPS { get; set; } = FPS.FPS30; + + /// + /// Gets or sets a value indicating whether color and depth captures should be strictly synchronized. + /// + public bool SynchronizedImagesOnly { get; set; } = true; + + /// + /// Gets or sets a value indicating whether the color stream is emitted. + /// + public bool OutputColor { get; set; } = true; + + /// + /// Gets or sets a value indicating whether the depth stream is emitted. + /// + public bool OutputDepth { get; set; } = true; + + /// + /// Gets or sets a value indicating whether the infrared stream is emitted. + /// + public bool OutputInfrared { get; set; } = true; + + /// + /// Gets or sets a value indicating whether to use the Azure Kinect's IMU. + /// + public bool OutputImu { get; set; } = false; + + /// + /// Gets or sets a value indicating whether the Azure Kinect outputs its calibration settings. + /// + public bool OutputCalibration { get; set; } = true; + + /// + /// Gets or sets the body tracker configuration. + /// + public AzureKinectBodyTrackerConfiguration BodyTrackerConfiguration { get; set; } = null; + + /// + /// Gets or sets the timeout used for device capture. + /// + public TimeSpan DeviceCaptureTimeout { get; set; } = TimeSpan.FromMinutes(1); + + /// + /// Gets or sets the frequency at which frame rate is reported on the FrameRate emitter. + /// + public TimeSpan FrameRateReportingFrequency { get; set; } = TimeSpan.FromSeconds(2); + } +} diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.csproj b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.csproj new file mode 100644 index 00000000..8f4d75a9 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.csproj @@ -0,0 +1,49 @@ + + + netstandard2.0 + x64 + Microsoft.Psi.AzureKinect + Provides APIs and components for using Microsoft Azure Kinect sensor. + true + Microsoft.Psi.AzureKinect.x64.nuspec + configuration=$(Configuration);version=$(Version) + ../../../Build/Microsoft.Psi.ruleset + + + x64 + DEBUG;TRACE + true + bin\x64\Debug\netstandard2.0\Microsoft.Psi.AzureKinect.x64.xml + + + x64 + bin\x64\Release\netstandard2.0\Microsoft.Psi.AzureKinect.x64.xml + true + + + + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.nuspec b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.nuspec new file mode 100644 index 00000000..372b59b4 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/Microsoft.Psi.AzureKinect.x64.nuspec @@ -0,0 +1,35 @@ + + + + Microsoft.Psi.AzureKinect.x64 + $version$ + Microsoft + Microsoft + true + LICENSE.txt + https://github.com/microsoft/psi/wiki + Provides APIs and components for using the Microsoft Azure Kinect sensor. + © Microsoft Corporation. All rights reserved. + Psi Microsoft + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/build.sh b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/build.sh new file mode 100644 index 00000000..956d2ae2 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/build.sh @@ -0,0 +1,3 @@ +#!/usr/bin/env bash + +dotnet build ./Microsoft.Psi.AzureKinect.x64.csproj diff --git a/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/stylecop.json b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/stylecop.json new file mode 100644 index 00000000..75ffdcd8 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.AzureKinect.x64/stylecop.json @@ -0,0 +1,16 @@ +{ + // ACTION REQUIRED: This file was automatically added to your project, but it + // will not take effect until additional steps are taken to enable it. See the + // following page for additional information: + // + // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md + + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "documentationRules": { + "companyName": "Microsoft Corporation", + "copyrightText": "Copyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the MIT license.", + "xmlHeader": false + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFace.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFace.cs index 084b75ce..595b6629 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFace.cs +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFace.cs @@ -38,7 +38,7 @@ namespace Microsoft.Psi.Kinect.Face public Dictionary FacePointsInColorSpace { get; set; } /// - /// Gets or sets a list of points for each face point. Points are defined in pixels relative to the infared image. + /// Gets or sets a list of points for each face point. Points are defined in pixels relative to the infrared image. /// public Dictionary FacePointsInInfraredSpace { get; set; } diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFaceDetector.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFaceDetector.cs index 85a9172d..cf924467 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFaceDetector.cs +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/KinectFaceDetector.cs @@ -15,9 +15,9 @@ namespace Microsoft.Psi.Kinect.Face /// public class KinectFaceDetector : IKinectFaceDetector, ISourceComponent, IDisposable { - private Kinect.KinectSensor kinectSensor = null; - private KinectFaceDetectorConfiguration configuration = null; - private Pipeline pipeline; + private readonly KinectSensor kinectSensor; + private readonly KinectFaceDetectorConfiguration configuration; + private readonly Pipeline pipeline; private FaceFrameReader[] faceFrameReaders = null; private FaceFrameSource[] faceFrameSources = null; @@ -33,7 +33,7 @@ namespace Microsoft.Psi.Kinect.Face /// Pipeline this sensor is a part of. /// Psi Kinect device from which we get our associated bodies. /// Configuration to use. - public KinectFaceDetector(Pipeline pipeline, Kinect.KinectSensor kinectSensor, KinectFaceDetectorConfiguration configuration = null) + public KinectFaceDetector(Pipeline pipeline, KinectSensor kinectSensor, KinectFaceDetectorConfiguration configuration = null) { this.pipeline = pipeline; this.configuration = configuration ?? new KinectFaceDetectorConfiguration(); diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/Microsoft.Psi.Kinect.Face.Windows.x64.csproj b/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/Microsoft.Psi.Kinect.Face.Windows.x64.csproj index 16d67c35..f465470e 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/Microsoft.Psi.Kinect.Face.Windows.x64.csproj +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Face.Windows.x64/Microsoft.Psi.Kinect.Face.Windows.x64.csproj @@ -28,9 +28,13 @@ + + all + runtime; build; native; contentfiles; analyzers + - - + + diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyListVisualizationObject.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyListVisualizationObject.cs new file mode 100644 index 00000000..5062b23e --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyListVisualizationObject.cs @@ -0,0 +1,17 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Kinect.Visualization +{ + using System.Collections.Generic; + using Microsoft.Psi.Kinect; + using Microsoft.Psi.Visualization.VisualizationObjects; + + /// + /// Represents a visualization object for Azure Kinect bodies. + /// + [VisualizationObject("Visualize Kinect Bodies")] + public class KinectBodyListVisualizationObject : ModelVisual3DVisualizationObjectEnumerable> + { + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyVisualizationObject.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyVisualizationObject.cs new file mode 100644 index 00000000..fda5b040 --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/KinectBodyVisualizationObject.cs @@ -0,0 +1,284 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Kinect.Visualization +{ + using System; + using System.ComponentModel; + using System.Runtime.Serialization; + using System.Windows; + using System.Windows.Media; + using HelixToolkit.Wpf; + using Microsoft.Kinect; + using Microsoft.Psi.Kinect; + using Microsoft.Psi.Visualization.VisualizationObjects; + using Xceed.Wpf.Toolkit.PropertyGrid.Attributes; + using Win3D = System.Windows.Media.Media3D; + + /// + /// Represents a visualization object for Kinect bodies. + /// + [VisualizationObject("Visualize Kinect Body")] + public class KinectBodyVisualizationObject : ModelVisual3DVisualizationObject + { + private readonly BillboardTextVisual3D billboard; + private readonly UpdatableVisual3DDictionary visualJoints; + private readonly UpdatableVisual3DDictionary<(JointType ChildJoint, JointType ParentJoint), PipeVisual3D> visualBones; + + private Color color = Colors.White; + private double inferredJointsOpacity = 30; + private double thicknessMm = 30; + private bool showBillboard = false; + private int polygonResolution = 6; + private double billboardHeightCm = 100; + + /// + /// Initializes a new instance of the class. + /// + public KinectBodyVisualizationObject() + { + this.visualJoints = new UpdatableVisual3DDictionary(null); + this.visualBones = new UpdatableVisual3DDictionary<(JointType ChildJoint, JointType ParentJoint), PipeVisual3D>(null); + + this.billboard = new BillboardTextVisual3D() + { + Background = Brushes.Gray, + Foreground = new SolidColorBrush(Colors.White), + Padding = new Thickness(5), + }; + + this.UpdateVisibility(); + } + + /// + /// Gets or sets the color. + /// + [DataMember] + [Description("Color of the body.")] + public Color Color + { + get { return this.color; } + set { this.Set(nameof(this.Color), ref this.color, value); } + } + + /// + /// Gets or sets the inferred joints opacity. + /// + [DataMember] + [Description("Opacity for rendering inferred joints and bones.")] + public double InferredJointsOpacity + { + get { return this.inferredJointsOpacity; } + set { this.Set(nameof(this.InferredJointsOpacity), ref this.inferredJointsOpacity, value); } + } + + /// + /// Gets or sets the thickness. + /// + [DataMember] + [DisplayName("Thickness (mm)")] + [Description("Diameter of bones and radius of joints (mm).")] + public double ThicknessMm + { + get { return this.thicknessMm; } + set { this.Set(nameof(this.ThicknessMm), ref this.thicknessMm, value); } + } + + /// + /// Gets or sets a value indicating whether to show a billboard with information about the body. + /// + [DataMember] + [PropertyOrder(0)] + [Description("Show a billboard with information about the body.")] + public bool ShowBillboard + { + get { return this.showBillboard; } + set { this.Set(nameof(this.ShowBillboard), ref this.showBillboard, value); } + } + + /// + /// Gets or sets the height at which to draw the billboard (cm). + /// + [DataMember] + [PropertyOrder(1)] + [DisplayName("Billboard Height (cm)")] + [Description("Height at which to draw the billboard (cm).")] + public double BillboardHeightCm + { + get { return this.billboardHeightCm; } + set { this.Set(nameof(this.BillboardHeightCm), ref this.billboardHeightCm, value); } + } + + /// + /// Gets or sets the number of divisions to use when rendering polygons for joints and bones. + /// + [DataMember] + [Description("Level of resolution at which to render joint and bone polygons (minimum value is 3).")] + public int PolygonResolution + { + get { return this.polygonResolution; } + set { this.Set(nameof(this.PolygonResolution), ref this.polygonResolution, value < 3 ? 3 : value); } + } + + /// + public override void UpdateData() + { + if (this.CurrentData != null) + { + this.UpdateVisuals(); + } + + this.UpdateVisibility(); + } + + /// + public override void NotifyPropertyChanged(string propertyName) + { + if (propertyName == nameof(this.Color) || + propertyName == nameof(this.InferredJointsOpacity) || + propertyName == nameof(this.ThicknessMm) || + propertyName == nameof(this.PolygonResolution)) + { + this.UpdateVisuals(); + } + else if (propertyName == nameof(this.ShowBillboard)) + { + this.UpdateBillboardVisibility(); + } + else if (propertyName == nameof(this.BillboardHeightCm)) + { + this.UpdateBillboard(); + } + else if (propertyName == nameof(this.Visible)) + { + this.UpdateVisibility(); + } + } + + private void UpdateVisuals() + { + this.visualJoints.BeginUpdate(); + this.visualBones.BeginUpdate(); + + if (this.CurrentData != null) + { + var trackedEntitiesBrush = new SolidColorBrush(this.Color); + var untrackedEntitiesBrush = new SolidColorBrush( + Color.FromArgb( + (byte)(Math.Max(0, Math.Min(100, this.InferredJointsOpacity)) * 2.55), + this.Color.R, + this.Color.G, + this.Color.B)); + + // update the joints + foreach (var jointType in this.CurrentData.Joints.Keys) + { + var jointState = this.CurrentData.Joints[jointType].TrackingState; + var visualJoint = this.visualJoints[jointType]; + visualJoint.BeginEdit(); + var isTracked = jointState == TrackingState.Tracked; + var visible = jointState != TrackingState.NotTracked && (isTracked || this.InferredJointsOpacity > 0); + + if (visible) + { + var jointPosition = this.CurrentData.Joints[jointType].Pose.Origin; + + if (visualJoint.Radius != this.ThicknessMm / 1000.0) + { + visualJoint.Radius = this.ThicknessMm / 1000.0; + } + + var fill = isTracked ? trackedEntitiesBrush : untrackedEntitiesBrush; + if (visualJoint.Fill != fill) + { + visualJoint.Fill = fill; + } + + visualJoint.Transform = new Win3D.TranslateTransform3D(jointPosition.X, jointPosition.Y, jointPosition.Z); + + visualJoint.PhiDiv = this.PolygonResolution; + visualJoint.ThetaDiv = this.PolygonResolution; + + visualJoint.Visible = true; + } + else + { + visualJoint.Visible = false; + } + + visualJoint.EndEdit(); + } + + // update the bones + foreach (var bone in KinectBody.Bones) + { + var parentState = this.CurrentData.Joints[bone.ParentJoint].TrackingState; + var childState = this.CurrentData.Joints[bone.ChildJoint].TrackingState; + var parentIsTracked = parentState == TrackingState.Tracked; + var childIsTracked = childState == TrackingState.Tracked; + var isTracked = parentIsTracked && childIsTracked; + var visible = parentState != TrackingState.NotTracked && childState != TrackingState.NotTracked && (isTracked || this.InferredJointsOpacity > 0); + var visualBone = this.visualBones[bone]; + visualBone.BeginEdit(); + if (visible) + { + if (visualBone.Diameter != this.ThicknessMm / 1000.0) + { + visualBone.Diameter = this.ThicknessMm / 1000.0; + } + + var joint1Position = this.visualJoints[bone.ParentJoint].Transform.Value; + var joint2Position = this.visualJoints[bone.ChildJoint].Transform.Value; + + visualBone.Point1 = new Win3D.Point3D(joint1Position.OffsetX, joint1Position.OffsetY, joint1Position.OffsetZ); + visualBone.Point2 = new Win3D.Point3D(joint2Position.OffsetX, joint2Position.OffsetY, joint2Position.OffsetZ); + + var fill = isTracked ? trackedEntitiesBrush : untrackedEntitiesBrush; + if (visualBone.Fill != fill) + { + visualBone.Fill = fill; + } + + visualBone.ThetaDiv = this.PolygonResolution; + + visualBone.Visible = true; + } + else + { + visualBone.Visible = false; + } + + visualBone.EndEdit(); + } + + // set billboard position + this.UpdateBillboard(); + } + + this.visualJoints.EndUpdate(); + this.visualBones.EndUpdate(); + } + + private void UpdateBillboard() + { + if (this.CurrentData != null) + { + var origin = this.CurrentData.Joints[JointType.SpineBase].Pose.Origin; + this.billboard.Position = new Win3D.Point3D(origin.X, origin.Y, origin.Z + (this.BillboardHeightCm / 100.0)); + this.billboard.Text = this.CurrentData.ToString(); + } + } + + private void UpdateVisibility() + { + this.UpdateChildVisibility(this.visualJoints, this.Visible && this.CurrentData != default); + this.UpdateChildVisibility(this.visualBones, this.Visible && this.CurrentData != default); + this.UpdateBillboardVisibility(); + } + + private void UpdateBillboardVisibility() + { + this.UpdateChildVisibility(this.billboard, this.Visible && this.CurrentData != default && this.ShowBillboard); + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/Microsoft.Psi.Kinect.Visualization.Windows.csproj b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/Microsoft.Psi.Kinect.Visualization.Windows.csproj new file mode 100644 index 00000000..8883063d --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/Microsoft.Psi.Kinect.Visualization.Windows.csproj @@ -0,0 +1,46 @@ + + + net472 + Microsoft.Psi.Kinect.Visualization.Windows + Microsoft.Psi.Kinect.Visualization + AnyCPU + ../../../Build/Microsoft.Psi.ruleset + Provides visualizers for Kinect v2. + + + DEBUG;TRACE + bin\Debug\net472\Microsoft.Psi.Kinect.Visualization.Windows.xml + true + + + + bin\Release\net472\Microsoft.Psi.Kinect.Visualization.Windows.xml + true + + + + + + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + + + + + + + + + + + \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/stylecop.json b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/stylecop.json new file mode 100644 index 00000000..6f09427e --- /dev/null +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Visualization.Windows/stylecop.json @@ -0,0 +1,16 @@ +{ + // ACTION REQUIRED: This file was automatically added to your project, but it + // will not take effect until additional steps are taken to enable it. See the + // following page for additional information: + // + // https://github.com/DotNetAnalyzers/StyleCopAnalyzers/blob/master/documentation/EnableConfiguration.md + + "$schema": "https://raw.githubusercontent.com/DotNetAnalyzers/StyleCopAnalyzers/master/StyleCop.Analyzers/StyleCop.Analyzers/Settings/stylecop.schema.json", + "settings": { + "documentationRules": { + "companyName": "Microsoft Corporation", + "copyrightText": "Copyright (c) Microsoft Corporation. All rights reserved.\nLicensed under the MIT license.", + "xmlHeader": false + } + } +} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthExtensions.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthExtensions.cs deleted file mode 100644 index 6855d0b5..00000000 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthExtensions.cs +++ /dev/null @@ -1,83 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Kinect -{ - using System.IO; - using System.IO.Compression; - using Microsoft.Psi.Imaging; - - /// - /// Define set of extensions for dealing with depth maps. - /// - public static class DepthExtensions - { - /// - /// Simple producer for converting from depth map to colored version of depth map. - /// - /// Depth image to convert. - /// An optional delivery policy. - /// Returns colored representation of the depth map. - public static IProducer> ToColor(this IProducer> depthImage, DeliveryPolicy> deliveryPolicy = null) - { - return depthImage.PipeTo(new DepthToColorConverter(depthImage.Out.Pipeline), deliveryPolicy); - } - - /// - /// Creates a gzipped byte array of the depth image. - /// - /// Depth image to compress. - /// An optional delivery policy. - /// Byte array containing the compressed depth map. - public static IProducer GZipCompressDepthImage(this IProducer> depthImage, DeliveryPolicy> deliveryPolicy = null) - { - var memoryStream = new MemoryStream(); - var memoryStreamLo = new MemoryStream(); - var memoryStreamHi = new MemoryStream(); - byte[] buffer = null; - return depthImage.Select( - image => - { - if (buffer == null) - { - buffer = new byte[image.Resource.Size]; - } - - image.Resource.CopyTo(buffer); - memoryStream.Seek(0, SeekOrigin.Begin); - using (var compressedStream = new GZipStream(memoryStream, CompressionLevel.Optimal, true)) - { - compressedStream.Write(buffer, 0, buffer.Length); - } - - var output = new byte[memoryStream.Position]; - memoryStream.Seek(0, SeekOrigin.Begin); - memoryStream.Read(output, 0, output.Length); - return output; - }, deliveryPolicy); - } - - /// - /// Uncompressed a depth map that was previously compressed with GZip. - /// - /// Byte array of compressed depth values. - /// An optional delivery policy. - /// Uncompressed depth map as an image. - public static IProducer> GZipUncompressDepthImage(this IProducer compressedDepthBytes, DeliveryPolicy deliveryPolicy = null) - { - var buffer = new byte[424 * 512 * 2]; - return compressedDepthBytes.Select( - bytes => - { - using (var compressedStream = new GZipStream(new MemoryStream(bytes), CompressionMode.Decompress)) - { - compressedStream.Read(buffer, 0, buffer.Length); - } - - var psiImage = ImagePool.GetOrCreate(512, 424, PixelFormat.Gray_16bpp); - psiImage.Resource.CopyFrom(buffer); - return psiImage; - }, deliveryPolicy); - } - } -} diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthToColorConverter.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthToColorConverter.cs deleted file mode 100644 index ebdee19d..00000000 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/DepthToColorConverter.cs +++ /dev/null @@ -1,76 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Kinect -{ - using System; - using System.Threading.Tasks; - using Microsoft.Psi; - using Microsoft.Psi.Components; - using Microsoft.Psi.Imaging; - - /// - /// DepthToColorConverter defines a component for converting a depth image from the Kinect - /// into a color image (where more distant objects are blue, and closer objects are reddish). - /// - public class DepthToColorConverter : ConsumerProducer, Shared> - { - /// - /// Initializes a new instance of the class. - /// - /// Pipeline this component is a part of. - public DepthToColorConverter(Pipeline pipeline) - : base(pipeline) - { - } - - /// - /// Pipeline callback for converting depth image to colored image. - /// - /// Depth image. - /// Pipeline information about current depthImage sample. - protected override void Receive(Shared depthImage, Envelope e) - { - using (var colorImageDest = ImagePool.GetOrCreate(depthImage.Resource.Width, depthImage.Resource.Height, Imaging.PixelFormat.BGR_24bpp)) - { - unsafe - { - ushort maxDepth = ushort.MaxValue; - ushort minDepth = 0; - - Parallel.For(0, depthImage.Resource.Height, iy => - { - ushort* src = (ushort*)((byte*)depthImage.Resource.ImageData.ToPointer() + (iy * depthImage.Resource.Stride)); - byte* dst = (byte*)colorImageDest.Resource.ImageData.ToPointer() + (iy * colorImageDest.Resource.Stride); - - for (int ix = 0; ix < depthImage.Resource.Width; ix++) - { - ushort depth = *src; - - // short adaptation - int normalizedDepth = (depth >= minDepth && depth <= maxDepth) ? (depth * 1024 / 8000) : 0; - dst[0] = (byte)this.Saturate(384 - (int)Math.Abs(normalizedDepth - 256)); - dst[1] = (byte)this.Saturate(384 - (int)Math.Abs(normalizedDepth - 512)); - dst[2] = (byte)this.Saturate(384 - (int)Math.Abs(normalizedDepth - 768)); - - dst += 3; - src += 1; - } - }); - } - - this.Out.Post(colorImageDest, e.OriginatingTime); - } - } - - /// - /// Simple saturate (clamp between 0..255) helper. - /// - /// Value to saturate. - /// Clamped color value. - private float Saturate(int value) - { - return Math.Max(0f, Math.Min(255, value)); - } - } -} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/IKinectSensor.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/IKinectSensor.cs deleted file mode 100644 index 9d8c62cd..00000000 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/IKinectSensor.cs +++ /dev/null @@ -1,62 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Kinect -{ - using System.Collections.Generic; - using Microsoft.Psi; - using Microsoft.Psi.Audio; - using Microsoft.Psi.Calibration; - using Microsoft.Psi.Imaging; - - /// - /// IKinectSensor defines the interface used to interact with the Kinect. - /// - public interface IKinectSensor - { - /// - /// Gets an emitter that emits a stream of KinectBody samples. - /// - Emitter> Bodies { get; } - - /// - /// Gets an emitter that emits a stream of image samples for the Kinect's color camera. - /// - Emitter> ColorImage { get; } - - /// - /// Gets an emitter that emits a stream of image samples for the Kinect's depth camera. - /// - Emitter> DepthImage { get; } - - /// - /// Gets an emitter that emits a stream of image samples for the Kinect's infrared feed. - /// - Emitter> InfraredImage { get; } - - /// - /// Gets an emitter that emits a stream of image samples for the Kinect's long exposure infrared feed. - /// - Emitter> LongExposureInfraredImage { get; } - - /// - /// Gets an emitter that emits a stream of depth device calibration info objects for the Kinect. - /// - Emitter DepthDeviceCalibrationInfo { get; } - - /// - /// Gets an emitter that emits a stream of AudioBuffer samples from the Kinect. - /// - Emitter Audio { get; } - - /// - /// Gets an emitter that emits a stream of KinectAudioBeamInfo samples from the Kinect. - /// - Emitter AudioBeamInfo { get; } - - /// - /// Gets an emitter that emits a stream of IList.ulong samples from the Kinect. - /// - Emitter> AudioBodyCorrelations { get; } - } -} \ No newline at end of file diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectBody.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectBody.cs index 2cd585fb..31362325 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectBody.cs +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectBody.cs @@ -4,6 +4,9 @@ namespace Microsoft.Psi.Kinect { using System.Collections.Generic; + using System.Numerics; + using MathNet.Numerics.LinearAlgebra; + using MathNet.Spatial.Euclidean; using Microsoft.Kinect; /// @@ -11,76 +14,181 @@ namespace Microsoft.Psi.Kinect /// public class KinectBody { - private static int jointCount = Body.JointCount; + private static readonly CoordinateSystem KinectBasis = new CoordinateSystem(default, UnitVector3D.ZAxis, UnitVector3D.XAxis, UnitVector3D.YAxis); + private static readonly CoordinateSystem KinectBasisInverse = KinectBasis.Invert(); /// - /// Gets the number of joints in body's skeleton. + /// Gets the bone relationships. /// - public int JointCount => jointCount; + public static List<(JointType ChildJoint, JointType ParentJoint)> Bones { get; } = new List<(JointType, JointType)> + { + // Spine and head + (JointType.SpineMid, JointType.SpineBase), + (JointType.SpineShoulder, JointType.SpineMid), + (JointType.Neck, JointType.SpineShoulder), + (JointType.Head, JointType.Neck), + + // Left arm + (JointType.ShoulderLeft, JointType.SpineShoulder), + (JointType.ElbowLeft, JointType.ShoulderLeft), + (JointType.WristLeft, JointType.ElbowLeft), + (JointType.HandLeft, JointType.WristLeft), + (JointType.HandTipLeft, JointType.HandLeft), + (JointType.ThumbLeft, JointType.WristLeft), + + // Right arm + (JointType.ShoulderRight, JointType.SpineShoulder), + (JointType.ElbowRight, JointType.ShoulderRight), + (JointType.WristRight, JointType.ElbowRight), + (JointType.HandRight, JointType.WristRight), + (JointType.HandTipRight, JointType.HandRight), + (JointType.ThumbRight, JointType.WristRight), + + // Left leg + (JointType.HipLeft, JointType.SpineBase), + (JointType.KneeLeft, JointType.HipLeft), + (JointType.AnkleLeft, JointType.KneeLeft), + (JointType.FootLeft, JointType.AnkleLeft), + + // Right leg + (JointType.HipRight, JointType.SpineBase), + (JointType.KneeRight, JointType.HipRight), + (JointType.AnkleRight, JointType.KneeRight), + (JointType.FootRight, JointType.AnkleRight), + }; /// - /// Gets or sets the clipped edges. + /// Gets the clipped edges. /// - public FrameEdges ClippedEdges { get; set; } + public FrameEdges ClippedEdges { get; private set; } /// /// Gets or sets the floor's clip plane. /// - public Vector4 FloorClipPlane { get; set; } + public Microsoft.Kinect.Vector4 FloorClipPlane { get; set; } /// - /// Gets or sets confidence in position/pose of left hand. + /// Gets confidence in position/pose of left hand. /// - public TrackingConfidence HandLeftConfidence { get; set; } + public TrackingConfidence HandLeftConfidence { get; private set; } /// - /// Gets or sets state of left hand. + /// Gets state of left hand. /// - public HandState HandLeftState { get; set; } + public HandState HandLeftState { get; private set; } /// - /// Gets or sets confidence in position/pose of right hand. + /// Gets confidence in position/pose of right hand. /// - public TrackingConfidence HandRightConfidence { get; set; } + public TrackingConfidence HandRightConfidence { get; private set; } /// - /// Gets or sets state of right hand. + /// Gets state of right hand. /// - public HandState HandRightState { get; set; } + public HandState HandRightState { get; private set; } /// - /// Gets or sets a value indicating whether the body is restricted. + /// Gets a value indicating whether the body is restricted. /// - public bool IsRestricted { get; set; } + public bool IsRestricted { get; private set; } /// - /// Gets or sets a value indicating whether the body is tracked. + /// Gets a value indicating whether the body is tracked. /// - public bool IsTracked { get; set; } + public bool IsTracked { get; private set; } /// - /// Gets or sets the joint orientations. + /// Gets the joint information. /// - public Dictionary JointOrientations { get; set; } + public Dictionary Joints { get; } = + new Dictionary(); /// - /// Gets or sets the joints. + /// Gets the lean point. /// - public Dictionary Joints { get; set; } + public Point2D Lean { get; private set; } /// - /// Gets or sets the lean point. + /// Gets the lean tracking state. /// - public PointF Lean { get; set; } + public TrackingState LeanTrackingState { get; private set; } /// - /// Gets or sets the lean tracking state. + /// Gets the body's tracking ID. /// - public TrackingState LeanTrackingState { get; set; } + public ulong TrackingId { get; private set; } /// - /// Gets or sets the body's tracking ID. + /// Populate this body representation with new joint and tracking information. /// - public ulong TrackingId { get; set; } + /// The body from the Kinect sensor from which to populate this body with information. + public void UpdateFrom(Body body) + { + this.TrackingId = body.TrackingId; + this.ClippedEdges = body.ClippedEdges; + this.HandLeftConfidence = body.HandLeftConfidence; + this.HandLeftState = body.HandLeftState; + this.HandRightConfidence = body.HandRightConfidence; + this.HandRightState = body.HandRightState; + this.IsRestricted = body.IsRestricted; + this.IsTracked = body.IsTracked; + this.Lean = new Point2D(body.Lean.X, body.Lean.Y); + this.LeanTrackingState = body.LeanTrackingState; + + foreach (var jointType in body.Joints.Keys) + { + var joint = body.Joints[jointType]; + + CoordinateSystem kinectJointCS; + + if (body.JointOrientations.ContainsKey(jointType)) + { + kinectJointCS = this.CreateCoordinateSystem(joint.Position, body.JointOrientations[jointType].Orientation); + } + else + { + kinectJointCS = this.CreateCoordinateSystem(joint.Position, default); + } + + this.Joints[jointType] = (kinectJointCS, joint.TrackingState); + } + } + + /// + public override string ToString() + { + return $"ID: {this.TrackingId}"; + } + + private CoordinateSystem CreateCoordinateSystem(CameraSpacePoint position, Microsoft.Kinect.Vector4 quaternion) + { + Matrix kinectJointMatrix; + + if (quaternion == default) + { + kinectJointMatrix = Matrix.Build.DenseOfArray(new double[,] + { + { 1, 0, 0, position.X }, + { 0, 1, 0, position.Y }, + { 0, 0, 1, position.Z }, + { 0, 0, 0, 1 }, + }); + } + else + { + // Convert the quaternion into a System.Numerics matrix, and then create a MathNet matrix while including the position. + var jointRotation = Matrix4x4.CreateFromQuaternion(new System.Numerics.Quaternion(quaternion.X, quaternion.Y, quaternion.Z, quaternion.W)); + kinectJointMatrix = Matrix.Build.DenseOfArray(new double[,] + { + { jointRotation.M11, jointRotation.M21, jointRotation.M31, position.X }, + { jointRotation.M12, jointRotation.M22, jointRotation.M32, position.Y }, + { jointRotation.M13, jointRotation.M23, jointRotation.M33, position.Z }, + { 0, 0, 0, 1 }, + }); + } + + // Convert from Kinect to MathNet basis. + return new CoordinateSystem(KinectBasisInverse * kinectJointMatrix * KinectBasis); + } } } diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectExtensions.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectExtensions.cs deleted file mode 100644 index c4acc6ea..00000000 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectExtensions.cs +++ /dev/null @@ -1,472 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Kinect -{ - using System; - using System.Collections.Generic; - using System.IO; - using System.IO.Compression; - using System.Linq; - using MathNet.Numerics.LinearAlgebra; - using MathNet.Spatial.Euclidean; - using Microsoft.Kinect; - using Microsoft.Psi.Calibration; - using Microsoft.Psi.Imaging; - - /// - /// Implements stream operator methods for Kinect. - /// - public static class KinectExtensions - { - private static readonly CoordinateSystem KinectBasis = new CoordinateSystem(default, UnitVector3D.ZAxis, UnitVector3D.XAxis, UnitVector3D.YAxis); - private static readonly CoordinateSystem KinectBasisInverse = KinectBasis.Invert(); - - /// - /// Returns the position of a given joint in the body. - /// - /// The stream of kinect body. - /// The type of joint. - /// An optional delivery policy. - /// The joint position as a 3D point in Kinect camera space. - public static IProducer GetJointPosition(this IProducer source, JointType jointType, DeliveryPolicy deliveryPolicy = null) - { - return source.Select(kb => kb.Joints[jointType].Position.ToPoint3D(), deliveryPolicy); - } - - /// - /// Projects set of 2D image points into 3D. - /// - /// Tuple of depth image, list of points to project, and calibration information. - /// An optional delivery policy. - /// Returns a producer that generates a list of corresponding 3D points in Kinect camera space. - public static IProducer> ProjectTo3D( - this IProducer<(Shared, List, IDepthDeviceCalibrationInfo)> source, DeliveryPolicy<(Shared, List, IDepthDeviceCalibrationInfo)> deliveryPolicy = null) - { - var projectTo3D = new ProjectTo3D(source.Out.Pipeline); - source.PipeTo(projectTo3D, deliveryPolicy); - return projectTo3D; - } - - /// - /// Transforms a Kinect CameraSpacePoint to another coordinate system. - /// - /// Coordinate system to transform to. - /// Point in Kinect camera space. - /// Tranformed point in Kinect camera space. - public static CameraSpacePoint Transform(this CoordinateSystem cs, CameraSpacePoint cameraSpacePoint) - { - return cs.Transform(cameraSpacePoint.ToPoint3D()).ToCameraSpacePoint(); - } - - /// - /// Rebases the kinect body in a specified coordinate system. - /// - /// Body to transform. - /// Coordinate system to transform to. - /// The body rebased in the specified coordinate system. - /// The method rebases all the joints, including position and orientation, in the specified coordinate system. - public static KinectBody Rebase(this KinectBody kinectBody, CoordinateSystem cs) - { - var transformed = kinectBody.DeepClone(); - - foreach (JointType jointType in Enum.GetValues(typeof(JointType))) - { - // Create a CoordinateSystem from the joint - CoordinateSystem kinectJointCS = transformed.GetJointCoordinateSystem(jointType); - - // Transform by the given coordinate system - kinectJointCS = kinectJointCS.TransformBy(cs); - - // Convert position back to camera space point - if (transformed.Joints.ContainsKey(jointType)) - { - var joint = transformed.Joints[jointType]; - joint.Position = kinectJointCS.Origin.ToCameraSpacePoint(); - transformed.Joints[jointType] = joint; - } - - // Convert rotation back to Kinect joint orientation - if (transformed.JointOrientations.ContainsKey(jointType)) - { - var rot = kinectJointCS.FromMathNetBasis().GetRotationSubMatrix(); - var q = MatrixToQuaternion(rot); - JointOrientation jointOrientation = transformed.JointOrientations[jointType]; - jointOrientation.Orientation.X = q.X; - jointOrientation.Orientation.Y = q.Y; - jointOrientation.Orientation.Z = q.Z; - jointOrientation.Orientation.W = q.W; - transformed.JointOrientations[jointType] = jointOrientation; - } - } - - return transformed; - } - - /// - /// Creates a coordinate system from a given Kinect joint. - /// - /// Kinect body containing the joint. - /// Which joint to create a coordinate system from. - /// Coordinate system capturing the given joint's orientation and position. - public static CoordinateSystem GetJointCoordinateSystem(this KinectBody kinectBody, JointType jointType) - { - if (!kinectBody.Joints.ContainsKey(jointType)) - { - throw new Exception($"Cannot create a coordinate system out of non-existent joint: {jointType}"); - } - - // Create a CoordinateSystem, starting from the Kinect's defined basis - CoordinateSystem kinectJointCS = new CoordinateSystem(); - - // Get the orientation as a rotation - if (kinectBody.JointOrientations.ContainsKey(jointType)) - { - var jointOrientation = kinectBody.JointOrientations[jointType].Orientation; - kinectJointCS = kinectJointCS.SetRotationSubMatrix(QuaternionToMatrix(jointOrientation)).ToMathNetBasis(); - } - - // Get the position as a translation - var cameraSpacePoint = kinectBody.Joints[jointType].Position; - return kinectJointCS.SetTranslation(cameraSpacePoint.ToPoint3D().ToVector3D()); - } - - /// - /// Transforms the specified 3D point into a 2D point via the specified calibration. - /// - /// A stream of tuples containing the 3D point and calibration inforamtion. - /// An optional delivery policy. - /// A producer that generates the 2D transformed points. - public static IProducer ToColorSpace(this IProducer<(Point3D, IDepthDeviceCalibrationInfo)> source, DeliveryPolicy<(Point3D, IDepthDeviceCalibrationInfo)> deliveryPolicy = null) - { - return source.Select( - m => - { - var (point3D, calibration) = m; - if (calibration != default(IDepthDeviceCalibrationInfo)) - { - return calibration.ToColorSpace(point3D); - } - else - { - return default(Point2D?); - } - }, - deliveryPolicy).Where(p => p.HasValue, DeliveryPolicy.SynchronousOrThrottle).Select(p => p.Value, DeliveryPolicy.SynchronousOrThrottle); - } - - /// - /// Converts points in from Kinect color space into 2D points. - /// - /// A stream of points in color space. - /// An optional delivery policy. - /// A producer that generates transformed 2D points. - public static IProducer ToPoint2D(this IProducer source, DeliveryPolicy deliveryPolicy = null) - { - return source.NullableSelect(p => new Point2D(p.X, p.Y), deliveryPolicy); - } - - /// - /// Converts points in from Kinect color space into 2D points. - /// - /// A stream of points in color space. - /// An optional delivery policy. - /// A producer that generates transformed 2D points. - public static IProducer ToPoint2D(this IProducer source, DeliveryPolicy deliveryPolicy = null) - { - return source.Select(p => new Point2D(p.X, p.Y), deliveryPolicy); - } - - /// - /// Returns the coordinate system corresponding to a tracked joint from the kinect body. - /// - /// The stream of Kinect body. - /// The joint to return. - /// An optional delivery policy. - /// A producer that generates the coordinate system for the specified joint if the joint is tracked. If the joint is not tracked, no message is posted on the return stream. - public static IProducer GetTrackedJointPosition(this IProducer source, JointType jointType, DeliveryPolicy deliveryPolicy = null) - { - return source.GetTrackedJointPositionOrDefault(jointType, deliveryPolicy).Where(cs => cs != null, DeliveryPolicy.SynchronousOrThrottle); - } - - /// - /// Returns the coordinate system corresponding to a tracked joint from the kinect body, or null if the specified joint is not currently tracked. - /// - /// The stream of Kinect body. - /// The joint to return. - /// An optional delivery policy. - /// A producer that generates the coordinate system for the specified joint if the joint is tracker, or null otherwise. - public static IProducer GetTrackedJointPositionOrDefault(this IProducer source, JointType jointType, DeliveryPolicy deliveryPolicy = null) - { - return source.Select( - body => - { - var joint = body.Joints.Values.FirstOrDefault(j => j.JointType == jointType && j.TrackingState == TrackingState.Tracked); - if (joint == default(Joint)) - { - return null; - } - else - { - var jointOrientation = body.JointOrientations.Values.FirstOrDefault(j => j.JointType == jointType); - var quaternion = new Quaternion(jointOrientation.Orientation.W, jointOrientation.Orientation.X, jointOrientation.Orientation.Y, jointOrientation.Orientation.Z); - var euler = quaternion.ToEulerAngles(); - var cs = CoordinateSystem.Rotation(euler.Gamma, euler.Beta, euler.Alpha); - return cs.TransformBy(CoordinateSystem.Translation(new Vector3D(joint.Position.X, joint.Position.Y, joint.Position.Z))).ToMathNetBasis(); - } - }, deliveryPolicy); - } - - /// - /// Converts a point from Kinect camera space to a 3D MathNet point. - /// - /// The Kinect camera space point to convert. - /// The corresponding 3D point (in MathNet basis). - public static Point3D ToPoint3D(this CameraSpacePoint cameraSpacePoint) - { - return new Point3D(cameraSpacePoint.Z, cameraSpacePoint.X, cameraSpacePoint.Y); - } - - /// - /// Converts points from Kinect camera space to 3D MathNet points. - /// - /// Stream of Kinect camera space points. - /// An optional delivery policy. - /// A producer that generates the corresponding 3D points (in MathNet basis). - public static IProducer ToPoint3D(this IProducer source, DeliveryPolicy deliveryPolicy = null) - { - return source.Select(p => ToPoint3D(p), deliveryPolicy); - } - - /// - /// Converts a 3D MathNet point to a Kinect camera space point. - /// - /// The 3D point to convert. - /// The corresponding Kinect camera space point. - public static CameraSpacePoint ToCameraSpacePoint(this Point3D point) - { - return new CameraSpacePoint() - { - X = (float)point.Y, - Y = (float)point.Z, - Z = (float)point.X, - }; - } - - /// - /// Converts 3D points to Kinect camera space points. - /// - /// Stream of 3D points to convert. - /// An optional delivery policy. - /// A producer that generates the corresponding Kinect camera space points. - public static IProducer ToCameraSpacePoint(this IProducer point, DeliveryPolicy deliveryPolicy = null) - { - return point.Select(p => ToCameraSpacePoint(p), deliveryPolicy); - } - - /// - /// Compresses a list of Kinect camera space points. - /// - /// Stream of list of Kinect camera space points. - /// An optional delivery policy. - /// A producer that generates a compressed byte array representation of the given Kinect camera space points. - public static IProducer GZipCompressImageProjection(this IProducer cameraSpacePoints, DeliveryPolicy deliveryPolicy = null) - { - var memoryStream = new MemoryStream(); - var memoryStreamLo = new MemoryStream(); - var memoryStreamHi = new MemoryStream(); - byte[] buffer = null; - return cameraSpacePoints.Select( - pointArray => - { - var flatPointList = new List(); - foreach (var cp in pointArray) - { - flatPointList.Add(cp.X); - flatPointList.Add(cp.Y); - flatPointList.Add(cp.Z); - } - - if (buffer == null) - { - buffer = new byte[flatPointList.Count * 4]; - } - - Buffer.BlockCopy(flatPointList.ToArray(), 0, buffer, 0, buffer.Length); - memoryStream.Seek(0, SeekOrigin.Begin); - using (var compressedStream = new GZipStream(memoryStream, CompressionLevel.Optimal, true)) - { - compressedStream.Write(buffer, 0, buffer.Length); - } - - var output = new byte[memoryStream.Position]; - memoryStream.Seek(0, SeekOrigin.Begin); - memoryStream.Read(output, 0, output.Length); - return output; - }, deliveryPolicy); - } - - /// - /// Uncompresses a list of Kinect 3D points. - /// - /// A stream containing a compressed representation of Kinect camera space points. - /// An optional delivery policy. - /// A producer that generates the corresponding list of 3D points. - public static IProducer GZipUncompressImageProjection(this IProducer compressedBytes, DeliveryPolicy deliveryPolicy = null) - { - var buffer = new byte[1920 * 1080 * 12]; - return compressedBytes.Select( - bytes => - { - using (var compressedStream = new GZipStream(new MemoryStream(bytes), CompressionMode.Decompress)) - { - compressedStream.Read(buffer, 0, buffer.Length); - } - - var floatArray = new float[buffer.Length / 4]; - Buffer.BlockCopy(buffer, 0, floatArray, 0, buffer.Length); - - List pointList = new List(); - for (int i = 0; i < floatArray.Length; i += 3) - { - pointList.Add(new CameraSpacePoint() - { - X = floatArray[i], - Y = floatArray[i + 1], - Z = floatArray[i + 2], - }); - } - - return pointList.ToArray(); - }, deliveryPolicy); - } - - /// - /// Converts a rotation matrix to a quaternion. - /// - /// Rotation matrix to convert. - /// Quaternion that represents the rotation. - // Derived from: - // http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToQuaternion/index.htm - public static Vector4 MatrixToQuaternion(Matrix matrix) - { - Vector4 v; - float trace = (float)(1.0 + matrix[0, 0] + matrix[1, 1] + matrix[2, 2]); - if (trace > 0) - { - var s = Math.Sqrt(trace) * 2.0; - v.X = (float)((matrix[2, 1] - matrix[1, 2]) / s); - v.Y = (float)((matrix[0, 2] - matrix[2, 0]) / s); - v.Z = (float)((matrix[1, 0] - matrix[0, 1]) / s); - v.W = (float)(s / 4.0); - } - else if ((matrix[0, 0] > matrix[1, 1]) && (matrix[0, 0] > matrix[2, 2])) - { - var s = Math.Sqrt(1.0 + matrix[0, 0] - matrix[1, 1] - matrix[2, 2]) * 2.0; - v.X = (float)(s / 4.0); - v.Y = (float)((matrix[0, 1] + matrix[1, 0]) / s); - v.Z = (float)((matrix[0, 2] + matrix[2, 0]) / s); - v.W = (float)((matrix[2, 1] - matrix[1, 2]) / s); - } - else if (matrix[1, 1] > matrix[2, 2]) - { - var s = Math.Sqrt(1.0 + matrix[1, 1] - matrix[0, 0] - matrix[2, 2]) * 2.0; - v.X = (float)((matrix[0, 1] + matrix[1, 0]) / s); - v.Y = (float)(s / 4.0); - v.Z = (float)((matrix[1, 2] + matrix[2, 1]) / s); - v.W = (float)((matrix[0, 2] - matrix[2, 0]) / s); - } - else - { - var s = Math.Sqrt(1.0 + matrix[2, 2] - matrix[0, 0] - matrix[1, 1]) * 2.0; - v.X = (float)((matrix[0, 2] + matrix[2, 0]) / s); - v.Y = (float)((matrix[1, 2] + matrix[2, 1]) / s); - v.Z = (float)(s / 4.0); - v.W = (float)((matrix[1, 0] - matrix[0, 1]) / s); - } - - return v; - } - - /// - /// Converts a quaternion into an axis/angle representation. - /// - /// Quaternion to convert. - /// Axis angle representation corresponding to the quaternion. - internal static Vector4 QuaternionAsAxisAngle(Vector4 quaternion) - { - Vector4 v; - float len = (float)Math.Sqrt(quaternion.X * quaternion.X + quaternion.Y * quaternion.Y + quaternion.Z * quaternion.Z); - v.X = quaternion.X / len; - v.Y = quaternion.Y / len; - v.Z = quaternion.Z / len; - v.W = 2.0f * (float)Math.Atan2(len, quaternion.W); - return v; - } - - /// - /// Converts a quaternion into a matrix. - /// - /// Quaternion to convert. - /// Rotation matrix corresponding to the quaternion. - internal static Matrix QuaternionToMatrix(Vector4 quaternion) - { - var s = (float)Math.Sqrt(quaternion.X * quaternion.X + quaternion.Y * quaternion.Y + quaternion.Z * quaternion.Z + quaternion.W * quaternion.W); - - if (s <= float.Epsilon) - { - return CoordinateSystem.CreateIdentity(3); - } - - quaternion.X /= s; - quaternion.Y /= s; - quaternion.Z /= s; - quaternion.W /= s; - var qij = quaternion.X * quaternion.Y; - var qik = quaternion.X * quaternion.Z; - var qir = quaternion.X * quaternion.W; - var qjk = quaternion.Y * quaternion.Z; - var qjr = quaternion.Y * quaternion.W; - var qkr = quaternion.Z * quaternion.W; - var qii = quaternion.X * quaternion.X; - var qjj = quaternion.Y * quaternion.Y; - var qkk = quaternion.Z * quaternion.Z; - var a00 = 1.0 - 2.0 * (qjj + qkk); - var a11 = 1.0 - 2.0 * (qii + qkk); - var a22 = 1.0 - 2.0 * (qii + qjj); - var a01 = 2.0 * (qij - qkr); - var a10 = 2.0 * (qij + qkr); - var a02 = 2.0 * (qik + qjr); - var a20 = 2.0 * (qik - qjr); - var a12 = 2.0 * (qjk - qir); - var a21 = 2.0 * (qjk + qir); - double[] data = - { - a00, a01, a02, - a10, a11, a12, - a20, a21, a22, - }; - return MathNet.Numerics.LinearAlgebra.CreateMatrix.Dense(3, 3, data); - } - - /// - /// Convert a given coordinate system from Kinect basis (Forward=Z, Left=X, Up=Y) to MathNet's asssumed basis (Forward=X, Left=Y, Up=Z). - /// - /// Input coordinate system in Kinect basis. - /// The coordinate system transformed into MathNet's basis. - internal static CoordinateSystem ToMathNetBasis(this CoordinateSystem cs) - { - return new CoordinateSystem(KinectBasisInverse * cs * KinectBasis); - } - - /// - /// Convert a given coordinate system to Kinect basis (Forward=Z, Left=X, Up=Y) from MathNet's asssumed basis (Forward=X, Left=Y, Up=Z). - /// - /// Input coordinate system in MathNet basis. - /// The coordinate system transformed into Kinect's basis. - internal static CoordinateSystem FromMathNetBasis(this CoordinateSystem cs) - { - return new CoordinateSystem(KinectBasis * cs * KinectBasisInverse); - } - } -} diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectInternalCalibration.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectInternalCalibration.cs index 1b8ab030..e8074bdc 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectInternalCalibration.cs +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectInternalCalibration.cs @@ -8,7 +8,9 @@ namespace Microsoft.Psi.Kinect using System; using System.Collections.Generic; using System.Xml.Serialization; + using MathNet.Numerics.LinearAlgebra; using Microsoft.Kinect; + using Microsoft.Psi.Calibration; internal class KinectInternalCalibration { @@ -17,94 +19,21 @@ namespace Microsoft.Psi.Kinect public const int colorImageWidth = 1920; public const int colorImageHeight = 1080; - public Matrix colorCameraMatrix = new Matrix(3, 3); - public Matrix colorLensDistortion = new Matrix(5, 1); - public Matrix depthCameraMatrix = new Matrix(3, 3); - public Matrix depthLensDistortion = new Matrix(5, 1); - public Matrix depthToColorTransform = new Matrix(4, 4); + public Matrix colorCameraMatrix = Matrix.Build.Dense(3, 3); + public Vector colorLensDistortion = Vector.Build.Dense(5); + public Matrix depthCameraMatrix = Matrix.Build.Dense(3, 3); + public Vector depthLensDistortion = Vector.Build.Dense(5); + public Matrix depthToColorTransform = Matrix.Build.Dense(4, 4); [XmlIgnoreAttribute] public bool silent = true; - /// - /// Converts a camera space point (3D) to the corresponding color space point (2D-RGB camera) - /// - /// The color space point to convert - /// The corresponding camera space point - public ColorSpacePoint ToColorSpacePoint(CameraSpacePoint cameraSpacePoint) - { - var colorPoint = new Matrix(4, 1); - var depthPoint = new Matrix(4, 1); - depthPoint[0] = (double)cameraSpacePoint.X; - depthPoint[1] = (double)cameraSpacePoint.Y; - depthPoint[2] = (double)cameraSpacePoint.Z; - depthPoint[3] = 1; - - colorPoint.Mult(this.depthToColorTransform, depthPoint); - - double colorX, colorY; - Project(this.colorCameraMatrix, this.colorLensDistortion, colorPoint[0], colorPoint[1], colorPoint[2], out colorX, out colorY); - ColorSpacePoint colorSpacePoint; - colorSpacePoint.X = (float)colorX; - colorSpacePoint.Y = (float)(colorImageHeight - colorY); - return colorSpacePoint; - } - - public void ToCameraSpacePoint(ColorSpacePoint colorSpacePoint, out CameraSpacePoint cameraOrigin3D, out CameraSpacePoint point3D) - { - Matrix c2d = new Matrix(); - c2d.Inverse(depthToColorTransform); - - var cameraOrigin = new Matrix(4, 1); - cameraOrigin[0] = 0; - cameraOrigin[1] = 0; - cameraOrigin[2] = 0; - cameraOrigin[3] = 1; - var cameraOriginIn3DSpace = new Matrix(4, 1); - cameraOriginIn3DSpace.Mult(c2d, cameraOrigin); - cameraOrigin3D.X = (float)cameraOriginIn3DSpace[0]; - cameraOrigin3D.Y = (float)cameraOriginIn3DSpace[1]; - cameraOrigin3D.Z = (float)cameraOriginIn3DSpace[2]; - - var pointInImage = new Matrix(4, 1); - double undistx; - double undisty; - Undistort(colorCameraMatrix, colorLensDistortion, colorSpacePoint.X, (colorImageHeight - colorSpacePoint.Y), out undistx, out undisty); - pointInImage[0] = undistx; - pointInImage[1] = undisty; - pointInImage[2] = 1; - pointInImage[3] = 1; - - var pointIn3DSpace = new Matrix(4, 1); - pointIn3DSpace.Mult(c2d, pointInImage); - point3D.X = (float)pointIn3DSpace[0]; - point3D.Y = (float)pointIn3DSpace[1]; - point3D.Z = (float)pointIn3DSpace[2]; - } - - - /// - /// Converts a cameras space point to a depth space point - /// - /// The color space point to convert - /// The corresponding camera space point - public DepthSpacePoint ToDepthSpacePoint(CameraSpacePoint cameraSpacePoint) - { - double depthX, depthY; - Project(this.depthCameraMatrix, this.depthLensDistortion, cameraSpacePoint.X, cameraSpacePoint.Y, cameraSpacePoint.Z, out depthX, out depthY); - DepthSpacePoint depthSpacePoint; - depthSpacePoint.X = (float)depthX; - depthSpacePoint.Y = (float)(depthImageHeight - depthY); - - return depthSpacePoint; - } - - public void RecoverCalibrationFromSensor(Microsoft.Kinect.KinectSensor kinectSensor) + internal void RecoverCalibrationFromSensor(Microsoft.Kinect.KinectSensor kinectSensor) { var stopWatch = new System.Diagnostics.Stopwatch(); stopWatch.Start(); - var objectPoints1 = new List(); + var objectPoints1 = new List>(); var colorPoints1 = new List(); var depthPoints1 = new List(); @@ -119,7 +48,7 @@ namespace Microsoft.Psi.Kinect kinectCameraPoint.Z = z; // use SDK's projection - // adjust Y to make RH cooridnate system that is a projection of Kinect 3D points + // adjust Y to make RH coordinate system that is a projection of Kinect 3D points var kinectColorPoint = kinectSensor.CoordinateMapper.MapCameraPointToColorSpace(kinectCameraPoint); kinectColorPoint.Y = colorImageHeight - kinectColorPoint.Y; var kinectDepthPoint = kinectSensor.CoordinateMapper.MapCameraPointToDepthSpace(kinectCameraPoint); @@ -131,7 +60,7 @@ namespace Microsoft.Psi.Kinect (kinectDepthPoint.Y >= 0) && (kinectDepthPoint.Y < depthImageHeight)) { n++; - var objectPoint = new Matrix(3, 1); + var objectPoint = Vector.Build.Dense(3); objectPoint[0] = kinectCameraPoint.X; objectPoint[1] = kinectCameraPoint.Y; objectPoint[2] = kinectCameraPoint.Z; @@ -152,39 +81,38 @@ namespace Microsoft.Psi.Kinect } } - colorCameraMatrix[0, 0] = 1000; //fx - colorCameraMatrix[1, 1] = 1000; //fy - colorCameraMatrix[0, 2] = colorImageWidth / 2; //cx - colorCameraMatrix[1, 2] = colorImageHeight / 2; //cy - colorCameraMatrix[2, 2] = 1; + this.colorCameraMatrix[0, 0] = 1000; //fx + this.colorCameraMatrix[1, 1] = 1000; //fy + this.colorCameraMatrix[0, 2] = colorImageWidth / 2; //cx + this.colorCameraMatrix[1, 2] = colorImageHeight / 2; //cy + this.colorCameraMatrix[2, 2] = 1; - var rotation = new Matrix(3, 1); - var translation = new Matrix(3, 1); - var colorError = CalibrateColorCamera(objectPoints1, colorPoints1, colorCameraMatrix, colorLensDistortion, rotation, translation, silent); - var rotationMatrix = Orientation.Rodrigues(rotation); + var rotation = Vector.Build.Dense(3); + var translation = Vector.Build.Dense(3); + var colorError = CalibrateColorCamera(objectPoints1, colorPoints1, colorCameraMatrix, colorLensDistortion, rotation, translation, this.silent); + var rotationMatrix = RotationExtensions.AxisAngleToMatrix(rotation); - depthToColorTransform = Matrix.Identity(4, 4); + this.depthToColorTransform = Matrix.Build.DenseIdentity(4, 4); for (int i = 0; i < 3; i++) { - depthToColorTransform[i, 3] = translation[i]; + this.depthToColorTransform[i, 3] = translation[i]; for (int j = 0; j < 3; j++) - depthToColorTransform[i, j] = rotationMatrix[i, j]; + this.depthToColorTransform[i, j] = rotationMatrix[i, j]; } - depthCameraMatrix[0, 0] = 360; //fx - depthCameraMatrix[1, 1] = 360; //fy - depthCameraMatrix[0, 2] = depthImageWidth / 2; //cx - depthCameraMatrix[1, 2] = depthImageHeight / 2; //cy - depthCameraMatrix[2, 2] = 1; + this.depthCameraMatrix[0, 0] = 360; //fx + this.depthCameraMatrix[1, 1] = 360; //fy + this.depthCameraMatrix[0, 2] = depthImageWidth / 2.0; //cx + this.depthCameraMatrix[1, 2] = depthImageHeight / 2.0; //cy + this.depthCameraMatrix[2, 2] = 1; var depthError = CalibrateDepthCamera(objectPoints1, depthPoints1, depthCameraMatrix, depthLensDistortion, silent); // check projections double depthProjectionError = 0; double colorProjectionError = 0; - var color = new Matrix(4, 1); - var testObjectPoint4 = new Matrix(4, 1); + var testObjectPoint4 = Vector.Build.Dense(4); for (int i = 0; i < n; i++) { var testObjectPoint = objectPoints1[i]; @@ -206,8 +134,8 @@ namespace Microsoft.Psi.Kinect testObjectPoint4[2] = testObjectPoint[2]; testObjectPoint4[3] = 1; - color.Mult(depthToColorTransform, testObjectPoint4); - color.Scale(1.0 / color[3]); // not necessary for this transform + var color = depthToColorTransform * testObjectPoint4; + color *= (1.0 / color[3]); // not necessary for this transform double colorU, colorV; Project(colorCameraMatrix, colorLensDistortion, color[0], color[1], color[2], out colorU, out colorV); @@ -221,7 +149,7 @@ namespace Microsoft.Psi.Kinect stopWatch.Stop(); - if (!silent) + if (!this.silent) { Console.WriteLine("FakeCalibration :"); Console.WriteLine("n = " + n); @@ -239,7 +167,7 @@ namespace Microsoft.Psi.Kinect } } - public static void Project(Matrix cameraMatrix, Matrix distCoeffs, double x, double y, double z, out double u, out double v) + private static void Project(Matrix cameraMatrix, Vector distCoeffs, double x, double y, double z, out double u, out double v) { double xp = x / z; double yp = y / z; @@ -259,7 +187,7 @@ namespace Microsoft.Psi.Kinect v = fy * ypp + cy; } - public static void Undistort(Matrix cameraMatrix, Matrix distCoeffs, double xin, double yin, out double xout, out double yout) + private static void Undistort(Matrix cameraMatrix, Vector distCoeffs, double xin, double yin, out double xout, out double yout) { float fx = (float)cameraMatrix[0, 0]; float fy = (float)cameraMatrix[1, 1]; @@ -269,7 +197,7 @@ namespace Microsoft.Psi.Kinect Undistort(fx, fy, cx, cy, kappa, xin, yin, out xout, out yout); } - public static void Undistort(float fx, float fy, float cx, float cy, float[] kappa, double xin, double yin, out double xout, out double yout) + private static void Undistort(float fx, float fy, float cx, float cy, float[] kappa, double xin, double yin, out double xout, out double yout) { // maps coords in undistorted image (xin, yin) to coords in distorted image (xout, yout) double x = (xin - cx) / fx; @@ -303,38 +231,14 @@ namespace Microsoft.Psi.Kinect yout = y / factor; } - public Microsoft.Kinect.PointF[] ComputeDepthFrameToCameraSpaceTable() - { - float fx = (float)depthCameraMatrix[0, 0]; - float fy = (float)depthCameraMatrix[1, 1]; - float cx = (float)depthCameraMatrix[0, 2]; - float cy = (float)depthCameraMatrix[1, 2]; - float[] kappa = new float[] { (float)depthLensDistortion[0], (float)depthLensDistortion[1] }; - - var table = new Microsoft.Kinect.PointF[depthImageWidth * depthImageHeight]; - - for (int framey = 0; framey < depthImageHeight; framey++) - for (int framex = 0; framex < depthImageWidth; framex++) - { - double xout, yout; - Undistort(fx, fy, cx, cy, kappa, framex, (depthImageHeight - framey), out xout, out yout); - - var point = new Microsoft.Kinect.PointF(); - point.X = (float)xout; - point.Y = (float)yout; - table[depthImageWidth * framey + framex] = point; - } - return table; - } - - static double CalibrateDepthCamera(List worldPoints, List imagePoints, Matrix cameraMatrix, Matrix distCoeffs, bool silent) + private static double CalibrateDepthCamera(List> worldPoints, List imagePoints, Matrix cameraMatrix, Vector distCoeffs, bool silent = true) { int nPoints = worldPoints.Count; // pack parameters into vector // parameters: fx, fy, cx, cy, k1, k2 = 6 parameters int nParameters = 6; - var parameters = new Matrix(nParameters, 1); + var parameters = Vector.Build.Dense(nParameters); { int pi = 0; @@ -349,9 +253,9 @@ namespace Microsoft.Psi.Kinect // size of our error vector int nValues = nPoints * 2; // each component (x,y) is a separate entry - LevenbergMarquardt.Function function = delegate (Matrix p) + LevenbergMarquardt.Function function = delegate (Vector p) { - var fvec = new Matrix(nValues, 1); + var fvec = Vector.Build.Dense(nValues); // unpack parameters int pi = 0; @@ -362,13 +266,13 @@ namespace Microsoft.Psi.Kinect double k1 = p[pi++]; double k2 = p[pi++]; - var K = Matrix.Identity(3, 3); + var K = Matrix.Build.DenseIdentity(3, 3); K[0, 0] = fx; K[1, 1] = fy; K[0, 2] = cx; K[1, 2] = cy; - var d = Matrix.Zero(5, 1); + var d = Vector.Build.Dense(5, 0); d[0] = k1; d[1] = k2; @@ -420,23 +324,23 @@ namespace Microsoft.Psi.Kinect return calibrate.RMSError; } - static double CalibrateColorCamera(List worldPoints, List imagePoints, Matrix cameraMatrix, Matrix distCoeffs, Matrix rotation, Matrix translation, bool silent) + private static double CalibrateColorCamera(List> worldPoints, List imagePoints, Matrix cameraMatrix, Vector distCoeffs, Vector rotation, Vector translation, bool silent = true) { int nPoints = worldPoints.Count; { - Matrix R, t; + Matrix R; + Vector t; DLT(cameraMatrix, distCoeffs, worldPoints, imagePoints, out R, out t); - var r = Orientation.RotationVector(R); - rotation.Copy(r); - translation.Copy(t); + var r = RotationExtensions.MatrixToAxisAngle(R); + r.CopyTo(rotation); + t.CopyTo(translation); } // pack parameters into vector // parameters: fx, fy, cx, cy, k1, k2, + 3 for rotation, 3 translation = 12 int nParameters = 12; - var parameters = new Matrix(nParameters, 1); - + var parameters = Vector.Build.Dense(nParameters); { int pi = 0; parameters[pi++] = cameraMatrix[0, 0]; // fx @@ -457,9 +361,9 @@ namespace Microsoft.Psi.Kinect // size of our error vector int nValues = nPoints * 2; // each component (x,y) is a separate entry - LevenbergMarquardt.Function function = delegate (Matrix p) + LevenbergMarquardt.Function function = delegate (Vector p) { - var fvec = new Matrix(nValues, 1); + var fvec = Vector.Build.Dense(nValues); // unpack parameters int pi = 0; @@ -471,38 +375,34 @@ namespace Microsoft.Psi.Kinect double k1 = p[pi++]; double k2 = p[pi++]; - var K = Matrix.Identity(3, 3); + var K = Matrix.Build.DenseIdentity(3, 3); K[0, 0] = fx; K[1, 1] = fy; K[0, 2] = cx; K[1, 2] = cy; - var d = Matrix.Zero(5, 1); + var d = Vector.Build.Dense(5, 0); d[0] = k1; d[1] = k2; - var r = new Matrix(3, 1); + var r = Vector.Build.Dense(3); r[0] = p[pi++]; r[1] = p[pi++]; r[2] = p[pi++]; - var t = new Matrix(3, 1); + var t = Vector.Build.Dense(3); t[0] = p[pi++]; t[1] = p[pi++]; t[2] = p[pi++]; - var R = Orientation.Rodrigues(r); - - - - var x = new Matrix(3, 1); + var R = RotationExtensions.AxisAngleToMatrix(r); int fveci = 0; for (int i = 0; i < worldPoints.Count; i++) { // transform world point to local camera coordinates - x.Mult(R, worldPoints[i]); - x.Add(t); + var x = R * worldPoints[i]; + x += t; // fvec_i = y_i - f(x_i) double u, v; @@ -559,11 +459,11 @@ namespace Microsoft.Psi.Kinect // This pose estimate will provide a good initial estimate for subsequent projector calibration. // Note for a full PnP solution we should probably refine with Levenberg-Marquardt. // DLT is described in Hartley and Zisserman p. 178 - static void DLT(Matrix cameraMatrix, Matrix distCoeffs, List worldPoints, List imagePoints, out Matrix R, out Matrix t) + private static void DLT(Matrix cameraMatrix, VectordistCoeffs, List> worldPoints, List imagePoints, out Matrix R, out Vectort) { int n = worldPoints.Count; - var A = Matrix.Zero(2 * n, 12); + var A = Matrix.Build.Dense(2 * n, 12); for (int j = 0; j < n; j++) { @@ -597,54 +497,52 @@ namespace Microsoft.Psi.Kinect } // Pcolumn is the eigenvector of ATA with the smallest eignvalue - var Pcolumn = new Matrix(12, 1); + var Pcolumn = Vector.Build.Dense(12); { - var ATA = new Matrix(12, 12); - ATA.MultATA(A, A); - - var V = new Matrix(12, 12); - var ww = new Matrix(12, 1); - ATA.Eig(V, ww); - - Pcolumn.CopyCol(V, 0); + var ATA = A.TransposeThisAndMultiply(A); + ATA.Evd().EigenVectors.Column(0).CopyTo(Pcolumn); } // reshape into 3x4 projection matrix - var P = new Matrix(3, 4); - P.Reshape(Pcolumn); + var P = Matrix.Build.Dense(3, 4); + { + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 4; j++) + { + P[i, j] = Pcolumn[i*4 + j]; + } + } + } - R = new Matrix(3, 3); + R = Matrix.Build.Dense(3, 3); for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) R[i, j] = P[i, j]; - if (R.Det3x3() < 0) + if (R.Determinant() < 0) { - R.Scale(-1); - P.Scale(-1); + R *= -1; + P *= -1; } // orthogonalize R { - var U = new Matrix(3, 3); - var V = new Matrix(3, 3); - var ww = new Matrix(3, 1); - R.SVD(U, ww, V); - R.MultAAT(U, V); + var svd = R.Svd(); + R = svd.U * svd.VT; } // determine scale factor - var RP = new Matrix(3, 3); + var RP = Matrix.Build.Dense(3, 3); for (int i = 0; i < 3; i++) for (int j = 0; j < 3; j++) RP[i, j] = P[i, j]; - double s = RP.Norm() / R.Norm(); + double s = RP.L2Norm() / R.L2Norm(); - t = new Matrix(3, 1); + t = Vector.Build.Dense(3); for (int i = 0; i < 3; i++) t[i] = P[i, 3]; - t.Scale(1.0 / s); + t *= (1.0 / s); } - } } diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectSensor.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectSensor.cs index a67973d2..cebf2bc5 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectSensor.cs +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/KinectSensor.cs @@ -6,7 +6,6 @@ namespace Microsoft.Psi.Kinect using System; using System.Collections.Generic; using System.Linq; - using MathNet.Numerics.LinearAlgebra; using MathNet.Spatial.Euclidean; using Microsoft.Kinect; using Microsoft.Psi; @@ -19,7 +18,7 @@ namespace Microsoft.Psi.Kinect /// /// Component that captures and streams information (images, depth, audio, bodies, etc.) from a Kinect One (v2) sensor. /// - public class KinectSensor : IKinectSensor, ISourceComponent, IDisposable + public class KinectSensor : ISourceComponent, IDisposable { private static List allDevices = null; private static WaveFormat audioFormat = WaveFormat.Create16kHz1ChannelIeeeFloat(); @@ -36,7 +35,6 @@ namespace Microsoft.Psi.Kinect private IList bodies = null; private List kinectBodies = null; - private int trackedBodies = 0; private byte[] audioBuffer = null; private IList bodyTrackingIds = null; private bool disposed = false; @@ -74,7 +72,7 @@ namespace Microsoft.Psi.Kinect this.Bodies = pipeline.CreateEmitter>(this, nameof(this.Bodies)); this.ColorImage = pipeline.CreateEmitter>(this, nameof(this.ColorImage)); this.RGBDImage = pipeline.CreateEmitter>(this, nameof(this.RGBDImage)); - this.DepthImage = pipeline.CreateEmitter>(this, nameof(this.DepthImage)); + this.DepthImage = pipeline.CreateEmitter>(this, nameof(this.DepthImage)); this.InfraredImage = pipeline.CreateEmitter>(this, nameof(this.InfraredImage)); this.LongExposureInfraredImage = pipeline.CreateEmitter>(this, nameof(this.LongExposureInfraredImage)); this.DepthDeviceCalibrationInfo = pipeline.CreateEmitter(this, nameof(this.DepthDeviceCalibrationInfo)); @@ -101,6 +99,7 @@ namespace Microsoft.Psi.Kinect di.FriendlyName = $"Kinect-v2"; var kinectSensor = Microsoft.Kinect.KinectSensor.GetDefault(); di.DeviceName = kinectSensor.UniqueKinectId; + di.DeviceId = 0; kinectSensor?.Close(); di.SerialNumber = string.Empty; di.Sensors = new List(); @@ -174,9 +173,9 @@ namespace Microsoft.Psi.Kinect public Emitter> RGBDImage { get; private set; } /// - /// Gets the current image from the depth camera. + /// Gets the current depth image from the depth camera. /// - public Emitter> DepthImage { get; private set; } + public Emitter> DepthImage { get; private set; } /// /// Gets the current image from the infrared camera. @@ -234,8 +233,9 @@ namespace Microsoft.Psi.Kinect { if (!this.disposed) { - this.multiFrameReader?.Dispose(); - this.audioBeamFrameReader?.Dispose(); + // Cast to IDisposable to suppress false CA2213 warning + ((IDisposable)this.multiFrameReader)?.Dispose(); + ((IDisposable)this.audioBeamFrameReader)?.Dispose(); this.kinectSensor?.Close(); this.disposed = true; } @@ -324,34 +324,6 @@ namespace Microsoft.Psi.Kinect var kinectInternalCalibration = new KinectInternalCalibration(); kinectInternalCalibration.RecoverCalibrationFromSensor(this.kinectSensor); - Matrix colorCameraMatrix = Matrix.Build.Dense(3, 3); - Matrix depthCameraMatrix = Matrix.Build.Dense(3, 3); - for (int i = 0; i < 3; i++) - { - for (int j = 0; j < 3; j++) - { - colorCameraMatrix[i, j] = kinectInternalCalibration.colorCameraMatrix[i, j]; - depthCameraMatrix[i, j] = kinectInternalCalibration.depthCameraMatrix[i, j]; - } - } - - Vector colorLensDistortion = Vector.Build.Dense(5); - Vector depthLensDistortion = Vector.Build.Dense(5); - for (int i = 0; i < 5; i++) - { - colorLensDistortion[i] = kinectInternalCalibration.colorLensDistortion[i]; - depthLensDistortion[i] = kinectInternalCalibration.depthLensDistortion[i]; - } - - Matrix depthToColorTransform = Matrix.Build.Dense(4, 4); - for (int i = 0; i < 4; i++) - { - for (int j = 0; j < 4; j++) - { - depthToColorTransform[i, j] = kinectInternalCalibration.depthToColorTransform[i, j]; - } - } - // Kinect uses a basis under the hood that assumes Forward=Z, Left=X, Up=Y. var kinectBasis = new CoordinateSystem(default, UnitVector3D.ZAxis, UnitVector3D.XAxis, UnitVector3D.YAxis); @@ -363,13 +335,13 @@ namespace Microsoft.Psi.Kinect this.depthDeviceCalibrationInfo = new DepthDeviceCalibrationInfo( this.kinectSensor.ColorFrameSource.FrameDescription.Width, this.kinectSensor.ColorFrameSource.FrameDescription.Height, - colorCameraMatrix, + kinectInternalCalibration.colorCameraMatrix, colorRadialDistortion, colorTangentialDistortion, - kinectBasis.Invert() * depthToColorTransform * kinectBasis, // Convert to MathNet + kinectBasis.Invert() * kinectInternalCalibration.depthToColorTransform * kinectBasis, // Convert to MathNet basis this.kinectSensor.DepthFrameSource.FrameDescription.Width, this.kinectSensor.DepthFrameSource.FrameDescription.Height, - depthCameraMatrix, + kinectInternalCalibration.depthCameraMatrix, depthRadialDistortion, depthTangentialDistortion, CoordinateSystem.CreateIdentity(4)); @@ -437,7 +409,7 @@ namespace Microsoft.Psi.Kinect FrameDescription depthFrameDescription = depthFrame.FrameDescription; using (KinectBuffer depthBuffer = depthFrame.LockImageBuffer()) { - using (var dest = ImagePool.GetOrCreate(depthFrameDescription.Width, depthFrameDescription.Height, Imaging.PixelFormat.Gray_16bpp)) + using (var dest = DepthImagePool.GetOrCreate(depthFrameDescription.Width, depthFrameDescription.Height)) { depthFrame.CopyFrameDataToIntPtr(dest.Resource.ImageData, (uint)(depthFrameDescription.Width * depthFrameDescription.Height * 2)); var time = this.pipeline.GetCurrentTimeFromElapsedTicks(depthFrame.RelativeTime.Ticks); @@ -564,12 +536,12 @@ namespace Microsoft.Psi.Kinect bodyFrame.GetAndRefreshBodyData(this.bodies); // compute the number of tracked bodies - this.trackedBodies = this.bodies.Count(b => b.IsTracked); + var numTrackedBodies = this.bodies.Count(b => b.IsTracked); - if (this.kinectBodies == null || this.kinectBodies.Count != this.trackedBodies) + if (this.kinectBodies == null || this.kinectBodies.Count != numTrackedBodies) { - this.kinectBodies = new List(this.trackedBodies); - for (int i = 0; i < this.trackedBodies; i++) + this.kinectBodies = new List(numTrackedBodies); + for (int i = 0; i < numTrackedBodies; i++) { this.kinectBodies.Add(new KinectBody()); } @@ -581,20 +553,8 @@ namespace Microsoft.Psi.Kinect { if (this.bodies[i].IsTracked) { + this.kinectBodies[ti].UpdateFrom(this.bodies[i]); this.kinectBodies[ti].FloorClipPlane = bodyFrame.FloorClipPlane; - this.kinectBodies[ti].ClippedEdges = this.bodies[i].ClippedEdges; - this.kinectBodies[ti].HandLeftConfidence = this.bodies[i].HandLeftConfidence; - this.kinectBodies[ti].HandLeftState = this.bodies[i].HandLeftState; - this.kinectBodies[ti].HandRightConfidence = this.bodies[i].HandRightConfidence; - this.kinectBodies[ti].HandRightState = this.bodies[i].HandRightState; - this.kinectBodies[ti].IsRestricted = this.bodies[i].IsRestricted; - this.kinectBodies[ti].IsRestricted = this.bodies[i].IsRestricted; - this.kinectBodies[ti].IsTracked = this.bodies[i].IsTracked; - this.kinectBodies[ti].JointOrientations = this.CloneDictionary(this.bodies[i].JointOrientations); - this.kinectBodies[ti].Joints = this.CloneDictionary(this.bodies[i].Joints); - this.kinectBodies[ti].Lean = this.bodies[i].Lean; - this.kinectBodies[ti].LeanTrackingState = this.bodies[i].LeanTrackingState; - this.kinectBodies[ti].TrackingId = this.bodies[i].TrackingId; ti++; } } diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Matrix.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Matrix.cs deleted file mode 100644 index 30ba78f0..00000000 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Matrix.cs +++ /dev/null @@ -1,1420 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Kinect -{ - using System; - using System.Threading.Tasks; - using MathNet.Numerics.LinearAlgebra; - -#pragma warning disable SA1600 - - /// - /// Defines a Matrix class. - /// - internal class Matrix - { - private static double z0; - private static double z1; - private static bool generate = false; - private static Random random = new Random(); - - private int m; - private int n; - private int mn; - private double[] data; - - /// - /// Initializes a new instance of the class. - /// - public Matrix() - { - } - - /// - /// Initializes a new instance of the class. - /// - /// Number of rows in matrix. - /// Number of columns in matrix. - public Matrix(int m, int n) - { - this.m = m; - this.n = n; - this.mn = this.m * this.n; - this.data = new double[this.mn]; - } - - /// - /// Initializes a new instance of the class. - /// - /// Matrix to copy from. - public Matrix(Matrix mat) - { - this.m = mat.m; - this.n = mat.n; - this.mn = this.m * this.n; - this.data = new double[this.mn]; - this.Copy(mat); - } - - /// - /// Gets or sets a column of values in the matrix. - /// - public double[][] ValuesByColumn - { - get - { - double[][] mat = new double[this.n][]; - - for (int j = 0; j < this.n; j++) - { - mat[j] = new double[this.m]; - } - - for (int i = 0; i < this.m; i++) - { - for (int j = 0; j < this.n; j++) - { - mat[j][i] = this[i, j]; - } - } - - return mat; - } - - set - { - double[][] mat = value; - this.n = mat.Length; - this.m = mat[0].Length; - this.mn = this.m * this.n; - this.data = new double[this.mn]; - for (int i = 0; i < this.m; i++) - { - for (int j = 0; j < this.n; j++) - { - this[i, j] = mat[j][i]; - } - } - } - } - - /// - /// Gets number of rows in the matrix. - /// - public int Rows - { - get { return this.m; } - } - - /// - /// Gets number of columns in the matrix. - /// - public int Cols - { - get { return this.n; } - } - - /// - /// Gets the total number of elements in the matrix. - /// - public int Size - { - get { return this.mn; } - } - - /// - /// Indexer into the matrix. - /// - /// Row to access. - /// Column to access. - /// The entry at specified row/column. - public double this[int i, int j] - { - get { return this.data[(i * this.n) + j]; } - set { this.data[(i * this.n) + j] = value; } - } - - /// - /// Indexer that treats the matrix as a flat array. - /// - /// Index to access. - /// Value at Ith element in the matrix. - public double this[int i] - { - get { return this.data[i]; } - set { this.data[i] = value; } - } - - /// - /// Returns an identity matrix. - /// - /// Number of rows in matrix. - /// Number of columns in matrix. - /// New identity matrix of size MxN. - public static Matrix Identity(int m, int n) - { - var mat = new Matrix(m, n); - mat.Identity(); - return mat; - } - - /// - /// Returns an zero matrix. - /// - /// Number of rows in matrix. - /// Number of columns in matrix. - /// New zero matrix of size MxN. - public static Matrix Zero(int m, int n) - { - var mat = new Matrix(m, n); - mat.Zero(); - return mat; - } - - /// - /// Copies a submatrix from matA into matB. - /// - /// Matrix to copy from. - /// Row offset to start copying from. - /// Column offset to start copying from. - /// Number of rows to copy. - /// Number of columns to copy. - /// Matrix to copy to. - /// Row offset to copy to. - /// Column offset to copy to. - public static void CopyRange(Matrix matA, int ai, int aj, int m, int n, Matrix matB, int bi, int bj) - { - for (int i = 0; i < m; i++) - { - for (int j = 0; j < n; j++) - { - matB[bi + i, bj + j] = matA[ai + i, aj + j]; - } - } - } - - /// - /// Copies a single row from matA to matB. - /// - /// Matrix to copy from. - /// Row to copy. - /// Matrix to copy to. - public static void CopyRow(Matrix matA, int row, Matrix matB) - { - for (int j = 0; j < matA.n; j++) - { - matB.data[j] = matA[row, j]; - } - } - - /// - /// Copies a single column from matA to matB. - /// - /// Matrix to copy from. - /// Column to copy. - /// Matrix to copy to. - public static void CopyCol(Matrix matA, int col, Matrix matB) - { - for (int i = 0; i < matA.m; i++) - { - matB.data[i] = matA[i, col]; - } - } - - /// - /// Copies the diagonal from matA to matB. - /// - /// Matrix to copy from. - /// Matrix to copy to. - public static void CopyDiag(Matrix matA, Matrix matB) - { - int maxd = (matA.m > matA.n) ? matA.m : matA.n; - for (int i = 0; i < maxd; i++) - { - matB.data[i] = matA[i, i]; - } - } - - // equals - public static bool Equals(Matrix matA, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - if (matA.data[i] != matB.data[i]) - { - return false; - } - } - - return true; - } - - public static void Reshape(Matrix matA, Matrix matB) - { - int k = 0; - for (int i = 0; i < matA.m; i++) - { - for (int j = 0; j < matA.n; j++) - { - matB.data[k++] = matA[i, j]; - } - } - } - - // change shape - public static void Transpose(Matrix matA, Matrix matB) - { - if (matA != matB) - { - for (int i = 0; i < matA.m; i++) - { - for (int j = 0; j < matA.n; j++) - { - matB[j, i] = matA[i, j]; - } - } - } - else - { // must be square - double s; - for (int i = 0; i < matA.m; i++) - { - for (int j = 0; j < i; j++) - { - s = matA[i, j]; - matA[i, j] = matA[j, i]; - matA[j, i] = s; - } - } - } - } - - // matrix-scalar ops - public static void Identity(Matrix matA) - { - for (int i = 0; i < matA.m; i++) - { - for (int j = 0; j < matA.n; j++) - { - if (i == j) - { - matA[i, j] = 1.0; - } - else - { - matA[i, j] = 0.0; - } - } - } - } - - public static void Set(Matrix matA, double c) - { - for (int i = 0; i < matA.mn; i++) - { - matA.data[i] = c; - } - } - - public static void Pow(Matrix matA, double c, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = Math.Pow(matA.data[i], c); - } - } - - public static void Exp(Matrix matA, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = Math.Exp(matA.data[i]); - } - } - - public static void Log(Matrix matA, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = Math.Log(matA.data[i]); - } - } - - public static void Abs(Matrix matA, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = Math.Abs(matA.data[i]); - } - } - - public static void Add(Matrix matA, double c, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = c + matA.data[i]; - } - } - - public static void Scale(Matrix matA, double c, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = c * matA.data[i]; - } - } - - public static void ScaleAdd(Matrix matA, double c, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] += c * matA.data[i]; - } - } - - public static void Reciprocal(Matrix matA, Matrix matB) - { - for (int i = 0; i < matA.mn; i++) - { - matB.data[i] = 1.0 / matA.data[i]; - } - } - - public static void Bound(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.mn; i++) - { - if (matC.data[i] < matA.data[i]) - { - matC.data[i] = matA.data[i]; - } - - if (matC.data[i] > matB.data[i]) - { - matC.data[i] = matB.data[i]; - } - } - } - - public static void Add(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.Size; i++) - { - matC.data[i] = matA.data[i] + matB.data[i]; - } - } - - public static void Sub(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.mn; i++) - { - matC.data[i] = matA.data[i] - matB.data[i]; - } - } - - public static void ElemMult(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.mn; i++) - { - matC.data[i] = matA.data[i] * matB.data[i]; - } - } - - public static void Divide(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.mn; i++) - { - matC.data[i] = matA.data[i] / matB.data[i]; - } - } - - public static double Dot(Matrix matA, Matrix matB) - { - double sum = 0.0; - for (int i = 0; i < matA.mn; i++) - { - sum += matA.data[i] * matB.data[i]; - } - - return sum; - } - - public static void Outer(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matC.m; i++) - { - for (int j = 0; j < matC.n; j++) - { - matC[i, j] = matA.data[i] * matB.data[j]; - } - } - } - - public static void Cross(Matrix matA, Matrix matB, Matrix matC) - { - matC.data[0] = (matA.data[1] * matB.data[2]) - (matA.data[2] * matB.data[1]); - matC.data[1] = (matA.data[2] * matB.data[0]) - (matA.data[0] * matB.data[2]); - matC.data[2] = (matA.data[0] * matB.data[1]) - (matA.data[1] * matB.data[0]); - } - - public static void Mult(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.m; i++) - { - for (int j = 0; j < matB.n; j++) - { - double sum = 0; - for (int k = 0; k < matA.n; k++) - { - sum += matA[i, k] * matB[k, j]; - } - - matC[i, j] = sum; - } - } - } - - public static void MultATA(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.n; i++) - { // matA.m - for (int j = 0; j < matB.n; j++) - { - double sum = 0; - for (int k = 0; k < matA.m; k++) - { // matA.n - sum += matA[k, i] * matB[k, j]; - } - - matC[i, j] = sum; - } - } - } - - public static void MultATAParallel(Matrix matA, Matrix matB, Matrix matC) - { - Parallel.For(0, matA.n, i => - { - for (int j = 0; j < matB.n; j++) - { - double sum = 0; - for (int k = 0; k < matA.m; k++) - { // matA.n - sum += matA[k, i] * matB[k, j]; - } - - matC[i, j] = sum; - } - }); - } - - public static Matrix ToMathNet(Matrix matA) - { - var matB = Matrix.Build.Dense(matA.Rows, matA.Cols); - for (int i = 0; i < matA.Rows; i++) - { - for (int j = 0; j < matA.Cols; j++) - { - matB[i, j] = matA[i, j]; - } - } - - return matB; - } - - public static void FromMathNet(Matrix matA, Matrix matB) - { - for (int i = 0; i < matA.RowCount; i++) - { - for (int j = 0; j < matA.ColumnCount; j++) - { - matB[i, j] = matA[i, j]; - } - } - } - - public static void FromMathNet(Vector matA, Matrix matB) - { - for (int i = 0; i < matA.Count; i++) - { - matB[i] = matA[i]; - } - } - - public static double Det3x3(Matrix matA) - { - double a = matA[0, 0]; - double b = matA[0, 1]; - double c = matA[0, 2]; - double d = matA[1, 0]; - double e = matA[1, 1]; - double f = matA[1, 2]; - double g = matA[2, 0]; - double h = matA[2, 1]; - double i = matA[2, 2]; - - return ((a * e * i) + (b * f * g) + (c * d * h)) - ((c * e * g) + (b * d * i) + (a * f * h)); - } - - public static void LeastSquares(Matrix x, Matrix matA, Matrix matB) - { - // use svd - // for overdetermined systems A*x = b - // x = V * diag(1/wj) * U T * b - // NRC p. 66 - int m = matA.m; - int n = matA.n; - - Matrix matU = new Matrix(m, n); - Matrix matV = new Matrix(n, n); - Matrix w = new Matrix(n, 1); - Matrix matW = new Matrix(n, n); - matA.SVD(matU, w, matV); - w.Reciprocal(); - matW.Diag(w); - - Matrix matM = new Matrix(n, n); - matM.Mult(matV, matW); - - Matrix matN = new Matrix(n, m); - matN.MultAAT(matM, matU); - - x.Mult(matN, matB); - } - - public static void Rot2D(Matrix matA, double theta) - { - // clockwise rotation - double s = Math.Sin(theta); - double c = Math.Cos(theta); - matA[0, 0] = c; - matA[1, 0] = s; - matA[0, 1] = -s; - matA[1, 1] = c; - } - - public static void RotEuler2Matrix(double x, double y, double z, Matrix matA) - { - double s1 = Math.Sin(x); - double s2 = Math.Sin(y); - double s3 = Math.Sin(z); - double c1 = Math.Cos(x); - double c2 = Math.Cos(y); - double c3 = Math.Cos(z); - - matA[0, 0] = c3 * c2; - matA[0, 1] = (-s3 * c1) + (c3 * s2 * s1); - matA[0, 2] = (s3 * s1) + (c3 * s2 * c1); - matA[1, 0] = s3 * c2; - matA[1, 1] = (c3 * c1) + (s3 * s2 * s1); - matA[1, 2] = (-c3 * s1) + (s3 * s2 * c1); - matA[2, 0] = -s2; - matA[2, 1] = c2 * s1; - matA[2, 2] = c2 * c1; - } - - public static void RotFromTo2Quat(Matrix x, Matrix y, Matrix q) - { - Matrix axis = new Matrix(3, 1); - axis.Cross(y, x); - axis.Normalize(); - - double angle = Math.Acos(x.Dot(y)); - double s = Math.Sin(angle / 2.0); - - q[0] = axis[0] * s; - q[1] = axis[1] * s; - q[2] = axis[2] * s; - q[3] = Math.Cos(angle / 2.0); - } - - public static void RotQuat2Matrix(Matrix q, Matrix matA) - { - double x = q[0]; - double y = q[1]; - double z = q[2]; - double w = q[3]; - - // Watt and Watt p. 363 - double s = 2.0 / Math.Sqrt((x * x) + (y * y) + (z * z) + (w * w)); - - double xs = x * s; - double ys = y * s; - double zs = z * s; - double wx = w * xs; - double wy = w * ys; - double wz = w * zs; - double xx = x * xs; - double xy = x * ys; - double xz = x * zs; - double yy = y * ys; - double yz = y * zs; - double zz = z * zs; - - matA[0, 0] = 1 - (yy + zz); - matA[0, 1] = xy + wz; - matA[0, 2] = xz - wy; - - matA[1, 0] = xy - wz; - matA[1, 1] = 1 - (xx + zz); - matA[1, 2] = yz + wx; - - matA[2, 0] = xz + wy; - matA[2, 1] = yz - wx; - matA[2, 2] = 1 - (xx + yy); - } - - public static void RotAxisAngle2Quat(Matrix axis, double angle, Matrix q) - { - q[0] = axis[0] * Math.Sin(angle / 2.0); - q[1] = axis[1] * Math.Sin(angle / 2.0); - q[2] = axis[2] * Math.Sin(angle / 2.0); - q[3] = Math.Cos(angle / 2.0); - } - - public static void RotMatrix2Quat(Matrix matA, Matrix q) - { - // Watt and Watt p. 362 - double trace = matA[0, 0] + matA[1, 1] + matA[2, 2] + 1.0; - q[3] = Math.Sqrt(trace); - - q[0] = (matA[2, 1] - matA[1, 2]) / (4 * q[3]); - q[1] = (matA[0, 2] - matA[2, 0]) / (4 * q[3]); - q[2] = (matA[1, 0] - matA[0, 1]) / (4 * q[3]); - - // not tested - } - - public static void RotMatrix2Euler(Matrix matA, ref double x, ref double y, ref double z) - { - y = -Math.Asin(matA[2, 0]); - double c = Math.Cos(y); - - double cost3 = matA[0, 0] / c; - double sint3 = matA[1, 0] / c; - z = Math.Atan2(sint3, cost3); - - double sint1 = matA[2, 1] / c; - double cost1 = matA[2, 2] / c; - x = Math.Atan2(sint1, cost1); - } - - public static void QuatMult(Matrix matA, Matrix matB, Matrix matC) - { - Matrix v1 = new Matrix(3, 1); - Matrix v2 = new Matrix(3, 1); - Matrix v3 = new Matrix(3, 1); - - v1[0] = matA[0]; - v1[1] = matA[1]; - v1[2] = matA[2]; - double s1 = matA[3]; - - v2[0] = matB[0]; - v2[1] = matB[1]; - v2[2] = matB[2]; - double s2 = matB[3]; - - v3.Cross(v1, v2); - - matC[0] = (s1 * v2[0]) + (s2 * v1[0]) + v3[0]; - matC[1] = (s1 * v2[1]) + (s2 * v1[1]) + v3[1]; - matC[2] = (s1 * v2[2]) + (s2 * v1[2]) + v3[2]; - matC[3] = (s1 * s2) - v1.Dot(v2); - } - - public static void QuatInvert(Matrix matA, Matrix matB) - { - matB[0] = -matA[0]; - matB[1] = -matA[1]; - matB[2] = -matA[2]; - matB[3] = matA[3]; // w - } - - public static void QuatRot(Matrix q, Matrix x, Matrix y) - { - // p. 361 Watt and Watt - Matrix p = new Matrix(4, 1); - p[0] = x[0]; - p[1] = x[1]; - p[2] = x[2]; - p[3] = 0.0; - - Matrix q1 = new Matrix(4, 1); - Matrix q2 = new Matrix(4, 1); - Matrix qi = new Matrix(4, 1); - - qi.QuatInvert(q); - - q1.QuatMult(q, p); - q2.QuatMult(q1, qi); - - y[0] = q2[0]; - y[1] = q2[1]; - y[2] = q2[2]; - } - - public static double L1distance(Matrix matA, Matrix matB) - { - double s = 0.0; - double d; - for (int i = 0; i < matA.mn; i++) - { - d = matA.data[i] - matB.data[i]; - s += Math.Abs(d); - } - - return s; - } - - public static double L2distance(Matrix matA, Matrix matB) - { - double s = 0.0; - double d; - for (int i = 0; i < matA.mn; i++) - { - d = matA.data[i] - matB.data[i]; - s += d * d; - } - - return Math.Sqrt(s); - } - - public static void Normalize(Matrix matA, Matrix matB) - { - matB.Scale(matA, 1.0 / matA.Norm()); - } - - public static Matrix GaussianSample(int m, int n) - { - var matA = new Matrix(m, n); - for (int i = 0; i < m; i++) - { - for (int j = 0; j < n; j++) - { - matA[i, j] = NextGaussianSample(0, 1); - } - } - - return matA; - } - - public static Matrix GaussianSample(Matrix mu, double sigma) - { - int m = mu.Rows; - int n = mu.Cols; - - var matA = new Matrix(m, n); - for (int i = 0; i < m; i++) - { - for (int j = 0; j < n; j++) - { - matA[i, j] = NextGaussianSample(mu[i, j], sigma); - } - } - - return matA; - } - - public static double NextGaussianSample(double mu, double sigma) - { - // Box-Muller transform - const double epsilon = double.MinValue; - const double tau = 2.0 * Math.PI; - - generate = !generate; - if (!generate) - { - return (z1 * sigma) + mu; - } - - double u1, u2; - do - { - u1 = random.NextDouble(); - u2 = random.NextDouble(); - } - while (u1 <= epsilon); - - z0 = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Cos(tau * u2); - z1 = Math.Sqrt(-2.0 * Math.Log(u1)) * Math.Sin(tau * u2); - return (z0 * sigma) + mu; - } - - public static void MultAAT(Matrix matA, Matrix matB, Matrix matC) - { - for (int i = 0; i < matA.m; i++) - { - for (int j = 0; j < matB.m; j++) - { - double sum = 0; - for (int k = 0; k < matA.n; k++) - { - sum += matA[i, k] * matB[j, k]; - } - - matC[i, j] = sum; - } - } - } - - public float[] AsFloatArray() - { - float[] array = new float[this.mn]; - for (int i = 0; i < this.mn; i++) - { - array[i] = (float)this.data[i]; - } - - return array; - } - - // copy - public void Copy(Matrix mat) - { - for (int i = 0; i < this.m; i++) - { - for (int j = 0; j < this.n; j++) - { - this[i, j] = mat[i, j]; - } - } - } - - public void Copy(int bi, int bj, Matrix mat) - { - CopyRange(mat, 0, 0, mat.Rows, mat.Cols, this, bi, bj); - } - - public void Copy(int bi, int bj, Matrix mat, int ai, int aj, int rows, int cols) - { - CopyRange(mat, ai, aj, rows, cols, this, bi, bj); - } - - public void CopyRow(Matrix matA, int row) - { - CopyRow(matA, row, this); - } - - public void CopyCol(Matrix matA, int col) - { - CopyCol(matA, col, this); - } - - public void CopyDiag(Matrix matA) - { - CopyDiag(matA, this); - } - - public void Diag(Matrix matA, Matrix d) - { - matA.Zero(); - for (int i = 0; i < matA.m; i++) - { - matA[i, i] = d[i]; - } - } - - public void Diag(Matrix d) - { - this.Diag(this, d); - } - - public bool Equals(Matrix matA) - { - return Equals(matA, this); - } - - public void Transpose(Matrix matA) - { - Transpose(matA, this); - } - - public void Transpose() - { - Transpose(this, this); - } - - public void Reshape(Matrix matA) - { - Reshape(matA, this); - } - - public void Identity() - { - Identity(this); - } - - public void Set(double c) - { - Set(this, c); - } - - public void Zero() - { - this.Set(0.0); - } - - public void Randomize() - { - System.Random rnd = new System.Random(); - for (int i = 0; i < this.mn; i++) - { - this.data[i] = rnd.NextDouble(); - } - } - - public void Linspace(double x0, double x1) - { - double dx = (x1 - x0) / (double)(this.mn - 1); - for (int i = 0; i < this.mn; i++) - { - this.data[i] = x0 + (dx * i); - } - } - - public void Pow(Matrix matA, double c) - { - Pow(matA, c, this); - } - - public void Pow(double c) - { - Pow(this, c, this); - } - - public void Exp(Matrix matA) - { - Exp(matA, this); - } - - public void Exp() - { - Exp(this, this); - } - - public void Log(Matrix matA) - { - Log(matA, this); - } - - public void Log() - { - Log(this, this); - } - - public void Abs(Matrix matA) - { - Abs(matA, this); - } - - public void Abs() - { - Abs(this, this); - } - - public void Add(Matrix matA, double c) - { - Add(matA, c, this); - } - - public void Add(double c) - { - Add(this, c, this); - } - - public void Scale(Matrix matA, double c) - { - Scale(matA, c, this); - } - - public void Scale(double c) - { - Scale(this, c, this); - } - - public void ScaleAdd(Matrix matA, double c) - { - ScaleAdd(matA, c, this); - } - - public void ScaleAdd(double c) - { - ScaleAdd(this, c, this); - } - - public void Reciprocal(Matrix matA) - { - Reciprocal(matA, this); - } - - public void Reciprocal() - { - Reciprocal(this, this); - } - - // limits data between elements of A and B - public void Bound(Matrix matA, Matrix matB) - { - Bound(matA, matB, this); - } - - // matrix-matrix elementwise ops - public void Add(Matrix matA, Matrix matB) - { - Add(matA, matB, this); - } - - public void Add(Matrix matB) - { - Add(this, matB, this); - } - - public void Sub(Matrix matA, Matrix matB) - { - Sub(matA, matB, this); - } - - public void Sub(Matrix matB) - { - Sub(this, matB, this); - } - - public void ElemMult(Matrix matA, Matrix matB) - { - ElemMult(matA, matB, this); - } - - public void ElemMult(Matrix matB) - { - ElemMult(this, matB, this); - } - - public void Divide(Matrix matA, Matrix matB) - { - Divide(matA, matB, this); - } - - public void Divide(Matrix matB) - { - Divide(this, matB, this); - } - - // vector ops - public double Dot(Matrix matB) - { - return Dot(this, matB); - } - - public void Outer(Matrix matA, Matrix matB) - { - Outer(matA, matB, this); - } - - public void Cross(Matrix matA, Matrix matB) - { - Cross(matA, matB, this); - } - - // matrix-matrix ops - public void Mult(Matrix matA, Matrix matB) - { - Mult(matA, matB, this); - } - - public void MultAAT(Matrix matA, Matrix matB) - { - MultAAT(matA, matB, this); - } - - public void MultATA(Matrix matA, Matrix matB) - { - MultATA(matA, matB, this); - } - - public void MultATAParallel(Matrix matA, Matrix matB) - { - MultATAParallel(matA, matB, this); - } - - public void Inverse(Matrix matA) - { - // invert A and store in this - var anet = ToMathNet(matA); - var inverse = anet.Inverse(); - FromMathNet(inverse, this); - } - - public double Det3x3() - { - return Det3x3(this); - } - - public void Eig(Matrix v, Matrix d) - { - var evd = ToMathNet(this).Evd(); - FromMathNet(evd.EigenVectors, v); - for (int i = 0; i < this.Rows; i++) - { - d[i] = evd.D[i, i]; - } - } - - public void Eig2x2(Matrix matA, Matrix v, Matrix matD) - { - double a = matA[0, 0]; - double b = matA[0, 1]; - double c = matA[1, 0]; - double d = matA[1, 1]; - - // solve det(A - l*I) = 0 for eigenvalues l - double s = Math.Sqrt(((a + d) * (a + d)) + (4 * ((b * c) - (a * d)))); - matD[0] = (a + d + s) / 2; - matD[1] = (a + d - s) / 2; - - // solve for eigenvectors v in (A - l*I)*v = 0 for each eigenvalue - // set v1 = 1.0 - double v0, n; - - // first eigenvector - v0 = (matD[0] - d) / c; - n = Math.Sqrt((v0 * v0) + 1); - - v[0, 0] = v0 / n; - v[1, 0] = 1.0 / n; - - // second eigenvector - v0 = (matD[1] - d) / c; - n = Math.Sqrt((v0 * v0) + 1); - - v[0, 1] = v0 / n; - v[1, 1] = 1.0 / n; - } - - public void Eig2x2(Matrix v, Matrix d) - { - this.Eig2x2(this, v, d); - } - - public void SVD(Matrix matU, Matrix w, Matrix matV) - { - var svd = ToMathNet(this).Svd(); - FromMathNet(svd.U, matU); - FromMathNet(svd.S, w); - FromMathNet(svd.VT.Transpose(), matV); - } - - public void LeastSquares(Matrix matA, Matrix matB) - { - LeastSquares(this, matA, matB); - } - - // rotation conversions - public void Rot2D(double theta) - { - Rot2D(this, theta); - } - - public void RotEuler2Matrix(double x, double y, double z) - { - RotEuler2Matrix(x, y, z, this); - } - - public void RotFromTo2Quat(Matrix x, Matrix y) - { - RotFromTo2Quat(x, y, this); - } - - public void RotQuat2Matrix(Matrix q) - { - RotQuat2Matrix(q, this); - } - - public void RotAxisAngle2Quat(Matrix axis, double angle) - { - RotAxisAngle2Quat(axis, angle, this); - } - - public void RotMatrix2Quat(Matrix matA) - { - RotMatrix2Quat(matA, this); - } - - public void RotMatrix2Euler(ref double x, ref double y, ref double z) - { - RotMatrix2Euler(this, ref x, ref y, ref z); - } - - // quaternion ops; quat is ((X, Y, Z), W) - public void QuatMult(Matrix matA, Matrix matB) - { - QuatMult(matA, matB, this); - } - - public void QuatInvert(Matrix matA) - { - QuatInvert(matA, this); - } - - public void QuatInvert() - { - QuatInvert(this, this); - } - - public void QuatRot(Matrix q, Matrix x) - { - QuatRot(q, x, this); - } - - // norms - public double Minimum(ref int argmin) - { - double min = this.data[0]; - int mini = 0; - for (int i = 1; i < this.mn; i++) - { - if (this.data[i] < min) - { - min = this.data[i]; - mini = i; - } - } - - argmin = mini; - return min; - } - - public double Maximum(ref int argmax) - { - double max = this.data[0]; - int maxi = 0; - for (int i = 1; i < this.mn; i++) - { - if (this.data[i] > max) - { - max = this.data[i]; - maxi = i; - } - } - - argmax = maxi; - return max; - } - - public double Norm() - { - double sum = 0; - for (int i = 0; i < this.mn; i++) - { - sum += this.data[i] * this.data[i]; - } - - return Math.Sqrt(sum); - } - - public double Sum() - { - double sum = 0; - for (int i = 0; i < this.mn; i++) - { - sum += this.data[i]; - } - - return sum; - } - - public double SumSquares() - { - double sum = 0; - for (int i = 0; i < this.mn; i++) - { - sum += this.data[i] * this.data[i]; - } - - return sum; - } - - public double Product() - { - double product = 1.0; - for (int i = 0; i < this.mn; i++) - { - product *= this.data[i]; - } - - return product; - } - - public double L1distance(Matrix matA) - { - return L1distance(matA, this); - } - - public double L2distance(Matrix matA) - { - return L2distance(matA, this); - } - - public void Normalize(Matrix matA) - { - Normalize(matA, this); - } - - public void Normalize() - { - Normalize(this, this); - } - - public double Magnitude() - { - double sum = 0; - for (int i = 0; i < this.mn; i++) - { - sum += this.data[i] * this.data[i]; - } - - return sum; - } - - public void NormalizeRows() - { - double sum; - for (int i = 0; i < this.m; i++) - { - sum = 0; - for (int j = 0; j < this.n; j++) - { - sum += this[i, j]; - } - - for (int j = 0; j < this.n; j++) - { - this[i, j] = this[i, j] / sum; - } - } - } - - public override string ToString() - { - string s = string.Empty; - - for (int i = 0; i < this.m; i++) - { - for (int j = 0; j < this.n; j++) - { - s += this[i, j].ToString(); - if (j < this.n - 1) - { - s += ", \t"; - } - } - - s += " \r\n"; - } - - return s; - } - } -#pragma warning restore SA1600 -} diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Microsoft.Psi.Kinect.Windows.csproj b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Microsoft.Psi.Kinect.Windows.csproj index 1a776b4b..e1ff74d3 100644 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Microsoft.Psi.Kinect.Windows.csproj +++ b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Microsoft.Psi.Kinect.Windows.csproj @@ -28,8 +28,12 @@ - - + + + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Orientation.cs b/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Orientation.cs deleted file mode 100644 index 173acf99..00000000 --- a/Sources/Kinect/Microsoft.Psi.Kinect.Windows/Orientation.cs +++ /dev/null @@ -1,171 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Kinect -{ - using System; - -#pragma warning disable SA1600 - internal class Orientation - { - public static Matrix Rodrigues(Matrix r) - { - // where r rotation vector, theta = norm(r), M = skew(r/theta) - // R = I + sin(theta) M + (1-cos(theta)) M M - double theta = r.Norm(); - - var matR = new Matrix(3, 3); - matR.Identity(); - - // if there is no rotation (theta == 0) return identity - if (theta == 0) - { - return matR; - } - - var rn = new Matrix(3, 1); - rn.Normalize(r); - - var matM = new Matrix(3, 3); - matM[0, 0] = 0; - matM[0, 1] = -rn[2]; - matM[0, 2] = rn[1]; - matM[1, 0] = rn[2]; - matM[1, 1] = 0; - matM[1, 2] = -rn[0]; - matM[2, 0] = -rn[1]; - matM[2, 1] = rn[0]; - matM[2, 2] = 0; - - var sinThetaM = new Matrix(3, 3); - sinThetaM.Scale(matM, Math.Sin(theta)); - matR.Add(sinThetaM); - - var matMM = new Matrix(3, 3); - matMM.Mult(matM, matM); - var cosThetaMM = new Matrix(3, 3); - cosThetaMM.Scale(matMM, 1 - Math.Cos(theta)); - matR.Add(cosThetaMM); - - return matR; - } - - // a port from http://www.euclideanspace.com/maths/geometry/rotations/conversions/matrixToAngle/index.htm - public static Matrix RotationVector(Matrix m) - { - double angle, x, y, z; // variables for result - - var v = new Matrix(3, 1); - - double epsilon = 0.01; // margin to allow for rounding errors - double epsilon2 = 0.1; // margin to distinguish between 0 and 180 degrees - - // optional check that input is pure rotation, 'isRotationMatrix' is defined at: - // http://www.euclideanspace.com/maths/algebra/matrix/orthogonal/rotation/ - // assert isRotationMatrix(m) : "not valid rotation matrix" ;// for debugging - if ((Math.Abs(m[0, 1] - m[1, 0]) < epsilon) - && (Math.Abs(m[0, 2] - m[2, 0]) < epsilon) - && (Math.Abs(m[1, 2] - m[2, 1]) < epsilon)) - { - // singularity found - // first check for identity matrix which must have +1 for all terms - // in leading diagonal and zero in other terms - if ((Math.Abs(m[0, 1] + m[1, 0]) < epsilon2) - && (Math.Abs(m[0, 2] + m[2, 0]) < epsilon2) - && (Math.Abs(m[1, 2] + m[2, 1]) < epsilon2) - && (Math.Abs(m[0, 0] + m[1, 1] + m[2, 2] - 3) < epsilon2)) - { - // this singularity is identity matrix so angle = 0 - // return new axisAngle(0, 1, 0, 0); // zero angle, arbitrary axis - v.Zero(); - return v; - } - - // otherwise this singularity is angle = 180 - angle = Math.PI; - double xx = (m[0, 0] + 1) / 2; - double yy = (m[1, 1] + 1) / 2; - double zz = (m[2, 2] + 1) / 2; - double xy = (m[0, 1] + m[1, 0]) / 4; - double xz = (m[0, 2] + m[2, 0]) / 4; - double yz = (m[1, 2] + m[2, 1]) / 4; - if ((xx > yy) && (xx > zz)) - { // m[0,0] is the largest diagonal term - if (xx < epsilon) - { - x = 0; - y = 0.7071; - z = 0.7071; - } - else - { - x = Math.Sqrt(xx); - y = xy / x; - z = xz / x; - } - } - else if (yy > zz) - { // m[1,1] is the largest diagonal term - if (yy < epsilon) - { - x = 0.7071; - y = 0; - z = 0.7071; - } - else - { - y = Math.Sqrt(yy); - x = xy / y; - z = yz / y; - } - } - else - { // m[2,2] is the largest diagonal term so base result on this - if (zz < epsilon) - { - x = 0.7071; - y = 0.7071; - z = 0; - } - else - { - z = Math.Sqrt(zz); - x = xz / z; - y = yz / z; - } - } - - // return axis angle - v[0] = x; - v[1] = y; - v[2] = z; - v.Scale(angle); - return v; - } - - // as we have reached here there are no singularities so we can handle normally - double s = Math.Sqrt(((m[2, 1] - m[1, 2]) * (m[2, 1] - m[1, 2])) - + ((m[0, 2] - m[2, 0]) * (m[0, 2] - m[2, 0])) - + ((m[1, 0] - m[0, 1]) * (m[1, 0] - m[0, 1]))); // used to normalise - if (Math.Abs(s) < 0.001) - { - s = 1; - } - - // prevent divide by zero, should not happen if matrix is orthogonal and should be - // caught by singularity test above, but I've left it in just in case - angle = Math.Acos((m[0, 0] + m[1, 1] + m[2, 2] - 1) / 2); - x = (m[2, 1] - m[1, 2]) / s; - y = (m[0, 2] - m[2, 0]) / s; - z = (m[1, 0] - m[0, 1]) / s; - - // return new axisAngle(angle, x, y, z); - v[0] = x; - v[1] = y; - v[2] = z; - v.Scale(angle); - return v; - } - } -#pragma warning restore SA1600 -} diff --git a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Mesh.cs b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Mesh.cs index a8fdc485..c1bb7913 100644 --- a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Mesh.cs +++ b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Mesh.cs @@ -47,19 +47,19 @@ namespace Test.Psi.Kinect /// /// Create mesh from depth map. /// - /// Depth map image. + /// Depth map image. /// Color data image. /// Kinect calibration. /// Mesh. - public static Mesh MeshFromDepthMap(Shared depthMap, Shared colorData, IDepthDeviceCalibrationInfo calib) + public static Mesh MeshFromDepthMap(Shared depthImage, Shared colorData, IDepthDeviceCalibrationInfo calib) { Mesh mesh = new Mesh(); - int width = depthMap.Resource.Width; - int height = depthMap.Resource.Height; + int width = depthImage.Resource.Width; + int height = depthImage.Resource.Height; mesh.Vertices = new Vertex[width * height]; bool[] vertexValid = new bool[width * height]; mesh.Faces = new Face[2 * (width - 1) * (height - 1)]; - byte[] depthData = depthMap.Resource.ReadBytes(depthMap.Resource.Size); + byte[] depthData = depthImage.Resource.ReadBytes(depthImage.Resource.Size); byte[] pixelData = colorData.Resource.ReadBytes(colorData.Resource.Size); int count = 0; unsafe @@ -68,7 +68,7 @@ namespace Test.Psi.Kinect { for (int j = 0; j < width; j++) { - ushort* src = (ushort*)((byte*)depthMap.Resource.ImageData.ToPointer() + (i * depthMap.Resource.Stride)) + j; + ushort* src = (ushort*)((byte*)depthImage.Resource.ImageData.ToPointer() + (i * depthImage.Resource.Stride)) + j; ushort depth = *src; Point2D pt = new Point2D(j, i); vertexValid[count] = (depth == 0) ? false : true; diff --git a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/MeshTests.cs b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/MeshTests.cs index 48349801..2ed99eb3 100644 --- a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/MeshTests.cs +++ b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/MeshTests.cs @@ -18,7 +18,7 @@ namespace Test.Psi.Kinect { private KinectSensor sensor; private IDepthDeviceCalibrationInfo depthDeviceCalibrationInfo = null; - private Shared lastImage = null; + private Shared lastImage = null; private Shared lastColor = null; private bool disposed = false; diff --git a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/QuaternionTest.cs b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/QuaternionTest.cs deleted file mode 100644 index ff4f0f05..00000000 --- a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/QuaternionTest.cs +++ /dev/null @@ -1,64 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Test.Psi.Kinect.Windows -{ - using System; - using MathNet.Spatial.Euclidean; - using MathNet.Spatial.Units; - using Microsoft.Kinect; - using Microsoft.VisualStudio.TestTools.UnitTesting; - - /// - /// Quaternion test. - /// - [TestClass] - [Ignore] - public class QuaternionTest : IDisposable - { - /// - public void Dispose() - { - this.Dispose(true); - GC.SuppressFinalize(this); - } - - /// - /// Very simple test to make sure that our quaternion math is correct. - /// This rotates 10 degrees around the Y axis via a quaternion and then - /// rotates the entire result by 90 degrees. After this the resulting quaternion - /// should be rotated 100 degrees around Y axis. - /// - [TestMethod] - [Timeout(60000)] - [Ignore] - public void TestQuaternion() - { - CoordinateSystem ncs = new CoordinateSystem(); - Vector3D v = new Vector3D(0.0, 1.0, 0.0); - ncs = ncs.RotateCoordSysAroundVector(v.Normalize(), Angle.FromDegrees(90.0 /* in LHS */)); - Vector4 q; - double axisX = 0.0; - double axisY = 1.0; - double axisZ = 0.0; - double sa = Math.Sin(-5.0 /*half angle in RHS*/ * 3.1415926 / 180.0); - double ca = Math.Cos(-5.0 /*half angle in RHS*/ * 3.1415926 / 180.0); - q.X = (float)(axisX * sa); - q.Y = (float)(axisY * sa); - q.Z = (float)(axisZ * sa); - q.W = (float)ca; - var rot = ncs.GetRotationSubMatrix(); - var qrot = Microsoft.Psi.Kinect.KinectExtensions.QuaternionToMatrix(q); - var qv = Microsoft.Psi.Kinect.KinectExtensions.MatrixToQuaternion(rot * qrot); - Vector4 axisAngle = Microsoft.Psi.Kinect.KinectExtensions.QuaternionAsAxisAngle(qv); - } - - /// - /// Dispose. - /// - /// Disposing. - protected virtual void Dispose(bool disposing) - { - } - } -} diff --git a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Test.Psi.Kinect.Windows.x64.csproj b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Test.Psi.Kinect.Windows.x64.csproj index ba32e873..25d5c7be 100644 --- a/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Test.Psi.Kinect.Windows.x64.csproj +++ b/Sources/Kinect/Test.Psi.Kinect.Windows.x64/Test.Psi.Kinect.Windows.x64.csproj @@ -1,20 +1,17 @@  net472 - false - false + ../../../Build/Test.Psi.ruleset Library - ../../../Build/Test.Psi.ruleset true true - ../../../Build/Test.Psi.ruleset true true @@ -261,8 +258,12 @@ - - + + all + runtime; build; native; contentfiles; analyzers + + + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Sources/Language/Microsoft.Psi.Language/Microsoft.Psi.Language.csproj b/Sources/Language/Microsoft.Psi.Language/Microsoft.Psi.Language.csproj index bdeca51a..216b57fa 100644 --- a/Sources/Language/Microsoft.Psi.Language/Microsoft.Psi.Language.csproj +++ b/Sources/Language/Microsoft.Psi.Language/Microsoft.Psi.Language.csproj @@ -29,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Media/Microsoft.Psi.Media.Linux/LinuxVideoInterop.cs b/Sources/Media/Microsoft.Psi.Media.Linux/LinuxVideoInterop.cs index 4cdd9282..87d0b1ab 100644 --- a/Sources/Media/Microsoft.Psi.Media.Linux/LinuxVideoInterop.cs +++ b/Sources/Media/Microsoft.Psi.Media.Linux/LinuxVideoInterop.cs @@ -12,7 +12,7 @@ namespace Microsoft.Psi.Media /// Structs, enums and static methods for interacting with Video4Linux drivers (V4L2). /// /// - /// This implimentation is based on this spec: https://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html + /// This implementation is based on this spec: https://www.linuxtv.org/downloads/legacy/video4linux/API/V4L2_API/spec-single/v4l2.html /// The only dependencies are POSIX ioctl, mmap and munmap. /// internal static class LinuxVideoInterop @@ -342,11 +342,11 @@ namespace Microsoft.Psi.Media /// Query device capabilities (POSIX ioctl VIDIOC_QUERYCAP). /// /// Device name (e.g. "/dev/video0"). - /// Device capabilites. + /// Device capabilities. public static Capability QueryCapabilities(int fd) { var caps = default(Capability); - if (QueryCapabilities(fd, VIDIOC(IOCREAD, Marshal.SizeOf(caps), 0) /* VIDIOC_QUERYCAP */, ref caps) != 0) + if (NativeMethods.QueryCapabilities(fd, VIDIOC(IOCREAD, Marshal.SizeOf(caps), 0) /* VIDIOC_QUERYCAP */, ref caps) != 0) { throw new IOException("QueryCapabilities failed."); } @@ -386,7 +386,7 @@ namespace Microsoft.Psi.Media /// Success flag. public static bool EnumFormats(int fd, ref FormatDescription format) { - return EnumFormats(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(format), 2) /* VIDIOC_ENUM_FMT */, ref format) >= 0; + return NativeMethods.EnumFormats(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(format), 2) /* VIDIOC_ENUM_FMT */, ref format) >= 0; } /// @@ -396,7 +396,7 @@ namespace Microsoft.Psi.Media /// Video format struct to be populated. internal static void GetFormat(int fd, ref VideoFormat format) { - if (GetFormat(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(format), 4) /* VIDIOC_G_FMT */, ref format) != 0) + if (NativeMethods.GetFormat(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(format), 4) /* VIDIOC_G_FMT */, ref format) != 0) { throw new IOException("GetFormat failed."); } @@ -419,7 +419,7 @@ namespace Microsoft.Psi.Media throw new ArgumentException("Formats other than video capture are not supported."); } - if (SetFormat(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(format), 5) /* VIDIOC_S_FMT */, ref format) != 0) + if (NativeMethods.SetFormat(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(format), 5) /* VIDIOC_S_FMT */, ref format) != 0) { throw new IOException("SetFormat failed."); } @@ -438,7 +438,7 @@ namespace Microsoft.Psi.Media req.Count = count; req.Memory = memory; req.Type = BufferType.VideoCapture; // note: only video capture supported - if (ReqBufs(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(req), 8) /* VIDIOC_REQBUFS */, ref req) != 0) + if (NativeMethods.ReqBufs(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(req), 8) /* VIDIOC_REQBUFS */, ref req) != 0) { throw new ArgumentException("ReqBufs failed."); } @@ -464,7 +464,7 @@ namespace Microsoft.Psi.Media Memory = Memory.MemoryMapping, // note: memory mapped assumed }; - if (QueryBuf(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(buffer), 9) /* VIDIOC_QUERYBUF */, ref buffer) != 0) + if (NativeMethods.QueryBuf(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(buffer), 9) /* VIDIOC_QUERYBUF */, ref buffer) != 0) { throw new ArgumentException($"QueryBuf failed (index={index})."); } @@ -480,7 +480,16 @@ namespace Microsoft.Psi.Media /// Pointer to mapped memory. internal static unsafe void* MemoryMap(int fd, Buffer buffer) { - var start = MemMap(IntPtr.Zero, buffer.Length, 0x1 /* PROT_READ */ | 0x2 /* PROT_WRITE */, 0x1 /* MAP_SHARED */, fd, buffer.Pointer); + void* start; + if (Environment.Is64BitOperatingSystem) + { + start = NativeMethods.MemMap64(IntPtr.Zero, buffer.Length, 0x1 /* PROT_READ */ | 0x2 /* PROT_WRITE */, 0x1 /* MAP_SHARED */, fd, buffer.Pointer); + } + else + { + start = NativeMethods.MemMap32(IntPtr.Zero, buffer.Length, 0x1 /* PROT_READ */ | 0x2 /* PROT_WRITE */, 0x1 /* MAP_SHARED */, fd, (uint)buffer.Pointer); + } + if (start == (void*)-1) { throw new ArgumentException("Memory map failed."); @@ -495,7 +504,17 @@ namespace Microsoft.Psi.Media /// Buffer to unmap. internal static unsafe void MemoryUnmap(Buffer buffer) { - if (MemUnmap(buffer.Pointer, buffer.Length) != 0) + int result; + if (Environment.Is64BitOperatingSystem) + { + result = NativeMethods.MemUnmap64(buffer.Pointer, buffer.Length); + } + else + { + result = NativeMethods.MemUnmap32((uint)buffer.Pointer, buffer.Length); + } + + if (result != 0) { throw new ArgumentException("Memory unmap failed."); } @@ -508,7 +527,7 @@ namespace Microsoft.Psi.Media /// Buffer struct to enqueue. internal static void EnqueBuffer(int fd, Buffer buffer) { - if (EnqueBuffer(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(buffer), 15) /* VIDIOC_QBUF */, ref buffer) != 0) + if (NativeMethods.EnqueBuffer(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(buffer), 15) /* VIDIOC_QBUF */, ref buffer) != 0) { throw new ArgumentException("Enque buffer failed."); } @@ -523,7 +542,7 @@ namespace Microsoft.Psi.Media { var buffer = default(Buffer); buffer.Type = LinuxVideoInterop.BufferType.VideoCapture; - if (DequeBuffer(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(buffer), 17) /* VIDIOC_DQBUF */, ref buffer) != 0) + if (NativeMethods.DequeBuffer(fd, VIDIOC(IOCREAD | IOCWRITE, Marshal.SizeOf(buffer), 17) /* VIDIOC_DQBUF */, ref buffer) != 0) { throw new ArgumentException("Deque buffer failed."); } @@ -538,7 +557,7 @@ namespace Microsoft.Psi.Media internal static void StreamOn(int fd) { var type = BufferType.VideoCapture; // note: only video capture supported - if (StreamOn(fd, VIDIOC(IOCWRITE, sizeof(uint), 18) /* VIDIOC_STREAMON */, ref type) != 0) + if (NativeMethods.StreamOn(fd, VIDIOC(IOCWRITE, sizeof(uint), 18) /* VIDIOC_STREAMON */, ref type) != 0) { throw new ArgumentException("StreamOn failed."); } @@ -551,7 +570,7 @@ namespace Microsoft.Psi.Media internal static void StreamOff(int fd) { var type = BufferType.VideoCapture; // note: only video capture supported - if (StreamOff(fd, VIDIOC(IOCWRITE, Marshal.SizeOf(type), 19) /* VIDIOC_STREAMOFF */, ref type) != 0) + if (NativeMethods.StreamOff(fd, VIDIOC(IOCWRITE, Marshal.SizeOf(type), 19) /* VIDIOC_STREAMOFF */, ref type) != 0) { throw new ArgumentException("StreamOn failed."); } @@ -569,128 +588,6 @@ namespace Microsoft.Psi.Media return readWrite | ((uint)size << 16) | V | (uint)command; } - /// - /// Query capabilites (POSIX ioctl VIDIOC_QUERYCAP). - /// - /// Device file descriptor. - /// Request type (VIDIOC_QUERYCAP). - /// Capabilities struct to be populated. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int QueryCapabilities(int fd, uint request, ref Capability caps); - - /// - /// Enumerate formats (POSIX ioctl VIDIOC_ENUM_FMT). - /// - /// Device file descriptor. - /// Request type (VIDIOC_ENUM_FMT). - /// Format descrition struct to be populated. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int EnumFormats(int fd, uint request, ref FormatDescription format); - - /// - /// Get format (POSIX ioctl VIDIOC_G_FMT). - /// - /// Device file descriptor. - /// Request type (VIDIOC_G_FMT). - /// Video format struct to be populated. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int GetFormat(int fd, uint request, ref VideoFormat format); - - /// - /// Set format (POSIX ioctl VIDIOC_S_FMT). - /// - /// Device file descriptor. - /// Request type (VIDIOC_S_FMT). - /// Video format. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int SetFormat(int fd, uint request, ref VideoFormat format); - - /// - /// Request buffers (POSIX ioctl VIDIOC_REQBUFS). - /// - /// Device file descriptor. - /// Request type (VIDIOC_REQBUFS). - /// Request buffers struct to be populated. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int ReqBufs(int fd, uint request, ref RequestBuffers req); - - /// - /// Query buffer (POSIX ioctl VIDIOC_QUERYBUF). - /// - /// Device file descriptor. - /// Request type (VIDIOC_QUERYBUF). - /// Buffer struct to be populated. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int QueryBuf(int fd, uint request, ref Buffer buf); - - /// - /// Memory map (POSIX mmap). - /// - /// Buffer start. - /// Buffer length. - /// Protection (PROT_EXEC/READ/WRITE/NONE). - /// Flags (MAP_SHARED/PRIVATE). - /// Device file descriptor. - /// Offset within buffer. - /// Pointer to mapped memory. - [DllImport("libc", EntryPoint="mmap", SetLastError=true)] - private static unsafe extern void* MemMap(IntPtr start, ulong length, int prot, int flags, int fd, ulong offset); - - /// - /// Memory unmap (POSIX munmap). - /// - /// Buffer start. - /// Buffer length. - /// Result flag. - [DllImport("libc", EntryPoint="munmap", SetLastError=true)] - private static unsafe extern int MemUnmap(ulong start, ulong length); - - /// - /// Enqueue buffer (POSIX ioctl VIDIOC_QBUF). - /// - /// Device file descriptor. - /// Request type (VIDIOC_QBUF). - /// Buffer struct to enqueue. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int EnqueBuffer(int fd, uint request, ref Buffer buffer); - - /// - /// Dequeue buffer (POSIX ioctl VIDIOC_DQBUF). - /// - /// Device file descriptor. - /// Request type (VIDIOC_DQBUF). - /// Buffer struct into which to dequeue. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int DequeBuffer(int fd, uint request, ref Buffer buffer); - - /// - /// Streaming on (POSIX ioctl VIDIOC_STREAMON). - /// - /// Device file descriptor. - /// Request type (VIDIOC_STREAMON). - /// Buffer type. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int StreamOn(int fd, uint request, ref BufferType buftype); - - /// - /// Streaming off (POSIX ioctl VIDIOC_STREAMOFF). - /// - /// Device file descriptor. - /// Request type (VIDIOC_STREAMOFF). - /// Buffer type. - /// Result flag. - [DllImport("libc", EntryPoint="ioctl", SetLastError=true)] - private static extern int StreamOff(int fd, uint request, ref BufferType buftype); - /// /// Capabilities struct (v4l2_capability). /// @@ -721,12 +618,12 @@ namespace Microsoft.Psi.Media public uint Version; /// - /// Driver capabilites. + /// Driver capabilities. /// public CapsFlags Caps; /// - /// Device capabilites. + /// Device capabilities. /// public CapsFlags DeviceCaps; @@ -1020,5 +917,152 @@ namespace Microsoft.Psi.Media [MarshalAs(UnmanagedType.ByValArray, SizeConst = 2)] private uint[] reserved; } + + private static class NativeMethods + { + /// + /// Query capabilities (POSIX ioctl VIDIOC_QUERYCAP). + /// + /// Device file descriptor. + /// Request type (VIDIOC_QUERYCAP). + /// Capabilities struct to be populated. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int QueryCapabilities(int fd, uint request, ref Capability caps); + + /// + /// Enumerate formats (POSIX ioctl VIDIOC_ENUM_FMT). + /// + /// Device file descriptor. + /// Request type (VIDIOC_ENUM_FMT). + /// Format description struct to be populated. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int EnumFormats(int fd, uint request, ref FormatDescription format); + + /// + /// Get format (POSIX ioctl VIDIOC_G_FMT). + /// + /// Device file descriptor. + /// Request type (VIDIOC_G_FMT). + /// Video format struct to be populated. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int GetFormat(int fd, uint request, ref VideoFormat format); + + /// + /// Set format (POSIX ioctl VIDIOC_S_FMT). + /// + /// Device file descriptor. + /// Request type (VIDIOC_S_FMT). + /// Video format. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int SetFormat(int fd, uint request, ref VideoFormat format); + + /// + /// Request buffers (POSIX ioctl VIDIOC_REQBUFS). + /// + /// Device file descriptor. + /// Request type (VIDIOC_REQBUFS). + /// Request buffers struct to be populated. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int ReqBufs(int fd, uint request, ref RequestBuffers req); + + /// + /// Query buffer (POSIX ioctl VIDIOC_QUERYBUF). + /// + /// Device file descriptor. + /// Request type (VIDIOC_QUERYBUF). + /// Buffer struct to be populated. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int QueryBuf(int fd, uint request, ref Buffer buf); + + /// + /// Memory map (POSIX mmap). + /// + /// Buffer start. + /// Buffer length. + /// Protection (PROT_EXEC/READ/WRITE/NONE). + /// Flags (MAP_SHARED/PRIVATE). + /// Device file descriptor. + /// Offset within buffer. + /// Pointer to mapped memory. + [DllImport("libc", EntryPoint = "mmap", SetLastError = true)] + internal static unsafe extern void* MemMap32(IntPtr start, uint length, int prot, int flags, int fd, uint offset); + + /// + /// Memory map (POSIX mmap). + /// + /// Buffer start. + /// Buffer length. + /// Protection (PROT_EXEC/READ/WRITE/NONE). + /// Flags (MAP_SHARED/PRIVATE). + /// Device file descriptor. + /// Offset within buffer. + /// Pointer to mapped memory. + [DllImport("libc", EntryPoint = "mmap", SetLastError = true)] + internal static unsafe extern void* MemMap64(IntPtr start, ulong length, int prot, int flags, int fd, ulong offset); + + /// + /// Memory unmap (POSIX munmap). + /// + /// Buffer start. + /// Buffer length. + /// Result flag. + [DllImport("libc", EntryPoint = "munmap", SetLastError = true)] + internal static unsafe extern int MemUnmap32(uint start, uint length); + + /// + /// Memory unmap (POSIX munmap). + /// + /// Buffer start. + /// Buffer length. + /// Result flag. + [DllImport("libc", EntryPoint = "munmap", SetLastError = true)] + internal static unsafe extern int MemUnmap64(ulong start, ulong length); + + /// + /// Enqueue buffer (POSIX ioctl VIDIOC_QBUF). + /// + /// Device file descriptor. + /// Request type (VIDIOC_QBUF). + /// Buffer struct to enqueue. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int EnqueBuffer(int fd, uint request, ref Buffer buffer); + + /// + /// Dequeue buffer (POSIX ioctl VIDIOC_DQBUF). + /// + /// Device file descriptor. + /// Request type (VIDIOC_DQBUF). + /// Buffer struct into which to dequeue. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int DequeBuffer(int fd, uint request, ref Buffer buffer); + + /// + /// Streaming on (POSIX ioctl VIDIOC_STREAMON). + /// + /// Device file descriptor. + /// Request type (VIDIOC_STREAMON). + /// Buffer type. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int StreamOn(int fd, uint request, ref BufferType buftype); + + /// + /// Streaming off (POSIX ioctl VIDIOC_STREAMOFF). + /// + /// Device file descriptor. + /// Request type (VIDIOC_STREAMOFF). + /// Buffer type. + /// Result flag. + [DllImport("libc", EntryPoint = "ioctl", SetLastError = true)] + internal static extern int StreamOff(int fd, uint request, ref BufferType buftype); + } } } diff --git a/Sources/Media/Microsoft.Psi.Media.Linux/MediaCaptureInternal.cs b/Sources/Media/Microsoft.Psi.Media.Linux/MediaCaptureInternal.cs index 6475b850..d80ef1dc 100644 --- a/Sources/Media/Microsoft.Psi.Media.Linux/MediaCaptureInternal.cs +++ b/Sources/Media/Microsoft.Psi.Media.Linux/MediaCaptureInternal.cs @@ -63,7 +63,7 @@ namespace Microsoft.Psi.Media /// Open device. /// /// - /// This also queries the device capabilites and ensures that it supports video capture and streaming. + /// This also queries the device capabilities and ensures that it supports video capture and streaming. /// public void Open() { @@ -162,7 +162,7 @@ namespace Microsoft.Psi.Media this.background = new Thread(new ThreadStart(this.ProcessFrames)) { IsBackground = true }; this.background.Start(); } - catch (Exception ex) + catch { for (var i = 0u; i < NumberOfDriverBuffers; i++) { @@ -173,7 +173,7 @@ namespace Microsoft.Psi.Media } } - throw ex; + throw; } } @@ -254,12 +254,12 @@ namespace Microsoft.Psi.Media public string Description => this.InternalFormat.Description; /// - /// Gets a value indicating whether whether pixel format is compressed. + /// Gets a value indicating whether pixel format is compressed. /// public bool IsCompressed => (this.InternalFormat.Flags & LinuxVideoInterop.FormatFlags.Compressed) == LinuxVideoInterop.FormatFlags.Compressed; /// - /// Gets a value indicating whether whether pixel format is emulated (non-native). + /// Gets a value indicating whether pixel format is emulated (non-native). /// public bool IsEmulated => (this.InternalFormat.Flags & LinuxVideoInterop.FormatFlags.Emulated) == LinuxVideoInterop.FormatFlags.Emulated; @@ -311,7 +311,7 @@ namespace Microsoft.Psi.Media public uint Size => this.InternalFormat.Pixel.SizeImage; /// - /// Gets internal vidio format (used to pass back to driver). + /// Gets internal video format (used to pass back to driver). /// internal LinuxVideoInterop.VideoFormat InternalFormat => this.internalFormat; } diff --git a/Sources/Media/Microsoft.Psi.Media.Linux/Microsoft.Psi.Media.Linux.csproj b/Sources/Media/Microsoft.Psi.Media.Linux/Microsoft.Psi.Media.Linux.csproj index 5959cc41..1ac890bf 100644 --- a/Sources/Media/Microsoft.Psi.Media.Linux/Microsoft.Psi.Media.Linux.csproj +++ b/Sources/Media/Microsoft.Psi.Media.Linux/Microsoft.Psi.Media.Linux.csproj @@ -39,6 +39,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Media/Microsoft.Psi.Media.Native.x64/Microsoft.Psi.Media.Native.x64.vcxproj b/Sources/Media/Microsoft.Psi.Media.Native.x64/Microsoft.Psi.Media.Native.x64.vcxproj index 5d3bfdd6..bc61d71f 100644 --- a/Sources/Media/Microsoft.Psi.Media.Native.x64/Microsoft.Psi.Media.Native.x64.vcxproj +++ b/Sources/Media/Microsoft.Psi.Media.Native.x64/Microsoft.Psi.Media.Native.x64.vcxproj @@ -32,14 +32,14 @@ DynamicLibrary true - v141 + v142 Unicode Spectre DynamicLibrary false - v141 + v142 true Unicode Spectre diff --git a/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCapture.cs b/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCapture.cs index 196b3e0c..bdcf546f 100644 --- a/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCapture.cs +++ b/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCapture.cs @@ -22,13 +22,13 @@ namespace Microsoft.Psi.Media /// private readonly MediaCaptureConfiguration configuration; + private readonly IProducer audio; + /// /// The video capture device. /// private MediaCaptureDevice camera; - private IProducer audio; - /// /// Defines attributes of properties exposed by MediaCaptureDevice. /// @@ -46,7 +46,7 @@ namespace Microsoft.Psi.Media this.configuration = configurationHelper.Configuration; if (this.configuration.CaptureAudio) { - this.audio = new Audio.AudioCapture(pipeline, new Audio.AudioCaptureConfiguration() { OutputFormat = Psi.Audio.WaveFormat.Create16kHz1Channel16BitPcm() }); + this.audio = new Audio.AudioCapture(pipeline, Psi.Audio.WaveFormat.Create16kHz1Channel16BitPcm()); } } @@ -55,13 +55,13 @@ namespace Microsoft.Psi.Media /// /// Pipeline this component is a part of. /// Describes how to configure the media capture device. - public MediaCapture(Pipeline pipeline, MediaCaptureConfiguration configuration) + public MediaCapture(Pipeline pipeline, MediaCaptureConfiguration configuration = null) : this(pipeline) { - this.configuration = configuration; + this.configuration = configuration ?? new MediaCaptureConfiguration(); if (this.configuration.CaptureAudio) { - this.audio = new Audio.AudioCapture(pipeline, new Audio.AudioCaptureConfiguration() { OutputFormat = Psi.Audio.WaveFormat.Create16kHz1Channel16BitPcm() }); + this.audio = new Audio.AudioCapture(pipeline, Psi.Audio.WaveFormat.Create16kHz1Channel16BitPcm()); } } @@ -74,9 +74,8 @@ namespace Microsoft.Psi.Media /// Frame rate. /// Should we create an audio capture device. /// Device ID. - /// Indicates whether video frames should be persisted. /// Indicates whether camera is shared amongst multiple applications. - public MediaCapture(Pipeline pipeline, int width, int height, double framerate = 15, bool captureAudio = false, string deviceId = null, bool persistVideoFrames = false, bool useInSharedMode = false) + public MediaCapture(Pipeline pipeline, int width, int height, double framerate = 15, bool captureAudio = false, string deviceId = null, bool useInSharedMode = false) : this(pipeline) { this.configuration = new MediaCaptureConfiguration() @@ -90,7 +89,7 @@ namespace Microsoft.Psi.Media }; if (this.configuration.CaptureAudio) { - this.audio = new Audio.AudioCapture(pipeline, new Audio.AudioCaptureConfiguration() { OutputFormat = Psi.Audio.WaveFormat.Create16kHz1Channel16BitPcm() }); + this.audio = new Audio.AudioCapture(pipeline, Psi.Audio.WaveFormat.Create16kHz1Channel16BitPcm()); } } @@ -122,7 +121,7 @@ namespace Microsoft.Psi.Media /// /// Returns information about each property exposed by the media capture device. /// - /// MediaCaptureInfo object definiting ranges and availability of each property. + /// MediaCaptureInfo object defining ranges and availability of each property. public MediaCaptureInfo GetDeviceInfo() { return this.deviceInfo; @@ -134,18 +133,20 @@ namespace Microsoft.Psi.Media /// A new MediaCaptureConfiguration object with the device's current settings. public MediaCaptureConfiguration GetDeviceConfiguration() { - MediaCaptureConfiguration config = new MediaCaptureConfiguration(); - config.BacklightCompensation = this.GetValueBool(VideoProperty.BacklightCompensation, this.deviceInfo.BacklightCompensationInfo.Supported); - config.Brightness = this.GetValueInt(VideoProperty.Brightness, this.deviceInfo.BrightnessInfo.Supported); - config.ColorEnable = this.GetValueBool(VideoProperty.ColorEnable, this.deviceInfo.ColorEnableInfo.Supported); - config.Contrast = this.GetValueInt(VideoProperty.Contrast, this.deviceInfo.ContrastInfo.Supported); - config.Gain = this.GetValueInt(VideoProperty.Gain, this.deviceInfo.GainInfo.Supported); - config.Gamma = this.GetValueInt(VideoProperty.Gamma, this.deviceInfo.GammaInfo.Supported); - config.Hue = this.GetValueInt(VideoProperty.Hue, this.deviceInfo.HueInfo.Supported); - config.Saturation = this.GetValueInt(VideoProperty.Saturation, this.deviceInfo.SaturationInfo.Supported); - config.Sharpness = this.GetValueInt(VideoProperty.Sharpness, this.deviceInfo.SharpnessInfo.Supported); - config.WhiteBalance = this.GetValueInt(VideoProperty.WhiteBalance, this.deviceInfo.WhiteBalanceInfo.Supported); - config.Focus = this.GetValueInt(ManagedCameraControlProperty.Focus, this.deviceInfo.FocusInfo.Supported); + MediaCaptureConfiguration config = new MediaCaptureConfiguration + { + BacklightCompensation = this.GetValueBool(VideoProperty.BacklightCompensation, this.deviceInfo.BacklightCompensationInfo.Supported), + Brightness = this.GetValueInt(VideoProperty.Brightness, this.deviceInfo.BrightnessInfo.Supported), + ColorEnable = this.GetValueBool(VideoProperty.ColorEnable, this.deviceInfo.ColorEnableInfo.Supported), + Contrast = this.GetValueInt(VideoProperty.Contrast, this.deviceInfo.ContrastInfo.Supported), + Gain = this.GetValueInt(VideoProperty.Gain, this.deviceInfo.GainInfo.Supported), + Gamma = this.GetValueInt(VideoProperty.Gamma, this.deviceInfo.GammaInfo.Supported), + Hue = this.GetValueInt(VideoProperty.Hue, this.deviceInfo.HueInfo.Supported), + Saturation = this.GetValueInt(VideoProperty.Saturation, this.deviceInfo.SaturationInfo.Supported), + Sharpness = this.GetValueInt(VideoProperty.Sharpness, this.deviceInfo.SharpnessInfo.Supported), + WhiteBalance = this.GetValueInt(VideoProperty.WhiteBalance, this.deviceInfo.WhiteBalanceInfo.Supported), + Focus = this.GetValueInt(ManagedCameraControlProperty.Focus, this.deviceInfo.FocusInfo.Supported), + }; return config; } @@ -255,13 +256,11 @@ namespace Microsoft.Psi.Media this.camera.CaptureSample((data, length, timestamp) => { var time = DateTime.FromFileTimeUtc(timestamp); - using (var sharedImage = ImagePool.GetOrCreate(this.configuration.Width, this.configuration.Height, Microsoft.Psi.Imaging.PixelFormat.BGR_24bpp)) - { - sharedImage.Resource.CopyFrom(data); + using var sharedImage = ImagePool.GetOrCreate(this.configuration.Width, this.configuration.Height, Microsoft.Psi.Imaging.PixelFormat.BGR_24bpp); + sharedImage.Resource.CopyFrom(data); - var originatingTime = this.pipeline.GetCurrentTimeFromElapsedTicks(timestamp); - this.Out.Post(sharedImage, originatingTime); - } + var originatingTime = this.pipeline.GetCurrentTimeFromElapsedTicks(timestamp); + this.Out.Post(sharedImage, originatingTime); }); } else @@ -305,48 +304,6 @@ namespace Microsoft.Psi.Media } } - private MediaCaptureInfo.PropertyInfo GetInfo(ManagedCameraControlProperty prop) - { - MediaCaptureInfo.PropertyInfo info = new MediaCaptureInfo.PropertyInfo(); - int min = 0, max = 0, stepSize = 0, defValue = 0, flag = 0; - if (this.camera.GetRange(prop, ref min, ref max, ref stepSize, ref defValue, ref flag)) - { - info.MinValue = min; - info.MaxValue = max; - info.StepSize = stepSize; - info.DefaultValue = defValue; - info.AutoControlled = (flag == (int)VideoPropertyFlags.Auto) ? true : false; - info.Supported = true; - } - else - { - info.Supported = false; - } - - return info; - } - - private MediaCaptureInfo.PropertyInfo GetInfo(VideoProperty prop) - { - MediaCaptureInfo.PropertyInfo info = new MediaCaptureInfo.PropertyInfo(); - int min = 0, max = 0, stepSize = 0, defValue = 0, flag = 0; - if (this.camera.GetRange(prop, ref min, ref max, ref stepSize, ref defValue, ref flag)) - { - info.MinValue = min; - info.MaxValue = max; - info.StepSize = stepSize; - info.DefaultValue = defValue; - info.AutoControlled = (flag == (int)VideoPropertyFlags.Auto) ? true : false; - info.Supported = true; - } - else - { - info.Supported = false; - } - - return info; - } - private MediaCaptureConfiguration.PropertyValue GetValueInt(VideoProperty prop, bool supported) { int flags = 0; @@ -356,7 +313,7 @@ namespace Microsoft.Psi.Media this.camera.GetProperty(prop, ref value, ref flags)) { propValue.Value = value; - propValue.Auto = (flags == (int)VideoPropertyFlags.Auto) ? true : false; + propValue.Auto = flags == (int)VideoPropertyFlags.Auto; } return propValue; @@ -371,7 +328,7 @@ namespace Microsoft.Psi.Media this.camera.GetProperty(prop, ref value, ref flags)) { propValue.Value = value; - propValue.Auto = (flags == (int)VideoPropertyFlags.Auto) ? true : false; + propValue.Auto = flags == (int)VideoPropertyFlags.Auto; } return propValue; @@ -385,8 +342,8 @@ namespace Microsoft.Psi.Media if (supported && this.camera.GetProperty(prop, ref value, ref flags)) { - propValue.Value = (value == 1) ? true : false; - propValue.Auto = (flags == (int)VideoPropertyFlags.Auto) ? true : false; + propValue.Value = value == 1; + propValue.Auto = flags == (int)VideoPropertyFlags.Auto; } return propValue; diff --git a/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCaptureConfiguration.cs b/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCaptureConfiguration.cs index 262b10b4..e79be218 100644 --- a/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCaptureConfiguration.cs +++ b/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaCaptureConfiguration.cs @@ -13,18 +13,12 @@ namespace Microsoft.Psi.Media /// public static readonly MediaCaptureConfiguration Default = new MediaCaptureConfiguration() { - UseInSharedMode = false, - Width = 1280, - Height = 720, - Framerate = 15, - DeviceId = null, - CaptureAudio = false, }; /// /// Gets or sets a value indicating whether the capture device should include audio capture. /// - public bool CaptureAudio { get; set; } + public bool CaptureAudio { get; set; } = false; /// /// Gets or sets a value indicating whether Backlight Compensation is being applied. @@ -84,27 +78,27 @@ namespace Microsoft.Psi.Media /// /// Gets or sets a value indicating whether the camera device is shared amongst multiple applications. /// - public bool UseInSharedMode { get; set; } + public bool UseInSharedMode { get; set; } = false; /// /// Gets or sets the camera resolution width. /// - public int Width { get; set; } + public int Width { get; set; } = 1280; /// /// Gets or sets the camera resolution height. /// - public int Height { get; set; } + public int Height { get; set; } = 720; /// /// Gets or sets the camera framerate. /// - public double Framerate { get; set; } + public double Framerate { get; set; } = 15; /// /// Gets or sets device id used to identify the camera. /// - public string DeviceId { get; set; } + public string DeviceId { get; set; } = null; /// /// Defines the type of a property on the media capture device. diff --git a/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaSource.cs b/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaSource.cs index 6703d50a..3d719028 100644 --- a/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaSource.cs +++ b/Sources/Media/Microsoft.Psi.Media.Windows.x64/MediaSource.cs @@ -18,7 +18,7 @@ namespace Microsoft.Psi.Media public class MediaSource : Generator, IDisposable { private bool disposed = false; - private string filename; + private Stream input; private short videoWidth; private short videoHeight; private SourceReader sourceReader; @@ -27,18 +27,47 @@ namespace Microsoft.Psi.Media private int audioStreamIndex = -1; private WaveFormat waveFormat; + /// + /// Keep track of the timestamp of the last image frame (computed from the value reported to us by media foundation). + /// + private DateTime lastPostedImageTime = DateTime.MinValue; + + /// + /// Keep track of the timestamp of the last audio buffer (computed from the value reported to us by media foundation). + /// + private DateTime lastPostedAudioTime = DateTime.MinValue; + + /// + /// Whether to drop out of order packets from media foundation. + /// + private bool dropOutOfOrderPackets = false; + /// /// Initializes a new instance of the class. /// /// Pipeline this component is a part of. /// Name of media file to play. - public MediaSource(Pipeline pipeline, string filename) + /// Optional flag specifying whether to drop out of order packets (defaults to false). + public MediaSource(Pipeline pipeline, string filename, bool dropOutOfOrderPackets = false) + : this(pipeline, File.OpenRead(filename), new FileInfo(filename).CreationTime, dropOutOfOrderPackets) + { + } + + /// + /// Initializes a new instance of the class. + /// + /// Pipeline this component is a part of. + /// Source stream of the media to consume. + /// Optional date/time that the media started. + /// Optional flag specifying whether to drop out of order packets (defaults to false). + public MediaSource(Pipeline pipeline, Stream input, DateTime? startTime = null, bool dropOutOfOrderPackets = false) : base(pipeline) { - FileInfo info = new FileInfo(filename); - pipeline.ProposeReplayTime(new TimeInterval(info.CreationTime, DateTime.MaxValue)); - this.start = info.CreationTime; - this.filename = filename; + var proposedReplayTime = startTime ?? DateTime.Now; + pipeline.ProposeReplayTime(new TimeInterval(proposedReplayTime, DateTime.MaxValue)); + this.start = proposedReplayTime; + this.input = input; + this.dropOutOfOrderPackets = dropOutOfOrderPackets; this.Image = pipeline.CreateEmitter>(this, nameof(this.Image)); this.Audio = pipeline.CreateEmitter(this, nameof(this.Audio)); this.InitializeMediaPipeline(); @@ -62,6 +91,7 @@ namespace Microsoft.Psi.Media if (!this.disposed) { this.sourceReader.Dispose(); + this.input.Dispose(); MediaManager.Shutdown(); this.disposed = true; } @@ -89,17 +119,45 @@ namespace Microsoft.Psi.Media if (streamIndex == this.imageStreamIndex) { - using (var sharedImage = ImagePool.GetOrCreate(this.videoWidth, this.videoHeight, Imaging.PixelFormat.BGR_24bpp)) + // Detect out of order originating times + if (originatingTime > this.lastPostedImageTime) { - sharedImage.Resource.CopyFrom(data); - this.Image.Post(sharedImage, originatingTime); + using (var sharedImage = ImagePool.GetOrCreate(this.videoWidth, this.videoHeight, Imaging.PixelFormat.BGR_24bpp)) + { + sharedImage.Resource.CopyFrom(data); + this.Image.Post(sharedImage, originatingTime); + this.lastPostedImageTime = originatingTime; + } + } + else if (!this.dropOutOfOrderPackets) + { + throw new InvalidOperationException( + $"The most recently captured image frame has a timestamp ({originatingTime.TimeOfDay}) which is before " + + $"that of the last posted image frame ({this.lastPostedImageTime.TimeOfDay}), as reported by the video stream. This could " + + $"be due to a timing glitch in the video stream. Set the 'dropOutOfOrderPackets' " + + $"parameter to true to handle this condition by dropping " + + $"packets with out of order timestamps."); } } else if (streamIndex == this.audioStreamIndex) { - AudioBuffer audioBuffer = new AudioBuffer(currentByteCount, this.waveFormat); - Marshal.Copy(data, audioBuffer.Data, 0, currentByteCount); - this.Audio.Post(audioBuffer, originatingTime); + // Detect out of order originating times + if (originatingTime > this.lastPostedAudioTime) + { + AudioBuffer audioBuffer = new AudioBuffer(currentByteCount, this.waveFormat); + Marshal.Copy(data, audioBuffer.Data, 0, currentByteCount); + this.Audio.Post(audioBuffer, originatingTime); + this.lastPostedAudioTime = originatingTime; + } + else if (!this.dropOutOfOrderPackets) + { + throw new InvalidOperationException( + $"The most recently captured audio buffer has a timestamp ({originatingTime.TimeOfDay}) which is before " + + $"that of the last posted audio buffer ({this.lastPostedAudioTime.TimeOfDay}), as reported by the audio stream. This could " + + $"be due to a timing glitch in the audio stream. Set the 'dropOutOfOrderPackets' " + + $"parameter to true to handle this condition by dropping " + + $"packets with out of order timestamps."); + } } buffer.Unlock(); @@ -129,7 +187,7 @@ namespace Microsoft.Psi.Media MediaManager.Startup(false); MediaAttributes sourceReaderAttributes = new MediaAttributes(); sourceReaderAttributes.Set(SourceReaderAttributeKeys.EnableAdvancedVideoProcessing, true); - this.sourceReader = new SourceReader(this.filename, sourceReaderAttributes); + this.sourceReader = new SourceReader(this.input, sourceReaderAttributes); this.sourceReader.SetStreamSelection(SourceReaderIndex.AllStreams, false); int streamIndex = 0; diff --git a/Sources/Media/Microsoft.Psi.Media.Windows.x64/Microsoft.Psi.Media.Windows.x64.csproj b/Sources/Media/Microsoft.Psi.Media.Windows.x64/Microsoft.Psi.Media.Windows.x64.csproj index 3032e923..4cce06da 100644 --- a/Sources/Media/Microsoft.Psi.Media.Windows.x64/Microsoft.Psi.Media.Windows.x64.csproj +++ b/Sources/Media/Microsoft.Psi.Media.Windows.x64/Microsoft.Psi.Media.Windows.x64.csproj @@ -35,6 +35,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Media/Microsoft.Psi.Media.Windows.x64/Mpeg4Writer.cs b/Sources/Media/Microsoft.Psi.Media.Windows.x64/Mpeg4Writer.cs index a076ba50..8d226368 100644 --- a/Sources/Media/Microsoft.Psi.Media.Windows.x64/Mpeg4Writer.cs +++ b/Sources/Media/Microsoft.Psi.Media.Windows.x64/Mpeg4Writer.cs @@ -94,7 +94,7 @@ namespace Microsoft.Psi.Media if (this.writer != null) { this.writer.Close(); - this.writer.Dispose(); + ((IDisposable)this.writer).Dispose(); // Cast to IDisposable to suppress false CA2213 warning this.writer = null; MP4Writer.Shutdown(); } diff --git a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/AssemblyInfo.cpp b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/AssemblyInfo.cpp index 2ff61f88..4c8b2af4 100644 --- a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/AssemblyInfo.cpp +++ b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/AssemblyInfo.cpp @@ -15,6 +15,6 @@ using namespace System::Security::Permissions; [assembly:AssemblyCopyrightAttribute("Copyright (c) Microsoft Corporation. All rights reserved.")]; [assembly:ComVisible(false)]; [assembly:CLSCompliantAttribute(true)]; -[assembly:AssemblyVersionAttribute("0.11.82.2")]; -[assembly:AssemblyFileVersionAttribute("0.11.82.2")]; -[assembly:AssemblyInformationalVersionAttribute("0.11.82.2-beta")]; +[assembly:AssemblyVersionAttribute("0.12.53.2")]; +[assembly:AssemblyFileVersionAttribute("0.12.53.2")]; +[assembly:AssemblyInformationalVersionAttribute("0.12.53.2-beta")]; diff --git a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/AssemblyInfo.rc b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/AssemblyInfo.rc index e79501fb05ed86251b302718b8c3384d4766a0ee..0895273fe79ddc192e8d1eedfd84e4bbd13f6431 100644 GIT binary patch delta 40 scmeyM{y}|19tXD(gARi!gE5danrz5nJb4X=5W5kB9!PBSQ4Vcx0M=XyVE_OC delta 40 scmeyM{y}|19tXD}gARiQgAtH4nrz5nJb4X=5W69R9!PBSQ4Vcx0M>j7V*mgE diff --git a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.cpp b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.cpp index c43be1d5..64f73471 100644 --- a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.cpp +++ b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.cpp @@ -36,7 +36,7 @@ namespace Microsoft { } //********************************************************************** - // Sets up our MF writer for handling audio. This code always generates + // Sets up our Media Foundation writer for handling audio. This code always generates // AAC for the audio output and assumes the audio input is always PCM //********************************************************************** HRESULT MP4WriterUnmanagedData::SetupAudio(UINT32 bitsPerSample, UINT32 samplesPerSecond, UINT32 numChannels) @@ -222,10 +222,10 @@ namespace Microsoft { dstCol = dstRow; for (UINT32 x = 0; x < outputWidth; x++) { - dstCol[3] = srcCol[0]; - dstCol[2] = srcCol[1]; - dstCol[1] = srcCol[2]; - dstCol[0] = srcCol[3]; + dstCol[0] = srcCol[0]; + dstCol[1] = srcCol[1]; + dstCol[2] = srcCol[2]; + dstCol[3] = srcCol[3]; srcCol += 4; dstCol += 4; } diff --git a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.h b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.h index 53967dcd..dbc190d5 100644 --- a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.h +++ b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/MP4Writer.h @@ -102,11 +102,7 @@ namespace Microsoft { ~MP4Writer() { - if (unmanagedData != nullptr) - { - delete unmanagedData; - unmanagedData = nullptr; - } + Close(); } HRESULT Open(String ^fn, MP4WriterConfiguration^ config); diff --git a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/Microsoft.Psi.Media_Interop.Windows.x64.vcxproj b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/Microsoft.Psi.Media_Interop.Windows.x64.vcxproj index 282ee2e4..56139a74 100644 --- a/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/Microsoft.Psi.Media_Interop.Windows.x64.vcxproj +++ b/Sources/Media/Microsoft.Psi.Media_Interop.Windows.x64/Microsoft.Psi.Media_Interop.Windows.x64.vcxproj @@ -34,7 +34,7 @@ true true Unicode - v141 + v142 Spectre @@ -42,7 +42,7 @@ false true Unicode - v141 + v142 Spectre diff --git a/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Microsoft.Psi.RealSense.Windows.x64.csproj b/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Microsoft.Psi.RealSense.Windows.x64.csproj index 70b57923..95179561 100644 --- a/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Microsoft.Psi.RealSense.Windows.x64.csproj +++ b/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Microsoft.Psi.RealSense.Windows.x64.csproj @@ -67,6 +67,11 @@ + + 2.9.8 + runtime; build; native; contentfiles; analyzers + all + 1.1.118 runtime; build; native; contentfiles; analyzers; buildtransitive @@ -77,13 +82,13 @@ - + - + $(BuildDependsOn) CheckVariable - + \ No newline at end of file diff --git a/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Properties/AssemblyInfo.cs b/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Properties/AssemblyInfo.cs index 7a20b5b5..f1aebde1 100644 --- a/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Properties/AssemblyInfo.cs +++ b/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/Properties/AssemblyInfo.cs @@ -35,6 +35,6 @@ using System.Runtime.InteropServices; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.11.82.2")] -[assembly: AssemblyFileVersion("0.11.82.2")] -[assembly: AssemblyInformationalVersion("0.11.82.2-beta")] +[assembly: AssemblyVersion("0.12.53.2")] +[assembly: AssemblyFileVersion("0.12.53.2")] +[assembly: AssemblyInformationalVersion("0.12.53.2-beta")] diff --git a/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/RealSenseSensor.cs b/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/RealSenseSensor.cs index 3511011f..be2f4d90 100644 --- a/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/RealSenseSensor.cs +++ b/Sources/RealSense/Microsoft.Psi.RealSense.Windows.x64/RealSenseSensor.cs @@ -27,7 +27,7 @@ namespace Microsoft.Psi.RealSense.Windows { this.shutdown = false; this.ColorImage = pipeline.CreateEmitter>(this, "ColorImage"); - this.DepthImage = pipeline.CreateEmitter>(this, "DepthImage"); + this.DepthImage = pipeline.CreateEmitter>(this, "DepthImage"); this.pipeline = pipeline; } @@ -39,7 +39,7 @@ namespace Microsoft.Psi.RealSense.Windows /// /// Gets the emitter that generates Depth images from the RealSense depth camera. /// - public Emitter> DepthImage { get; private set; } + public Emitter> DepthImage { get; private set; } /// /// Dispose method. @@ -48,7 +48,7 @@ namespace Microsoft.Psi.RealSense.Windows { if (this.device != null) { - this.device.Dispose(); + ((IDisposable)this.device).Dispose(); this.device = null; } } @@ -65,7 +65,7 @@ namespace Microsoft.Psi.RealSense.Windows } /// - public void Stop(DateTime finalOriginatingTime, Action notifyCompleted) + public void Stop(DateTime finalOriginatingTime, Action notifyCompleted) { if (this.thread != null) { @@ -81,7 +81,7 @@ namespace Microsoft.Psi.RealSense.Windows { this.device = null; } - + notifyCompleted(); } @@ -114,7 +114,7 @@ namespace Microsoft.Psi.RealSense.Windows throw new NotSupportedException("Expected 8bpp or 16bpp image."); } - var depthImage = ImagePool.GetOrCreate((int)this.device.GetDepthWidth(), (int)this.device.GetDepthHeight(), pixelFormat); + var depthImage = DepthImagePool.GetOrCreate((int)this.device.GetDepthWidth(), (int)this.device.GetDepthHeight()); uint depthImageSize = this.device.GetDepthHeight() * this.device.GetDepthStride(); while (!this.shutdown) { diff --git a/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/AssemblyInfo.cpp b/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/AssemblyInfo.cpp index 1cc197e6..a7955a82 100644 --- a/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/AssemblyInfo.cpp +++ b/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/AssemblyInfo.cpp @@ -31,9 +31,9 @@ using namespace System::Security::Permissions; // You can specify all the value or you can default the Revision and Build Numbers // by using the '*' as shown below: -[assembly:AssemblyVersionAttribute("0.11.82.2")]; -[assembly:AssemblyFileVersionAttribute("0.11.82.2")]; -[assembly:AssemblyInformationalVersionAttribute("0.11.82.2-beta")]; +[assembly:AssemblyVersionAttribute("0.12.53.2")]; +[assembly:AssemblyFileVersionAttribute("0.12.53.2")]; +[assembly:AssemblyInformationalVersionAttribute("0.12.53.2-beta")]; [assembly:ComVisible(false)]; diff --git a/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/Microsoft.Psi.RealSense_Interop.Windows.x64.vcxproj b/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/Microsoft.Psi.RealSense_Interop.Windows.x64.vcxproj index abeb422d..df033293 100644 --- a/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/Microsoft.Psi.RealSense_Interop.Windows.x64.vcxproj +++ b/Sources/RealSense/Microsoft.Psi.RealSense_Interop.Windows.x64/Microsoft.Psi.RealSense_Interop.Windows.x64.vcxproj @@ -23,7 +23,7 @@ DynamicLibrary true - v141 + v142 true Unicode Spectre @@ -31,7 +31,7 @@ DynamicLibrary false - v141 + v142 true Unicode Spectre @@ -126,13 +126,13 @@ - + - + $(BuildDependsOn) CheckVariable - + \ No newline at end of file diff --git a/Sources/Runtime/Microsoft.Psi.Interop/Microsoft.Psi.Interop.csproj b/Sources/Runtime/Microsoft.Psi.Interop/Microsoft.Psi.Interop.csproj index 22905777..c004c476 100644 --- a/Sources/Runtime/Microsoft.Psi.Interop/Microsoft.Psi.Interop.csproj +++ b/Sources/Runtime/Microsoft.Psi.Interop/Microsoft.Psi.Interop.csproj @@ -26,7 +26,11 @@ - + + + all + runtime; build; native; contentfiles; analyzers + @@ -36,7 +40,7 @@ - + diff --git a/Sources/Runtime/Microsoft.Psi.Windows/Microsoft.Psi.Windows.csproj b/Sources/Runtime/Microsoft.Psi.Windows/Microsoft.Psi.Windows.csproj index 75a0c99b..c1c9be83 100644 --- a/Sources/Runtime/Microsoft.Psi.Windows/Microsoft.Psi.Windows.csproj +++ b/Sources/Runtime/Microsoft.Psi.Windows/Microsoft.Psi.Windows.csproj @@ -28,6 +28,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Sources/Runtime/Microsoft.Psi.Windows/PerfCounterCollection.cs b/Sources/Runtime/Microsoft.Psi.Windows/PerfCounterCollection.cs index d882fc41..061a67f9 100644 --- a/Sources/Runtime/Microsoft.Psi.Windows/PerfCounterCollection.cs +++ b/Sources/Runtime/Microsoft.Psi.Windows/PerfCounterCollection.cs @@ -7,7 +7,7 @@ namespace Microsoft.Psi using System.Diagnostics; /// - /// Performacne counter collection. + /// Performance counter collection. /// /// Performance counter key type. public class PerfCounterCollection : IPerfCounterCollection diff --git a/Sources/Runtime/Microsoft.Psi.Windows/PerfCounters.cs b/Sources/Runtime/Microsoft.Psi.Windows/PerfCounters.cs index 3d65c9f1..c5e077ed 100644 --- a/Sources/Runtime/Microsoft.Psi.Windows/PerfCounters.cs +++ b/Sources/Runtime/Microsoft.Psi.Windows/PerfCounters.cs @@ -26,7 +26,7 @@ namespace Microsoft.Psi } /// - /// Add performance counter defintions. + /// Add performance counter definitions. /// /// Category name. /// Performance counter definitions (key, name, help, type). diff --git a/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexDefinition.cs b/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexDefinition.cs index 89cc0c05..72e045d7 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexDefinition.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexDefinition.cs @@ -80,7 +80,7 @@ namespace Microsoft.Psi.Arrays public IndexDefinition Slice(int start, int end) => this.Slice(new Range(start, end)); /// - /// Merges two index definitions into one dicontinuous index. The two are assumed to belong to the same dimension. + /// Merges two index definitions into one discontiguous index. The two are assumed to belong to the same dimension. /// /// The other definition. /// A combined definition. diff --git a/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexerNd.cs b/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexerNd.cs index fa4e0c5c..54f94055 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexerNd.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Arrays/IndexerNd.cs @@ -112,7 +112,7 @@ namespace Microsoft.Psi.Arrays { if (indices.Length != this.dimensions.Length) { - throw new ArgumentException("Invalid number of dimmensions. Expected " + this.dimensions.Length); + throw new ArgumentException("Invalid number of dimensions. Expected " + this.dimensions.Length); } int index = 0; diff --git a/Sources/Runtime/Microsoft.Psi/Common/Arrays/RangeIndexDefinition.cs b/Sources/Runtime/Microsoft.Psi/Common/Arrays/RangeIndexDefinition.cs index fefad281..8b7961fa 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Arrays/RangeIndexDefinition.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Arrays/RangeIndexDefinition.cs @@ -8,7 +8,7 @@ namespace Microsoft.Psi.Arrays using System.Linq; /// - /// Defines the possible values of an index as a continguous range. + /// Defines the possible values of an index as a contiguous range. /// internal class RangeIndexDefinition : IndexDefinition { diff --git a/Sources/Runtime/Microsoft.Psi/Common/BufferWriter.cs b/Sources/Runtime/Microsoft.Psi/Common/BufferWriter.cs index e2af1865..b662589e 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/BufferWriter.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/BufferWriter.cs @@ -86,7 +86,7 @@ namespace Microsoft.Psi.Common fixed (byte* buf = this.buffer) { - // more efficient then Array.Copy or cpblk IL instruction because it handles small sizes explicitly + // more efficient than Array.Copy or cpblk IL instruction because it handles small sizes explicitly // http://referencesource.microsoft.com/#mscorlib/system/buffer.cs,c2ca91c0d34a8f86 System.Buffer.MemoryCopy(source, buf + start, this.buffer.Length - start, lenghtInBytes); } diff --git a/Sources/Runtime/Microsoft.Psi/Common/Envelope.cs b/Sources/Runtime/Microsoft.Psi/Common/Envelope.cs index 5466a503..3fb5d144 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Envelope.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Envelope.cs @@ -17,7 +17,7 @@ namespace Microsoft.Psi public int SourceId; /// - /// The sequence number of this message, unique within the stream idetified by . + /// The sequence number of this message, unique within the stream identified by . /// public int SequenceId; diff --git a/Sources/Runtime/Microsoft.Psi/Common/IStreamMetadata.cs b/Sources/Runtime/Microsoft.Psi/Common/IStreamMetadata.cs index 1aca3e93..ecbc1606 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/IStreamMetadata.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/IStreamMetadata.cs @@ -26,12 +26,17 @@ namespace Microsoft.Psi string TypeName { get; } /// - /// Gets the name of the partation where the stream is stored. + /// Gets the name of the type of supplemental metadata for the stream the metadata represents. + /// + string SupplementalMetadataTypeName { get; } + + /// + /// Gets the name of the partition where the stream is stored. /// string PartitionName { get; } /// - /// Gets the path of the partation where the stream is stored. + /// Gets the path of the partition where the stream is stored. /// string PartitionPath { get; } diff --git a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/AdjacentValuesInterpolator.cs b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/AdjacentValuesInterpolator.cs index 380b678f..30f07ca8 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/AdjacentValuesInterpolator.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/AdjacentValuesInterpolator.cs @@ -16,7 +16,7 @@ namespace Microsoft.Psi.Common.Interpolators /// The interpolator results do not depend on the wall-clock time of the messages arriving /// on the secondary stream, i.e., they are based on originating times of messages. As a result, /// the interpolator might introduce an extra delay as it might have to wait for enough messages on the - /// secondary stream to proove that the interpolation result is correct, irrespective of any other messages + /// secondary stream to prove that the interpolation result is correct, irrespective of any other messages /// that might arrive later. public class AdjacentValuesInterpolator : ReproducibleInterpolator { diff --git a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/FirstReproducibleInterpolator.cs b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/FirstReproducibleInterpolator.cs index 784a6b30..19b8bbe7 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/FirstReproducibleInterpolator.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/FirstReproducibleInterpolator.cs @@ -14,7 +14,7 @@ namespace Microsoft.Psi.Common.Interpolators /// The interpolator results do not depend on the wall-clock time of the messages arriving /// on the secondary stream, i.e., they are based on originating times of messages. As a result, /// the interpolator might introduce an extra delay as it might have to wait for enough messages on the - /// secondary stream to proove that the interpolation result is correct, irrespective of any other messages + /// secondary stream to prove that the interpolation result is correct, irrespective of any other messages /// that might arrive later. public sealed class FirstReproducibleInterpolator : ReproducibleInterpolator { diff --git a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/LastReproducibleInterpolator.cs b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/LastReproducibleInterpolator.cs index 980e20b8..0e883da8 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/LastReproducibleInterpolator.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/LastReproducibleInterpolator.cs @@ -14,7 +14,7 @@ namespace Microsoft.Psi.Common.Interpolators /// The interpolator results do not depend on the wall-clock time of the messages arriving /// on the secondary stream, i.e., they are based on originating times of messages. As a result, /// the interpolator might introduce an extra delay as it might have to wait for enough messages on the - /// secondary stream to proove that the interpolation result is correct, irrespective of any other messages + /// secondary stream to prove that the interpolation result is correct, irrespective of any other messages /// that might arrive later. public sealed class LastReproducibleInterpolator : ReproducibleInterpolator { @@ -57,7 +57,7 @@ namespace Microsoft.Psi.Common.Interpolators } } - // Look for the last match that's stil within the window + // Look for the last match that's still within the window Message lastMatchingMessage = default; bool found = false; @@ -116,8 +116,8 @@ namespace Microsoft.Psi.Common.Interpolators } } - // If we arrive here, it means we did not find a last message in the lookup window, - // which also means there is no message in the loopkup window. + // If we arrive here, it means we did not find a last message in the lookback window, + // which also means there is no message in the lookback window. // If the stream was closed or last message is at or past the upper search bound, if (closedOriginatingTime.HasValue || lastMessageIsOutsideWindowEnd) diff --git a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/NearestReproducibleInterpolator.cs b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/NearestReproducibleInterpolator.cs index 84b49a0b..1a82c311 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/NearestReproducibleInterpolator.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/NearestReproducibleInterpolator.cs @@ -14,7 +14,7 @@ namespace Microsoft.Psi.Common.Interpolators /// The interpolator results do not depend on the wall-clock time of the messages arriving /// on the secondary stream, i.e., they are based on originating times of messages. As a result, /// the interpolator might introduce an extra delay as it might have to wait for enough messages on the - /// secondary stream to proove that the interpolation result is correct, irrespective of any other messages + /// secondary stream to prove that the interpolation result is correct, irrespective of any other messages /// that might arrive later. public sealed class NearestReproducibleInterpolator : ReproducibleInterpolator { diff --git a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{TIn,TResult}.cs b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{TIn,TResult}.cs index 86ac0f66..b11171e9 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{TIn,TResult}.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{TIn,TResult}.cs @@ -11,7 +11,7 @@ namespace Microsoft.Psi /// Reproducible interpolators produce results that do not depend on the wall-clock time of /// message arrival on a stream, i.e., they are based on originating times of messages. As a result, /// these interpolators might introduce extra delays as they might have to wait for enough messages on the - /// secondary stream to proove that the interpolation result is correct, irrespective of any other messages + /// secondary stream to prove that the interpolation result is correct, irrespective of any other messages /// that might arrive later. public abstract class ReproducibleInterpolator : Interpolator { diff --git a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{T}.cs b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{T}.cs index df269e45..09ce661d 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{T}.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Interpolators/ReproducibleInterpolator{T}.cs @@ -12,7 +12,7 @@ namespace Microsoft.Psi /// Reproducible interpolators produce results that do not depend on the wall-clock time of /// message arrival on a stream, i.e., they are based on originating times of messages. As a result, /// these interpolators might introduce extra delays as they might have to wait for enough messages on the - /// secondary stream to proove that the interpolation result is correct, irrespective of any other messages + /// secondary stream to prove that the interpolation result is correct, irrespective of any other messages /// that might arrive later. public abstract class ReproducibleInterpolator : ReproducibleInterpolator { @@ -26,7 +26,7 @@ namespace Microsoft.Psi } /// - /// Implicitly convert timespan to the equivalent of a reproducibla nearest match with that tolerance. + /// Implicitly convert timespan to the equivalent of a reproducible nearest match with that tolerance. /// /// Relative window tolerance within which to match messages. public static implicit operator ReproducibleInterpolator(TimeSpan tolerance) diff --git a/Sources/Runtime/Microsoft.Psi/Common/Intervals/IInterval.cs b/Sources/Runtime/Microsoft.Psi/Common/Intervals/IInterval.cs index 390b949b..bea1458b 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Intervals/IInterval.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Intervals/IInterval.cs @@ -106,16 +106,16 @@ namespace Microsoft.Psi /// /// Scale from left point by a span distance. /// - /// Span by whith to scale left. - /// Span by whith to scale right. + /// Span by which to scale left. + /// Span by which to scale right. /// Scaled interval. T Scale(TSpan left, TSpan right); /// /// Scale from left point by a factor. /// - /// Factor by whith to scale left. - /// Factor by whith to scale right. + /// Factor by which to scale left. + /// Factor by which to scale right. /// Scaled interval. T Scale(float left, float right); diff --git a/Sources/Runtime/Microsoft.Psi/Common/Metadata.cs b/Sources/Runtime/Microsoft.Psi/Common/Metadata.cs index b1673d27..178127a3 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Metadata.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Metadata.cs @@ -22,7 +22,7 @@ namespace Microsoft.Psi RuntimeInfo = 1, /// - /// Metadata usied in storing the schema definitions used when serializing and deserializing a type in a Psi Store. + /// Metadata using in storing the schema definitions used when serializing and deserializing a type in a Psi Store. /// TypeSchema = 2, } @@ -59,7 +59,7 @@ namespace Microsoft.Psi public int Id { get; protected set; } /// - /// Gets or sets the name of the type of data conatined in the object the metadata represents. + /// Gets or sets the name of the type of data contained in the object the metadata represents. /// public string TypeName { get; protected set; } @@ -74,7 +74,7 @@ namespace Microsoft.Psi public int Version { get; protected set; } /// - /// Gets or sets the metadata serializer verson number. + /// Gets or sets the metadata serializer version number. /// public int SerializerVersion { get; protected set; } diff --git a/Sources/Runtime/Microsoft.Psi/Common/Platform.cs b/Sources/Runtime/Microsoft.Psi/Common/Platform.cs index 7182f3a4..48139e21 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Platform.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Platform.cs @@ -92,22 +92,21 @@ namespace Microsoft.Psi public Timer(uint delay, Time.TimerDelegate handler, bool periodic) { uint ignore = 0; - this.id = TimeSetEvent(delay, 0, handler, ref ignore, (uint)(periodic ? 1 : 0)); + uint eventType = (uint)(periodic ? 1 : 0); + + // TIME_KILL_SYNCHRONOUS flag prevents timer event from occurring after timeKillEvent is called + eventType |= 0x100; + + this.id = NativeMethods.TimeSetEvent(delay, 0, handler, ref ignore, eventType); } public void Stop() { - if (TimeKillEvent(this.id) != 0) + if (NativeMethods.TimeKillEvent(this.id) != 0) { throw new ArgumentException("Invalid timer event ID."); } } - - [DllImport("winmm.dll", SetLastError = true, EntryPoint = "timeSetEvent")] - private static extern uint TimeSetEvent(uint delay, uint resolution, Time.TimerDelegate handler, ref uint userCtx, uint eventType); - - [DllImport("winmm.dll", SetLastError = true, EntryPoint = "timeKillEvent")] - private static extern uint TimeKillEvent(uint timerEventId); } internal sealed class HighResolutionTime : IHighResolutionTime @@ -115,7 +114,7 @@ namespace Microsoft.Psi public long TimeStamp() { long time; - if (!QueryPerformanceCounter(out time)) + if (!NativeMethods.QueryPerformanceCounter(out time)) { throw new NotImplementedException("QueryPerformanceCounter failed (supported on Windows XP and later)"); } @@ -126,7 +125,7 @@ namespace Microsoft.Psi public long TimeFrequency() { long freq; - if (!QueryPerformanceFrequency(out freq)) + if (!NativeMethods.QueryPerformanceFrequency(out freq)) { throw new NotImplementedException("QueryPerformanceFrequency failed (supported on Windows XP and later)"); } @@ -137,7 +136,7 @@ namespace Microsoft.Psi public long SystemTime() { long time; - GetSystemTimePreciseAsFileTime(out time); + NativeMethods.GetSystemTimePreciseAsFileTime(out time); return time; } @@ -145,15 +144,6 @@ namespace Microsoft.Psi { return new Timer(delay, handler, periodic); } - - [DllImport("kernel32.dll")] - private static extern void GetSystemTimePreciseAsFileTime(out long systemTimeAsFileTime); - - [DllImport("kernel32.dll")] - private static extern bool QueryPerformanceCounter(out long performanceCount); - - [DllImport("kernel32.dll")] - private static extern bool QueryPerformanceFrequency(out long frequency); } internal sealed class Threading : IThreading @@ -163,12 +153,31 @@ namespace Microsoft.Psi thread.SetApartmentState(state); } } + + private static class NativeMethods + { + [DllImport("winmm.dll", SetLastError = true, EntryPoint = "timeSetEvent")] + internal static extern uint TimeSetEvent(uint delay, uint resolution, Time.TimerDelegate handler, ref uint userCtx, uint eventType); + + [DllImport("winmm.dll", SetLastError = true, EntryPoint = "timeKillEvent")] + internal static extern uint TimeKillEvent(uint timerEventId); + + [DllImport("kernel32.dll")] + internal static extern void GetSystemTimePreciseAsFileTime(out long systemTimeAsFileTime); + + [DllImport("kernel32.dll")] + internal static extern bool QueryPerformanceCounter(out long performanceCount); + + [DllImport("kernel32.dll")] + internal static extern bool QueryPerformanceFrequency(out long frequency); + } } private static class Standard // Linux, Mac, ... { - internal sealed class Timer : ITimer + internal sealed class Timer : ITimer, IDisposable { + private readonly object timerDelegateLock = new object(); private System.Timers.Timer timer; public Timer(uint delay, Time.TimerDelegate handler, bool periodic) @@ -177,18 +186,34 @@ namespace Microsoft.Psi this.timer.AutoReset = periodic; this.timer.Elapsed += (sender, args) => { - lock (this.timer) + lock (this.timerDelegateLock) { - handler(0, 0, UIntPtr.Zero, UIntPtr.Zero, UIntPtr.Zero); + // prevents handler from being called if timer has been stopped + if (this.timer != null) + { + handler(0, 0, UIntPtr.Zero, UIntPtr.Zero, UIntPtr.Zero); + } } }; this.timer.Start(); } + public void Dispose() + { + this.Stop(); + } + public void Stop() { - this.timer?.Stop(); - this.timer?.Dispose(); + if (this.timer != null) + { + lock (this.timerDelegateLock) + { + this.timer.Stop(); + this.timer.Dispose(); + this.timer = null; + } + } } private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e) diff --git a/Sources/Runtime/Microsoft.Psi/Common/PsiStreamMetadata.cs b/Sources/Runtime/Microsoft.Psi/Common/PsiStreamMetadata.cs index d644c530..c7f40d00 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/PsiStreamMetadata.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/PsiStreamMetadata.cs @@ -6,6 +6,7 @@ namespace Microsoft.Psi using System; using System.Collections.Generic; using Microsoft.Psi.Common; + using Microsoft.Psi.Serialization; /// /// Specifies custom flags for Psi data streams. @@ -39,15 +40,17 @@ namespace Microsoft.Psi /// public sealed class PsiStreamMetadata : Metadata, IStreamMetadata { + private const int CurrentVersion = 1; private const int TicksPerMicrosecond = 10; + private byte[] supplementalMetadataBytes = Array.Empty(); internal PsiStreamMetadata(string name, int id, string typeName) - : base(MetadataKind.StreamMetadata, name, id, typeName, 0, null, 0, 0) + : base(MetadataKind.StreamMetadata, name, id, typeName, CurrentVersion, null, 0, 0) { } internal PsiStreamMetadata(string name, int id, string typeName, int version, string serializerTypeName, int serializerVersion, ushort customFlags) - : base(MetadataKind.StreamMetadata, name, id, typeName, version, serializerTypeName, serializerVersion, customFlags) + : base(MetadataKind.StreamMetadata, name, id, typeName, version, serializerTypeName, serializerVersion, customFlags) { } @@ -141,6 +144,9 @@ namespace Microsoft.Psi } } + /// + public string SupplementalMetadataTypeName { get; private set; } + /// /// Gets the average frequency of messages written to this stream. /// @@ -190,6 +196,58 @@ namespace Microsoft.Psi this.LastMessageOriginatingTime = messagesOriginatingTimeInterval.Right; } + /// + /// Gets supplemental stream metadata. + /// + /// Type of supplemental metadata. + /// Known serializers. + /// Supplemental metadata. + internal T GetSupplementalMetadata(KnownSerializers serializers) + { + if (string.IsNullOrEmpty(this.SupplementalMetadataTypeName)) + { + throw new InvalidOperationException("Stream does not contain supplemental metadata."); + } + + if (typeof(T) != Type.GetType(this.SupplementalMetadataTypeName)) + { + throw new InvalidCastException($"Supplemental metadata type mismatch ({this.SupplementalMetadataTypeName})."); + } + + var handler = serializers.GetHandler(); + var reader = new BufferReader(this.supplementalMetadataBytes); + var target = default(T); + handler.Deserialize(reader, ref target, new SerializationContext(serializers)); + return target; + } + + /// + /// Sets supplemental stream metadata. + /// + /// Type of supplemental metadata. + /// Supplemental metadata value. + /// Known serializers. + internal void SetSupplementalMetadata(T value, KnownSerializers serializers) + { + this.SupplementalMetadataTypeName = typeof(T).AssemblyQualifiedName; + var handler = serializers.GetHandler(); + var writer = new BufferWriter(this.supplementalMetadataBytes); + handler.Serialize(writer, value, new SerializationContext(serializers)); + this.supplementalMetadataBytes = writer.Buffer; + } + + /// + /// Update supplemental stream metadata from another stream metadata. + /// + /// Other stream metadata from which to copy supplemental metadata. + /// Updated stream metadata. + internal PsiStreamMetadata UpdateSupplementalMetadataFrom(PsiStreamMetadata other) + { + this.SupplementalMetadataTypeName = other.SupplementalMetadataTypeName; + this.supplementalMetadataBytes = other.supplementalMetadataBytes; + return this; + } + // custom deserializer with no dependency on the Serializer subsystem // order of fields is important for backwards compat and must be the same as the order in Serialize, don't change! internal new void Deserialize(BufferReader metadataBuffer) @@ -212,6 +270,14 @@ namespace Microsoft.Psi this.RuntimeTypes.Add(metadataBuffer.ReadInt32(), metadataBuffer.ReadString()); } } + + if (this.Version >= 1) + { + this.SupplementalMetadataTypeName = metadataBuffer.ReadString(); + var len = metadataBuffer.ReadInt32(); + this.supplementalMetadataBytes = new byte[len]; + metadataBuffer.Read(this.supplementalMetadataBytes, len); + } } internal override void Serialize(BufferWriter metadataBuffer) @@ -235,6 +301,13 @@ namespace Microsoft.Psi metadataBuffer.Write(pair.Value); } } + + metadataBuffer.Write(this.SupplementalMetadataTypeName); + metadataBuffer.Write(this.supplementalMetadataBytes.Length); + if (this.supplementalMetadataBytes.Length > 0) + { + metadataBuffer.Write(this.supplementalMetadataBytes); + } } private bool GetFlag(StreamMetadataFlags smflag) diff --git a/Sources/Runtime/Microsoft.Psi/Common/Shared.cs b/Sources/Runtime/Microsoft.Psi/Common/Shared.cs index cf2500ef..8c2b2c17 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Shared.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Shared.cs @@ -153,7 +153,9 @@ namespace Microsoft.Psi e.AddHistory("Instance created", this.constructorStackTrace); e.AddHistory("Instance disposed", this.disposeStackTrace); #endif +#pragma warning disable CA1065 // Do not raise exceptions in unexpected locations throw e; +#pragma warning restore CA1065 // Do not raise exceptions in unexpected locations } #if TRACKLEAKS else @@ -213,7 +215,7 @@ namespace Microsoft.Psi public TypeSchema Initialize(KnownSerializers serializers, TypeSchema targetSchema) { this.handler = serializers.GetHandler>(); - var type = this.GetType(); + var type = typeof(Shared); var name = TypeSchema.GetContractName(type, serializers.RuntimeVersion); var innerMember = new TypeMemberSchema("inner", typeof(SharedContainer).AssemblyQualifiedName, true); var schema = new TypeSchema(name, TypeSchema.GetId(name), type.AssemblyQualifiedName, TypeFlags.IsClass, new TypeMemberSchema[] { innerMember }, Version); diff --git a/Sources/Runtime/Microsoft.Psi/Common/SharedContainer.cs b/Sources/Runtime/Microsoft.Psi/Common/SharedContainer.cs index 374a1089..e2bf60cc 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/SharedContainer.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/SharedContainer.cs @@ -77,7 +77,7 @@ namespace Microsoft.Psi public TypeSchema Initialize(KnownSerializers serializers, TypeSchema targetSchema) { this.handler = serializers.GetHandler(); - var type = this.GetType(); + var type = typeof(SharedContainer); var name = TypeSchema.GetContractName(type, serializers.RuntimeVersion); var resourceMember = new TypeMemberSchema("resource", typeof(T).AssemblyQualifiedName, true); var schema = new TypeSchema(name, TypeSchema.GetId(name), type.AssemblyQualifiedName, TypeFlags.IsClass, new TypeMemberSchema[] { resourceMember }, Version); diff --git a/Sources/Runtime/Microsoft.Psi/Common/TickCalibration.cs b/Sources/Runtime/Microsoft.Psi/Common/TickCalibration.cs index caa74b2d..54ed54a9 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/TickCalibration.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/TickCalibration.cs @@ -130,7 +130,7 @@ namespace Microsoft.Psi /// Attempts to recalibrate elapsed ticks against the system time. The current elapsed ticks from /// the performance counter will be compared against the current system time and the calibration /// data will be modified only if it is determined that the times have drifted by more than the - /// maxmimum allowed amount since the last calibration. + /// maximum allowed amount since the last calibration. /// /// Forces the calibration data to be modified regardless of the observed drift. internal void Recalibrate(bool force = false) diff --git a/Sources/Runtime/Microsoft.Psi/Common/Time.cs b/Sources/Runtime/Microsoft.Psi/Common/Time.cs index b4581478..0a5bda3f 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/Time.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/Time.cs @@ -51,7 +51,7 @@ namespace Microsoft.Psi /// /// Returns the system UTC time represented by the number of 100ns ticks from system boot. /// The tick counter is calibrated against system time to a precision that is determined - /// by the tickSyncPrecision argument of the constuctor + /// by the tickSyncPrecision argument of the constructor /// (1 microsecond by default). To account for OS system clock adjustments which may cause /// the tick counter to drift relative to the system clock, the calibration is repeated /// whenever the drift exceeds a predefined maximum (1 millisecond by default). diff --git a/Sources/Runtime/Microsoft.Psi/Common/TypeResolutionHelper.cs b/Sources/Runtime/Microsoft.Psi/Common/TypeResolutionHelper.cs index 18c93320..1f21c2a1 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/TypeResolutionHelper.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/TypeResolutionHelper.cs @@ -6,6 +6,7 @@ namespace Microsoft.Psi using System; using System.Linq; using System.Reflection; + using System.Text.RegularExpressions; /// /// Helper class for type resolution. @@ -23,9 +24,25 @@ namespace Microsoft.Psi return Type.GetType(typeName, AssemblyResolver, null); } + /// + /// Removes the assembly name from an assembly-qualified type name, returning the fully + /// qualified name of the type, including its namespace but not the assembly name. + /// + /// A string representing the assembly-qualified name of a type. + /// The fully qualified name of the type, including its namespace but not the assembly name. + internal static string RemoveAssemblyName(string assemblyQualifiedName) + { + string typeName = assemblyQualifiedName; + + // strip out all assembly names (including in nested type parameters) + typeName = Regex.Replace(typeName, @",\s[^,\[\]\*]+", string.Empty); + + return typeName; + } + private static Assembly AssemblyResolver(AssemblyName assemblyName) { - // Get the list of currently loaded asemblies + // Get the list of currently loaded assemblies Assembly[] loadedAssemblies = AppDomain.CurrentDomain.GetAssemblies(); // Attempt to match by full name first diff --git a/Sources/Runtime/Microsoft.Psi/Common/UnmanagedArray.cs b/Sources/Runtime/Microsoft.Psi/Common/UnmanagedArray.cs index b097b4d4..976ec886 100644 --- a/Sources/Runtime/Microsoft.Psi/Common/UnmanagedArray.cs +++ b/Sources/Runtime/Microsoft.Psi/Common/UnmanagedArray.cs @@ -86,7 +86,7 @@ namespace Microsoft.Psi.Common /// /// Gets the number of elements in the array. /// - int ICollection.Count => this.length; + public int Count => this.length; /// /// Gets the size of the allocated memory, in bytes. @@ -96,7 +96,7 @@ namespace Microsoft.Psi.Common /// /// Gets a value indicating whether the array can be modified or not. /// - bool ICollection.IsReadOnly => this.isReadOnly; + public bool IsReadOnly => this.isReadOnly; /// /// Gets or sets the value of the element at the specified index. @@ -110,7 +110,7 @@ namespace Microsoft.Psi.Common { if (index < 0 || index > this.length) { - throw new IndexOutOfRangeException(); + throw new ArgumentException(); } return MemoryAccess.ReadValue(this.data + (index * ElementSize)); @@ -458,7 +458,7 @@ namespace Microsoft.Psi.Common } /// - IEnumerator IEnumerable.GetEnumerator() + public IEnumerator GetEnumerator() { return new UnmanagedEnumerator(this); } diff --git a/Sources/Runtime/Microsoft.Psi/Components/Generator{T}.cs b/Sources/Runtime/Microsoft.Psi/Components/Generator{T}.cs index 1131621d..211437eb 100644 --- a/Sources/Runtime/Microsoft.Psi/Components/Generator{T}.cs +++ b/Sources/Runtime/Microsoft.Psi/Components/Generator{T}.cs @@ -16,7 +16,7 @@ namespace Microsoft.Psi.Components /// The static functions provided by the wrap /// and are designed to make the common cases easier. /// - public class Generator : Generator, IProducer + public class Generator : Generator, IProducer, IDisposable { private readonly Enumerator enumerator; @@ -26,7 +26,7 @@ namespace Microsoft.Psi.Components /// The pipeline to attach to. /// A lazy enumerator of data. /// The interval used to increment time on each generated message. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with the specified time. /// If true, mark this Generator instance as representing an infinite source (e.g., a live-running sensor). /// If false (default), it represents a finite source (e.g., Generating messages based on a finite file or IEnumerable). @@ -65,6 +65,12 @@ namespace Microsoft.Psi.Components /// public Emitter Out { get; } + /// + public void Dispose() + { + this.enumerator?.Dispose(); + } + /// /// Called to generate the next value. /// diff --git a/Sources/Runtime/Microsoft.Psi/Components/Processor.cs b/Sources/Runtime/Microsoft.Psi/Components/Processor.cs index 462ec3e0..e7fbbbb4 100644 --- a/Sources/Runtime/Microsoft.Psi/Components/Processor.cs +++ b/Sources/Runtime/Microsoft.Psi/Components/Processor.cs @@ -32,7 +32,7 @@ namespace Microsoft.Psi.Components } /// - /// Override this method to process the incomming message and potentially publish one or more output messages. + /// Override this method to process the incoming message and potentially publish one or more output messages. /// The input message payload is only valid for the duration of the call. /// If the data needs to be stored beyond the scope of this method, /// use the extension method to create a private copy. diff --git a/Sources/Runtime/Microsoft.Psi/Components/RelativeTimeWindow.cs b/Sources/Runtime/Microsoft.Psi/Components/RelativeTimeWindow.cs index a66ef58c..6faea24e 100644 --- a/Sources/Runtime/Microsoft.Psi/Components/RelativeTimeWindow.cs +++ b/Sources/Runtime/Microsoft.Psi/Components/RelativeTimeWindow.cs @@ -21,7 +21,6 @@ namespace Microsoft.Psi.Components private int anchorMessageSequenceId = -1; private DateTime anchorMessageOriginatingTime = DateTime.MinValue; - private bool initialBuffer; // constructing first initial buffer /// /// Initializes a new instance of the class. @@ -29,60 +28,29 @@ namespace Microsoft.Psi.Components /// Pipeline to which this component belongs. /// The relative time interval over which to gather messages. /// Select output message from collected window of input messages. - /// Whether to wait for seeing a complete window before computing the selector function and posting the first time. True by default. - public RelativeTimeWindow(Pipeline pipeline, RelativeTimeInterval relativeTimeInterval, Func>, TOutput> selector, bool waitForCompleteWindow = true) + public RelativeTimeWindow(Pipeline pipeline, RelativeTimeInterval relativeTimeInterval, Func>, TOutput> selector) : base(pipeline) { this.relativeTimeInterval = relativeTimeInterval; this.selector = selector; this.In.Unsubscribed += _ => this.OnUnsubscribed(); - - // If false, processing should begin immediately without waiting for full window length. - this.initialBuffer = waitForCompleteWindow; } /// protected override void Receive(TInput value, Envelope envelope) { - // clone and add the new message - var message = new Message(value, envelope).DeepClone(this.recycler); - - // time-based - if (this.initialBuffer) - { - var clone = this.buffer.DeepClone(); - this.buffer.Enqueue(message); - if (this.CheckRemoval()) - { - this.initialBuffer = false; - this.ProcessWindow(clone, false, this.Out); - this.ProcessRemoval(); - this.ProcessWindow(this.buffer, false, this.Out); - } - } - else - { - this.buffer.Enqueue(message); - this.ProcessRemoval(); - this.ProcessWindow(this.buffer, false, this.Out); - } + this.buffer.Enqueue(new Message(value, envelope).DeepClone(this.recycler)); + this.ProcessRemoval(); + this.ProcessWindow(this.buffer, false, this.Out); } private bool RemoveCondition(Message message) { - if (this.initialBuffer) - { - return message.OriginatingTime < (this.buffer.Last().OriginatingTime + this.relativeTimeInterval).Left; - } - else - { - return this.anchorMessageOriginatingTime > DateTime.MinValue && message.OriginatingTime < (this.anchorMessageOriginatingTime + this.relativeTimeInterval).Left; - } + return this.anchorMessageOriginatingTime > DateTime.MinValue && message.OriginatingTime < (this.anchorMessageOriginatingTime + this.relativeTimeInterval).Left; } private void ProcessWindow(IEnumerable> messageList, bool final, Emitter emitter) { - this.initialBuffer = false; var messages = messageList.ToArray(); var anchorMessageIndex = 0; if (this.anchorMessageSequenceId >= 0) diff --git a/Sources/Runtime/Microsoft.Psi/Components/Zip.cs b/Sources/Runtime/Microsoft.Psi/Components/Zip.cs index c23da190..41ace483 100644 --- a/Sources/Runtime/Microsoft.Psi/Components/Zip.cs +++ b/Sources/Runtime/Microsoft.Psi/Components/Zip.cs @@ -3,16 +3,17 @@ namespace Microsoft.Psi.Components { - using System; using System.Collections.Generic; using System.Linq; /// - /// Zip one or more streams (T) into a single stream (Message{T}) while ensuring delivery in originating time order (ordered within single tick by stream ID). + /// Zip one or more streams (T) into a single stream while ensuring delivery in originating time order. /// - /// Messages are produced in originating-time order; potentially delayed in wall-clock time. + /// Messages are produced in originating-time order; potentially delayed in wall-clock time. + /// If multiple messages arrive with the same originating time, they are added in the output array in + /// the order of stream ids. /// The type of the messages. - public class Zip : IProducer> + public class Zip : IProducer { private readonly Pipeline pipeline; private readonly IList> inputs = new List>(); @@ -25,13 +26,13 @@ namespace Microsoft.Psi.Components public Zip(Pipeline pipeline) { this.pipeline = pipeline; - this.Out = pipeline.CreateEmitter>(this, nameof(this.Out)); + this.Out = pipeline.CreateEmitter(this, nameof(this.Out)); } /// /// Gets the output emitter. /// - public Emitter> Out { get; } + public Emitter Out { get; } /// /// Add input receiver. @@ -57,35 +58,33 @@ namespace Microsoft.Psi.Components } } - private void Receive(T clonedData, Envelope e, IRecyclingPool recycler) + private void Receive(T clonedData, Envelope envelope, IRecyclingPool recycler) { - this.buffer.Add((data: clonedData, envelope: e, recycler: recycler)); + this.buffer.Add((data: clonedData, envelope, recycler)); this.Publish(); } private void Publish() { - var frontier = this.inputs.Min(i => i.LastEnvelope.OriginatingTime); // earliest last originating time across inputs - var eligible = from m in this.buffer - where frontier > m.envelope.OriginatingTime // later messages seen on _all_ (non-closed) inputs - orderby m.envelope.OriginatingTime, m.envelope.SourceId // originating time order (by source ID if collision) - select m; - foreach (var (data, envelope, recycler) in eligible.ToArray()) - { - var time = this.pipeline.GetCurrentTime(); - if (this.pipeline.FinalOriginatingTime > DateTime.MinValue && time >= this.pipeline.FinalOriginatingTime) - { - // pipeline is closing and these messages would be dropped by the scheduler if posted with current time - time = this.Out.LastEnvelope.OriginatingTime.AddTicks(1); // squeeze final messages in before pipeline shutdown if possible - if (time > this.pipeline.FinalOriginatingTime) - { - throw new Exception("Zip has been forced to drop messages due to pipeline shutdown"); - } - } + // find out the earliest last originating time across inputs + var frontier = this.inputs.Min(i => i.LastEnvelope.OriginatingTime); - this.Out.Post(Message.Create(data, envelope), time); - recycler.Recycle(data); - this.buffer.Remove((data, envelope, recycler)); + // get the groups of messages ready to be published + var eligible = this.buffer + .Where(m => m.envelope.OriginatingTime < frontier) + .OrderBy(m => m.envelope.OriginatingTime) + .ThenBy(m => m.envelope.SourceId) + .GroupBy(m => m.envelope.OriginatingTime); + + foreach (var group in eligible.ToArray()) + { + this.Out.Post(group.Select(t => t.data).ToArray(), group.Key); + + foreach (var (data, envelope, recycler) in group) + { + this.buffer.Remove((data, envelope, recycler)); + recycler.Recycle(data); + } } } } diff --git a/Sources/Runtime/Microsoft.Psi/Data/Exporter.cs b/Sources/Runtime/Microsoft.Psi/Data/Exporter.cs index 7a6f4029..2501a3e2 100644 --- a/Sources/Runtime/Microsoft.Psi/Data/Exporter.cs +++ b/Sources/Runtime/Microsoft.Psi/Data/Exporter.cs @@ -60,32 +60,6 @@ namespace Microsoft.Psi.Data }); } - /// - /// Used to define which emitters should be written to the store using WriteEmitters. - /// - public enum WriteWhichEmitters - { - /// - /// Write all emitters. - /// - All, - - /// - /// Write specified emitters. - /// - Specified, - - /// - /// Write connected emitters. - /// - Connected, - - /// - /// Write attributed emitters. - /// - Attributed, - } - /// /// Gets the name of the store being written to. /// @@ -117,48 +91,38 @@ namespace Microsoft.Psi.Data { this.writer.Dispose(); } + + this.throttle.Dispose(); } /// /// Writes the messages from the specified stream to the matching storage stream in this store. /// - /// The type of messages in the stream. + /// The type of messages in the stream. /// The source stream to write. /// The name of the storage stream. /// Indicates whether the stream contains large messages (typically >4k). If true, the messages will be written to the large message file. /// An optional delivery policy. - public void Write(Emitter source, string name, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) + public void Write(Emitter source, string name, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) { - // make sure we can serialize this type - var handler = this.serializers.GetHandler(); + this.WriteToStorage(source, name, largeMessages, deliveryPolicy); + } - // add another input to the merger to hook up the serializer to - // and check for duplicate names in the process - var mergeInput = this.merger.Add(name); - - // name the stream if it's not already named - var connector = new MessageConnector(source.Pipeline, this, null); - - // defaults to lossless delivery policy unless otherwise specified - source.PipeTo(connector, deliveryPolicy ?? DeliveryPolicy.Unlimited); - source.Name = connector.Out.Name = name; - source.Closed += closeTime => this.writer.CloseStream(source.Id, closeTime); - - // tell the writer to write the serialized stream - var meta = this.writer.OpenStream(source.Id, name, largeMessages, handler.Name); - - // register this stream with the store catalog - this.pipeline.ConfigurationStore.Set(Store.StreamMetadataNamespace, name, meta); - - // hook up the serializer - var serializer = new SerializerComponent(this, this.serializers); - - // The serializer and merger will act synchronously and throttle the connector for as long as - // the merger is busy writing data. This will cause messages to be queued or dropped at the input - // to the connector (per the user-supplied deliveryPolicy) until the merger is able to accept - // the next serialized data message. - serializer.PipeTo(mergeInput, allowWhileRunning: true, DeliveryPolicy.SynchronousOrThrottle); - connector.PipeTo(serializer, allowWhileRunning: true, DeliveryPolicy.SynchronousOrThrottle); + /// + /// Writes the messages from the specified stream to the matching storage stream in this store. + /// Additionally stores supplemental metadata value. + /// + /// The type of messages in the stream. + /// The type of supplemental stream metadata. + /// The source stream to write. + /// Supplemental metadata value. + /// The name of the storage stream. + /// Indicates whether the stream contains large messages (typically >4k). If true, the messages will be written to the large message file. + /// An optional delivery policy. + public void Write(Emitter source, TSupplementalMetadata supplementalMetadataValue, string name, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) + { + var meta = this.WriteToStorage(source, name, largeMessages, deliveryPolicy); + meta.SetSupplementalMetadata(supplementalMetadataValue, this.serializers); } /// @@ -203,88 +167,16 @@ namespace Microsoft.Psi.Data } /// - /// Given a pipeline source object (such as KinectSensor) this method will - /// write all emitters that match the requested properties to the current store. - /// This is useful for writing streams from a sensor to a store for later playback - /// via Importer.OpenAs(). + /// Writes the messages from the specified stream to the matching storage stream in this store. /// - /// Type of source to get emitters from (e.g. KinectSensor). - /// The source to write data from. - /// Used to indicate which emitters should be written. - /// List of stream names if streamToEmit==WriteWhichEmitters.Specified. - public void WriteEmitters(T sensor, WriteWhichEmitters streamsToEmit = WriteWhichEmitters.Connected, string[] streamNames = null) + /// The type of messages in the stream. + /// The source stream to write. + /// The name of the storage stream. + /// Source stream metadata. + /// An optional delivery policy. + internal void Write(Emitter source, string name, PsiStreamMetadata metadata, DeliveryPolicy deliveryPolicy = null) { - var objType = typeof(T); - var objProps = objType.GetProperties(); - foreach (var f in objProps) - { - var objPropType = f.PropertyType; - if (objPropType.GetInterface(nameof(IEmitter)) != null) - { - bool emit = false; - switch (streamsToEmit) - { - case WriteWhichEmitters.All: - emit = true; - break; - case WriteWhichEmitters.Specified: - if (streamNames != null) - { - foreach (var name in streamNames) - { - if (name == f.Name) - { - emit = true; - break; - } - } - } - - break; - case WriteWhichEmitters.Connected: - var theEmitter = f.GetValue(sensor); - if (theEmitter != null) - { - var hasSubscribers = objPropType.GetProperty("HasSubscribers").GetValue(theEmitter); - if ((bool)hasSubscribers) - { - emit = true; - } - } - - break; - case WriteWhichEmitters.Attributed: - if (Attribute.IsDefined(f, typeof(WriteStreamAttribute))) - { - emit = true; - } - - break; - } - - if (emit) - { - var propInfo = typeof(T).GetProperty(f.Name); - var writeMethods = typeof(Exporter).GetMethods(); - System.Reflection.MethodInfo writeMethod = null; - foreach (var mi in writeMethods) - { - if (mi.Name == nameof(this.Write) && mi.IsGenericMethod == true) - { - writeMethod = mi; - break; - } - } - - if (writeMethod != null) - { - var writeStream = writeMethod.MakeGenericMethod(objPropType.GetGenericArguments()); - object[] args = { propInfo.GetValue(sensor), f.Name, true, DeliveryPolicy.LatestMessage }; - writeStream.Invoke(this, args); - } - } - } - } + this.WriteToStorage(source, name, metadata.IsIndexed, deliveryPolicy).UpdateSupplementalMetadataFrom(metadata); } internal void Write(Emitter> source, PsiStreamMetadata meta, DeliveryPolicy> deliveryPolicy = null) @@ -303,13 +195,48 @@ namespace Microsoft.Psi.Data } /// - /// Class that defines an attribute used to indicate which Emitters should be - /// written when WriteEmitters is called. - /// Clients may place the [WriteStream] attribute on each emitter property - /// they want written. + /// Writes the messages from the specified stream to the matching storage stream in this store. /// - public class WriteStreamAttribute : Attribute + /// The type of messages in the stream. + /// The source stream to write. + /// The name of the storage stream. + /// Indicates whether the stream contains large messages (typically >4k). If true, the messages will be written to the large message file. + /// An optional delivery policy. + /// Stream metadata. + private PsiStreamMetadata WriteToStorage(Emitter source, string name, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) { + // make sure we can serialize this type + var handler = this.serializers.GetHandler(); + + // add another input to the merger to hook up the serializer to + // and check for duplicate names in the process + var mergeInput = this.merger.Add(name); + + // name the stream if it's not already named + var connector = new MessageConnector(source.Pipeline, this, null); + + // defaults to lossless delivery policy unless otherwise specified + source.PipeTo(connector, deliveryPolicy ?? DeliveryPolicy.Unlimited); + source.Name = connector.Out.Name = name; + source.Closed += closeTime => this.writer.CloseStream(source.Id, closeTime); + + // tell the writer to write the serialized stream + var meta = this.writer.OpenStream(source.Id, name, largeMessages, handler.Name); + + // register this stream with the store catalog + this.pipeline.ConfigurationStore.Set(Store.StreamMetadataNamespace, name, meta); + + // hook up the serializer + var serializer = new SerializerComponent(this, this.serializers); + + // The serializer and merger will act synchronously and throttle the connector for as long as + // the merger is busy writing data. This will cause messages to be queued or dropped at the input + // to the connector (per the user-supplied deliveryPolicy) until the merger is able to accept + // the next serialized data message. + serializer.PipeTo(mergeInput, allowWhileRunning: true, DeliveryPolicy.SynchronousOrThrottle); + connector.PipeTo(serializer, allowWhileRunning: true, DeliveryPolicy.SynchronousOrThrottle); + + return meta; } } } diff --git a/Sources/Runtime/Microsoft.Psi/Data/Importer.cs b/Sources/Runtime/Microsoft.Psi/Data/Importer.cs index 0c552b50..197256a3 100644 --- a/Sources/Runtime/Microsoft.Psi/Data/Importer.cs +++ b/Sources/Runtime/Microsoft.Psi/Data/Importer.cs @@ -24,7 +24,6 @@ namespace Microsoft.Psi.Data private readonly Splitter, int> splitter; private readonly Dictionary streams = new Dictionary(); private readonly Pipeline pipeline; - private KnownSerializers serializers; /// /// Initializes a new instance of the class. @@ -51,7 +50,7 @@ namespace Microsoft.Psi.Data /// Gets the set of types that this Importer can deserialize. /// Types can be added or re-mapped using the method. /// - public KnownSerializers Serializers => this.serializers; + public KnownSerializers Serializers { get; private set; } /// /// Gets the metadata of all the storage streams in this store. @@ -88,6 +87,18 @@ namespace Microsoft.Psi.Data /// The metadata associated with the storage stream. public PsiStreamMetadata GetMetadata(string streamName) => this.reader.GetMetadata(streamName); + /// + /// Returns the supplemental metadata for a specified storage stream. + /// + /// Type of supplemental metadata. + /// The name of the storage stream. + /// The metadata associated with the storage stream. + public T GetSupplementalMetadata(string streamName) + { + var meta = this.reader.GetMetadata(streamName); + return meta.GetSupplementalMetadata(this.Serializers); + } + /// /// Indicates whether the store contains the specified storage stream. /// @@ -153,7 +164,7 @@ namespace Microsoft.Psi.Data /// A stream that publishes the data read from the store. public IProducer OpenStream(string streamName, T reusableInstance = default(T)) { - return this.OpenStream(streamName, new DeserializerComponent(this, this.serializers, reusableInstance)); + return this.OpenStream(streamName, new DeserializerComponent(this, this.Serializers, reusableInstance)); } /// @@ -165,7 +176,7 @@ namespace Microsoft.Psi.Data /// A stream of dynamic that publishes the data read from the store. public IProducer OpenDynamicStream(string streamName) { - return this.OpenStream(streamName, new DynamicDeserializerComponent(this, this.reader.OpenStream(streamName).TypeName, this.serializers.Schemas), false); + return this.OpenStream(streamName, new DynamicDeserializerComponent(this, this.reader.OpenStream(streamName).TypeName, this.Serializers.Schemas), false); } /// @@ -177,6 +188,12 @@ namespace Microsoft.Psi.Data /// A stream of raw messages that publishes the data read from the store. internal Emitter> OpenRawStream(PsiStreamMetadata meta) { + if (meta.OriginatingLifetime != null && !meta.OriginatingLifetime.IsEmpty && meta.OriginatingLifetime.IsFinite) + { + // propose a replay time that covers the stream lifetime + this.ProposeReplayTime(meta.OriginatingLifetime); + } + this.reader.OpenStream(meta); // this checks for duplicates but bypasses type checks return this.splitter.Add(meta.Id); } @@ -194,15 +211,15 @@ namespace Microsoft.Psi.Data { // check that the requested type matches the stream type var streamType = meta.TypeName; - var requestedType = TypeSchema.GetContractName(typeof(T), this.serializers.RuntimeVersion); + var requestedType = TypeSchema.GetContractName(typeof(T), this.Serializers.RuntimeVersion); if (streamType != requestedType) { // check if the handler maps the stream type to the requested type - var handler = this.serializers.GetHandler(); + var handler = this.Serializers.GetHandler(); if (handler.Name != streamType) { - if (this.serializers.Schemas.TryGetValue(streamType, out var streamTypeSchema) && - this.serializers.Schemas.TryGetValue(requestedType, out var requestedTypeSchema)) + if (this.Serializers.Schemas.TryGetValue(streamType, out var streamTypeSchema) && + this.Serializers.Schemas.TryGetValue(requestedType, out var requestedTypeSchema)) { // validate compatibility - will throw if types are incompatible streamTypeSchema.ValidateCompatibleWith(requestedTypeSchema); @@ -252,12 +269,12 @@ namespace Microsoft.Psi.Data /// The version of the runtime that produced the store. private void LoadMetadata(IEnumerable metadata, RuntimeInfo runtimeVersion) { - if (this.serializers == null) + if (this.Serializers == null) { - this.serializers = new KnownSerializers(runtimeVersion); + this.Serializers = new KnownSerializers(runtimeVersion); } - this.serializers.RegisterMetadata(metadata); + this.Serializers.RegisterMetadata(metadata); } } } diff --git a/Sources/Runtime/Microsoft.Psi/Data/Store.cs b/Sources/Runtime/Microsoft.Psi/Data/Store.cs index 7f4865a6..1a7f5739 100644 --- a/Sources/Runtime/Microsoft.Psi/Data/Store.cs +++ b/Sources/Runtime/Microsoft.Psi/Data/Store.cs @@ -5,12 +5,11 @@ namespace Microsoft.Psi { using System; using System.Collections.Generic; - using System.Data; using System.IO; using System.Linq; + using System.Reflection; using System.Threading; using Microsoft.Psi.Common; - using Microsoft.Psi.Components; using Microsoft.Psi.Data; using Microsoft.Psi.Persistence; using Microsoft.Psi.Serialization; @@ -35,7 +34,7 @@ namespace Microsoft.Psi /// /// The Exporter maintains a collection of serializers it knows about, which it uses to serialize /// the data it writes to the store. By default, the Exporter derives the correct serializers - /// from the type argument passed to . In other words, + /// from the TMessage type argument passed to . In other words, /// for the most part simply knowing the stream type is sufficient to determine all the types needed to /// serialize the messages in the stream. /// Use the parameter to override the default behavior and provide a custom set of serializers. @@ -85,19 +84,37 @@ namespace Microsoft.Psi /// /// Writes the specified stream to a multi-stream store. /// - /// The type of messages in the stream. + /// The type of messages in the stream. /// The source stream to write. /// The name of the persisted stream. /// The store writer, created by e.g. . /// Indicates whether the stream contains large messages (typically >4k). If true, the messages will be written to the large message file. /// An optional delivery policy. /// The input stream. - public static IProducer Write(this IProducer source, string name, Exporter writer, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) + public static IProducer Write(this IProducer source, string name, Exporter writer, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) { writer.Write(source.Out, name, largeMessages, deliveryPolicy); return source; } + /// + /// Writes the specified stream to a multi-stream store. + /// + /// The type of messages in the stream. + /// The type of supplemental stream metadata. + /// The source stream to write. + /// Supplemental metadata value. + /// The name of the persisted stream. + /// The store writer, created by e.g. . + /// Indicates whether the stream contains large messages (typically >4k). If true, the messages will be written to the large message file. + /// An optional delivery policy. + /// The input stream. + public static IProducer Write(this IProducer source, TSupplementalMetadata supplementalMetadataValue, string name, Exporter writer, bool largeMessages = false, DeliveryPolicy deliveryPolicy = null) + { + writer.Write(source.Out, supplementalMetadataValue, name, largeMessages, deliveryPolicy); + return source; + } + /// /// Writes the envelopes for the specified stream to a multi-stream store. /// @@ -121,7 +138,7 @@ namespace Microsoft.Psi /// Returns true if the store exists. public static bool Exists(string name, string path) { - return (path == null) ? InfiniteFileReader.IsActive(StoreCommon.GetCatalogFileName(name), path) : StoreCommon.TryGetPathToLatestVersion(name, path, out string fullPath); + return (path == null) ? InfiniteFileReader.IsActive(StoreCommon.GetCatalogFileName(name), path) : StoreCommon.TryGetPathToLatestVersion(name, path, out _); } /// @@ -143,50 +160,18 @@ namespace Microsoft.Psi } /// - /// Repairs an invalid store. + /// Repairs an invalid store in place. /// /// The name of the store to check. /// The path of the store to check. - /// Indicates whether the original store should be deleted. - public static void Repair(string name, string path, bool deleteOldStore = true) + /// Indicates whether the original store should be deleted. + public static void Repair(string name, string path, bool deleteOriginalStore = true) { - string storePath = StoreCommon.GetPathToLatestVersion(name, path); - string tempFolderPath = Path.Combine(path, $"Repair-{Guid.NewGuid()}"); - - // call Crop over the entire store interval to regenerate and repair the streams in the store - Store.Crop((name, storePath), (name, tempFolderPath), TimeInterval.Infinite); - - // create a _BeforeRepair folder in which to save the original store files - var beforeRepairPath = Path.Combine(storePath, $"BeforeRepair-{Guid.NewGuid()}"); - Directory.CreateDirectory(beforeRepairPath); - - // Move the original store files to the BeforeRepair folder. Do this even if the deleteOldStore - // flag is true, as deleting the original store files immediately may occasionally fail. This can - // happen because the InfiniteFileReader disposes of its MemoryMappedView in a background - // thread, which may still be in progress. If deleteOldStore is true, we will delete the - // BeforeRepair folder at the very end (by which time any open MemoryMappedViews will likely - // have finished disposing). - foreach (var file in Directory.EnumerateFiles(storePath)) - { - var fileInfo = new FileInfo(file); - File.Move(file, Path.Combine(beforeRepairPath, fileInfo.Name)); - } - - // move the repaired store files to the original folder - foreach (var file in Directory.EnumerateFiles(Path.Combine(tempFolderPath, $"{name}.0000"))) - { - var fileInfo = new FileInfo(file); - File.Move(file, Path.Combine(storePath, fileInfo.Name)); - } - - // cleanup temporary folder - Directory.Delete(tempFolderPath, true); - - if (deleteOldStore) - { - // delete the old store files - Directory.Delete(beforeRepairPath, true); - } + PerformStoreOperationInPlace( + (name, path), + nameof(Repair), + (name, path, temp) => Store.Crop((name, path), (name, temp), TimeInterval.Infinite), + deleteOriginalStore); } /// @@ -204,15 +189,15 @@ namespace Microsoft.Psi /// An optional callback to which human-friendly information will be logged. public static void Crop((string Name, string Path) input, (string Name, string Path) output, TimeSpan start, RelativeTimeInterval length, bool createSubdirectory = true, IProgress progress = null, Action loggingCallback = null) { - Crop(input, output, store => new TimeInterval(store.ActiveTimeInterval.Left + start, length), createSubdirectory, progress, loggingCallback); + Copy(input, output, store => new TimeInterval(store.OriginatingTimeInterval.Left + start, length), null, createSubdirectory, progress, loggingCallback); } /// - /// Crops a store between the extents of a specified interval, generating a new store. + /// Crops a store between the extents of a specified originating time interval, generating a new store. /// /// The name and path of the store to crop. /// The name and path of the cropped store. - /// The time interval to which to crop the store. + /// The originating time interval to which to crop the store. /// /// Indicates whether to create a numbered subdirectory for each cropped store /// generated by multiple calls to this method. @@ -221,7 +206,88 @@ namespace Microsoft.Psi /// An optional callback to which human-friendly information will be logged. public static void Crop((string Name, string Path) input, (string Name, string Path) output, TimeInterval cropInterval, bool createSubdirectory = true, IProgress progress = null, Action loggingCallback = null) { - Crop(input, output, _ => cropInterval, createSubdirectory, progress, loggingCallback); + Copy(input, output, _ => cropInterval, null, createSubdirectory, progress, loggingCallback); + } + + /// + /// Crops a store in place between the extents of a specified interval. + /// + /// The name and path of the store to crop. + /// Start of crop interval relative to beginning of store. + /// Length of crop interval. + /// Indicates whether the original store should be deleted. + /// An optional progress reporter for progress updates. + /// An optional callback to which human-friendly information will be logged. + public static void CropInPlace((string Name, string Path) input, TimeSpan start, RelativeTimeInterval length, bool deleteOriginalStore = true, IProgress progress = null, Action loggingCallback = null) + { + PerformStoreOperationInPlace( + input, + nameof(Crop), + (name, path, temp) => Copy((name, path), (name, temp), store => new TimeInterval(store.OriginatingTimeInterval.Left + start, length), null, false, progress, loggingCallback), + deleteOriginalStore); + } + + /// + /// Crops a store in place between the extents of a specified originating time interval. + /// + /// The name and path of the store to crop. + /// The originating time interval to which to crop the store. + /// Indicates whether the original store should be deleted. + /// An optional progress reporter for progress updates. + /// An optional callback to which human-friendly information will be logged. + public static void CropInPlace((string Name, string Path) input, TimeInterval cropInterval, bool deleteOriginalStore = true, IProgress progress = null, Action loggingCallback = null) + { + PerformStoreOperationInPlace( + input, + nameof(Crop), + (name, path, temp) => Copy((name, path), (name, temp), _ => cropInterval, null, false, progress, loggingCallback), + deleteOriginalStore); + } + + /// + /// Copies a store, or a subset of it. + /// + /// The name and path of the store to crop. + /// The name and path of the cropped store. + /// An optional function that defines an originating time interval to copy. By default, the extents of the entire store. + /// An optional predicate that specifies which streams to include. By default, include all streams. By default, all streams are copied. + /// + /// Indicates whether to create a numbered subdirectory for each cropped store + /// generated by multiple calls to this method. + /// + /// An optional progress reporter for progress updates. + /// An optional callback to which human-friendly information will be logged. + public static void Copy( + (string Name, string Path) input, + (string Name, string Path) output, + Func cropIntervalFunction = null, + Predicate includeStreamPredicate = null, + bool createSubdirectory = true, + IProgress progress = null, + Action loggingCallback = null) + { + using var pipeline = Pipeline.Create(); + Importer inputStore = Store.Open(pipeline, input.Name, input.Path); + Exporter outputStore = Store.Create(pipeline, output.Name, output.Path, createSubdirectory, inputStore.Serializers); + + // setup the defaults + cropIntervalFunction ??= s => s.OriginatingTimeInterval; + includeStreamPredicate ??= _ => true; + + // copy all streams from inputStore to outputStore + foreach (var streamInfo in inputStore.AvailableStreams) + { + if (includeStreamPredicate(streamInfo)) + { + inputStore.CopyStream(streamInfo.Name, outputStore); + } + } + + // run the pipeline to copy over the specified timeInterval + loggingCallback?.Invoke("Copying store ..."); + pipeline.RunAsync(cropIntervalFunction(inputStore), false, progress); + pipeline.WaitAll(); + loggingCallback?.Invoke("Done."); } /// @@ -234,90 +300,86 @@ namespace Microsoft.Psi /// An optional callback to which human-friendly information will be logged. public static void Concatenate(IEnumerable<(string Name, string Path)> storeFiles, (string Name, string Path) output, IProgress progress = null, Action loggingCallback = null) { - using (var pipeline = Pipeline.Create(nameof(Concatenate), DeliveryPolicy.Unlimited)) + using var pipeline = Pipeline.Create(nameof(Concatenate), DeliveryPolicy.Unlimited); + var outputStore = Store.Create(pipeline, output.Name, output.Path); + var outputReceivers = new Dictionary>>(); // per-stream receivers writing to store + var inputStores = storeFiles.Select(file => (file, Store.Open(pipeline, file.Name, Path.GetFullPath(file.Path)))); + var streamMetas = inputStores.SelectMany(s => s.Item2.AvailableStreams).GroupBy(s => s.Name); // streams across input stores, grouped by name + var totalMessageCount = 0; // total messages in all stores + var totalWrittenCount = 0; // total currently written (to track progress) + var totalInFlight = 0; + foreach (var group in streamMetas) { - var outputStore = Store.Create(pipeline, output.Name, output.Path); - var outputReceivers = new Dictionary>>(); // per-stream receivers writing to store - var inputStores = storeFiles.Select(file => (file, Store.Open(pipeline, file.Name, Path.GetFullPath(file.Path)))); - var streamMetas = inputStores.SelectMany(s => s.Item2.AvailableStreams).GroupBy(s => s.Name); // streams across input stores, grouped by name - var totalMessageCount = 0; // total messages in all stores - var totalWrittenCount = 0; // total currently written (to track progress) - var totalInFlight = 0; - foreach (var group in streamMetas) - { - var name = group.Key; - loggingCallback?.Invoke($"Stream: {name}"); - var emitter = pipeline.CreateEmitter>(pipeline, name); - var meta = group.First(); // using meta from first store in which stream appears - outputStore.Write(emitter, meta); - outputReceivers.Add(name, pipeline.CreateReceiver>( - pipeline, - m => - { - emitter.Post(Message.Create(m.Data, m.OriginatingTime, m.Time, meta.Id, emitter.LastEnvelope.SequenceId + 1), m.OriginatingTime); - Interlocked.Decrement(ref totalInFlight); - Interlocked.Increment(ref totalWrittenCount); - if (totalWrittenCount % 10000 == 0) - { - progress?.Report((double)totalWrittenCount / totalMessageCount); - } - }, - name)); - - // validate types match across stores and stream lifetimes don't overlap - foreach (var stream in group) + var name = group.Key; + loggingCallback?.Invoke($"Stream: {name}"); + var emitter = pipeline.CreateEmitter>(pipeline, name); + var meta = group.First(); // using meta from first store in which stream appears + outputStore.Write(emitter, meta); + outputReceivers.Add(name, pipeline.CreateReceiver>( + pipeline, + m => { - totalMessageCount += stream.MessageCount; - loggingCallback?.Invoke($" Partition: {stream.PartitionName} {stream.Id} ({stream.TypeName.Split(',')[0]}) {stream.OriginatingLifetime.Left}-{stream.OriginatingLifetime.Right}"); - if (group.GroupBy(pair => pair.TypeName).Count() != 1) + emitter.Post(Message.Create(m.Data, m.OriginatingTime, m.Time, meta.Id, emitter.LastEnvelope.SequenceId + 1), m.OriginatingTime); + Interlocked.Decrement(ref totalInFlight); + Interlocked.Increment(ref totalWrittenCount); + if (totalWrittenCount % 10000 == 0) { - throw new ArgumentException("Type Mismatch"); + progress?.Report((double)totalWrittenCount / totalMessageCount); } + }, + name)); - foreach (var crosscheck in group) + // validate types match across stores and stream lifetimes don't overlap + foreach (var stream in group) + { + totalMessageCount += stream.MessageCount; + loggingCallback?.Invoke($" Partition: {stream.PartitionName} {stream.Id} ({stream.TypeName.Split(',')[0]}) {stream.OriginatingLifetime.Left}-{stream.OriginatingLifetime.Right}"); + if (group.GroupBy(pair => pair.TypeName).Count() != 1) + { + throw new ArgumentException("Type Mismatch"); + } + + foreach (var crosscheck in group) + { + if (crosscheck != stream && crosscheck.OriginatingLifetime.IntersectsWith(stream.OriginatingLifetime)) { - if (crosscheck != stream && crosscheck.OriginatingLifetime.IntersectsWith(stream.OriginatingLifetime)) - { - throw new ArgumentException("Originating Lifetime Overlap"); - } + throw new ArgumentException("Originating Lifetime Overlap"); } } } - - // for each store (in order), create pipeline to read to end; piping to receivers in outer pipeline - var orderedStores = inputStores.OrderBy(i => i.Item2.OriginatingTimeInterval.Left).Select(i => (i.file.Name, i.file.Path)); - Generators.Sequence(pipeline, orderedStores, TimeSpan.FromTicks(1)).Do(file => - { - loggingCallback?.Invoke($"Processing: {file.Name} {file.Path}"); - using (var p = Pipeline.Create(file.Name, DeliveryPolicy.Unlimited)) - { - var store = Store.Open(p, file.Name, Path.GetFullPath(file.Path)); - foreach (var stream in store.AvailableStreams) - { - var connector = store.CreateOutputConnectorTo>(pipeline, stream.Name); - store.OpenRawStream(stream).Do(_ => Interlocked.Increment(ref totalInFlight)).PipeTo(connector); - connector.Out.PipeTo(outputReceivers[stream.Name], true); // while outer pipeline running - } - - p.Run(); - - while (totalInFlight > 0) - { - Thread.Sleep(100); - } - - // unsubscribe to reuse receivers with next store - foreach (var r in outputReceivers.Values) - { - r.OnUnsubscribe(); - } - } - }); - - loggingCallback?.Invoke("Concatenating..."); - pipeline.Run(); - loggingCallback?.Invoke("Done."); } + + // for each store (in order), create pipeline to read to end; piping to receivers in outer pipeline + var orderedStores = inputStores.OrderBy(i => i.Item2.OriginatingTimeInterval.Left).Select(i => (i.file.Name, i.file.Path)); + Generators.Sequence(pipeline, orderedStores, TimeSpan.FromTicks(1)).Do(file => + { + loggingCallback?.Invoke($"Processing: {file.Name} {file.Path}"); + using var p = Pipeline.Create(file.Name, DeliveryPolicy.Unlimited); + var store = Store.Open(p, file.Name, Path.GetFullPath(file.Path)); + foreach (var stream in store.AvailableStreams) + { + var connector = store.CreateOutputConnectorTo>(pipeline, stream.Name); + store.OpenRawStream(stream).Do(_ => Interlocked.Increment(ref totalInFlight)).PipeTo(connector); + connector.Out.PipeTo(outputReceivers[stream.Name], true); // while outer pipeline running + } + + p.Run(); + + while (totalInFlight > 0) + { + Thread.Sleep(100); + } + + // unsubscribe to reuse receivers with next store + foreach (var r in outputReceivers.Values) + { + r.OnUnsubscribe(); + } + }); + + loggingCallback?.Invoke("Concatenating..."); + pipeline.Run(); + loggingCallback?.Invoke("Done."); } /// @@ -351,35 +413,166 @@ namespace Microsoft.Psi } /// - /// Crops a store between the extents of a specified interval, generating a new store. + /// Edit a store, or a subset of it. /// /// The name and path of the store to crop. /// The name and path of the cropped store. - /// Function creating crop interval. - /// - /// Indicates whether to create a numbered subdirectory for each cropped store - /// generated by multiple calls to this method. - /// + /// Dictionary of per-stream sequence of edits to be applied. Whether to update/insert or delete, an optional message to upsert and originating times. + /// An optional predicate that specifies which streams to include. By default, include all streams. By default, all streams are copied. + /// Indicates whether to create a numbered subdirectory for each cropped store generated by multiple calls to this method. /// An optional progress reporter for progress updates. /// An optional callback to which human-friendly information will be logged. - private static void Crop((string Name, string Path) input, (string Name, string Path) output, Func cropIntervalFn, bool createSubdirectory = true, IProgress progress = null, Action loggingCallback = null) + internal static void Edit( + (string Name, string Path) input, + (string Name, string Path) output, + IDictionary> streamEdits, + Predicate includeStreamPredicate = null, + bool createSubdirectory = true, + IProgress progress = null, + Action loggingCallback = null) { - using (var pipeline = Pipeline.Create("CropStore")) + includeStreamPredicate ??= _ => true; + using var pipeline = Pipeline.Create(); + Importer inputStore = Store.Open(pipeline, input.Name, input.Path); + Exporter outputStore = Store.Create(pipeline, output.Name, output.Path, createSubdirectory, inputStore.Serializers); + + // edit/copy all streams from inputStore to outputStore + foreach (var streamInfo in inputStore.AvailableStreams) { - Importer inputStore = Store.Open(pipeline, input.Name, input.Path); - Exporter outputStore = Store.Create(pipeline, output.Name, output.Path, createSubdirectory, inputStore.Serializers); - - // copy all streams from inputStore to outputStore - foreach (var streamInfo in inputStore.AvailableStreams) + if (includeStreamPredicate(streamInfo)) { - inputStore.CopyStream(streamInfo.Name, outputStore); + if (streamEdits.TryGetValue(streamInfo.Name, out var edits)) + { + var method = typeof(Store).GetMethod(nameof(Store.EditStreamWithDynamicUpserts), BindingFlags.NonPublic | BindingFlags.Static); + var streamType = Type.GetType(streamInfo.TypeName); + var generic = method.MakeGenericMethod(streamType); + generic.Invoke(inputStore, new object[] { inputStore, streamInfo.Name, edits, outputStore, null }); + } + else + { + inputStore.CopyStream(streamInfo.Name, outputStore); + } } + } - // run the pipeline to copy over the specified cropInterval - loggingCallback?.Invoke("Cropping..."); - pipeline.RunAsync(cropIntervalFn(inputStore), false, progress); - pipeline.WaitAll(); - loggingCallback?.Invoke("Done."); + loggingCallback?.Invoke("Editing store ..."); + + var minOriginatingTime = inputStore.OriginatingTimeInterval.Left; + var maxOriginatingTime = inputStore.OriginatingTimeInterval.Right; + foreach (var edit in streamEdits.Values) + { + foreach (var message in edit) + { + var time = message.originatingTime; + minOriginatingTime = time < minOriginatingTime ? time : minOriginatingTime; + maxOriginatingTime = time > maxOriginatingTime ? time : maxOriginatingTime; + } + } + + pipeline.RunAsync(new TimeInterval(minOriginatingTime, maxOriginatingTime), false, progress); + pipeline.WaitAll(); + loggingCallback?.Invoke("Done."); + } + + /// + /// Edit a store in place, or a subset of it. + /// + /// The name and path of the store to crop. + /// Dictionary of per-stream sequence of edits to be applied. Whether to update/insert or delete, an optional message to upsert and originating times. + /// An optional predicate that specifies which streams to include. By default, include all streams. By default, all streams are copied. + /// Indicates whether the original store should be deleted. + /// An optional progress reporter for progress updates. + /// An optional callback to which human-friendly information will be logged. + internal static void EditInPlace( + (string Name, string Path) input, + IDictionary> streamEdits, + Predicate includeStreamPredicate = null, + bool deleteOriginalStore = true, + IProgress progress = null, + Action loggingCallback = null) + { + PerformStoreOperationInPlace( + input, + nameof(Edit), + (name, path, temp) => Edit((name, path), (name, temp), streamEdits, includeStreamPredicate, false, progress, loggingCallback), + deleteOriginalStore); + } + + /// + /// Edit messages in the specified storage stream and write to an exporter; applying updates/inserts and deletes. + /// + /// Importer from which to get stream being edited. + /// The name of the storage stream to edit. + /// A sequence of edits to be applied. Whether to update/insert or delete, an optional message to upsert and originating times. + /// The store into which to output. + /// An optional delivery policy. + private static void EditStream(this Importer importer, string streamName, IEnumerable<(bool upsert, T message, DateTime originatingTime)> edits, Exporter writer, DeliveryPolicy deliveryPolicy = null) + { + var stream = importer.OpenStream(streamName); + var edited = stream.EditStream(edits, deliveryPolicy); + var meta = importer.GetMetadata(streamName); + writer.Write(edited.Out, streamName, meta, deliveryPolicy); + } + + /// + /// Edit messages in the specified storage stream and write to an exporter; applying updates/inserts and deletes. + /// + /// Importer from which to get stream being edited. + /// The name of the storage stream to edit. + /// A sequence of edits to be applied. Whether to update/insert or delete, an optional message to upsert and originating times. + /// The store into which to output. + /// An optional delivery policy. + private static void EditStreamWithDynamicUpserts(this Importer importer, string streamName, IEnumerable<(bool upsert, dynamic message, DateTime originatingTime)> edits, Exporter writer, DeliveryPolicy deliveryPolicy = null) + { + var typedEdits = edits.Select(e => (e.upsert, (T)(e.message ?? default(T)), e.originatingTime)); + importer.EditStream(streamName, typedEdits, writer); + } + + /// + /// Perform store operation in place. + /// + /// The name and path of the store on which to perform operation. + /// Name of operation to perform. + /// Operation function to perform. + /// Indicates whether the original store should be deleted. + private static void PerformStoreOperationInPlace((string Name, string Path) input, string operationName, Action operationAction, bool deleteOriginalStore) + { + string storePath = StoreCommon.GetPathToLatestVersion(input.Name, input.Path); + string tempFolderPath = Path.Combine(input.Path, $"{operationName}-{Guid.NewGuid()}"); + + // invoke operation over the store; expected to generate a resulting store in the temp folder + operationAction(input.Name, storePath, tempFolderPath); + + // create a Before* folder in which to save the original store files + var beforePath = Path.Combine(storePath, $"Before{operationName}-{Guid.NewGuid()}"); + Directory.CreateDirectory(beforePath); + + // Move the original store files to the Before* folder. Do this even if the deleteOriginalStore + // flag is true, as deleting the original store files immediately may occasionally fail. This can + // happen because the InfiniteFileReader disposes of its MemoryMappedView in a background + // thread, which may still be in progress. If deleteOriginalStore is true, we will delete the + // Before* folder at the very end (by which time any open MemoryMappedViews will likely + // have finished disposing). + foreach (var file in Directory.EnumerateFiles(storePath)) + { + var fileInfo = new FileInfo(file); + File.Move(file, Path.Combine(beforePath, fileInfo.Name)); + } + + // move the new store files to the original folder + foreach (var file in Directory.EnumerateFiles(Path.Combine(tempFolderPath, $"{input.Name}.0000"))) + { + var fileInfo = new FileInfo(file); + File.Move(file, Path.Combine(storePath, fileInfo.Name)); + } + + // cleanup temporary folder + Directory.Delete(tempFolderPath, true); + + if (deleteOriginalStore) + { + // delete the old store files + Directory.Delete(beforePath, true); } } } diff --git a/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnostics.cs b/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnostics.cs index 95f27eda..edee0ca8 100644 --- a/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnostics.cs +++ b/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnostics.cs @@ -12,7 +12,7 @@ namespace Microsoft.Psi.Diagnostics /// Represents diagnostic information about a pipeline. /// /// - /// This is a sumarized snapshot of the graph with aggregated message statistics which is posted to the + /// This is a summarized snapshot of the graph with aggregated message statistics which is posted to the /// diagnostics stream. It has a much smaller memory footprint compared with PipelineDiagnosticsInternal. /// public class PipelineDiagnostics diff --git a/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnosticsInternal.cs b/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnosticsInternal.cs index bd567056..0f4ded72 100644 --- a/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnosticsInternal.cs +++ b/Sources/Runtime/Microsoft.Psi/Diagnostics/PipelineDiagnosticsInternal.cs @@ -12,7 +12,7 @@ namespace Microsoft.Psi.Diagnostics /// /// /// This is used while gathering live diagnostics information. It is optimized for lookups with Dictionaries and - /// maintains latency, processing time, message size histories. This information is sumarized before being posted + /// maintains latency, processing time, message size histories. This information is summarized before being posted /// as PipelineDiagnostics. /// internal class PipelineDiagnosticsInternal diff --git a/Sources/Runtime/Microsoft.Psi/Executive/Pipeline.cs b/Sources/Runtime/Microsoft.Psi/Executive/Pipeline.cs index a1527b9f..271ae858 100644 --- a/Sources/Runtime/Microsoft.Psi/Executive/Pipeline.cs +++ b/Sources/Runtime/Microsoft.Psi/Executive/Pipeline.cs @@ -73,6 +73,7 @@ namespace Microsoft.Psi private IProgress progressReporter; private Time.TimerDelegate progressDelegate; private Platform.ITimer progressTimer; + private bool pipelineRunEventHandled = false; /// /// Initializes a new instance of the class. @@ -94,9 +95,6 @@ namespace Microsoft.Psi { this.scheduler = new Scheduler(this.ErrorHandler, threadCount, allowSchedulingOnExternalThreads, name); this.schedulerContext = new SchedulerContext(); - - // stop the scheduler when the main pipeline completes - this.PipelineCompleted += (sender, args) => this.scheduler.Stop(args.AbandonedPendingWorkitems); } /// @@ -277,7 +275,7 @@ namespace Microsoft.Psi /// /// /// This is an rather than a as we need the - /// event to trigger one and only one action when signalled. + /// event to trigger one and only one action when signaled. /// protected AutoResetEvent NoRemainingCompletableComponents { get; } = new AutoResetEvent(false); @@ -700,6 +698,10 @@ namespace Microsoft.Psi this.DisposeComponents(); this.components = null; this.DiagnosticsCollector?.PipelineDisposed(this); + this.completed.Dispose(); + this.scheduler.Dispose(); + this.schedulerContext.Dispose(); + this.activationContext.Dispose(); } internal void AddComponent(PipelineElement pe) @@ -783,17 +785,7 @@ namespace Microsoft.Psi } /// - /// Signal pipeline completion. - /// - /// Abandons the pending work items. - internal void Complete(bool abandonPendingWorkitems) - { - this.PipelineCompleted?.Invoke(this, new PipelineCompletedEventArgs(this.Clock.GetCurrentTime(), abandonPendingWorkitems, this.errors)); - this.state = State.Completed; - } - - /// - /// Apply action to this pipeline and to all descendent Subpipelines. + /// Apply action to this pipeline and to all descendant Subpipelines. /// /// Action to apply. internal void ForThisPipelineAndAllDescendentSubpipelines(Action action) @@ -822,13 +814,12 @@ namespace Microsoft.Psi var name = component.GetType().Name; var fullName = $"{id}.{name}"; node = new PipelineElement(id, fullName, component); - this.AddComponent(node); - if (this.IsRunning && node.IsSource && !(component is Subpipeline)) { throw new InvalidOperationException($"Source component added when pipeline already running. Consider using Subpipeline."); } + this.AddComponent(node); this.DiagnosticsCollector?.PipelineElementCreate(this, node, component); } @@ -886,8 +877,24 @@ namespace Microsoft.Psi this.ReportProgress(); // ensure that final progress is reported } + // stop the scheduler if this is the main pipeline + if (!(this is Subpipeline)) + { + this.scheduler.Stop(abandonPendingWorkitems); + } + + // pipeline has completed + this.state = State.Completed; + + // raise the pipeline completed event + this.OnPipelineCompleted( + new PipelineCompletedEventArgs( + this.FinalOriginatingTime, + abandonPendingWorkitems, + this.errors)); + + // signal all threads waiting on pipeline completion this.completed.Set(); - this.Complete(abandonPendingWorkitems); } /// @@ -923,9 +930,7 @@ namespace Microsoft.Psi this.DiagnosticsCollector?.PipelineStart(this); // raise the event prior to starting the components - this.PipelineRun?.Invoke(this, new PipelineRunEventArgs(this.StartTime)); - - this.state = State.Running; + this.OnPipelineRun(new PipelineRunEventArgs(this.StartTime)); // keep track of completable source components foreach (var component in this.components) @@ -951,6 +956,9 @@ namespace Microsoft.Psi // wait for component activation to finish this.scheduler.PauseForQuiescence(this.activationContext); + // all components started - pipeline is now running + this.state = State.Running; + // now start scheduling work on the main scheduler context this.scheduler.StartScheduling(this.schedulerContext); @@ -1091,9 +1099,9 @@ namespace Microsoft.Psi /// Mapping of emitter IDs to corresponding nodes. /// Known nodes (with inputs) representing Connectors. /// Whether to consider nodes that are members of a pure cycle to be finalizable. - /// Whether to consider only direct cycles (node is it's own parent). + /// Whether to consider only self-cycles (node is it's own parent). /// An indication of eligibility for finalization. - private static bool IsNodeFinalizable(PipelineElement node, Dictionary emitterNodes, Dictionary inputConnectors, bool includeCycles, bool onlyDirectCycles) + private static bool IsNodeFinalizable(PipelineElement node, Dictionary emitterNodes, Dictionary inputConnectors, bool includeCycles, bool onlySelfCycles) { if (node.IsFinalized) { @@ -1115,7 +1123,7 @@ namespace Microsoft.Psi PipelineElement parent; if (emitterNodes.TryGetValue(emitter.Id, out parent)) { - if (onlyDirectCycles) + if (onlySelfCycles) { if (parent != node) { @@ -1139,13 +1147,40 @@ namespace Microsoft.Psi PipelineElement bridge; if (TryGetConnectorBridge(node, inputConnectors, out bridge)) { - return IsNodeFinalizable(bridge, emitterNodes, inputConnectors, includeCycles, onlyDirectCycles); + return IsNodeFinalizable(bridge, emitterNodes, inputConnectors, includeCycles, onlySelfCycles); } } return true; } + /// + /// Raises the event. + /// + /// A that contains the event data. + private void OnPipelineRun(PipelineRunEventArgs e) + { + // ensure that event will only be raised once + if (!this.pipelineRunEventHandled) + { + // raise the PipelineRun event for all subpipelines + this.ForThisPipelineAndAllDescendentSubpipelines(p => + { + p.PipelineRun?.Invoke(p, e); + p.pipelineRunEventHandled = true; + }); + } + } + + /// + /// Raises the event. + /// + /// A that contains the event data. + private void OnPipelineCompleted(PipelineCompletedEventArgs e) + { + this.PipelineCompleted?.Invoke(this, e); + } + /// /// Deactivates all active components. /// @@ -1178,8 +1213,35 @@ namespace Microsoft.Psi } /// - /// Finalize child components. + /// Finalizes all components within the pipeline and all subpipelines. The graph of the pipeline is iteratively + /// inspected for nodes (representing components) that are finalizable. On each pass, nodes with no active + /// inputs (i.e. whose receivers are all unsubscribed) are finalized immediately and their emitters are closed. + /// The act of finalizing a node and closing its emitters may in turn cause downstream nodes to also become + /// finalizable if all of their receivers become unsubscribed. This process is repeated until no finalizable + /// nodes are found. Remaining active nodes are then inspected for their participation in cycles. + /// + /// We identify three kinds of nodes, depending on their participation in various types of cycles: + /// - A node in a self-cycle whose active inputs are all directly connected to its outputs. + /// - A node participating in only simple (or pure) cycles where every one of its active inputs (and those of + /// its predecessor nodes) cycle back to itself. + /// - A node which has at least one active input on a directed path that is not a simple cycle back to itself. + /// + /// Once there are no immediately finalizable nodes found, any nodes containing self cycles are finalized next. + /// This may cause direct successor nodes to become finalizable once they have no active inputs. When there are + /// again no more finalizable nodes, the graph is inspected for nodes in pure cycles. A node in the cycle is + /// chosen arbitrarily and finalized to break the cycle. This process is iterated over until all that remains + /// are nodes which have inputs that are not exclusively simple cycles (e.g. a cyclic node with a predecessor + /// that is also on a different cycle), or nodes with such cycles upstream. The node with the most number of + /// outputs (used as a heuristic to finalize terminal nodes last) is finalized, then the remaining nodes are + /// evaluated for finalization using the same order of criteria as before (nodes with no active inputs, nodes + /// with only self-cycles, nodes in only simple cycles, etc.) until all nodes have been finalized. /// + /// + /// Prior to calling this method, all source components should first be deactivated such that they are no + /// longer producing new source messages. The act of finalizing a node may cause it to post new messages to + /// downstream components. It is therefore important to allow the pipeline to drain once there are no longer + /// any nodes without active inputs remaining (these are always safe to finalize immediately). + /// private void FinalizeComponents() { IList nodes = GatherActiveNodes(this).ToList(); // all non-finalized node within pipeline and subpipelines @@ -1192,61 +1254,87 @@ namespace Microsoft.Psi { foreach (var output in node.Outputs) { + // used for looking up source nodes from active receiver inputs when testing for cycles emitterNodes.Add(output.Value.Id, node); } if (node.Inputs.Count > 0 && IsConnector(node)) { + // Used for looking up the input-side of a pipeline-bridging connector (these + // have an input node and an output node on each side of the bridge). inputConnectors.Add(node.StateObject, node); } } - // finalize eligible nodes with no active receivers - var finalizable = nodes.Where(n => IsNodeFinalizable(n, emitterNodes, inputConnectors, false, false)); - if (finalizable.Count() == 0) + // initially we exclude nodes which are in a cycle + bool includeCycles = false; + bool onlySelfCycles = false; + + // This is a LINQ expression which queries the list of all active nodes for nodes which are eligible to + // be finalized immediately (i.e. without waiting for messages currently in the pipeline to drain). + // Initially, only nodes which have no active receivers are considered finalizable. If there are no + // such nodes found, messages in the pipeline are allowed to drain. We then progressively loosen the + // requirements by including nodes with self-cycles, followed by nodes which are part of pure cycles + // (nodes which have *only* cyclic inputs). Once a node has been finalized, more nodes may then become + // finalizable as their receivers unsubscribe from the emitters of finalized node. The predicate + // function IsNodeFinalizable() in the LINQ expression is evaluated for each node in the finalization + // loop to determine its eligibility for finalization. If true, then the node may be finalized safely. + var finalizable = nodes.Where(n => IsNodeFinalizable(n, emitterNodes, inputConnectors, includeCycles, onlySelfCycles)); + + // if we cannot find any nodes to finalize + if (!finalizable.Any()) { // try letting messages drain, then look for finalizable nodes again (there may have been closing messages in-flight) this.PauseForQuiescence(); - finalizable = nodes.Where(n => IsNodeFinalizable(n, emitterNodes, inputConnectors, false, false)); - } - if (finalizable.Count() == 0) - { - // try eliminating direct cycles first (nodes receiving only from themselves - these are completely safe) - finalizable = nodes.Where(n => IsNodeFinalizable(n, emitterNodes, inputConnectors, true, true)); - } - - if (finalizable.Count() == 0) - { - // try eliminating indirect cycles (nodes indirectly from themselves - these finalize in arbitrary order!) - finalizable = nodes.Where(n => IsNodeFinalizable(n, emitterNodes, inputConnectors, true, false)); -#if DEBUG - if (finalizable.Count() > 0) + // if we still cannot find any nodes to finalize + if (!finalizable.Any()) { - Debug.WriteLine("FINALIZING INDIRECT CYCLES (UNSAFE ARBITRARY FINALIZATION ORDER)"); - foreach (var node in finalizable) + // include nodes containing self-cycles (nodes receiving only from themselves - these are completely safe to finalize) + includeCycles = true; + onlySelfCycles = true; + + // if there are no nodes containing self-cycles + if (!finalizable.Any()) { - Debug.WriteLine($" FINALIZING {node.Name} {node.StateObject} {node.StateObject.GetType()}"); + // include nodes in pure cycles (nodes receiving indirectly from themselves - these finalize in arbitrary order!) + onlySelfCycles = false; +#if DEBUG + if (finalizable.Any()) + { + Debug.WriteLine("FINALIZING SIMPLE CYCLES (UNSAFE ARBITRARY FINALIZATION ORDER)"); + foreach (var node in finalizable) + { + Debug.WriteLine($" FINALIZING {node.Name} {node.StateObject} {node.StateObject.GetType()}"); + } + } +#endif + + // no finalizable nodes found (including self and simple cycles) + if (!finalizable.Any()) + { + // All remaining nodes are either nodes which are part of a non-pure cycle (i.e. not all of its inputs + // and those of its predecessors cycle back to itself), or nodes with such cycles upstream. Pick the + // node with the most number of active inputs to finalize first, then search the graph again for + // finalizable nodes with no active inputs. + var node = nodes.OrderBy(n => -n.Outputs.Where(o => o.Value.HasSubscribers).Count()).FirstOrDefault(); + if (node != null) + { +#if DEBUG + Debug.WriteLine("ONLY NON-SIMPLE CYCLES REMAINING (UNSAFE ARBITRARY FINALIZATION ORDER)"); + Debug.WriteLine($" FINALIZING {node.Name} {node.StateObject} {node.StateObject.GetType()}"); +#endif + + // finalize the first node (i.e. with the most number of active inputs) + node.Final(this.FinalOriginatingTime); + } + + // revert to searching for finalizable nodes with no active inputs + includeCycles = false; + onlySelfCycles = false; + } } } -#endif - } - - if (finalizable.Count() == 0) - { - // finally, eliminate all remaining (cycles and nodes with only cycles upstream - these finalize in semi-arbitrary order!) - // finalize remaining nodes in order of number of active outputs (most to least; e.g. terminal nodes last) as a heuristic - finalizable = nodes.OrderBy(n => -n.Outputs.Where(o => o.Value.HasSubscribers).Count()); -#if DEBUG - if (finalizable.Count() > 0) - { - Debug.WriteLine("ONLY SEPARATED CYCLES REMAINING (UNSAFE ARBITRARY FINALIZATION ORDER)"); - foreach (var node in finalizable) - { - Debug.WriteLine($" FINALIZING {node.Name} {node.StateObject} {node.StateObject.GetType()}"); - } - } -#endif } foreach (var node in finalizable) @@ -1286,7 +1374,7 @@ namespace Microsoft.Psi this.FinalOriginatingTime = finalOriginatingTime; this.schedulerContext.FinalizeTime = finalOriginatingTime; - // propagate the final originating time to all descendent subpipelines and their respective scheduler contexts + // propagate the final originating time to all descendant subpipelines and their respective scheduler contexts foreach (var sub in this.components.Where(c => c.StateObject is Subpipeline && !c.IsFinalized).Select(c => c.StateObject as Subpipeline)) { // if subpipeline is already stopping then don't override its final originating time @@ -1342,8 +1430,12 @@ namespace Microsoft.Psi } else if (component.StateObject is Subpipeline sub) { - // recursively estimate progress for subpipelines - componentProgress = sub.EstimateProgress(); + // ensures dynamically-added subpipelines are actually running + if (sub.IsRunning) + { + // recursively estimate progress for subpipelines + componentProgress = sub.EstimateProgress(); + } } else if (component.Outputs.Count > 0 || component.Inputs.Count > 0) { diff --git a/Sources/Runtime/Microsoft.Psi/Executive/Subpipeline.cs b/Sources/Runtime/Microsoft.Psi/Executive/Subpipeline.cs index 412d9aa5..2ec6addd 100644 --- a/Sources/Runtime/Microsoft.Psi/Executive/Subpipeline.cs +++ b/Sources/Runtime/Microsoft.Psi/Executive/Subpipeline.cs @@ -65,7 +65,7 @@ namespace Microsoft.Psi /// /// This is called by the parent subpipeline, if any. /// Delegate to call to notify of completion time. - void ISourceComponent.Start(Action notifyCompletionTime) + public void Start(Action notifyCompletionTime) { this.notifyCompletionTime = notifyCompletionTime; this.InitializeCompletionTimes(); @@ -75,7 +75,7 @@ namespace Microsoft.Psi } /// - void ISourceComponent.Stop(DateTime finalOriginatingTime, Action notifyCompleted) + public void Stop(DateTime finalOriginatingTime, Action notifyCompleted) { this.notifyCompleted = notifyCompleted; diff --git a/Sources/Runtime/Microsoft.Psi/Microsoft.Psi.csproj b/Sources/Runtime/Microsoft.Psi/Microsoft.Psi.csproj index 00ec0896..30d8b07b 100644 --- a/Sources/Runtime/Microsoft.Psi/Microsoft.Psi.csproj +++ b/Sources/Runtime/Microsoft.Psi/Microsoft.Psi.csproj @@ -1,10 +1,10 @@ - + netstandard2.0 - true - Microsoft.Psi.Runtime - Provides the core APIs and components for Platform for Situated Intelligence. + true + Microsoft.Psi.Runtime + Provides the core APIs and components for Platform for Situated Intelligence. @@ -46,9 +46,14 @@ + + + all + runtime; build; native; contentfiles; analyzers + @@ -78,8 +83,12 @@ - + + + + + diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Connectors.cs b/Sources/Runtime/Microsoft.Psi/Operators/Connectors.cs index 25349b13..034dc215 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Connectors.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Connectors.cs @@ -3,7 +3,6 @@ namespace Microsoft.Psi { - using System; using Microsoft.Psi.Components; /// @@ -12,7 +11,7 @@ namespace Microsoft.Psi public static partial class Operators { /// - /// Connnects a stream producer to a stream consumer. As a result, all messages in the stream will be routed to the consumer for processing. + /// Connects a stream producer to a stream consumer. As a result, all messages in the stream will be routed to the consumer for processing. /// /// The type of messages in the stream. /// The type of consumer. @@ -40,7 +39,29 @@ namespace Microsoft.Psi } /// - /// Connnects a stream producer to a stream consumer. As a result, all messages in the stream will be routed to the consumer for processing. + /// Creates a stream in a specified target pipeline, based on a given input stream (that may belong in a different pipeline). + /// + /// The type of the messages on the input stream. + /// The input stream. + /// Pipeline to which to bridge. + /// An optional name for the connector (defaults to BridgeConnector). + /// An optional delivery policy. + /// The bridged stream. + public static IProducer BridgeTo(this IProducer input, Pipeline targetPipeline, string name = null, DeliveryPolicy deliveryPolicy = null) + { + if (input.Out.Pipeline == targetPipeline) + { + return input; + } + else + { + var connector = new Connector(input.Out.Pipeline, targetPipeline, name ?? "BridgeConnector"); + return input.PipeTo(connector, deliveryPolicy); + } + } + + /// + /// Connects a stream producer to a stream consumer. As a result, all messages in the stream will be routed to the consumer for processing. /// /// /// This is an internal-only method which provides the option to allow connections between producers and consumers in running pipelines. diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Enumerable.cs b/Sources/Runtime/Microsoft.Psi/Operators/Enumerable.cs index 186ac5a8..b4b3d5ea 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Enumerable.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Enumerable.cs @@ -35,7 +35,7 @@ namespace Microsoft.Psi /// Enumerable stream class. /// /// Type of stream messages. - public class StreamEnumerable : IEnumerable, IEnumerable + public class StreamEnumerable : IEnumerable, IEnumerable, IDisposable { private readonly StreamEnumerator enumerator; @@ -61,6 +61,12 @@ namespace Microsoft.Psi processor.In.Unsubscribed += _ => this.enumerator.Update.Set(); } + /// + public void Dispose() + { + this.enumerator.Dispose(); + } + /// public IEnumerator GetEnumerator() { @@ -98,6 +104,7 @@ namespace Microsoft.Psi public void Dispose() { + this.enqueued.Dispose(); } public bool MoveNext() diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Generators.cs b/Sources/Runtime/Microsoft.Psi/Operators/Generators.cs index ffa01166..0e0edb0c 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Generators.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Generators.cs @@ -22,7 +22,7 @@ namespace Microsoft.Psi /// The function that generates a new value based on the previous value. /// The number of messages to publish. /// The desired time interval between consecutive messages. Defaults to 1 tick. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// Indicates whether the stream should be kept open after all messages in the sequence have been posted. @@ -41,7 +41,7 @@ namespace Microsoft.Psi /// The initial value. /// The function that generates a new value based on the previous value. /// The desired time interval between consecutive messages. Defaults to 1 tick. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// A stream of values of type T. @@ -58,7 +58,7 @@ namespace Microsoft.Psi /// The pipeline that will run this generator. /// The sequence to publish. /// The desired time interval between consecutive messages. Defaults to 1 tick. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// Indicates whether the stream should be kept open after all messages in the sequence have been posted. @@ -121,7 +121,7 @@ namespace Microsoft.Psi /// The value to publish. /// The number of messages to publish. /// The desired time interval between consecutive messages. Defaults to 1 tick. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// Indicates whether the stream should be kept open after the specified number of messages have been posted. @@ -139,7 +139,7 @@ namespace Microsoft.Psi /// The pipeline that will run this generator. /// The value to publish. /// The desired time interval between consecutive messages. Defaults to 1 tick. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// A stream of values of type T. @@ -156,7 +156,7 @@ namespace Microsoft.Psi /// The starting value. /// The number of messages to publish. /// The desired time interval between consecutive messages. Defaults to 1 tick. - /// If non-null, this parameter specifies a time to align the generator messages with. If the paramater + /// If non-null, this parameter specifies a time to align the generator messages with. If the parameter /// is non-null, the messages will have originating times that align with the specified time. /// A stream of consecutive integers. /// Indicates whether the stream should be kept open after the specified number of messages have been posted. diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Interpolators.cs b/Sources/Runtime/Microsoft.Psi/Operators/Interpolators.cs index 58ba7a4d..6140c1cb 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Interpolators.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Interpolators.cs @@ -19,7 +19,7 @@ namespace Microsoft.Psi /// Source stream. /// Interval at which to apply the interpolator. /// Interpolator to use for generating results. - /// If non-null, this parameter specifies a time to align the sampling messages with. If the paramater + /// If non-null, this parameter specifies a time to align the sampling messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// An optional delivery policy. @@ -69,7 +69,7 @@ namespace Microsoft.Psi /// Source stream. /// Interval at which to apply the interpolator. /// The tolerance within which to search for the nearest message. - /// If non-null, this parameter specifies a time to align the sampling messages with. If the paramater + /// If non-null, this parameter specifies a time to align the sampling messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// An optional delivery policy. @@ -95,8 +95,10 @@ namespace Microsoft.Psi /// Type of source (and output) messages. /// Source stream. /// Interval at which to apply the interpolator. - /// The relative time interval within which to search for the nearest message. - /// If non-null, this parameter specifies a time to align the sampling messages with. If the paramater + /// The relative time interval within which to search for the nearest message. + /// If the parameter is not specified the relative time interval is + /// used,resulting in sampling the nearest point to the clock signal on the source stream. + /// If non-null, this parameter specifies a time to align the sampling messages with. If the parameter /// is non-null, the messages will have originating times that align with (i.e., are an integral number of intervals away from) the /// specified alignment time. /// An optional delivery policy. @@ -104,10 +106,11 @@ namespace Microsoft.Psi public static IProducer Sample( this IProducer source, TimeSpan samplingInterval, - RelativeTimeInterval relativeTimeInterval, + RelativeTimeInterval relativeTimeInterval = null, DateTime? alignmentDateTime = null, DeliveryPolicy deliveryPolicy = null) { + relativeTimeInterval ??= RelativeTimeInterval.Infinite; return source.Interpolate( samplingInterval, Reproducible.Nearest(relativeTimeInterval), @@ -145,17 +148,20 @@ namespace Microsoft.Psi /// Type of messages on the clock stream. /// Source stream. /// Clock stream that dictates the interpolation points. - /// The relative time interval within which to search for the nearest message. + /// The relative time interval within which to search for the nearest message. + /// If the parameter is not specified the relative time interval is + /// used,resulting in sampling the nearest point to the clock signal on the source stream. /// An optional delivery policy for the source stream. /// An optional delivery policy for the clock stream. /// Sampled stream. public static IProducer Sample( this IProducer source, IProducer clock, - RelativeTimeInterval relativeTimeInterval, + RelativeTimeInterval relativeTimeInterval = null, DeliveryPolicy sourceDeliveryPolicy = null, DeliveryPolicy clockDeliveryPolicy = null) { + relativeTimeInterval ??= RelativeTimeInterval.Infinite; return source.Interpolate(clock, Reproducible.Nearest(relativeTimeInterval), sourceDeliveryPolicy, clockDeliveryPolicy); } } diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Joins.cs b/Sources/Runtime/Microsoft.Psi/Operators/Joins.cs index f3df29a8..5c2179c0 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Joins.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Joins.cs @@ -1438,7 +1438,7 @@ namespace Microsoft.Psi } /// - /// Joins a primary stream of integers with an enumeration of seconary streams based on a specified reproducible interpolator. + /// Joins a primary stream of integers with an enumeration of secondary streams based on a specified reproducible interpolator. /// /// Type of input messages. /// Type of the interpolation result. diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Processors.cs b/Sources/Runtime/Microsoft.Psi/Operators/Processors.cs index 97442d66..11e82117 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Processors.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Processors.cs @@ -4,6 +4,8 @@ namespace Microsoft.Psi { using System; + using System.Collections.Generic; + using System.Linq; using Microsoft.Psi.Components; /// @@ -166,5 +168,29 @@ namespace Microsoft.Psi { return Do(source, (d, e) => action(d), deliveryPolicy); } + + /// + /// Edit messages in a stream; applying updates/inserts and deletes. + /// + /// The input message type. + /// The source stream to edit. + /// A sequence of edits to be applied. Whether to update/insert or delete, an optional message to upsert and originating times. + /// An optional delivery policy. + /// A stream of the same type as the source stream with edits applied. + internal static IProducer EditStream(this IProducer source, IEnumerable<(bool upsert, T message, DateTime originatingTime)> edits, DeliveryPolicy deliveryPolicy = null) + { + var originalStream = source.Select(m => (original: true, upsert: true, m), deliveryPolicy); + var orderedEdits = edits.OrderBy(e => e.originatingTime).Select(e => ((original: false, e.upsert, e.message), e.originatingTime)); + var editsStream = Generators.Sequence(source.Out.Pipeline, orderedEdits); + return originalStream.Zip(editsStream, DeliveryPolicy.Unlimited).Process<(bool original, bool upsert, T message)[], T>( + ((bool original, bool upsert, T message)[] messages, Envelope envelope, Emitter emitter) => + { + var m = messages[0].original && messages.Length > 1 ? messages[1] : messages[0]; + if (m.upsert) + { + emitter.Post(m.message, envelope.OriginatingTime); + } + }); + } } } \ No newline at end of file diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Statistical.cs b/Sources/Runtime/Microsoft.Psi/Operators/Statistical.cs index b88fefc9..ff62a410 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Statistical.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Statistical.cs @@ -711,7 +711,7 @@ namespace Microsoft.Psi var oldmean = mean; mean = mean + ((value - mean) / count); q = q + ((value - oldmean) * (value - mean)); - return count == 1 ? 0m : (decimal)Math.Sqrt((double)q / (count - 1)); // reture 0m for first value + return count == 1 ? 0m : (decimal)Math.Sqrt((double)q / (count - 1)); // return 0m for first value }, deliveryPolicy); } diff --git a/Sources/Runtime/Microsoft.Psi/Operators/VectorProcessors.cs b/Sources/Runtime/Microsoft.Psi/Operators/VectorProcessors.cs index 47848a7c..5659ba3d 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/VectorProcessors.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/VectorProcessors.cs @@ -427,6 +427,49 @@ namespace Microsoft.Psi return source.PipeTo(p, deliveryPolicy); } + /// + /// Transforms a stream of messages by splitting it into a set of substreams (indexed by a key), + /// applying a sub-pipeline to each of these streams, and assembling the results into a corresponding + /// output stream. + /// + /// The type of input messages. + /// Type of the substream key. + /// Type of the substream messages. + /// Type of the subpipeline output for each substream. + /// Source stream. + /// A function that splits the input by generating a dictionary of key-value pairs for each given input message. + /// Stream transform to be applied to each substream. + /// When true, a result is produced even if a message is dropped in processing one of the input elements. In this case the corresponding output element is set to default. + /// Default value to use when messages are dropped in processing one of the input elements. + /// An optional delivery policy. + /// Predicate function determining whether and when (originating time) to terminate branches (defaults to when key no longer present), given the current key, dictionary of values and the originating time of the last message containing the key. + /// Name for the parallel composite component (defaults to ParallelSparse). + /// Pipeline-level default delivery policy to be used by the parallel composite component (defaults to if unspecified). + /// Stream of output dictionaries. + public static IProducer> Parallel( + this IProducer source, + Func> splitter, + Func, IProducer> streamTransform, + bool outputDefaultIfDropped = false, + TBranchOut defaultValue = default, + DeliveryPolicy deliveryPolicy = null, + Func, DateTime, (bool, DateTime)> branchTerminationPolicy = null, + string name = null, + DeliveryPolicy defaultParallelDeliveryPolicy = null) + { + var p = new ParallelSparseSelect>( + source.Out.Pipeline, + splitter, + (k, s) => streamTransform(s), + _ => _, + outputDefaultIfDropped, + defaultValue, + branchTerminationPolicy, + name, + defaultParallelDeliveryPolicy); + return source.PipeTo(p, deliveryPolicy); + } + /// /// Transforms a stream of dictionary messages by creating a stream for each key in the dictionary, /// applying a sub-pipeline to each of these streams, and assembling the results into a corresponding output @@ -436,7 +479,7 @@ namespace Microsoft.Psi /// Type of input dictionary values. /// Type of output dictionary values. /// Source stream. - /// Function mapping from an input element stream to an output output element stream. + /// Function mapping from an input element stream to an output element stream. /// When true, a result is produced even if a message is dropped in processing one of the input elements. In this case the corresponding output element is set to default. /// Default value to use when messages are dropped in processing one of the input elements. /// An optional delivery policy. diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Windows.cs b/Sources/Runtime/Microsoft.Psi/Operators/Windows.cs index a552ead1..8b524953 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Windows.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Windows.cs @@ -88,23 +88,6 @@ namespace Microsoft.Psi return PipeTo(source, window, deliveryPolicy); } - /// - /// Process windows of messages by relative time interval. - /// - /// Type of source messages. - /// Type of output messages. - /// Source stream of messages. - /// The relative time interval over which to gather messages. - /// Selector function. - /// Whether to wait for the full window before output. - /// An optional delivery policy. - /// Output stream. - public static IProducer Window(this IProducer source, RelativeTimeInterval relativeTimeInterval, Func>, TOutput> selector, bool waitForCompleteWindow, DeliveryPolicy deliveryPolicy = null) - { - var window = new RelativeTimeWindow(source.Out.Pipeline, relativeTimeInterval, selector, waitForCompleteWindow); - return PipeTo(source, window, deliveryPolicy); - } - /// /// Process windows of messages by relative time interval. /// diff --git a/Sources/Runtime/Microsoft.Psi/Operators/Zips.cs b/Sources/Runtime/Microsoft.Psi/Operators/Zips.cs index 84d6462e..21592184 100644 --- a/Sources/Runtime/Microsoft.Psi/Operators/Zips.cs +++ b/Sources/Runtime/Microsoft.Psi/Operators/Zips.cs @@ -14,18 +14,20 @@ namespace Microsoft.Psi public static partial class Operators { /// - /// Zip one or more streams (T) into a single stream (Message{T}) while ensuring delivery in originating time order (ordered within single tick by stream ID). + /// Zip one or more streams (T) into a single stream while ensuring delivery in originating time order. /// - /// Messages are produced in originating-time order; potentially delayed in wall-clock time. + /// Messages are produced in originating-time order; potentially delayed in wall-clock time. + /// If multiple messages arrive with the same originating time, they are added in the output array in + /// the order of stream ids. /// Type of messages. - /// Collection of homogeneous inputs. + /// Collection of input streams to zip. /// An optional delivery policy. /// Stream of zipped messages. - public static IProducer> Zip(IEnumerable> inputs, DeliveryPolicy deliveryPolicy = null) + public static IProducer Zip(IEnumerable> inputs, DeliveryPolicy deliveryPolicy = null) { if (inputs.Count() == 0) { - throw new ArgumentException("Zip requires one or more inputs."); + throw new ArgumentException($"{nameof(Zip)} requires one or more inputs."); } var zip = new Zip(inputs.First().Out.Pipeline); @@ -38,15 +40,17 @@ namespace Microsoft.Psi } /// - /// Zip two streams (T) into a single stream (Message{T}) while ensuring delivery in originating time order (ordered within single tick by stream ID). + /// Zip two streams (T) into a single stream while ensuring delivery in originating time order. /// - /// Messages are produced in originating-time order; potentially delayed in wall-clock time. + /// Messages are produced in originating-time order; potentially delayed in wall-clock time. + /// If multiple messages arrive with the same originating time, they are added in the output array in + /// the order of stream ids. /// Type of messages. /// First input stream. /// Second input stream with same message type. /// An optional delivery policy. /// Stream of zipped messages. - public static IProducer> Zip(this IProducer input1, IProducer input2, DeliveryPolicy deliveryPolicy = null) + public static IProducer Zip(this IProducer input1, IProducer input2, DeliveryPolicy deliveryPolicy = null) { return Zip(new List>() { input1, input2 }, deliveryPolicy); } diff --git a/Sources/Runtime/Microsoft.Psi/Persistence/IndexEntry.cs b/Sources/Runtime/Microsoft.Psi/Persistence/IndexEntry.cs index 1d112497..e63eea4a 100644 --- a/Sources/Runtime/Microsoft.Psi/Persistence/IndexEntry.cs +++ b/Sources/Runtime/Microsoft.Psi/Persistence/IndexEntry.cs @@ -11,7 +11,7 @@ namespace Microsoft.Psi.Persistence /// /// This structure is used in two places: the index file and the large data file. /// To facilitate seeking, each data file is accompanied by an index file containing records of this type. - /// Each record indicates the largest time and orginating time values seen up to the specified position. + /// Each record indicates the largest time and originating time values seen up to the specified position. /// The position is a composite value, consisting of the extent and the relative position within the extent. /// These records allow seeking close to (but guaranteed before) a given time. /// Reading from the position provided by the index entry guarantees that all the messages with the @@ -19,7 +19,7 @@ namespace Microsoft.Psi.Persistence /// /// To enable efficient reading of streams, the Store breaks streams in two categories: small and large. /// When writing large messages, an index entry is written into the main data file, - /// pointing ot a location in the large data file where the actual message resides. + /// pointing to a location in the large data file where the actual message resides. /// public struct IndexEntry { diff --git a/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileReader.cs b/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileReader.cs index d971d928..f9ddcb8f 100644 --- a/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileReader.cs +++ b/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileReader.cs @@ -79,6 +79,9 @@ namespace Microsoft.Psi.Persistence { this.writePulse.Dispose(); this.CloseCurrent(); + + // may have already been disposed in CloseCurrent + this.view?.Dispose(); } // Seeks to the next block (assumes the position points to a block entry) @@ -216,10 +219,8 @@ namespace Microsoft.Psi.Persistence { try { - using (var file = File.Open(fullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite)) - { - this.mappedFile = MemoryMappedFile.CreateFromFile(file, null, 0, MemoryMappedFileAccess.Read, HandleInheritability.Inheritable, false); - } + var file = File.Open(fullName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite); + this.mappedFile = MemoryMappedFile.CreateFromFile(file, null, 0, MemoryMappedFileAccess.Read, HandleInheritability.Inheritable, false); } catch (IOException) { diff --git a/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileWriter.cs b/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileWriter.cs index ee252948..c4a59694 100644 --- a/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileWriter.cs +++ b/Sources/Runtime/Microsoft.Psi/Persistence/InfiniteFileWriter.cs @@ -140,6 +140,9 @@ namespace Microsoft.Psi.Persistence this.globalWritePulse = null; this.activeWriterMutex.Dispose(); this.activeWriterMutex = null; + + // may have already been disposed in CloseCurrent + this.view?.Dispose(); } public void Write(BufferWriter bufferWriter) diff --git a/Sources/Runtime/Microsoft.Psi/Persistence/StoreReader.cs b/Sources/Runtime/Microsoft.Psi/Persistence/StoreReader.cs index 1ebe2e72..3b5b81cf 100644 --- a/Sources/Runtime/Microsoft.Psi/Persistence/StoreReader.cs +++ b/Sources/Runtime/Microsoft.Psi/Persistence/StoreReader.cs @@ -187,7 +187,7 @@ namespace Microsoft.Psi.Persistence } /// - /// Closes allthe storage streams. + /// Closes all the storage streams. /// public void CloseAllStreams() { diff --git a/Sources/Runtime/Microsoft.Psi/Persistence/StoreWriter.cs b/Sources/Runtime/Microsoft.Psi/Persistence/StoreWriter.cs index e7212763..195ebe11 100644 --- a/Sources/Runtime/Microsoft.Psi/Persistence/StoreWriter.cs +++ b/Sources/Runtime/Microsoft.Psi/Persistence/StoreWriter.cs @@ -122,20 +122,20 @@ namespace Microsoft.Psi.Persistence /// /// Creates a logical storage stream to write messages to. - /// The storage stream characteristics are extracted form the prvoided metadata descriptor. + /// The storage stream characteristics are extracted from the provided metadata descriptor. /// /// The metadata describing the stream to open. /// The complete metadata for the storage stream just created. public PsiStreamMetadata OpenStream(PsiStreamMetadata meta) { - return this.OpenStream(meta.Id, meta.Name, meta.IsIndexed, meta.TypeName); + return this.OpenStream(meta.Id, meta.Name, meta.IsIndexed, meta.TypeName).UpdateSupplementalMetadataFrom(meta); } /// /// Creates a logical storage stream to write messages to. /// /// The id of the stream, unique for this store. All messages with this stream id will be written to this storage stream. - /// The name of the stream. This name can be later used to open the sorage stream for reading. + /// The name of the stream. This name can be later used to open the storage stream for reading. /// Indicates whether the stream is indexed or not. Indexed streams have a small index entry in the main data file and the actual message body in a large data file. /// A name identifying the type of the messages in this stream. This is usually a fully-qualified type name or a data contract name, but can be anything that the caller wants. /// The complete metadata for the storage stream just created. diff --git a/Sources/Runtime/Microsoft.Psi/Remoting/RemoteExporter.cs b/Sources/Runtime/Microsoft.Psi/Remoting/RemoteExporter.cs index 1a0cbe52..cd3f890f 100644 --- a/Sources/Runtime/Microsoft.Psi/Remoting/RemoteExporter.cs +++ b/Sources/Runtime/Microsoft.Psi/Remoting/RemoteExporter.cs @@ -142,6 +142,8 @@ namespace Microsoft.Psi.Remoting this.connections = null; this.metaClientThread = null; this.dataClientThread = null; + + this.dataTransport.Dispose(); } private void AddConnection(Connection connection) @@ -302,10 +304,10 @@ namespace Microsoft.Psi.Remoting this.stream.Write(writer.Buffer, 0, len); this.storeReader = new StoreReader(this.storeName, this.storePath, this.MetaUpdateHandler, true); } - catch (Exception ex) + catch (Exception) { this.Disconnect(); - throw ex; + throw; } } diff --git a/Sources/Runtime/Microsoft.Psi/Remoting/RemoteImporter.cs b/Sources/Runtime/Microsoft.Psi/Remoting/RemoteImporter.cs index 748ed091..ceb66e5d 100644 --- a/Sources/Runtime/Microsoft.Psi/Remoting/RemoteImporter.cs +++ b/Sources/Runtime/Microsoft.Psi/Remoting/RemoteImporter.cs @@ -152,6 +152,8 @@ namespace Microsoft.Psi.Remoting this.storeWriter.Dispose(); this.storeWriter = null; + + this.connected.Dispose(); } private void StartMetaClient() diff --git a/Sources/Runtime/Microsoft.Psi/Remoting/Transport/TcpTransport.cs b/Sources/Runtime/Microsoft.Psi/Remoting/Transport/TcpTransport.cs index 3c70f3e4..14bd2875 100644 --- a/Sources/Runtime/Microsoft.Psi/Remoting/Transport/TcpTransport.cs +++ b/Sources/Runtime/Microsoft.Psi/Remoting/Transport/TcpTransport.cs @@ -116,6 +116,7 @@ namespace Microsoft.Psi.Remoting public void Dispose() { + this.stream.Close(); this.client.Dispose(); this.client = null; } diff --git a/Sources/Runtime/Microsoft.Psi/Scheduling/PriorityQueue.cs b/Sources/Runtime/Microsoft.Psi/Scheduling/PriorityQueue.cs index 1c8c41e5..12beefe8 100644 --- a/Sources/Runtime/Microsoft.Psi/Scheduling/PriorityQueue.cs +++ b/Sources/Runtime/Microsoft.Psi/Scheduling/PriorityQueue.cs @@ -10,14 +10,14 @@ namespace Microsoft.Psi.Scheduling /// A generic ordered queue that sorts items based on the specified Comparer. /// /// Type of item in the list. - public abstract class PriorityQueue + public abstract class PriorityQueue : IDisposable { // the head of the ordered work item list is always empty private readonly PriorityQueueNode head = new PriorityQueueNode(0); private readonly PriorityQueueNode emptyHead = new PriorityQueueNode(0); private readonly Comparison comparer; + private readonly ManualResetEvent empty = new ManualResetEvent(true); private IPerfCounterCollection counters; - private ManualResetEvent empty = new ManualResetEvent(true); private int count; private int nextId; @@ -38,6 +38,12 @@ namespace Microsoft.Psi.Scheduling internal WaitHandle Empty => this.empty; + /// + public void Dispose() + { + this.empty.Dispose(); + } + /// /// Try peeking at first item; returning indication of success. /// diff --git a/Sources/Runtime/Microsoft.Psi/Scheduling/Scheduler.cs b/Sources/Runtime/Microsoft.Psi/Scheduling/Scheduler.cs index 6e3efc57..b0ab60c5 100644 --- a/Sources/Runtime/Microsoft.Psi/Scheduling/Scheduler.cs +++ b/Sources/Runtime/Microsoft.Psi/Scheduling/Scheduler.cs @@ -9,7 +9,7 @@ namespace Microsoft.Psi.Scheduling /// /// Maintains a queue of workitems and schedules worker threads to empty them. /// - public sealed class Scheduler + public sealed class Scheduler : IDisposable { private readonly string name; private readonly SimpleSemaphore threadSemaphore; @@ -17,6 +17,9 @@ namespace Microsoft.Psi.Scheduling private readonly bool allowSchedulingOnExternalThreads; private readonly ManualResetEvent stopped = new ManualResetEvent(true); private readonly AutoResetEvent futureAdded = new AutoResetEvent(false); + private readonly ThreadLocal nextWorkitem = new ThreadLocal(); + private readonly ThreadLocal isSchedulerThread = new ThreadLocal(() => false); + private readonly ThreadLocal currentWorkitemTime = new ThreadLocal(() => DateTime.MaxValue); // the queue of pending workitems, ordered by start time private readonly WorkItemQueue globalWorkitems; @@ -24,9 +27,6 @@ namespace Microsoft.Psi.Scheduling private Thread futuresThread; private IPerfCounterCollection counters; private bool forcedShutdownRequested; - private ThreadLocal nextWorkitem = new ThreadLocal(); - private ThreadLocal isSchedulerThread = new ThreadLocal(() => false); - private ThreadLocal currentWorkitemTime = new ThreadLocal(() => DateTime.MaxValue); private Clock clock; private bool delayFutureWorkitemsUntilDue; private bool started = false; @@ -77,6 +77,19 @@ namespace Microsoft.Psi.Scheduling } } + /// + public void Dispose() + { + this.threadSemaphore.Dispose(); + this.stopped.Dispose(); + this.futureAdded.Dispose(); + this.globalWorkitems.Dispose(); + this.futureWorkitems.Dispose(); + this.nextWorkitem.Dispose(); + this.isSchedulerThread.Dispose(); + this.currentWorkitemTime.Dispose(); + } + /// /// Attempts to execute the delegate immediately, on the calling thread, without scheduling. /// diff --git a/Sources/Runtime/Microsoft.Psi/Scheduling/SchedulerContext.cs b/Sources/Runtime/Microsoft.Psi/Scheduling/SchedulerContext.cs index 3a891996..a9d1eb50 100644 --- a/Sources/Runtime/Microsoft.Psi/Scheduling/SchedulerContext.cs +++ b/Sources/Runtime/Microsoft.Psi/Scheduling/SchedulerContext.cs @@ -11,7 +11,7 @@ namespace Microsoft.Psi.Scheduling /// Maintains a count of the number of work items currently in-flight and an event /// to signal when there are no remaining work items in the context. /// - public sealed class SchedulerContext + public sealed class SchedulerContext : IDisposable { private readonly object syncLock = new object(); private readonly ManualResetEvent empty = new ManualResetEvent(true); @@ -34,6 +34,12 @@ namespace Microsoft.Psi.Scheduling internal bool Started { get; private set; } = false; + /// + public void Dispose() + { + this.empty.Dispose(); + } + /// /// Starts scheduling work on the context. /// diff --git a/Sources/Runtime/Microsoft.Psi/Scheduling/SimpleSemaphore.cs b/Sources/Runtime/Microsoft.Psi/Scheduling/SimpleSemaphore.cs index 367fa613..4c7215dd 100644 --- a/Sources/Runtime/Microsoft.Psi/Scheduling/SimpleSemaphore.cs +++ b/Sources/Runtime/Microsoft.Psi/Scheduling/SimpleSemaphore.cs @@ -3,17 +3,18 @@ namespace Microsoft.Psi.Scheduling { + using System; using System.Threading; /// /// Implements a semaphore class that limits the number of threads entering a resource and provides an event when all threads finished. /// - public class SimpleSemaphore + public class SimpleSemaphore : IDisposable { + private readonly ManualResetEvent empty; + private readonly ManualResetEvent available; private readonly int maxThreadCount; private int count; - private ManualResetEvent empty; - private ManualResetEvent available; /// /// Initializes a new instance of the class. @@ -41,6 +42,13 @@ namespace Microsoft.Psi.Scheduling /// public int MaxThreadCount => this.maxThreadCount; + /// + public void Dispose() + { + this.empty.Dispose(); + this.available.Dispose(); + } + /// /// Try to enter the semaphore. /// diff --git a/Sources/Runtime/Microsoft.Psi/Serialization/KnownSerializers.cs b/Sources/Runtime/Microsoft.Psi/Serialization/KnownSerializers.cs index c6b380f9..4d06540d 100644 --- a/Sources/Runtime/Microsoft.Psi/Serialization/KnownSerializers.cs +++ b/Sources/Runtime/Microsoft.Psi/Serialization/KnownSerializers.cs @@ -423,7 +423,14 @@ namespace Microsoft.Psi.Serialization name = TypeSchema.GetContractName(type, this.runtimeVersion); } - int id = this.schemas.TryGetValue(name, out schema) ? schema.Id : TypeSchema.GetId(name); + if (!this.schemas.TryGetValue(name, out schema)) + { + // try to match to an existing schema without assembly/version info + string typeName = TypeResolutionHelper.RemoveAssemblyName(type.AssemblyQualifiedName); + schema = this.schemas.Values.FirstOrDefault(s => TypeResolutionHelper.RemoveAssemblyName(s.TypeName) == typeName); + } + + int id = schema?.Id ?? TypeSchema.GetId(name); serializer = this.CreateSerializer(); handler = SerializationHandler.Create(serializer, name, id); diff --git a/Sources/Runtime/Microsoft.Psi/Serialization/RefHandler.cs b/Sources/Runtime/Microsoft.Psi/Serialization/RefHandler.cs index 0769fe7b..41575138 100644 --- a/Sources/Runtime/Microsoft.Psi/Serialization/RefHandler.cs +++ b/Sources/Runtime/Microsoft.Psi/Serialization/RefHandler.cs @@ -100,7 +100,7 @@ namespace Microsoft.Psi.Serialization if (target == null) { // a custom serializer was implemented incorrectly - throw new InvalidDataException("The serializer detected an unresolved circular reference to an instance of type {typeof(T)}. The custom serializer for this type needs to implement the ISerializerEx interface."); + throw new InvalidDataException($"The serializer detected an unresolved circular reference to an instance of type {typeof(T)}. The custom serializer for this type needs to implement the ISerializerEx interface."); } return; diff --git a/Sources/Runtime/Microsoft.Psi/Serialization/StructHandler.cs b/Sources/Runtime/Microsoft.Psi/Serialization/StructHandler.cs index 24fe5295..3a15d6ca 100644 --- a/Sources/Runtime/Microsoft.Psi/Serialization/StructHandler.cs +++ b/Sources/Runtime/Microsoft.Psi/Serialization/StructHandler.cs @@ -27,7 +27,7 @@ namespace Microsoft.Psi.Serialization if (typeof(T).IsByRef) { - throw new InvalidOperationException("Cannot use a valut type handler with a class serializer"); + throw new InvalidOperationException("Cannot use a value type handler with a class serializer"); } } diff --git a/Sources/Runtime/Microsoft.Psi/Streams/Emitter{T}.cs b/Sources/Runtime/Microsoft.Psi/Streams/Emitter{T}.cs index ef6d9e99..e4152002 100644 --- a/Sources/Runtime/Microsoft.Psi/Streams/Emitter{T}.cs +++ b/Sources/Runtime/Microsoft.Psi/Streams/Emitter{T}.cs @@ -18,7 +18,7 @@ namespace Microsoft.Psi /// /// The type of messages in the stream. [Serializer(typeof(Emitter<>.NonSerializer))] - public class Emitter : IEmitter, IProducer + public sealed class Emitter : IEmitter, IProducer { private readonly object owner; private readonly Pipeline pipeline; diff --git a/Sources/Runtime/Microsoft.Psi/Streams/Receiver{T}.cs b/Sources/Runtime/Microsoft.Psi/Streams/Receiver{T}.cs index 23dade3a..597b505c 100644 --- a/Sources/Runtime/Microsoft.Psi/Streams/Receiver{T}.cs +++ b/Sources/Runtime/Microsoft.Psi/Streams/Receiver{T}.cs @@ -24,7 +24,7 @@ namespace Microsoft.Psi /// /// The type of messages that can be received. [Serializer(typeof(Receiver<>.NonSerializer))] - public class Receiver : IReceiver, IConsumer + public sealed class Receiver : IReceiver, IConsumer { private readonly Action> onReceived; private readonly PipelineElement element; diff --git a/Sources/Runtime/Test.Psi.Windows/Test.Psi.Windows.csproj b/Sources/Runtime/Test.Psi.Windows/Test.Psi.Windows.csproj index cc45db11..2a02190c 100644 --- a/Sources/Runtime/Test.Psi.Windows/Test.Psi.Windows.csproj +++ b/Sources/Runtime/Test.Psi.Windows/Test.Psi.Windows.csproj @@ -1,20 +1,17 @@  net472 - false - false + ../../../Build/Test.Psi.ruleset Exe Test.Psi.ConsoleMain - ../../../Build/Test.Psi.ruleset true AnyCPU - ../../../Build/Test.Psi.ruleset true AnyCPU @@ -34,6 +31,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Sources/Runtime/Test.Psi/APITester.cs b/Sources/Runtime/Test.Psi/APITester.cs index efba5d76..babb2d9a 100644 --- a/Sources/Runtime/Test.Psi/APITester.cs +++ b/Sources/Runtime/Test.Psi/APITester.cs @@ -10,7 +10,7 @@ namespace Test.Psi using Microsoft.VisualStudio.TestTools.UnitTesting; /// - /// Scenarios and usage around simple pipelines, join and repeat + /// Scenarios and usage around simple pipelines, join and repeat. /// [TestClass] public class APITester diff --git a/Sources/Runtime/Test.Psi/CustomSerializationTester.cs b/Sources/Runtime/Test.Psi/CustomSerializationTester.cs index 30c0b16d..68bde3cb 100644 --- a/Sources/Runtime/Test.Psi/CustomSerializationTester.cs +++ b/Sources/Runtime/Test.Psi/CustomSerializationTester.cs @@ -61,7 +61,7 @@ namespace Test.Psi // serializer that skips one property public class TestCustomSerializer : ISerializer { - public int Version => throw new NotImplementedException(); + public int Version => throw new NotSupportedException(); public TypeSchema Initialize(KnownSerializers serializers, TypeSchema targetSchema) { diff --git a/Sources/Runtime/Test.Psi/DeliveryPolicyTest.cs b/Sources/Runtime/Test.Psi/DeliveryPolicyTest.cs index d2bda5d2..b13d5d92 100644 --- a/Sources/Runtime/Test.Psi/DeliveryPolicyTest.cs +++ b/Sources/Runtime/Test.Psi/DeliveryPolicyTest.cs @@ -33,7 +33,7 @@ namespace Test.Psi p.WaitAll(100); } - // Timer continues to post so messages will be dropped at receiver B until C stops throttling it + // Timer continues to post so messages will be dropped at receiver B until C stops throttling it Assert.IsTrue(countA > 0); Assert.IsTrue(countA > countB); Assert.AreEqual(countB, countC); @@ -77,12 +77,13 @@ namespace Test.Psi using (var p = Pipeline.Create()) { var numGen = Generators.Range(p, 10, 3, TimeSpan.FromMilliseconds(100)); - numGen.Do(m => - { - Thread.Sleep(500); - loopCount++; - lastMsg = m; - }, DeliveryPolicy.LatestMessage); + numGen.Do( + m => + { + Thread.Sleep(500); + loopCount++; + lastMsg = m; + }, DeliveryPolicy.LatestMessage); p.RunAsync(); p.WaitAll(700); @@ -252,18 +253,25 @@ namespace Test.Psi p.Run(); } - // with latest we only get the first message since the others are dropped, and the - // last message. - CollectionAssert.AreEqual(latest, new List() { 0, 9 }); + // with latest we may drop some messages except the last message. + CollectionAssert.IsSubsetOf(new List() { 9 }, latest); + CollectionAssert.AllItemsAreUnique(latest); // ensure uniqueness + CollectionAssert.AreEqual(latest.OrderBy(x => x).ToList(), latest); // ensure order // with guarantees we get all the even messages. - CollectionAssert.AreEqual(latestWithGuarantees, new List() { 0, 2, 4, 6, 8 }); + CollectionAssert.IsSubsetOf(new List() { 0, 2, 4, 6, 8 }, latestWithGuarantees); + CollectionAssert.AllItemsAreUnique(latestWithGuarantees); + CollectionAssert.AreEqual(latestWithGuarantees.OrderBy(x => x).ToList(), latestWithGuarantees); // with guarantees we get all the even and multiple of 3 messages. - CollectionAssert.AreEqual(latestWithGuaranteesChained, new List() { 0, 2, 3, 4, 6, 8, 9 }); + CollectionAssert.IsSubsetOf(new List() { 0, 2, 3, 4, 6, 8, 9 }, latestWithGuaranteesChained); + CollectionAssert.AllItemsAreUnique(latestWithGuaranteesChained); + CollectionAssert.AreEqual(latestWithGuaranteesChained.OrderBy(x => x).ToList(), latestWithGuaranteesChained); // with guarantees, even when queue size is 2, we get all the even messages. - CollectionAssert.AreEqual(queueSizeTwoWithGuarantees, new List() { 0, 2, 4, 6, 8 }); + CollectionAssert.IsSubsetOf(new List() { 0, 2, 4, 6, 8 }, queueSizeTwoWithGuarantees); + CollectionAssert.AllItemsAreUnique(queueSizeTwoWithGuarantees); + CollectionAssert.AreEqual(queueSizeTwoWithGuarantees.OrderBy(x => x).ToList(), queueSizeTwoWithGuarantees); } } } \ No newline at end of file diff --git a/Sources/Runtime/Test.Psi/DynamicDeserializationTests.cs b/Sources/Runtime/Test.Psi/DynamicDeserializationTests.cs index 8b29b524..1b3c4a2c 100644 --- a/Sources/Runtime/Test.Psi/DynamicDeserializationTests.cs +++ b/Sources/Runtime/Test.Psi/DynamicDeserializationTests.cs @@ -7,8 +7,8 @@ namespace Test.Psi using System.Dynamic; using System.IO; using System.Linq; - using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.Psi; + using Microsoft.VisualStudio.TestTools.UnitTesting; using Test.Psi.Common; [TestClass] @@ -33,14 +33,14 @@ namespace Test.Psi public void PrimitiveToDynamicTest() { // simple primitives - Assert.AreEqual(123, InstanceToDynamic(123)); - Assert.AreEqual(Math.E, InstanceToDynamic(Math.E)); - Assert.AreEqual(true, InstanceToDynamic(true)); - Assert.AreEqual('x', InstanceToDynamic('x')); - Assert.AreEqual("Hello", InstanceToDynamic("Hello")); + Assert.AreEqual(123, this.InstanceToDynamic(123)); + Assert.AreEqual(Math.E, this.InstanceToDynamic(Math.E)); + Assert.AreEqual(true, this.InstanceToDynamic(true)); + Assert.AreEqual('x', this.InstanceToDynamic('x')); + Assert.AreEqual("Hello", this.InstanceToDynamic("Hello")); // collections of primitives - CollectionAssert.AreEqual(new[] { 1, 2, 3 }, InstanceToDynamic(new[] { 1, 2, 3 })); + CollectionAssert.AreEqual(new[] { 1, 2, 3 }, this.InstanceToDynamic(new[] { 1, 2, 3 })); } public class TestObject @@ -85,8 +85,8 @@ namespace Test.Psi public void ObjectToDynamicTest() { var obj = new TestObject(); - var dyn = InstanceToDynamic(obj); - AssertTestObject(dyn); + var dyn = this.InstanceToDynamic(obj); + this.AssertTestObject(dyn); } [TestMethod] @@ -96,11 +96,11 @@ namespace Test.Psi // serialization detects duplicates and flags, deserializer caches and returns existing instances var obj = new TestObject(); var arr = new[] { obj, obj }; - var dyn = InstanceToDynamic(arr); + var dyn = this.InstanceToDynamic(arr); Assert.IsTrue(dyn is object[]); Assert.AreEqual(2, dyn.Length); - AssertTestObject(dyn[0]); - AssertTestObject(dyn[1]); + this.AssertTestObject(dyn[0]); + this.AssertTestObject(dyn[1]); Assert.AreSame(dyn[0], dyn[1]); // literally the same object! dyn[0].Foo = "Bar"; Assert.AreEqual("Bar", dyn[1].Foo); // spooky action at a distance (same object!) @@ -111,14 +111,14 @@ namespace Test.Psi public void ComplexObjectToDynamicTest() { var obj = new ComplexTestObject(); - var dyn = InstanceToDynamic(obj); + var dyn = this.InstanceToDynamic(obj); Assert.IsTrue(dyn is ExpandoObject); - AssertTestObject(dyn.NestedA); - AssertTestObject(dyn.NestedB); - AssertTestObject(dyn.Self.NestedA); - AssertTestObject(dyn.Self.Self.NestedA); - AssertTestObject(dyn.Self.Self.Self.NestedA); - AssertTestObject(dyn.Self.Self.Self.Self.NestedA); // I could go on... + this.AssertTestObject(dyn.NestedA); + this.AssertTestObject(dyn.NestedB); + this.AssertTestObject(dyn.Self.NestedA); + this.AssertTestObject(dyn.Self.Self.NestedA); + this.AssertTestObject(dyn.Self.Self.Self.NestedA); + this.AssertTestObject(dyn.Self.Self.Self.Self.NestedA); // I could go on... Assert.AreSame(dyn.NestedA, dyn.NestedB); // literally the same object! Assert.AreSame(dyn, dyn.Self); // also, literally the same object! } @@ -131,8 +131,8 @@ namespace Test.Psi public ComplexTestObject() { - Self = this; // cyclic! - NestedA = NestedB = new TestObject(); // duplicate! + this.Self = this; // cyclic! + this.NestedA = this.NestedB = new TestObject(); // duplicate! } } diff --git a/Sources/Runtime/Test.Psi/EmitterTester.cs b/Sources/Runtime/Test.Psi/EmitterTester.cs index 21418390..93fdef64 100644 --- a/Sources/Runtime/Test.Psi/EmitterTester.cs +++ b/Sources/Runtime/Test.Psi/EmitterTester.cs @@ -15,7 +15,7 @@ namespace Test.Psi public class EmitterTester { // make out local version of immediate, to make sure it's synchronous even in debug builds - private static readonly DeliveryPolicy immediate = new DeliveryPolicy(1, int.MaxValue, null, true, true); + private static readonly DeliveryPolicy Immediate = new DeliveryPolicy(1, int.MaxValue, null, true, true); [TestMethod] [Timeout(60000)] @@ -57,7 +57,7 @@ namespace Test.Psi }, "receiver"); - Generators.Return(p, c).PipeTo(receiver, immediate); + Generators.Return(p, c).PipeTo(receiver, Immediate); p.Run(); } @@ -109,7 +109,7 @@ namespace Test.Psi }, "receiver"); - Generators.Return(p, s).PipeTo(receiver, immediate); + Generators.Return(p, s).PipeTo(receiver, Immediate); p.Run(); } @@ -159,8 +159,8 @@ namespace Test.Psi } catch (AggregateException errors) { - // expecting an ArgumentOutOfRangeException wrapped in an AggregateException - Assert.AreEqual(1, errors.InnerExceptions.Count); + // expecting at least one ArgumentOutOfRangeException wrapped in an AggregateException + Assert.IsTrue(errors.InnerExceptions.Count > 0); Assert.IsInstanceOfType(errors.InnerException, typeof(ArgumentOutOfRangeException)); CollectionAssert.AreEqual(new[] { 0, 1, 2, 3, 4, 5 }, results); } diff --git a/Sources/Runtime/Test.Psi/FunctionalTests.cs b/Sources/Runtime/Test.Psi/FunctionalTests.cs index 51f25868..30565bbc 100644 --- a/Sources/Runtime/Test.Psi/FunctionalTests.cs +++ b/Sources/Runtime/Test.Psi/FunctionalTests.cs @@ -123,7 +123,7 @@ namespace Test.Psi validateSync: false); } - // uses types that need cloning but ccan be reclaimed + // uses types that need cloning but can be reclaimed [TestMethod] [Timeout(60000)] public void RefTypePipeline() @@ -347,7 +347,7 @@ namespace Test.Psi Console.WriteLine(resultCount); if (sources.Length == 0) { - throw new Exception("This was here just to keeo source alive in release mode, why did it hit?"); + throw new Exception("This was here just to keep source alive in release mode, why did it hit?"); } } diff --git a/Sources/Runtime/Test.Psi/GeneratorsTests.cs b/Sources/Runtime/Test.Psi/GeneratorsTests.cs index 17491b03..d6789ce3 100644 --- a/Sources/Runtime/Test.Psi/GeneratorsTests.cs +++ b/Sources/Runtime/Test.Psi/GeneratorsTests.cs @@ -3,13 +3,13 @@ namespace Test.Psi { - using Microsoft.Psi; - using Microsoft.Psi.Components; - using Microsoft.VisualStudio.TestTools.UnitTesting; using System; using System.Collections.Generic; using System.Linq; using System.Threading; + using Microsoft.Psi; + using Microsoft.Psi.Components; + using Microsoft.VisualStudio.TestTools.UnitTesting; /// /// Runs a series of tests for stream generators. @@ -52,7 +52,6 @@ namespace Test.Psi Assert.IsTrue(lastMessageTime >= originatingTimes.Last()); } - [TestMethod] [Timeout(60000)] public void RepeatNoClockEnforcement() diff --git a/Sources/Runtime/Test.Psi/InteropTests.cs b/Sources/Runtime/Test.Psi/InteropTests.cs index 11c56985..cdec8bee 100644 --- a/Sources/Runtime/Test.Psi/InteropTests.cs +++ b/Sources/Runtime/Test.Psi/InteropTests.cs @@ -4,23 +4,24 @@ namespace Test.Psi { using System; - using System.Reactive; - using System.Reactive.Linq; using System.IO; using System.Linq; + using System.Reactive; + using System.Reactive.Linq; using System.Text; using System.Threading; - using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.Psi; - using Microsoft.Psi.Interop.Serialization; using Microsoft.Psi.Interop.Format; + using Microsoft.Psi.Interop.Serialization; using Microsoft.Psi.Interop.Transport; + using Microsoft.VisualStudio.TestTools.UnitTesting; using Test.Psi.Common; [TestClass] public class InteropTests { private string path = Path.Combine(Environment.CurrentDirectory, nameof(PersistenceTest)); + private DateTime originatingTime; [TestInitialize] public void Setup() @@ -35,30 +36,28 @@ namespace Test.Psi TestRunner.SafeDirectoryDelete(this.path, true); } - private DateTime originatingTime; - private void AssertStringSerialization(dynamic value, string expected, IFormatSerializer serializer, IFormatDeserializer deserializer, bool roundTrip = true) { - var serialized = serializer.SerializeMessage(value, originatingTime); + var serialized = serializer.SerializeMessage(value, this.originatingTime); Assert.AreEqual(expected, Encoding.UTF8.GetString(serialized.Item1, serialized.Item2, serialized.Item3)); if (roundTrip) { var deserialized = deserializer.DeserializeMessage(serialized.Item1, serialized.Item2, serialized.Item3); - Assert.AreEqual(originatingTime, deserialized.Item2); + Assert.AreEqual(this.originatingTime, deserialized.Item2); - var roundtrip = serializer.SerializeMessage(deserialized.Item1, originatingTime); + var roundtrip = serializer.SerializeMessage(deserialized.Item1, this.originatingTime); Assert.AreEqual(expected, Encoding.UTF8.GetString(roundtrip.Item1, roundtrip.Item2, roundtrip.Item3)); } } private void AssertBinarySerialization(dynamic value, IFormatSerializer serializer, IFormatDeserializer deserializer) { - var serialized = serializer.SerializeMessage(value, originatingTime); + var serialized = serializer.SerializeMessage(value, this.originatingTime); var deserialized = deserializer.DeserializeMessage(serialized.Item1, serialized.Item2, serialized.Item3); - Assert.AreEqual(originatingTime, deserialized.Item2); + Assert.AreEqual(this.originatingTime, deserialized.Item2); - var roundtrip = serializer.SerializeMessage(deserialized.Item1, originatingTime); + var roundtrip = serializer.SerializeMessage(deserialized.Item1, this.originatingTime); Enumerable.SequenceEqual(serialized.Item1, roundtrip.Item1); Assert.AreEqual(serialized.Item2, roundtrip.Item2); Assert.AreEqual(serialized.Item3, roundtrip.Item3); @@ -69,12 +68,12 @@ namespace Test.Psi public void JsonFormatSerializerTest() { var json = JsonFormat.Instance; - AssertStringSerialization(123, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":123}", json, json); - AssertStringSerialization(true, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":true}", json, json); - AssertStringSerialization(2.71828, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":2.71828}", json, json); - AssertStringSerialization("Howdy", @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":""Howdy""}", json, json); - AssertStringSerialization((object)null, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":null}", json, json); - AssertStringSerialization(new [] { 1, 2, 3 }, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":[1,2,3]}", json, json); + this.AssertStringSerialization(123, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":123}", json, json); + this.AssertStringSerialization(true, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":true}", json, json); + this.AssertStringSerialization(2.71828, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":2.71828}", json, json); + this.AssertStringSerialization("Howdy", @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":""Howdy""}", json, json); + this.AssertStringSerialization((object)null, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":null}", json, json); + this.AssertStringSerialization(new[] { 1, 2, 3 }, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":[1,2,3]}", json, json); var structured = new { @@ -85,17 +84,17 @@ namespace Test.Psi X = 213, Y = 107, Width = 42, - Height = 61 - } + Height = 61, + }, }; - AssertStringSerialization(structured, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":{""ID"":123,""Confidence"":0.92,""Face"":{""X"":213,""Y"":107,""Width"":42,""Height"":61}}}", json, json); + this.AssertStringSerialization(structured, @"{""originatingTime"":""1971-11-03T00:00:00.1234567Z"",""message"":{""ID"":123,""Confidence"":0.92,""Face"":{""X"":213,""Y"":107,""Width"":42,""Height"":61}}}", json, json); // also verify "manually" - var serialized = json.SerializeMessage(structured, originatingTime); + var serialized = json.SerializeMessage(structured, this.originatingTime); var deserialized = json.DeserializeMessage(serialized.Item1, serialized.Item2, serialized.Item3); var message = deserialized.Item1; var timestamp = deserialized.Item2; - Assert.AreEqual(originatingTime, timestamp); + Assert.AreEqual(this.originatingTime, timestamp); Assert.AreEqual(123, message.ID); Assert.AreEqual(0.92, message.Confidence); Assert.AreEqual(213, message.Face.X); @@ -109,13 +108,13 @@ namespace Test.Psi public void CsvFormatSerializerTest() { var csv = CsvFormat.Instance; - AssertStringSerialization(123, "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,123\r\n", csv, csv); - AssertStringSerialization(true, "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,True\r\n", csv, csv); - AssertStringSerialization(2.71828, "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,2.71828\r\n", csv, csv); - AssertStringSerialization("Howdy", "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,Howdy\r\n", csv, csv); + this.AssertStringSerialization(123, "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,123\r\n", csv, csv); + this.AssertStringSerialization(true, "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,True\r\n", csv, csv); + this.AssertStringSerialization(2.71828, "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,2.71828\r\n", csv, csv); + this.AssertStringSerialization("Howdy", "_OriginatingTime_,_Value_\r\n1971-11-03T00:00:00.1234567Z,Howdy\r\n", csv, csv); // special case - AssertStringSerialization(new double[] { 1, 2, 3 }, "_OriginatingTime_,_Column0_,_Column1_,_Column2_\r\n1971-11-03T00:00:00.1234567Z,1,2,3\r\n", csv, csv); + this.AssertStringSerialization(new double[] { 1, 2, 3 }, "_OriginatingTime_,_Column0_,_Column1_,_Column2_\r\n1971-11-03T00:00:00.1234567Z,1,2,3\r\n", csv, csv); var structured = new { @@ -127,11 +126,12 @@ namespace Test.Psi Y = 107, Width = 42, Height = 61, - Points = new [] { 123, 456 } - } + Points = new[] { 123, 456 }, + }, }; + // notice Face is traversed but flattened - no hierarchy allowed - AssertStringSerialization(structured, "_OriginatingTime_,ID,Confidence,X,Y,Width,Height\r\n1971-11-03T00:00:00.1234567Z,123,0.92,213,107,42,61\r\n", csv, csv); + this.AssertStringSerialization(structured, "_OriginatingTime_,ID,Confidence,X,Y,Width,Height\r\n1971-11-03T00:00:00.1234567Z,123,0.92,213,107,42,61\r\n", csv, csv); var structuredAmbiguous = new { @@ -143,12 +143,12 @@ namespace Test.Psi X = 213, Y = 107, Width = 42, - Height = 61 - } + Height = 61, + }, }; // notice Face is traversed but flattened - no hierarchy allowed - AssertStringSerialization(structuredAmbiguous, "_OriginatingTime_,ID,Confidence,Confidence,X,Y,Width,Height\r\n1971-11-03T00:00:00.1234567Z,123,0.92,0.89,213,107,42,61\r\n", csv, csv, false); + this.AssertStringSerialization(structuredAmbiguous, "_OriginatingTime_,ID,Confidence,Confidence,X,Y,Width,Height\r\n1971-11-03T00:00:00.1234567Z,123,0.92,0.89,213,107,42,61\r\n", csv, csv, false); var flat = new { @@ -157,9 +157,9 @@ namespace Test.Psi FaceX = 213, FaceY = 107, FaceWidth = 42, - FaceHeight = 61 + FaceHeight = 61, }; - AssertStringSerialization(flat, "_OriginatingTime_,ID,Confidence,FaceX,FaceY,FaceWidth,FaceHeight\r\n1971-11-03T00:00:00.1234567Z,123,0.92,213,107,42,61\r\n", csv, csv); + this.AssertStringSerialization(flat, "_OriginatingTime_,ID,Confidence,FaceX,FaceY,FaceWidth,FaceHeight\r\n1971-11-03T00:00:00.1234567Z,123,0.92,213,107,42,61\r\n", csv, csv); } [TestMethod] @@ -167,11 +167,11 @@ namespace Test.Psi public void MessagePackFormatSerializerTest() { var msg = MessagePackFormat.Instance; - AssertBinarySerialization(123, msg, msg); - AssertBinarySerialization(true, msg, msg); - AssertBinarySerialization(2.71828, msg, msg); - AssertBinarySerialization("Howdy", msg, msg); - AssertBinarySerialization(new [] { 1, 2, 3 }, msg, msg); + this.AssertBinarySerialization(123, msg, msg); + this.AssertBinarySerialization(true, msg, msg); + this.AssertBinarySerialization(2.71828, msg, msg); + this.AssertBinarySerialization("Howdy", msg, msg); + this.AssertBinarySerialization(new[] { 1, 2, 3 }, msg, msg); var structured = new { @@ -182,16 +182,16 @@ namespace Test.Psi X = 213, Y = 107, Width = 42, - Height = 61 - } + Height = 61, + }, }; // can't round-trip ExpandoObjects, so verifying "manually" - var serialized = msg.SerializeMessage(structured, originatingTime); + var serialized = msg.SerializeMessage(structured, this.originatingTime); var deserialized = msg.DeserializeMessage(serialized.Item1, serialized.Item2, serialized.Item3); var message = deserialized.Item1; var timestamp = deserialized.Item2; - Assert.AreEqual(originatingTime, timestamp); + Assert.AreEqual(this.originatingTime, timestamp); Assert.AreEqual(123, message.ID); Assert.AreEqual(0.92, message.Confidence); Assert.AreEqual(213, message.Face.X); @@ -244,7 +244,7 @@ namespace Test.Psi { Console.WriteLine("Starting client..."); var client = new NetMQSource(p, topic, address, JsonFormat.Instance); - client.Do(x => complete = (x == 9)).Do(x => Console.WriteLine($"MSG: {x}")); + client.Do(x => complete = x == 9).Do(x => Console.WriteLine($"MSG: {x}")); results = client.ToObservable().ToListObservable(); p.RunAsync(); @@ -287,10 +287,10 @@ namespace Test.Psi { Console.WriteLine("Starting client..."); var client0 = new NetMQSource(p, topic0, address, JsonFormat.Instance); - client0.Do(x => complete0 = (x == 9)).Do(x => Console.WriteLine($"MSG0: {x}")); + client0.Do(x => complete0 = x == 9).Do(x => Console.WriteLine($"MSG0: {x}")); results0 = client0.ToObservable().ToListObservable(); var client1 = new NetMQSource(p, topic1, address, JsonFormat.Instance); - client1.Do(x => complete1 = (x == 9)).Do(x => Console.WriteLine($"MSG1: {x}")); + client1.Do(x => complete1 = x == 9).Do(x => Console.WriteLine($"MSG1: {x}")); results1 = client1.ToObservable().ToListObservable(); p.RunAsync(); diff --git a/Sources/Runtime/Test.Psi/InterpolateTests.cs b/Sources/Runtime/Test.Psi/InterpolateTests.cs index 115c396b..cfccfd85 100644 --- a/Sources/Runtime/Test.Psi/InterpolateTests.cs +++ b/Sources/Runtime/Test.Psi/InterpolateTests.cs @@ -9,7 +9,7 @@ namespace Test.Psi using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] - public class InterpolateTest + public class InterpolateTests { [TestMethod] [Timeout(60000)] diff --git a/Sources/Runtime/Test.Psi/InterpolatorTests.cs b/Sources/Runtime/Test.Psi/InterpolatorTests.cs index a92298b4..29d7a28f 100644 --- a/Sources/Runtime/Test.Psi/InterpolatorTests.cs +++ b/Sources/Runtime/Test.Psi/InterpolatorTests.cs @@ -4,9 +4,6 @@ namespace Test.Psi { using System; - using System.ComponentModel.DataAnnotations; - using System.Reflection; - using System.Text; using Microsoft.Psi; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -22,7 +19,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -68,7 +65,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -114,7 +111,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -160,7 +157,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message (outside upper bound) @@ -215,7 +212,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate should not match the right end of the interval @@ -273,7 +270,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -319,7 +316,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -365,7 +362,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message (outside upper bound) @@ -420,7 +417,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate should not match the right end of the interval because it's open. @@ -449,7 +446,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -495,7 +492,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -541,7 +538,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -587,7 +584,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message (outside upper bound) @@ -646,7 +643,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate should return does not exist b/c message at 30 falls after the open window @@ -675,7 +672,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -721,7 +718,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -767,7 +764,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -813,7 +810,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message (outside upper bound) @@ -868,7 +865,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate should not match the right end of the interval @@ -926,7 +923,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -972,7 +969,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -1018,7 +1015,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message (outside upper bound) @@ -1073,7 +1070,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate should not match the right end of the interval because it's open. @@ -1102,7 +1099,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -1148,7 +1145,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -1194,7 +1191,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -1240,7 +1237,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message (outside upper bound) @@ -1299,7 +1296,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate should return does not exist b/c message at 30 falls after the open window @@ -1328,7 +1325,7 @@ namespace Test.Psi { new Message(1, new DateTime(10), new DateTime(11), 0, 0), new Message(2, new DateTime(20), new DateTime(21), 0, 1), - new Message(3, new DateTime(30), new DateTime(31), 0, 2) + new Message(3, new DateTime(30), new DateTime(31), 0, 2), }; // Interpolate at point later than last message @@ -1385,7 +1382,6 @@ namespace Test.Psi Assert.AreEqual(InterpolationResult.InsufficientData(), result); } - private InterpolationResult MakeResult(Message msg) { return InterpolationResult.Create(msg.Data, msg.OriginatingTime); diff --git a/Sources/Runtime/Test.Psi/JoinTests.cs b/Sources/Runtime/Test.Psi/JoinTests.cs index 2a7d8e34..23afedfc 100644 --- a/Sources/Runtime/Test.Psi/JoinTests.cs +++ b/Sources/Runtime/Test.Psi/JoinTests.cs @@ -50,19 +50,22 @@ namespace Test.Psi // value N/A 1 2 3 4 5 6 N/A N/A N/A // gamma-result [1 2 - 4 - -] // out 1 2 0 4 0 0 - var input = Generators.Sequence(p, new List>() - { - new Dictionary(), - new Dictionary() { { 1, 1 } }, - new Dictionary() { { 1, 2 } }, - new Dictionary() { { 1, 3 } }, - new Dictionary() { { 1, 4 } }, - new Dictionary() { { 1, 5 } }, - new Dictionary() { { 1, 6 } }, - new Dictionary(), - new Dictionary(), - new Dictionary(), - }, TimeSpan.FromTicks(1)); + var input = Generators.Sequence( + p, + new List>() + { + new Dictionary(), + new Dictionary() { { 1, 1 } }, + new Dictionary() { { 1, 2 } }, + new Dictionary() { { 1, 3 } }, + new Dictionary() { { 1, 4 } }, + new Dictionary() { { 1, 5 } }, + new Dictionary() { { 1, 6 } }, + new Dictionary(), + new Dictionary(), + new Dictionary(), + }, + TimeSpan.FromTicks(1)); var resultsParallelOrDefault = new List(); input.Parallel(s => s.Where(x => x != 3 && x <= 4), outputDefaultIfDropped: true).Do(d => @@ -257,7 +260,7 @@ namespace Test.Psi ValueTuple.Create("A6", "B6", "C6", "D6", "E6", "F6", "G6"), ValueTuple.Create("A7", "B7", "C7", "D7", "E7", "F7", "G7"), ValueTuple.Create("A8", "B8", "C8", "D8", "E8", "F8", "G8"), - ValueTuple.Create("A9", "B9", "C9", "D9", "E9", "F9", "G9") + ValueTuple.Create("A9", "B9", "C9", "D9", "E9", "F9", "G9"), }, results)); } @@ -301,7 +304,7 @@ namespace Test.Psi ValueTuple.Create("A6", "B6", "C6", "D6", "E6", "F6", "G6"), ValueTuple.Create("A7", "B7", "C7", "D7", "E7", "F7", "G7"), ValueTuple.Create("A8", "B8", "C8", "D8", "E8", "F8", "G8"), - ValueTuple.Create("A9", "B9", "C9", "D9", "E9", "F9", "G9") + ValueTuple.Create("A9", "B9", "C9", "D9", "E9", "F9", "G9"), }, results)); } diff --git a/Sources/Runtime/Test.Psi/OpProcessorTests.cs b/Sources/Runtime/Test.Psi/OpProcessorTests.cs index 336668ef..9baff39d 100644 --- a/Sources/Runtime/Test.Psi/OpProcessorTests.cs +++ b/Sources/Runtime/Test.Psi/OpProcessorTests.cs @@ -6,6 +6,7 @@ namespace Test.Psi using System; using System.Collections.Generic; using System.Linq; + using System.Reactive.Linq; using Microsoft.Psi; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -33,5 +34,33 @@ namespace Test.Psi CollectionAssert.AreEqual(new double[] { 100, 75, 50 }, results); } + + [TestMethod] + [Timeout(60000)] + public void StreamEditing() + { + using (var pipeline = Pipeline.Create()) + { + var start = new DateTime(1971, 11, 03); + var range = Generators.Sequence(pipeline, new[] + { + ('B', start.AddSeconds(1)), + ('C', start.AddSeconds(2)), + ('D', start.AddSeconds(3)), + ('E', start.AddSeconds(4)), + }); + var edited = range.EditStream(new[] + { + (true, 'F', start.AddSeconds(5)), // insert F after E + (false, default(char), start.AddSeconds(2)), // delete C + (true, 'A', start), // insert A before B + (true, 'X', start.AddSeconds(3)), // update D to X + }).ToObservable().ToListObservable(); + pipeline.Run(); + + var editedResults = edited.AsEnumerable().ToArray(); + Assert.IsTrue(Enumerable.SequenceEqual(new[] { 'A', 'B', 'X', 'E', 'F' }, editedResults)); + } + } } } diff --git a/Sources/Runtime/Test.Psi/OperatorTests.cs b/Sources/Runtime/Test.Psi/OperatorTests.cs index 3c9e943d..28d9fef1 100644 --- a/Sources/Runtime/Test.Psi/OperatorTests.cs +++ b/Sources/Runtime/Test.Psi/OperatorTests.cs @@ -56,7 +56,7 @@ namespace Test.Psi [Timeout(60000)] public void RepeatTest() { - using (var pipeline = Pipeline.Create(nameof(RepeatTest))) + using (var pipeline = Pipeline.Create(nameof(this.RepeatTest))) { var startTime = DateTime.UtcNow; @@ -288,7 +288,6 @@ namespace Test.Psi } } - [TestMethod] [Timeout(60000)] public void AverageWithCondition() @@ -369,27 +368,27 @@ namespace Test.Psi pipeline.Run(); Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 1.5, 2.5, 3.5, 4.5 }, intAverageHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0.5, 1, 1.5, 2.5, 3.5, 4.5 }, intAverageHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0.5, 1, 1.5, 2, 3, 4 }, intAverageHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, 3, 3.5, 4, 5 }, nullableIntAverageHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, null, null, 3, 3.5, 4, 4.5 }, nullableIntAverageHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 1.5, 2.5, 3.5, 4.5 }, longAverageHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0.5, 1, 1.5, 2.5, 3.5, 4.5 }, longAverageHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0.5, 1, 1.5, 2, 3, 4 }, longAverageHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, 3, 3.5, 4, 5 }, nullableLongAverageHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, null, null, 3, 3.5, 4, 4.5 }, nullableLongAverageHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 1.5f, 2.5f, 3.5f, 4.5f }, floatAverageHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 0.5f, 1, 1.5f, 2.5f, 3.5f, 4.5f }, floatAverageHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 0.5f, 1, 1.5f, 2f, 3f, 4f }, floatAverageHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float?[] { null, 3, 3.5f, 4, 5 }, nullableFloatAverageHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float?[] { null, null, null, 3, 3.5f, 4, 4.5f }, nullableFloatAverageHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 1.5, 2.5, 3.5, 4.5 }, doubleAverageHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0.5, 1, 1.5, 2.5, 3.5, 4.5 }, doubleAverageHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0.5, 1, 1.5, 2, 3, 4 }, doubleAverageHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, 3, 3.5, 4, 5 }, nullableDoubleAverageHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, null, null, 3, 3.5, 4, 4.5 }, nullableDoubleAverageHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 1.5m, 2.5m, 3.5m, 4.5m }, decimalAverageHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 0.5m, 1, 1.5m, 2.5m, 3.5m, 4.5m }, decimalAverageHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 0.5m, 1, 1.5m, 2m, 3m, 4m }, decimalAverageHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal?[] { null, 3, 3.5m, 4, 5 }, nullableDecimalAverageHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal?[] { null, null, null, 3, 3.5m, 4, 4.5m }, nullableDecimalAverageHistByTime.AsEnumerable())); } @@ -407,12 +406,11 @@ namespace Test.Psi pipeline.Run(); - Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 1, 2, 3, 4, 4, 4, 4 }, countHistoryByTime.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 1, 2, 3, 4, 4, 4, 4 }, longCountHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 1, 2, 3, 4, 5, 5, 5 }, countHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 1, 2, 3, 4, 5, 5, 5 }, longCountHistoryByTime.AsEnumerable())); } } - [TestMethod] [Timeout(60000)] public void SumOverHistory() @@ -462,27 +460,27 @@ namespace Test.Psi pipeline.Run(); Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 6, 10, 14, 18 }, intSumHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 1, 3, 6, 10, 14, 18 }, intSumHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 1, 3, 6, 10, 15, 20 }, intSumHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new int?[] { 0, 3, 7, 12, 15 }, nullableIntSumHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new int?[] { 0, 0, 0, 3, 7, 12, 18 }, nullableIntSumHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 6, 10, 14, 18 }, longSumHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 0, 1, 3, 6, 10, 14, 18 }, longSumHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 0, 1, 3, 6, 10, 15, 20 }, longSumHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new long?[] { 0, 3, 7, 12, 15 }, nullableLongSumHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new long?[] { 0, 0, 0, 3, 7, 12, 18 }, nullableLongSumHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 6, 10, 14, 18 }, floatSumHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 1, 3, 6, 10, 14, 18 }, floatSumHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 1, 3, 6, 10, 15, 20 }, floatSumHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float?[] { 0, 3, 7, 12, 15 }, nullableFloatSumHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float?[] { 0, 0, 0, 3, 7, 12, 18 }, nullableFloatSumHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 6, 10, 14, 18 }, doubleSumHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 1, 3, 6, 10, 14, 18 }, doubleSumHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 1, 3, 6, 10, 15, 20 }, doubleSumHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { 0, 3, 7, 12, 15 }, nullableDoubleSumHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { 0, 0, 0, 3, 7, 12, 18 }, nullableDoubleSumHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 6, 10, 14, 18 }, decimalSumHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 1, 3, 6, 10, 14, 18 }, decimalSumHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 1, 3, 6, 10, 15, 20 }, decimalSumHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal?[] { 0, 3, 7, 12, 15 }, nullableDecimalSumHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal?[] { 0, 0, 0, 3, 7, 12, 18 }, nullableDecimalSumHistByTime.AsEnumerable())); } @@ -537,27 +535,27 @@ namespace Test.Psi pipeline.Run(); Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 1, 2, 3 }, intMinHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 0, 0, 0, 1, 2, 3 }, intMinHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 0, 0, 0, 0, 1, 2 }, intMinHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new int?[] { null, 3, 3, 3, 4 }, nullableIntMinHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new int?[] { null, null, null, 3, 3, 3, 3 }, nullableIntMinHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 0, 1, 2, 3 }, longMinHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 0, 0, 0, 0, 1, 2, 3 }, longMinHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new long[] { 0, 0, 0, 0, 0, 1, 2 }, longMinHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new long?[] { null, 3, 3, 3, 4 }, nullableLongMinHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new long?[] { null, null, null, 3, 3, 3, 3 }, nullableLongMinHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 1, 2, 3 }, floatMinHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 0, 0, 0, 1, 2, 3 }, floatMinHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new float[] { 0, 0, 0, 0, 0, 1, 2 }, floatMinHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float?[] { null, 3, 3, 3, 4 }, nullableFloatMinHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new float?[] { null, null, null, 3, 3, 3, 3 }, nullableFloatMinHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 1, 2, 3 }, doubleMinHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0, 0, 0, 1, 2, 3 }, doubleMinHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new double[] { 0, 0, 0, 0, 0, 1, 2 }, doubleMinHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, 3, 3, 3, 4 }, nullableDoubleMinHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new double?[] { null, null, null, 3, 3, 3, 3 }, nullableDoubleMinHistByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 1, 2, 3 }, decimalMinHistoryBySize.AsEnumerable())); - Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 0, 0, 0, 1, 2, 3 }, decimalMinHistoryByTime.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new decimal[] { 0, 0, 0, 0, 0, 1, 2 }, decimalMinHistoryByTime.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal?[] { null, 3, 3, 3, 4 }, nullableDecimalMinHistBySize.AsEnumerable())); Assert.IsTrue(Enumerable.SequenceEqual(new decimal?[] { null, null, null, 3, 3, 3, 3 }, nullableDecimalMinHistByTime.AsEnumerable())); } @@ -726,7 +724,6 @@ namespace Test.Psi } } - [TestMethod] [Timeout(60000)] public void MinMaxWithConditionAndComparer() @@ -747,11 +744,12 @@ namespace Test.Psi [TestMethod] [Timeout(60000)] - public void BufferBySize() + public void BufferBySizeInclusive() { using (var pipeline = Pipeline.Create()) { - var buffers = Generators.Range(pipeline, 0, 5, TimeSpan.FromTicks(1)).Window(0, 2).ToObservable().ToListObservable(); + var inclusiveIntInterval = new IntInterval(0, true, 2, true); + var buffers = Generators.Range(pipeline, 0, 5, TimeSpan.FromTicks(1)).Window(inclusiveIntInterval).ToObservable().ToListObservable(); var timestamps = Generators.Range(pipeline, 0, 5, TimeSpan.FromTicks(1)).Select((_, e) => e.OriginatingTime).Window(0, 2).Select((m, e) => Tuple.Create(m.ToArray(), e.OriginatingTime)).ToObservable().ToListObservable(); pipeline.Run(); @@ -771,6 +769,34 @@ namespace Test.Psi } } + [TestMethod] + [Timeout(60000)] + public void BufferBySizeExclusive() + { + using (var pipeline = Pipeline.Create()) + { + var inclusiveIntInterval = new IntInterval(0, true, 2, false); + var buffers = Generators.Range(pipeline, 0, 5, TimeSpan.FromTicks(1)).Window(inclusiveIntInterval).ToObservable().ToListObservable(); + var timestamps = Generators.Range(pipeline, 0, 5, TimeSpan.FromTicks(1)).Select((_, e) => e.OriginatingTime).Window(0, 2).Select((m, e) => Tuple.Create(m.ToArray(), e.OriginatingTime)).ToObservable().ToListObservable(); + pipeline.Run(); + + var bufferResults = buffers.AsEnumerable().ToArray(); + Assert.AreEqual(4, bufferResults.Length); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 1 }, bufferResults[0])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 1, 2 }, bufferResults[1])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 2, 3 }, bufferResults[2])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 3, 4 }, bufferResults[3])); + + var timestampResults = timestamps.AsEnumerable().ToArray(); + Assert.AreEqual(3, timestampResults.Length); + foreach (var buf in timestamps) + { + // buffer timestamp matches _first_ message in buffer + Assert.AreEqual(buf.Item1.First(), buf.Item2); + } + } + } + [TestMethod] [Timeout(60000)] public void FutureWindowBySizeWithSelector() @@ -833,11 +859,12 @@ namespace Test.Psi [TestMethod] [Timeout(60000)] - public void HistoryByTime() + public void HistoryByTimeInclusive() { using (var pipeline = Pipeline.Create()) { - var buffers = Generators.Range(pipeline, 0, 5, TimeSpan.FromMilliseconds(1)).Window(RelativeTimeInterval.Past(TimeSpan.FromMilliseconds(2))).ToObservable().ToListObservable(); + var inclusiveRelativeTime = RelativeTimeInterval.Past(TimeSpan.FromMilliseconds(2)); + var buffers = Generators.Range(pipeline, 0, 5, TimeSpan.FromMilliseconds(1)).Window(inclusiveRelativeTime).ToObservable().ToListObservable(); var timestamps = Generators.Range(pipeline, 0, 5, TimeSpan.FromMilliseconds(1)).Select((_, e) => e.OriginatingTime).Window(RelativeTimeInterval.Past(TimeSpan.FromMilliseconds(2))).Select((m, e) => Tuple.Create(m.ToArray(), e.OriginatingTime)).ToObservable().ToListObservable(); pipeline.Run(); @@ -859,6 +886,35 @@ namespace Test.Psi } } + [TestMethod] + [Timeout(60000)] + public void HistoryByTimeExclusive() + { + using (var pipeline = Pipeline.Create()) + { + var exclusiveRelativeTime = RelativeTimeInterval.Past(TimeSpan.FromMilliseconds(2), false); + var buffers = Generators.Range(pipeline, 0, 5, TimeSpan.FromMilliseconds(1)).Window(exclusiveRelativeTime).ToObservable().ToListObservable(); + var timestamps = Generators.Range(pipeline, 0, 5, TimeSpan.FromMilliseconds(1)).Select((_, e) => e.OriginatingTime).Window(RelativeTimeInterval.Past(TimeSpan.FromMilliseconds(2))).Select((m, e) => Tuple.Create(m.ToArray(), e.OriginatingTime)).ToObservable().ToListObservable(); + pipeline.Run(); + + var results = buffers.AsEnumerable().ToArray(); + Assert.AreEqual(5, results.Length); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0 }, results[0])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 0, 1 }, results[1])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 1, 2 }, results[2])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 2, 3 }, results[3])); + Assert.IsTrue(Enumerable.SequenceEqual(new int[] { 3, 4 }, results[4])); + + var timestampResults = timestamps.AsEnumerable().ToArray(); + Assert.AreEqual(5, timestampResults.Length); + foreach (var buf in timestamps) + { + // buffer timestamp matches _last_ message in buffer + Assert.AreEqual(buf.Item1.Last(), buf.Item2); + } + } + } + [TestMethod] [Timeout(60000)] public void NonOriginSpanningPastWindowByTime() @@ -877,8 +933,8 @@ namespace Test.Psi Assert.AreEqual(0, results[0]); // empty Assert.AreEqual(0, results[1]); // 0 Assert.AreEqual(1, results[2]); // 0 + 1 - Assert.AreEqual(3, results[3]); // 1 + 2 - Assert.AreEqual(5, results[4]); // 2 + 3 + Assert.AreEqual(3, results[3]); // 0 + 1 + 2 + Assert.AreEqual(6, results[4]); // 1 + 2 + 3 } } @@ -1053,32 +1109,48 @@ namespace Test.Psi } // test growing (right) window - pairs are (obsolete, start, end) windows with expected windowed data - Test(new[] { - ((2, 2, 4), new[] { 2, 3, 4 }), // 2..4 growing to right - ((2, 2, 5), new[] { 2, 3, 4, 5 }), // 2..5 - ((2, 2, 6), new[] { 2, 3, 4, 5, 6 }), // 2..6 - }, true, true); + Test( + new[] + { + ((2, 2, 4), new[] { 2, 3, 4 }), // 2..4 growing to right + ((2, 2, 5), new[] { 2, 3, 4, 5 }), // 2..5 + ((2, 2, 6), new[] { 2, 3, 4, 5, 6 }), // 2..6 + }, + true, + true); // test left inclusivity - Test(new[] { - ((2, 2, 4), new[] { 3, 4 }), - ((2, 2, 5), new[] { 3, 4, 5 }), - ((2, 2, 6), new[] { 3, 4, 5, 6 }), - }, false /* not including left */, true); + Test( + new[] + { + ((2, 2, 4), new[] { 3, 4 }), + ((2, 2, 5), new[] { 3, 4, 5 }), + ((2, 2, 6), new[] { 3, 4, 5, 6 }), + }, + false /* not including left */, + true); // test right inclusivity - Test(new[] { - ((2, 2, 4), new[] { 2, 3 }), - ((2, 2, 5), new[] { 2, 3, 4 }), - ((2, 2, 6), new[] { 2, 3, 4, 5}), - }, true, false /* not including right */); + Test( + new[] + { + ((2, 2, 4), new[] { 2, 3 }), + ((2, 2, 5), new[] { 2, 3, 4 }), + ((2, 2, 6), new[] { 2, 3, 4, 5 }), + }, + true, + false /* not including right */); // test left & right inclusivity - Test(new[] { - ((2, 2, 4), new[] { 3 }), - ((2, 2, 5), new[] { 3, 4 }), - ((2, 2, 6), new[] { 3, 4, 5}), - }, false /* not including left */, false /* not including right */); + Test( + new[] + { + ((2, 2, 4), new[] { 3 }), + ((2, 2, 5), new[] { 3, 4 }), + ((2, 2, 6), new[] { 3, 4, 5 }), + }, + false /* not including left */, + false /* not including right */); // test left-most window Test(new[] { ((0, 0, 2), new[] { 0, 1, 2 }), }, true, true); @@ -1090,26 +1162,38 @@ namespace Test.Psi Test(new[] { ((7, 7, 100), new[] { 7, 8, 9 }), }, true, true); // test sliding window - Test(new[] { - ((2, 2, 4), new[] { 2, 3, 4 }), // 2..4 sliding to right - ((3, 3, 5), new[] { 3, 4, 5 }), // 3..6 - ((4, 4, 6), new[] { 4, 5, 6 }), // 4..7 - }, true, true); + Test( + new[] + { + ((2, 2, 4), new[] { 2, 3, 4 }), // 2..4 sliding to right + ((3, 3, 5), new[] { 3, 4, 5 }), // 3..6 + ((4, 4, 6), new[] { 4, 5, 6 }), // 4..7 + }, + true, + true); // test growing (left) window - Test(new[] { - ((1, 3, 5), new[] { 3, 4, 5 }), // 3..5 growing to left - ((1, 2, 5), new[] { 2, 3, 4, 5 }), // 2..4 - ((1, 1, 5), new[] { 1, 2, 3, 4, 5}), // 1..5 - }, true, true); + Test( + new[] + { + ((1, 3, 5), new[] { 3, 4, 5 }), // 3..5 growing to left + ((1, 2, 5), new[] { 2, 3, 4, 5 }), // 2..4 + ((1, 1, 5), new[] { 1, 2, 3, 4, 5 }), // 1..5 + }, + true, + true); // invalid if obsolete time moves backward! try { - Test(new[] { - ((3, 3, 5), new[] { 3, 4, 5 }), // 3..5 growing to left - ((2, 3, 5), new[] { 3, 4, 5 }), // 3..4 boom! (2 earlier than previous [3] obsolete) - }, true, true); + Test( + new[] + { + ((3, 3, 5), new[] { 3, 4, 5 }), // 3..5 growing to left + ((2, 3, 5), new[] { 3, 4, 5 }), // 3..4 boom! (2 earlier than previous [3] obsolete) + }, + true, + true); Assert.Fail("Expected exception due to obsolete time backtracking"); } catch (Exception ex) @@ -1120,10 +1204,14 @@ namespace Test.Psi // invalid if window requests are before previous obsolete time try { - Test(new[] { - ((3, 3, 5), new[] { 3, 4, 5 }), // 3..5 growing to left - ((3, 2, 5), new[] { 1, 3, 4, 5 }), // 2..5 boom! (2 has alreadly been obsoleted) - }, true, true); + Test( + new[] + { + ((3, 3, 5), new[] { 3, 4, 5 }), // 3..5 growing to left + ((3, 2, 5), new[] { 1, 3, 4, 5 }), // 2..5 boom! (2 has already been obsoleted) + }, + true, + true); Assert.Fail("Expected exception due to window request into obsoleted inputs"); } catch (Exception ex) @@ -1136,9 +1224,9 @@ namespace Test.Psi [Timeout(60000)] public void StdOverIEnumerable() { - Assert.IsTrue(Math.Abs(new [] { 727.7m, 1086.5m, 1091.0m, 1361.3m, 1490.5m, 1956.1m }.Std() - 420.96248961952256m) < 0.0000000001m); // decimal - Assert.IsTrue(Math.Abs(new [] { 727.7, 1086.5, 1091.0, 1361.3, 1490.5, 1956.1 }.Std() - 420.96248961952256) < double.Epsilon); // double - Assert.IsTrue(Math.Abs(new [] { 727.7f, 1086.5f, 1091.0f, 1361.3f, 1490.5f, 1956.1f }.Std() - 420.96248961952256f) < float.Epsilon); // float + Assert.IsTrue(Math.Abs(new[] { 727.7m, 1086.5m, 1091.0m, 1361.3m, 1490.5m, 1956.1m }.Std() - 420.96248961952256m) < 0.0000000001m); // decimal + Assert.IsTrue(Math.Abs(new[] { 727.7, 1086.5, 1091.0, 1361.3, 1490.5, 1956.1 }.Std() - 420.96248961952256) < double.Epsilon); // double + Assert.IsTrue(Math.Abs(new[] { 727.7f, 1086.5f, 1091.0f, 1361.3f, 1490.5f, 1956.1f }.Std() - 420.96248961952256f) < float.Epsilon); // float Assert.AreEqual(0, new double[] { }.Std()); } @@ -1162,7 +1250,7 @@ namespace Test.Psi [Timeout(60000)] public void ZipAndMerge() { - var zipped = new List(); + var zipped = new List(); var merged = new List(); using (var p = Pipeline.Create()) @@ -1179,22 +1267,52 @@ namespace Test.Psi var sourceB = Generators.Range(p, 0, 10, TimeSpan.FromMilliseconds(15)).Select(i => $"B{i}"); var sourceC = Generators.Range(p, 0, 10, TimeSpan.FromMilliseconds(20)).Select(i => $"C{i}").Delay(TimeSpan.FromMilliseconds(100)); - Operators.Merge(new [] { sourceA, sourceB, sourceC }).Do(x => merged.Add(x.Data)); // non-deterministic order - Operators.Zip(new [] { sourceA, sourceB, sourceC }).Do(x => zipped.Add(x.Data)); // ordered by originating time, then stream ID within single tick + Operators.Merge(new[] { sourceA, sourceB, sourceC }).Do(x => merged.Add(x.Data.DeepClone())); // non-deterministic order + Operators.Zip(new[] { sourceA, sourceB, sourceC }).Do(x => zipped.Add(x.DeepClone())); // ordered by originating time, then stream ID within single tick p.Run(); } // Zipped and ordered by originating time (with stream ID tie-breaker) - Assert.IsTrue(Enumerable.SequenceEqual(new[] { "A0", "B0", "C0", "A1", "B1", "A2", "C1", "A3", "B2", "A4", - "C2", "B3", "A5", "A6", "B4", "C3", "A7", "B5", "A8", "C4", - "A9", "B6", "C5", "B7", "B8", "C6", "B9", "C7", "C8", "C9" }, zipped)); + var zippedShouldBe = new[] + { + new string[] { "A0", "B0", "C0" }, + new string[] { "A1" }, + new string[] { "B1" }, + new string[] { "A2", "C1" }, + new string[] { "A3", "B2" }, + new string[] { "A4", "C2" }, + new string[] { "B3" }, + new string[] { "A5" }, + new string[] { "A6", "B4", "C3" }, + new string[] { "A7" }, + new string[] { "B5" }, + new string[] { "A8", "C4" }, + new string[] { "A9", "B6" }, + new string[] { "C5" }, + new string[] { "B7" }, + new string[] { "B8", "C6" }, + new string[] { "B9" }, + new string[] { "C7" }, + new string[] { "C8" }, + new string[] { "C9" }, + }; + Assert.AreEqual(zipped.Count, zippedShouldBe.Length); + for (int i = 0; i < zipped.Count; i++) + { + Assert.IsTrue(Enumerable.SequenceEqual(zipped[i], zippedShouldBe[i])); + } // Since merging is non-deterministic, all we test here is that all messages arrive - Assert.IsTrue(Enumerable.SequenceEqual(new[] { "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", - "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", - "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9" }, merged.OrderBy(_ => _))); + Assert.IsTrue(Enumerable.SequenceEqual( + new[] + { + "A0", "A1", "A2", "A3", "A4", "A5", "A6", "A7", "A8", "A9", + "B0", "B1", "B2", "B3", "B4", "B5", "B6", "B7", "B8", "B9", + "C0", "C1", "C2", "C3", "C4", "C5", "C6", "C7", "C8", "C9", + }, + merged.OrderBy(_ => _))); } [TestMethod] diff --git a/Sources/Runtime/Test.Psi/PersistenceTest.cs b/Sources/Runtime/Test.Psi/PersistenceTest.cs index 43c4e05a..f1ce87d6 100644 --- a/Sources/Runtime/Test.Psi/PersistenceTest.cs +++ b/Sources/Runtime/Test.Psi/PersistenceTest.cs @@ -7,6 +7,7 @@ namespace Test.Psi using System.Collections.Generic; using System.IO; using System.Linq; + using System.Reactive.Linq; using System.Runtime.Serialization; using System.Threading; using Microsoft.Psi; @@ -167,6 +168,7 @@ namespace Test.Psi [Timeout(60000)] public void PersistSingleStream() { + // generate a sequence from 1 .. 100, simulating also a latency and write to store var count = 100; var name = nameof(this.PersistSingleStream); using (var p = Pipeline.Create("write")) @@ -228,6 +230,116 @@ namespace Test.Psi Assert.AreEqual(factor * count * (count + 1) / 2, sum2); } + [TestMethod] + [Timeout(60000)] + public void CopyStore() + { + // generate a sequence from 1 .. 100 + var count = 100; + var name = nameof(this.CopyStore); + var supplemental = Math.E; // supplemental metadata + using (var p = Pipeline.Create("write")) + { + var writeStore = Store.Create(p, name, this.path); + var seq = Generators.Sequence(p, 1, i => i + 1, count, TimeSpan.FromTicks(1)) + .Select( + x => + { + Thread.Sleep(1); + return x; + }, + DeliveryPolicy.Unlimited); + seq.Write(supplemental, "seq", writeStore); + p.Run(); + } + + var copyName = $"{name}Copy"; + Store.Copy((name, this.path), (copyName, this.path)); + + // now replay the contents and verify we get the right sum + double sum = 0; + using (var p2 = Pipeline.Create("read")) + { + var readStore = Store.Open(p2, copyName, this.path); + var seq2 = readStore.OpenStream("seq"); + Assert.AreEqual(supplemental, readStore.GetSupplementalMetadata("seq"), double.Epsilon); + var verifier = seq2.Do(s => sum += s); + p2.Run(); + } + + Assert.AreEqual(count * (count + 1) / 2, sum); + } + + [TestMethod] + [Timeout(60000)] + public void EditStore() + { + var name = nameof(this.EditStore); + var supplemental = Math.E; // supplemental metadata + var now = DateTime.UtcNow; + DateTime[] originatingTimes = new DateTime[] + { + now, + now.AddMilliseconds(1), + now.AddMilliseconds(2), + now.AddMilliseconds(3), + now.AddMilliseconds(4), + now.AddMilliseconds(5), + }; + using (var p = Pipeline.Create("write")) + { + var writeStore = Store.Create(p, name, this.path); + var stream0 = Generators.Sequence(p, new[] + { + (7, originatingTimes[0]), + (42, originatingTimes[1]), + (1, originatingTimes[2]), + (123, originatingTimes[3]), + (1971, originatingTimes[4]), + (0, originatingTimes[5]), + }); + stream0.Write("stream0", writeStore); + var stream1 = Generators.Sequence(p, new[] + { + ('B', originatingTimes[1]), + ('C', originatingTimes[2]), + ('E', originatingTimes[3]), + ('F', originatingTimes[4]), + }); + var times = stream1.Select((_, e) => e.OriginatingTime).ToObservable().ToListObservable(); + stream1.Write(supplemental, "stream1", writeStore); + p.Run(); + originatingTimes = times.AsEnumerable().ToArray(); + } + + var edits = new Dictionary>(); + edits.Add( + "stream1", + new (bool, dynamic, DateTime)[] + { + //// TODO: why does Zip never get unsubscribed?! (true, 'G', originatingTimes[3].AddTicks(1)), // insert G after F (past end of original stream) + (true, 'A', originatingTimes[0].AddTicks(-1)), // insert A before B (before start of original stream) + (true, 'D', originatingTimes[1].AddTicks(1)), // insert D between C and E + (false, null, originatingTimes[1]), // delete C + (true, 'X', originatingTimes[2]), // update E to X + }); + + var editName = $"{name}Edited"; + Store.Edit((name, this.path), (editName, this.path), edits); + + // now replay the contents and verify we get the right sum + using (var p2 = Pipeline.Create("read")) + { + var readStore = Store.Open(p2, editName, this.path); + var stream0 = readStore.OpenStream("stream0").ToObservable().ToListObservable(); + var stream1 = readStore.OpenStream("stream1").ToObservable().ToListObservable(); + Assert.AreEqual(supplemental, readStore.GetSupplementalMetadata("stream1"), double.Epsilon); + p2.Run(); + Assert.IsTrue(Enumerable.SequenceEqual(new[] { 7, 42, 1, 123, 1971, 0 }, stream0.AsEnumerable())); + Assert.IsTrue(Enumerable.SequenceEqual(new[] { 'A', 'B', 'D', 'X', 'F' }, stream1.AsEnumerable())); + } + } + [TestMethod] [Timeout(60000)] public void Seek() @@ -277,14 +389,14 @@ namespace Test.Psi [Timeout(60000)] public void ReadWhilePersistingToDisk() { - this.ReadWhilePersisting(nameof(ReadWhilePersistingToDisk), this.path); + this.ReadWhilePersisting(nameof(this.ReadWhilePersistingToDisk), this.path); } [TestMethod] [Timeout(60000)] public void ReadWhilePersistingInMemory() { - this.ReadWhilePersisting(nameof(ReadWhilePersistingInMemory), null); + this.ReadWhilePersisting(nameof(this.ReadWhilePersistingInMemory), null); } // with a null path, the file is only in memory (system file). With a non-null path, the file is also written to disk @@ -685,12 +797,12 @@ namespace Test.Psi [TestMethod] [Timeout(60000)] - public void CopyStore() + public void CopyStream() { var count = 100; var before = new Envelope[count + 1]; var after = new Envelope[count + 1]; - var name = nameof(this.CopyStore); + var name = nameof(this.CopyStream); using (var p = Pipeline.Create("write")) { @@ -789,7 +901,7 @@ namespace Test.Psi } // verify the results in the interval after the cropped range - for (int i = (count - 4); i <= count; i++) + for (int i = count - 4; i <= count; i++) { Assert.AreEqual(0, after[i].SequenceId); Assert.AreEqual(0, after[i].OriginatingTime.Ticks); @@ -822,66 +934,54 @@ namespace Test.Psi // pipeline terminated normally so store should be valid Assert.IsTrue(Store.IsClosed(name, this.path)); - // now generate an invalid store - var p2 = Pipeline.Create("write2"); + // Now create a new pipeline in which we will simulate an invalid store by taking a + // snapshot of the store files midway through the execution (use synchronous policy + // to ensure that the messages actually hit the exporter before the snapshot is taken). + var p2 = Pipeline.Create("write2", DeliveryPolicy.SynchronousOrThrottle); var invalidStore = Store.Create(p2, name, this.path); string tempFolder = Path.Combine(this.path, Guid.NewGuid().ToString()); - - try + var seq2 = Generators.Sequence(p2, 1, i => i + 1, count, TimeSpan.FromTicks(1)); + seq2.Do((m, e) => { - var seq2 = Generators.Sequence(p2, 1, i => i + 1, count, TimeSpan.FromTicks(1)); - seq2.Do((m, e) => + // Halfway through, simulate abrupt termination of the pipeline by copying the store + // files while the pipeline is running, resulting in a store in an invalid state. + if (e.OriginatingTime.Ticks == count / 2) { - if (e.OriginatingTime.Ticks >= count / 2) + // at this point the store should still be open + Assert.IsFalse(Store.IsClosed(name, this.path)); + + // We need to temporarily save the invalid store before disposing the pipeline, + // since the store will be rendered valid when the pipeline is terminated. + Directory.CreateDirectory(tempFolder); + + // copy the store files to the temp folder - we will restore them later + foreach (var file in Directory.EnumerateFiles(invalidStore.Path)) { - // Simulate abrupt termination of the pipeline by copying the store files - // while the pipeline is running, resulting in a store in an invalid state. - - // at this point the store should still be open - Assert.IsFalse(Store.IsClosed(name, this.path)); - - // We need to temporarily save the invalid store before disposing the pipeline, - // since the store will be rendered valid when the pipeline is terminated. - Directory.CreateDirectory(tempFolder); - - // copy the store files to the temp folder - we will restore them later - foreach (var file in Directory.EnumerateFiles(invalidStore.Path)) - { - var fileInfo = new FileInfo(file); - File.Copy(file, Path.Combine(tempFolder, fileInfo.Name)); - } - - // throw an exception and terminate the pipeline - throw new Exception(); + var fileInfo = new FileInfo(file); + File.Copy(file, Path.Combine(tempFolder, fileInfo.Name)); } - }).Write("seq", invalidStore); - seq2.Select(i => i.ToString()).Write("seqString", invalidStore); - - // run the pipeline with exception handling enabled - p2.Run(new ReplayDescriptor(new DateTime(1), false)); - } - catch - { - } - finally - { - p2.Dispose(); - - // after disposing the pipeline, the store becomes valid - Assert.IsTrue(Store.IsClosed(name, this.path)); - - // delete the (now valid) store files - foreach (var file in Directory.EnumerateFiles(invalidStore.Path)) - { - TestRunner.SafeFileDelete(file); } + }).Write("seq", invalidStore); + seq2.Select(i => i.ToString()).Write("seqString", invalidStore); - // restore the invalid store files from the temp folder - foreach (var file in Directory.EnumerateFiles(tempFolder)) - { - var fileInfo = new FileInfo(file); - File.Move(file, Path.Combine(invalidStore.Path, fileInfo.Name)); - } + // run the pipeline with exception handling enabled + p2.Run(new ReplayDescriptor(new DateTime(1), false)); + p2.Dispose(); + + // after disposing the pipeline, the store becomes valid + Assert.IsTrue(Store.IsClosed(name, this.path)); + + // delete the (now valid) store files + foreach (var file in Directory.EnumerateFiles(invalidStore.Path)) + { + TestRunner.SafeFileDelete(file); + } + + // restore the invalid store files from the temp folder + foreach (var file in Directory.EnumerateFiles(tempFolder)) + { + var fileInfo = new FileInfo(file); + File.Move(file, Path.Combine(invalidStore.Path, fileInfo.Name)); } // the generated store should be invalid prior to repairing @@ -904,14 +1004,19 @@ namespace Test.Psi p3.Run(ReplayDescriptor.ReplayAll); } - // verify the results in the repaired store prior to the exception - for (int i = 0; i < count / 2; i++) + // Since we cannot guarantee when the messages written to the "invalid store" actually got + // flushed from the memory-mapped file, just verify that we got some of the initial data. + for (int i = 0; i < 3; i++) { Assert.AreEqual(valid[i].SequenceId, invalid[i].SequenceId); Assert.AreEqual(valid[i].OriginatingTime, invalid[i].OriginatingTime); } - // verify there are no results after the exception + // log how much of the store actually got written for diagnostic purposes only + int lastIndex = invalid.LastOrDefault(e => e.SequenceId != 0).SequenceId; + Console.WriteLine($"Last sequence id found: {lastIndex}"); + + // verify there are no results after the point at which the store was rendered invalid for (int j = count / 2; j <= count; j++) { Assert.AreEqual(0, invalid[j].SequenceId); @@ -928,7 +1033,7 @@ namespace Test.Psi { // here we write large messages to a store. This will quickly overflow the extents, causing // MemoryMappedViews to be disposed. This is a potentially blocking call which we now do on a - // separate thread. Prior to this fix, it would block writing/reading the store with a human-noticable + // separate thread. Prior to this fix, it would block writing/reading the store with a human-noticeable // delay of several seconds. var payload = new byte[1024 * 1024 * 10]; @@ -1225,6 +1330,36 @@ namespace Test.Psi Assert.AreEqual(1.0, lastValue); } + [TestMethod] + [Timeout(60000)] + public void PersistingStreamSupplementalMetadata() + { + var name = nameof(this.PersistingStreamSupplementalMetadata); + + // create store with supplemental meta + using (var p = Pipeline.Create("write")) + { + var store = Store.Create(p, name, this.path); + var stream0 = Generators.Range(p, 0, 10, TimeSpan.FromTicks(1)); + var stream1 = Generators.Range(p, 0, 10, TimeSpan.FromTicks(1)); + stream0.Write("NoMeta", store, true); + stream1.Write(("Favorite irrational number", Math.E), "WithMeta", store); + } + + // read it back with an importer + using (var q = Pipeline.Create("read")) + { + var store = Store.Open(q, name, this.path); + Assert.IsNull(store.GetMetadata("NoMeta").SupplementalMetadataTypeName); + Assert.AreEqual(typeof(ValueTuple).AssemblyQualifiedName, store.GetMetadata("WithMeta").SupplementalMetadataTypeName); + var supplemental0 = store.GetSupplementalMetadata<(string, double)>("WithMeta"); + Assert.AreEqual("Favorite irrational number", supplemental0.Item1); + Assert.AreEqual(Math.E, supplemental0.Item2); + Assert.ThrowsException(() => store.GetSupplementalMetadata("NoMeta")); + Assert.ThrowsException(() => store.GetSupplementalMetadata("WithMeta")); + } + } + [DataContract(Name = "TestDataContract")] private class DataContractTypeV1 { diff --git a/Sources/Runtime/Test.Psi/PipelineTest.cs b/Sources/Runtime/Test.Psi/PipelineTest.cs index 4682ad40..870b2180 100644 --- a/Sources/Runtime/Test.Psi/PipelineTest.cs +++ b/Sources/Runtime/Test.Psi/PipelineTest.cs @@ -6,13 +6,13 @@ namespace Test.Psi using System; using System.Collections.Generic; using System.Linq; - using System.Threading; using System.Reactive; using System.Reactive.Linq; + using System.Threading; using Microsoft.Psi; using Microsoft.Psi.Components; - using Microsoft.VisualStudio.TestTools.UnitTesting; using Microsoft.Psi.Diagnostics; + using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class PipelineTest @@ -88,10 +88,6 @@ namespace Test.Psi public class TestReactiveCompositeComponent : Subpipeline { - public Receiver In { private set; get; } - - public Emitter Out { private set; get; } - public TestReactiveCompositeComponent(Pipeline parent) : base(parent, "TestReactiveCompositeComponent") { @@ -101,6 +97,10 @@ namespace Test.Psi this.Out = output.Out; input.Select(i => i * 2).PipeTo(output); } + + public Receiver In { get; private set; } + + public Emitter Out { get; private set; } } [TestMethod] @@ -122,8 +122,6 @@ namespace Test.Psi public class TestFiniteSourceCompositeComponent : Subpipeline { - public Emitter Out { private set; get; } - public TestFiniteSourceCompositeComponent(Pipeline parent) : base(parent, "TestFiniteSourceCompositeComponent") { @@ -131,6 +129,8 @@ namespace Test.Psi this.Out = output.Out; Generators.Range(this, 0, 10, TimeSpan.FromTicks(1)).Out.PipeTo(output); } + + public Emitter Out { get; private set; } } [TestMethod] @@ -150,8 +150,6 @@ namespace Test.Psi public class TestInfiniteSourceCompositeComponent : Subpipeline { - public Emitter Out { private set; get; } - public TestInfiniteSourceCompositeComponent(Pipeline parent) : base(parent, "TestInfiniteSourceCompositeComponent") { @@ -160,6 +158,8 @@ namespace Test.Psi var timer = Timers.Timer(this, TimeSpan.FromMilliseconds(10)); timer.Aggregate(0, (i, _) => i + 1).PipeTo(output); } + + public Emitter Out { get; private set; } } [TestMethod] @@ -174,7 +174,7 @@ namespace Test.Psi var infinite = new TestInfiniteSourceCompositeComponent(p); Assert.AreEqual(p, infinite.Out.Pipeline); // composite component shouldn't expose the fact that subpipeline is involved results = infinite.Out.ToObservable().ToListObservable(); - p.PipelineCompleted += ((_, __) => completed = true); + p.PipelineCompleted += (_, __) => completed = true; p.RunAsync(); Thread.Sleep(200); Assert.IsFalse(completed); // note that infinite source composite-component subpipeline never completes (parent pipeline must be disposed explicitly) @@ -321,6 +321,7 @@ namespace Test.Psi pipeline.Run(); } } + private class FiniteToInfiniteTestComponent : ISourceComponent { private Action notifyCompletionTime; @@ -464,8 +465,6 @@ namespace Test.Psi private readonly TimeSpan interval; private readonly TimeSpan latency; - public Emitter Out { get; } - public GeneratorWithLatency(Pipeline pipeline, TimeSpan interval, TimeSpan latency) : base(pipeline, isInfiniteSource: true) { @@ -474,6 +473,8 @@ namespace Test.Psi this.Out = pipeline.CreateEmitter(this, nameof(this.Out)); } + public Emitter Out { get; } + protected override DateTime GenerateNext(DateTime currentTime) { // introduce a delay (in wall-clock time) to artificially slow down the generator @@ -506,7 +507,8 @@ namespace Test.Psi var results = seq.AsEnumerable().ToArray(); CollectionAssert.AreEqual( - new[] { + new[] + { 0, 0, 0, 0, 0, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, @@ -517,7 +519,7 @@ namespace Test.Psi 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, - 10 + 10, }, results); } } @@ -525,10 +527,6 @@ namespace Test.Psi // A composite component which contains a GeneratorWithLatency used to densify an input stream public class TestSourceComponentWithGenerator : Subpipeline { - public Receiver In { get; } - - public Emitter Out { get; } - public TestSourceComponentWithGenerator(Pipeline parent, TimeSpan interval, TimeSpan latency) : base(parent, "sub") { @@ -544,6 +542,10 @@ namespace Test.Psi var densified = clock.Out.Join(input.Out, RelativeTimeInterval.Past()).Select(x => x.Item2); densified.PipeTo(output.In); } + + public Receiver In { get; } + + public Emitter Out { get; } } [TestMethod] @@ -714,6 +716,19 @@ namespace Test.Psi Assert.IsTrue(log.Contains("CEmitterZ Closed")); Assert.IsTrue(log.Contains("CEmitterGen Closed")); + // Emitters should have closed in C, A, B order + Assert.IsTrue(log.IndexOf("CEmitterAny Closed") < log.IndexOf("AEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("CEmitterX Closed") < log.IndexOf("AEmitterX Closed")); + Assert.IsTrue(log.IndexOf("CEmitterY Closed") < log.IndexOf("AEmitterY Closed")); + Assert.IsTrue(log.IndexOf("CEmitterZ Closed") < log.IndexOf("AEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("CEmitterGen Closed") < log.IndexOf("AEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("AEmitterAny Closed") < log.IndexOf("BEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("AEmitterX Closed") < log.IndexOf("BEmitterX Closed")); + Assert.IsTrue(log.IndexOf("AEmitterY Closed") < log.IndexOf("BEmitterY Closed")); + Assert.IsTrue(log.IndexOf("AEmitterZ Closed") < log.IndexOf("BEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("AEmitterGen Closed") < log.IndexOf("BEmitterGen Closed")); + // subscribed receivers should have been unsubscribed Assert.IsTrue(log.Contains("AReceiverX Unsubscribed")); Assert.IsTrue(log.Contains("BReceiverX Unsubscribed")); @@ -730,6 +745,185 @@ namespace Test.Psi Assert.IsFalse(log.Contains("CReceiverZ Unsubscribed")); } + [TestMethod] + [Timeout(60000)] + public void FinalizationTestDisjointCycles() + { + var log = new List(); + using (var p = Pipeline.Create()) + { + /* + * =---= =---= =---= =---= + * | A |--->| C | | B |--->| D | + * =---= =---= =---= =---= + * ^ | ^ | + * | | | | + * +--------+ +--------+ + */ + var d = new FinalizationTestComponent(p, "D", log); + var c = new FinalizationTestComponent(p, "C", log); + var b = new FinalizationTestComponent(p, "B", log); + var a = new FinalizationTestComponent(p, "A", log); + a.Generator.PipeTo(c.ReceiverX); + b.Generator.PipeTo(d.ReceiverX); + c.RelayFromX.PipeTo(a.ReceiverX); + d.RelayFromX.PipeTo(b.ReceiverX); + p.Run(); + } + + // all emitters should have closed + Assert.IsTrue(log.Contains("AEmitterAny Closed")); + Assert.IsTrue(log.Contains("AEmitterX Closed")); + Assert.IsTrue(log.Contains("AEmitterY Closed")); + Assert.IsTrue(log.Contains("AEmitterZ Closed")); + Assert.IsTrue(log.Contains("AEmitterGen Closed")); + + Assert.IsTrue(log.Contains("BEmitterAny Closed")); + Assert.IsTrue(log.Contains("BEmitterX Closed")); + Assert.IsTrue(log.Contains("BEmitterY Closed")); + Assert.IsTrue(log.Contains("BEmitterZ Closed")); + Assert.IsTrue(log.Contains("BEmitterGen Closed")); + + Assert.IsTrue(log.Contains("CEmitterAny Closed")); + Assert.IsTrue(log.Contains("CEmitterX Closed")); + Assert.IsTrue(log.Contains("CEmitterY Closed")); + Assert.IsTrue(log.Contains("CEmitterZ Closed")); + Assert.IsTrue(log.Contains("CEmitterGen Closed")); + + Assert.IsTrue(log.Contains("DEmitterAny Closed")); + Assert.IsTrue(log.Contains("DEmitterX Closed")); + Assert.IsTrue(log.Contains("DEmitterY Closed")); + Assert.IsTrue(log.Contains("DEmitterZ Closed")); + Assert.IsTrue(log.Contains("DEmitterGen Closed")); + + // Emitters should have closed in D, C, then B or A order + Assert.IsTrue(log.IndexOf("DEmitterAny Closed") < log.IndexOf("CEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("DEmitterX Closed") < log.IndexOf("CEmitterX Closed")); + Assert.IsTrue(log.IndexOf("DEmitterY Closed") < log.IndexOf("CEmitterY Closed")); + Assert.IsTrue(log.IndexOf("DEmitterZ Closed") < log.IndexOf("CEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("DEmitterGen Closed") < log.IndexOf("CEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("CEmitterAny Closed") < log.IndexOf("BEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("CEmitterX Closed") < log.IndexOf("BEmitterX Closed")); + Assert.IsTrue(log.IndexOf("CEmitterY Closed") < log.IndexOf("BEmitterY Closed")); + Assert.IsTrue(log.IndexOf("CEmitterZ Closed") < log.IndexOf("BEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("CEmitterGen Closed") < log.IndexOf("BEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("CEmitterAny Closed") < log.IndexOf("AEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("CEmitterX Closed") < log.IndexOf("AEmitterX Closed")); + Assert.IsTrue(log.IndexOf("CEmitterY Closed") < log.IndexOf("AEmitterY Closed")); + Assert.IsTrue(log.IndexOf("CEmitterZ Closed") < log.IndexOf("AEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("CEmitterGen Closed") < log.IndexOf("AEmitterGen Closed")); + + // subscribed receivers should have been unsubscribed + Assert.IsTrue(log.Contains("AReceiverX Unsubscribed")); + Assert.IsTrue(log.Contains("BReceiverX Unsubscribed")); + Assert.IsTrue(log.Contains("CReceiverX Unsubscribed")); + Assert.IsTrue(log.Contains("DReceiverX Unsubscribed")); + + // non-subscribed receivers should have done *nothing* + Assert.IsFalse(log.Contains("AReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("AReceiverZ Unsubscribed")); + + Assert.IsFalse(log.Contains("BReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("BReceiverZ Unsubscribed")); + + Assert.IsFalse(log.Contains("CReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("CReceiverZ Unsubscribed")); + + Assert.IsFalse(log.Contains("DReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("DReceiverZ Unsubscribed")); + } + + [TestMethod] + [Timeout(60000)] + public void FinalizationTestDisjointUpstreamSelfCycles() + { + var log = new List(); + using (var p = Pipeline.Create()) + { + /* + * =---= =---= =---= =---= + * +-->| A |--->| B | +-->| C |--->| D | + * | =---= =---= | =---= =---= + * | | | | + * +-----+ +-----+ + */ + var d = new FinalizationTestComponent(p, "D", log); + var c = new FinalizationTestComponent(p, "C", log); // finalized 1st although constructed 2nd + var b = new FinalizationTestComponent(p, "B", log); + var a = new FinalizationTestComponent(p, "A", log); + a.Generator.PipeTo(a.ReceiverX); + a.RelayFromX.PipeTo(b.ReceiverX); + c.Generator.PipeTo(c.ReceiverX); + c.RelayFromX.PipeTo(d.ReceiverX); + p.Run(); + } + + // all emitters should have closed + Assert.IsTrue(log.Contains("AEmitterAny Closed")); + Assert.IsTrue(log.Contains("AEmitterX Closed")); + Assert.IsTrue(log.Contains("AEmitterY Closed")); + Assert.IsTrue(log.Contains("AEmitterZ Closed")); + Assert.IsTrue(log.Contains("AEmitterGen Closed")); + + Assert.IsTrue(log.Contains("BEmitterAny Closed")); + Assert.IsTrue(log.Contains("BEmitterX Closed")); + Assert.IsTrue(log.Contains("BEmitterY Closed")); + Assert.IsTrue(log.Contains("BEmitterZ Closed")); + Assert.IsTrue(log.Contains("BEmitterGen Closed")); + + Assert.IsTrue(log.Contains("CEmitterAny Closed")); + Assert.IsTrue(log.Contains("CEmitterX Closed")); + Assert.IsTrue(log.Contains("CEmitterY Closed")); + Assert.IsTrue(log.Contains("CEmitterZ Closed")); + Assert.IsTrue(log.Contains("CEmitterGen Closed")); + + Assert.IsTrue(log.Contains("DEmitterAny Closed")); + Assert.IsTrue(log.Contains("DEmitterX Closed")); + Assert.IsTrue(log.Contains("DEmitterY Closed")); + Assert.IsTrue(log.Contains("DEmitterZ Closed")); + Assert.IsTrue(log.Contains("DEmitterGen Closed")); + + // Emitters should have closed in C, A, then D or B order + Assert.IsTrue(log.IndexOf("CEmitterAny Closed") < log.IndexOf("AEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("CEmitterX Closed") < log.IndexOf("AEmitterX Closed")); + Assert.IsTrue(log.IndexOf("CEmitterY Closed") < log.IndexOf("AEmitterY Closed")); + Assert.IsTrue(log.IndexOf("CEmitterZ Closed") < log.IndexOf("AEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("CEmitterGen Closed") < log.IndexOf("AEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("AEmitterAny Closed") < log.IndexOf("DEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("AEmitterX Closed") < log.IndexOf("DEmitterX Closed")); + Assert.IsTrue(log.IndexOf("AEmitterY Closed") < log.IndexOf("DEmitterY Closed")); + Assert.IsTrue(log.IndexOf("AEmitterZ Closed") < log.IndexOf("DEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("AEmitterGen Closed") < log.IndexOf("DEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("AEmitterAny Closed") < log.IndexOf("BEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("AEmitterX Closed") < log.IndexOf("BEmitterX Closed")); + Assert.IsTrue(log.IndexOf("AEmitterY Closed") < log.IndexOf("BEmitterY Closed")); + Assert.IsTrue(log.IndexOf("AEmitterZ Closed") < log.IndexOf("BEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("AEmitterGen Closed") < log.IndexOf("BEmitterGen Closed")); + + // subscribed receivers should have been unsubscribed + Assert.IsTrue(log.Contains("AReceiverX Unsubscribed")); + Assert.IsTrue(log.Contains("BReceiverX Unsubscribed")); + Assert.IsTrue(log.Contains("CReceiverX Unsubscribed")); + Assert.IsTrue(log.Contains("DReceiverX Unsubscribed")); + + // non-subscribed receivers should have done *nothing* + Assert.IsFalse(log.Contains("AReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("AReceiverZ Unsubscribed")); + + Assert.IsFalse(log.Contains("BReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("BReceiverZ Unsubscribed")); + + Assert.IsFalse(log.Contains("CReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("CReceiverZ Unsubscribed")); + + Assert.IsFalse(log.Contains("DReceiverY Unsubscribed")); + Assert.IsFalse(log.Contains("DReceiverZ Unsubscribed")); + } + [TestMethod] [Timeout(60000)] public void FinalizationTestMultiUpstream() @@ -869,7 +1063,7 @@ namespace Test.Psi [Timeout(60000)] public void FinalizationTestWithSubpipeline() { - // this exercised traversal of Connector cross-pipeline bridges + // this exercises traversal of Connector cross-pipeline bridges // internally, a node (PipelineElement) is created on each side with a shared state object (the Connector component) // finalization traverses these boundaries @@ -1496,6 +1690,7 @@ namespace Test.Psi d.RelayFromX.PipeTo(c.ReceiverX); b.Generator.PipeTo(c.ReceiverY); c.Generator.PipeTo(b.ReceiverY); + b.RelayFromY.PipeTo(c.ReceiverZ); p.Run(); } @@ -1524,12 +1719,32 @@ namespace Test.Psi Assert.IsTrue(log.Contains("DEmitterZ Closed")); Assert.IsTrue(log.Contains("DEmitterGen Closed")); + // Should finalize B first since it has the most active outputs, then A, then either C or D (in reality construction order: D then C) + Assert.IsTrue(log.IndexOf("BEmitterAny Closed") < log.IndexOf("AEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("BEmitterX Closed") < log.IndexOf("AEmitterX Closed")); + Assert.IsTrue(log.IndexOf("BEmitterY Closed") < log.IndexOf("AEmitterY Closed")); + Assert.IsTrue(log.IndexOf("BEmitterZ Closed") < log.IndexOf("AEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("BEmitterGen Closed") < log.IndexOf("AEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("AEmitterAny Closed") < log.IndexOf("CEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("AEmitterX Closed") < log.IndexOf("CEmitterX Closed")); + Assert.IsTrue(log.IndexOf("AEmitterY Closed") < log.IndexOf("CEmitterY Closed")); + Assert.IsTrue(log.IndexOf("AEmitterZ Closed") < log.IndexOf("CEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("AEmitterGen Closed") < log.IndexOf("CEmitterGen Closed")); + + Assert.IsTrue(log.IndexOf("AEmitterAny Closed") < log.IndexOf("DEmitterAny Closed")); + Assert.IsTrue(log.IndexOf("AEmitterX Closed") < log.IndexOf("DEmitterX Closed")); + Assert.IsTrue(log.IndexOf("AEmitterY Closed") < log.IndexOf("DEmitterY Closed")); + Assert.IsTrue(log.IndexOf("AEmitterZ Closed") < log.IndexOf("DEmitterZ Closed")); + Assert.IsTrue(log.IndexOf("AEmitterGen Closed") < log.IndexOf("DEmitterGen Closed")); + // subscribed receivers should have been unsubscribed Assert.IsTrue(log.Contains("AReceiverX Unsubscribed")); Assert.IsTrue(log.Contains("BReceiverX Unsubscribed")); Assert.IsTrue(log.Contains("BReceiverY Unsubscribed")); Assert.IsTrue(log.Contains("CReceiverX Unsubscribed")); Assert.IsTrue(log.Contains("CReceiverY Unsubscribed")); + Assert.IsTrue(log.Contains("CReceiverZ Unsubscribed")); Assert.IsTrue(log.Contains("DReceiverX Unsubscribed")); // non-subscribed receivers should have done *nothing* @@ -1538,8 +1753,6 @@ namespace Test.Psi Assert.IsFalse(log.Contains("BReceiverZ Unsubscribed")); - Assert.IsFalse(log.Contains("CReceiverZ Unsubscribed")); - Assert.IsFalse(log.Contains("DReceiverY Unsubscribed")); Assert.IsFalse(log.Contains("DReceiverZ Unsubscribed")); } @@ -1561,7 +1774,12 @@ namespace Test.Psi var emitter = p.CreateEmitter(collector, "Emitter"); // on unsubscribe, post collected messages (with an artificial latency to slow them down) - receiver.Unsubscribed += _ => collector.ForEach(m => { Thread.Sleep(33); emitter.Post(m.data, m.env.OriginatingTime); }); + receiver.Unsubscribed += _ => collector.ForEach( + m => + { + Thread.Sleep(33); + emitter.Post(m.data, m.env.OriginatingTime); + }); // log posted messages emitter.Do((d, e) => log.Add($"{e.OriginatingTime.TimeOfDay}:{d}")); @@ -1759,10 +1977,13 @@ namespace Test.Psi b.RelayFromX.PipeTo(cOut.In); cOut.Out.PipeTo(d.ReceiverX); - p.Diagnostics.Do(diag => graph = graph ?? diag); + p.Diagnostics.Do(diag => graph = diag.DeepClone()); p.RunAsync(); - while (graph == null) Thread.Sleep(10); + while (graph == null) + { + Thread.Sleep(10); + } } Assert.AreEqual(2, graph.GetPipelineCount()); // total graphs @@ -1777,11 +1998,11 @@ namespace Test.Psi // example complex query: average latency at emitter across reactive components in leaf subpipelines var complex = graph.GetAllPipelineDiagnostics() - .Where(p => p.SubpipelineDiagnostics.Length == 0) // leaf subpipelines - .GetAllPipelineElements() - .Where(e => e.Kind == PipelineElementKind.Reactive) // reactive components - .GetAllReceiverDiagnostics() - .Select(r => r.MessageLatencyAtEmitter); // average latency at emitter into each component's receivers + .Where(p => p.SubpipelineDiagnostics.Length == 0) // leaf subpipelines + .GetAllPipelineElements() + .Where(e => e.Kind == PipelineElementKind.Reactive) // reactive components + .GetAllReceiverDiagnostics() + .Select(r => r.MessageLatencyAtEmitter); // average latency at emitter into each component's receivers Assert.AreEqual("default", graph.Name); Assert.IsTrue(graph.IsPipelineRunning); @@ -1899,6 +2120,10 @@ namespace Test.Psi // run and wait for pipeline to complete pipeline.RunAsync(replay, new Progress(x => progress.Add(x))); + + // test adding a dynamic subpipeline after main pipeline has started + var subpipeline2 = Subpipeline.Create(pipeline, "subpipeline2"); + pipeline.WaitAll(); } @@ -1920,6 +2145,75 @@ namespace Test.Psi Assert.AreEqual(1.0, lastValue); } + [TestMethod] + [Timeout(60000)] + public void SubpipelineWiringOnPipelineRun() + { + var results = new List(); + + using (var pipeline = Pipeline.Create()) + { + var inputs = Generators.Range(pipeline, 0, 10, TimeSpan.FromTicks(1)); + var subSquare = Subpipeline.Create(pipeline); + var connSquare = subSquare.CreateInputConnectorFrom(pipeline, "square"); + var square = new Processor(subSquare, (x, e, emitter) => emitter.Post(x * x, e.OriginatingTime)); + var subAddOne = Subpipeline.Create(pipeline); + + // wiring between parent pipeline and first child subpipeline + subSquare.PipelineRun += (_, __) => + { + connSquare.PipeTo(square); + inputs.PipeTo(connSquare); + }; + + // second child subpipeline creates grandchild subpipeline + subAddOne.PipelineRun += (_, __) => + { + var subSubAddOne = Subpipeline.Create(subAddOne); + + // wiring from first child subpipeline to grandchild subpipeline, the back to parent pipeline + subSubAddOne.PipelineRun += (s, e) => + { + var connAddOne = subSubAddOne.CreateInputConnectorFrom(subSquare, "addOne"); + var addOne = new Processor(subSubAddOne, (x, env, emitter) => emitter.Post(x + 1, env.OriginatingTime)); + var connResult = subSubAddOne.CreateOutputConnectorTo(pipeline, "result"); + square.PipeTo(connAddOne); + connAddOne.PipeTo(addOne); + addOne.PipeTo(connResult); + + // capture result stream + connResult.Do(x => results.Add(x)); + }; + }; + + pipeline.Run(); + } + + // verify result stream y = x^2 + 1 + CollectionAssert.AreEqual(Enumerable.Range(0, 10).Select(x => (x * x) + 1).ToArray(), results); + } + + [TestMethod] + public void OnPipelineCompleted() + { + var output = new List(); + using (var p = Pipeline.Create()) + { + Generators.Return(p, 0); + p.PipelineCompleted += (_, __) => + { + // slow handler to test that it completes execution before Pipeline.Run() returns + Thread.Sleep(100); + output.Add("Completed"); + }; + + p.Run(); + } + + output.Add("Disposed"); + CollectionAssert.AreEqual(new[] { "Completed", "Disposed" }, output); + } + private class FinalizationTestComponent : ISourceComponent { private readonly Pipeline pipeline; @@ -1954,6 +2248,22 @@ namespace Test.Psi this.ReceiverZ.Unsubscribed += _ => this.Log($"{this.name}ReceiverZ Unsubscribed"); } + public Receiver ReceiverX { get; private set; } // relays to EmitterX and W + + public Receiver ReceiverY { get; private set; } // relays to EmitterY and W + + public Receiver ReceiverZ { get; private set; } // relays to EmitterY and W + + public Emitter RelayFromAny { get; private set; } // relays from ReceiverX or Y + + public Emitter RelayFromX { get; private set; } // relays from ReceiverX + + public Emitter RelayFromY { get; private set; } // relays from ReceiverY + + public Emitter RelayFromZ { get; private set; } // relays from ReceiverY + + public Emitter Generator { get; private set; } // emits at 10ms intervals + public void Start(Action notifyCompletionTime) { this.notifyCompletionTime = notifyCompletionTime; @@ -1971,7 +2281,7 @@ namespace Test.Psi public void Stop(DateTime finalOriginatingTime, Action notifyCompleted) { - if (timer != null) + if (this.timer != null) { this.timer.Elapsed -= this.Elapsed; } @@ -2010,21 +2320,21 @@ namespace Test.Psi private void ReceiveX(int m, Envelope e) { this.Log($"{this.name}ReceiveX {m}"); - EmitFromEach(m, e.OriginatingTime); + this.EmitFromEach(m, e.OriginatingTime); this.RelayFromX.Post(m, e.OriginatingTime); } private void ReceiveY(int m, Envelope e) { this.Log($"{this.name}ReceiveY {m}"); - EmitFromEach(m, e.OriginatingTime); + this.EmitFromEach(m, e.OriginatingTime); this.RelayFromY.Post(m, e.OriginatingTime); } private void ReceiveZ(int m, Envelope e) { this.Log($"{this.name}ReceiveZ {m}"); - EmitFromEach(m, e.OriginatingTime); + this.EmitFromEach(m, e.OriginatingTime); this.RelayFromZ.Post(m, e.OriginatingTime); } @@ -2035,22 +2345,6 @@ namespace Test.Psi this.log.Add(entry); } } - - public Receiver ReceiverX { get; private set; } // relays to EmitterX and W - - public Receiver ReceiverY { get; private set; } // relays to EmitterY and W - - public Receiver ReceiverZ { get; private set; } // relays to EmitterY and W - - public Emitter RelayFromAny { get; private set; } // relays from ReceiverX or Y - - public Emitter RelayFromX { get; private set; } // relays from ReceiverX - - public Emitter RelayFromY { get; private set; } // relays from ReceiverY - - public Emitter RelayFromZ { get; private set; } // relays from ReceiverY - - public Emitter Generator { get; private set; } // emits at 10ms intervals } } } diff --git a/Sources/Runtime/Test.Psi/RemotingTests.cs b/Sources/Runtime/Test.Psi/RemotingTests.cs index 37311ea5..6fa46cc1 100644 --- a/Sources/Runtime/Test.Psi/RemotingTests.cs +++ b/Sources/Runtime/Test.Psi/RemotingTests.cs @@ -99,7 +99,7 @@ namespace Test.Psi doneEvt.WaitOne(20000); #if !ShellExecute server.StandardInput.WriteLine(); - server.StandardInput.WriteLine(); // the test executon framework is also waiting for a line + server.StandardInput.WriteLine(); // the test execution framework is also waiting for a line #endif server.WaitForExit(); Console.WriteLine("Server completed."); @@ -115,7 +115,7 @@ namespace Test.Psi /// /// Starts the Test.Psi.exe process with the specified entry point (needs to be a public method) /// - /// The name of a public mehtod. Doesn't need to have the [TestMethod] annotation. + /// The name of a public method. Doesn't need to have the [TestMethod] annotation. /// A process. Caller should ensure the process terminates (e.g via process.Kill) private Process StartServer(string entryPoint) { diff --git a/Sources/Runtime/Test.Psi/SchedulerTester.cs b/Sources/Runtime/Test.Psi/SchedulerTester.cs index 7c286ffc..244fa91c 100644 --- a/Sources/Runtime/Test.Psi/SchedulerTester.cs +++ b/Sources/Runtime/Test.Psi/SchedulerTester.cs @@ -238,7 +238,7 @@ namespace Test.Psi Assert.IsFalse(results.Any(l => l < 0)); } - // validate that items scheduled in the future get delivered imediately when the clock is not enforced + // validate that items scheduled in the future get delivered immediately when the clock is not enforced [TestMethod] [Timeout(60000)] public void FutureSchedulingWithoutClockEnforcement() diff --git a/Sources/Runtime/Test.Psi/SerializationTester.cs b/Sources/Runtime/Test.Psi/SerializationTester.cs index 51bda7b4..e1a240d3 100644 --- a/Sources/Runtime/Test.Psi/SerializationTester.cs +++ b/Sources/Runtime/Test.Psi/SerializationTester.cs @@ -20,7 +20,7 @@ namespace Test.Psi internal enum FooEnum : uint { One = 0x1, - Two = 0x2 + Two = 0x2, } [TestMethod] diff --git a/Sources/Runtime/Test.Psi/SharedTester.cs b/Sources/Runtime/Test.Psi/SharedTester.cs index 4077c817..9a70e58d 100644 --- a/Sources/Runtime/Test.Psi/SharedTester.cs +++ b/Sources/Runtime/Test.Psi/SharedTester.cs @@ -9,8 +9,8 @@ namespace Test.Psi using System.Threading; using Microsoft.Psi; using Microsoft.Psi.Common; - using Microsoft.Psi.Serialization; using Microsoft.Psi.Imaging; + using Microsoft.Psi.Serialization; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] @@ -56,7 +56,7 @@ namespace Test.Psi var sharedPool = new SharedPool(() => UnmanagedBuffer.Allocate(100), 1); var shared = sharedPool.GetOrCreate(); // refcount = 1 - // a private copy shoudl point to the same resource + // a private copy should point to the same resource var otherShared = shared.DeepClone(); // refcount = 1 + 1 Assert.AreNotEqual(shared, otherShared); Assert.AreEqual(shared.Inner, otherShared.Inner); @@ -343,7 +343,7 @@ namespace Test.Psi Assert.AreEqual(7, bmp75.Width); Assert.AreEqual(5, bmp75.Height); - var shared57 = ImagePool.GetOrCreate(bmp57); + var shared57 = ImagePool.GetOrCreateFromBitmap(bmp57); Assert.AreEqual(5, shared57.Resource.Width); Assert.AreEqual(7, shared57.Resource.Height); @@ -352,7 +352,7 @@ namespace Test.Psi // stride and total size of the recycled image could be incorrect. shared57.Dispose(); // release to be recycled - var shared75 = ImagePool.GetOrCreate(bmp75); // should *not* get the recycled image + var shared75 = ImagePool.GetOrCreateFromBitmap(bmp75); // should *not* get the recycled image Assert.AreEqual(7, shared75.Resource.Width); Assert.AreEqual(5, shared75.Resource.Height); } diff --git a/Sources/Runtime/Test.Psi/StatisticalTests.cs b/Sources/Runtime/Test.Psi/StatisticalTests.cs index 326b2e79..110db2d8 100644 --- a/Sources/Runtime/Test.Psi/StatisticalTests.cs +++ b/Sources/Runtime/Test.Psi/StatisticalTests.cs @@ -15,7 +15,8 @@ namespace Test.Psi [Timeout(60000)] public void StatisticsMinDouble() { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new double[] { }, // empty sequence new double[] { } // expected output @@ -43,15 +44,15 @@ namespace Test.Psi ( new[] { double.PositiveInfinity, 1.0, double.NegativeInfinity, -1.0, double.NaN }, // sequence with +/- infinity new[] { double.PositiveInfinity, 1.0, double.NegativeInfinity, double.NegativeInfinity, double.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMinDoubleArray() { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new double[][] // sequence of enumerations { @@ -60,11 +61,10 @@ namespace Test.Psi new[] { 1.0, double.NaN, -1.0 }, new[] { double.NaN, 2.0, -1.0 }, new[] { double.NegativeInfinity, 2.0, -1.0 }, - new[] { double.PositiveInfinity, 2.0, -1.0 } + new[] { double.PositiveInfinity, 2.0, -1.0 }, }, new[] { 1.0, 1.0, double.NaN, double.NaN, double.NegativeInfinity, -1.0 } // expected output - ) - ); + )); } [TestMethod] @@ -75,12 +75,12 @@ namespace Test.Psi try { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new double[][] { new double[] { } }, // sequence containing an empty enumeration new double[] { } // no expected output - should throw - ) - ); + )); } catch (Exception e) { @@ -96,7 +96,8 @@ namespace Test.Psi [Timeout(60000)] public void StatisticsMinNullableDoubleArray() { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new double?[][] // sequence of enumerations { @@ -107,18 +108,18 @@ namespace Test.Psi new double?[] { null, 1.0, null, double.NaN, null, -1.0, null }, new double?[] { null, double.NaN, null, 2.0, null, -1.0, null }, new double?[] { null, double.NegativeInfinity, null, 2.0, null, -1.0, null }, - new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.0, null } + new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.0, null }, }, new double?[] { null, null, 1.0, 1.0, double.NaN, double.NaN, double.NegativeInfinity, -1.0 } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMinFloat() { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new float[] { }, // empty sequence new float[] { } // expected output @@ -146,15 +147,15 @@ namespace Test.Psi ( new[] { float.PositiveInfinity, 1.0f, float.NegativeInfinity, -1.0f, float.NaN }, // sequence with +/- infinity new[] { float.PositiveInfinity, 1.0f, float.NegativeInfinity, float.NegativeInfinity, float.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMinFloatArray() { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new float[][] // sequence of enumerations { @@ -163,11 +164,10 @@ namespace Test.Psi new[] { 1.0f, float.NaN, -1.0f }, new[] { float.NaN, 2.0f, -1.0f }, new[] { float.NegativeInfinity, 2.0f, -1.0f }, - new[] { float.PositiveInfinity, 2.0f, -1.0f } + new[] { float.PositiveInfinity, 2.0f, -1.0f }, }, new[] { 1.0f, 1.0f, float.NaN, float.NaN, float.NegativeInfinity, -1.0f } // expected output - ) - ); + )); } [TestMethod] @@ -178,12 +178,12 @@ namespace Test.Psi try { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new float[][] { new float[] { } }, // sequence containing an empty enumeration new float[] { } // no expected output - should throw - ) - ); + )); } catch (Exception e) { @@ -199,7 +199,8 @@ namespace Test.Psi [Timeout(60000)] public void StatisticsMinNullableFloatArray() { - this.RunTest(Operators.Min, + this.RunTest( + Operators.Min, ( new float?[][] // sequence of enumerations { @@ -210,18 +211,18 @@ namespace Test.Psi new float?[] { null, 1.0f, null, float.NaN, null, -1.0f, null }, new float?[] { null, float.NaN, null, 2.0f, null, -1.0f, null }, new float?[] { null, float.NegativeInfinity, null, 2.0f, null, -1.0f, null }, - new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.0f, null } + new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.0f, null }, }, new float?[] { null, null, 1.0f, 1.0f, float.NaN, float.NaN, float.NegativeInfinity, -1.0f } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMaxDouble() { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new double[] { }, // empty sequence new double[] { } // expected output @@ -249,15 +250,15 @@ namespace Test.Psi ( new[] { double.NegativeInfinity, -1.0, double.PositiveInfinity, 1.0, double.NaN }, // sequence with +/- infinity new[] { double.NegativeInfinity, -1.0, double.PositiveInfinity, double.PositiveInfinity, double.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMaxDoubleArray() { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new double[][] // sequence of enumerations { @@ -266,11 +267,10 @@ namespace Test.Psi new[] { 1.0, double.NaN, -1.0 }, new[] { double.NaN, 2.0, -1.0 }, new[] { double.NegativeInfinity, 2.0, -1.0 }, - new[] { double.PositiveInfinity, 2.0, -1.0 } + new[] { double.PositiveInfinity, 2.0, -1.0 }, }, new[] { 1.0, 2.0, double.NaN, double.NaN, 2.0, double.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] @@ -281,12 +281,12 @@ namespace Test.Psi try { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new double[][] { new double[] { } }, // sequence containing an empty enumeration new double[] { } // no expected output - should throw - ) - ); + )); } catch (Exception e) { @@ -302,7 +302,8 @@ namespace Test.Psi [Timeout(60000)] public void StatisticsMaxNullableDoubleArray() { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new double?[][] // sequence of enumerations { @@ -313,18 +314,18 @@ namespace Test.Psi new double?[] { null, 1.0, null, double.NaN, null, -1.0, null }, new double?[] { null, double.NaN, null, 2.0, null, -1.0, null }, new double?[] { null, double.NegativeInfinity, null, 2.0, null, -1.0, null }, - new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.0, null } + new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.0, null }, }, new double?[] { null, null, 1.0, 2.0, double.NaN, double.NaN, 2.0, double.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMaxFloat() { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new float[] { }, // empty sequence new float[] { } // expected output @@ -352,15 +353,15 @@ namespace Test.Psi ( new[] { float.NegativeInfinity, -1.0f, float.PositiveInfinity, 1.0f, float.NaN }, // sequence with +/- infinity new[] { float.NegativeInfinity, -1.0f, float.PositiveInfinity, float.PositiveInfinity, float.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsMaxFloatArray() { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new float[][] // sequence of enumerations { @@ -369,11 +370,10 @@ namespace Test.Psi new[] { 1.0f, float.NaN, -1.0f }, new[] { float.NaN, 2.0f, -1.0f }, new[] { float.NegativeInfinity, 2.0f, -1.0f }, - new[] { float.PositiveInfinity, 2.0f, -1.0f } + new[] { float.PositiveInfinity, 2.0f, -1.0f }, }, new[] { 1.0f, 2.0f, float.NaN, float.NaN, 2.0f, float.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] @@ -384,12 +384,12 @@ namespace Test.Psi try { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new float[][] { new float[] { } }, // sequence containing an empty enumeration new float[] { } // no expected output - should throw - ) - ); + )); } catch (Exception e) { @@ -405,7 +405,8 @@ namespace Test.Psi [Timeout(60000)] public void StatisticsMaxNullableFloatArray() { - this.RunTest(Operators.Max, + this.RunTest( + Operators.Max, ( new float?[][] // sequence of enumerations { @@ -416,18 +417,18 @@ namespace Test.Psi new float?[] { null, 1.0f, null, float.NaN, null, -1.0f, null }, new float?[] { null, float.NaN, null, 2.0f, null, -1.0f, null }, new float?[] { null, float.NegativeInfinity, null, 2.0f, null, -1.0f, null }, - new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.0f, null } + new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.0f, null }, }, new float?[] { null, null, 1.0f, 2.0f, float.NaN, float.NaN, 2.0f, float.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsSumDouble() { - this.RunTest(Operators.Sum, + this.RunTest( + Operators.Sum, ( new double[] { }, // empty sequence new double[] { } // expected output @@ -455,15 +456,15 @@ namespace Test.Psi ( new[] { double.NegativeInfinity, -1.0, double.PositiveInfinity, 1.0, double.NaN }, // sequence with +/- infinity new[] { double.NegativeInfinity, double.NegativeInfinity, double.NaN, double.NaN, double.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsSumDoubleArray() { - this.RunTest(Operators.Sum, + this.RunTest( + Operators.Sum, ( new double[][] // sequence of enumerations { @@ -472,18 +473,18 @@ namespace Test.Psi new[] { 1.0, double.NaN, -1.5, 3.0 }, new[] { double.NaN, 2.0, -1.5, 3.0 }, new[] { double.NegativeInfinity, 2.0, -1.5, 3.0 }, - new[] { double.PositiveInfinity, 2.0, -1.5, 3.0 } + new[] { double.PositiveInfinity, 2.0, -1.5, 3.0 }, }, new[] { 0, 4.5, double.NaN, double.NaN, double.NegativeInfinity, double.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsSumNullableDoubleArray() { - this.RunTest(Operators.Sum, + this.RunTest( + Operators.Sum, ( new double?[][] // sequence of enumerations { @@ -493,18 +494,18 @@ namespace Test.Psi new double?[] { null, 1.0, null, double.NaN, null, -1.5, null, 3.0, null }, new double?[] { null, double.NaN, null, 2.0, null, -1.5, null, 3.0, null }, new double?[] { null, double.NegativeInfinity, null, 2.0, null, -1.5, null, 3.0, null }, - new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.5, null, 3.0, null } + new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.5, null, 3.0, null }, }, new double?[] { 0, 0, 4.5, double.NaN, double.NaN, double.NegativeInfinity, double.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsSumFloat() { - this.RunTest(Operators.Sum, + this.RunTest( + Operators.Sum, ( new float[] { }, // empty sequence new float[] { } // expected output @@ -532,15 +533,15 @@ namespace Test.Psi ( new[] { float.NegativeInfinity, -1.0f, float.PositiveInfinity, 1.0f, float.NaN }, // sequence with +/- infinity new[] { float.NegativeInfinity, float.NegativeInfinity, float.NaN, float.NaN, float.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsSumFloatArray() { - this.RunTest(Operators.Sum, + this.RunTest( + Operators.Sum, ( new float[][] // sequence of enumerations { @@ -549,18 +550,18 @@ namespace Test.Psi new[] { 1.0f, float.NaN, -1.5f, 3.0f }, new[] { float.NaN, 2.0f, -1.5f, 3.0f }, new[] { float.NegativeInfinity, 2.0f, -1.5f, 3.0f }, - new[] { float.PositiveInfinity, 2.0f, -1.5f, 3.0f } + new[] { float.PositiveInfinity, 2.0f, -1.5f, 3.0f }, }, new[] { 0f, 4.5f, float.NaN, float.NaN, float.NegativeInfinity, float.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsSumNullableFloatArray() { - this.RunTest(Operators.Sum, + this.RunTest( + Operators.Sum, ( new float?[][] // sequence of enumerations { @@ -570,18 +571,18 @@ namespace Test.Psi new float?[] { null, 1.0f, null, float.NaN, null, -1.5f, null, 3.0f, null }, new float?[] { null, float.NaN, null, 2.0f, null, -1.5f, null, 3.0f, null }, new float?[] { null, float.NegativeInfinity, null, 2.0f, null, -1.5f, null, 3.0f, null }, - new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.5f, null, 3.0f, null } + new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.5f, null, 3.0f, null }, }, new float?[] { 0f, 0f, 4.5f, float.NaN, float.NaN, float.NegativeInfinity, float.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsAverageDouble() { - this.RunTest(Operators.Average, + this.RunTest( + Operators.Average, ( new double[] { }, // empty sequence new double[] { } // expected output @@ -609,15 +610,15 @@ namespace Test.Psi ( new[] { double.NegativeInfinity, -1.0, double.PositiveInfinity, 1.0, double.NaN }, // sequence with +/- infinity new[] { double.NegativeInfinity, double.NegativeInfinity, double.NaN, double.NaN, double.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsAverageDoubleArray() { - this.RunTest(Operators.Average, + this.RunTest( + Operators.Average, ( new double[][] // sequence of enumerations { @@ -626,18 +627,18 @@ namespace Test.Psi new[] { 1.0, double.NaN, -1.5, 3.0 }, new[] { double.NaN, 2.0, -1.5, 3.0 }, new[] { double.NegativeInfinity, 2.0, -1.5, 3.0 }, - new[] { double.PositiveInfinity, 2.0, -1.5, 3.0 } + new[] { double.PositiveInfinity, 2.0, -1.5, 3.0 }, }, new[] { 1.0, 1.125, double.NaN, double.NaN, double.NegativeInfinity, double.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsAverageNullableDoubleArray() { - this.RunTest(Operators.Average, + this.RunTest( + Operators.Average, ( new double?[][] // sequence of enumerations { @@ -648,18 +649,18 @@ namespace Test.Psi new double?[] { null, 1.0, null, double.NaN, null, -1.5, null, 3.0, null }, new double?[] { null, double.NaN, null, 2.0, null, -1.5, null, 3.0, null }, new double?[] { null, double.NegativeInfinity, null, 2.0, null, -1.5, null, 3.0, null }, - new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.5, null, 3.0, null } + new double?[] { null, double.PositiveInfinity, null, 2.0, null, -1.5, null, 3.0, null }, }, new double?[] { null, null, 1.0, 1.125, double.NaN, double.NaN, double.NegativeInfinity, double.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsAverageFloat() { - this.RunTest(Operators.Average, + this.RunTest( + Operators.Average, ( new float[] { }, // empty sequence new float[] { } // expected output @@ -687,15 +688,15 @@ namespace Test.Psi ( new[] { float.NegativeInfinity, -1.0f, float.PositiveInfinity, 1.0f, float.NaN }, // sequence with +/- infinity new[] { float.NegativeInfinity, float.NegativeInfinity, float.NaN, float.NaN, float.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsAverageFloatArray() { - this.RunTest(Operators.Average, + this.RunTest( + Operators.Average, ( new float[][] // sequence of enumerations { @@ -704,18 +705,18 @@ namespace Test.Psi new[] { 1.0f, float.NaN, -1.5f, 3.0f }, new[] { float.NaN, 2.0f, -1.5f, 3.0f }, new[] { float.NegativeInfinity, 2.0f, -1.5f, 3.0f }, - new[] { float.PositiveInfinity, 2.0f, -1.5f, 3.0f } + new[] { float.PositiveInfinity, 2.0f, -1.5f, 3.0f }, }, new[] { 1.0f, 1.125f, float.NaN, float.NaN, float.NegativeInfinity, float.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsAverageNullableFloatArray() { - this.RunTest(Operators.Average, + this.RunTest( + Operators.Average, ( new float?[][] // sequence of enumerations { @@ -726,18 +727,18 @@ namespace Test.Psi new float?[] { null, 1.0f, null, float.NaN, null, -1.5f, null, 3.0f, null }, new float?[] { null, float.NaN, null, 2.0f, null, -1.5f, null, 3.0f, null }, new float?[] { null, float.NegativeInfinity, null, 2.0f, null, -1.5f, null, 3.0f, null }, - new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.5f, null, 3.0f, null } + new float?[] { null, float.PositiveInfinity, null, 2.0f, null, -1.5f, null, 3.0f, null }, }, new float?[] { null, null, 1.0f, 1.125f, float.NaN, float.NaN, float.NegativeInfinity, float.PositiveInfinity } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdDouble() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new double[] { }, // empty sequence new double[] { } // expected output @@ -765,15 +766,15 @@ namespace Test.Psi ( new[] { double.NegativeInfinity, -1.0, double.PositiveInfinity, 1.0, double.NaN }, // sequence with +/- infinity new[] { double.NaN, double.NaN, double.NaN, double.NaN, double.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdDoubleArray() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new double[][] // sequence of enumerations { @@ -784,18 +785,18 @@ namespace Test.Psi new[] { 1.0, double.NaN, -1.5, 3.0 }, new[] { double.NaN, 2.0, -1.5, 3.0 }, new[] { double.NegativeInfinity, 2.0, -1.5, 3.0 }, - new[] { double.PositiveInfinity, 2.0, -1.5, 3.0 } + new[] { double.PositiveInfinity, 2.0, -1.5, 3.0 }, }, new[] { 0, 0, 0.70710678118654757, 1.9311050377094112, double.NaN, double.NaN, double.NaN, double.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdFloat() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new float[] { }, // empty sequence new float[] { } // expected output @@ -823,15 +824,15 @@ namespace Test.Psi ( new[] { float.NegativeInfinity, -1.0f, float.PositiveInfinity, 1.0f, float.NaN }, // sequence with +/- infinity new[] { float.NaN, float.NaN, float.NaN, float.NaN, float.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdFloatArray() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new float[][] // sequence of enumerations { @@ -842,18 +843,18 @@ namespace Test.Psi new[] { 1.0f, float.NaN, -1.5f, 3.0f }, new[] { float.NaN, 2.0f, -1.5f, 3.0f }, new[] { float.NegativeInfinity, 2.0f, -1.5f, 3.0f }, - new[] { float.PositiveInfinity, 2.0f, -1.5f, 3.0f } + new[] { float.PositiveInfinity, 2.0f, -1.5f, 3.0f }, }, new[] { 0f, 0f, 0.707106769f, 1.931105f, float.NaN, float.NaN, float.NaN, float.NaN } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdDecimal() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new decimal[] { }, // empty sequence new decimal[] { } // expected output @@ -861,15 +862,15 @@ namespace Test.Psi ( new[] { -1.0m, -2.0m, -3.0m, 0.0m, 1.0m, 2.0m }, // real numbers only new[] { 0.0m, 0.707106781186548m, 1m, 1.29099444873581m, 1.58113883008419m, 1.87082869338697m } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdDecimalArray() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new decimal[][] // sequence of enumerations { @@ -879,15 +880,15 @@ namespace Test.Psi new[] { 1.0m, 2.0m, -1.5m, 3.0m }, }, new[] { 0m, 0m, 0.707106781186548m, 1.93110503770941m } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdInt() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new int[] { }, // empty sequence new double[] { } // expected output @@ -895,15 +896,15 @@ namespace Test.Psi ( new[] { -1, -2, -3, 0, 1, 2 }, new[] { double.NaN, 0.70710678118654757, 1, 1.2909944487358056, 1.5811388300841898, 1.8708286933869707 } // expected output - ) - ); + )); } [TestMethod] [Timeout(60000)] public void StatisticsStdIntArray() { - this.RunTest(Operators.Std, + this.RunTest( + Operators.Std, ( new int[][] // sequence of enumerations { @@ -913,8 +914,7 @@ namespace Test.Psi new[] { 1, 2, -1, 3 }, }, new[] { 0, 0, 0.70710678118654757, 1.707825127659933 } // expected output - ) - ); + )); } /// diff --git a/Sources/Runtime/Test.Psi/Test.Psi.csproj b/Sources/Runtime/Test.Psi/Test.Psi.csproj index 31856d65..c802d7da 100644 --- a/Sources/Runtime/Test.Psi/Test.Psi.csproj +++ b/Sources/Runtime/Test.Psi/Test.Psi.csproj @@ -2,7 +2,7 @@ Exe - netcoreapp2.0 + netcoreapp3.1 @@ -22,17 +22,11 @@ - true - true - Test.Psi - Microsoft Corporation - Microsoft Corporation - - Test.Psi - Copyright (c) Microsoft Corporation. All rights reserved. - false - Test.Psi.ConsoleMain - false + true + true + Test.Psi + Test.Psi + Test.Psi.ConsoleMain @@ -44,9 +38,17 @@ - - - + + all + runtime; build; native; contentfiles; analyzers + + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + diff --git a/Sources/Runtime/Test.Psi/TimeTester.cs b/Sources/Runtime/Test.Psi/TimeTester.cs index b46a95b4..ff66ef2a 100644 --- a/Sources/Runtime/Test.Psi/TimeTester.cs +++ b/Sources/Runtime/Test.Psi/TimeTester.cs @@ -18,7 +18,7 @@ namespace Test.Psi // The clock sync precision in ticks long syncPrecision = 10; - // Get QPC frequency and compute a sync preceision in QPC cycles + // Get QPC frequency and compute a sync precision in QPC cycles long qpcFrequency = Platform.Specific.TimeFrequency(); double qpcToHns = 10000000.0 / qpcFrequency; long qpcSyncPrecision = (long)(syncPrecision / qpcToHns); @@ -209,7 +209,7 @@ namespace Test.Psi long ft = cal.ConvertToFileTime(ticks); Assert.AreEqual(ft, cal.ConvertToFileTime(ticks)); - // Add more calibration data until the capacityis reached. After initialization, + // Add more calibration data until the capacity is reached. After initialization, // converter will already have one calibration entry, so these add to it. Note // the different adjustment factor (2:1) that will allow us to distinguish this // from the previous calibration data. diff --git a/Sources/Runtime/Test.Psi/TypeResolutionTests.cs b/Sources/Runtime/Test.Psi/TypeResolutionTests.cs new file mode 100644 index 00000000..63527b03 --- /dev/null +++ b/Sources/Runtime/Test.Psi/TypeResolutionTests.cs @@ -0,0 +1,77 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Test.Psi +{ + using System; + using System.Collections.Generic; + using System.Threading; + using Microsoft.Psi; + using Microsoft.VisualStudio.TestTools.UnitTesting; + + [TestClass] + public class TypeResolutionTests + { + [TestMethod] + [Timeout(60000)] + public void TypeNameTest() + { + // primitive type + string typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(int).AssemblyQualifiedName); + Assert.AreEqual(typeof(int).FullName, typeName); + Assert.AreEqual(typeof(int), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(int[]).AssemblyQualifiedName); + Assert.AreEqual(typeof(int[]).FullName, typeName); + Assert.AreEqual(typeof(int[]), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(int[,]).AssemblyQualifiedName); + Assert.AreEqual(typeof(int[,]).FullName, typeName); + Assert.AreEqual(typeof(int[,]), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(string).AssemblyQualifiedName); + Assert.AreEqual(typeof(string).FullName, typeName); + Assert.AreEqual(typeof(string), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(object).AssemblyQualifiedName); + Assert.AreEqual(typeof(object).FullName, typeName); + Assert.AreEqual(typeof(object), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(byte*).AssemblyQualifiedName); + Assert.AreEqual(typeof(byte*).FullName, typeName); + Assert.AreEqual(typeof(byte*), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(List<>).AssemblyQualifiedName); + Assert.AreEqual(typeof(List<>).FullName, typeName); + Assert.AreEqual(typeof(List<>), Type.GetType(typeName)); + + // Note - Type.FullName does not remove the AQN from the inner type parameters of generic + // types, so we won't test the result for equality with typeof(List).FullName + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(List).AssemblyQualifiedName); + Assert.AreEqual(typeof(List), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(IEnumerable).AssemblyQualifiedName); + Assert.AreEqual(typeof(IEnumerable), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(IDictionary>).AssemblyQualifiedName); + Assert.AreEqual(typeof(IDictionary>), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(Func).AssemblyQualifiedName); + Assert.AreEqual(typeof(Func), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName(typeof(NestedClass>).AssemblyQualifiedName); + Assert.AreEqual(typeof(NestedClass>), Type.GetType(typeName)); + + typeName = TypeResolutionHelper.RemoveAssemblyName("Namespace.TypeName, AssemblyName WithSpaces-v1.0.0.0, Version=1.0.0.0"); + Assert.AreEqual("Namespace.TypeName", typeName); + + typeName = TypeResolutionHelper.RemoveAssemblyName("Namespace.TypeName`2[[Nested.TypeName1, AssemblyName WithSpaces-v1.0.0.0, Version=1.0.0.0], [Nested.TypeName2[], AssemblyName, Culture=neutral]], AssemblyName, PublicKeyToken=null"); + Assert.AreEqual("Namespace.TypeName`2[[Nested.TypeName1], [Nested.TypeName2[]]]", typeName); + } + + // empty class for type name testing + private class NestedClass + { + } + } +} diff --git a/Sources/Runtime/Test.Psi/VectorTests.cs b/Sources/Runtime/Test.Psi/VectorTests.cs index 0356272b..789659bb 100644 --- a/Sources/Runtime/Test.Psi/VectorTests.cs +++ b/Sources/Runtime/Test.Psi/VectorTests.cs @@ -4,10 +4,10 @@ namespace Test.Psi { using System; - using System.Threading; using System.Collections.Generic; using System.Linq; using System.Text; + using System.Threading; using Microsoft.Psi; using Microsoft.Psi.Components; using Microsoft.VisualStudio.TestTools.UnitTesting; @@ -103,7 +103,6 @@ namespace Test.Psi CollectionAssert.AreEqual(new int[] { 0, 10, 30, 60, 100 }, results.ToArray()); } - [TestMethod] [Timeout(60000)] public void SparseVectorStatelessParallel() @@ -131,7 +130,8 @@ namespace Test.Psi [Timeout(60000)] public void SparseVectorWithGapParallel() { - var sequence = new List>() { + var sequence = new List>() + { new Dictionary { { 1, 100 } }, new Dictionary { { 1, 100 } }, new Dictionary { { 1, 100 } }, @@ -181,7 +181,8 @@ namespace Test.Psi [Timeout(60000)] public void SparseVectorBranchTerminationPolicy() { - var sequence = new List>() { + var sequence = new List>() + { new Dictionary { { 1, 100 } }, new Dictionary { { 1, 100 } }, new Dictionary { { 1, 100 } }, @@ -311,7 +312,7 @@ namespace Test.Psi new Dictionary { { 2, 26 } }, new Dictionary { { 2, 27 } }, new Dictionary { { 2, 28 } }, - new Dictionary { { 2, 29 } } + new Dictionary { { 2, 29 } }, }; var results = new List(); @@ -340,8 +341,10 @@ namespace Test.Psi { sb.Append($"{v},"); } + sb.Remove(sb.Length - 1, 1); } + results.Add(sb.ToString().Substring(1)); }); p.Run(); @@ -484,7 +487,7 @@ namespace Test.Psi p.RunAsync(); - void step(int expected) + void Step(int expected) { stepper.Step(); while (results.Count != expected) @@ -497,34 +500,34 @@ namespace Test.Psi Assert.AreEqual(0, results.Count); - step(1); // A C + Step(1); // A C CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 3, 'C' } }, results[0]); - step(2); // A C E + Step(2); // A C E CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 3, 'C' }, { 5, 'E' } }, results[1]); - step(2); // - B - D E (holes) no new results + Step(2); // - B - D E (holes) no new results - step(3); // A B C D - (hole) stream 5/E closed + Step(3); // A B C D - (hole) stream 5/E closed CollectionAssert.AreEquivalent(new Dictionary { { 1, '\0' }, { 2, 'B' }, { 3, '\0' }, { 4, 'D' }, { 5, 'E' } }, results[2]); // note default '\0' values - step(4); // A - C - + Step(4); // A - C - CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, 'B' }, { 3, 'C' }, { 4, 'D' }, { 5, '\0' } }, results[3]); // note default '\0' value - step(6); // A B C D E stream 5/E "reopens" two outputs + Step(6); // A B C D E stream 5/E "reopens" two outputs CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, '\0' }, { 3, 'C' }, { 4, '\0' } }, results[4]); // note default '\0' values CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, 'B' }, { 3, 'C' }, { 4, 'D' }, { 5, 'E' } }, results[5]); - step(7); // A B C D E + Step(7); // A B C D E CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, 'B' }, { 3, 'C' }, { 4, 'D' }, { 5, 'E' } }, results[6]); - step(8); // A B C streams 4/D and 5/E closed + Step(8); // A B C streams 4/D and 5/E closed CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, 'B' }, { 3, 'C' } }, results[7]); - step(9); // A B stream 3/C closed + Step(9); // A B stream 3/C closed CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, 'B' } }, results[8]); - step(10); // A B streams 1/A and 2/B now closed + Step(10); // A B streams 1/A and 2/B now closed CollectionAssert.AreEquivalent(new Dictionary { { 1, 'A' }, { 2, 'B' } }, results[9]); Assert.IsFalse(stepper.Step()); // we're done @@ -549,6 +552,8 @@ namespace Test.Psi this.Out = pipeline.CreateEmitter(this, "Out"); } + public Emitter Out { get; private set; } + public bool Step() { if (this.index < this.sequence.Count) @@ -571,8 +576,6 @@ namespace Test.Psi { notifyCompleted(); } - - public Emitter Out { get; private set; } } } } diff --git a/Sources/Speech/Microsoft.Psi.Speech.Windows/Microsoft.Psi.Speech.Windows.csproj b/Sources/Speech/Microsoft.Psi.Speech.Windows/Microsoft.Psi.Speech.Windows.csproj index f09b902f..31e42b2e 100644 --- a/Sources/Speech/Microsoft.Psi.Speech.Windows/Microsoft.Psi.Speech.Windows.csproj +++ b/Sources/Speech/Microsoft.Psi.Speech.Windows/Microsoft.Psi.Speech.Windows.csproj @@ -24,6 +24,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechIntentDetector.cs b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechIntentDetector.cs index 1663a00a..7febd178 100644 --- a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechIntentDetector.cs +++ b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechIntentDetector.cs @@ -99,6 +99,7 @@ namespace Microsoft.Psi.Speech { // Unregister handlers so they won't fire while disposing. this.speechRecognitionEngine.LoadGrammarCompleted -= this.OnLoadGrammarCompleted; + this.speechRecognitionEngine.Dispose(); } } diff --git a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizer.cs b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizer.cs index ad02c90f..ec64bd3a 100644 --- a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizer.cs +++ b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizer.cs @@ -194,7 +194,7 @@ namespace Microsoft.Psi.Speech public Emitter AudioLevelUpdated { get; } /// - /// Gets the output stream of emulate recognize completed completed events. + /// Gets the output stream of emulate recognize completed events. /// public Emitter EmulateRecognizeCompleted { get; } @@ -242,6 +242,7 @@ namespace Microsoft.Psi.Speech // Free any other managed objects here. this.recognizeComplete.Dispose(); this.recognizeComplete = null; + this.inputAudioStream.Dispose(); } /// diff --git a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizerConfiguration.cs b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizerConfiguration.cs index a40a8948..3bdf1267 100644 --- a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizerConfiguration.cs +++ b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechRecognizerConfiguration.cs @@ -20,12 +20,6 @@ namespace Microsoft.Psi.Speech /// public SystemSpeechRecognizerConfiguration() { - this.Language = "en-us"; - this.Grammars = null; - this.BufferLengthInMs = 1000; - - // Defaults to 16 kHz, 16-bit, 1-channel PCM samples - this.InputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// @@ -36,7 +30,7 @@ namespace Microsoft.Psi.Speech /// (U.S. English). Other supported locales include "en-gb", "de-de", "es-es", "fr-fr", "ja-jp", /// "zh-cn" and "zh-tw". /// - public string Language { get; set; } + public string Language { get; set; } = "en-us"; /// /// Gets or sets the list of grammar files. @@ -49,7 +43,7 @@ namespace Microsoft.Psi.Speech /// context-free grammar used for free text dictation. /// [XmlArrayItem("Grammar")] - public GrammarInfo[] Grammars { get; set; } + public GrammarInfo[] Grammars { get; set; } = null; /// /// Gets or sets the length of the recognizer's input stream buffer in milliseconds. @@ -61,31 +55,31 @@ namespace Microsoft.Psi.Speech /// on the length of audio to buffer in milliseconds and the audio input format. By default, a 1000 ms /// buffer is used. It is safe to leave this value unchanged. /// - public int BufferLengthInMs { get; set; } + public int BufferLengthInMs { get; set; } = 1000; /// /// Gets or sets the number of milliseconds during which the internal speech detection /// engine accepts input containing only silence before making a state transition. /// - public int InitialSilenceTimeoutMs { get; set; } + public int InitialSilenceTimeoutMs { get; set; } = 0; /// /// Gets or sets the number of milliseconds during which the internal speech detection /// engine accepts input containing only background noise before making a state transition. /// - public int BabbleTimeoutMs { get; set; } + public int BabbleTimeoutMs { get; set; } = 0; /// /// Gets or sets the number of milliseconds of silence that the internal speech detection /// engine will accept at the end of unambiguous input before making a state transition. /// - public int EndSilenceTimeoutMs { get; set; } + public int EndSilenceTimeoutMs { get; set; } = 150; /// /// Gets or sets the number of milliseconds of silence that the internal speech detection /// engine will accept at the end of ambiguous input before making a state transition. /// - public int EndSilenceTimeoutAmbiguousMs { get; set; } + public int EndSilenceTimeoutAmbiguousMs { get; set; } = 500; /// /// Gets or sets the expected input format of the audio stream. @@ -96,6 +90,6 @@ namespace Microsoft.Psi.Speech /// static methods to create the appropriate /// object. If not specified, a default value of 16000 Hz is assumed. /// - public WaveFormat InputFormat { get; set; } + public WaveFormat InputFormat { get; set; } = WaveFormat.Create16kHz1Channel16BitPcm(); } } diff --git a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechSynthesizerConfiguration.cs b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechSynthesizerConfiguration.cs index 9bbe4802..87a5b860 100644 --- a/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechSynthesizerConfiguration.cs +++ b/Sources/Speech/Microsoft.Psi.Speech.Windows/SystemSpeechSynthesizerConfiguration.cs @@ -19,60 +19,50 @@ namespace Microsoft.Psi.Speech /// public SystemSpeechSynthesizerConfiguration() { - this.Voice = "Microsoft Zira Desktop"; - this.PersistAudio = false; - this.UseDefaultAudioPlaybackDevice = false; - this.BufferLengthInMs = 1000; - this.ProsodyRate = 1.0; - this.ProsodyPitch = "default"; - this.ProsodyVolume = "default"; - - // Defaults to 16 kHz, 16-bit, 1-channel PCM samples - this.OutputFormat = WaveFormat.Create16kHz1Channel16BitPcm(); } /// /// Gets or sets the text-to-speech voice to use. /// - public string Voice { get; set; } + public string Voice { get; set; } = "Microsoft Zira Desktop"; /// /// Gets or sets a value indicating whether the output audio stream is persisted. /// - public bool PersistAudio { get; set; } + public bool PersistAudio { get; set; } = false; /// /// Gets or sets a value indicating whether synthesized speech audio /// output should be redirected to the default audio device instead of /// the output stream. Useful for debugging purposes. /// - public bool UseDefaultAudioPlaybackDevice { get; set; } + public bool UseDefaultAudioPlaybackDevice { get; set; } = false; /// /// Gets or sets the length of the synthesizer's output audio buffer in milliseconds. /// - public int BufferLengthInMs { get; set; } + public int BufferLengthInMs { get; set; } = 1000; /// /// Gets or sets the prosody rate for the speech. /// - public double ProsodyRate { get; set; } + public double ProsodyRate { get; set; } = 1.0; /// /// Gets or sets the prosody pitch for the speech. Possible values: x-low, low, medium, high, x-high, or default /// Todo: make this an enum. /// - public string ProsodyPitch { get; set; } + public string ProsodyPitch { get; set; } = "default"; /// /// Gets or sets the prosody volume for the speech. Possible values: silent, x-soft, soft, medium, loud, x-loud, or default /// Todo: make this an enum. /// - public string ProsodyVolume { get; set; } + public string ProsodyVolume { get; set; } = "default"; /// /// Gets or sets the output format of the audio stream. /// - public WaveFormat OutputFormat { get; set; } + public WaveFormat OutputFormat { get; set; } = WaveFormat.Create16kHz1Channel16BitPcm(); } } diff --git a/Sources/Speech/Microsoft.Psi.Speech/GrammarInfo.cs b/Sources/Speech/Microsoft.Psi.Speech/GrammarInfo.cs index 94e4679d..b059b718 100644 --- a/Sources/Speech/Microsoft.Psi.Speech/GrammarInfo.cs +++ b/Sources/Speech/Microsoft.Psi.Speech/GrammarInfo.cs @@ -9,7 +9,7 @@ namespace Microsoft.Psi.Speech /// Represents information about a grammar. /// /// - /// This information may be used to define a set of files containing grammar definitions to be comsumed by a speech recognition component. + /// This information may be used to define a set of files containing grammar definitions to be consumed by a speech recognition component. /// public class GrammarInfo { diff --git a/Sources/Speech/Microsoft.Psi.Speech/Microsoft.Psi.Speech.csproj b/Sources/Speech/Microsoft.Psi.Speech/Microsoft.Psi.Speech.csproj index ccf6ae02..8b96f796 100644 --- a/Sources/Speech/Microsoft.Psi.Speech/Microsoft.Psi.Speech.csproj +++ b/Sources/Speech/Microsoft.Psi.Speech/Microsoft.Psi.Speech.csproj @@ -33,6 +33,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Speech/Microsoft.Psi.Speech/SimpleVoiceActivityDetector.cs b/Sources/Speech/Microsoft.Psi.Speech/SimpleVoiceActivityDetector.cs index 7f299300..a00fcf35 100644 --- a/Sources/Speech/Microsoft.Psi.Speech/SimpleVoiceActivityDetector.cs +++ b/Sources/Speech/Microsoft.Psi.Speech/SimpleVoiceActivityDetector.cs @@ -61,7 +61,7 @@ namespace Microsoft.Psi.Speech var voiceActivityDetected = logEnergyThreshold.Window(0, voiceActivityDetectionFrames - 1).Average(); var silenceDetected = logEnergyThreshold.Window(-(silenceDetectionFrames - 1), 0).Average(); - // Use Aggregate opertator to update the state (isSpeaking) based on the current state. + // Use Aggregate operator to update the state (isSpeaking) based on the current state. var vad = voiceActivityDetected.Join(silenceDetected).Aggregate( false, (isSpeaking, v) => isSpeaking ? v.Item2 != 0 : v.Item1 == 1.0); diff --git a/Sources/Speech/Test.Psi.Speech.Windows/SystemSpeechRecognizerTests.cs b/Sources/Speech/Test.Psi.Speech.Windows/SystemSpeechRecognizerTests.cs index 45b9eb1e..ab0c6acc 100644 --- a/Sources/Speech/Test.Psi.Speech.Windows/SystemSpeechRecognizerTests.cs +++ b/Sources/Speech/Test.Psi.Speech.Windows/SystemSpeechRecognizerTests.cs @@ -80,7 +80,7 @@ namespace Test.Psi.Speech.Windows return; } - // Read the WaveFormat from the file header so we can set the recognizer configuaration. + // Read the WaveFormat from the file header so we can set the recognizer configuration. WaveFormat format = WaveFileHelper.ReadWaveFileHeader(filename); // Initialize components and wire up pipeline. @@ -98,7 +98,7 @@ namespace Test.Psi.Speech.Windows } // Add results from outputs. Note that we need to call DeepClone on each result as we - // do not want them to be resused by the runtime. + // do not want them to be reused by the runtime. var results = new List(); recognizer.Out.Do(r => results.Add(r.DeepClone())); recognizer.PartialRecognitionResults.Do(r => results.Add(r.DeepClone())); diff --git a/Sources/Speech/Test.Psi.Speech.Windows/Test.Psi.Speech.Windows.csproj b/Sources/Speech/Test.Psi.Speech.Windows/Test.Psi.Speech.Windows.csproj index 40249ce7..23ae5f43 100644 --- a/Sources/Speech/Test.Psi.Speech.Windows/Test.Psi.Speech.Windows.csproj +++ b/Sources/Speech/Test.Psi.Speech.Windows/Test.Psi.Speech.Windows.csproj @@ -1,28 +1,27 @@ - - - net472 - - Exe - Test.Psi.Speech.Windows.ConsoleMain - false - false - + + + net472 + + Exe + Test.Psi.Speech.Windows.ConsoleMain + ../../../Build/Test.Psi.ruleset + true AnyCPU - + true AnyCPU - + - + - + @@ -30,29 +29,37 @@ - - - - PreserveNewest - - - PreserveNewest - - + + + + PreserveNewest + + + PreserveNewest + + - + - - - + + all + runtime; build; native; contentfiles; analyzers + + + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + - - - - - - - + + + + + + + \ No newline at end of file diff --git a/Sources/Speech/Test.Psi.Speech/Test.Psi.Speech.csproj b/Sources/Speech/Test.Psi.Speech/Test.Psi.Speech.csproj index 172deb93..a07cf188 100644 --- a/Sources/Speech/Test.Psi.Speech/Test.Psi.Speech.csproj +++ b/Sources/Speech/Test.Psi.Speech/Test.Psi.Speech.csproj @@ -1,7 +1,7 @@  - netcoreapp2.0 + netcoreapp3.1 false @@ -35,10 +35,14 @@ - + + all + runtime; build; native; contentfiles; analyzers + + - - + + diff --git a/Sources/Toolkits/FiniteStateMachine/Microsoft.Psi.FiniteStateMachine/Microsoft.Psi.FiniteStateMachine.csproj b/Sources/Toolkits/FiniteStateMachine/Microsoft.Psi.FiniteStateMachine/Microsoft.Psi.FiniteStateMachine.csproj index 5d913422..c9da3efd 100644 --- a/Sources/Toolkits/FiniteStateMachine/Microsoft.Psi.FiniteStateMachine/Microsoft.Psi.FiniteStateMachine.csproj +++ b/Sources/Toolkits/FiniteStateMachine/Microsoft.Psi.FiniteStateMachine/Microsoft.Psi.FiniteStateMachine.csproj @@ -28,6 +28,10 @@ + + all + runtime; build; native; contentfiles; analyzers + diff --git a/Sources/Tools/PsiStoreTool/Program.cs b/Sources/Tools/PsiStoreTool/Program.cs index 342ce61d..9dd5772b 100644 --- a/Sources/Tools/PsiStoreTool/Program.cs +++ b/Sources/Tools/PsiStoreTool/Program.cs @@ -38,10 +38,11 @@ namespace PsiStoreTool Console.WriteLine($"Platform for Situated Intelligence Store Tool"); try { - return Parser.Default.ParseArguments(args) + return Parser.Default.ParseArguments(args) .MapResult( - (Verbs.ListStreams opts) => Utility.ListStreams(opts.Store, opts.Path), + (Verbs.ListStreams opts) => Utility.ListStreams(opts.Store, opts.Path, opts.ShowSize), (Verbs.Info opts) => Utility.DisplayStreamInfo(opts.Stream, opts.Store, opts.Path), + (Verbs.RemoveStream opts) => Utility.RemoveStream(opts.Stream, opts.Store, opts.Path), (Verbs.Messages opts) => Utility.DisplayStreamMessages(opts.Stream, opts.Store, opts.Path, opts.Number), (Verbs.Save opts) => Utility.SaveStreamMessages(opts.Stream, opts.Store, opts.Path, opts.File, opts.Format), (Verbs.Send opts) => Utility.SendStreamMessages(opts.Stream, opts.Store, opts.Path, opts.Topic, opts.Address, opts.Format), diff --git a/Sources/Tools/PsiStoreTool/PsiStoreTool.csproj b/Sources/Tools/PsiStoreTool/PsiStoreTool.csproj index 6facd793..ccd3e11c 100644 --- a/Sources/Tools/PsiStoreTool/PsiStoreTool.csproj +++ b/Sources/Tools/PsiStoreTool/PsiStoreTool.csproj @@ -2,19 +2,19 @@ Exe - netcoreapp2.0 + netcoreapp3.1 ../../../Build/Microsoft.Psi.ruleset false - bin\Debug\netcoreapp2.0\PsiStoreTool.xml + bin\Debug\netcoreapp3.1\PsiStoreTool.xml true - bin\Release\netcoreapp2.0\PsiStoreTool.xml + bin\Release\netcoreapp3.1\PsiStoreTool.xml true @@ -29,6 +29,10 @@ + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers diff --git a/Sources/Tools/PsiStoreTool/Readme.md b/Sources/Tools/PsiStoreTool/Readme.md index a09128b5..96e4b49d 100644 --- a/Sources/Tools/PsiStoreTool/Readme.md +++ b/Sources/Tools/PsiStoreTool/Readme.md @@ -55,7 +55,7 @@ AnotherStream (MyNamespace.MyType) Count: 3394 ``` -This displays the name and .NET type of each stream. +This displays the name and .NET type of each stream. Adding '-s true' option enables listing the size of each stream (the information displayed includes both the average message size and the total size of all messages in the store). To get info about a particular stream: diff --git a/Sources/Tools/PsiStoreTool/Utility.cs b/Sources/Tools/PsiStoreTool/Utility.cs index eba429df..5dc7eac6 100644 --- a/Sources/Tools/PsiStoreTool/Utility.cs +++ b/Sources/Tools/PsiStoreTool/Utility.cs @@ -38,23 +38,37 @@ namespace PsiStoreTool /// /// Store name. /// Store path. + /// Indicates whether to show the stream size information. /// Success flag. - internal static int ListStreams(string store, string path) + internal static int ListStreams(string store, string path, bool showSize = false) { - Console.WriteLine($"Available Streams (store={store}, path={path})"); + var stringBuilder = new StringBuilder(); + using (var pipeline = Pipeline.Create()) { var data = Store.Open(pipeline, store, Path.GetFullPath(path)); - var count = 0; - foreach (var stream in data.AvailableStreams) - { - Console.WriteLine($"{stream.Name} ({stream.TypeName.Split(',')[0]})"); - count++; - } - Console.WriteLine($"Count: {count}"); + stringBuilder.AppendLine($"{data.AvailableStreams.Count()} Available Streams (store={store}, path={path})"); + if (showSize) + { + stringBuilder.AppendLine("[Avg. Message Size / Total Size]; * marks indexed streams"); + foreach (var stream in data.AvailableStreams.OrderByDescending(s => (double)s.MessageCount * s.AverageMessageSize)) + { + var isIndexed = stream.IsIndexed ? "* " : " "; + stringBuilder.AppendLine($"{isIndexed}[{(double)stream.AverageMessageSize / 1024:0.00}Kb / {(stream.AverageMessageSize * (double)stream.MessageCount) / (1024 * 1024):0.00}Mb] {stream.Name} ({stream.TypeName.Split(',')[0]})"); + } + } + else + { + foreach (var stream in data.AvailableStreams) + { + stringBuilder.AppendLine($"{stream.Name} ({stream.TypeName.Split(',')[0]})"); + } + } } + Console.WriteLine(stringBuilder.ToString()); + return 0; } @@ -75,6 +89,7 @@ namespace PsiStoreTool Console.WriteLine($"ID: {meta.Id}"); Console.WriteLine($"Name: {meta.Name}"); Console.WriteLine($"TypeName: {meta.TypeName}"); + Console.WriteLine($"SupplementalMetadataTypeName: {meta.SupplementalMetadataTypeName}"); Console.WriteLine($"MessageCount: {meta.MessageCount}"); Console.WriteLine($"AverageFrequency: {meta.AverageFrequency}"); Console.WriteLine($"AverageLatency: {meta.AverageLatency}"); @@ -98,6 +113,52 @@ namespace PsiStoreTool return 0; } + /// + /// Removes a stream from the store. + /// + /// Stream name. + /// Store name. + /// Store path. + /// Success flag. + internal static int RemoveStream(string stream, string store, string path) + { + string tempFolderPath = Path.Combine(path, $"Copy-{Guid.NewGuid()}"); + + // copy all streams to the new path, excluding the specified stream by name + Store.Copy((store, path), (store, tempFolderPath), null, s => s.Name != stream, false); + + // create a SafeCopy folder in which to save the original store files + var safeCopyPath = Path.Combine(path, $"Original-{Guid.NewGuid()}"); + Directory.CreateDirectory(safeCopyPath); + + // Move the original store files to the BeforeRepair folder. Do this even if the deleteOldStore + // flag is true, as deleting the original store files immediately may occasionally fail. This can + // happen because the InfiniteFileReader disposes of its MemoryMappedView in a background + // thread, which may still be in progress. If deleteOldStore is true, we will delete the + // BeforeRepair folder at the very end (by which time any open MemoryMappedViews will likely + // have finished disposing). + foreach (var file in Directory.EnumerateFiles(path)) + { + var fileInfo = new FileInfo(file); + File.Move(file, Path.Combine(safeCopyPath, fileInfo.Name)); + } + + // move the repaired store files to the original folder + foreach (var file in Directory.EnumerateFiles(Path.Combine(tempFolderPath))) + { + var fileInfo = new FileInfo(file); + File.Move(file, Path.Combine(path, fileInfo.Name)); + } + + // cleanup temporary folder + Directory.Delete(tempFolderPath, true); + + // delete the old store files + Directory.Delete(safeCopyPath, true); + + return 0; + } + /// /// Print (first n) messages from stream. /// @@ -187,7 +248,7 @@ namespace PsiStoreTool /// Success flag. internal static int CropStore(string store, string path, string output, string start, string length) { - Console.WriteLine($"Concatenating stores (stores={store}, path={path}, output={output}, start={start}, length={length})"); + Console.WriteLine($"Cropping store (store={store}, path={path}, output={output}, start={start}, length={length})"); var startTime = TimeSpan.Zero; // start at beginning if unspecified if (!string.IsNullOrWhiteSpace(start) && !TimeSpan.TryParse(start, CultureInfo.InvariantCulture, out startTime)) @@ -236,7 +297,7 @@ namespace PsiStoreTool /// Store path. /// Task name. /// Optional assemblies containing task. - /// Addidional configuration arguments. + /// Additional configuration arguments. /// Success flag. internal static int ExecuteTask(string stream, string store, string path, string name, IEnumerable assemblies, IEnumerable args) { @@ -275,7 +336,7 @@ namespace PsiStoreTool { if (importer == null) { - throw new ArgumentException("Error: Task requires a store, but no store argument suplied (-s)."); + throw new ArgumentException("Error: Task requires a store, but no store argument supplied (-s)."); } parameters[i] = importer; @@ -362,7 +423,7 @@ namespace PsiStoreTool { if (importer == null) { - throw new ArgumentException("Error: Task requires a stream within a store, but no store argument suplied (-s)."); + throw new ArgumentException("Error: Task requires a stream within a store, but no store argument supplied (-s)."); } importer.OpenDynamicStream(stream).Do((m, e) => diff --git a/Sources/Tools/PsiStoreTool/Verbs.cs b/Sources/Tools/PsiStoreTool/Verbs.cs index e08f0b5c..ebe77f41 100644 --- a/Sources/Tools/PsiStoreTool/Verbs.cs +++ b/Sources/Tools/PsiStoreTool/Verbs.cs @@ -59,6 +59,11 @@ namespace PsiStoreTool [Verb("list", HelpText = "List streams within a Psi data store.")] internal class ListStreams : BaseStoreCommand { + /// + /// Gets or sets a value indicating whether to show stream size information. + /// + [Option('s', "showsize", Required = false, HelpText = "Shows stream size information.", Default = false)] + public bool ShowSize { get; set; } } /// @@ -69,6 +74,14 @@ namespace PsiStoreTool { } + /// + /// Remove stream verb. + /// + [Verb("removestream", HelpText = "Removes a stream from a store.")] + internal class RemoveStream : BaseStreamCommand + { + } + /// /// Display messages verb. /// diff --git a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindow.xaml b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindow.xaml index 48aad86d..d6a9c519 100644 --- a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindow.xaml +++ b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindow.xaml @@ -15,7 +15,7 @@ xmlns:viewmodels="clr-namespace:Microsoft.Psi.Visualization.ViewModels;assembly=Microsoft.Psi.Visualization.Common.Windows" xmlns:xctk="clr-namespace:Xceed.Wpf.Toolkit.PropertyGrid;assembly=Xceed.Wpf.Toolkit" xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" - Title="Platform for Situated Intelligence Studio" + Title="{Binding TitleText}" WindowState="{Binding AppSettings.WindowState, Mode=TwoWay}" Top="{Binding AppSettings.WindowPositionTop, Mode=TwoWay}" Left="{Binding AppSettings.WindowPositionLeft, Mode=TwoWay}" @@ -26,10 +26,10 @@ - + + + + diff --git a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindowViewModel.cs b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindowViewModel.cs index bcec8b76..f9a947a9 100644 --- a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindowViewModel.cs +++ b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/MainWindowViewModel.cs @@ -17,6 +17,7 @@ namespace Microsoft.Psi.PsiStudio using Microsoft.Psi.Visualization; using Microsoft.Psi.Visualization.Base; using Microsoft.Psi.Visualization.Data; + using Microsoft.Psi.Visualization.Helpers; using Microsoft.Psi.Visualization.Navigation; using Microsoft.Psi.Visualization.ViewModels; using Microsoft.Psi.Visualization.VisualizationObjects; @@ -29,6 +30,8 @@ namespace Microsoft.Psi.PsiStudio /// public class MainWindowViewModel : ObservableObject { + private readonly TimeSpan nudgeTimeSpan = TimeSpan.FromSeconds(1 / 30.0); + private readonly TimeSpan jumpTimeSpan = TimeSpan.FromSeconds(1 / 6.0); private readonly string newLayoutName = ""; private List availableLayouts = new List(); private LayoutInfo currentLayout = null; @@ -56,6 +59,10 @@ namespace Microsoft.Psi.PsiStudio private RelayCommand playPauseCommand; private RelayCommand toggleCursorFollowsMouseComand; + private RelayCommand nudgeRightCommand; + private RelayCommand nudgeLeftCommand; + private RelayCommand jumpRightCommand; + private RelayCommand jumpLeftCommand; private RelayCommand openStoreCommand; private RelayCommand openDatasetCommand; private RelayCommand saveDatasetCommand; @@ -100,6 +107,7 @@ namespace Microsoft.Psi.PsiStudio Application.Current.MainWindow.ContentRendered += this.MainWindow_Activated; // Listen for property change events from the visualization context (specifically when the visualization container changes) + VisualizationContext.Instance.PropertyChanging += this.VisualizationContext_PropertyChanging; VisualizationContext.Instance.PropertyChanged += this.VisualizationContext_PropertyChanged; // Load the available layouts @@ -108,8 +116,8 @@ namespace Microsoft.Psi.PsiStudio // Set the current layout if it's in the available layouts, otherwise make "new layout" the current layout LayoutInfo lastLayout = this.AvailableLayouts.FirstOrDefault(l => l.Name == this.AppSettings.CurrentLayoutName); this.currentLayout = lastLayout ?? this.AvailableLayouts[0]; - } - + } + /// /// Gets the name of this application for use when constructing paths etc. /// @@ -144,6 +152,31 @@ namespace Microsoft.Psi.PsiStudio set => this.Set(nameof(this.SelectedPropertiesObject), ref this.selectedPropertiesObject, value); } + /// + /// Gets the text to display in the application's titlebar. + /// + public string TitleText + { + get + { + StringBuilder text = new StringBuilder("Platform for Situated Intelligence Studio"); + if (VisualizationContext.Instance.DatasetViewModel != null) + { + text.Append(" - "); + text.Append(VisualizationContext.Instance.DatasetViewModel.Name); + + if (VisualizationContext.Instance.VisualizationContainer.SnapToVisualizationObject != null) + { + text.Append(" [cursor snaps to "); + text.Append(VisualizationContext.Instance.VisualizationContainer.SnapToVisualizationObject.Name); + text.Append(" stream]"); + } + } + + return text.ToString(); + } + } + /// /// Gets the play/pause command. /// @@ -183,6 +216,86 @@ namespace Microsoft.Psi.PsiStudio } } + /// + /// Gets the nudge cursor right command. + /// + [Browsable(false)] + [IgnoreDataMember] + public RelayCommand NudgeRightCommand + { + get + { + if (this.nudgeRightCommand == null) + { + this.nudgeRightCommand = new RelayCommand( + () => this.MoveCursorBy(this.nudgeTimeSpan, SnappingBehavior.Next), + () => VisualizationContext.Instance.IsDatasetLoaded() && this.VisualizationContainer.Navigator.CursorMode != CursorMode.Live); + } + + return this.nudgeRightCommand; + } + } + + /// + /// Gets the nudge cursor left command. + /// + [Browsable(false)] + [IgnoreDataMember] + public RelayCommand NudgeLeftCommand + { + get + { + if (this.nudgeLeftCommand == null) + { + this.nudgeLeftCommand = new RelayCommand( + () => this.MoveCursorBy(-this.nudgeTimeSpan, SnappingBehavior.Previous), + () => VisualizationContext.Instance.IsDatasetLoaded() && this.VisualizationContainer.Navigator.CursorMode != CursorMode.Live); + } + + return this.nudgeLeftCommand; + } + } + + /// + /// Gets the jump cursor right command. + /// + [Browsable(false)] + [IgnoreDataMember] + public RelayCommand JumpRightCommand + { + get + { + if (this.jumpRightCommand == null) + { + this.jumpRightCommand = new RelayCommand( + () => this.MoveCursorBy(this.jumpTimeSpan, SnappingBehavior.Next), + () => VisualizationContext.Instance.IsDatasetLoaded() && this.VisualizationContainer.Navigator.CursorMode != CursorMode.Live); + } + + return this.jumpRightCommand; + } + } + + /// + /// Gets the jump cursor left command. + /// + [Browsable(false)] + [IgnoreDataMember] + public RelayCommand JumpLeftCommand + { + get + { + if (this.jumpLeftCommand == null) + { + this.jumpLeftCommand = new RelayCommand( + () => this.MoveCursorBy(-this.jumpTimeSpan, SnappingBehavior.Previous), + () => VisualizationContext.Instance.IsDatasetLoaded() && this.VisualizationContainer.Navigator.CursorMode != CursorMode.Live); + } + + return this.jumpLeftCommand; + } + } + /// /// Gets the open store command. /// @@ -654,7 +767,7 @@ namespace Microsoft.Psi.PsiStudio } /// - /// Gets the selected visualzation changed command. + /// Gets the selected visualization changed command. /// [Browsable(false)] [IgnoreDataMember] @@ -881,10 +994,13 @@ namespace Microsoft.Psi.PsiStudio /// public void OnClosing() { - // Put the current state of the timeing buttons into the settings object + // Put the current state of the timing buttons into the settings object this.AppSettings.ShowAbsoluteTiming = this.VisualizationContainer.Navigator.ShowAbsoluteTiming; this.AppSettings.ShowTimingRelativeToSessionStart = this.VisualizationContainer.Navigator.ShowTimingRelativeToSessionStart; this.AppSettings.ShowTimingRelativeToSelectionStart = this.VisualizationContainer.Navigator.ShowTimingRelativeToSelectionStart; + + // Save the settings + this.AppSettings.Save(); } /*/// @@ -937,6 +1053,21 @@ namespace Microsoft.Psi.PsiStudio } }*/ + private void MoveCursorBy(TimeSpan timeSpan, SnappingBehavior snappingBehavior) + { + var visContainer = this.VisualizationContainer; + var nav = visContainer.Navigator; + var time = nav.Cursor + timeSpan; + if (visContainer.SnapToVisualizationObject is IStreamVisualizationObject vo) + { + nav.MoveTo(vo.GetSnappedTime(time, snappingBehavior) ?? time); + } + else + { + nav.MoveTo(time); + } + } + private void OpenCurrentLayout() { // Attempt to open the current layout @@ -1010,7 +1141,7 @@ namespace Microsoft.Psi.PsiStudio Directory.CreateDirectory(this.LayoutsDirectory); } - // Find all the layout files and add them to the the list of available layouts + // Find all the layout files and add them to the list of available layouts FileInfo[] files = directoryInfo.GetFiles("*.plo"); foreach (FileInfo fileInfo in files) { @@ -1129,13 +1260,69 @@ namespace Microsoft.Psi.PsiStudio } } + private void VisualizationContext_PropertyChanging(object sender, PropertyChangingEventArgs e) + { + if (e.PropertyName == nameof(VisualizationContext.VisualizationContainer)) + { + // Unhook property changed events from old visualization container + if (VisualizationContext.Instance.VisualizationContainer != null) + { + VisualizationContext.Instance.VisualizationContainer.PropertyChanged -= this.VisualizationContainer_PropertyChanged; + } + + this.RaisePropertyChanging(nameof(this.VisualizationContainer)); + } + else if (e.PropertyName == nameof(VisualizationContext.DatasetViewModel)) + { + // Unhook property changed events from old dataset view model + if (VisualizationContext.Instance.DatasetViewModel != null) + { + VisualizationContext.Instance.DatasetViewModel.PropertyChanged -= this.DatasetViewModel_PropertyChanged; + } + + this.RaisePropertyChanged(nameof(this.TitleText)); + } + } + private void VisualizationContext_PropertyChanged(object sender, PropertyChangedEventArgs e) { if (e.PropertyName == nameof(VisualizationContext.VisualizationContainer)) { + // Hook property changed events to new visualization container + if (VisualizationContext.Instance.VisualizationContainer != null) + { + VisualizationContext.Instance.VisualizationContainer.PropertyChanged += this.VisualizationContainer_PropertyChanged; + } + this.RaisePropertyChanged(nameof(this.VisualizationContainer)); } - } + else if (e.PropertyName == nameof(VisualizationContext.DatasetViewModel)) + { + // Hook property changed events to new dataset view model + if (VisualizationContext.Instance.DatasetViewModel != null) + { + VisualizationContext.Instance.DatasetViewModel.PropertyChanged += this.DatasetViewModel_PropertyChanged; + } + + this.RaisePropertyChanged(nameof(this.TitleText)); + } + } + + private void DatasetViewModel_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(DatasetViewModel.Name)) + { + this.RaisePropertyChanged(nameof(this.TitleText)); + } + } + + private void VisualizationContainer_PropertyChanged(object sender, PropertyChangedEventArgs e) + { + if (e.PropertyName == nameof(VisualizationContext.Instance.VisualizationContainer.SnapToVisualizationObject)) + { + this.RaisePropertyChanged(nameof(this.TitleText)); + } + } /*/// /// Display the settings dialog. diff --git a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/Microsoft.Psi.PsiStudio.csproj b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/Microsoft.Psi.PsiStudio.csproj index 54edc714..77b9032c 100644 --- a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/Microsoft.Psi.PsiStudio.csproj +++ b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/Microsoft.Psi.PsiStudio.csproj @@ -62,9 +62,10 @@ - - - + + all + runtime; build; native; contentfiles; analyzers + all runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/PsiStudioSettings.cs b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/PsiStudioSettings.cs index da13f019..44e81211 100644 --- a/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/PsiStudioSettings.cs +++ b/Sources/Tools/PsiStudio/Microsoft.Psi.PsiStudio/PsiStudioSettings.cs @@ -7,8 +7,10 @@ namespace Microsoft.Psi.PsiStudio using System.Collections.Generic; using System.IO; using System.Reflection; + using System.Windows; using System.Xml; using System.Xml.Serialization; + using Microsoft.Psi.Visualization.Windows; /// /// Persisted application settings. @@ -38,23 +40,6 @@ namespace Microsoft.Psi.PsiStudio this.AdditionalAssemblies = null; } - /// - /// Finalizes an instance of the class. - /// - ~PsiStudioSettings() - { - if (string.IsNullOrWhiteSpace(this.settingsFilename)) - { - throw new InvalidOperationException("Coould not save the settings to file because PsiStudioSettings.Load() was not previously called to set the filepath."); - } - - using (var writer = XmlWriter.Create(this.settingsFilename, new XmlWriterSettings() { Indent = true })) - { - var xmlSerializer = new XmlSerializer(typeof(PsiStudioSettings)); - xmlSerializer.Serialize(writer, this); - } - } - /// /// Gets or sets the main window left position. /// @@ -152,6 +137,51 @@ namespace Microsoft.Psi.PsiStudio return settings; } + /// + /// Saves the settings to the settings file. + /// + public void Save() + { + if (string.IsNullOrWhiteSpace(this.settingsFilename)) + { + throw new InvalidOperationException("Could not save the settings to file because PsiStudioSettings.Load() was not previously called to set the filepath."); + } + + // To avoid obliterating the existing settings file if something goes wrong, write + // the settings to a temporary file and then copy the file over the existing settings + // file once we know we were successful. + string tempFilename = this.CreateTempFilename(); + + try + { + using (var writer = XmlWriter.Create(tempFilename, new XmlWriterSettings() { Indent = true })) + { + var xmlSerializer = new XmlSerializer(typeof(PsiStudioSettings)); + xmlSerializer.Serialize(writer, this); + } + + // Delete the existing settings file + File.Delete(this.settingsFilename); + + // Move the temp file to be the new settings file + File.Move(tempFilename, this.settingsFilename); + } + catch (Exception ex) + { + new MessageBoxWindow( + Application.Current.MainWindow, + "Save Settings Error", + $"An error occurred while attempting to save the application settings{Environment.NewLine}{Environment.NewLine}{ex.Message}", + "Close", + null).ShowDialog(); + } + } + + private string CreateTempFilename() + { + return this.settingsFilename.Substring(0, this.settingsFilename.IndexOf('.')) + ".tmp"; + } + /// /// Loads settings from the xml settings file. /// diff --git a/Sources/Tools/PsiStudio/Test.Psi.PsiStudio/Test.Psi.PsiStudio.csproj b/Sources/Tools/PsiStudio/Test.Psi.PsiStudio/Test.Psi.PsiStudio.csproj index bb43073b..ddb86012 100644 --- a/Sources/Tools/PsiStudio/Test.Psi.PsiStudio/Test.Psi.PsiStudio.csproj +++ b/Sources/Tools/PsiStudio/Test.Psi.PsiStudio/Test.Psi.PsiStudio.csproj @@ -4,8 +4,7 @@ Exe Test.Psi.PsiStudio.ConsoleMain - false - false + ../../../../Build/Test.Psi.ruleset true @@ -26,6 +25,16 @@ + + + all + runtime; build; native; contentfiles; analyzers + + + all + runtime; build; native; contentfiles; analyzers; buildtransitive + + diff --git a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/GraphViewer.cs b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/GraphViewer.cs index dfe53e0f..d63da5ce 100644 --- a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/GraphViewer.cs +++ b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/GraphViewer.cs @@ -39,7 +39,7 @@ namespace Microsoft.Msagl.WpfGraphControl /// /// Graph viewer. /// - public class GraphViewer : IViewer + public class GraphViewer : IViewer, IDisposable { private const double DesiredPathThicknessInInches = 0.008; @@ -513,6 +513,12 @@ namespace Microsoft.Msagl.WpfGraphControl return new Size(formattedText.Width, formattedText.Height); } + /// + public void Dispose() + { + this.backgroundWorker?.Dispose(); + } + /// /// Update graph being viewed in place (assuming structure hasn't changed, otherwise triggers full re-layout). /// diff --git a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/Microsoft.Msagl.WpfGraphControl.csproj b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/Microsoft.Msagl.WpfGraphControl.csproj index 80a3da1a..e48bcae7 100644 --- a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/Microsoft.Msagl.WpfGraphControl.csproj +++ b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/Microsoft.Msagl.WpfGraphControl.csproj @@ -21,6 +21,10 @@ + + all + runtime; build; native; contentfiles; analyzers + 1.1.3 diff --git a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/NativeMethods.cs b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/NativeMethods.cs index cea8dadd..2733c652 100644 --- a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/NativeMethods.cs +++ b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/NativeMethods.cs @@ -7,7 +7,7 @@ namespace Microsoft.Msagl.WpfGraphControl using System.Runtime.InteropServices; /// - /// Navive methods. + /// Native methods. /// internal static class NativeMethods { diff --git a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/VEdge.cs b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/VEdge.cs index 9819b298..6c4e35ae 100644 --- a/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/VEdge.cs +++ b/Sources/Visualization/Microsoft.Msagl.WpfGraphControl/VEdge.cs @@ -148,7 +148,7 @@ namespace Microsoft.Msagl.WpfGraphControl public IViewerNode Target { get; private set; } /// - /// Gets or sets the radious of the polyline corner. + /// Gets or sets the radius of the polyline corner. /// public double RadiusOfPolylineCorner { get; set; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/DepthImageToImageAdapter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/DepthImageToImageAdapter.cs new file mode 100644 index 00000000..8f49076a --- /dev/null +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/DepthImageToImageAdapter.cs @@ -0,0 +1,36 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Visualization.Adapters +{ + using Microsoft.Psi.Imaging; + using Microsoft.Psi.Visualization.Data; + + /// + /// Represents an adapter that converts a depth image to an image. + /// + [StreamAdapter] + public class DepthImageToImageAdapter : StreamAdapter, Shared> + { + /// + /// Initializes a new instance of the class. + /// + public DepthImageToImageAdapter() + : base(Adapter) + { + } + + private static Shared Adapter(Shared sharedDepthImage, Envelope envelope) + { + Shared sharedImage = null; + + if ((sharedDepthImage != null) && (sharedDepthImage.Resource != null)) + { + sharedImage = ImagePool.GetOrCreate(sharedDepthImage.Resource.Width, sharedDepthImage.Resource.Height, PixelFormat.Gray_16bpp); + sharedImage.Resource.CopyFrom(sharedDepthImage.Resource); + } + + return sharedImage; + } + } +} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToDepthImageAdapter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToDepthImageAdapter.cs new file mode 100644 index 00000000..2b62c3ee --- /dev/null +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToDepthImageAdapter.cs @@ -0,0 +1,37 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Visualization.Adapters +{ + using Microsoft.Psi.Imaging; + using Microsoft.Psi.Visualization.Data; + + /// + /// Represents an adapter that converts an encoded depth image to a depth image. + /// + [StreamAdapter] + public class EncodedDepthImageToDepthImageAdapter : StreamAdapter, Shared> + { + /// + /// Initializes a new instance of the class. + /// + public EncodedDepthImageToDepthImageAdapter() + : base(Adapter) + { + } + + private static Shared Adapter(Shared sharedEncodedDepthImage, Envelope envelope) + { + Shared sharedDepthImage = null; + + if ((sharedEncodedDepthImage != null) && (sharedEncodedDepthImage.Resource != null)) + { + sharedDepthImage = DepthImagePool.GetOrCreate(sharedEncodedDepthImage.Resource.Width, sharedEncodedDepthImage.Resource.Height); + var decoder = new DepthImageFromStreamDecoder(); + decoder.DecodeFromStream(sharedEncodedDepthImage.Resource.ToStream(), sharedDepthImage.Resource); + } + + return sharedDepthImage; + } + } +} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToImageAdapter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToImageAdapter.cs new file mode 100644 index 00000000..d99b0f7b --- /dev/null +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedDepthImageToImageAdapter.cs @@ -0,0 +1,39 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Visualization.Adapters +{ + using Microsoft.Psi.Imaging; + using Microsoft.Psi.Visualization.Data; + + /// + /// Represents an adapter that converts an encoded depth image to an image. + /// + [StreamAdapter] + public class EncodedDepthImageToImageAdapter : StreamAdapter, Shared> + { + /// + /// Initializes a new instance of the class. + /// + public EncodedDepthImageToImageAdapter() + : base(Adapter) + { + } + + private static Shared Adapter(Shared sharedEncodedDepthImage, Envelope envelope) + { + Shared sharedImage = null; + + if ((sharedEncodedDepthImage != null) && (sharedEncodedDepthImage.Resource != null)) + { + var sharedDepthImage = DepthImagePool.GetOrCreate(sharedEncodedDepthImage.Resource.Width, sharedEncodedDepthImage.Resource.Height); + sharedImage = ImagePool.GetOrCreate(sharedEncodedDepthImage.Resource.Width, sharedEncodedDepthImage.Resource.Height, PixelFormat.Gray_16bpp); + var decoder = new DepthImageFromStreamDecoder(); + decoder.DecodeFromStream(sharedEncodedDepthImage.Resource.ToStream(), sharedDepthImage.Resource); + sharedDepthImage.Resource.CopyTo(sharedImage.Resource); + } + + return sharedImage; + } + } +} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedImageToImageAdapter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedImageToImageAdapter.cs index 01dd676f..1b4eb399 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedImageToImageAdapter.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/EncodedImageToImageAdapter.cs @@ -3,6 +3,7 @@ namespace Microsoft.Psi.Visualization.Adapters { + using System; using Microsoft.Psi.Imaging; using Microsoft.Psi.Visualization.Data; @@ -20,14 +21,28 @@ namespace Microsoft.Psi.Visualization.Adapters { } - private static Shared Adapter(Shared encodedImage, Envelope env) + private static Shared Adapter(Shared sharedEncodedImage, Envelope envelope) { Shared sharedImage = null; - if ((encodedImage != null) && (encodedImage.Resource != null)) + if ((sharedEncodedImage != null) && (sharedEncodedImage.Resource != null)) { - sharedImage = ImagePool.GetOrCreate(encodedImage.Resource.Width, encodedImage.Resource.Height, ImageDecoder.GetPixelFormat(encodedImage.Resource)); - ImageDecoder.DecodeTo(encodedImage.Resource, sharedImage.Resource); + // The code below maintains back-compatibility with encoded images which did not store the pixel format + // on the instance, but only in the stream. If the pixel format is unknown, we call upon the decoder to + // retrieve the pixel format. This might be less performant, but enables decoding in the right format + // even from older versions of encoded images. + var decoder = new ImageFromStreamDecoder(); + var pixelFormat = sharedEncodedImage.Resource.PixelFormat == PixelFormat.Undefined ? + decoder.GetPixelFormat(sharedEncodedImage.Resource.ToStream()) : sharedEncodedImage.Resource.PixelFormat; + + // If the decoder does not return a valid pixel format, we throw an exception. + if (pixelFormat == PixelFormat.Undefined) + { + throw new ArgumentException("The encoded image does not contain a supported pixel format."); + } + + sharedImage = ImagePool.GetOrCreate(sharedEncodedImage.Resource.Width, sharedEncodedImage.Resource.Height, pixelFormat); + decoder.DecodeFromStream(sharedEncodedImage.Resource.ToStream(), sharedImage.Resource); } return sharedImage; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/ObjectAdapter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/ObjectAdapter.cs index 868fe612..7be05ffc 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/ObjectAdapter.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/ObjectAdapter.cs @@ -3,7 +3,6 @@ namespace Microsoft.Psi.Visualization.Adapters { - using System.Runtime.Serialization; using Microsoft.Psi.Visualization.Data; /// @@ -22,7 +21,9 @@ namespace Microsoft.Psi.Visualization.Adapters private static object Adapter(T value, Envelope env) { - return value; + // If the data is shared, clone it because the caller will + // dereference the source soon after this method returns. + return SourceIsSharedType ? value.DeepClone() : value; } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/PassthroughAdapter{T}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/PassthroughAdapter{T}.cs index 0f485d83..b77e814c 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/PassthroughAdapter{T}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Adapters/PassthroughAdapter{T}.cs @@ -3,7 +3,6 @@ namespace Microsoft.Psi.Visualization.Adapters { - using System; using Microsoft.Psi.Visualization.Data; /// @@ -22,12 +21,9 @@ namespace Microsoft.Psi.Visualization.Adapters private static T Adapter(T data, Envelope env) { - if (data is IDisposable disposableData) - { - return data.DeepClone(); - } - - return data; + // If the data is shared, clone it because the caller will + // dereference the source soon after this method returns. + return SourceIsSharedType ? data.DeepClone() : data; } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataCollection{T}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataCollection{T}.cs index 31118ab5..1a7ad786 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataCollection{T}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataCollection{T}.cs @@ -17,9 +17,9 @@ namespace Microsoft.Psi.Visualization.Collections private ObservableCollection observableSource; /// - /// Sets the obvervable source. + /// Sets the observable source. /// - /// Souce collection to observe. + /// Source collection to observe. public void SetSource(IList source) { if (this.observableSource != null) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataItem{T}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataItem{T}.cs index b3269c03..64260c68 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataItem{T}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableDataItem{T}.cs @@ -16,7 +16,7 @@ namespace Microsoft.Psi.Visualization.Collections /// /// Initializes a new instance of the class. /// - /// The initiali data value. + /// The initial data value. public ObservableDataItem(T data) { this.data = data; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableKeyedCache{TKey,TItem}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableKeyedCache{TKey,TItem}.cs index 96334397..52285e95 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableKeyedCache{TKey,TItem}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableKeyedCache{TKey,TItem}.cs @@ -38,7 +38,7 @@ namespace Microsoft.Psi.Visualization.Collections private readonly Func getKeyForItem; /// - /// Number of collection changed events recieved before pruning the cache. + /// Number of collection changed events received before pruning the cache. /// private uint pruneThreshold = ObservableSortedCollection.DefaultCapacity; @@ -48,7 +48,7 @@ namespace Microsoft.Psi.Visualization.Collections private bool needsPruning = false; /// - /// Number of collection changed events recieved, since last pruning of the cache. + /// Number of collection changed events received, since last pruning of the cache. /// private uint collectionChangedCount = 0; @@ -60,7 +60,7 @@ namespace Microsoft.Psi.Visualization.Collections /// /// Initializes a new instance of the class that uses the default comparers. /// - /// Funtion that returns a key given an item. + /// Function that returns a key given an item. /// is null. public ObservableKeyedCache(Func getKeyForItem) : this(null, null, getKeyForItem) @@ -403,7 +403,7 @@ namespace Microsoft.Psi.Visualization.Collections /// /// Occurs when an item is added, removed, changed, moved, or the entire list is refreshed. - /// This event does not fire range based events for compatability to wpf controls. It turns adds into resets. + /// This event does not fire range based events for compatibility to wpf controls. It turns adds into resets. /// public virtual event NotifyCollectionChangedEventHandler CollectionChanged; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableSortedCollection{T}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableSortedCollection{T}.cs index 4edcb12c..40607f1a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableSortedCollection{T}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Collections/ObservableSortedCollection{T}.cs @@ -28,7 +28,7 @@ namespace Microsoft.Psi.Visualization.Collections private const string IndexerName = "Item[]"; /// - /// Underlying sorted array of itmes. + /// Underlying sorted array of items. /// private SortedArray items; @@ -79,7 +79,7 @@ namespace Microsoft.Psi.Visualization.Collections /// /// Occurs when an item is added, removed, changed, moved, or the entire list is refreshed. - /// This event does not fire range based events for compatability to wpf controls. It turns adds into resets. + /// This event does not fire range based events for compatibility to wpf controls. It turns adds into resets. /// public virtual event NotifyCollectionChangedEventHandler CollectionChanged; @@ -127,7 +127,7 @@ namespace Microsoft.Psi.Visualization.Collections return this.items[index]; } - set { throw new NotSupportedException("ObservableSortedCollection does not support assignemt by index."); } + set { throw new NotSupportedException("ObservableSortedCollection does not support assignment by index."); } } /// diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/DisplayImage.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/DisplayImage.cs index 8f0012f6..bbb46ab4 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/DisplayImage.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/DisplayImage.cs @@ -62,6 +62,7 @@ namespace Microsoft.Psi.Visualization.Common lock (this.imageLock) { this.psiImage?.Dispose(); + if (image == null || image.Resource == null) { this.psiImage = null; @@ -74,6 +75,33 @@ namespace Microsoft.Psi.Visualization.Common this.UpdateBitmap(); } + /// + /// Update the underlying image with the specified image. + /// + /// New encoded image. + public void UpdateImage(Shared encodedImage) + { + lock (this.imageLock) + { + if (encodedImage == null || encodedImage.Resource == null) + { + this.psiImage?.Dispose(); + this.psiImage = null; + return; + } + + if (this.psiImage == null) + { + this.psiImage = Shared.Create(new Imaging.Image(encodedImage.Resource.Width, encodedImage.Resource.Height, Imaging.PixelFormat.BGR_24bpp)); + } + + var decoder = new ImageFromStreamDecoder(); + decoder.DecodeFromStream(encodedImage.Resource.ToStream(), this.psiImage.Resource); + } + + this.UpdateBitmap(); + } + /// /// Crop image to specified dimensions and return newly cropped image. Does not alter current image. /// @@ -84,7 +112,8 @@ namespace Microsoft.Psi.Visualization.Common /// The newly cropped image. public DisplayImage Crop(int left, int top, int width, int height) { - Shared croppedCopy = this.psiImage.Resource.Crop(left, top, width, height); + Shared croppedCopy = this.psiImage.SharedPool.GetOrCreate(); + this.psiImage.Resource.Crop(croppedCopy.Resource, left, top, width, height); var displayImage = new DisplayImage(); displayImage.UpdateImage(croppedCopy); return displayImage; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/SnappingBehavior.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/SnappingBehavior.cs new file mode 100644 index 00000000..eb8e857f --- /dev/null +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Common/SnappingBehavior.cs @@ -0,0 +1,26 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Visualization.Helpers +{ + /// + /// Defines various timeline snapping behaviors. + /// + public enum SnappingBehavior + { + /// + /// Snap to nearest message. + /// + Nearest, + + /// + /// Snap to nearest previous message. + /// + Previous, + + /// + /// Snap to nearest next message. + /// + Next, + } +} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/PlacementConverter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/PlacementConverter.cs index df0dc9cf..6f9dc73f 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/PlacementConverter.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/PlacementConverter.cs @@ -8,7 +8,7 @@ namespace Microsoft.Psi.Visualization.Converters using System.Windows.Data; /// - /// Provides a way to apply custom logic to a binding. Specifically, converting from numeric value to a scaled offest. + /// Provides a way to apply custom logic to a binding. Specifically, converting from numeric value to a scaled offset. /// public class PlacementConverter : IValueConverter { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/TimeSpanConverter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/TimeSpanConverter.cs index 4e611d97..2910018e 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/TimeSpanConverter.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Converters/TimeSpanConverter.cs @@ -24,7 +24,7 @@ namespace Microsoft.Psi.Visualization.Converters return timespan.ToString("hh\\:mm\\:ss\\.ffff"); } - return "Invaid TimeSpan"; + return "Invalid TimeSpan"; } /// diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/AdaptingInstantDataProvider{TSrc,TDest}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/AdaptingInstantDataProvider{TSrc,TDest}.cs index fb55deb6..94294555 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/AdaptingInstantDataProvider{TSrc,TDest}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/AdaptingInstantDataProvider{TSrc,TDest}.cs @@ -6,7 +6,6 @@ namespace Microsoft.Psi.Visualization.Data using System; using System.Collections.Generic; using System.Linq; - using System.Threading.Tasks; using Microsoft.Psi.Persistence; /// @@ -19,7 +18,7 @@ namespace Microsoft.Psi.Visualization.Data public class AdaptingInstantDataProvider : IAdaptingInstantDataProvider { /// - /// Flag indicating whether type paramamter TSrc is Shared{} or not. + /// Flag indicating whether type parameter TDest is Shared{} or not. /// private readonly bool adaptedDataIsSharedType = typeof(TDest).IsGenericType && typeof(TDest).GetGenericTypeDefinition() == typeof(Shared<>); @@ -84,39 +83,20 @@ namespace Microsoft.Psi.Visualization.Data /// public void PushData(TSrc sourceData, IndexEntry indexEntry) { - // Adapt the data to the type required by target. The data - // adapter will release the reference to the source data automatically. + // Adapt the data to the type required by target. TDest adaptedData = this.streamAdapter.AdaptData(sourceData); - // Create a non-volatile copy of the list of targets - List targetList; - lock (this.targets) + // Call each of the targets with the adapted data, cloning it if it's shared. + foreach (InstantDataTarget instantDataTarget in this.targets.Values.ToList()) { - targetList = this.targets.Values.ToList(); + instantDataTarget.Callback.Invoke(adaptedData, indexEntry); } - // Call each of the targets with the new data. If the adapted data is shared, - // then do a deep clone of each item before calling the callback and release the - // reference to the adapted data once we're done. - bool createClone = this.adaptedDataIsSharedType && adaptedData != null; - - foreach (InstantDataTarget callbackTarget in targetList) - { - this.RunPushTask(callbackTarget, createClone ? adaptedData.DeepClone() : adaptedData, indexEntry); - } - - if (createClone) + // We're done with the adapted data, so decrement its reference count if it's shared + if (this.adaptedDataIsSharedType && adaptedData != null) { (adaptedData as IDisposable).Dispose(); } } - - private void RunPushTask(InstantDataTarget target, TDest data, IndexEntry indexEntry) - { - Task.Run(() => - { - target.Callback.Invoke(data, indexEntry); - }); - } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataManager.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataManager.cs index b5250215..2ed9c271 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataManager.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataManager.cs @@ -9,10 +9,12 @@ namespace Microsoft.Psi.Visualization.Data using System.Linq; using System.Reflection; using System.Threading.Tasks; + using System.Windows; using System.Windows.Threading; using Microsoft.Psi.Persistence; using Microsoft.Psi.Visualization.Adapters; using Microsoft.Psi.Visualization.Collections; + using Microsoft.Psi.Visualization.Windows; /// /// Provides cached-controlled read access to data stores used by the visualization runtime. @@ -82,7 +84,7 @@ namespace Microsoft.Psi.Visualization.Data /// Information about the stream source and the required stream adapter. /// The epsilon window to use when reading data at a given time. /// The method to call when new data is available. - /// The initial time range over which data is expectd. + /// The initial time range over which data is expected. /// A registration token that must be used by the target to unregister from updates or to modify the read epsilon. public Guid RegisterInstantDataTarget(StreamBinding streamBinding, RelativeTimeInterval cursorEpsilon, Action callback, TimeInterval viewRange) { @@ -153,7 +155,7 @@ namespace Microsoft.Psi.Visualization.Data } /// - /// Notifies the data manager that the possible range of data that mey be read has changed. + /// Notifies the data manager that the possible range of data that may be read has changed. /// /// The new view range of the navigator. public void OnInstantViewRangeChanged(TimeInterval viewRange) @@ -165,10 +167,10 @@ namespace Microsoft.Psi.Visualization.Data } /// - /// Creates a view of the messages identified by the matching start and end times and asychronously fills it in. + /// Creates a view of the messages identified by the matching start and end times and asynchronously fills it in. /// /// The type of the message to read. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// Start time of messages to read. /// End time of messages to read. /// Observable view of data. @@ -184,10 +186,10 @@ namespace Microsoft.Psi.Visualization.Data } /// - /// Creates a view of the messages identified by the matching tail count and asychronously fills it in. + /// Creates a view of the messages identified by the matching tail count and asynchronously fills it in. /// /// The type of the message to read. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// Number of messages to included in tail. /// Observable view of data. public ObservableKeyedCache>.ObservableKeyedView ReadStream(StreamBinding streamBinding, uint tailCount) @@ -202,10 +204,10 @@ namespace Microsoft.Psi.Visualization.Data } /// - /// Creates a view of the messages identified by the matching tail range and asychronously fills it in. + /// Creates a view of the messages identified by the matching tail range and asynchronously fills it in. /// /// The type of the message to read. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// Function to determine range included in tail. /// Observable view of data. public ObservableKeyedCache>.ObservableKeyedView ReadStream(StreamBinding streamBinding, Func tailRange) @@ -223,7 +225,7 @@ namespace Microsoft.Psi.Visualization.Data /// Gets a view over the specified time range of the cached summary data. /// /// The summary data type. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// The start time of the view range. /// The end time of the view range. /// The time interval each summary value should cover. @@ -238,7 +240,7 @@ namespace Microsoft.Psi.Visualization.Data /// Gets a view over the specified time range of the cached summary data. /// /// The summary data type. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// The time interval each summary value should cover. /// Number of items to include in view. /// A view over the cached summary data that covers the specified time range. @@ -252,7 +254,7 @@ namespace Microsoft.Psi.Visualization.Data /// Gets a view over the specified time range of the cached summary data. /// /// The summary data type. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// The time interval each summary value should cover. /// Tail duration function. Computes the view range start time given an end time. Applies to live view mode only. /// A view over the cached summary data that covers the specified time range. @@ -262,6 +264,17 @@ namespace Microsoft.Psi.Visualization.Data return this.FindStreamSummaryManager(streamBinding).ReadSummary(streamBinding, viewMode, DateTime.MinValue, DateTime.MaxValue, interval, 0, tailRange); } + /// + /// Gets originating time of the message in a stream that's closest to a given time. + /// + /// The stream binding indicating which stream to read from. + /// The time for which to return the message with the closest originating time. + /// The originating time of the message closest to time. + public DateTime? GetOriginatingTimeOfNearestInstantMessage(StreamBinding streamBinding, DateTime time) + { + return this.FindDataStoreReader(streamBinding).GetOriginatingTimeOfNearestInstantMessage(streamBinding, time); + } + /// /// Runs a task to read instant data, and continues to run read tasks until there are no read requests left. /// @@ -281,7 +294,19 @@ namespace Microsoft.Psi.Visualization.Data // If there's a cursor time, initiate an instant read request on each data store reader, otherwise we're done. if (taskCursorTime.HasValue) { - Parallel.ForEach(this.GetDataStoreReaderList(), dataStoreReader => dataStoreReader.ReadInstantData(taskCursorTime.Value)); + try + { + Parallel.ForEach(this.GetDataStoreReaderList(), dataStoreReader => dataStoreReader.ReadInstantData(taskCursorTime.Value)); + } + catch (Exception ex) + { + new MessageBoxWindow( + Application.Current.MainWindow, + "Instant Data Push Error", + $"An error occurred while attempting to push instant data to the visualization objects{Environment.NewLine}{Environment.NewLine}{ex.Message}", + "Close", + null).ShowDialog(); + } } else { @@ -293,7 +318,7 @@ namespace Microsoft.Psi.Visualization.Data /// /// Disposes of an instance of the class. /// - /// Indicates wheter the method call comes from a Dispose method (its value is true) or from its destructor (its value is false). + /// Indicates whether the method call comes from a Dispose method (its value is true) or from its destructor (its value is false). private void Dispose(bool disposing) { if (this.disposed) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataStoreReader.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataStoreReader.cs index 8ff99718..3cf6b834 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataStoreReader.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/DataStoreReader.cs @@ -83,7 +83,7 @@ namespace Microsoft.Psi.Visualization.Data { // Get the stream reader. Note that we don't care about the stream reader's stream adapter // because with instant data we always read raw data and adapt the stream later. - IStreamReader streamReader = this.GetStreamReader(target.StreamName, null, true); + IStreamReader streamReader = this.GetOrCreateStreamReader(target.StreamName, null); // Register the target with the stream reader streamReader.RegisterInstantDataTarget(target, viewRange); @@ -115,7 +115,7 @@ namespace Microsoft.Psi.Visualization.Data } /// - /// Notifies the data store the the view range of instant data has changed. + /// Notifies the data store the view range of instant data has changed. /// /// The new view range of the navigator. internal void OnInstantViewRangeChanged(TimeInterval viewRange) @@ -155,7 +155,7 @@ namespace Microsoft.Psi.Visualization.Data /// TailRange - sliding dynamic range that includes the tail of the underlying data based on function. /// /// The type of the message to read. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// Mode the view will be created in. /// Start time of messages to read. /// End time of messages to read. @@ -170,7 +170,18 @@ namespace Microsoft.Psi.Visualization.Data uint tailCount, Func tailRange) { - return this.GetStreamReader(streamBinding.StreamName, streamBinding.StreamAdapter, true).ReadStream(viewMode, startTime, endTime, tailCount, tailRange); + return this.GetOrCreateStreamReader(streamBinding.StreamName, streamBinding.StreamAdapter).ReadStream(viewMode, startTime, endTime, tailCount, tailRange); + } + + /// + /// Gets originating time of the message in a stream that's closest to a given time. + /// + /// The stream binding indicating which stream to read from. + /// The time for which to return the message with the closest originating time. + /// The originating time of the message closest to time. + internal DateTime? GetOriginatingTimeOfNearestInstantMessage(StreamBinding streamBinding, DateTime time) + { + return this.GetExistingStreamReader(streamBinding.StreamName, null).GetOriginatingTimeOfNearestInstantMessage(time); } /// @@ -247,21 +258,25 @@ namespace Microsoft.Psi.Visualization.Data this.streamReaders.ForEach(sr => sr.DispatchData()); } - private IStreamReader GetStreamReader(string streamName, IStreamAdapter streamAdapter, bool createIfNecessary) + private IStreamReader GetExistingStreamReader(string streamName, IStreamAdapter streamAdapter) + { + IStreamReader streamReader = this.streamReaders.Find(sr => sr.StreamName == streamName && sr.StreamAdapterType == streamAdapter?.GetType()); + if (streamReader == null) + { + throw new ArgumentException("No stream reader exists for the stream."); + } + + return streamReader; + } + + private IStreamReader GetOrCreateStreamReader(string streamName, IStreamAdapter streamAdapter) { var streamReader = this.streamReaders.Find(sr => sr.StreamName == streamName && sr.StreamAdapterType == streamAdapter?.GetType()); if (streamReader == null) { - if (createIfNecessary) - { - streamReader = new StreamReader(streamName, streamAdapter); - this.streamReaders.Add(streamReader); - } - else - { - throw new ArgumentException("No stream reader exists for the stream binding."); - } + streamReader = new StreamReader(streamName, streamAdapter); + this.streamReaders.Add(streamReader); } return streamReader; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/EpsilonInstantStreamReader{T}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/EpsilonInstantStreamReader{T}.cs index 1969a39e..14172f17 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/EpsilonInstantStreamReader{T}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/EpsilonInstantStreamReader{T}.cs @@ -6,7 +6,6 @@ namespace Microsoft.Psi.Visualization.Data using System; using System.Collections.Generic; using System.Linq; - using System.Threading.Tasks; using Microsoft.Psi.Data; using Microsoft.Psi.Persistence; using Microsoft.Psi.Visualization.Collections; @@ -20,7 +19,7 @@ namespace Microsoft.Psi.Visualization.Data public class EpsilonInstantStreamReader { /// - /// Flag indicating whether type paramamter T is Shared{} or not. + /// Flag indicating whether type parameter T is Shared{} or not. /// private readonly bool isSharedType = typeof(T).IsGenericType && typeof(T).GetGenericTypeDefinition() == typeof(Shared<>); @@ -91,7 +90,7 @@ namespace Microsoft.Psi.Visualization.Data if (target != null) { - // If the data provider now has no targets to call, remove it from the collecction + // If the data provider now has no targets to call, remove it from the collection if (!this.dataProviders[index].HasRegisteredTargets) { this.dataProviders.RemoveAt(index); @@ -126,20 +125,17 @@ namespace Microsoft.Psi.Visualization.Data data = reader.Read(indexEntry); } - // Notify all registered adapting data providers of the new data. If the data is Shared then perform a deep clone - // (which resolves to an AddRef() for this type) for each provider we call. The providers are responsible for releasing - // their reference to the data once they're done with it. + // Notify each adapting data provider of the new data + foreach (IAdaptingInstantDataProvider adaptingInstantDataProvider in this.dataProviders.ToList()) + { + adaptingInstantDataProvider.PushData(data, indexEntry); + } + + // Release the reference to the local copy of the data if it's shared if (this.isSharedType && data != null) { - Parallel.ForEach(this.dataProviders.ToList(), provider => provider.PushData(data.DeepClone(), indexEntry)); - - // Release the reference to the local copy of the data (data as IDisposable).Dispose(); } - else - { - Parallel.ForEach(this.dataProviders.ToList(), provider => provider.PushData(data, indexEntry)); - } } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IAdaptingInstantDataProvider{TSrc}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IAdaptingInstantDataProvider{TSrc}.cs index ca198794..4f794e6a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IAdaptingInstantDataProvider{TSrc}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IAdaptingInstantDataProvider{TSrc}.cs @@ -31,7 +31,7 @@ namespace Microsoft.Psi.Visualization.Data void RegisterInstantDataTarget(InstantDataTarget target); /// - /// Unregisters an instant data target from receiving data fromt he provider. + /// Unregisters an instant data target from receiving data from he provider. /// /// The registration token that the target was given when it was initially registered. /// An instant data target representing the target that was unregistered, or null if no target with diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IStreamReader.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IStreamReader.cs index 9c02d7c2..c00ecca7 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IStreamReader.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/IStreamReader.cs @@ -89,9 +89,16 @@ namespace Microsoft.Psi.Visualization.Data /// Reads instant data from the stream at the given cursor time and notifies all registered instant visualization objects of the new data. /// /// The reader to read from. - /// The currenttime at the cursor.. + /// The current time at the cursor.. void ReadInstantData(ISimpleReader reader, DateTime cursorTime); + /// + /// Gets originating time of the message in a stream that's closest to a given time. + /// + /// The time for which to return the message with the closest originating time. + /// The originating time of the message closest to time. + public DateTime? GetOriginatingTimeOfNearestInstantMessage(DateTime time); + /// /// Notifies the data store reader that the range of data that may be of interest to instant data targets has changed. /// @@ -99,7 +106,7 @@ namespace Microsoft.Psi.Visualization.Data void OnInstantViewRangeChanged(TimeInterval viewRange); /// - /// Creates a view of the indices identified by the matching start and end times and asychronously fills it in. + /// Creates a view of the indices identified by the matching start and end times and asynchronously fills it in. /// /// Start time of indices to read. /// End time of indices to read. diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/PoolManager.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/PoolManager.cs index d4aa7b12..4adb022a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/PoolManager.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/PoolManager.cs @@ -24,7 +24,7 @@ namespace Microsoft.Psi.Visualization.Data this.sharedToPoolMap = new Dictionary> { { typeof(Shared), () => new Pool(() => new Image(0, 0, PixelFormat.Undefined)) }, - { typeof(Shared), () => new Pool(() => new EncodedImage()) }, + { typeof(Shared), () => new Pool(() => new EncodedImage(0, 0, PixelFormat.Undefined)) }, }; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamAdapter{TSrc,TDest}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamAdapter{TSrc,TDest}.cs index 5652b86c..3175906f 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamAdapter{TSrc,TDest}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamAdapter{TSrc,TDest}.cs @@ -15,10 +15,15 @@ namespace Microsoft.Psi.Visualization.Data public class StreamAdapter : IStreamAdapter { /// - /// Gets default stream adapater. + /// Gets default stream adapter. /// public static readonly IStreamAdapter Default = new StreamAdapter((src, env) => src); + /// + /// Flag indicating whether type parameter TSrc is Shared{} or not. + /// + public static readonly bool SourceIsSharedType = typeof(TSrc).IsGenericType && typeof(TSrc).GetGenericTypeDefinition() == typeof(Shared<>); + private readonly Func adapter; /// @@ -67,13 +72,7 @@ namespace Microsoft.Psi.Visualization.Data /// Destination data. public TDest AdaptData(TSrc data) { - var dest = this.adapter(data, default(Envelope)); - if (data is IDisposable) - { - (data as IDisposable).Dispose(); - } - - return dest; + return this.adapter(data, default(Envelope)); } /// @@ -86,7 +85,9 @@ namespace Microsoft.Psi.Visualization.Data return (data, env) => { var dest = this.adapter(data, env); - if (data is IDisposable) + + // Release the reference to the source data if it's shared. + if (SourceIsSharedType && data != null) { (data as IDisposable).Dispose(); } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamBinding.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamBinding.cs index 9b2e2a22..dd5f9661 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamBinding.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamBinding.cs @@ -29,7 +29,7 @@ namespace Microsoft.Psi.Visualization.Data /// The simple reader type for the underlying store. /// The type of the stream adapter, null if there is none. /// The type of the stream summarizer, null if there is none. - /// The arguments used when constructing the stream summarizer, null if ther is none. + /// The arguments used when constructing the stream summarizer, null if there is none. public StreamBinding( string streamName, string partitionName, @@ -91,7 +91,7 @@ namespace Microsoft.Psi.Visualization.Data public IStreamMetadata StreamMetadata { get; private set; } /// - /// Gets stream adapater. + /// Gets stream adapter. /// [IgnoreDataMember] public IStreamAdapter StreamAdapter @@ -141,7 +141,9 @@ namespace Microsoft.Psi.Visualization.Data // update value and update type name this.streamAdapterType = value; - this.StreamAdapterTypeName = this.streamAdapterType?.FullName; + + // use assembly-qualified name as stream adapter may be in a different assembly + this.StreamAdapterTypeName = this.streamAdapterType?.AssemblyQualifiedName; } } @@ -215,7 +217,7 @@ namespace Microsoft.Psi.Visualization.Data public object[] SummarizerArgs { get; set; } /// - /// Gets summaraizer type. + /// Gets summarizer type. /// [IgnoreDataMember] public Type SummarizerType @@ -234,7 +236,9 @@ namespace Microsoft.Psi.Visualization.Data { // update value and update type name this.summarizerType = value; - this.SummarizerTypeName = this.summarizerType?.FullName; + + // use assembly-qualified name as simple reader may be in a different assembly + this.SummarizerTypeName = this.summarizerType?.AssemblyQualifiedName; } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamReader{T}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamReader{T}.cs index 9f5fdd55..20df5a3e 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamReader{T}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamReader{T}.cs @@ -13,6 +13,7 @@ namespace Microsoft.Psi.Visualization.Data using Microsoft.Psi.Data; using Microsoft.Psi.Persistence; using Microsoft.Psi.Visualization.Collections; + using Microsoft.Psi.Visualization.Helpers; using Microsoft.Psi.Visualization.Navigation; /// @@ -137,7 +138,7 @@ namespace Microsoft.Psi.Visualization.Data { this.InternalRegisterInstantDataTarget(target); - // Create the index view if one does not already exist + // Create the instant index view if one does not already exist if (this.instantIndexView == null) { this.OnInstantViewRangeChanged(viewRange); @@ -148,6 +149,14 @@ namespace Microsoft.Psi.Visualization.Data public void UnregisterInstantDataTarget(Guid registrationToken) { this.InternalUnregisterInstantDataTarget(registrationToken); + + // If no instant visualization objects are now using + // this stream reader, remove the instant index view + if (this.instantStreamReaders.Count <= 0) + { + this.instantIndexView = null; + this.currentIndexViewRange = new NavigatorRange(DateTime.MinValue, DateTime.MinValue); + } } /// @@ -158,7 +167,7 @@ namespace Microsoft.Psi.Visualization.Data if (target != null) { - // Update the Ccursor epsilon + // Update the Cursor epsilon target.CursorEpsilon = epsilon; // Create the internal register method @@ -197,6 +206,18 @@ namespace Microsoft.Psi.Visualization.Data } } + /// + public DateTime? GetOriginatingTimeOfNearestInstantMessage(DateTime time) + { + int index = IndexHelper.GetIndexForTime(time, this.instantIndexView.Count, (idx) => this.instantIndexView[idx].OriginatingTime, SnappingBehavior.Nearest); + if (index >= 0) + { + return this.instantIndexView[index].OriginatingTime; + } + + return null; + } + /// public void Cancel() { @@ -397,7 +418,7 @@ namespace Microsoft.Psi.Visualization.Data // compute read requests for first new range newReadRequests.AddRange(this.ComputeReadRequests(startTime, range.Item1, readIndicesOnly)); - // continue comptuing for second new range + // continue computing for second new range startTime = range.Item2; } } @@ -431,12 +452,6 @@ namespace Microsoft.Psi.Visualization.Data this.instantStreamReaders.RemoveAt(index); } - // If there's no instant stream readers, remove the index view - if (this.instantStreamReaders.Count <= 0) - { - this.instantIndexView = null; - } - return target; } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummaryManager.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummaryManager.cs index 1930e1b9..cfb3ef78 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummaryManager.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummaryManager.cs @@ -49,7 +49,7 @@ namespace Microsoft.Psi.Visualization.Data public string StreamName { get; private set; } /// - /// Gets the stream adapater type. + /// Gets the stream adapter type. /// public Type StreamAdapterType { get; private set; } @@ -70,7 +70,7 @@ namespace Microsoft.Psi.Visualization.Data /// Finds the time of the next data point after the point indicated by the given time. /// /// The summary data type. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// Time of current data point. /// The time interval each summary value covers. /// Time of the next data point. @@ -100,7 +100,7 @@ namespace Microsoft.Psi.Visualization.Data /// Finds the time of the previous data point before the point indicated by the given time. /// /// The summary data type. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// Time of current data point. /// The time interval each summary value covers. /// Time of the previous data point. @@ -130,7 +130,7 @@ namespace Microsoft.Psi.Visualization.Data /// Gets a view over the specified time range of the cached summary data. /// /// The summary data type. - /// The stream binding inidicating which stream to read from. + /// The stream binding indicating which stream to read from. /// The view mode, which may be either fixed or live data. /// The start time of the view range. /// The end time of the view range. diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummary{TSrc,TDest}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummary{TSrc,TDest}.cs index 8c722d13..e51048f1 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummary{TSrc,TDest}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Data/StreamSummary{TSrc,TDest}.cs @@ -69,7 +69,7 @@ namespace Microsoft.Psi.Visualization.Data public Type SummarizerType => this.streamBinding.SummarizerType; /// - /// Gets ths stream binding. + /// Gets the stream binding. /// public StreamBinding StreamBinding => this.streamBinding; @@ -296,7 +296,7 @@ namespace Microsoft.Psi.Visualization.Data // compute read requests for first new range newRangeRequests.AddRange(this.ComputeRangeRequests(startTime, range.Item1)); - // continue comptuing for second new range + // continue computing for second new range startTime = range.Item2; } } @@ -334,7 +334,7 @@ namespace Microsoft.Psi.Visualization.Data /// Returns a view over the summary data and ensure that the view is preserved in the cache. /// /// The view mode. - /// Start stime of the view. + /// Start time of the view. /// End time of the view. /// Number of items to include in view. /// Tail duration function. @@ -419,7 +419,7 @@ namespace Microsoft.Psi.Visualization.Data int headMerge = this.summaryDataBuffer.FindIndex(list => this.itemComparer.Compare(list[list.Count - 1], items[0]) == 0); if (headMerge != -1) { - // Merge the tail of the predecesor with the head of the range being added + // Merge the tail of the predecessor with the head of the range being added var predecessor = this.summaryDataBuffer[headMerge]; // Use summarizer-specific method to combine the two IntervalData values diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/DataTypes/TimeIntervalHistory.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/DataTypes/TimeIntervalHistory.cs index 67a5892d..e16c02d0 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/DataTypes/TimeIntervalHistory.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/DataTypes/TimeIntervalHistory.cs @@ -3,12 +3,27 @@ namespace Microsoft.Psi.Visualization.DataTypes { + using System; using System.Collections.Generic; + using System.Runtime.Serialization; /// /// Represents an indexed history of time intervals. /// + [Serializable] public class TimeIntervalHistory : Dictionary> { + /// + /// Initializes a new instance of the class with serialized data. + /// + /// + /// This is the serialization constructor. Satisfies rule CA2229: ImplementSerializationConstructors. + /// + /// The serialization info. + /// The streaming context. + protected TimeIntervalHistory(SerializationInfo serializationInfo, StreamingContext streamingContext) + : base(serializationInfo, streamingContext) + { + } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Extensions/VisualizationExtensions.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Extensions/VisualizationExtensions.cs index 0f9a813f..26f7580a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Extensions/VisualizationExtensions.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Extensions/VisualizationExtensions.cs @@ -29,11 +29,11 @@ namespace Microsoft.Psi.Visualization.Extensions } /// - /// Converts stream of dictionarys of TKey and TValue to a stream of collections of TValue. + /// Converts stream of dictionaries of TKey and TValue to a stream of collections of TValue. /// /// The type of dictionary keys. /// The type of dictionary values. - /// The stream of dictionarys of TKey and TValue. + /// The stream of dictionaries of TKey and TValue. /// An optional delivery policy. /// A stream of the converted collections of TValue. public static IProducer.ValueCollection> Values(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) @@ -42,10 +42,10 @@ namespace Microsoft.Psi.Visualization.Extensions } /// - /// Converts stream of dictionarys of 2d points to a stream of list of named points. + /// Converts stream of dictionaries of 2d points to a stream of list of named points. /// /// The type of dictionary keys. - /// The stream of dictionarys of 2d points. + /// The stream of dictionaries of 2d points. /// An optional delivery policy. /// A stream of the converted list of named points. public static IProducer>> ToScatterPoints2D(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) @@ -54,10 +54,10 @@ namespace Microsoft.Psi.Visualization.Extensions } /// - /// Converts stream of dictionarys of rectangles to a stream of list of named rectangles. + /// Converts stream of dictionaries of rectangles to a stream of list of named rectangles. /// /// The type of dictionary keys. - /// The stream of dictionarys of rectangles. + /// The stream of dictionaries of rectangles. /// An optional delivery policy. /// A stream of the converted list of named rectangles. public static IProducer>> ToScatterRectangle(this IProducer> source, DeliveryPolicy> deliveryPolicy = null) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Helpers/IndexHelper.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Helpers/IndexHelper.cs index eea09f8c..40b87f21 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Helpers/IndexHelper.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Helpers/IndexHelper.cs @@ -4,7 +4,6 @@ namespace Microsoft.Psi.Visualization.Helpers { using System; - using Microsoft.Psi.Visualization.Common; /// /// Represents helper methods for psi indices. @@ -18,53 +17,39 @@ namespace Microsoft.Psi.Visualization.Helpers /// The time to find the index for. /// The number of items in the index collection. /// A function that returns the time for a given index id. + /// Timeline snapping behaviors. /// The index id closest to the specified time, using the specified interpolation style. - public static int GetIndexForTime(DateTime currentTime, int count, Func timeAtIndex) + public static int GetIndexForTime(DateTime currentTime, int count, Func timeAtIndex, SnappingBehavior snappingBehavior = SnappingBehavior.Nearest) { - return GetIndexForTime(currentTime, count, timeAtIndex, InterpolationStyle.Direct); - } - - /// - /// Gets the index id corresponding to a specified time for - /// a collection of indices that are ordered by time. - /// - /// The time to find the index for. - /// The number of items in the index collection. - /// A function that returns the time for a given index id. - /// The type of interpolation (Direct or Step) to use when resolving indices that don't exactly lie at the specified time. - /// The index id closest to the specified time, using the specified interpolation style. - public static int GetIndexForTime(DateTime currentTime, int count, Func timeAtIndex, InterpolationStyle interpolationStyle) - { - // Perform a binary search - SearchResult result = SearchIndex(currentTime, count, timeAtIndex); - if (result.ExactMatchFound) - { - return result.ExactIndex; - } - - // If no exact match, lo and hi indicate ticks that - // are right before and right after the time we're looking for. - // If we're using Step interpolation, then we should return - // lo, otherwise we should return whichever value is closest - if (interpolationStyle == InterpolationStyle.Step) - { - return result.LowIndex; - } - - // If the're only one point in the index, then return its index + // If there's only one point in the index, then return its index if (count == 1) { return 0; } - // Return the index of whichever point is closest to the current time - if ((timeAtIndex(result.HighIndex) - currentTime) < (currentTime - timeAtIndex(result.LowIndex))) + // Perform a binary search + // If no exact match, lo and hi indicate ticks that + // are right before and right after the time we're looking for. + SearchResult result = SearchIndex(currentTime, count, timeAtIndex); + + if (result.ExactMatchFound) { - return result.HighIndex; + return result.ExactIndex; } - else - { - return result.LowIndex; + + switch (snappingBehavior) + { + case SnappingBehavior.Previous: + return result.LowIndex; + case SnappingBehavior.Next: + return result.HighIndex; + case SnappingBehavior.Nearest: + default: + // Return the index of whichever point is closest to the current time + return + (timeAtIndex(result.HighIndex) - currentTime) < (currentTime - timeAtIndex(result.LowIndex)) ? + result.HighIndex : + result.LowIndex; } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Microsoft.Psi.Visualization.Common.Windows.csproj b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Microsoft.Psi.Visualization.Common.Windows.csproj index dc53791d..1b94b1d8 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Microsoft.Psi.Visualization.Common.Windows.csproj +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Microsoft.Psi.Visualization.Common.Windows.csproj @@ -11,7 +11,7 @@ true true - TRACE;RELEASE;NET47;COM_SERVER + TRACE;RELEASE;NET47 bin\Debug\net472\Microsoft.Psi.Visualization.Common.Windows.xml @@ -19,7 +19,7 @@ true true - TRACE;DEBUG;NET47;COM_SERVER + TRACE;DEBUG;NET47 @@ -221,12 +221,17 @@ - + + + all + runtime; build; native; contentfiles; analyzers + - - + + + @@ -235,7 +240,6 @@ - @@ -247,7 +251,7 @@ - + diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/CursorModeChangedEventArgs.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/CursorModeChangedEventArgs.cs index c086c3c8..0f2b5334 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/CursorModeChangedEventArgs.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/CursorModeChangedEventArgs.cs @@ -9,7 +9,7 @@ namespace Microsoft.Psi.Visualization.Navigation /// Represents the method that will handle an event that has cursor mode changed event data. /// /// The source of the event. - /// An object that contains cursot mode changed event data. + /// An object that contains cursor mode changed event data. public delegate void CursorModeChangedHandler(object sender, CursorModeChangedEventArgs e); /// diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/Navigator.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/Navigator.cs index 16f99e23..f612f507 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/Navigator.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Navigation/Navigator.cs @@ -317,16 +317,33 @@ namespace Microsoft.Psi.Visualization.Navigation } } + /// + /// Moves the cursor to the given datetime. + /// + /// Time to which to move cursor. + public void MoveTo(DateTime dateTime) + { + if (this.CursorMode != CursorMode.Live) + { + this.Cursor = dateTime; + this.EnsureCursorVisible(); + } + } + /// /// Moves the cursor to the start of the selection. /// public void MoveToSelectionStart() { - if (this.CursorMode != CursorMode.Live) - { - this.Cursor = this.SelectionRange.StartTime; - this.EnsureCursorVisible(); - } + this.MoveTo(this.SelectionRange.StartTime); + } + + /// + /// Moves the cursor to the end of the selection. + /// + public void MoveToSelectionEnd() + { + this.MoveTo(this.SelectionRange.EndTime); } /// @@ -351,18 +368,6 @@ namespace Microsoft.Psi.Visualization.Navigation this.RaisePropertyChanged(nameof(this.AudioPlaybackStreams)); } - /// - /// Moves the cursor to the end of the selection. - /// - public void MoveToSelectionEnd() - { - if (this.CursorMode != CursorMode.Live) - { - this.Cursor = this.SelectionRange.EndTime; - this.EnsureCursorVisible(); - } - } - /// /// Sets the cursor mode. /// @@ -526,7 +531,7 @@ namespace Microsoft.Psi.Visualization.Navigation } /// - /// Animates the navigator curor based on indicated speed. + /// Animates the navigator cursor based on indicated speed. /// private void StartPlayback() { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/DatasetViewModel.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/DatasetViewModel.cs index 70302dc6..0f2110ea 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/DatasetViewModel.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/DatasetViewModel.cs @@ -211,7 +211,7 @@ namespace Microsoft.Psi.Visualization.ViewModels } /// - /// Creates a new dataset from an exising data store. + /// Creates a new dataset from an existing data store. /// /// The name of the data store. /// The path of the data store. @@ -223,7 +223,7 @@ namespace Microsoft.Psi.Visualization.ViewModels } /// - /// Asynchronously creates a new dataset from an exising data store. + /// Asynchronously creates a new dataset from an existing data store. /// /// The name of the data store. /// The path of the data store. @@ -240,7 +240,7 @@ namespace Microsoft.Psi.Visualization.ViewModels } /// - /// Sets a session to be the currrent session being visualized. + /// Sets a session to be the current session being visualized. /// /// The SessionViewModel to visualize. public void VisualizeSession(SessionViewModel sessionViewModel) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PartitionViewModel.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PartitionViewModel.cs index 15c4ef6c..e5433162 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PartitionViewModel.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PartitionViewModel.cs @@ -135,7 +135,7 @@ namespace Microsoft.Psi.Visualization.ViewModels public string LastMessageOriginatingTimeString => DateTimeFormatHelper.FormatDateTime(this.LastMessageOriginatingTime); /// - /// Gets the orginating time interval (earliest to latest) of the messages in this session. + /// Gets the originating time interval (earliest to latest) of the messages in this session. /// [Browsable(false)] public TimeInterval OriginatingTimeInterval => this.streamTreeRoot.OriginatingTimeInterval; @@ -312,10 +312,10 @@ namespace Microsoft.Psi.Visualization.ViewModels try { - // Keep waiting on messages until the partition exits live mode or we're signalled to stop + // Keep waiting on messages until the partition exits live mode or we're signaled to stop while (this.continueMonitoring && this.IsLivePartition && Application.Current != null) { - // If there's a new message, squirrel it away as the lastest recent message, otherwise sleep + // If there's a new message, squirrel it away as the latest recent message, otherwise sleep if (storeReader.MoveNext(out Envelope envelope)) { if ((!latestLiveMessageReceived.HasValue) || (envelope.Time > latestLiveMessageReceived.Value.Time)) @@ -380,7 +380,7 @@ namespace Microsoft.Psi.Visualization.ViewModels // If we don't already have a node for this stream, add one if (!this.streamsById.ContainsKey(psiStreamMetadata.Id)) { - IStreamMetadata streamMetadata = new PsiLiveStreamMetadata(psiStreamMetadata.Name, psiStreamMetadata.Id, psiStreamMetadata.TypeName, this.StoreName, this.StorePath); + IStreamMetadata streamMetadata = new PsiLiveStreamMetadata(psiStreamMetadata.Name, psiStreamMetadata.Id, psiStreamMetadata.TypeName, psiStreamMetadata.SupplementalMetadataTypeName, this.StoreName, this.StorePath); this.streamsById[streamMetadata.Id] = this.StreamTreeRoot.AddPath(streamMetadata); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PsiLiveStreamMetadata.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PsiLiveStreamMetadata.cs index 9bb16972..1c417681 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PsiLiveStreamMetadata.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/PsiLiveStreamMetadata.cs @@ -16,13 +16,15 @@ namespace Microsoft.Psi.Visualization.ViewModels /// The name of the application that generated the persisted files, or the root name of the files. /// The id of the data stream. /// The type of data of this stream. + /// The type of supplemental metadata for this stream. /// The name of th partition. /// The path of the partition. - public PsiLiveStreamMetadata(string name, int id, string typeName, string partitionName, string partitionPath) + public PsiLiveStreamMetadata(string name, int id, string typeName, string supplementalMetadataTypeName, string partitionName, string partitionPath) { this.Name = name; this.Id = id; this.TypeName = typeName; + this.SupplementalMetadataTypeName = supplementalMetadataTypeName; this.PartitionName = partitionName; this.PartitionPath = partitionPath; this.FirstMessageTime = DateTime.MinValue; @@ -40,6 +42,9 @@ namespace Microsoft.Psi.Visualization.ViewModels /// public string TypeName { get; private set; } + /// + public string SupplementalMetadataTypeName { get; private set; } + /// public string PartitionName { get; private set; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/SessionViewModel.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/SessionViewModel.cs index 460c3c9d..0167d8bd 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/SessionViewModel.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/SessionViewModel.cs @@ -113,7 +113,7 @@ namespace Microsoft.Psi.Visualization.ViewModels public double UiElementOpacity => this.DatasetViewModel.CurrentSessionViewModel == this ? 1.0d : 0.5d; /// - /// Gets the orginating time interval (earliest to latest) of the messages in this session. + /// Gets the originating time interval (earliest to latest) of the messages in this session. /// [Browsable(false)] public TimeInterval OriginatingTimeInterval => @@ -183,7 +183,7 @@ namespace Microsoft.Psi.Visualization.ViewModels } else { - throw new ApplicationException("Invalid file type selected when adding partition."); + throw new NotSupportedException("Invalid file type selected when adding partition."); } } }); @@ -267,7 +267,7 @@ namespace Microsoft.Psi.Visualization.ViewModels /// /// The name of the annotation store. /// The path of the annotation store. - /// The annotated event definition to use when creating new annoted events in the newly created annotation partition. + /// The annotated event definition to use when creating new annotated events in the newly created annotation partition. /// The partition name. Default is null. public void CreateAnnotationPartition(string storeName, string storePath, AnnotatedEventDefinition definition, string partitionName = null) { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/StreamTreeNode.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/StreamTreeNode.cs index 4925db86..d569f4f7 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/StreamTreeNode.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/ViewModels/StreamTreeNode.cs @@ -14,7 +14,6 @@ namespace Microsoft.Psi.Visualization.ViewModels using GalaSoft.MvvmLight.CommandWpf; using Microsoft.Psi.Audio; using Microsoft.Psi.Diagnostics; - using Microsoft.Psi.PsiStudio.Common; using Microsoft.Psi.Visualization.Base; using Microsoft.Psi.Visualization.Common; using Microsoft.Psi.Visualization.Helpers; @@ -136,6 +135,14 @@ namespace Microsoft.Psi.Visualization.ViewModels [Description("The type of messages in the stream.")] public string TypeName { get; protected set; } + /// + /// Gets or sets the type of supplemental metadata for this stream tree node. + /// + [PropertyOrder(11)] + [DisplayName("SupplementalMetadataType")] + [Description("The type of supplemental metadata for the stream.")] + public string SupplementalMetadataTypeName { get; protected set; } + /// /// Gets the collection of children for the this stream tree node. /// @@ -254,7 +261,7 @@ namespace Microsoft.Psi.Visualization.ViewModels { if (this.IsStream) { - if (VisualizationContext.Instance.GetStreamType(this)?.Name == nameof(PipelineDiagnostics)) + if (VisualizationContext.Instance.GetDataType(this)?.Name == nameof(PipelineDiagnostics)) { return this.Partition.IsLivePartition ? IconSourcePath.DiagnosticsLive : IconSourcePath.Diagnostics; } @@ -262,7 +269,7 @@ namespace Microsoft.Psi.Visualization.ViewModels { return this.Partition.IsLivePartition ? IconSourcePath.StreamGroupLive : IconSourcePath.StreamGroup; } - else if (VisualizationContext.Instance.GetStreamType(this) == typeof(AudioBuffer)) + else if (VisualizationContext.Instance.GetDataType(this) == typeof(AudioBuffer)) { return this.Partition.IsLivePartition ? IconSourcePath.StreamAudioMutedLive : IconSourcePath.StreamAudioMuted; } @@ -279,7 +286,7 @@ namespace Microsoft.Psi.Visualization.ViewModels } /// - /// Gets the orginating time interval (earliest to latest) of the messages in this session. + /// Gets the originating time interval (earliest to latest) of the messages in this session. /// [Browsable(false)] public TimeInterval OriginatingTimeInterval @@ -381,13 +388,14 @@ namespace Microsoft.Psi.Visualization.ViewModels this.InternalChildren.Add(child); } - // if we are at the last segement of the path name then we are at the leaf node + // if we are at the last segment of the path name then we are at the leaf node if (path.Length == depth) { Debug.Assert(child.StreamMetadata == null, "There should never be two leaf nodes"); child.StreamMetadata = streamMetadata; - child.TypeName = streamMetadata.TypeName; child.StreamName = streamMetadata.Name; + child.TypeName = streamMetadata.TypeName; + child.SupplementalMetadataTypeName = streamMetadata.SupplementalMetadataTypeName; return child; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationContainerView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationContainerView.xaml.cs index ff7513b4..1ac5236e 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationContainerView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationContainerView.xaml.cs @@ -37,7 +37,7 @@ namespace Microsoft.Psi.Visualization.Views } /// - /// Gets ths visualization panel. + /// Gets the visualization panel. /// protected InstantVisualizationContainer VisualizationPanel => (InstantVisualizationContainer)this.DataContext; @@ -70,9 +70,12 @@ namespace Microsoft.Psi.Visualization.Views private void ResizeChildVisualizationPanels() { InstantVisualizationContainer containerPanel = this.DataContext as InstantVisualizationContainer; - foreach (VisualizationPanel panel in containerPanel.Panels) + if (containerPanel != null) { - panel.Width = this.ActualWidth / containerPanel.Panels.Count; + foreach (VisualizationPanel panel in containerPanel.Panels) + { + panel.Width = this.ActualWidth / containerPanel.Panels.Count; + } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationPlaceholderPanelView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationPlaceholderPanelView.xaml.cs index ba89a132..ac29b3ac 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationPlaceholderPanelView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/InstantVisualizationPlaceholderPanelView.xaml.cs @@ -19,7 +19,7 @@ namespace Microsoft.Psi.Visualization.Views } /// - /// Gets ths visualization panel. + /// Gets the visualization panel. /// protected InstantVisualizationPlaceholderPanel VisualizationPanel => (InstantVisualizationPlaceholderPanel)this.DataContext; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineSegmentView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineSegmentView.xaml.cs index e92f38ca..7ca41a90 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineSegmentView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineSegmentView.xaml.cs @@ -30,7 +30,7 @@ namespace Microsoft.Psi.Visualization.Views /// /// Tick alignment. /// Number of divisions. - /// Timeline segment lable. + /// Timeline segment label. public TimelineSegmentView(VerticalAlignment tickAlignment, int numDivisions, string label) { this.InitializeComponent(); diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineView.xaml.cs index 1e259642..ca2a4018 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/TimelineView.xaml.cs @@ -231,7 +231,7 @@ namespace Microsoft.Psi.Visualization.Views long segmentStart = (range.StartTime.Ticks - this.Navigator.DataRange.StartTime.Ticks) / tickZoomLevelDescriptorMajor.DurationInTicks; long segmentEnd = (range.EndTime.Ticks - this.Navigator.DataRange.StartTime.Ticks) / tickZoomLevelDescriptorMajor.DurationInTicks; - // remove all unnessary segments (due to scrolling out of view) + // remove all unnecessary segments (due to scrolling out of view) // segment start + duration < visible start time... no part of segment is visible // or segment start > visible range var segmentsToRemove = this.segments.Keys.Where(key => key.Item1 + key.Item2 < range.StartTime || key.Item1 > range.EndTime).ToList(); @@ -265,7 +265,7 @@ namespace Microsoft.Psi.Visualization.Views this.UpdateSelectionMarkers(); if (e.NewStartTime != e.OriginalStartTime) { - // our times are all expressed in ellapsed timne from DataRange.Start so we need to reset any timeline when this changes + // our times are all expressed in elapsed time from DataRange.Start so we need to reset any timeline when this changes this.Clear(); this.ComputeTicks(); } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/VisualizationContainerView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/VisualizationContainerView.xaml.cs index 1ece6d56..d6b526a1 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/VisualizationContainerView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/VisualizationContainerView.xaml.cs @@ -6,15 +6,12 @@ namespace Microsoft.Psi.Visualization.Views using System; using System.Collections.Generic; using System.Linq; - using System.Reflection; using System.Windows; using System.Windows.Controls; using System.Windows.Documents; using System.Windows.Input; using System.Windows.Media; using System.Windows.Media.Imaging; - using Microsoft.Psi.PsiStudio; - using Microsoft.Psi.PsiStudio.Common; using Microsoft.Psi.Visualization.Common; using Microsoft.Psi.Visualization.ViewModels; using Microsoft.Psi.Visualization.VisualizationObjects; @@ -72,8 +69,9 @@ namespace Microsoft.Psi.Visualization.Views else if (dragOperation == DragDropOperation.DragDropStream) { StreamTreeNode streamTreeNode = e.Data.GetData(DragDropDataName.StreamTreeNode) as StreamTreeNode; + Type streamType = VisualizationContext.Instance.GetDataType(streamTreeNode); Point mousePosition = e.GetPosition(this.Items); - List metadatas = this.GetStreamDropCommands(streamTreeNode, this.GetVisualizationPanelUnderMouse(mousePosition)); + List metadatas = this.GetStreamDropCommands(streamType, this.GetVisualizationPanelUnderMouse(mousePosition)); e.Effects = metadatas.Count > 0 ? DragDropEffects.Move : DragDropEffects.None; e.Handled = true; } @@ -148,13 +146,16 @@ namespace Microsoft.Psi.Visualization.Views // Get the visualization panel (if any) that the mouse is above VisualizationPanel visualizationPanel = this.GetVisualizationPanelUnderMouse(mousePosition); - // Get the list of commands that are compatible with the user dropping the stream here - List metadatas = this.GetStreamDropCommands(streamTreeNode, visualizationPanel); + // Get the type of messages in the stream + Type dataType = VisualizationContext.Instance.GetDataType(streamTreeNode); - // If there's any compatible visualization commands, execute the first one + // Get the list of commands that are compatible with the user dropping the stream here + List metadatas = this.GetStreamDropCommands(dataType, visualizationPanel); + + // If there's any compatible visualization commands, select the most appropriate one and execute it if (metadatas.Count > 0) { - VisualizationContext.Instance.VisualizeStream(streamTreeNode, metadatas[0], visualizationPanel); + VisualizationContext.Instance.VisualizeStream(streamTreeNode, VisualizerMetadata.GetClosestVisualizerMetadata(dataType, metadatas), visualizationPanel); } } } @@ -173,15 +174,10 @@ namespace Microsoft.Psi.Visualization.Views return this.hitTestResult != null ? this.hitTestResult.DataContext as VisualizationPanel : null; } - private List GetStreamDropCommands(StreamTreeNode streamTreeNode, VisualizationPanel visualizationPanel) + private List GetStreamDropCommands(Type messageType, VisualizationPanel visualizationPanel) { - List metadatas = new List(); - // Get all the commands that are applicable to this stream tree node and the panel it was dropped over - Type streamType = VisualizationContext.Instance.GetStreamType(streamTreeNode); - metadatas = VisualizationContext.Instance.VisualizerMap.GetByDataTypeAndPanelAboveSeparator(streamType, visualizationPanel); - - return metadatas; + return VisualizationContext.Instance.VisualizerMap.GetByDataTypeAndPanelAboveSeparator(messageType, visualizationPanel); } private HitTestFilterBehavior HitTestFilter(DependencyObject dependencyObject) @@ -211,7 +207,7 @@ namespace Microsoft.Psi.Visualization.Views private int FindPanelMoveIndices(VisualizationPanel droppedPanel, int panelVerticalCenter, out int currentPanelIndex) { - // Find the index of the panel whose vertical center is closest the the panel being dragged's vertical center + // Find the index of the panel whose vertical center is closest the panel being dragged's vertical center VisualizationContainer visualizationContainer = droppedPanel.Container; currentPanelIndex = -1; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationObjectView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationObjectView.xaml.cs index 4ce8bc55..a672e9e4 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationObjectView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationObjectView.xaml.cs @@ -3,6 +3,7 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D { + using System; using System.Collections.Generic; using System.ComponentModel; using System.Linq; @@ -19,7 +20,7 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D /// /// Interaction logic for DiagnosticsVisualizationObjectView.xaml. /// - public partial class PipelineDiagnosticsVisualizationObjectView : UserControl + public partial class PipelineDiagnosticsVisualizationObjectView : UserControl, IDisposable { private GraphViewer graphViewer = new GraphViewer() { LayoutEditingEnabled = false }; private Dictionary graphVisualPanZoom = new Dictionary(); @@ -43,6 +44,12 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D /// public PipelineDiagnosticsVisualizationObject DiagnosticsVisualizationObject { get; private set; } + /// + public void Dispose() + { + this.graphViewer.Dispose(); + } + /// /// Update view. /// @@ -280,11 +287,27 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D this.graphVisualPanZoom = new Dictionary(); this.FitGraphView(); } - else if (e.PropertyName == nameof(this.DiagnosticsVisualizationObject.CurrentValue) && this.DiagnosticsVisualizationObject.CurrentValue != null && this.DiagnosticsVisualizationObject.CurrentValue.Value.Data != null) + else if (e.PropertyName == nameof(this.DiagnosticsVisualizationObject.CurrentData) && this.DiagnosticsVisualizationObject.CurrentData != null) { - this.presenter.UpdateGraph(this.DiagnosticsVisualizationObject.CurrentValue.Value.Data, false); + this.presenter.UpdateGraph(this.DiagnosticsVisualizationObject.CurrentData, false); } - else + else if ( + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.ConnectorColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.EdgeColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.EdgeLineThickness) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.HeatmapColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.HeatmapStatistics) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.Highlight) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.HighlightColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.InfoTextSize) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.JoinColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.NodeColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.ShowDeliveryPolicies) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.ShowEmitterNames) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.ShowExporterConnections) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.ShowReceiverNames) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.SourceNodeColor) || + e.PropertyName == nameof(this.DiagnosticsVisualizationObject.SubpipelineColor)) { this.presenter.UpdateSettings(this.DiagnosticsVisualizationObject); } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationPresenter.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationPresenter.cs index 66f273e5..04a56fa0 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationPresenter.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/PipelineDiagnosticsVisualizationPresenter.cs @@ -1,727 +1,759 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Visualization.Views.Visuals2D -{ - using System; - using System.Collections.Generic; - using System.Linq; - using System.Text; - using Microsoft.Msagl.Drawing; - using Microsoft.Psi.Diagnostics; - using Microsoft.Psi.PsiStudio.TypeSpec; - using Microsoft.Psi.Visualization.VisualizationObjects; - - /// - /// Interaction logic for DiagnosticsVisualizationObjectView.xaml. - /// - public partial class PipelineDiagnosticsVisualizationPresenter - { - private readonly PipelineDiagnosticsVisualizationModel model; - private readonly PipelineDiagnosticsVisualizationObjectView view; - - /// - /// Initializes a new instance of the class. - /// - /// Diagnostics view. - /// Visualization object for this presenter. - public PipelineDiagnosticsVisualizationPresenter(PipelineDiagnosticsVisualizationObjectView view, PipelineDiagnosticsVisualizationObject visualizationObject) - { - this.model = new PipelineDiagnosticsVisualizationModel(); - this.view = view; - this.UpdateSettings(visualizationObject); - } - - /// - /// Gets diagnostics graph. - /// - public PipelineDiagnostics DiagnosticsGraph => this.model.Graph; - - /// - /// Gets visual graph. TODO: arg to update. - /// - public Graph VisualGraph { get; private set; } - - /// - /// Gets details of selected edge. - /// - public string SelectedEdgeDetails => this.model.SelectedEdgeDetails; - - /// - /// Gets edge color. - /// - public Color HighlightColor { get; private set; } - - /// - /// Gets edge color. - /// - public Color EdgeColor { get; private set; } //// TODO: private - - /// - /// Gets node color. - /// - public Color NodeColor { get; private set; } - - /// - /// Gets source node color. - /// - public Color SourceNodeColor { get; private set; } - - /// - /// Gets subpipeline color. - /// - public Color SubpipelineColor { get; private set; } - - /// - /// Gets connector node color. - /// - public Color ConnectorColor { get; private set; } - - /// - /// Gets join node color. - /// - public Color JoinColor { get; private set; } - - /// - /// Gets label color (light). - /// - public Color LabelColorLight { get; private set; } - - /// - /// Gets label color (dark). - /// - public Color LabelColorDark { get; private set; } - - /// - /// Gets heatmap color (base). - /// - public Color HeatmapColorBase { get; private set; } - - /// - /// Gets info text size. - /// - public double InfoTextSize { get; private set; } - - /// - /// Gets a value indicating whether to show exporter connections. - /// - public bool ShowExporterConnections { get; private set; } - - /// - /// Gets breadcrumb graph IDs. - /// - public IEnumerable Breadcrumbs - { - get - { - return this.model.NavStack.Reverse(); - } - } - - /// - /// Update diagnostics configuration. - /// - /// Diagnostics visualization object. - public void UpdateSettings(PipelineDiagnosticsVisualizationObject visualizationObject) - { - // convert colors to MSAGL graph colors - Func colorFromMediaColor = (System.Windows.Media.Color color) => new Color(color.R, color.G, color.B); - this.model.VisualizationObject = visualizationObject; - this.EdgeColor = colorFromMediaColor(visualizationObject.EdgeColor); - this.HighlightColor = colorFromMediaColor(visualizationObject.HighlightColor); - this.NodeColor = colorFromMediaColor(visualizationObject.NodeColor); - this.SourceNodeColor = colorFromMediaColor(visualizationObject.SourceNodeColor); - this.SubpipelineColor = colorFromMediaColor(visualizationObject.SubpipelineColor); - this.ConnectorColor = colorFromMediaColor(visualizationObject.ConnectorColor); - this.JoinColor = colorFromMediaColor(visualizationObject.JoinColor); - this.HeatmapColorBase = colorFromMediaColor(visualizationObject.HeatmapColor); - this.InfoTextSize = visualizationObject.InfoTextSize; - this.ShowExporterConnections = visualizationObject.ShowExporterConnections; - this.LabelColorLight = Color.White; - this.LabelColorDark = Color.Black; - if (visualizationObject.ModelDirty) - { - this.model.Reset(); - visualizationObject.ModelDirty = false; - this.VisualGraph = null; - this.view.Update(true); - } - - if (this.model.Graph != null) - { - this.UpdateGraph(this.model.Graph, true); - } - } - - /// - /// Update diagnostics graph. - /// - /// Current diagnostics graph. - /// Force re-layout of graph (otherwise, updates labels, colors, etc. in place). - public void UpdateGraph(PipelineDiagnostics graph, bool forceRelayout) - { - this.model.Graph = graph; - if (graph == null) - { - this.VisualGraph = null; - } - else - { - var pipelineIdToPipelineDiagnostics = graph.GetAllPipelineDiagnostics().ToDictionary(p => p.Id); - var currentGraph = this.Breadcrumbs.Count() > 0 ? pipelineIdToPipelineDiagnostics[this.Breadcrumbs.Last()] : graph; - this.VisualGraph = this.BuildVisualGraph(currentGraph, pipelineIdToPipelineDiagnostics); - } - - this.view.Update(forceRelayout); - } - - /// - /// Update selected edge. - /// - /// Selected edge. - public void UpdateSelectedEdge(Edge edge) - { - if (edge == null) - { - // clear selected edge (if any) - this.model.SelectedEdgeId = -1; - this.view.Update(true); - return; - } - - var input = edge.UserData as PipelineDiagnostics.ReceiverDiagnostics; - if (input != null) - { - this.UpdateSelectedEdge(input, this.VisualGraph, true); - } - } - - /// - /// Navigate into subgraph. - /// - /// Subgraph ID into which to navigate. - public void NavInto(int subgraphId) - { - this.model.NavStack.Push(subgraphId); - this.UpdateGraph(this.model.Graph, true); - } - - /// - /// Navigate back one graph. - /// - public void NavBack() - { - if (this.model.NavStack.Count > 0) - { - this.model.NavStack.Pop(); - this.UpdateGraph(this.model.Graph, true); - } - } - - /// - /// Navigate back to givin graph. - /// - /// Graph Id. - public void NavBackTo(int id) - { - while (this.model.NavStack.Count > 0 && this.model.NavStack.Peek() != id) - { - this.model.NavStack.Pop(); - } - - this.UpdateGraph(this.model.Graph, true); - } - - /// - /// Navigate back to root graph. - /// - public void NavHome() - { - if (this.model.NavStack.Count > 0) - { - while (this.model.NavStack.Count > 0) - { - this.model.NavStack.Pop(); - } - - this.UpdateGraph(this.model.Graph, true); - } - } - - private static Edge GetEdgeById(int id, Graph graph) - { - foreach (var n in graph.Nodes) - { - foreach (var e in n.Edges) - { - if (e.UserData != null && ((PipelineDiagnostics.ReceiverDiagnostics)e.UserData).Id == id) - { - return e; - } - } - } - - return null; - } - - private static bool IsBridgeToExporter(PipelineDiagnostics.PipelineElementDiagnostics node) - { - var bridgeEmitters = node.ConnectorBridgeToPipelineElement.Emitters; - var typeName = bridgeEmitters.Length == 1 ? bridgeEmitters[0].PipelineElement.TypeName : string.Empty; - return typeName == "MessageConnector`1" || typeName == "MessageEnvelopeConnector`1"; - } - - private void UpdateSelectedEdge(PipelineDiagnostics.ReceiverDiagnostics input, Graph graph, bool clicked) - { - var edge = GetEdgeById(input.Id, graph); - if (clicked && this.model.SelectedEdgeId == input.Id) - { - // toggle unselected - edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; // unselect current - this.model.SelectedEdgeDetails = string.Empty; - this.model.SelectedEdgeId = -1; - this.view.Update(true); - return; - } - - // new edge selected - if (this.model.SelectedEdgeId != -1) - { - var previousEdge = GetEdgeById(this.model.SelectedEdgeId, graph); - if (previousEdge != null) - { - previousEdge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; // unselect previous - } - } - - edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness * 2; // select current - this.model.SelectedEdgeId = input.Id; - var sb = new StringBuilder(); - sb.Append($"Type: {TypeSpec.Simplify(input.TypeName)}" + Environment.NewLine); - sb.Append($"Message Size (avg): {input.MessageSize:0}" + Environment.NewLine); - sb.Append($"Queue Size: {input.QueueSize:0.###}" + Environment.NewLine); - sb.Append($"Processed Count: {input.ProcessedCount}" + Environment.NewLine); - sb.Append($"Processed/Time: {input.ProcessedPerTimeSpan:0.###}" + Environment.NewLine); - sb.Append($"Dropped Count: {input.DroppedCount}" + Environment.NewLine); - sb.Append($"Dropped/Time: {input.DroppedPerTimeSpan:0.###}" + Environment.NewLine); - sb.Append($"Latency at Emitter (avg): {input.MessageLatencyAtEmitter:0.###}ms" + Environment.NewLine); - sb.Append($"Latency at Receiver (avg): {input.MessageLatencyAtReceiver:0.###}ms" + Environment.NewLine); - sb.Append($"Processing Time (avg): {input.ProcessingTime:0.###}ms" + Environment.NewLine); - sb.Append($"Delivery Policy: {input.DeliveryPolicyName}" + Environment.NewLine); - this.model.SelectedEdgeDetails = sb.ToString(); - this.view.Update(clicked); - } - - private Func StatsSelector(bool heatmap) - { - switch (this.model.VisualizationObject.HeatmapStatistics) - { - case PipelineDiagnosticsVisualizationObject.HeatmapStats.None: - return null; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.LatencyAtEmitter: - return i => i.MessageLatencyAtEmitter; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.LatencyAtReceiver: - return i => i.MessageLatencyAtReceiver; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.Processing: - return i => i.ProcessingTime; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.Throughput: - return i => i.ProcessedCount; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.QueueSize: - return i => i.QueueSize; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.DroppedCount: - return i => i.DroppedCount; - case PipelineDiagnosticsVisualizationObject.HeatmapStats.MessageSize: - return i => - { - var avg = i.MessageSize; - return heatmap && avg > 0 ? Math.Log(avg) : avg; - }; - default: - throw new ArgumentException($"Unknown visualization selector type."); - } - } - - private Color LabelColor(Color background) - { - var r = background.R / 255.0; - var g = background.G / 255.0; - var b = background.B / 255.0; - var brightness = Math.Sqrt((0.299 * r * r) + (0.587 * g * g) + (0.114 * b * b)); - return brightness < 0.55 ? this.LabelColorLight : this.LabelColorDark; - } - - private bool HilightEdge(PipelineDiagnostics.ReceiverDiagnostics receiverDiagnostics) - { - switch (this.model.VisualizationObject.Highlight) - { - case PipelineDiagnosticsVisualizationObject.HighlightCondition.None: - return false; - case PipelineDiagnosticsVisualizationObject.HighlightCondition.UnlimitedDeliveryPolicy: - return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.Unlimited)); - case PipelineDiagnosticsVisualizationObject.HighlightCondition.LatestMessageDeliveryPolicy: - return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.LatestMessage)); - case PipelineDiagnosticsVisualizationObject.HighlightCondition.ThrottleDeliveryPolicy: - return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.Throttle)); - case PipelineDiagnosticsVisualizationObject.HighlightCondition.SynchronousOrThrottleDeliveryPolicy: - return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.SynchronousOrThrottle)); - case PipelineDiagnosticsVisualizationObject.HighlightCondition.LatencyConstrainedDeliveryPolicy: - return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.LatencyConstrained)); - case PipelineDiagnosticsVisualizationObject.HighlightCondition.QueueSizeConstrainedDeliveryPolicy: - return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.QueueSizeConstrained)); - case PipelineDiagnosticsVisualizationObject.HighlightCondition.ThrottledReceivers: - return receiverDiagnostics.Throttled; - default: - throw new ArgumentException($"Unknown hilight condition: {this.model.VisualizationObject.Highlight}"); - } - } - - private Color HeatmapColor(double stats, Color baseColor) - { - var baseR = baseColor.R * (1.0 - stats); - var baseG = baseColor.G * (1.0 - stats); - var baseB = baseColor.B * (1.0 - stats); - var heatR = this.HeatmapColorBase.R * stats; - var heatG = this.HeatmapColorBase.G * stats; - var heatB = this.HeatmapColorBase.B * stats; - return new Color((byte)(baseR + heatR), (byte)(baseG + heatG), (byte)(baseB + heatB)); // blend from base to heat color - } - - private void HeatmapStats(Graph graph, Func statsSelector, bool perNode) - { - if (graph.Edges.Count() == 0) - { - return; - } - - var edgeStats = graph.Edges.Where(e => e.UserData != null).Select(e => (e, statsSelector((PipelineDiagnostics.ReceiverDiagnostics)e.UserData))); - var max = edgeStats.Select(x => x.Item2).Max(); - - if (perNode) - { - // max edge per node - foreach (var node in graph.Nodes) - { - var inputs = node.InEdges; - if (inputs.Count() > 0) - { - var maxStats = node.InEdges.Where(e => e.UserData != null).Select(e => statsSelector((PipelineDiagnostics.ReceiverDiagnostics)e.UserData)).Max(); - var color = this.HeatmapColor(max > 0 ? maxStats / max : 0, this.NodeColor); - node.Attr.Color = color; - node.Attr.FillColor = color; - node.Label.FontColor = this.LabelColor(color); - } - } - } - else - { - // per edge - foreach (var (edge, stat) in edgeStats) - { - edge.Attr.Color = this.HeatmapColor(max > 0 ? stat / max : 0, this.EdgeColor); - } - } - } - - private void VisualizeEdgeColoring(Graph graph) - { - var selector = this.StatsSelector(true); - if (selector != null) - { - // visualize heatmap - var perNode = this.model.VisualizationObject.HeatmapStatistics == PipelineDiagnosticsVisualizationObject.HeatmapStats.Processing; - this.HeatmapStats(graph, selector, perNode); - } - - // overlay highlights - if (this.model.VisualizationObject.Highlight != PipelineDiagnosticsVisualizationObject.HighlightCondition.None) - { - foreach (var edge in graph.Edges) - { - if (edge.UserData != null && this.HilightEdge((PipelineDiagnostics.ReceiverDiagnostics)edge.UserData)) - { - edge.Attr.Color = this.HighlightColor; - } - } - } - } - - private bool IsConnectorBridge(PipelineDiagnostics.PipelineElementDiagnostics node) - { - return node.Kind == PipelineElementKind.Connector && (node.Receivers.Length == 0 || node.Emitters.Length == 0) && node.ConnectorBridgeToPipelineElement != null; - } - - private Node BuildVisualNode(PipelineDiagnostics.PipelineElementDiagnostics node) - { - var vis = new Node($"n{node.Id}"); - var fillColor = node.Kind == PipelineElementKind.Source ? this.SourceNodeColor : node.Kind == PipelineElementKind.Subpipeline ? this.SubpipelineColor : this.NodeColor; - var typ = TypeSpec.Simplify(node.TypeName); - var isStoppedSubpipeline = node.RepresentsSubpipeline != null && !node.RepresentsSubpipeline.IsPipelineRunning; - var stopped = isStoppedSubpipeline || !node.IsRunning ? " (stopped)" : string.Empty; - vis.LabelText = node.Kind == PipelineElementKind.Subpipeline ? $"{node.Name}{stopped}|{typ}" : typ; - vis.Label.FontColor = this.LabelColor(fillColor); - vis.Attr.Color = fillColor; - vis.Attr.FillColor = fillColor; - if (vis.LabelText == "Join") - { - this.SetJoinVisualAttributes(vis, node.Name); - } - - return vis; - } - - private string BuildVisualEdgeLabelText(string emitterName, string receiverName, string stats, string deliveryPolicyName) - { - var showEmitter = this.model.VisualizationObject.ShowEmitterNames; - var showReceiver = this.model.VisualizationObject.ShowReceiverNames; - var showDeliveryPolicy = this.model.VisualizationObject.ShowDeliveryPolicies; - emitterName = showEmitter ? emitterName : string.Empty; - receiverName = showReceiver ? receiverName : string.Empty; - deliveryPolicyName = showDeliveryPolicy && deliveryPolicyName.Length > 0 ? $" [{deliveryPolicyName}]" : string.Empty; - var arrow = showEmitter && showReceiver ? "→" : string.Empty; - return $" {emitterName}{arrow}{receiverName}{stats}{deliveryPolicyName} "; // extra padding to allow for stats changes without re-layout - } - - private Edge BuildVisualEdge(Node source, Node target, PipelineDiagnostics.ReceiverDiagnostics input, Func statsSelector) - { - var edge = new Edge(source, target, ConnectionToGraph.Connected); - edge.UserData = input; - edge.Attr.Color = this.EdgeColor; - edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; - var stats = statsSelector != null ? $" ({statsSelector(input):0.#})" : string.Empty; - edge.LabelText = this.BuildVisualEdgeLabelText(input.Source.Name, input.ReceiverName, stats, input.DeliveryPolicyName); - edge.Label.FontColor = this.LabelColorLight; - edge.Label.UserData = edge; - return edge; - } - - private bool AddVisualEdge(Node source, Node target, PipelineDiagnostics.ReceiverDiagnostics input, Graph graph, Func statsSelector) - { - if (source != null && target != null) - { - var edge = this.BuildVisualEdge(source, target, input, statsSelector); - graph.AddPrecalculatedEdge(edge); - if (input.Id == this.model.SelectedEdgeId) - { - this.UpdateSelectedEdge(input, graph, false); - return true; - } - } - - return false; - } - - private bool AddVisualEdge(int sourceId, int targetId, PipelineDiagnostics.ReceiverDiagnostics input, Graph graph, Func statsSelector) - { - return this.AddVisualEdge(graph.FindNode($"n{sourceId}"), graph.FindNode($"n{targetId}"), input, graph, statsSelector); - } - - private void SetVisualAttributes(Node vis, Shape shape, Color color, string symbol, string name) - { - vis.Attr.Color = color; - vis.Attr.FillColor = color; - vis.Label.FontColor = this.LabelColor(color); - vis.Attr.Shape = shape; - vis.LabelText = $"{symbol}|{name}"; - } - - private void SetConnectorVisualAttributes(Node vis, string label) - { - this.SetVisualAttributes(vis, Shape.Circle, this.ConnectorColor, "☍", label); - } - - private void SetJoinVisualAttributes(Node vis, string label) - { - this.SetVisualAttributes(vis, Shape.Circle, this.JoinColor, "+", label); - } - - private Graph BuildVisualGraph(PipelineDiagnostics diagnostics, Dictionary pipelineIdToPipelineDiagnostics) - { - var subpipelineIdToPipelineDiagnostics = diagnostics.SubpipelineDiagnostics.ToDictionary(p => p.Id); - var graph = new Graph($"{diagnostics.Name} (running={diagnostics.IsPipelineRunning})", $"g{diagnostics.Id}"); - switch (this.model.VisualizationObject.LayoutDirection) - { - case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.LeftToRight: - graph.Attr.LayerDirection = LayerDirection.LR; - break; - case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.TopToBottom: - graph.Attr.LayerDirection = LayerDirection.TB; - break; - case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.RightToLeft: - graph.Attr.LayerDirection = LayerDirection.RL; - break; - case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.BottomToTop: - graph.Attr.LayerDirection = LayerDirection.BT; - break; - } - - graph.UserData = diagnostics.Id; - graph.Attr.BackgroundColor = Color.Transparent; - var subpipelineNodes = new Dictionary(); - var connectorsWithinSubpipelines = new Dictionary(); - var statsSelector = this.StatsSelector(false); - - // add nodes - foreach (var node in diagnostics.PipelineElements.Where(n => !this.IsConnectorBridge(n))) - { - var vis = this.BuildVisualNode(node); - if (node.Kind == PipelineElementKind.Subpipeline && node.RepresentsSubpipeline != null) - { - vis.UserData = node.RepresentsSubpipeline; - subpipelineNodes.Add(node.RepresentsSubpipeline.Id, node); - foreach (var n in node.RepresentsSubpipeline.PipelineElements.Where(n => n.Kind == PipelineElementKind.Connector)) - { - connectorsWithinSubpipelines.Add(n.Id, n); - } - } - else if (node.Kind == PipelineElementKind.Connector) - { - this.SetConnectorVisualAttributes(vis, node.Name); - } - - graph.AddNode(vis); - } - - // add connectors - foreach (var node in diagnostics.PipelineElements.Where(this.IsConnectorBridge)) - { - var connectsToSubpipeline = subpipelineNodes.ContainsKey(node.ConnectorBridgeToPipelineElement.PipelineId); - if (!connectsToSubpipeline) - { - if (!this.ShowExporterConnections && IsBridgeToExporter(node)) - { - continue; - } - - var connector = new Node($"n{node.Id}"); - var bridgedPipeline = pipelineIdToPipelineDiagnostics[node.ConnectorBridgeToPipelineElement.PipelineId]; - this.SetConnectorVisualAttributes(connector, $"{node.Name} ({bridgedPipeline.Name})"); - graph.AddNode(connector); - } - } - - // add edges - var selectedEdgeUpdated = false; - foreach (var n in diagnostics.PipelineElements) - { - foreach (var i in n.Receivers) - { - if (i.Source != null) - { - if (this.AddVisualEdge(i.Source.PipelineElement.Id, n.Id, i, graph, statsSelector)) - { - selectedEdgeUpdated = true; - } - } - } - } - - // add connector bridge edges - foreach (var n in diagnostics.PipelineElements.Where(this.IsConnectorBridge)) - { - if (!this.ShowExporterConnections && IsBridgeToExporter(n)) - { - continue; - } - - // connector bridging to subpipeline? - if (subpipelineNodes.TryGetValue(n.ConnectorBridgeToPipelineElement.PipelineId, out PipelineDiagnostics.PipelineElementDiagnostics subNode)) - { - // edges from connector source directly to bridge target (subpipeline) - var sub = graph.FindNode($"n{subNode.Id}"); - if (sub != null) - { - foreach (var i in n.Receivers) - { - if (i.Source != null) - { - var source = graph.FindNode($"n{i.Source.PipelineElement.Id}"); - if (source != null) - { - if (this.AddVisualEdge(source, sub, i, graph, statsSelector)) - { - selectedEdgeUpdated = true; - } - } - } - } - - // edges from connector bridge source (subpipeline) to connector targets - foreach (var o in n.Emitters) - { - foreach (var t in o.Targets) - { - var target = graph.FindNode($"n{t.PipelineElement.Id}"); - if (target != null) - { - if (this.AddVisualEdge(sub, target, t, graph, statsSelector)) - { - selectedEdgeUpdated = true; - } - } - } - } - } - } - else - { - // connector bridging graphs - var bridgedPipeline = pipelineIdToPipelineDiagnostics[n.ConnectorBridgeToPipelineElement.PipelineId]; - var connector = graph.FindNode($"n{n.Id}"); - - // add dotted line edge representing connector bridged to descendant pipeline - var targetPipeline = bridgedPipeline; - while (targetPipeline != null) - { - if (subpipelineIdToPipelineDiagnostics.ContainsKey(targetPipeline.Id)) - { - var targetNode = graph.FindNode($"n{subpipelineNodes[targetPipeline.Id].Id}"); - var edge = new Edge(connector, targetNode, ConnectionToGraph.Connected); - edge.Attr.Color = this.EdgeColor; - edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; - edge.Attr.AddStyle(Style.Dotted); - edge.LabelText = this.BuildVisualEdgeLabelText(n.Name, bridgedPipeline.Name, string.Empty, string.Empty); - edge.Label.FontColor = this.LabelColorLight; - graph.AddPrecalculatedEdge(edge); - break; - } - - // walk up ancestor chain until we're at a direct child subpipeline - targetPipeline = targetPipeline.ParentPipelineDiagnostics; - } - } - } - - // add direct connections from one subpipeline (connector) to another - foreach (var c in connectorsWithinSubpipelines.Values) - { - if (c.ConnectorBridgeToPipelineElement != null) - { - if (c.ConnectorBridgeToPipelineElement.PipelineId == diagnostics.Id && c.ConnectorBridgeToPipelineElement.Receivers.Length == 1) - { - var i = c.ConnectorBridgeToPipelineElement.Receivers[0]; - if (i.Source != null && i.Source.PipelineElement.PipelineId == diagnostics.Id && i.Source.PipelineElement.ConnectorBridgeToPipelineElement != null) - { - if (subpipelineNodes.TryGetValue(i.Source.PipelineElement.ConnectorBridgeToPipelineElement.PipelineId, out PipelineDiagnostics.PipelineElementDiagnostics source) && - subpipelineNodes.TryGetValue(c.PipelineId, out PipelineDiagnostics.PipelineElementDiagnostics target)) - { - if (this.AddVisualEdge(source.Id, target.Id, i, graph, statsSelector)) - { - selectedEdgeUpdated = true; - } - } - } - } - } - } - - if (!selectedEdgeUpdated && this.model.SelectedEdgeId != -1) - { - // hide while in subpipeline - this.model.SelectedEdgeDetails = string.Empty; - } - - this.VisualizeEdgeColoring(graph); - return graph; - } - } -} +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Visualization.Views.Visuals2D +{ + using System; + using System.Collections.Generic; + using System.Linq; + using System.Text; + using Microsoft.Msagl.Drawing; + using Microsoft.Psi.Diagnostics; + using Microsoft.Psi.PsiStudio.TypeSpec; + using Microsoft.Psi.Visualization.VisualizationObjects; + + /// + /// Interaction logic for DiagnosticsVisualizationObjectView.xaml. + /// + public partial class PipelineDiagnosticsVisualizationPresenter + { + private readonly PipelineDiagnosticsVisualizationModel model; + private readonly PipelineDiagnosticsVisualizationObjectView view; + + /// + /// Initializes a new instance of the class. + /// + /// Diagnostics view. + /// Visualization object for this presenter. + public PipelineDiagnosticsVisualizationPresenter(PipelineDiagnosticsVisualizationObjectView view, PipelineDiagnosticsVisualizationObject visualizationObject) + { + this.model = new PipelineDiagnosticsVisualizationModel(); + this.view = view; + this.UpdateSettings(visualizationObject); + } + + /// + /// Gets diagnostics graph. + /// + public PipelineDiagnostics DiagnosticsGraph => this.model.Graph; + + /// + /// Gets visual graph. TODO: arg to update. + /// + public Graph VisualGraph { get; private set; } + + /// + /// Gets details of selected edge. + /// + public string SelectedEdgeDetails => this.model.SelectedEdgeDetails; + + /// + /// Gets edge color. + /// + public Color HighlightColor { get; private set; } + + /// + /// Gets edge color. + /// + public Color EdgeColor { get; private set; } //// TODO: private + + /// + /// Gets node color. + /// + public Color NodeColor { get; private set; } + + /// + /// Gets source node color. + /// + public Color SourceNodeColor { get; private set; } + + /// + /// Gets subpipeline color. + /// + public Color SubpipelineColor { get; private set; } + + /// + /// Gets connector node color. + /// + public Color ConnectorColor { get; private set; } + + /// + /// Gets join node color. + /// + public Color JoinColor { get; private set; } + + /// + /// Gets label color (light). + /// + public Color LabelColorLight { get; private set; } + + /// + /// Gets label color (dark). + /// + public Color LabelColorDark { get; private set; } + + /// + /// Gets heatmap color (base). + /// + public Color HeatmapColorBase { get; private set; } + + /// + /// Gets info text size. + /// + public double InfoTextSize { get; private set; } + + /// + /// Gets a value indicating whether to show exporter connections. + /// + public bool ShowExporterConnections { get; private set; } + + /// + /// Gets breadcrumb graph IDs. + /// + public IEnumerable Breadcrumbs + { + get + { + return this.model.NavStack.Reverse(); + } + } + + /// + /// Update diagnostics configuration. + /// + /// Diagnostics visualization object. + public void UpdateSettings(PipelineDiagnosticsVisualizationObject visualizationObject) + { + // convert colors to MSAGL graph colors + Func colorFromMediaColor = (System.Windows.Media.Color color) => new Color(color.R, color.G, color.B); + this.model.VisualizationObject = visualizationObject; + this.EdgeColor = colorFromMediaColor(visualizationObject.EdgeColor); + this.HighlightColor = colorFromMediaColor(visualizationObject.HighlightColor); + this.NodeColor = colorFromMediaColor(visualizationObject.NodeColor); + this.SourceNodeColor = colorFromMediaColor(visualizationObject.SourceNodeColor); + this.SubpipelineColor = colorFromMediaColor(visualizationObject.SubpipelineColor); + this.ConnectorColor = colorFromMediaColor(visualizationObject.ConnectorColor); + this.JoinColor = colorFromMediaColor(visualizationObject.JoinColor); + this.HeatmapColorBase = colorFromMediaColor(visualizationObject.HeatmapColor); + this.InfoTextSize = visualizationObject.InfoTextSize; + this.ShowExporterConnections = visualizationObject.ShowExporterConnections; + this.LabelColorLight = Color.White; + this.LabelColorDark = Color.Black; + if (visualizationObject.ModelDirty) + { + this.model.Reset(); + visualizationObject.ModelDirty = false; + this.VisualGraph = null; + this.view.Update(true); + } + + if (this.model.Graph != null) + { + this.UpdateGraph(this.model.Graph, true); + } + } + + /// + /// Update diagnostics graph. + /// + /// Current diagnostics graph. + /// Force re-layout of graph (otherwise, updates labels, colors, etc. in place). + public void UpdateGraph(PipelineDiagnostics graph, bool forceRelayout) + { + this.model.Graph = graph; + if (graph == null) + { + this.VisualGraph = null; + } + else + { + var pipelineIdToPipelineDiagnostics = graph.GetAllPipelineDiagnostics().ToDictionary(p => p.Id); + var currentGraph = this.Breadcrumbs.Count() > 0 ? pipelineIdToPipelineDiagnostics[this.Breadcrumbs.Last()] : graph; + this.VisualGraph = this.BuildVisualGraph(currentGraph, pipelineIdToPipelineDiagnostics); + } + + this.view.Update(forceRelayout); + } + + /// + /// Update selected edge. + /// + /// Selected edge. + public void UpdateSelectedEdge(Edge edge) + { + if (edge == null) + { + // clear selected edge (if any) + this.model.SelectedEdgeId = -1; + this.view.Update(true); + return; + } + + var input = edge.UserData as PipelineDiagnostics.ReceiverDiagnostics; + if (input != null) + { + this.UpdateSelectedEdge(input, this.VisualGraph, true); + } + } + + /// + /// Navigate into subgraph. + /// + /// Subgraph ID into which to navigate. + public void NavInto(int subgraphId) + { + this.model.NavStack.Push(subgraphId); + this.UpdateGraph(this.model.Graph, true); + } + + /// + /// Navigate back one graph. + /// + public void NavBack() + { + if (this.model.NavStack.Count > 0) + { + this.model.NavStack.Pop(); + this.UpdateGraph(this.model.Graph, true); + } + } + + /// + /// Navigate back to given graph. + /// + /// Graph Id. + public void NavBackTo(int id) + { + while (this.model.NavStack.Count > 0 && this.model.NavStack.Peek() != id) + { + this.model.NavStack.Pop(); + } + + this.UpdateGraph(this.model.Graph, true); + } + + /// + /// Navigate back to root graph. + /// + public void NavHome() + { + if (this.model.NavStack.Count > 0) + { + while (this.model.NavStack.Count > 0) + { + this.model.NavStack.Pop(); + } + + this.UpdateGraph(this.model.Graph, true); + } + } + + private static Edge GetEdgeById(int id, Graph graph) + { + foreach (var n in graph.Nodes) + { + foreach (var e in n.Edges) + { + if (e.UserData != null && ((PipelineDiagnostics.ReceiverDiagnostics)e.UserData).Id == id) + { + return e; + } + } + } + + return null; + } + + private static bool IsBridgeToExporter(PipelineDiagnostics.PipelineElementDiagnostics node) + { + var bridgeEmitters = node.ConnectorBridgeToPipelineElement.Emitters; + var typeName = bridgeEmitters.Length == 1 ? bridgeEmitters[0].PipelineElement.TypeName : string.Empty; + return typeName == "MessageConnector`1" || typeName == "MessageEnvelopeConnector`1"; + } + + private void UpdateSelectedEdge(PipelineDiagnostics.ReceiverDiagnostics input, Graph graph, bool clicked) + { + var edge = GetEdgeById(input.Id, graph); + if (clicked && this.model.SelectedEdgeId == input.Id) + { + // toggle unselected + edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; // unselect current + this.model.SelectedEdgeDetails = string.Empty; + this.model.SelectedEdgeId = -1; + this.view.Update(true); + return; + } + + // new edge selected + if (this.model.SelectedEdgeId != -1) + { + var previousEdge = GetEdgeById(this.model.SelectedEdgeId, graph); + if (previousEdge != null) + { + previousEdge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; // unselect previous + } + } + + edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness * 2; // select current + this.model.SelectedEdgeId = input.Id; + var sb = new StringBuilder(); + sb.Append($"Type: {TypeSpec.Simplify(input.TypeName)}" + Environment.NewLine); + sb.Append($"Message Size (avg): {input.MessageSize:0}" + Environment.NewLine); + sb.Append($"Queue Size: {input.QueueSize:0.###}" + Environment.NewLine); + sb.Append($"Processed Count: {input.ProcessedCount}" + Environment.NewLine); + sb.Append($"Processed/Time: {input.ProcessedPerTimeSpan:0.###}" + Environment.NewLine); + sb.Append($"Dropped Count: {input.DroppedCount}" + Environment.NewLine); + sb.Append($"Dropped/Time: {input.DroppedPerTimeSpan:0.###}" + Environment.NewLine); + sb.Append($"Latency at Emitter (avg): {input.MessageLatencyAtEmitter:0.###}ms" + Environment.NewLine); + sb.Append($"Latency at Receiver (avg): {input.MessageLatencyAtReceiver:0.###}ms" + Environment.NewLine); + sb.Append($"Processing Time (avg): {input.ProcessingTime:0.###}ms" + Environment.NewLine); + sb.Append($"Delivery Policy: {input.DeliveryPolicyName}" + Environment.NewLine); + this.model.SelectedEdgeDetails = sb.ToString(); + this.view.Update(clicked); + } + + private Func StatsSelector(bool heatmap) + { + switch (this.model.VisualizationObject.HeatmapStatistics) + { + case PipelineDiagnosticsVisualizationObject.HeatmapStats.None: + return null; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.LatencyAtEmitter: + return i => i.MessageLatencyAtEmitter; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.LatencyAtReceiver: + return i => i.MessageLatencyAtReceiver; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.Processing: + return i => i.ProcessingTime; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.Throughput: + return i => i.ProcessedCount; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.QueueSize: + return i => i.QueueSize; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.DroppedCount: + return i => i.DroppedCount; + case PipelineDiagnosticsVisualizationObject.HeatmapStats.MessageSize: + return i => + { + var avg = i.MessageSize; + return heatmap && avg > 0 ? Math.Log(avg) : avg; + }; + default: + throw new ArgumentException($"Unknown visualization selector type."); + } + } + + private Color LabelColor(Color background) + { + var r = background.R / 255.0; + var g = background.G / 255.0; + var b = background.B / 255.0; + var brightness = Math.Sqrt((0.299 * r * r) + (0.587 * g * g) + (0.114 * b * b)); + return brightness < 0.55 ? this.LabelColorLight : this.LabelColorDark; + } + + private bool HilightEdge(PipelineDiagnostics.ReceiverDiagnostics receiverDiagnostics) + { + switch (this.model.VisualizationObject.Highlight) + { + case PipelineDiagnosticsVisualizationObject.HighlightCondition.None: + return false; + case PipelineDiagnosticsVisualizationObject.HighlightCondition.UnlimitedDeliveryPolicy: + return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.Unlimited)); + case PipelineDiagnosticsVisualizationObject.HighlightCondition.LatestMessageDeliveryPolicy: + return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.LatestMessage)); + case PipelineDiagnosticsVisualizationObject.HighlightCondition.ThrottleDeliveryPolicy: + return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.Throttle)); + case PipelineDiagnosticsVisualizationObject.HighlightCondition.SynchronousOrThrottleDeliveryPolicy: + return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.SynchronousOrThrottle)); + case PipelineDiagnosticsVisualizationObject.HighlightCondition.LatencyConstrainedDeliveryPolicy: + return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.LatencyConstrained)); + case PipelineDiagnosticsVisualizationObject.HighlightCondition.QueueSizeConstrainedDeliveryPolicy: + return receiverDiagnostics.DeliveryPolicyName.StartsWith(nameof(DeliveryPolicy.QueueSizeConstrained)); + case PipelineDiagnosticsVisualizationObject.HighlightCondition.ThrottledReceivers: + return receiverDiagnostics.Throttled; + default: + throw new ArgumentException($"Unknown highlight condition: {this.model.VisualizationObject.Highlight}"); + } + } + + private Color HeatmapColor(double stats, Color baseColor) + { + var baseR = baseColor.R * (1.0 - stats); + var baseG = baseColor.G * (1.0 - stats); + var baseB = baseColor.B * (1.0 - stats); + var heatR = this.HeatmapColorBase.R * stats; + var heatG = this.HeatmapColorBase.G * stats; + var heatB = this.HeatmapColorBase.B * stats; + return new Color((byte)(baseR + heatR), (byte)(baseG + heatG), (byte)(baseB + heatB)); // blend from base to heat color + } + + private void HeatmapStats(Graph graph, Func statsSelector, bool perNode) + { + if (graph.Edges.Count() == 0) + { + return; + } + + var edgeStats = graph.Edges.Where(e => e.UserData != null).Select(e => (e, statsSelector((PipelineDiagnostics.ReceiverDiagnostics)e.UserData))); + var max = edgeStats.Select(x => x.Item2).Max(); + + if (perNode) + { + // max edge per node + foreach (var node in graph.Nodes) + { + var inputs = node.InEdges; + if (inputs.Count() > 0) + { + var maxStats = node.InEdges.Where(e => e.UserData != null).Select(e => statsSelector((PipelineDiagnostics.ReceiverDiagnostics)e.UserData)).Max(); + var color = this.HeatmapColor(max > 0 ? maxStats / max : 0, this.NodeColor); + node.Attr.Color = color; + node.Attr.FillColor = color; + node.Label.FontColor = this.LabelColor(color); + } + } + } + else + { + // per edge + foreach (var (edge, stat) in edgeStats) + { + edge.Attr.Color = this.HeatmapColor(max > 0 ? stat / max : 0, this.EdgeColor); + } + } + } + + private void VisualizeEdgeColoring(Graph graph) + { + var selector = this.StatsSelector(true); + if (selector != null) + { + // visualize heatmap + var perNode = this.model.VisualizationObject.HeatmapStatistics == PipelineDiagnosticsVisualizationObject.HeatmapStats.Processing; + this.HeatmapStats(graph, selector, perNode); + } + + // overlay highlights + if (this.model.VisualizationObject.Highlight != PipelineDiagnosticsVisualizationObject.HighlightCondition.None) + { + foreach (var edge in graph.Edges) + { + if (edge.UserData != null && this.HilightEdge((PipelineDiagnostics.ReceiverDiagnostics)edge.UserData)) + { + edge.Attr.Color = this.HighlightColor; + } + } + } + } + + private bool IsConnectorBridge(PipelineDiagnostics.PipelineElementDiagnostics node) + { + return node.Kind == PipelineElementKind.Connector && (node.Receivers.Length == 0 || node.Emitters.Length == 0) && node.ConnectorBridgeToPipelineElement != null; + } + + private Node BuildVisualNode(PipelineDiagnostics.PipelineElementDiagnostics node) + { + var vis = new Node($"n{node.Id}"); + var fillColor = node.Kind == PipelineElementKind.Source ? this.SourceNodeColor : node.Kind == PipelineElementKind.Subpipeline ? this.SubpipelineColor : this.NodeColor; + var typ = TypeSpec.Simplify(node.TypeName); + var isStoppedSubpipeline = node.RepresentsSubpipeline != null && !node.RepresentsSubpipeline.IsPipelineRunning; + var stopped = isStoppedSubpipeline || !node.IsRunning ? " (stopped)" : string.Empty; + vis.LabelText = node.Kind == PipelineElementKind.Subpipeline ? $"{node.Name}{stopped}|{typ}" : typ; + vis.Label.FontColor = this.LabelColor(fillColor); + vis.Attr.Color = fillColor; + vis.Attr.FillColor = fillColor; + if (vis.LabelText == "Join") + { + this.SetJoinVisualAttributes(vis, node.Name); + } + + return vis; + } + + private string BuildVisualEdgeLabelText(string emitterName, string receiverName, string stats, string deliveryPolicyName) + { + var showEmitter = this.model.VisualizationObject.ShowEmitterNames; + var showReceiver = this.model.VisualizationObject.ShowReceiverNames; + var showDeliveryPolicy = this.model.VisualizationObject.ShowDeliveryPolicies; + emitterName = showEmitter ? emitterName : string.Empty; + receiverName = showReceiver ? receiverName : string.Empty; + deliveryPolicyName = showDeliveryPolicy && deliveryPolicyName.Length > 0 ? $" [{deliveryPolicyName}]" : string.Empty; + var arrow = showEmitter && showReceiver ? "→" : string.Empty; + return $" {emitterName}{arrow}{receiverName}{stats}{deliveryPolicyName} "; // extra padding to allow for stats changes without re-layout + } + + private Edge BuildVisualEdge(Node source, Node target, string emitterName, string receiverName, string stats, string deliveryPolicyName, Style style) + { + var edge = new Edge(source, target, ConnectionToGraph.Connected); + edge.Attr.Color = this.EdgeColor; + edge.Attr.LineWidth = this.model.VisualizationObject.EdgeLineThickness; + edge.Attr.AddStyle(style); + edge.LabelText = this.BuildVisualEdgeLabelText(emitterName, receiverName, stats, deliveryPolicyName); + edge.Label.FontColor = this.LabelColorLight; + return edge; + } + + private Edge BuildVisualEdge(Node source, Node target, PipelineDiagnostics.ReceiverDiagnostics input, Func statsSelector) + { + var stats = statsSelector != null ? $" ({statsSelector(input):0.#})" : string.Empty; + var edge = this.BuildVisualEdge(source, target, input.Source.Name, input.ReceiverName, stats, input.DeliveryPolicyName, Style.Solid); + edge.UserData = input; + edge.Label.UserData = edge; + return edge; + } + + private bool AddVisualEdge(Node source, Node target, PipelineDiagnostics.ReceiverDiagnostics input, Graph graph, Func statsSelector) + { + if (source != null && target != null) + { + var edge = this.BuildVisualEdge(source, target, input, statsSelector); + graph.AddPrecalculatedEdge(edge); + if (input.Id == this.model.SelectedEdgeId) + { + this.UpdateSelectedEdge(input, graph, false); + return true; + } + } + + return false; + } + + private bool AddVisualEdge(int sourceId, int targetId, PipelineDiagnostics.ReceiverDiagnostics input, Graph graph, Func statsSelector) + { + return this.AddVisualEdge(graph.FindNode($"n{sourceId}"), graph.FindNode($"n{targetId}"), input, graph, statsSelector); + } + + private void SetVisualAttributes(Node vis, Shape shape, Color color, string symbol, string name) + { + vis.Attr.Color = color; + vis.Attr.FillColor = color; + vis.Label.FontColor = this.LabelColor(color); + vis.Attr.Shape = shape; + vis.LabelText = $"{symbol}|{name}"; + } + + private void SetConnectorVisualAttributes(Node vis, string label) + { + this.SetVisualAttributes(vis, Shape.Circle, this.ConnectorColor, "☍", label); + } + + private void SetJoinVisualAttributes(Node vis, string label) + { + this.SetVisualAttributes(vis, Shape.Circle, this.JoinColor, "+", label); + } + + private Graph BuildVisualGraph(PipelineDiagnostics diagnostics, Dictionary pipelineIdToPipelineDiagnostics) + { + var subpipelineIdToPipelineDiagnostics = diagnostics.SubpipelineDiagnostics.ToDictionary(p => p.Id); + var graph = new Graph($"{diagnostics.Name} (running={diagnostics.IsPipelineRunning})", $"g{diagnostics.Id}"); + switch (this.model.VisualizationObject.LayoutDirection) + { + case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.LeftToRight: + graph.Attr.LayerDirection = LayerDirection.LR; + break; + case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.TopToBottom: + graph.Attr.LayerDirection = LayerDirection.TB; + break; + case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.RightToLeft: + graph.Attr.LayerDirection = LayerDirection.RL; + break; + case PipelineDiagnosticsVisualizationObject.GraphLayoutDirection.BottomToTop: + graph.Attr.LayerDirection = LayerDirection.BT; + break; + } + + graph.UserData = diagnostics.Id; + graph.Attr.BackgroundColor = Color.Transparent; + var subpipelineNodes = new Dictionary(); + var connectorsWithinSubpipelines = new Dictionary(); + var statsSelector = this.StatsSelector(false); + + // add nodes + foreach (var node in diagnostics.PipelineElements.Where(n => !this.IsConnectorBridge(n))) + { + var vis = this.BuildVisualNode(node); + if (node.Kind == PipelineElementKind.Subpipeline && node.RepresentsSubpipeline != null) + { + vis.UserData = node.RepresentsSubpipeline; + subpipelineNodes.Add(node.RepresentsSubpipeline.Id, node); + foreach (var n in node.RepresentsSubpipeline.PipelineElements.Where(n => n.Kind == PipelineElementKind.Connector)) + { + connectorsWithinSubpipelines.Add(n.Id, n); + } + } + else if (node.Kind == PipelineElementKind.Connector) + { + this.SetConnectorVisualAttributes(vis, node.Name); + } + + graph.AddNode(vis); + } + + // add connectors + foreach (var node in diagnostics.PipelineElements.Where(this.IsConnectorBridge)) + { + var connectsToSubpipeline = subpipelineNodes.ContainsKey(node.ConnectorBridgeToPipelineElement.PipelineId); + if (!connectsToSubpipeline) + { + if (!this.ShowExporterConnections && IsBridgeToExporter(node)) + { + continue; + } + + var connector = new Node($"n{node.Id}"); + var bridgedPipeline = pipelineIdToPipelineDiagnostics[node.ConnectorBridgeToPipelineElement.PipelineId]; + this.SetConnectorVisualAttributes(connector, $"{node.Name} ({bridgedPipeline.Name})"); + graph.AddNode(connector); + } + } + + // add edges + var selectedEdgeUpdated = false; + foreach (var n in diagnostics.PipelineElements) + { + foreach (var i in n.Receivers) + { + if (i.Source != null) + { + if (this.AddVisualEdge(i.Source.PipelineElement.Id, n.Id, i, graph, statsSelector)) + { + selectedEdgeUpdated = true; + } + } + } + } + + // add connector bridge edges + foreach (var n in diagnostics.PipelineElements.Where(this.IsConnectorBridge)) + { + if (!this.ShowExporterConnections && IsBridgeToExporter(n)) + { + continue; + } + + // connector bridging to subpipeline? + if (subpipelineNodes.TryGetValue(n.ConnectorBridgeToPipelineElement.PipelineId, out PipelineDiagnostics.PipelineElementDiagnostics subNode)) + { + // edges from connector source directly to bridge target (subpipeline) + var sub = graph.FindNode($"n{subNode.Id}"); + if (sub != null) + { + foreach (var i in n.Receivers) + { + if (i.Source != null) + { + var source = graph.FindNode($"n{i.Source.PipelineElement.Id}"); + if (source != null) + { + if (this.AddVisualEdge(source, sub, i, graph, statsSelector)) + { + selectedEdgeUpdated = true; + } + } + } + } + + // edges from connector bridge source (subpipeline) to connector targets + foreach (var o in n.Emitters) + { + foreach (var t in o.Targets) + { + var target = graph.FindNode($"n{t.PipelineElement.Id}"); + if (target != null) + { + if (this.AddVisualEdge(sub, target, t, graph, statsSelector)) + { + selectedEdgeUpdated = true; + } + } + } + } + } + } + else + { + // connector bridging graphs + var bridgedPipeline = pipelineIdToPipelineDiagnostics[n.ConnectorBridgeToPipelineElement.PipelineId]; + var connector = graph.FindNode($"n{n.Id}"); + + // add dotted line edge representing connector bridged to descendant pipeline + var targetPipeline = bridgedPipeline; + while (targetPipeline != null) + { + if (subpipelineIdToPipelineDiagnostics.ContainsKey(targetPipeline.Id)) + { + var targetNode = graph.FindNode($"n{subpipelineNodes[targetPipeline.Id].Id}"); + graph.AddPrecalculatedEdge(this.BuildVisualEdge(connector, targetNode, n.Name, bridgedPipeline.Name, string.Empty, string.Empty, Style.Dotted)); + break; + } + + // walk up ancestor chain until we're at a direct child subpipeline + targetPipeline = targetPipeline.ParentPipelineDiagnostics; + } + } + } + + // add connector bridge edges between descendants (shown between current-level subpiplines) + int? TryFindCurrentLevelAncestorSubpipelineId(int id) + { + foreach (var ancestor in pipelineIdToPipelineDiagnostics[id].AncestorPipelines) + { + if (subpipelineNodes.TryGetValue(ancestor.Id, out PipelineDiagnostics.PipelineElementDiagnostics subpipeline)) + { + return subpipeline.Id; + } + } + + return null; + } + + foreach (var descendantConnector in diagnostics.GetAllPipelineElementDiagnostics().Where(this.IsConnectorBridge)) + { + if (descendantConnector.Emitters.Length == 0 /* source-side of connector pair */) + { + var sourceId = descendantConnector.PipelineId; + var targetId = descendantConnector.ConnectorBridgeToPipelineElement.PipelineId; + var sourceCurrentLevelId = TryFindCurrentLevelAncestorSubpipelineId(sourceId); + var targetCurrentLevelId = TryFindCurrentLevelAncestorSubpipelineId(targetId); + if (sourceCurrentLevelId != null && targetCurrentLevelId != null && sourceCurrentLevelId != targetCurrentLevelId) + { + var sourceNode = graph.FindNode($"n{sourceCurrentLevelId}"); + var targetNode = graph.FindNode($"n{targetCurrentLevelId}"); + graph.AddPrecalculatedEdge(this.BuildVisualEdge(sourceNode, targetNode, string.Empty, descendantConnector.Name, string.Empty, string.Empty, Style.Dotted)); + } + } + } + + // add direct connections from one subpipeline (connector) to another + foreach (var c in connectorsWithinSubpipelines.Values) + { + if (c.ConnectorBridgeToPipelineElement != null) + { + if (c.ConnectorBridgeToPipelineElement.PipelineId == diagnostics.Id && c.ConnectorBridgeToPipelineElement.Receivers.Length == 1) + { + var i = c.ConnectorBridgeToPipelineElement.Receivers[0]; + if (i.Source != null && i.Source.PipelineElement.PipelineId == diagnostics.Id && i.Source.PipelineElement.ConnectorBridgeToPipelineElement != null) + { + if (subpipelineNodes.TryGetValue(i.Source.PipelineElement.ConnectorBridgeToPipelineElement.PipelineId, out PipelineDiagnostics.PipelineElementDiagnostics source) && + subpipelineNodes.TryGetValue(c.PipelineId, out PipelineDiagnostics.PipelineElementDiagnostics target)) + { + if (this.AddVisualEdge(source.Id, target.Id, i, graph, statsSelector)) + { + selectedEdgeUpdated = true; + } + } + } + } + } + } + + if (!selectedEdgeUpdated && this.model.SelectedEdgeId != -1) + { + // hide while in subpipeline + this.model.SelectedEdgeDetails = string.Empty; + } + + this.VisualizeEdgeColoring(graph); + return graph; + } + } +} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/TypeSpec.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/TypeSpec.cs index 73a31ad9..50e03aca 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/TypeSpec.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/DiagnosticsVisualization/TypeSpec.cs @@ -116,7 +116,7 @@ namespace Microsoft.Psi.PsiStudio.TypeSpec { if (i > j) { - yield return new Token(TokenKind.Name, value.Substring(j, i - j)); // preceeding name, if any + yield return new Token(TokenKind.Name, value.Substring(j, i - j)); // preceding name, if any } j = i + 1; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/ImageVisualizationObjectView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/ImageVisualizationObjectView.xaml.cs index b7ffc73b..d9f440ce 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/ImageVisualizationObjectView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/ImageVisualizationObjectView.xaml.cs @@ -16,7 +16,7 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D public partial class ImageVisualizationObjectView : UserControl { // A blank image to display when there is no data. - private static Shared blankImage = Shared.Create(new Imaging.Image(0, 0, Imaging.PixelFormat.Undefined)); + private static readonly Shared BlankImage = Shared.Create(new Imaging.Image(100, 100, Imaging.PixelFormat.BGR_24bpp)); /// /// Initializes a new instance of the class. @@ -66,20 +66,16 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D if (image == null) { // There's no data, so use the default blank image - using (Shared defaultImage = blankImage.AddRef()) - { - this.DisplayImage.UpdateImage(defaultImage); - } + using Shared defaultImage = BlankImage.AddRef(); + this.DisplayImage.UpdateImage(defaultImage); } else if (this.ImageVisualizationObject.HorizontalFlip) { // Flip the image before displaying it - Bitmap bitmap = image.Resource.ToManagedImage(true); + Bitmap bitmap = image.Resource.ToBitmap(true); bitmap.RotateFlip(RotateFlipType.RotateNoneFlipX); - using (Shared flippedImage = Shared.Create(Imaging.Image.FromManagedImage(bitmap))) - { - this.DisplayImage.UpdateImage(flippedImage); - } + using Shared flippedImage = Shared.Create(Imaging.Image.FromBitmap(bitmap)); + this.DisplayImage.UpdateImage(flippedImage); } else { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/PlotVisualizationObjectView{TPlotVisualizationObject,TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/PlotVisualizationObjectView{TPlotVisualizationObject,TData}.cs index c58b1822..b2c65730 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/PlotVisualizationObjectView{TPlotVisualizationObject,TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/PlotVisualizationObjectView{TPlotVisualizationObject,TData}.cs @@ -456,7 +456,7 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D public DateTime? StartTime { get; set; } - public DateTime EndTime { get; set; } = DateTime.MaxValue; // Start out at MaxValue so that an intial empty segment doesn't get removed from a data range change + public DateTime EndTime { get; set; } = DateTime.MaxValue; // Start out at MaxValue so that an initial empty segment doesn't get removed from a data range change public void AddPoint(DateTime time, Point point) { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/TimeIntervalHistoryVisualizationObjectViewItem.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/TimeIntervalHistoryVisualizationObjectViewItem.cs index 8d1ec7b2..44ec6739 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/TimeIntervalHistoryVisualizationObjectViewItem.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals2D/TimeIntervalHistoryVisualizationObjectViewItem.cs @@ -77,7 +77,7 @@ namespace Microsoft.Psi.Visualization.Views.Visuals2D /// The data to update the item from. internal void Update(TimeIntervalHistoryVisualizationObject.TimeIntervalVisualizationObjectData data) { - // determine the correspondance of 5 pixels in the time space + // determine the correspondence of 5 pixels in the time space var offset = 10.0 / this.parent.ScaleTransform.ScaleX; var verticalSpace = this.parent.VisualizationObject.LineWidth * 4 / this.parent.ScaleTransform.ScaleY; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectDepthVisual.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/DepthImageAs3DMeshVisual3D.cs similarity index 85% rename from Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectDepthVisual.cs rename to Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/DepthImageAs3DMeshVisual3D.cs index 5384eb5a..543e5359 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectDepthVisual.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/DepthImageAs3DMeshVisual3D.cs @@ -10,30 +10,29 @@ namespace Microsoft.Psi.Visualization.Views.Visuals3D using System.Windows.Media; using System.Windows.Media.Media3D; using Microsoft.Psi.Imaging; - using Microsoft.Psi.Visualization.Extensions; using Microsoft.Psi.Visualization.VisualizationObjects; /// - /// Represents a Kinect depth visual. + /// Represents a depth image visual. /// - public class KinectDepthVisual : ModelVisual3D + public class DepthImageAs3DMeshVisual3D : ModelVisual3D { - private KinectDepth3DVisualizationObject visualizationObject; + private DepthImageAs3DMeshVisualizationObject visualizationObject; private MeshGeometry3D meshGeometry; private Point3D[] depthFramePoints; private int[] rawDepth; /// - /// Initializes a new instance of the class. + /// Initializes a new instance of the class. /// - /// The Kinect depth 3D visualization object. - public KinectDepthVisual(KinectDepth3DVisualizationObject visualizationObject) + /// The depth image 3D visualization object. + public DepthImageAs3DMeshVisual3D(DepthImageAs3DMeshVisualizationObject visualizationObject) { this.visualizationObject = visualizationObject; this.visualizationObject.PropertyChanged += this.VisualizationObject_PropertyChanged; } - private void UpdateMesh(Image depthImage) + private void UpdateMesh(DepthImage depthImage) { if (this.depthFramePoints?.Length != (depthImage.Width * depthImage.Height)) { @@ -68,18 +67,6 @@ namespace Microsoft.Psi.Visualization.Views.Visuals3D } } - private double ConvertRawDepthToMeters(int rawDepth) - { - // http://nicolas.burrus.name/index.php/Research/KinectCalibration - // http://www.ros.org/wiki/kinect_node - if (rawDepth < 2047) - { - return 1.0 / ((rawDepth * -0.0030711016) + 3.3309495161); - } - - return 0; - } - private void CreateMesh(int width, int height, double depthDifferenceTolerance = 200) { this.meshGeometry = new MeshGeometry3D(); @@ -127,7 +114,7 @@ namespace Microsoft.Psi.Visualization.Views.Visuals3D (this.Content as GeometryModel3D).BackMaterial = material; } - private void UpdateDepth(Image depthImage) + private void UpdateDepth(DepthImage depthImage) { int width = depthImage.Width; int height = depthImage.Height; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectBodiesVisual.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectBodiesVisual.cs deleted file mode 100644 index 36d76a96..00000000 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/Visuals3D/KinectBodiesVisual.cs +++ /dev/null @@ -1,313 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Visualization.Views.Visuals3D -{ - using System; - using System.Collections.Generic; - using System.ComponentModel; - using System.Linq; - using System.Windows.Media; - using System.Windows.Media.Media3D; - using HelixToolkit.Wpf; - using MathNet.Spatial.Euclidean; - using Microsoft.Kinect; - using Microsoft.Psi.Kinect; - using Microsoft.Psi.Visualization.VisualizationObjects; - - /// - /// Represents a Kinect bodies visual. - /// - public class KinectBodiesVisual : ModelVisual3D - { - private static readonly int SphereDiv = 5; - private static readonly int PipeDiv = 7; - private Plane horizontalPlane = new Plane(new MathNet.Spatial.Euclidean.Point3D(0, 0, 0), UnitVector3D.Create(0, 0, 1)); - private int numBodies = 0; - - private KinectBodies3DVisualizationObject visualizationObject; - private Dictionary> bodyJoints = new Dictionary>(); - private Dictionary> bodyJointsTracked = new Dictionary>(); - private Dictionary, PipeVisual3D>> bodyBones = new Dictionary, PipeVisual3D>>(); - private Dictionary, bool>> bodyBonesTracked = new Dictionary, bool>>(); - private Dictionary trackingIdBillboards = new Dictionary(); - - private Brush trackedEntitiesBrush = new SolidColorBrush(); - private Brush untrackedEntitiesBrush = new SolidColorBrush(); - - /// - /// Initializes a new instance of the class. - /// - /// - /// The Kinect bodies 3D visualization object. - public KinectBodiesVisual(KinectBodies3DVisualizationObject visualizationObject) - { - this.visualizationObject = visualizationObject; - this.visualizationObject.PropertyChanged += this.VisualizationObject_PropertyChanged; - } - - private void ClearAll() - { - this.bodyJoints.Clear(); - this.bodyJointsTracked.Clear(); - this.bodyBones.Clear(); - this.bodyBonesTracked.Clear(); - this.trackingIdBillboards.Clear(); - this.Children.Clear(); - } - - private void AddBody(ulong trackingId) - { - List joints = new List(); - List jointsTracked = new List(); - for (int i = 0; i < Body.JointCount; i++) - { - var bodyPart = new SphereVisual3D() - { - ThetaDiv = SphereDiv, - PhiDiv = SphereDiv, - }; - - joints.Add(bodyPart); - jointsTracked.Add(true); - this.Children.Add(bodyPart); - } - - this.bodyJoints.Add(trackingId, joints); - this.bodyJointsTracked.Add(trackingId, jointsTracked); - - var bones = new Dictionary, PipeVisual3D> - { - { Tuple.Create(JointType.HandTipLeft, JointType.HandLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.ThumbLeft, JointType.HandLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.HandLeft, JointType.WristLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.WristLeft, JointType.ElbowLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.ElbowLeft, JointType.ShoulderLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.ShoulderLeft, JointType.SpineShoulder), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.HandTipRight, JointType.HandRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.ThumbRight, JointType.HandRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.HandRight, JointType.WristRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.WristRight, JointType.ElbowRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.ElbowRight, JointType.ShoulderRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.ShoulderRight, JointType.SpineShoulder), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.Head, JointType.Neck), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.Neck, JointType.SpineShoulder), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.SpineShoulder, JointType.SpineBase), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.SpineBase, JointType.HipRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.HipRight, JointType.KneeRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.KneeRight, JointType.AnkleRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.AnkleRight, JointType.FootRight), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.SpineBase, JointType.HipLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.HipLeft, JointType.KneeLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.KneeLeft, JointType.AnkleLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - { Tuple.Create(JointType.AnkleLeft, JointType.FootLeft), new PipeVisual3D() { ThetaDiv = PipeDiv } }, - }; - var bonesTracked = new Dictionary, bool> - { - { Tuple.Create(JointType.HandTipLeft, JointType.HandLeft), true }, - { Tuple.Create(JointType.ThumbLeft, JointType.HandLeft), true }, - { Tuple.Create(JointType.HandLeft, JointType.WristLeft), true }, - { Tuple.Create(JointType.WristLeft, JointType.ElbowLeft), true }, - { Tuple.Create(JointType.ElbowLeft, JointType.ShoulderLeft), true }, - { Tuple.Create(JointType.ShoulderLeft, JointType.SpineShoulder), true }, - { Tuple.Create(JointType.HandTipRight, JointType.HandRight), true }, - { Tuple.Create(JointType.ThumbRight, JointType.HandRight), true }, - { Tuple.Create(JointType.HandRight, JointType.WristRight), true }, - { Tuple.Create(JointType.WristRight, JointType.ElbowRight), true }, - { Tuple.Create(JointType.ElbowRight, JointType.ShoulderRight), true }, - { Tuple.Create(JointType.ShoulderRight, JointType.SpineShoulder), true }, - { Tuple.Create(JointType.Head, JointType.Neck), true }, - { Tuple.Create(JointType.Neck, JointType.SpineShoulder), true }, - { Tuple.Create(JointType.SpineShoulder, JointType.SpineBase), true }, - { Tuple.Create(JointType.SpineBase, JointType.HipRight), true }, - { Tuple.Create(JointType.HipRight, JointType.KneeRight), true }, - { Tuple.Create(JointType.KneeRight, JointType.AnkleRight), true }, - { Tuple.Create(JointType.AnkleRight, JointType.FootRight), true }, - { Tuple.Create(JointType.SpineBase, JointType.HipLeft), true }, - { Tuple.Create(JointType.HipLeft, JointType.KneeLeft), true }, - { Tuple.Create(JointType.KneeLeft, JointType.AnkleLeft), true }, - { Tuple.Create(JointType.AnkleLeft, JointType.FootLeft), true }, - }; - - foreach (var b in bones) - { - this.Children.Add(b.Value); - } - - this.bodyBones.Add(trackingId, bones); - this.bodyBonesTracked.Add(trackingId, bonesTracked); - - // add the billboard - var billboard = new BillboardTextVisual3D() - { - // Background = new SolidColorBrush(Color.FromArgb(255, 70, 85, 198)), - Background = Brushes.Gray, - Foreground = new SolidColorBrush(Colors.White), - Padding = new System.Windows.Thickness(5), - Text = $"Kinect Id: {this.numBodies++}", - }; - this.trackingIdBillboards.Add(trackingId, billboard); - this.Children.Add(billboard); - - this.UpdateProperties(); - } - - private void RemoveBody(ulong trackingId) - { - // remove joints - foreach (var joint in this.bodyJoints[trackingId]) - { - this.Children.Remove(joint); - } - - // remove bones - foreach (var bone in this.bodyBones[trackingId].Values) - { - this.Children.Remove(bone); - } - - this.Children.Remove(this.trackingIdBillboards[trackingId]); - - this.bodyJoints.Remove(trackingId); - this.bodyJointsTracked.Remove(trackingId); - this.bodyBones.Remove(trackingId); - this.bodyBonesTracked.Remove(trackingId); - this.trackingIdBillboards.Remove(trackingId); - } - - private void UpdateProperties() - { - this.trackedEntitiesBrush = new SolidColorBrush(this.visualizationObject.Color); - var alphaColor = Color.FromArgb( - (byte)(this.visualizationObject.InferredJointsOpacity * 255), - this.visualizationObject.Color.R, - this.visualizationObject.Color.G, - this.visualizationObject.Color.B); - this.untrackedEntitiesBrush = new SolidColorBrush(alphaColor); - - foreach (var body in this.bodyJoints) - { - for (int i = 0; i < body.Value.Count; i++) - { - body.Value[i].Radius = this.visualizationObject.Size; - body.Value[i].Fill = this.bodyJointsTracked[body.Key][i] ? this.trackedEntitiesBrush : this.untrackedEntitiesBrush; - } - } - - foreach (var body in this.bodyBones) - { - foreach (var bone in body.Value) - { - bone.Value.Diameter = this.visualizationObject.Size; - bone.Value.Fill = this.bodyBonesTracked[body.Key][bone.Key] ? this.trackedEntitiesBrush : this.untrackedEntitiesBrush; - } - } - - foreach (var billboard in this.trackingIdBillboards) - { - if (this.visualizationObject.ShowTrackingBillboards) - { - if (!this.Children.Contains(billboard.Value)) - { - this.Children.Add(billboard.Value); - } - } - else - { - if (this.Children.Contains(billboard.Value)) - { - this.Children.Remove(billboard.Value); - } - } - } - } - - private void UpdateBodies(List kinectBodies) - { - if (kinectBodies == null) - { - this.ClearAll(); - return; - } - - // add any missing bodies - foreach (var body in kinectBodies) - { - if (!this.bodyJoints.ContainsKey(body.TrackingId)) - { - this.AddBody(body.TrackingId); - } - } - - // remove any non-necessary bodies - var currentIds = this.bodyJoints.Select(kvp => kvp.Key).ToArray(); - foreach (var id in currentIds) - { - if (!kinectBodies.Any(b => b.TrackingId == id)) - { - this.RemoveBody(id); - } - } - - // populate the bodies with information - for (int body = 0; body < kinectBodies.Count; body++) - { - var trackingId = kinectBodies[body].TrackingId; - var bodyTracked = kinectBodies[body].IsTracked; - for (int joint = 0; joint < Body.JointCount; joint++) - { - var jointTracked = - kinectBodies[body].Joints.ContainsKey((JointType)joint) && kinectBodies[body].Joints[(JointType)joint].TrackingState != TrackingState.NotTracked; - if (body < kinectBodies.Count && bodyTracked && jointTracked) - { - var jointPosition = kinectBodies[body].Joints[(JointType)joint].Position; - this.bodyJoints[trackingId][joint].Transform = new TranslateTransform3D(jointPosition.X, jointPosition.Y, jointPosition.Z); - this.bodyJointsTracked[trackingId][joint] = kinectBodies[body].Joints[(JointType)joint].TrackingState == TrackingState.Tracked; - } - else - { - this.bodyJointsTracked[trackingId][joint] = false; - } - } - - foreach (var bone in this.bodyBones[trackingId].Keys) - { - var boneTracked = kinectBodies[body].Joints[bone.Item1].TrackingState != TrackingState.NotTracked && kinectBodies[body].Joints[bone.Item2].TrackingState != TrackingState.NotTracked; - if (body < kinectBodies.Count && bodyTracked && boneTracked) - { - var joint1Position = kinectBodies[body].Joints[bone.Item1].Position; - var joint2Position = kinectBodies[body].Joints[bone.Item2].Position; - this.bodyBones[trackingId][bone].Point1 = new System.Windows.Media.Media3D.Point3D(joint1Position.X, joint1Position.Y, joint1Position.Z); - this.bodyBones[trackingId][bone].Point2 = new System.Windows.Media.Media3D.Point3D(joint2Position.X, joint2Position.Y, joint2Position.Z); - this.bodyBonesTracked[trackingId][bone] = kinectBodies[body].Joints[bone.Item1].TrackingState == TrackingState.Tracked && kinectBodies[body].Joints[bone.Item2].TrackingState == TrackingState.Tracked; - } - else - { - this.bodyBonesTracked[trackingId][bone] = false; - } - } - - // set billboard position - var spineBasePosition = kinectBodies[body].Joints[JointType.SpineBase].Position; - this.trackingIdBillboards[trackingId].Position = new System.Windows.Media.Media3D.Point3D( - spineBasePosition.X, - spineBasePosition.Y, - spineBasePosition.Z + 1); - } - } - - private void VisualizationObject_PropertyChanged(object sender, PropertyChangedEventArgs e) - { - if (e.PropertyName == nameof(KinectBodies3DVisualizationObject.CurrentValue)) - { - this.UpdateBodies(this.visualizationObject.CurrentValue.GetValueOrDefault().Data); - } - else if (e.PropertyName == nameof(this.visualizationObject.Size) || - e.PropertyName == nameof(this.visualizationObject.Color) || - e.PropertyName == nameof(this.visualizationObject.InferredJointsOpacity)) - { - this.UpdateProperties(); - } - } - } -} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYVisualizationPanelView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYVisualizationPanelView.xaml.cs index b42ba691..b87e5dbd 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYVisualizationPanelView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYVisualizationPanelView.xaml.cs @@ -20,7 +20,7 @@ namespace Microsoft.Psi.Visualization.Views } /// - /// Gets ths visualization panel. + /// Gets the visualization panel. /// protected XYVisualizationPanel VisualizationPanel => (XYVisualizationPanel)this.DataContext; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml index be90c57b..a96ebb38 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml @@ -17,12 +17,12 @@ - + - + diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml.cs index d38c145d..337087a0 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/Views/XYZVisualizationPanelView.xaml.cs @@ -7,11 +7,8 @@ namespace Microsoft.Psi.Visualization.Views using System.Collections.Generic; using System.Collections.Specialized; using System.Windows; - using System.Windows.Input; - using System.Windows.Media; using System.Windows.Media.Animation; using System.Windows.Media.Media3D; - using Microsoft.Psi.Visualization.Views.Visuals3D; using Microsoft.Psi.Visualization.VisualizationObjects; using Microsoft.Psi.Visualization.VisualizationPanels; @@ -20,8 +17,6 @@ namespace Microsoft.Psi.Visualization.Views /// public partial class XYZVisualizationPanelView : VisualizationPanelViewBase { - private AnimatedModelVisual cameraLocation; - private bool follow = false; private Storyboard cameraStoryboard; /// @@ -31,13 +26,6 @@ namespace Microsoft.Psi.Visualization.Views { this.InitializeComponent(); this.DataContextChanged += this.XYZVisualizationPanelView_DataContextChanged; - CompositionTarget.Rendering += this.CompositionTarget_Rendering; - - // Register the view camera's name in the namescope so that it can be referenced in storyboard timelines - NameScope.SetNameScope(this, new NameScope()); - this.RegisterName(nameof(this.ViewCamera), this.ViewCamera); - - this.ViewPort3D.CameraChanged += this.ViewPort3D_CameraChanged; // Add a handler for the storyboard completed event. this.cameraStoryboard = this.FindResource("CameraStoryboard") as Storyboard; @@ -45,7 +33,7 @@ namespace Microsoft.Psi.Visualization.Views } /// - /// Gets ths visualization panel. + /// Gets the visualization panel. /// protected XYZVisualizationPanel VisualizationPanel => this.DataContext as XYZVisualizationPanel; @@ -61,19 +49,6 @@ namespace Microsoft.Psi.Visualization.Views this.SortingVisualRoot.Children.Remove(visual); } - private void ViewPort3D_CameraChanged(object sender, RoutedEventArgs e) - { - this.UpdateCameraInfoInPanel(); - } - - private void UpdateCameraInfoInPanel() - { - // Update the camera position info in the visualization panel for display in the property browser - this.VisualizationPanel.CameraPosition = this.ViewPort3D.Camera.Position; - this.VisualizationPanel.CameraLookDirection = this.ViewPort3D.Camera.LookDirection; - this.VisualizationPanel.CameraUpDirection = this.ViewPort3D.Camera.UpDirection; - } - private void XYZVisualizationPanelView_DataContextChanged(object sender, DependencyPropertyChangedEventArgs e) { if (this.VisualizationPanel != null) @@ -85,7 +60,6 @@ namespace Microsoft.Psi.Visualization.Views } this.VisualizationPanel.PropertyChanged += this.VisualizationPanel_PropertyChanged; - this.UpdateCameraInfoInPanel(); } } @@ -126,53 +100,6 @@ namespace Microsoft.Psi.Visualization.Views } } - private void CompositionTarget_Rendering(object sender, EventArgs e) - { - if (this.cameraLocation != null && this.follow) - { - var cameraController = this.ViewPort3D.CameraController; - var up = this.cameraLocation.TransformToAncestor(this.Root).Transform(this.cameraLocation.CameraTransform.Transform(new Point3D(0, 0, 1))); - var lookAt = this.cameraLocation.TransformToAncestor(this.Root).Transform(this.cameraLocation.CameraTransform.Transform(new Point3D(1, 0, 0))); - var lookFrom = this.cameraLocation.TransformToAncestor(this.Root).Transform(this.cameraLocation.CameraTransform.Transform(new Point3D(0, 0, 0))); - cameraController.CameraPosition = lookFrom; - cameraController.CameraLookDirection = lookAt - cameraController.CameraPosition; - this.ViewPort3D.Camera.UpDirection = new Vector3D(0, 0, 1); - } - } - - private void Grid_KeyDown(object sender, KeyEventArgs e) - { - // Follow mode - if (e.Key == Key.F) - { - this.follow = !this.follow; - this.cameraLocation = this.FindCameraLocation(this.Root); - } - } - - private AnimatedModelVisual FindCameraLocation(ModelVisual3D modelVisual3D) - { - if (modelVisual3D is AnimatedModelVisual model && model.IsCameraLocation) - { - return model; - } - - var children = modelVisual3D.Children; - foreach (var child in children) - { - if (child is ModelVisual3D) - { - var first = this.FindCameraLocation((ModelVisual3D)child); - if (first != null) - { - return first; - } - } - } - - return null; - } - private void AnimateCamera() { // Stop any existing storyboard that's executing. @@ -194,7 +121,7 @@ namespace Microsoft.Psi.Visualization.Views private void CameraStoryboard_Completed(object sender, EventArgs e) { - this.VisualizationPanel.CameraStoryboardCompleted(); + this.VisualizationPanel.NotifyCameraAnimationCompleted(); } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationContext.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationContext.cs index c50f5661..7b200bf6 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationContext.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationContext.cs @@ -34,7 +34,7 @@ namespace Microsoft.Psi.Visualization public class VisualizationContext : ObservableObject { private VisualizationContainer visualizationContainer; - private DatasetViewModel datasetViewModel; + private DatasetViewModel datasetViewModel = null; private DispatcherTimer liveStatusTimer = null; private List typeVisualizerActions = new List(); @@ -49,16 +49,13 @@ namespace Microsoft.Psi.Visualization private VisualizationContext() { - this.RegisterCustomSerializers(); - var booleanSchema = new AnnotationSchema("Boolean"); booleanSchema.AddSchemaValue(null, System.Drawing.Color.Gray); booleanSchema.AddSchemaValue("false", System.Drawing.Color.Red); booleanSchema.AddSchemaValue("true", System.Drawing.Color.Green); AnnotationSchemaRegistry.Default.Register(booleanSchema); - this.DatasetViewModel = new DatasetViewModel(); - this.DatasetViewModels = new ObservableCollection { this.datasetViewModel }; + this.DatasetViewModels = new ObservableCollection(); // Periodically check if there's any live partitions in the dataset this.liveStatusTimer = new DispatcherTimer(TimeSpan.FromSeconds(10), DispatcherPriority.Normal, new EventHandler(this.OnLiveStatusTimer), Application.Current.Dispatcher); @@ -137,7 +134,7 @@ namespace Microsoft.Psi.Visualization this.VisualizationContainer = visualizationContainer; // zoom into the current session if there is one - SessionViewModel sessionViewModel = this.DatasetViewModel.CurrentSessionViewModel; + SessionViewModel sessionViewModel = this.DatasetViewModel?.CurrentSessionViewModel; if (sessionViewModel != null) { // Zoom to the current session extents @@ -158,19 +155,19 @@ namespace Microsoft.Psi.Visualization } /// - /// Gets the message type for a stream. If the message type is unknown (i.e. the assembly + /// Gets the message data type for a stream. If the data type is unknown (i.e. the assembly /// that contains the message type is not currently being referenced by PsiStudio, then /// we return the generic object type. /// /// The stream tree node. /// The type of messages in the stream. - public Type GetStreamType(StreamTreeNode streamTreeNode) + public Type GetDataType(StreamTreeNode streamTreeNode) { return TypeResolutionHelper.GetVerifiedType(streamTreeNode.TypeName) ?? TypeResolutionHelper.GetVerifiedType(streamTreeNode.TypeName.Split(',')[0]) ?? typeof(object); } /// - /// Visualizes a streamin the visualization container. + /// Visualizes a streaming the visualization container. /// /// The stream to visualize. /// The visualizer metadata to use. @@ -221,7 +218,7 @@ namespace Microsoft.Psi.Visualization Type streamAdapterType = visualizerMetadata.StreamAdapterType; if (visualizerMetadata.VisualizationObjectType == typeof(MessageVisualizationObject)) { - streamAdapterType = typeof(ObjectAdapter<>).MakeGenericType(this.GetStreamType(streamTreeNode)); + streamAdapterType = typeof(ObjectAdapter<>).MakeGenericType(this.GetDataType(streamTreeNode)); } // Update the binding @@ -239,36 +236,45 @@ namespace Microsoft.Psi.Visualization /// Asynchronously opens a previously persisted dataset. /// /// Fully qualified path to dataset file. + /// Indicates whether to show the status window. /// A task that represents the asynchronous operation. - public async Task OpenDatasetAsync(string filename) + public async Task OpenDatasetAsync(string filename, bool showStatusWindow = true) { - // Window that will be used to indicate that an open operation is in progress. - // Progress notification and cancellation are not yet fully supported. - var statusWindow = new LoadingDatasetWindow(Application.Current.MainWindow, filename); - - // progress reporter for the load dataset task - var progress = new Progress<(string s, double p)>(t => + var loadDatasetTask = default(Task); + if (showStatusWindow) { - statusWindow.Status = t.s; - if (t.p == 1.0) + // Window that will be used to indicate that an open operation is in progress. + // Progress notification and cancellation are not yet fully supported. + var statusWindow = new LoadingDatasetWindow(Application.Current.MainWindow, filename); + + // progress reporter for the load dataset task + var progress = new Progress<(string s, double p)>(t => { + statusWindow.Status = t.s; + if (t.p == 1.0) + { // close the status window when the task reports completion statusWindow.Close(); + } + }); + + // start the load dataset task + loadDatasetTask = this.LoadDatasetOrStoreAsync(filename, progress); + + try + { + // show the modal status window, which will be closed once the load dataset operation completes + statusWindow.ShowDialog(); + } + catch (InvalidOperationException) + { + // This indicates that the window has already been closed in the async task, + // which means the operation has already completed, so just ignore and continue. } - }); - - // start the load dataset task - var loadDatasetTask = this.LoadDatasetOrStoreAsync(filename, progress); - - try - { - // show the modal status window, which will be closed once the load dataset operation completes - statusWindow.ShowDialog(); } - catch (InvalidOperationException) + else { - // This indicates that the window has already been closed in the async task, - // which means the operation has already completed, so just ignore and continue. + loadDatasetTask = this.LoadDatasetOrStoreAsync(filename); } try @@ -324,7 +330,7 @@ namespace Microsoft.Psi.Visualization public void ToggleLiveMode() { // Only enter live mode if the current session contains live partitions - if (this.DatasetViewModel.CurrentSessionViewModel.ContainsLivePartitions && this.VisualizationContainer.Navigator.CursorMode != CursorMode.Live) + if (this.DatasetViewModel != null && this.DatasetViewModel.CurrentSessionViewModel.ContainsLivePartitions && this.VisualizationContainer.Navigator.CursorMode != CursorMode.Live) { this.VisualizationContainer.Navigator.SetCursorMode(CursorMode.Live); } @@ -365,7 +371,7 @@ namespace Microsoft.Psi.Visualization // Get the message type. Type of object will be returned if we don't reference the // assembly that contains the message type. This will allow us to still display // the visualize messages and visualize latency menuitems. - Type messageType = this.GetStreamType(streamTreeNode); + Type messageType = this.GetDataType(streamTreeNode); // Get the list of visualization commands for this stream tree node List metadataItems = this.VisualizerMap.GetByDataType(messageType); @@ -473,17 +479,12 @@ namespace Microsoft.Psi.Visualization // Update the list of live partitions this.DatasetViewModel.UpdateLivePartitionStatuses(); - // If the're no longer any live partitions, exit live mode + // If there are no longer any live partitions, exit live mode if ((this.DatasetViewModel.CurrentSessionViewModel?.ContainsLivePartitions == false) && (this.VisualizationContainer.Navigator.CursorMode == CursorMode.Live)) { this.VisualizationContainer.Navigator.SetCursorMode(CursorMode.Manual); } } } - - private void RegisterCustomSerializers() - { - KnownSerializers.Default.Register>(null); - } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/AnimatedModel3DVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/AnimatedModel3DVisualizationObject.cs index 599d15d9..7c0d1120 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/AnimatedModel3DVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/AnimatedModel3DVisualizationObject.cs @@ -8,7 +8,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects using Microsoft.Psi.Visualization.Views.Visuals3D; /// - /// Represnts an animated model 3D visualization object. + /// Represents an animated model 3D visualization object. /// [VisualizationObject("Visualize Animated Model")] public class AnimatedModel3DVisualizationObject : Instant3DVisualizationObject diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/CoordinateSystemVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/CoordinateSystemVisualizationObject.cs index 568bcfb5..262515c4 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/CoordinateSystemVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/CoordinateSystemVisualizationObject.cs @@ -5,7 +5,6 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { - using System; using System.Runtime.Serialization; using System.Windows.Media; using HelixToolkit.Wpf; @@ -30,8 +29,6 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects new ArrowVisual3D() { ThetaDiv = ThetaDivDefault, Fill = Brushes.Blue }, }; - private CoordinateSystem currentData = null; - private double size = 35; /// @@ -59,7 +56,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects if (propertyName == nameof(this.Size)) { this.UpdateDiameters(); - this.UpdateData(this.currentData, default); + this.UpdateData(); } else if (propertyName == nameof(this.Visible)) { @@ -68,34 +65,29 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - public override void UpdateData(CoordinateSystem coordinateSystem, DateTime originatingTime) + public override void UpdateData() { - if (!Equals(this.currentData, coordinateSystem)) + if (this.CurrentData != null) { - this.currentData = coordinateSystem; + var length = this.Size / 200.0; + var x = this.CurrentData.Origin + (length * this.CurrentData.XAxis.Normalize()); + var y = this.CurrentData.Origin + (length * this.CurrentData.YAxis.Normalize()); + var z = this.CurrentData.Origin + (length * this.CurrentData.ZAxis.Normalize()); - if (this.currentData != null) - { - var length = this.Size / 200.0; - var x = this.currentData.Origin + (length * this.currentData.XAxis.Normalize()); - var y = this.currentData.Origin + (length * this.currentData.YAxis.Normalize()); - var z = this.currentData.Origin + (length * this.currentData.ZAxis.Normalize()); + this.axes[XAxisIndex].BeginEdit(); + this.axes[XAxisIndex].Point1 = new Win3D.Point3D(this.CurrentData.Origin.X, this.CurrentData.Origin.Y, this.CurrentData.Origin.Z); + this.axes[XAxisIndex].Point2 = new Win3D.Point3D(x.X, x.Y, x.Z); + this.axes[XAxisIndex].EndEdit(); - this.axes[XAxisIndex].BeginEdit(); - this.axes[XAxisIndex].Point1 = new Win3D.Point3D(this.currentData.Origin.X, this.currentData.Origin.Y, this.currentData.Origin.Z); - this.axes[XAxisIndex].Point2 = new Win3D.Point3D(x.X, x.Y, x.Z); - this.axes[XAxisIndex].EndEdit(); + this.axes[YAxisIndex].BeginEdit(); + this.axes[YAxisIndex].Point1 = new Win3D.Point3D(this.CurrentData.Origin.X, this.CurrentData.Origin.Y, this.CurrentData.Origin.Z); + this.axes[YAxisIndex].Point2 = new Win3D.Point3D(y.X, y.Y, y.Z); + this.axes[YAxisIndex].EndEdit(); - this.axes[YAxisIndex].BeginEdit(); - this.axes[YAxisIndex].Point1 = new Win3D.Point3D(this.currentData.Origin.X, this.currentData.Origin.Y, this.currentData.Origin.Z); - this.axes[YAxisIndex].Point2 = new Win3D.Point3D(y.X, y.Y, y.Z); - this.axes[YAxisIndex].EndEdit(); - - this.axes[ZAxisIndex].BeginEdit(); - this.axes[ZAxisIndex].Point1 = new Win3D.Point3D(this.currentData.Origin.X, this.currentData.Origin.Y, this.currentData.Origin.Z); - this.axes[ZAxisIndex].Point2 = new Win3D.Point3D(z.X, z.Y, z.Z); - this.axes[ZAxisIndex].EndEdit(); - } + this.axes[ZAxisIndex].BeginEdit(); + this.axes[ZAxisIndex].Point1 = new Win3D.Point3D(this.CurrentData.Origin.X, this.CurrentData.Origin.Y, this.CurrentData.Origin.Z); + this.axes[ZAxisIndex].Point2 = new Win3D.Point3D(z.X, z.Y, z.Z); + this.axes[ZAxisIndex].EndEdit(); } this.UpdateVisibility(); @@ -115,7 +107,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { foreach (ArrowVisual3D axis in this.axes) { - this.UpdateChildVisibility(axis, this.Visible && this.currentData != null); + this.UpdateChildVisibility(axis, this.Visible && this.CurrentData != null); } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectDepth3DVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DMeshVisualizationObject.cs similarity index 72% rename from Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectDepth3DVisualizationObject.cs rename to Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DMeshVisualizationObject.cs index 259ea4d0..8ceb5f5a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectDepth3DVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DMeshVisualizationObject.cs @@ -9,10 +9,10 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects using Microsoft.Psi.Visualization.Views.Visuals3D; /// - /// Represents a Kinect depth 3D visualization object. + /// Represents a depth image 3D mesh visualization object. /// - [VisualizationObject("Visualize Kinect Depth Data")] - public class KinectDepth3DVisualizationObject : Instant3DVisualizationObject> + [VisualizationObject("Visualize Depth Image as 3D Mesh")] + public class DepthImageAs3DMeshVisualizationObject : Instant3DVisualizationObject> { private Color color = Colors.Navy; @@ -29,7 +29,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// protected override void InitNew() { - this.Visual3D = new KinectDepthVisual(this); + this.Visual3D = new DepthImageAs3DMeshVisual3D(this); base.InitNew(); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DPointCloudVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DPointCloudVisualizationObject.cs new file mode 100644 index 00000000..bdbf8647 --- /dev/null +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/DepthImageAs3DPointCloudVisualizationObject.cs @@ -0,0 +1,138 @@ +// Copyright (c) Microsoft Corporation. All rights reserved. +// Licensed under the MIT license. + +namespace Microsoft.Psi.Visualization.VisualizationObjects +{ + using System.ComponentModel; + using System.Runtime.Serialization; + using System.Windows.Media; + using System.Windows.Media.Media3D; + using HelixToolkit.Wpf; + using Microsoft.Psi.Imaging; + + /// + /// Represents a depth image 3D point cloud visualization object. + /// + [VisualizationObject("Visualize Depth Image as 3D Point Cloud")] + public class DepthImageAs3DPointCloudVisualizationObject : Instant3DVisualizationObject> + { + private Color color = Colors.Green; + private double pointSize = 1.0; + private int sparsity = 1; + + private PointsVisual3D pointsVisual; + + /// + /// Gets or sets the point cloud color. + /// + [DataMember] + [DisplayName("Color")] + [Description("Color used for point cloud points.")] + public Color Color + { + get { return this.color; } + set { this.Set(nameof(this.Color), ref this.color, value); } + } + + /// + /// Gets or sets the point size. + /// + [DataMember] + [DisplayName("Point Size")] + [Description("Size of each point cloud point.")] + public double PointSize + { + get { return this.pointSize; } + set { this.Set(nameof(this.PointSize), ref this.pointSize, value); } + } + + /// + /// Gets or sets the point cloud sparsity. + /// + [DataMember] + [DisplayName("Sparsity")] + [Description("Sparseness of the cloud point.")] + public int Sparsity + { + get { return this.sparsity; } + set { this.Set(nameof(this.Sparsity), ref this.sparsity, value); } + } + + /// + protected override void InitNew() + { + this.PropertyChanged += this.VisualizationPropertyChanged; + this.Visual3D = this.pointsVisual = new PointsVisual3D() + { + Size = this.PointSize, + Color = this.Color, + }; + base.InitNew(); + } + + private void UpdatePoints(DepthImage depthImage) + { + var points = this.pointsVisual.Points; + this.pointsVisual.Points = null; // "unhook" for performance + points.Clear(); + + int width = depthImage.Width; + int height = depthImage.Height; + int cx = width / 2; + int cy = height / 2; + + const double fxinv = 1.0 / 366; + const double fyinv = 1.0 / 366; + const double scale = 0.001; // millimeters + + const ushort tooNearDepth = 500; + const ushort tooFarDepth = 10000; + const ushort unknownDepth = 0; + + unsafe + { + ushort* depthFrame = (ushort*)((byte*)depthImage.ImageData.ToPointer()); + + for (int iy = 0; iy < height; iy += this.sparsity) + { + for (int ix = 0; ix < width; ix += this.sparsity) + { + int i = (iy * width) + ix; + var d = depthFrame[(iy * width) + ix]; + if (d != unknownDepth && d > tooNearDepth && d < tooFarDepth) + { + double zz = d * scale; + double x = (cx - ix) * zz * fxinv; + double y = zz; + double z = (cy - iy) * zz * fyinv; + points.Add(new Point3D(x, y, z)); + } + } + } + } + + this.pointsVisual.Points = points; + } + + private void VisualizationPropertyChanged(object sender, PropertyChangedEventArgs e) + { + switch (e.PropertyName) + { + case nameof(this.CurrentValue): + case nameof(this.Sparsity): + if (this.CurrentData != null) + { + this.UpdatePoints(this.CurrentData.Resource); + } + + break; + case nameof(this.Color): + this.pointsVisual.Color = this.Color; + break; + case nameof(this.PointSize): + this.pointsVisual.Size = this.PointSize; + break; + } + } + } +} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IModelVisual3DVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IModelVisual3DVisualizationObject.cs index f1d0d04d..2a9610da 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IModelVisual3DVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IModelVisual3DVisualizationObject.cs @@ -3,8 +3,6 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { - using System.Collections.Generic; - /// /// Represents a model visual 3d visualization object. /// @@ -26,10 +24,10 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects void OnChildPropertyChanged(string path, object value); /// - /// Called when we need to notify the child visualization objects that a proeprty has changed. + /// Called when we need to notify the child visualization objects that a property has changed. /// /// The path from the current visualization object to the property to set. - /// The new value for the proeprty. + /// The new value for the property. void SetDescendantProperty(string path, object newValue); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IStreamVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IStreamVisualizationObject.cs index 64d5c472..546b0277 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IStreamVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/IStreamVisualizationObject.cs @@ -6,6 +6,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects using System; using Microsoft.Psi.Data; using Microsoft.Psi.Visualization.Data; + using Microsoft.Psi.Visualization.Helpers; /// /// Represents a stream visualization object. @@ -42,7 +43,8 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// Gets a snapped time based on a given time. /// /// The input time. + /// Timeline snapping behavior. /// The snapped time. - DateTime? GetSnappedTime(DateTime time); + DateTime? GetSnappedTime(DateTime time, SnappingBehavior snappingBehavior = SnappingBehavior.Nearest); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ImageVisualizationObjectBase{TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ImageVisualizationObjectBase{TData}.cs index 37ae3125..8a5c5846 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ImageVisualizationObjectBase{TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ImageVisualizationObjectBase{TData}.cs @@ -8,7 +8,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// Represents an image visualization object. /// - /// The type of the image visualzation object. + /// The type of the image visualization object. public abstract class ImageVisualizationObjectBase : Instant2DVisualizationObject { /// diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/InstantVisualizationObject{TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/InstantVisualizationObject{TData}.cs index 1208bd60..04690d73 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/InstantVisualizationObject{TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/InstantVisualizationObject{TData}.cs @@ -5,12 +5,12 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { using System; using System.ComponentModel; - using System.Reflection; using System.Runtime.Serialization; using System.Windows; using System.Windows.Threading; using Microsoft.Psi.Persistence; using Microsoft.Psi.Visualization.Data; + using Microsoft.Psi.Visualization.Helpers; /// /// Represents an instant visualization object. @@ -88,6 +88,12 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } } + /// + public override DateTime? GetSnappedTime(DateTime time, SnappingBehavior snappingBehavior) + { + return DataManager.Instance.GetOriginatingTimeOfNearestInstantMessage(this.StreamBinding, time); + } + /// /// Called when the current instant data has changed. This method is called on a worker thread. /// @@ -103,30 +109,26 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects // Abort the task if (this.lastDataChangedTask.Abort()) { - // If the data is shared, release the reference + // If the data that was to be used as the current data is shared, then decrement its reference count if (this.IsShared && (this.lastDataChangedTaskData != null)) { - (this.lastDataChangedTaskData as IDisposable).Dispose(); + (this.lastDataChangedTaskData as IDisposable).Dispose(); } } } - // Squirrel away the data object in case we need to abort the task before it gets scheduled - this.lastDataChangedTaskData = (TData)data; - - // Queue up the task on the UI thread - this.lastDataChangedTask = Application.Current.Dispatcher.BeginInvoke( - (Action)(() => - { - // Construct a message for the current value - this.CurrentValue = new Message((TData)data, indexEntry.OriginatingTime, indexEntry.Time, 0, 0); - - // If the data is shared, release the reference - if (this.IsShared && (data != null)) - { - (data as IDisposable).Dispose(); - } - }), DispatcherPriority.Render); + // Because this method is called on a worker thread and some of our Model3DVisual visualization objects directly touch UI elements + // when we call SetCurrentValue, we need to invoke the dispatcher, and we do so asynchronously for performance reasons. If data is + // a shared object then the code that called this method will release its reference to the shared data object shortly after this + // method returns. Consequently we need to add a new reference to the shared data object now instead of the usual pattern where + // the code in SetCurrentValue adds the new reference. We therefore pass false as the incrementSharedRefCount parameter to indicate + // that we've already incremented the reference count and the code in SetCurrentValue should not. We also squirrel away a reference + // to data in case we get called again before the dispatcher has had a chance to execute our task. If this happens, the currently + // pending dispatcher task is obsolete so we'll cancel it. If we cancel the task and the data for the task was a shared object then + // we'll need to dereference the data ourselves to ensure it gets released properly, see code above. + Message newValue = new Message((this.IsShared && data != null) ? ((TData)data).DeepClone() : (TData)data, indexEntry.OriginatingTime, indexEntry.Time, 0, 0); + this.lastDataChangedTaskData = newValue.Data; + this.lastDataChangedTask = Application.Current.Dispatcher.BeginInvoke((Action)(() => this.SetCurrentValue(newValue, false)), DispatcherPriority.Render); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectBodies3DVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectBodies3DVisualizationObject.cs deleted file mode 100644 index e9b6437c..00000000 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/KinectBodies3DVisualizationObject.cs +++ /dev/null @@ -1,71 +0,0 @@ -// Copyright (c) Microsoft Corporation. All rights reserved. -// Licensed under the MIT license. - -namespace Microsoft.Psi.Visualization.VisualizationObjects -{ - using System.Collections.Generic; - using System.Runtime.Serialization; - using System.Windows.Media; - using Microsoft.Psi.Kinect; - using Microsoft.Psi.Visualization.Views.Visuals3D; - - /// - /// Represents a Kinect bodies 3D visualization object. - /// - [VisualizationObject("Visualize Kinect Bodies")] - public class KinectBodies3DVisualizationObject : Instant3DVisualizationObject> - { - private Color color = Colors.White; - private double inferredJointsOpacity = 0; - private double size = 0.03; - private bool showTrackingBillboards = false; - - /// - /// Initializes a new instance of the class. - /// - public KinectBodies3DVisualizationObject() - { - this.Visual3D = new KinectBodiesVisual(this); - } - - /// - /// Gets or sets the color. - /// - [DataMember] - public Color Color - { - get { return this.color; } - set { this.Set(nameof(this.Color), ref this.color, value); } - } - - /// - /// Gets or sets the inferred joints opacity. - /// - [DataMember] - public double InferredJointsOpacity - { - get { return this.inferredJointsOpacity; } - set { this.Set(nameof(this.InferredJointsOpacity), ref this.inferredJointsOpacity, value); } - } - - /// - /// Gets or sets the size. - /// - [DataMember] - public double Size - { - get { return this.size; } - set { this.Set(nameof(this.Size), ref this.size, value); } - } - - /// - /// Gets or sets a value indicating whether to show tracking billboards. - /// - [DataMember] - public bool ShowTrackingBillboards - { - get { return this.showTrackingBillboards; } - set { this.Set(nameof(this.ShowTrackingBillboards), ref this.showTrackingBillboards, value); } - } - } -} diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectCollectionBase{TVisObj,TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectCollectionBase{TVisualizationObject,TData}.cs similarity index 89% rename from Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectCollectionBase{TVisObj,TData}.cs rename to Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectCollectionBase{TVisualizationObject,TData}.cs index 63855735..fe5a9286 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectCollectionBase{TVisObj,TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectCollectionBase{TVisualizationObject,TData}.cs @@ -12,10 +12,10 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// Represents the base class for collections of 3D model visualization objects. /// - /// The type of visualization objects in the collection. + /// The type of visualization objects in the collection. /// The type of data being represented. - public abstract class ModelVisual3DVisualizationObjectCollectionBase : ModelVisual3DVisualizationObject - where TVisObj : VisualizationObject, IModelVisual3DVisualizationObject, ICustomTypeDescriptor, new() + public abstract class ModelVisual3DVisualizationObjectCollectionBase : ModelVisual3DVisualizationObject + where TVisualizationObject : VisualizationObject, IModelVisual3DVisualizationObject, ICustomTypeDescriptor, new() { // The list of properties of the prototype (including the prototype's children) // that have changed since this collection was created. After we create a new @@ -28,7 +28,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects public ModelVisual3DVisualizationObjectCollectionBase() { // Create the prototype child visualization object and register for property changed notifications from it. - this.Prototype = new TVisObj(); + this.Prototype = new TVisualizationObject(); this.Prototype.RegisterChildPropertyChangedNotifications(this, nameof(this.Prototype)); // Create the list of combined property descriptors (for this collection class and the child prototype) @@ -39,13 +39,13 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// Gets the prototype child visualization object. /// [Browsable(false)] - [IgnoreDataMember] - public TVisObj Prototype { get; private set; } + [DataMember] + public TVisualizationObject Prototype { get; private set; } /// /// Gets or sets the collection of child visualization objects. /// - protected IEnumerable Items { get; set; } + protected IEnumerable Items { get; set; } /// public override void OnChildPropertyChanged(string path, object value) @@ -59,7 +59,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects if (nextSegment == nameof(this.Prototype)) { // Set the new property value on all of the children - foreach (TVisObj item in this.Items) + foreach (TVisualizationObject item in this.Items) { item.SetDescendantProperty(pathRemainder, value); } @@ -79,7 +79,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects // Properties in prototype do not appear in the property browser // if they have the same name as a property in this parent collection // class. This applies to all public properties that were defined - // high up in the heirarchy. Of these hidden properties, the only + // high up in the hierarchy. Of these hidden properties, the only // one we want to propagate to the children is the visible property // and setting it on the prototype will cause it to automatically // be propagated to the children. @@ -91,13 +91,13 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// Creates a new created TVisObj and then copies the values of all properties - /// of the proptotype (and its children) that have changed into the new object. + /// of the prototype (and its children) that have changed into the new object. /// /// The newly created TVisObj. - protected TVisObj CreateNew() + protected TVisualizationObject CreateNew() { // Create the new object - TVisObj visualizationObject = new TVisObj(); + TVisualizationObject visualizationObject = new TVisualizationObject(); // Copy all of the prototype's updated properties into the new object. foreach (var property in this.updatedPrototypeProperties) @@ -138,7 +138,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects private void CopyPropertyValue(object destination, string path, object value) { - // Get the next segemnt in the path to the property + // Get the next segment in the path to the property this.GetNextPropertyPathSegment(path, out string nextSegment, out string pathRemainder); // Get the property info for the next segment in the path diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectEnumerable{TVisObj,TData,TColl}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectEnumerable{TVisObj,TData,TColl}.cs index e97f644b..6ddfb553 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectEnumerable{TVisObj,TData,TColl}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObjectEnumerable{TVisObj,TData,TColl}.cs @@ -3,7 +3,6 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { - using System; using System.Collections.Generic; /// @@ -11,7 +10,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// The type of visualization objects in the collection. /// The type of data of each item in the collection. - /// The type of of the collection. + /// The type of the collection. public abstract class ModelVisual3DVisualizationObjectEnumerable : ModelVisual3DVisualizationObjectCollectionBase where TVisObj : ModelVisual3DVisualizationObject, new() where TColl : IEnumerable @@ -28,21 +27,21 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - public override void UpdateData(TColl currentData, DateTime originatingTime) + public override void UpdateData() { - if (currentData != null) + if (this.CurrentData != null) { int index = 0; - foreach (TData datum in currentData) + foreach (TData datum in this.CurrentData) { - // If we don't have enought visualization objects, create a new one + // If we don't have enough visualization objects, create a new one while (index >= this.ModelView.Children.Count) { this.AddNew(datum); } // Get the child visualization object to update itself - this.children[index].UpdateData(datum, originatingTime); + this.children[index].SetCurrentValue(this.SynthesizeMessage(datum)); index++; } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObject{TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObject{TData}.cs index eb7e2b90..1f70737d 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObject{TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/ModelVisual3DVisualizationObject{TData}.cs @@ -24,7 +24,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects // The list of properties that should not appear in the property browser if // this visualization object is the child of another visualization object. - private List hiddenChildProperties = new List() { "CursorEpsilonMs", "InterpolationStyle", "Name" }; + private List hiddenChildProperties = new List() { nameof(CursorEpsilonMs), nameof(Name), nameof(StreamAdapterType), nameof(SummarizerType) }; /// /// Gets the model view of this visualization object. @@ -67,9 +67,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// Called when the current stream data has changed. /// - /// The data for the current value. - /// The originating time of the current data. - public abstract void UpdateData(TData currentData, DateTime originatingTime); + public abstract void UpdateData(); /// /// Called when a property other than CurrentValue changes. @@ -98,7 +96,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects PropertyInfo property = this.GetType().GetProperty(nextSegment); // If we're at the end of the path, we're at the property and we can - // set it, otherwise we still need to drill further into the heirarchy + // set it, otherwise we still need to drill further into the hierarchy if (string.IsNullOrEmpty(remainder)) { property.SetValue(this, newValue); @@ -206,12 +204,10 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// protected override void OnPropertyChanged(object sender, PropertyChangedEventArgs e) { - Message currentValue = this.CurrentValue.GetValueOrDefault(); - if (e.PropertyName == nameof(this.CurrentValue)) { // Notify of the change to the current data - this.UpdateData(currentValue == default ? default : currentValue.Data, currentValue.OriginatingTime); + this.UpdateData(); } else { @@ -255,6 +251,17 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } } + /// + /// Creates a new struct suitable for passing to a child . + /// + /// The type of the new message. + /// The new message data. + /// A newly created message using the envelope of the current value. + protected Message SynthesizeMessage(T data) + { + return new Message(data, this.CurrentValue.Value.OriginatingTime, this.CurrentValue.Value.Time, this.CurrentValue.Value.SourceId, this.CurrentValue.Value.SequenceId); + } + /// /// Gets the next path segment from a property path. /// @@ -290,7 +297,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// private void RemoveHiddenChildProperties() { - // TypeDeescriptor.GetProperties returns a readonly collction, so we need to copy + // TypeDeescriptor.GetProperties returns a readonly collection, so we need to copy // the properties to a new collection, skipping those properties we wish to hide. PropertyDescriptorCollection updatedPropertyDescriptors = new PropertyDescriptorCollection(null); diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PipelineDiagnosticsVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PipelineDiagnosticsVisualizationObject.cs index 790ab6c9..570574af 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PipelineDiagnosticsVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PipelineDiagnosticsVisualizationObject.cs @@ -260,7 +260,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - /// Gets or sets hilight color. + /// Gets or sets highlight color. /// [DataMember] [DisplayName("Highlight Color")] @@ -269,7 +269,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects public Color HighlightColor { get { return this.highlightColor; } - set { this.Set(nameof(this.highlightColor), ref this.highlightColor, value); } + set { this.Set(nameof(this.HighlightColor), ref this.highlightColor, value); } } /// diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PlotVisualizationObject{TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PlotVisualizationObject{TData}.cs index e5a4e07a..e30e451a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PlotVisualizationObject{TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/PlotVisualizationObject{TData}.cs @@ -231,7 +231,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// protected override int GetIndexForTime(DateTime currentTime, int count, Func timeAtIndex) { - return IndexHelper.GetIndexForTime(currentTime, count, timeAtIndex, this.InterpolationStyle); + return IndexHelper.GetIndexForTime(currentTime, count, timeAtIndex); } /// diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/Rect3DVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/Rect3DVisualizationObject.cs index 6b34d91e..99c37bf4 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/Rect3DVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/Rect3DVisualizationObject.cs @@ -24,9 +24,6 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects // The edges that make up the 3D rectangle private PipeVisual3D[] edges; - // The value the last time this object was updated - private Rect3D currentData = default; - /// /// Initializes a new instance of the class. /// @@ -67,19 +64,18 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - public override void UpdateData(Rect3D data, DateTime originatingTime) + public override void UpdateData() { - this.currentData = data; - if (this.currentData != default) + if (this.CurrentData != default) { - var p0 = new Point3D(data.Location.X, data.Location.Y, data.Location.Z); - var p1 = new Point3D(data.Location.X + data.SizeX, data.Location.Y, data.Location.Z); - var p2 = new Point3D(data.Location.X + data.SizeX, data.Location.Y + data.SizeY, data.Location.Z); - var p3 = new Point3D(data.Location.X, data.Location.Y + data.SizeY, data.Location.Z); - var p4 = new Point3D(data.Location.X, data.Location.Y, data.Location.Z + data.SizeZ); - var p5 = new Point3D(data.Location.X + data.SizeX, data.Location.Y, data.Location.Z + data.SizeZ); - var p6 = new Point3D(data.Location.X + data.SizeX, data.Location.Y + data.SizeY, data.Location.Z + data.SizeZ); - var p7 = new Point3D(data.Location.X, data.Location.Y + data.SizeY, data.Location.Z + data.SizeZ); + var p0 = new Point3D(this.CurrentData.Location.X, this.CurrentData.Location.Y, this.CurrentData.Location.Z); + var p1 = new Point3D(this.CurrentData.Location.X + this.CurrentData.SizeX, this.CurrentData.Location.Y, this.CurrentData.Location.Z); + var p2 = new Point3D(this.CurrentData.Location.X + this.CurrentData.SizeX, this.CurrentData.Location.Y + this.CurrentData.SizeY, this.CurrentData.Location.Z); + var p3 = new Point3D(this.CurrentData.Location.X, this.CurrentData.Location.Y + this.CurrentData.SizeY, this.CurrentData.Location.Z); + var p4 = new Point3D(this.CurrentData.Location.X, this.CurrentData.Location.Y, this.CurrentData.Location.Z + this.CurrentData.SizeZ); + var p5 = new Point3D(this.CurrentData.Location.X + this.CurrentData.SizeX, this.CurrentData.Location.Y, this.CurrentData.Location.Z + this.CurrentData.SizeZ); + var p6 = new Point3D(this.CurrentData.Location.X + this.CurrentData.SizeX, this.CurrentData.Location.Y + this.CurrentData.SizeY, this.CurrentData.Location.Z + this.CurrentData.SizeZ); + var p7 = new Point3D(this.CurrentData.Location.X, this.CurrentData.Location.Y + this.CurrentData.SizeY, this.CurrentData.Location.Z + this.CurrentData.SizeZ); this.UpdateLinePosition(this.edges[0], p0, p1); this.UpdateLinePosition(this.edges[1], p1, p2); @@ -139,7 +135,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { foreach (PipeVisual3D line in this.edges) { - this.UpdateChildVisibility(line, this.Visible && this.currentData != default); + this.UpdateChildVisibility(line, this.Visible && this.CurrentData != default); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/StreamVisualizationObject{TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/StreamVisualizationObject{TData}.cs index cae2e41f..5d852778 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/StreamVisualizationObject{TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/StreamVisualizationObject{TData}.cs @@ -64,7 +64,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// [Browsable(false)] [IgnoreDataMember] - public override bool CanSnapToStream => true; + public override bool CanSnapToStream => this.IsBound; /// /// Gets the snap to stream command. @@ -95,11 +95,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { if (this.zoomToStreamCommand == null) { - this.zoomToStreamCommand = new RelayCommand( - () => - { - this.Container.Navigator.Zoom(this.StreamBinding.StreamMetadata.FirstMessageOriginatingTime, this.StreamBinding.StreamMetadata.LastMessageOriginatingTime); - }); + this.zoomToStreamCommand = new RelayCommand(() => this.Container.Navigator.Zoom(this.StreamBinding.StreamMetadata.FirstMessageOriginatingTime, this.StreamBinding.StreamMetadata.LastMessageOriginatingTime)); } return this.zoomToStreamCommand; @@ -107,37 +103,25 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - /// Gets or sets the current value. + /// Gets the current value. /// [Browsable(false)] [IgnoreDataMember] - public Message? CurrentValue - { - get => this.currentValue; - protected set - { - if (this.currentValue != value) - { - this.RaisePropertyChanging(nameof(this.CurrentValue)); + public Message? CurrentValue => this.currentValue; - if (this.IsShared) - { - if (this.currentValue.HasValue) - { - ((IDisposable)this.currentValue.Value.Data)?.Dispose(); - } + /// + /// Gets the current data. + /// + [Browsable(false)] + [IgnoreDataMember] + public TData CurrentData => this.currentValue.HasValue ? this.currentValue.Value.Data : default; - value.DeepClone(ref this.currentValue); - } - else - { - this.currentValue = value; - } - - this.RaisePropertyChanged(nameof(this.CurrentValue)); - } - } - } + /// + /// Gets the originating time of the current data. + /// + [Browsable(false)] + [IgnoreDataMember] + public DateTime CurrentOriginatingTime => this.currentValue.HasValue ? this.currentValue.Value.OriginatingTime : default; /// /// Gets or sets the data view. @@ -165,7 +149,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } else { - this.CurrentValue = null; + this.SetCurrentValue(null); } } } @@ -187,22 +171,25 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// [Browsable(true)] [IgnoreDataMember] - public Type StreamAdapterType => this.StreamBinding.StreamAdapterType; + public Type StreamAdapterType => this.StreamBinding?.StreamAdapterType; /// /// Gets the summarizer type. /// [Browsable(true)] [IgnoreDataMember] - public Type SummarizerType => this.StreamBinding.SummarizerType; + public Type SummarizerType => this.StreamBinding?.SummarizerType; /// - /// Gets a value indicating whether the visualization object is currenty bound to a datasource. + /// Gets a value indicating whether the visualization object is currently bound to a datasource. /// [Browsable(false)] [IgnoreDataMember] public bool IsBound => this.StreamBinding != null ? this.StreamBinding.IsBound : false; + /// + public override bool ShowZoomToStreamMenuItem => this.IsBound; + /// [Browsable(false)] [IgnoreDataMember] @@ -256,10 +243,47 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - /// Gets a value indicating whether type paramamter T is Shared{} or not. + /// Gets a value indicating whether type parameter T is Shared{} or not. /// protected bool IsShared { get; private set; } + /// + /// Sets the current value for the visualization object. + /// + /// The value to use as the new current value. + /// True if the reference count of shared data should be automatically incremented, otherwise false. + public void SetCurrentValue(Message? value, bool incrementSharedRefCount = true) + { + if (this.currentValue != value) + { + this.RaisePropertyChanging(nameof(this.CurrentValue)); + this.RaisePropertyChanging(nameof(this.CurrentData)); + this.RaisePropertyChanging(nameof(this.CurrentOriginatingTime)); + + // If we're handling shared objects, decrement the reference count of the current value + if (this.IsShared && this.currentValue.HasValue) + { + ((IDisposable)this.currentValue.Value.Data)?.Dispose(); + } + + // If we're handling shared objects, increment the reference count if requested. + // NOTE: InstantVisualzationObject will pass false for incrementSharedRefCount + // because it already increased the reference count itself before calling us. + if (this.IsShared && incrementSharedRefCount) + { + this.currentValue = value.DeepClone(); + } + else + { + this.currentValue = value; + } + + this.RaisePropertyChanged(nameof(this.CurrentValue)); + this.RaisePropertyChanged(nameof(this.CurrentData)); + this.RaisePropertyChanged(nameof(this.CurrentOriginatingTime)); + } + } + /// public override void ToggleSnapToStream() { @@ -293,10 +317,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// public void UpdateStreamBinding(Session session) { - this.RaisePropertyChanging(nameof(this.IconSource)); - this.RaisePropertyChanging(nameof(this.CanSnapToStream)); - - // Keep a note of whether we're currenty bound to a source + // Keep a note of whether we're currently bound to a source bool wasBound = this.StreamBinding.IsBound; // Attempt to rebind to the underlying dataset @@ -308,6 +329,10 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects return; } + this.RaisePropertyChanging(nameof(this.IconSource)); + this.RaisePropertyChanging(nameof(this.CanSnapToStream)); + this.RaisePropertyChanging(nameof(this.ShowZoomToStreamMenuItem)); + // Notify that we're no longer bound to the previous data source if (wasBound) { @@ -322,12 +347,14 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects this.RaisePropertyChanged(nameof(this.IconSource)); this.RaisePropertyChanged(nameof(this.CanSnapToStream)); + this.RaisePropertyChanged(nameof(this.ShowZoomToStreamMenuItem)); } /// - public virtual DateTime? GetSnappedTime(DateTime time) + public virtual DateTime? GetSnappedTime(DateTime time, SnappingBehavior snappingBehavior = SnappingBehavior.Nearest) { - return this.GetTimeOfNearestMessage(time, this.Data?.Count ?? 0, (idx) => this.Data[idx].OriginatingTime); + // TODO + return this.GetTimeOfNearestMessage(time, this.Data?.Count ?? 0, (idx) => this.Data[idx].OriginatingTime, snappingBehavior); } /// @@ -336,10 +363,11 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// The time underneath the mouse cursor. /// Number of entries to search within. /// Function that returns an index given a time. + /// Timeline snapping behavior. /// The timestamp of the message that's temporally closest to currentTime. - protected DateTime? GetTimeOfNearestMessage(DateTime currentTime, int count, Func timeAtIndex) + protected DateTime? GetTimeOfNearestMessage(DateTime currentTime, int count, Func timeAtIndex, SnappingBehavior snappingBehavior) { - int index = IndexHelper.GetIndexForTime(currentTime, count, timeAtIndex); + int index = IndexHelper.GetIndexForTime(currentTime, count, timeAtIndex, snappingBehavior); if (index >= 0) { return timeAtIndex(index); @@ -378,7 +406,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects var last = this.Data.LastOrDefault(); if (last != default(Message)) { - this.CurrentValue = last; + this.SetCurrentValue(last); } } } @@ -405,6 +433,12 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects protected virtual void OnStreamUnbound() { this.Data = null; + + // If this is the stream currently being snapped to, disable snap to stream. + if (this.IsSnappedToStream) + { + this.ToggleSnapToStream(); + } } private void OnDataDetailedCollectionChanged(object sender, NotifyCollectionChangedEventArgs e) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimeIntervalHistoryVisualizationObject.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimeIntervalHistoryVisualizationObject.cs index b2fcfa2c..be7b958a 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimeIntervalHistoryVisualizationObject.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimeIntervalHistoryVisualizationObject.cs @@ -46,12 +46,12 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects private string legendValue = string.Empty; /// - /// Gets the data to de displayed in the control. + /// Gets the data to be displayed in the control. /// public List DisplayData { get; private set; } = new List(); /// - /// Gets the data to de displayed in the control. + /// Gets the data to be displayed in the control. /// public int TrackCount => Math.Max(1, this.trackNames.Count); @@ -220,7 +220,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects private void GenerateLegendValue() { - // For now the legend value is simmply a list of all the track names + // For now the legend value is simply a list of all the track names StringBuilder legend = new StringBuilder(); foreach (string trackName in this.trackNames) { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimelineVisualizationObject{TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimelineVisualizationObject{TData}.cs index 85685216..bebef8d8 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimelineVisualizationObject{TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/TimelineVisualizationObject{TData}.cs @@ -11,6 +11,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects using System.Windows.Media; using Microsoft.Psi.Visualization.Collections; using Microsoft.Psi.Visualization.Data; + using Microsoft.Psi.Visualization.Helpers; using Microsoft.Psi.Visualization.Navigation; using Microsoft.Psi.Visualization.VisualizationPanels; @@ -109,24 +110,21 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } } - /// - public override bool ShowZoomToStreamMenuItem => true; - /// /// Gets a value indicating whether the visualization object is using summarization. /// protected bool IsUsingSummarization => this.StreamBinding.SummarizerType != null; /// - public override DateTime? GetSnappedTime(DateTime time) + public override DateTime? GetSnappedTime(DateTime time, SnappingBehavior snappingBehavior) { if (this.IsUsingSummarization) { - return this.GetTimeOfNearestMessage(time, this.SummaryData?.Count ?? 0, (idx) => this.SummaryData[idx].OriginatingTime); + return this.GetTimeOfNearestMessage(time, this.SummaryData?.Count ?? 0, (idx) => this.SummaryData[idx].OriginatingTime, snappingBehavior); } else { - return base.GetSnappedTime(time); + return base.GetSnappedTime(time, snappingBehavior); } } @@ -238,7 +236,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects IntervalData last = this.SummaryData.LastOrDefault(); if (last != default(IntervalData)) { - this.CurrentValue = Message.Create(last.Value, last.OriginatingTime, last.EndTime, 0, 0); + this.SetCurrentValue(Message.Create(last.Value, last.OriginatingTime, last.EndTime, 0, 0)); } } } @@ -254,11 +252,11 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects if (index != -1) { var interval = this.SummaryData[index]; - this.CurrentValue = Message.Create(interval.Value, interval.OriginatingTime, interval.EndTime, 0, 0); + this.SetCurrentValue(Message.Create(interval.Value, interval.OriginatingTime, interval.EndTime, 0, 0)); } else { - this.CurrentValue = null; + this.SetCurrentValue(null); } } else @@ -266,11 +264,11 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects int index = this.GetIndexForTime(currentTime, this.Data?.Count ?? 0, (idx) => this.Data[idx].OriginatingTime); if (index != -1) { - this.CurrentValue = this.Data[index]; + this.SetCurrentValue(this.Data[index]); } else { - this.CurrentValue = null; + this.SetCurrentValue(null); } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableModelVisual3DVisualizationObjectDictionary{TVisObj,TKey,TData}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableModelVisual3DVisualizationObjectDictionary{TVisObj,TKey,TData}.cs index 8f2cd924..c5da4c6b 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableModelVisual3DVisualizationObjectDictionary{TVisObj,TKey,TData}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableModelVisual3DVisualizationObjectDictionary{TVisObj,TKey,TData}.cs @@ -26,6 +26,9 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects // Specifies whether we're currently inside a BeginUpdate/EndUpdate operation. private bool isUpdating = false; + // Specifies a predicate that determines the visibility of the individual items. + private Predicate visibilityPredicate = null; + /// /// Initializes a new instance of the class. /// @@ -65,6 +68,11 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects // Add the visual to the collection and to the model visual this.visuals[key] = visual; + if (this.visibilityPredicate != null) + { + this.visuals[key].Visible = this.visibilityPredicate(key); + } + this.ModelView.Children.Add(visual.ModelView); } @@ -113,9 +121,9 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - public override void UpdateData(Dictionary currentData, DateTime originatingTime) + public override void UpdateData() { - if (currentData == null) + if (this.CurrentData == null) { this.RemoveAll(); } @@ -123,9 +131,9 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects { this.BeginUpdate(); - foreach (var datum in currentData) + foreach (var datum in this.CurrentData) { - this[datum.Key].UpdateData(datum.Value, originatingTime); + this[datum.Key].SetCurrentValue(this.SynthesizeMessage(datum.Value)); } this.EndUpdate(); @@ -138,6 +146,19 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects base.NotifyPropertyChanged(propertyName); } + /// + /// Set the visibility of the 3D visualization objects based on a specified predicate. + /// + /// A predicate that determines whether the visualization object corresponding to a given key is visible. + public void SetVisibility(Predicate visibilityPredicate) + { + this.visibilityPredicate = visibilityPredicate; + foreach (var key in this.visuals.Keys) + { + this.visuals[key].Visible = visibilityPredicate(key); + } + } + private void RemoveAll() { this.visuals.Clear(); diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DDictionary{TKey,TVisual}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DDictionary{TKey,TVisual}.cs index 53de3270..7578e466 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DDictionary{TKey,TVisual}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DDictionary{TKey,TVisual}.cs @@ -31,7 +31,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// Initializes a new instance of the class. /// - /// The delegate that identifies the method to call whne a new TVisual + /// The delegate that identifies the method to call when a new TVisual /// needs to be initialized. This parameter can be null if no initialization is required. public UpdatableVisual3DDictionary(NewVisualHandler newVisualHandler) { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DList{TVisual}.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DList{TVisual}.cs index 043e4762..006ede9e 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DList{TVisual}.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/UpdatableVisual3DList{TVisual}.cs @@ -29,7 +29,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects /// /// Initializes a new instance of the class. /// - /// The delegate that identifies the method to call whne a new TVisual + /// The delegate that identifies the method to call when a new TVisual /// needs to be initialized. This parameter can be null if no initialization is required. public UpdatableVisual3DList(NewVisualHandler newVisualHandler) { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/VisualizationContainer.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/VisualizationContainer.cs index c790e2cd..2b479456 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/VisualizationContainer.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationObjects/VisualizationContainer.cs @@ -46,7 +46,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects private ObservableCollection panels; /// - /// multithreaded collection lock. + /// Multithreaded collection lock. /// private object panelsLock; @@ -391,7 +391,7 @@ namespace Microsoft.Psi.Visualization.VisualizationObjects } /// - /// Zoom to the spcified time interval. + /// Zoom to the specified time interval. /// /// Time interval to zoom to. public void ZoomToRange(TimeInterval timeInterval) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/TimelineVisualizationPanel.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/TimelineVisualizationPanel.cs index bd10b063..730818d3 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/TimelineVisualizationPanel.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/TimelineVisualizationPanel.cs @@ -221,7 +221,7 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels VisualizationObject snappedVisualizationObject = this.Container.SnapToVisualizationObject; // Work out how many visualization objects we could potentially snap to. If one of - // this panel's visualization objects is currenlty being snapped to, then this total + // this panel's visualization objects is currently being snapped to, then this total // is actually one fewer, and we'll also need to add an "unsnap" menu item. int snappableVisualizationObjectsCount = this.VisualizationObjects.Count; if ((snappedVisualizationObject != null) && this.VisualizationObjects.Contains(snappedVisualizationObject)) diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanel.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanel.cs index f0d5716e..b6ec52c6 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanel.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanel.cs @@ -63,7 +63,7 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels private VisualizationObject currentVisualizationObject; /// - /// multithreaded collection lock. + /// Multithreaded collection lock. /// private object visualizationObjectsLock; diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelFactory.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelFactory.cs index 4f7012b2..4094d283 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelFactory.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelFactory.cs @@ -26,7 +26,7 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels case VisualizationPanelType.XYZ: return Activator.CreateInstance(); default: - throw new ArgumentException(string.Format("Unknown visualiation panel type {0}.", visualizationPanelType.ToString())); + throw new ArgumentException(string.Format("Unknown visualization panel type {0}.", visualizationPanelType.ToString())); } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelType.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelType.cs index e720707a..b6a3de1d 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelType.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelType.cs @@ -4,7 +4,7 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels { /// - /// Visualizationo panel types. + /// Visualization panel types. /// public enum VisualizationPanelType { diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelTypeAttribute.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelTypeAttribute.cs index b36710ee..83012bb1 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelTypeAttribute.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/VisualizationPanelTypeAttribute.cs @@ -7,7 +7,7 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels using System.Windows.Media; /// - /// represetns a visualization panel type attribute. + /// Represents a visualization panel type attribute. /// [AttributeUsage(AttributeTargets.Class)] public class VisualizationPanelTypeAttribute : Attribute diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/XYZVisualizationPanel.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/XYZVisualizationPanel.cs index 6165d5d8..801f1b53 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/XYZVisualizationPanel.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizationPanels/XYZVisualizationPanel.cs @@ -23,35 +23,30 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels private double minorDistance = 5; private double thickness = 0.01; - /// - /// The extents of the models in the scene. - /// - private Rect3D sceneExtents; - /// /// The current plan for moving the camera. /// private Dictionary cameraAnimation; /// - /// The point towards which the camera looks. + /// The current camera position. /// - private Point3D modelCenterOffset; - - /// - /// The curreent camera position. - /// - private Point3D cameraPosition; + private Point3D cameraPosition = new Point3D(15, 15, 15); /// /// The current camera look direction. /// - private Vector3D cameraLookDirection; + private Vector3D cameraLookDirection = new Vector3D(-15, -15, -15); /// /// The current camera up direction. /// - private Vector3D cameraUpDirection; + private Vector3D cameraUpDirection = new Vector3D(0, 0, 1); + + /// + /// The current camera field of view. + /// + private double cameraFieldOfView = 45; /// /// Initializes a new instance of the class. @@ -113,31 +108,12 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels set { this.Set(nameof(this.Thickness), ref this.thickness, value); } } - /// - /// Gets or sets the extents of the models in the scene. - /// - public Rect3D SceneExtents - { - get { return this.sceneExtents; } - set { this.Set(nameof(this.SceneExtents), ref this.sceneExtents, value); } - } - - /// - /// Gets or sets the offset of the center of the model from the origin. - /// - [IgnoreDataMember] - [ExpandableObject] - public Point3D ModelCenterOffset - { - get { return this.modelCenterOffset; } - set { this.Set(nameof(this.ModelCenterOffset), ref this.modelCenterOffset, value); } - } - /// /// Gets or sets the view's camera position. /// [IgnoreDataMember] [ExpandableObject] + [Description("The view camera position.")] public Point3D CameraPosition { get { return this.cameraPosition; } @@ -149,6 +125,7 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels /// [IgnoreDataMember] [ExpandableObject] + [Description("The view camera look direction.")] public Vector3D CameraLookDirection { get { return this.cameraLookDirection; } @@ -160,16 +137,29 @@ namespace Microsoft.Psi.Visualization.VisualizationPanels /// [IgnoreDataMember] [ExpandableObject] + [Description("The view camera up direction.")] public Vector3D CameraUpDirection { get { return this.cameraUpDirection; } set { this.Set(nameof(this.CameraUpDirection), ref this.cameraUpDirection, value); } } + /// + /// Gets or sets the view's camera field of view (in degrees). + /// + [IgnoreDataMember] + [ExpandableObject] + [Description("The view camera field of view.")] + public double CameraFieldOfView + { + get { return this.cameraFieldOfView; } + set { this.Set(nameof(this.CameraFieldOfView), ref this.cameraFieldOfView, value); } + } + /// /// Called when the views's current camera animation has completed. /// - public void CameraStoryboardCompleted() + public void NotifyCameraAnimationCompleted() { this.CameraAnimationCompleted?.Invoke(this, EventArgs.Empty); } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMap.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMap.cs index 3dffce98..d2a9db5b 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMap.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMap.cs @@ -24,11 +24,6 @@ namespace Microsoft.Psi.Visualization // The list of default assemblies in which the visualizer mapper will search for visualization objects, adapter, and summarizers. private string[] defaultAssemblies = new[] { "Microsoft.Psi.Visualization.Common.Windows.dll" }; - /// - /// True if the Initialize() has been called, otherwise false. - /// - private bool isInitialized = false; - // The list of summarizers that were found during discovery. private Dictionary summarizers = new Dictionary(); @@ -38,6 +33,11 @@ namespace Microsoft.Psi.Visualization // The list of visualization objects that were found during discovery. private List visualizers = new List(); + /// + /// Gets a value indicating whether or not Initialize() has been called. + /// + public bool IsInitialized { get; private set; } = false; + /// /// Initializes the visualizer map. /// @@ -56,7 +56,7 @@ namespace Microsoft.Psi.Visualization // Load all the visualizers, summarizers, stream adapters this.DiscoverVisualizerObjects(assembliesToSearch, visualizerLoadLogFilename); - this.isInitialized = true; + this.IsInitialized = true; } /// @@ -159,7 +159,7 @@ namespace Microsoft.Psi.Visualization // Get the list of types in the assembly Type[] types = this.GetTypesFromAssembly(assemblyPath, logWriter); - // Look for attributes denoting visualziation objects, summarizers, and stream adapters. + // Look for attributes denoting visualization objects, summarizers, and stream adapters. foreach (Type type in types) { if (type.GetCustomAttribute() != null) @@ -280,9 +280,9 @@ namespace Microsoft.Psi.Visualization private void EnsureInitialized() { - if (!this.isInitialized) + if (!this.IsInitialized) { - throw new InvalidOperationException("VisualizerMap.Initialize() must be called before calling this method."); + throw new InvalidOperationException($"{nameof(this.Initialize)} must be called before calling this method."); } } } diff --git a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMetadata.cs b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMetadata.cs index 8f806c06..f9fb5770 100644 --- a/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMetadata.cs +++ b/Sources/Visualization/Microsoft.Psi.Visualization.Common.Windows/VisualizerMetadata.cs @@ -5,6 +5,7 @@ namespace Microsoft.Psi.Visualization { using System; using System.Collections.Generic; + using System.Linq; using System.Reflection; using Microsoft.Psi.Visualization.Adapters; using Microsoft.Psi.Visualization.Summarizers; @@ -168,6 +169,60 @@ namespace Microsoft.Psi.Visualization return metadatas; } + /// + /// Gets the visualizer metadata whose data type is hierarchically closest to a stream's data type. + /// Metadata objects that don't use an adapter are prioritized first. + /// + /// The data type of messages in the stream. + /// A list of metadatas to select from. + /// The metadata whose data type is closest (hierarchically, prioritizing non-adapters) to the message data type. + public static VisualizerMetadata GetClosestVisualizerMetadata(Type dataType, IEnumerable metadatas) + { + // Get the collection of metadatas that don't use an adapter + var nonAdaptedMetadatas = metadatas.Where(m => m.StreamAdapterType == null); + + // If there are any metadata objects that don't use an adapter, return the one + // whose data type is closest to the message data type in the derivation hierarchy. + if (nonAdaptedMetadatas.Any()) + { + VisualizerMetadata metadata = GetVisualizerMetadataOfNearestBaseType(dataType, nonAdaptedMetadatas); + if (metadata != default) + { + return metadata; + } + } + + // Return the metadata object whose data type is closest + // to the message data type in the derivation hierarchy. + return GetVisualizerMetadataOfNearestBaseType(dataType, metadatas); + } + + /// + /// Gets the visualizer metadata whose data type is hierarchically closest to a stream's data type. + /// + /// The data type of messages in the stream. + /// A collection of metadatas to select from. + /// The metadata whose data type is hierarchically closest to the message data type. + private static VisualizerMetadata GetVisualizerMetadataOfNearestBaseType(Type dataType, IEnumerable metadatas) + { + Type type = dataType; + do + { + VisualizerMetadata metadata = metadatas.FirstOrDefault(m => m.DataType == type); + if (metadata != default) + { + return metadata; + } + + type = type.BaseType; + } + while (type != null); + + // The collection of metadata objects passed to this method should be guaranteed + // to find a match. If that failed, then there's a bug in our logic. + throw new ApplicationException("No compatible metadata could be found for the message type"); + } + private static void Create(List metadatas, Type dataType, Type visualizationObjectType, VisualizationObjectAttribute visualizationObjectAttribute, VisualizationPanelTypeAttribute visualizationPanelTypeAttribute, StreamAdapterMetadata adapterMetadata) { // Create the metadata for the "visualize" menu command if required diff --git a/Sources/Visualization/Test.Psi.Visualization/Properties/AssemblyInfo.cs b/Sources/Visualization/Test.Psi.Visualization/Properties/AssemblyInfo.cs index ec753ed7..f6f55648 100644 --- a/Sources/Visualization/Test.Psi.Visualization/Properties/AssemblyInfo.cs +++ b/Sources/Visualization/Test.Psi.Visualization/Properties/AssemblyInfo.cs @@ -10,6 +10,6 @@ using System.Runtime.InteropServices; [assembly: AssemblyCopyright("Copyright (C) Microsoft Corporation. All rights reserved.")] [assembly: ComVisible(false)] [assembly: Guid("7cd463a8-61bb-4937-aa96-02da13e622d0")] -[assembly: AssemblyVersion("0.11.82.2")] -[assembly: AssemblyFileVersion("0.11.82.2")] -[assembly: AssemblyInformationalVersion("0.11.82.2-beta")] +[assembly: AssemblyVersion("0.12.53.2")] +[assembly: AssemblyFileVersion("0.12.53.2")] +[assembly: AssemblyInformationalVersion("0.12.53.2-beta")] diff --git a/Sources/Visualization/Test.Psi.Visualization/Test.Psi.Visualization.csproj b/Sources/Visualization/Test.Psi.Visualization/Test.Psi.Visualization.csproj index f4c9b4d2..17676ef7 100644 --- a/Sources/Visualization/Test.Psi.Visualization/Test.Psi.Visualization.csproj +++ b/Sources/Visualization/Test.Psi.Visualization/Test.Psi.Visualization.csproj @@ -73,11 +73,16 @@ + + 2.9.8 + runtime; build; native; contentfiles; analyzers + all + - 2.1.0 + 2.1.1 - 2.1.0 + 2.1.1 1.1.118 diff --git a/build.sh b/build.sh index 4b5aed93..4912762c 100755 --- a/build.sh +++ b/build.sh @@ -12,6 +12,7 @@ (cd ./Sources/Integrations/CognitiveServices/Microsoft.Psi.CognitiveServices.Speech/ && . ./build.sh) (cd ./Sources/Integrations/CognitiveServices/Test.Psi.CognitiveServices.Speech/ && . ./build.sh) (cd ./Sources/Integrations/ROS/Microsoft.ROS/ && . ./build.sh) +(cd ./Sources/Kinect/Microsoft.Psi.AzureKinect/ && . ./build.sh) (cd ./Sources/Language/Microsoft.Psi.Language/ && . ./build.sh) (cd ./Sources/Media/Microsoft.Psi.Media.Linux/ && . ./build.sh) (cd ./Sources/Speech/Microsoft.Psi.Speech/ && . ./build.sh) @@ -21,5 +22,6 @@ (cd ./Sources/Runtime/Test.Psi/ && . ./build.sh) (cd ./Sources/Toolkits/FiniteStateMachine/Microsoft.Psi.FiniteStateMachine/ && . ./build.sh) (cd ./Sources/Tools/PsiStoreTool/ && . ./build.sh) +(cd ./Samples/AzureKinectSample/ && . ./build.sh) (cd ./Samples/RosTurtleSample/ && . ./build.sh) (cd ./Samples/LinuxSpeechSample/ && . ./build.sh)