From 1666886090668d134fe13830c505a6a9967293f9 Mon Sep 17 00:00:00 2001 From: Arjun Rai Gupta Date: Thu, 17 Oct 2019 02:27:10 +0200 Subject: [PATCH] test --- HoloLensForCV.sln | 215 +++ Shared/Audio/Audio.props | 0 Shared/Audio/Audio.vcxproj | 0 Shared/Audio/Audio.vcxproj.filters | 0 Shared/Audio/AudioFileReader.cpp | 0 Shared/Audio/AudioStreamReader.cpp | 0 Shared/Audio/BasicListeningEarcon.wav | Bin Shared/Audio/BasicResultsEarcon.wav | Bin Shared/Audio/Include/Audio/All.h | 0 Shared/Audio/Include/Audio/AudioFileReader.h | 0 .../Audio/Include/Audio/AudioStreamReader.h | 0 .../Include/Audio/OmnidirectionalSound.h | 0 Shared/Audio/Include/Audio/XAudio2Helpers.h | 0 Shared/Audio/OmnidirectionalSound.cpp | 0 Shared/Audio/README.md | 0 Shared/Audio/pch.cpp | 0 Shared/Audio/pch.h | 0 Shared/Audio/targetver.h | 0 Shared/Debugging/Debugging.props | 0 Shared/Debugging/Debugging.vcxproj | 0 Shared/Debugging/Debugging.vcxproj.filters | 0 Shared/Debugging/Include/Debugging/All.h | 0 .../Include/Debugging/CodeContracts.h | 0 Shared/Debugging/Include/Debugging/Timer.h | 0 .../Debugging/Include/Debugging/TimerGuard.h | 0 Shared/Debugging/Include/Debugging/Trace.h | 0 Shared/Debugging/README.md | 0 Shared/Debugging/Timer.cpp | 0 Shared/Debugging/TimerGuard.cpp | 0 Shared/Debugging/Trace.cpp | 0 Shared/Debugging/pch.cpp | 0 Shared/Debugging/pch.h | 0 Shared/Debugging/targetver.h | 0 Shared/Graphics/CameraResources.cpp | 0 Shared/Graphics/DeviceResources.cpp | 0 Shared/Graphics/Graphics.props | 0 Shared/Graphics/Graphics.vcxproj | 0 Shared/Graphics/Graphics.vcxproj.filters | 0 Shared/Graphics/Include/Graphics/All.h | 0 .../Include/Graphics/CameraResources.h | 0 .../Include/Graphics/DeviceResources.h | 0 .../Graphics/Include/Graphics/DirectXHelper.h | 0 Shared/Graphics/Include/Graphics/StepTimer.h | 0 Shared/Graphics/README.md | 0 Shared/Graphics/packages.config | 0 Shared/Graphics/pch.cpp | 0 Shared/Graphics/pch.h | 0 Shared/Graphics/targetver.h | 0 Shared/HoloLensForCV/CameraIntrinsics.cpp | 0 Shared/HoloLensForCV/CameraIntrinsics.h | 0 Shared/HoloLensForCV/CsvWriter.cpp | 0 Shared/HoloLensForCV/CsvWriter.h | 0 Shared/HoloLensForCV/HoloLensForCV.vcxproj | 1 + .../HoloLensForCV.vcxproj.filters | 0 Shared/HoloLensForCV/ICameraIntrinsics.h | 0 Shared/HoloLensForCV/ISensorFrameSink.h | 0 Shared/HoloLensForCV/ISensorFrameSinkGroup.h | 0 .../HoloLensForCV/MediaFrameReaderContext.cpp | 16 +- .../HoloLensForCV/MediaFrameReaderContext.h | 0 .../HoloLensForCV/MediaFrameSourceGroup.cpp | 84 ++ Shared/HoloLensForCV/MediaFrameSourceGroup.h | 5 + .../HoloLensForCV/MediaFrameSourceGroupType.h | 0 Shared/HoloLensForCV/MultiFrameBuffer.cpp | 0 Shared/HoloLensForCV/MultiFrameBuffer.h | 0 Shared/HoloLensForCV/README.md | 0 Shared/HoloLensForCV/SensorFrame.cpp | 194 ++- Shared/HoloLensForCV/SensorFrame.h | 77 +- Shared/HoloLensForCV/SensorFrameReceiver.cpp | 0 Shared/HoloLensForCV/SensorFrameReceiver.h | 0 Shared/HoloLensForCV/SensorFrameRecorder.cpp | 0 Shared/HoloLensForCV/SensorFrameRecorder.h | 0 .../HoloLensForCV/SensorFrameRecorderSink.cpp | 0 .../HoloLensForCV/SensorFrameRecorderSink.h | 0 .../HoloLensForCV/SensorFrameStreamHeader.cpp | 0 .../HoloLensForCV/SensorFrameStreamHeader.h | 0 Shared/HoloLensForCV/SensorFrameStreamer.cpp | 0 Shared/HoloLensForCV/SensorFrameStreamer.h | 0 .../SensorFrameStreamingServer.cpp | 0 .../SensorFrameStreamingServer.h | 0 Shared/HoloLensForCV/SensorType.h | 0 Shared/HoloLensForCV/SpatialPerception.cpp | 0 Shared/HoloLensForCV/SpatialPerception.h | 0 Shared/HoloLensForCV/pch.cpp | 0 Shared/HoloLensForCV/pch.h | 3 + Shared/Holographic/AppMainBase.cpp | 0 Shared/Holographic/AppViewBase.cpp | 0 Shared/Holographic/Holographic.props | 0 Shared/Holographic/Holographic.vcxproj | 0 .../Holographic/Holographic.vcxproj.filters | 0 Shared/Holographic/Include/Holographic/All.h | 0 .../Include/Holographic/AppMainBase.h | 0 .../Include/Holographic/AppViewBase.h | 0 .../Include/Holographic/IAppMain.h | 0 .../Include/Holographic/SpatialInputHandler.h | 0 Shared/Holographic/README.md | 0 Shared/Holographic/SpatialInputHandler.cpp | 0 Shared/Holographic/pch.cpp | 0 Shared/Holographic/pch.h | 0 Shared/Holographic/targetver.h | 0 Shared/Io/BufferHelpers.cpp | 0 Shared/Io/Include/Io/All.h | 0 Shared/Io/Include/Io/BufferHelpers.h | 0 Shared/Io/Include/Io/IoHelpers.h | 0 Shared/Io/Include/Io/StorageHandleAccess.h | 0 Shared/Io/Include/Io/StringHelpers.h | 0 Shared/Io/Include/Io/Tar.h | 0 Shared/Io/Include/Io/Time.h | 0 Shared/Io/Include/Io/TimeConverter.h | 0 Shared/Io/Include/Io/Timer.h | 0 Shared/Io/Io.props | 0 Shared/Io/Io.vcxproj | 0 Shared/Io/Io.vcxproj.filters | 0 Shared/Io/IoHelpers.cpp | 0 Shared/Io/README.md | 0 Shared/Io/StringHelpers.cpp | 0 Shared/Io/Tar.cpp | 0 Shared/Io/Time.cpp | 0 Shared/Io/TimeConverter.cpp | 0 Shared/Io/Timer.cpp | 0 Shared/Io/pch.cpp | 0 Shared/Io/pch.h | 0 Shared/Io/targetver.h | 0 .../OpenCVHelpers/Include/OpenCVHelpers/All.h | 0 .../Include/OpenCVHelpers/OpenCVHelpers.h | 0 .../Include/OpenCVHelpers/OpenCVTexture2D.h | 0 Shared/OpenCVHelpers/OpenCVHelpers.cpp | 0 Shared/OpenCVHelpers/OpenCVHelpers.props | 0 Shared/OpenCVHelpers/OpenCVHelpers.vcxproj | 0 .../OpenCVHelpers.vcxproj.filters | 0 Shared/OpenCVHelpers/OpenCVTexture2D.cpp | 0 Shared/OpenCVHelpers/README.md | 0 Shared/OpenCVHelpers/packages.config | 0 Shared/OpenCVHelpers/pch.cpp | 0 Shared/OpenCVHelpers/pch.h | 0 Shared/OpenCVHelpers/targetver.h | 0 Shared/Rendering/Include/Rendering/All.h | 0 .../Include/Rendering/MarkerRenderer.h | 0 .../Include/Rendering/PolylineRenderer.h | 0 .../Include/Rendering/SlateMaterial.h | 0 .../Include/Rendering/SlateRenderer.h | 0 .../Include/Rendering/SlateShaderStructures.h | 0 .../Rendering/Include/Rendering/Texture2D.h | 0 Shared/Rendering/MarkerRenderer.cpp | 0 Shared/Rendering/PolylineRenderer.cpp | 0 Shared/Rendering/README.md | 0 Shared/Rendering/Rendering.props | 0 Shared/Rendering/Rendering.vcxproj | 0 Shared/Rendering/Rendering.vcxproj.filters | 0 .../Rendering/SlateMaterial.Default.gs.hlsl | 0 .../Rendering/SlateMaterial.Default.ps.hlsl | 0 .../Rendering/SlateMaterial.Default.vs.hlsl | 0 Shared/Rendering/SlateMaterial.VPRT.vs.hlsl | 0 Shared/Rendering/SlateMaterial.cpp | 0 Shared/Rendering/SlateRenderer.cpp | 0 Shared/Rendering/Texture2D.cpp | 0 Shared/Rendering/packages.config | 0 Shared/Rendering/pch.cpp | 0 Shared/Rendering/pch.h | 0 Shared/Rendering/targetver.h | 0 Tools/ReceiverPV/App.xaml | 0 Tools/ReceiverPV/App.xaml.cs | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin Tools/ReceiverPV/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin Tools/ReceiverPV/MainPage.xaml | 0 Tools/ReceiverPV/MainPage.xaml.cs | 0 Tools/ReceiverPV/Package.appxmanifest | 0 Tools/ReceiverPV/Properties/AssemblyInfo.cs | 0 Tools/ReceiverPV/Properties/Default.rd.xml | 0 Tools/ReceiverPV/README.md | 0 Tools/ReceiverPV/ReceiverPV.csproj | 0 Tools/ReceiverVLC/App.xaml | 0 Tools/ReceiverVLC/App.xaml.cs | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin Tools/ReceiverVLC/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin Tools/ReceiverVLC/MainPage.xaml | 0 Tools/ReceiverVLC/MainPage.xaml.cs | 0 Tools/ReceiverVLC/Package.appxmanifest | 0 Tools/ReceiverVLC/Properties/AssemblyInfo.cs | 0 Tools/ReceiverVLC/Properties/Default.rd.xml | 0 Tools/ReceiverVLC/README.md | 0 Tools/ReceiverVLC/ReceiverVLC.csproj | 0 Tools/Recorder/AppMain.cpp | 0 Tools/Recorder/AppMain.h | 0 Tools/Recorder/AppView.cpp | 0 Tools/Recorder/AppView.h | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin Tools/Recorder/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin Tools/Recorder/Package.appxmanifest | 0 Tools/Recorder/README.md | 0 Tools/Recorder/Recorder.vcxproj | 0 Tools/Recorder/Recorder.vcxproj.filters | 0 Tools/Recorder/packages.config | 0 Tools/Recorder/pch.cpp | 0 Tools/Recorder/pch.h | 0 Tools/StreamerPV/AppMain.cpp | 0 Tools/StreamerPV/AppMain.h | 0 Tools/StreamerPV/AppView.cpp | 0 Tools/StreamerPV/AppView.h | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin Tools/StreamerPV/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin Tools/StreamerPV/Package.appxmanifest | 0 Tools/StreamerPV/README.md | 0 Tools/StreamerPV/StreamerPV.vcxproj | 0 Tools/StreamerPV/StreamerPV.vcxproj.filters | 0 Tools/StreamerPV/packages.config | 0 Tools/StreamerPV/pch.cpp | 0 Tools/StreamerPV/pch.h | 0 Tools/StreamerVLC/AppMain.cpp | 481 ++++--- Tools/StreamerVLC/AppMain.h | 98 +- Tools/StreamerVLC/AppView.cpp | 0 Tools/StreamerVLC/AppView.h | 0 .../Assets/LockScreenLogo.scale-200.png | Bin .../Assets/SplashScreen.scale-200.png | Bin .../Assets/Square150x150Logo.scale-200.png | Bin .../Assets/Square44x44Logo.scale-200.png | Bin ...x44Logo.targetsize-24_altform-unplated.png | Bin Tools/StreamerVLC/Assets/StoreLogo.png | Bin .../Assets/Wide310x150Logo.scale-200.png | Bin Tools/StreamerVLC/Package.appxmanifest | 27 +- Tools/StreamerVLC/README.md | 0 Tools/StreamerVLC/StreamerVLC.vcxproj | 5 +- Tools/StreamerVLC/StreamerVLC.vcxproj.filters | 0 Tools/StreamerVLC/packages.config | 0 Tools/StreamerVLC/pch.cpp | 0 Tools/StreamerVLC/pch.h | 0 Tools/Tasks/BackgroundTask.cpp | 1261 +++++++++++++++++ Tools/Tasks/BackgroundTask.h | 114 ++ Tools/Tasks/Tasks.vcxproj | 304 ++++ Tools/Tasks/Tasks.vcxproj.filters | 17 + Tools/Tasks/pch.cpp | 1 + Tools/Tasks/pch.h | 33 + 251 files changed, 2668 insertions(+), 268 deletions(-) mode change 100644 => 100755 HoloLensForCV.sln mode change 100644 => 100755 Shared/Audio/Audio.props mode change 100644 => 100755 Shared/Audio/Audio.vcxproj mode change 100644 => 100755 Shared/Audio/Audio.vcxproj.filters mode change 100644 => 100755 Shared/Audio/AudioFileReader.cpp mode change 100644 => 100755 Shared/Audio/AudioStreamReader.cpp mode change 100644 => 100755 Shared/Audio/BasicListeningEarcon.wav mode change 100644 => 100755 Shared/Audio/BasicResultsEarcon.wav mode change 100644 => 100755 Shared/Audio/Include/Audio/All.h mode change 100644 => 100755 Shared/Audio/Include/Audio/AudioFileReader.h mode change 100644 => 100755 Shared/Audio/Include/Audio/AudioStreamReader.h mode change 100644 => 100755 Shared/Audio/Include/Audio/OmnidirectionalSound.h mode change 100644 => 100755 Shared/Audio/Include/Audio/XAudio2Helpers.h mode change 100644 => 100755 Shared/Audio/OmnidirectionalSound.cpp mode change 100644 => 100755 Shared/Audio/README.md mode change 100644 => 100755 Shared/Audio/pch.cpp mode change 100644 => 100755 Shared/Audio/pch.h mode change 100644 => 100755 Shared/Audio/targetver.h mode change 100644 => 100755 Shared/Debugging/Debugging.props mode change 100644 => 100755 Shared/Debugging/Debugging.vcxproj mode change 100644 => 100755 Shared/Debugging/Debugging.vcxproj.filters mode change 100644 => 100755 Shared/Debugging/Include/Debugging/All.h mode change 100644 => 100755 Shared/Debugging/Include/Debugging/CodeContracts.h mode change 100644 => 100755 Shared/Debugging/Include/Debugging/Timer.h mode change 100644 => 100755 Shared/Debugging/Include/Debugging/TimerGuard.h mode change 100644 => 100755 Shared/Debugging/Include/Debugging/Trace.h mode change 100644 => 100755 Shared/Debugging/README.md mode change 100644 => 100755 Shared/Debugging/Timer.cpp mode change 100644 => 100755 Shared/Debugging/TimerGuard.cpp mode change 100644 => 100755 Shared/Debugging/Trace.cpp mode change 100644 => 100755 Shared/Debugging/pch.cpp mode change 100644 => 100755 Shared/Debugging/pch.h mode change 100644 => 100755 Shared/Debugging/targetver.h mode change 100644 => 100755 Shared/Graphics/CameraResources.cpp mode change 100644 => 100755 Shared/Graphics/DeviceResources.cpp mode change 100644 => 100755 Shared/Graphics/Graphics.props mode change 100644 => 100755 Shared/Graphics/Graphics.vcxproj mode change 100644 => 100755 Shared/Graphics/Graphics.vcxproj.filters mode change 100644 => 100755 Shared/Graphics/Include/Graphics/All.h mode change 100644 => 100755 Shared/Graphics/Include/Graphics/CameraResources.h mode change 100644 => 100755 Shared/Graphics/Include/Graphics/DeviceResources.h mode change 100644 => 100755 Shared/Graphics/Include/Graphics/DirectXHelper.h mode change 100644 => 100755 Shared/Graphics/Include/Graphics/StepTimer.h mode change 100644 => 100755 Shared/Graphics/README.md mode change 100644 => 100755 Shared/Graphics/packages.config mode change 100644 => 100755 Shared/Graphics/pch.cpp mode change 100644 => 100755 Shared/Graphics/pch.h mode change 100644 => 100755 Shared/Graphics/targetver.h mode change 100644 => 100755 Shared/HoloLensForCV/CameraIntrinsics.cpp mode change 100644 => 100755 Shared/HoloLensForCV/CameraIntrinsics.h mode change 100644 => 100755 Shared/HoloLensForCV/CsvWriter.cpp mode change 100644 => 100755 Shared/HoloLensForCV/CsvWriter.h mode change 100644 => 100755 Shared/HoloLensForCV/HoloLensForCV.vcxproj mode change 100644 => 100755 Shared/HoloLensForCV/HoloLensForCV.vcxproj.filters mode change 100644 => 100755 Shared/HoloLensForCV/ICameraIntrinsics.h mode change 100644 => 100755 Shared/HoloLensForCV/ISensorFrameSink.h mode change 100644 => 100755 Shared/HoloLensForCV/ISensorFrameSinkGroup.h mode change 100644 => 100755 Shared/HoloLensForCV/MediaFrameReaderContext.cpp mode change 100644 => 100755 Shared/HoloLensForCV/MediaFrameReaderContext.h mode change 100644 => 100755 Shared/HoloLensForCV/MediaFrameSourceGroup.cpp mode change 100644 => 100755 Shared/HoloLensForCV/MediaFrameSourceGroup.h mode change 100644 => 100755 Shared/HoloLensForCV/MediaFrameSourceGroupType.h mode change 100644 => 100755 Shared/HoloLensForCV/MultiFrameBuffer.cpp mode change 100644 => 100755 Shared/HoloLensForCV/MultiFrameBuffer.h mode change 100644 => 100755 Shared/HoloLensForCV/README.md mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrame.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrame.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameReceiver.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameReceiver.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameRecorder.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameRecorder.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameRecorderSink.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameRecorderSink.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameStreamHeader.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameStreamHeader.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameStreamer.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameStreamer.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameStreamingServer.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SensorFrameStreamingServer.h mode change 100644 => 100755 Shared/HoloLensForCV/SensorType.h mode change 100644 => 100755 Shared/HoloLensForCV/SpatialPerception.cpp mode change 100644 => 100755 Shared/HoloLensForCV/SpatialPerception.h mode change 100644 => 100755 Shared/HoloLensForCV/pch.cpp mode change 100644 => 100755 Shared/HoloLensForCV/pch.h mode change 100644 => 100755 Shared/Holographic/AppMainBase.cpp mode change 100644 => 100755 Shared/Holographic/AppViewBase.cpp mode change 100644 => 100755 Shared/Holographic/Holographic.props mode change 100644 => 100755 Shared/Holographic/Holographic.vcxproj mode change 100644 => 100755 Shared/Holographic/Holographic.vcxproj.filters mode change 100644 => 100755 Shared/Holographic/Include/Holographic/All.h mode change 100644 => 100755 Shared/Holographic/Include/Holographic/AppMainBase.h mode change 100644 => 100755 Shared/Holographic/Include/Holographic/AppViewBase.h mode change 100644 => 100755 Shared/Holographic/Include/Holographic/IAppMain.h mode change 100644 => 100755 Shared/Holographic/Include/Holographic/SpatialInputHandler.h mode change 100644 => 100755 Shared/Holographic/README.md mode change 100644 => 100755 Shared/Holographic/SpatialInputHandler.cpp mode change 100644 => 100755 Shared/Holographic/pch.cpp mode change 100644 => 100755 Shared/Holographic/pch.h mode change 100644 => 100755 Shared/Holographic/targetver.h mode change 100644 => 100755 Shared/Io/BufferHelpers.cpp mode change 100644 => 100755 Shared/Io/Include/Io/All.h mode change 100644 => 100755 Shared/Io/Include/Io/BufferHelpers.h mode change 100644 => 100755 Shared/Io/Include/Io/IoHelpers.h mode change 100644 => 100755 Shared/Io/Include/Io/StorageHandleAccess.h mode change 100644 => 100755 Shared/Io/Include/Io/StringHelpers.h mode change 100644 => 100755 Shared/Io/Include/Io/Tar.h mode change 100644 => 100755 Shared/Io/Include/Io/Time.h mode change 100644 => 100755 Shared/Io/Include/Io/TimeConverter.h mode change 100644 => 100755 Shared/Io/Include/Io/Timer.h mode change 100644 => 100755 Shared/Io/Io.props mode change 100644 => 100755 Shared/Io/Io.vcxproj mode change 100644 => 100755 Shared/Io/Io.vcxproj.filters mode change 100644 => 100755 Shared/Io/IoHelpers.cpp mode change 100644 => 100755 Shared/Io/README.md mode change 100644 => 100755 Shared/Io/StringHelpers.cpp mode change 100644 => 100755 Shared/Io/Tar.cpp mode change 100644 => 100755 Shared/Io/Time.cpp mode change 100644 => 100755 Shared/Io/TimeConverter.cpp mode change 100644 => 100755 Shared/Io/Timer.cpp mode change 100644 => 100755 Shared/Io/pch.cpp mode change 100644 => 100755 Shared/Io/pch.h mode change 100644 => 100755 Shared/Io/targetver.h mode change 100644 => 100755 Shared/OpenCVHelpers/Include/OpenCVHelpers/All.h mode change 100644 => 100755 Shared/OpenCVHelpers/Include/OpenCVHelpers/OpenCVHelpers.h mode change 100644 => 100755 Shared/OpenCVHelpers/Include/OpenCVHelpers/OpenCVTexture2D.h mode change 100644 => 100755 Shared/OpenCVHelpers/OpenCVHelpers.cpp mode change 100644 => 100755 Shared/OpenCVHelpers/OpenCVHelpers.props mode change 100644 => 100755 Shared/OpenCVHelpers/OpenCVHelpers.vcxproj mode change 100644 => 100755 Shared/OpenCVHelpers/OpenCVHelpers.vcxproj.filters mode change 100644 => 100755 Shared/OpenCVHelpers/OpenCVTexture2D.cpp mode change 100644 => 100755 Shared/OpenCVHelpers/README.md mode change 100644 => 100755 Shared/OpenCVHelpers/packages.config mode change 100644 => 100755 Shared/OpenCVHelpers/pch.cpp mode change 100644 => 100755 Shared/OpenCVHelpers/pch.h mode change 100644 => 100755 Shared/OpenCVHelpers/targetver.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/All.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/MarkerRenderer.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/PolylineRenderer.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/SlateMaterial.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/SlateRenderer.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/SlateShaderStructures.h mode change 100644 => 100755 Shared/Rendering/Include/Rendering/Texture2D.h mode change 100644 => 100755 Shared/Rendering/MarkerRenderer.cpp mode change 100644 => 100755 Shared/Rendering/PolylineRenderer.cpp mode change 100644 => 100755 Shared/Rendering/README.md mode change 100644 => 100755 Shared/Rendering/Rendering.props mode change 100644 => 100755 Shared/Rendering/Rendering.vcxproj mode change 100644 => 100755 Shared/Rendering/Rendering.vcxproj.filters mode change 100644 => 100755 Shared/Rendering/SlateMaterial.Default.gs.hlsl mode change 100644 => 100755 Shared/Rendering/SlateMaterial.Default.ps.hlsl mode change 100644 => 100755 Shared/Rendering/SlateMaterial.Default.vs.hlsl mode change 100644 => 100755 Shared/Rendering/SlateMaterial.VPRT.vs.hlsl mode change 100644 => 100755 Shared/Rendering/SlateMaterial.cpp mode change 100644 => 100755 Shared/Rendering/SlateRenderer.cpp mode change 100644 => 100755 Shared/Rendering/Texture2D.cpp mode change 100644 => 100755 Shared/Rendering/packages.config mode change 100644 => 100755 Shared/Rendering/pch.cpp mode change 100644 => 100755 Shared/Rendering/pch.h mode change 100644 => 100755 Shared/Rendering/targetver.h mode change 100644 => 100755 Tools/ReceiverPV/App.xaml mode change 100644 => 100755 Tools/ReceiverPV/App.xaml.cs mode change 100644 => 100755 Tools/ReceiverPV/Assets/LockScreenLogo.scale-200.png mode change 100644 => 100755 Tools/ReceiverPV/Assets/SplashScreen.scale-200.png mode change 100644 => 100755 Tools/ReceiverPV/Assets/Square150x150Logo.scale-200.png mode change 100644 => 100755 Tools/ReceiverPV/Assets/Square44x44Logo.scale-200.png mode change 100644 => 100755 Tools/ReceiverPV/Assets/Square44x44Logo.targetsize-24_altform-unplated.png mode change 100644 => 100755 Tools/ReceiverPV/Assets/StoreLogo.png mode change 100644 => 100755 Tools/ReceiverPV/Assets/Wide310x150Logo.scale-200.png mode change 100644 => 100755 Tools/ReceiverPV/MainPage.xaml mode change 100644 => 100755 Tools/ReceiverPV/MainPage.xaml.cs mode change 100644 => 100755 Tools/ReceiverPV/Package.appxmanifest mode change 100644 => 100755 Tools/ReceiverPV/Properties/AssemblyInfo.cs mode change 100644 => 100755 Tools/ReceiverPV/Properties/Default.rd.xml mode change 100644 => 100755 Tools/ReceiverPV/README.md mode change 100644 => 100755 Tools/ReceiverPV/ReceiverPV.csproj mode change 100644 => 100755 Tools/ReceiverVLC/App.xaml mode change 100644 => 100755 Tools/ReceiverVLC/App.xaml.cs mode change 100644 => 100755 Tools/ReceiverVLC/Assets/LockScreenLogo.scale-200.png mode change 100644 => 100755 Tools/ReceiverVLC/Assets/SplashScreen.scale-200.png mode change 100644 => 100755 Tools/ReceiverVLC/Assets/Square150x150Logo.scale-200.png mode change 100644 => 100755 Tools/ReceiverVLC/Assets/Square44x44Logo.scale-200.png mode change 100644 => 100755 Tools/ReceiverVLC/Assets/Square44x44Logo.targetsize-24_altform-unplated.png mode change 100644 => 100755 Tools/ReceiverVLC/Assets/StoreLogo.png mode change 100644 => 100755 Tools/ReceiverVLC/Assets/Wide310x150Logo.scale-200.png mode change 100644 => 100755 Tools/ReceiverVLC/MainPage.xaml mode change 100644 => 100755 Tools/ReceiverVLC/MainPage.xaml.cs mode change 100644 => 100755 Tools/ReceiverVLC/Package.appxmanifest mode change 100644 => 100755 Tools/ReceiverVLC/Properties/AssemblyInfo.cs mode change 100644 => 100755 Tools/ReceiverVLC/Properties/Default.rd.xml mode change 100644 => 100755 Tools/ReceiverVLC/README.md mode change 100644 => 100755 Tools/ReceiverVLC/ReceiverVLC.csproj mode change 100644 => 100755 Tools/Recorder/AppMain.cpp mode change 100644 => 100755 Tools/Recorder/AppMain.h mode change 100644 => 100755 Tools/Recorder/AppView.cpp mode change 100644 => 100755 Tools/Recorder/AppView.h mode change 100644 => 100755 Tools/Recorder/Assets/LockScreenLogo.scale-200.png mode change 100644 => 100755 Tools/Recorder/Assets/SplashScreen.scale-200.png mode change 100644 => 100755 Tools/Recorder/Assets/Square150x150Logo.scale-200.png mode change 100644 => 100755 Tools/Recorder/Assets/Square44x44Logo.scale-200.png mode change 100644 => 100755 Tools/Recorder/Assets/Square44x44Logo.targetsize-24_altform-unplated.png mode change 100644 => 100755 Tools/Recorder/Assets/StoreLogo.png mode change 100644 => 100755 Tools/Recorder/Assets/Wide310x150Logo.scale-200.png mode change 100644 => 100755 Tools/Recorder/Package.appxmanifest mode change 100644 => 100755 Tools/Recorder/README.md mode change 100644 => 100755 Tools/Recorder/Recorder.vcxproj mode change 100644 => 100755 Tools/Recorder/Recorder.vcxproj.filters mode change 100644 => 100755 Tools/Recorder/packages.config mode change 100644 => 100755 Tools/Recorder/pch.cpp mode change 100644 => 100755 Tools/Recorder/pch.h mode change 100644 => 100755 Tools/StreamerPV/AppMain.cpp mode change 100644 => 100755 Tools/StreamerPV/AppMain.h mode change 100644 => 100755 Tools/StreamerPV/AppView.cpp mode change 100644 => 100755 Tools/StreamerPV/AppView.h mode change 100644 => 100755 Tools/StreamerPV/Assets/LockScreenLogo.scale-200.png mode change 100644 => 100755 Tools/StreamerPV/Assets/SplashScreen.scale-200.png mode change 100644 => 100755 Tools/StreamerPV/Assets/Square150x150Logo.scale-200.png mode change 100644 => 100755 Tools/StreamerPV/Assets/Square44x44Logo.scale-200.png mode change 100644 => 100755 Tools/StreamerPV/Assets/Square44x44Logo.targetsize-24_altform-unplated.png mode change 100644 => 100755 Tools/StreamerPV/Assets/StoreLogo.png mode change 100644 => 100755 Tools/StreamerPV/Assets/Wide310x150Logo.scale-200.png mode change 100644 => 100755 Tools/StreamerPV/Package.appxmanifest mode change 100644 => 100755 Tools/StreamerPV/README.md mode change 100644 => 100755 Tools/StreamerPV/StreamerPV.vcxproj mode change 100644 => 100755 Tools/StreamerPV/StreamerPV.vcxproj.filters mode change 100644 => 100755 Tools/StreamerPV/packages.config mode change 100644 => 100755 Tools/StreamerPV/pch.cpp mode change 100644 => 100755 Tools/StreamerPV/pch.h mode change 100644 => 100755 Tools/StreamerVLC/AppMain.cpp mode change 100644 => 100755 Tools/StreamerVLC/AppMain.h mode change 100644 => 100755 Tools/StreamerVLC/AppView.cpp mode change 100644 => 100755 Tools/StreamerVLC/AppView.h mode change 100644 => 100755 Tools/StreamerVLC/Assets/LockScreenLogo.scale-200.png mode change 100644 => 100755 Tools/StreamerVLC/Assets/SplashScreen.scale-200.png mode change 100644 => 100755 Tools/StreamerVLC/Assets/Square150x150Logo.scale-200.png mode change 100644 => 100755 Tools/StreamerVLC/Assets/Square44x44Logo.scale-200.png mode change 100644 => 100755 Tools/StreamerVLC/Assets/Square44x44Logo.targetsize-24_altform-unplated.png mode change 100644 => 100755 Tools/StreamerVLC/Assets/StoreLogo.png mode change 100644 => 100755 Tools/StreamerVLC/Assets/Wide310x150Logo.scale-200.png mode change 100644 => 100755 Tools/StreamerVLC/Package.appxmanifest mode change 100644 => 100755 Tools/StreamerVLC/README.md mode change 100644 => 100755 Tools/StreamerVLC/StreamerVLC.vcxproj mode change 100644 => 100755 Tools/StreamerVLC/StreamerVLC.vcxproj.filters mode change 100644 => 100755 Tools/StreamerVLC/packages.config mode change 100644 => 100755 Tools/StreamerVLC/pch.cpp mode change 100644 => 100755 Tools/StreamerVLC/pch.h create mode 100755 Tools/Tasks/BackgroundTask.cpp create mode 100755 Tools/Tasks/BackgroundTask.h create mode 100755 Tools/Tasks/Tasks.vcxproj create mode 100755 Tools/Tasks/Tasks.vcxproj.filters create mode 100755 Tools/Tasks/pch.cpp create mode 100755 Tools/Tasks/pch.h diff --git a/HoloLensForCV.sln b/HoloLensForCV.sln old mode 100644 new mode 100755 index d779232..9a36723 --- a/HoloLensForCV.sln +++ b/HoloLensForCV.sln @@ -47,100 +47,311 @@ Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution EndProjectSection EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ArUcoMarkerTracker", "Samples\ArUcoMarkerTracker\ArUcoMarkerTracker.vcxproj", "{8D84A8AE-BD70-4F78-B85A-230A033FB7EC}" +EndProject Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "SensorStreamViewer", "Samples\SensorStreamViewer\SensorStreamViewer.vcxproj", "{E71542FD-E5F3-55BC-8EBB-4FFC708277CD}" EndProject +Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "Tasks", "Tools\Tasks\Tasks.vcxproj", "{B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}" +EndProject Global GlobalSection(SolutionConfigurationPlatforms) = preSolution + Debug|ARM = Debug|ARM + Debug|ARM64 = Debug|ARM64 + Debug|x64 = Debug|x64 Debug|x86 = Debug|x86 + Release|ARM = Release|ARM + Release|ARM64 = Release|ARM64 + Release|x64 = Release|x64 Release|x86 = Release|x86 EndGlobalSection GlobalSection(ProjectConfigurationPlatforms) = postSolution + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|ARM.ActiveCfg = Debug|ARM + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|ARM.Build.0 = Debug|ARM + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|ARM64.ActiveCfg = Debug|Win32 + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|x64.ActiveCfg = Debug|x64 + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|x64.Build.0 = Debug|x64 {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|x86.ActiveCfg = Debug|Win32 {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Debug|x86.Build.0 = Debug|Win32 + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|ARM.ActiveCfg = Release|ARM + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|ARM.Build.0 = Release|ARM + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|ARM64.ActiveCfg = Release|Win32 + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|x64.ActiveCfg = Release|x64 + {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|x64.Build.0 = Release|x64 {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|x86.ActiveCfg = Release|Win32 {AD347424-7340-47CE-A979-2C7F2DF0EB38}.Release|x86.Build.0 = Release|Win32 + {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|ARM.ActiveCfg = Debug|ARM + {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|ARM.Build.0 = Debug|ARM + {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|ARM64.ActiveCfg = Debug|Win32 + {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|x64.ActiveCfg = Debug|x64 + {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|x64.Build.0 = Debug|x64 {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|x86.ActiveCfg = Debug|Win32 {39CD08AE-9700-49CF-8616-18C20644416F}.Debug|x86.Build.0 = Debug|Win32 + {39CD08AE-9700-49CF-8616-18C20644416F}.Release|ARM.ActiveCfg = Release|ARM + {39CD08AE-9700-49CF-8616-18C20644416F}.Release|ARM.Build.0 = Release|ARM + {39CD08AE-9700-49CF-8616-18C20644416F}.Release|ARM64.ActiveCfg = Release|Win32 + {39CD08AE-9700-49CF-8616-18C20644416F}.Release|x64.ActiveCfg = Release|x64 + {39CD08AE-9700-49CF-8616-18C20644416F}.Release|x64.Build.0 = Release|x64 {39CD08AE-9700-49CF-8616-18C20644416F}.Release|x86.ActiveCfg = Release|Win32 {39CD08AE-9700-49CF-8616-18C20644416F}.Release|x86.Build.0 = Release|Win32 + {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|ARM.ActiveCfg = Debug|ARM + {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|ARM.Build.0 = Debug|ARM + {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|ARM64.ActiveCfg = Debug|Win32 + {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|x64.ActiveCfg = Debug|x64 + {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|x64.Build.0 = Debug|x64 {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|x86.ActiveCfg = Debug|Win32 {208C932D-A71E-4C67-A444-0697E9A4226E}.Debug|x86.Build.0 = Debug|Win32 + {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|ARM.ActiveCfg = Release|ARM + {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|ARM.Build.0 = Release|ARM + {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|ARM64.ActiveCfg = Release|Win32 + {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|x64.ActiveCfg = Release|x64 + {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|x64.Build.0 = Release|x64 {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|x86.ActiveCfg = Release|Win32 {208C932D-A71E-4C67-A444-0697E9A4226E}.Release|x86.Build.0 = Release|Win32 + {940A6D80-0775-4272-84C9-1585C4757071}.Debug|ARM.ActiveCfg = Debug|ARM + {940A6D80-0775-4272-84C9-1585C4757071}.Debug|ARM.Build.0 = Debug|ARM + {940A6D80-0775-4272-84C9-1585C4757071}.Debug|ARM64.ActiveCfg = Debug|Win32 + {940A6D80-0775-4272-84C9-1585C4757071}.Debug|x64.ActiveCfg = Debug|x64 + {940A6D80-0775-4272-84C9-1585C4757071}.Debug|x64.Build.0 = Debug|x64 {940A6D80-0775-4272-84C9-1585C4757071}.Debug|x86.ActiveCfg = Debug|Win32 {940A6D80-0775-4272-84C9-1585C4757071}.Debug|x86.Build.0 = Debug|Win32 + {940A6D80-0775-4272-84C9-1585C4757071}.Release|ARM.ActiveCfg = Release|ARM + {940A6D80-0775-4272-84C9-1585C4757071}.Release|ARM.Build.0 = Release|ARM + {940A6D80-0775-4272-84C9-1585C4757071}.Release|ARM64.ActiveCfg = Release|Win32 + {940A6D80-0775-4272-84C9-1585C4757071}.Release|x64.ActiveCfg = Release|x64 + {940A6D80-0775-4272-84C9-1585C4757071}.Release|x64.Build.0 = Release|x64 {940A6D80-0775-4272-84C9-1585C4757071}.Release|x86.ActiveCfg = Release|Win32 {940A6D80-0775-4272-84C9-1585C4757071}.Release|x86.Build.0 = Release|Win32 + {CF168211-03A8-419E-840B-3E6BF6688FD9}.Debug|ARM.ActiveCfg = Debug|Win32 + {CF168211-03A8-419E-840B-3E6BF6688FD9}.Debug|ARM64.ActiveCfg = Debug|Win32 + {CF168211-03A8-419E-840B-3E6BF6688FD9}.Debug|x64.ActiveCfg = Debug|Win32 {CF168211-03A8-419E-840B-3E6BF6688FD9}.Debug|x86.ActiveCfg = Debug|Win32 {CF168211-03A8-419E-840B-3E6BF6688FD9}.Debug|x86.Build.0 = Debug|Win32 {CF168211-03A8-419E-840B-3E6BF6688FD9}.Debug|x86.Deploy.0 = Debug|Win32 + {CF168211-03A8-419E-840B-3E6BF6688FD9}.Release|ARM.ActiveCfg = Release|Win32 + {CF168211-03A8-419E-840B-3E6BF6688FD9}.Release|ARM64.ActiveCfg = Release|Win32 + {CF168211-03A8-419E-840B-3E6BF6688FD9}.Release|x64.ActiveCfg = Release|Win32 {CF168211-03A8-419E-840B-3E6BF6688FD9}.Release|x86.ActiveCfg = Release|Win32 {CF168211-03A8-419E-840B-3E6BF6688FD9}.Release|x86.Build.0 = Release|Win32 {CF168211-03A8-419E-840B-3E6BF6688FD9}.Release|x86.Deploy.0 = Release|Win32 + {477E0656-4A58-44B8-AACF-909E925FF21F}.Debug|ARM.ActiveCfg = Debug|Win32 + {477E0656-4A58-44B8-AACF-909E925FF21F}.Debug|ARM64.ActiveCfg = Debug|Win32 + {477E0656-4A58-44B8-AACF-909E925FF21F}.Debug|x64.ActiveCfg = Debug|Win32 {477E0656-4A58-44B8-AACF-909E925FF21F}.Debug|x86.ActiveCfg = Debug|Win32 {477E0656-4A58-44B8-AACF-909E925FF21F}.Debug|x86.Build.0 = Debug|Win32 {477E0656-4A58-44B8-AACF-909E925FF21F}.Debug|x86.Deploy.0 = Debug|Win32 + {477E0656-4A58-44B8-AACF-909E925FF21F}.Release|ARM.ActiveCfg = Release|Win32 + {477E0656-4A58-44B8-AACF-909E925FF21F}.Release|ARM64.ActiveCfg = Release|Win32 + {477E0656-4A58-44B8-AACF-909E925FF21F}.Release|x64.ActiveCfg = Release|Win32 {477E0656-4A58-44B8-AACF-909E925FF21F}.Release|x86.ActiveCfg = Release|Win32 {477E0656-4A58-44B8-AACF-909E925FF21F}.Release|x86.Build.0 = Release|Win32 {477E0656-4A58-44B8-AACF-909E925FF21F}.Release|x86.Deploy.0 = Release|Win32 + {DB17360F-8412-418A-8919-250441BCC43F}.Debug|ARM.ActiveCfg = Debug|Win32 + {DB17360F-8412-418A-8919-250441BCC43F}.Debug|ARM64.ActiveCfg = Debug|Win32 + {DB17360F-8412-418A-8919-250441BCC43F}.Debug|x64.ActiveCfg = Debug|Win32 {DB17360F-8412-418A-8919-250441BCC43F}.Debug|x86.ActiveCfg = Debug|Win32 {DB17360F-8412-418A-8919-250441BCC43F}.Debug|x86.Build.0 = Debug|Win32 {DB17360F-8412-418A-8919-250441BCC43F}.Debug|x86.Deploy.0 = Debug|Win32 + {DB17360F-8412-418A-8919-250441BCC43F}.Release|ARM.ActiveCfg = Release|Win32 + {DB17360F-8412-418A-8919-250441BCC43F}.Release|ARM64.ActiveCfg = Release|Win32 + {DB17360F-8412-418A-8919-250441BCC43F}.Release|x64.ActiveCfg = Release|Win32 {DB17360F-8412-418A-8919-250441BCC43F}.Release|x86.ActiveCfg = Release|Win32 {DB17360F-8412-418A-8919-250441BCC43F}.Release|x86.Build.0 = Release|Win32 {DB17360F-8412-418A-8919-250441BCC43F}.Release|x86.Deploy.0 = Release|Win32 + {A08C66C8-88B3-45F4-8643-27939BC248ED}.Debug|ARM.ActiveCfg = Debug|Win32 + {A08C66C8-88B3-45F4-8643-27939BC248ED}.Debug|ARM64.ActiveCfg = Debug|Win32 + {A08C66C8-88B3-45F4-8643-27939BC248ED}.Debug|x64.ActiveCfg = Debug|Win32 {A08C66C8-88B3-45F4-8643-27939BC248ED}.Debug|x86.ActiveCfg = Debug|Win32 {A08C66C8-88B3-45F4-8643-27939BC248ED}.Debug|x86.Build.0 = Debug|Win32 {A08C66C8-88B3-45F4-8643-27939BC248ED}.Debug|x86.Deploy.0 = Debug|Win32 + {A08C66C8-88B3-45F4-8643-27939BC248ED}.Release|ARM.ActiveCfg = Release|Win32 + {A08C66C8-88B3-45F4-8643-27939BC248ED}.Release|ARM64.ActiveCfg = Release|Win32 + {A08C66C8-88B3-45F4-8643-27939BC248ED}.Release|x64.ActiveCfg = Release|Win32 {A08C66C8-88B3-45F4-8643-27939BC248ED}.Release|x86.ActiveCfg = Release|Win32 {A08C66C8-88B3-45F4-8643-27939BC248ED}.Release|x86.Build.0 = Release|Win32 {A08C66C8-88B3-45F4-8643-27939BC248ED}.Release|x86.Deploy.0 = Release|Win32 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|ARM.ActiveCfg = Debug|ARM + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|ARM.Build.0 = Debug|ARM + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|ARM.Deploy.0 = Debug|ARM + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|ARM64.ActiveCfg = Debug|x86 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|x64.ActiveCfg = Debug|x64 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|x64.Build.0 = Debug|x64 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|x64.Deploy.0 = Debug|x64 {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|x86.ActiveCfg = Debug|x86 {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|x86.Build.0 = Debug|x86 {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Debug|x86.Deploy.0 = Debug|x86 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|ARM.ActiveCfg = Release|ARM + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|ARM.Build.0 = Release|ARM + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|ARM.Deploy.0 = Release|ARM + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|ARM64.ActiveCfg = Release|x86 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|x64.ActiveCfg = Release|x64 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|x64.Build.0 = Release|x64 + {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|x64.Deploy.0 = Release|x64 {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|x86.ActiveCfg = Release|x86 {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|x86.Build.0 = Release|x86 {898B7ED1-3194-463A-8B9C-D4A2460909EE}.Release|x86.Deploy.0 = Release|x86 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|ARM.ActiveCfg = Debug|ARM + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|ARM.Build.0 = Debug|ARM + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|ARM.Deploy.0 = Debug|ARM + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|ARM64.ActiveCfg = Debug|x86 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|x64.ActiveCfg = Debug|x64 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|x64.Build.0 = Debug|x64 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|x64.Deploy.0 = Debug|x64 {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|x86.ActiveCfg = Debug|x86 {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|x86.Build.0 = Debug|x86 {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Debug|x86.Deploy.0 = Debug|x86 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|ARM.ActiveCfg = Release|ARM + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|ARM.Build.0 = Release|ARM + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|ARM.Deploy.0 = Release|ARM + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|ARM64.ActiveCfg = Release|x86 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|x64.ActiveCfg = Release|x64 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|x64.Build.0 = Release|x64 + {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|x64.Deploy.0 = Release|x64 {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|x86.ActiveCfg = Release|x86 {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|x86.Build.0 = Release|x86 {B6EB593C-8396-4152-BE49-5C5AFCD74603}.Release|x86.Deploy.0 = Release|x86 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|ARM.ActiveCfg = Debug|ARM + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|ARM.Build.0 = Debug|ARM + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|ARM.Deploy.0 = Debug|ARM + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|ARM64.ActiveCfg = Debug|Win32 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|x64.ActiveCfg = Debug|x64 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|x64.Build.0 = Debug|x64 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|x64.Deploy.0 = Debug|x64 {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|x86.ActiveCfg = Debug|Win32 {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|x86.Build.0 = Debug|Win32 {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Debug|x86.Deploy.0 = Debug|Win32 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|ARM.ActiveCfg = Release|ARM + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|ARM.Build.0 = Release|ARM + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|ARM.Deploy.0 = Release|ARM + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|ARM64.ActiveCfg = Release|Win32 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|x64.ActiveCfg = Release|x64 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|x64.Build.0 = Release|x64 + {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|x64.Deploy.0 = Release|x64 {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|x86.ActiveCfg = Release|Win32 {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|x86.Build.0 = Release|Win32 {75FBEFAA-5523-47E5-B8EC-6CBCCD9A26DC}.Release|x86.Deploy.0 = Release|Win32 + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|ARM.ActiveCfg = Debug|ARM + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|ARM.Build.0 = Debug|ARM + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|ARM64.ActiveCfg = Debug|Win32 + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|x64.ActiveCfg = Debug|x64 + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|x64.Build.0 = Debug|x64 {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|x86.ActiveCfg = Debug|Win32 {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Debug|x86.Build.0 = Debug|Win32 + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|ARM.ActiveCfg = Release|ARM + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|ARM.Build.0 = Release|ARM + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|ARM64.ActiveCfg = Release|Win32 + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|x64.ActiveCfg = Release|x64 + {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|x64.Build.0 = Release|x64 {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|x86.ActiveCfg = Release|Win32 {A1F9E48F-49E3-4F8C-AC48-2EFDBED4B873}.Release|x86.Build.0 = Release|Win32 + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|ARM.ActiveCfg = Debug|ARM + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|ARM.Build.0 = Debug|ARM + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|ARM64.ActiveCfg = Debug|Win32 + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|x64.ActiveCfg = Debug|x64 + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|x64.Build.0 = Debug|x64 {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|x86.ActiveCfg = Debug|Win32 {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Debug|x86.Build.0 = Debug|Win32 + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|ARM.ActiveCfg = Release|ARM + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|ARM.Build.0 = Release|ARM + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|ARM64.ActiveCfg = Release|Win32 + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|x64.ActiveCfg = Release|x64 + {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|x64.Build.0 = Release|x64 {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|x86.ActiveCfg = Release|Win32 {08CB6A04-0ACC-4C20-81CE-10417D888D1C}.Release|x86.Build.0 = Release|Win32 + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|ARM.ActiveCfg = Debug|ARM + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|ARM.Build.0 = Debug|ARM + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|ARM64.ActiveCfg = Debug|Win32 + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|x64.ActiveCfg = Debug|x64 + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|x64.Build.0 = Debug|x64 {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|x86.ActiveCfg = Debug|Win32 {6E542043-C5D1-4850-B43E-E9295B640C2B}.Debug|x86.Build.0 = Debug|Win32 + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|ARM.ActiveCfg = Release|ARM + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|ARM.Build.0 = Release|ARM + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|ARM64.ActiveCfg = Release|Win32 + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|x64.ActiveCfg = Release|x64 + {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|x64.Build.0 = Release|x64 {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|x86.ActiveCfg = Release|Win32 {6E542043-C5D1-4850-B43E-E9295B640C2B}.Release|x86.Build.0 = Release|Win32 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|ARM.ActiveCfg = Debug|ARM + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|ARM.Build.0 = Debug|ARM + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|ARM.Deploy.0 = Debug|ARM + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|ARM64.ActiveCfg = Debug|Win32 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|x64.ActiveCfg = Debug|x64 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|x64.Build.0 = Debug|x64 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|x64.Deploy.0 = Debug|x64 {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|x86.ActiveCfg = Debug|Win32 {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|x86.Build.0 = Debug|Win32 {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Debug|x86.Deploy.0 = Debug|Win32 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|ARM.ActiveCfg = Release|ARM + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|ARM.Build.0 = Release|ARM + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|ARM.Deploy.0 = Release|ARM + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|ARM64.ActiveCfg = Release|Win32 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|x64.ActiveCfg = Release|x64 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|x64.Build.0 = Release|x64 + {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|x64.Deploy.0 = Release|x64 {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|x86.ActiveCfg = Release|Win32 {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|x86.Build.0 = Release|Win32 {AA2E727F-AF3D-4A9B-A24A-E4424E179B7E}.Release|x86.Deploy.0 = Release|Win32 + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|ARM.ActiveCfg = Debug|ARM + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|ARM.Build.0 = Debug|ARM + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|ARM64.ActiveCfg = Debug|Win32 + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|x64.ActiveCfg = Debug|x64 + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|x64.Build.0 = Debug|x64 {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|x86.ActiveCfg = Debug|Win32 {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Debug|x86.Build.0 = Debug|Win32 + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|ARM.ActiveCfg = Release|ARM + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|ARM.Build.0 = Release|ARM + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|ARM64.ActiveCfg = Release|Win32 + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|x64.ActiveCfg = Release|x64 + {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|x64.Build.0 = Release|x64 {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|x86.ActiveCfg = Release|Win32 {421BB462-74F2-4831-9AB7-06B77E0A98B4}.Release|x86.Build.0 = Release|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Debug|ARM.ActiveCfg = Debug|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Debug|ARM64.ActiveCfg = Debug|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Debug|x64.ActiveCfg = Debug|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Debug|x86.ActiveCfg = Debug|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Debug|x86.Build.0 = Debug|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Debug|x86.Deploy.0 = Debug|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Release|ARM.ActiveCfg = Release|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Release|ARM64.ActiveCfg = Release|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Release|x64.ActiveCfg = Release|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Release|x86.ActiveCfg = Release|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Release|x86.Build.0 = Release|Win32 + {8D84A8AE-BD70-4F78-B85A-230A033FB7EC}.Release|x86.Deploy.0 = Release|Win32 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|ARM.ActiveCfg = Debug|ARM + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|ARM.Build.0 = Debug|ARM + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|ARM.Deploy.0 = Debug|ARM + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|ARM64.ActiveCfg = Debug|Win32 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|x64.ActiveCfg = Debug|x64 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|x64.Build.0 = Debug|x64 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|x64.Deploy.0 = Debug|x64 {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|x86.ActiveCfg = Debug|Win32 {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|x86.Build.0 = Debug|Win32 {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Debug|x86.Deploy.0 = Debug|Win32 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|ARM.ActiveCfg = Release|ARM + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|ARM.Build.0 = Release|ARM + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|ARM.Deploy.0 = Release|ARM + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|ARM64.ActiveCfg = Release|Win32 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|x64.ActiveCfg = Release|x64 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|x64.Build.0 = Release|x64 + {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|x64.Deploy.0 = Release|x64 {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|x86.ActiveCfg = Release|Win32 {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|x86.Build.0 = Release|Win32 {E71542FD-E5F3-55BC-8EBB-4FFC708277CD}.Release|x86.Deploy.0 = Release|Win32 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|ARM.ActiveCfg = Debug|ARM + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|ARM.Build.0 = Debug|ARM + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|ARM64.ActiveCfg = Debug|ARM64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|ARM64.Build.0 = Debug|ARM64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|x64.ActiveCfg = Debug|x64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|x64.Build.0 = Debug|x64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|x86.ActiveCfg = Debug|Win32 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Debug|x86.Build.0 = Debug|Win32 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|ARM.ActiveCfg = Release|ARM + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|ARM.Build.0 = Release|ARM + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|ARM64.ActiveCfg = Release|ARM64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|ARM64.Build.0 = Release|ARM64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|x64.ActiveCfg = Release|x64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|x64.Build.0 = Release|x64 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|x86.ActiveCfg = Release|Win32 + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1}.Release|x86.Build.0 = Release|Win32 EndGlobalSection GlobalSection(SolutionProperties) = preSolution HideSolutionNode = FALSE @@ -164,5 +375,9 @@ Global {421BB462-74F2-4831-9AB7-06B77E0A98B4} = {F04365BC-D53C-42CF-AD23-32813A00816E} {8D84A8AE-BD70-4F78-B85A-230A033FB7EC} = {BF93CF08-8CA4-42FD-85C5-1848345189D9} {E71542FD-E5F3-55BC-8EBB-4FFC708277CD} = {BF93CF08-8CA4-42FD-85C5-1848345189D9} + {B4DD17EC-EEF8-41FC-8BDC-3C8652DB68E1} = {0A073483-1C56-4616-9683-2E10CAFC7349} + EndGlobalSection + GlobalSection(ExtensibilityGlobals) = postSolution + SolutionGuid = {5947F9C6-E55A-4A0E-B53E-9BD597C61614} EndGlobalSection EndGlobal diff --git a/Shared/Audio/Audio.props b/Shared/Audio/Audio.props old mode 100644 new mode 100755 diff --git a/Shared/Audio/Audio.vcxproj b/Shared/Audio/Audio.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/Audio/Audio.vcxproj.filters b/Shared/Audio/Audio.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/Audio/AudioFileReader.cpp b/Shared/Audio/AudioFileReader.cpp old mode 100644 new mode 100755 diff --git a/Shared/Audio/AudioStreamReader.cpp b/Shared/Audio/AudioStreamReader.cpp old mode 100644 new mode 100755 diff --git a/Shared/Audio/BasicListeningEarcon.wav b/Shared/Audio/BasicListeningEarcon.wav old mode 100644 new mode 100755 diff --git a/Shared/Audio/BasicResultsEarcon.wav b/Shared/Audio/BasicResultsEarcon.wav old mode 100644 new mode 100755 diff --git a/Shared/Audio/Include/Audio/All.h b/Shared/Audio/Include/Audio/All.h old mode 100644 new mode 100755 diff --git a/Shared/Audio/Include/Audio/AudioFileReader.h b/Shared/Audio/Include/Audio/AudioFileReader.h old mode 100644 new mode 100755 diff --git a/Shared/Audio/Include/Audio/AudioStreamReader.h b/Shared/Audio/Include/Audio/AudioStreamReader.h old mode 100644 new mode 100755 diff --git a/Shared/Audio/Include/Audio/OmnidirectionalSound.h b/Shared/Audio/Include/Audio/OmnidirectionalSound.h old mode 100644 new mode 100755 diff --git a/Shared/Audio/Include/Audio/XAudio2Helpers.h b/Shared/Audio/Include/Audio/XAudio2Helpers.h old mode 100644 new mode 100755 diff --git a/Shared/Audio/OmnidirectionalSound.cpp b/Shared/Audio/OmnidirectionalSound.cpp old mode 100644 new mode 100755 diff --git a/Shared/Audio/README.md b/Shared/Audio/README.md old mode 100644 new mode 100755 diff --git a/Shared/Audio/pch.cpp b/Shared/Audio/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/Audio/pch.h b/Shared/Audio/pch.h old mode 100644 new mode 100755 diff --git a/Shared/Audio/targetver.h b/Shared/Audio/targetver.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Debugging.props b/Shared/Debugging/Debugging.props old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Debugging.vcxproj b/Shared/Debugging/Debugging.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Debugging.vcxproj.filters b/Shared/Debugging/Debugging.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Include/Debugging/All.h b/Shared/Debugging/Include/Debugging/All.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Include/Debugging/CodeContracts.h b/Shared/Debugging/Include/Debugging/CodeContracts.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Include/Debugging/Timer.h b/Shared/Debugging/Include/Debugging/Timer.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Include/Debugging/TimerGuard.h b/Shared/Debugging/Include/Debugging/TimerGuard.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Include/Debugging/Trace.h b/Shared/Debugging/Include/Debugging/Trace.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/README.md b/Shared/Debugging/README.md old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Timer.cpp b/Shared/Debugging/Timer.cpp old mode 100644 new mode 100755 diff --git a/Shared/Debugging/TimerGuard.cpp b/Shared/Debugging/TimerGuard.cpp old mode 100644 new mode 100755 diff --git a/Shared/Debugging/Trace.cpp b/Shared/Debugging/Trace.cpp old mode 100644 new mode 100755 diff --git a/Shared/Debugging/pch.cpp b/Shared/Debugging/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/Debugging/pch.h b/Shared/Debugging/pch.h old mode 100644 new mode 100755 diff --git a/Shared/Debugging/targetver.h b/Shared/Debugging/targetver.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/CameraResources.cpp b/Shared/Graphics/CameraResources.cpp old mode 100644 new mode 100755 diff --git a/Shared/Graphics/DeviceResources.cpp b/Shared/Graphics/DeviceResources.cpp old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Graphics.props b/Shared/Graphics/Graphics.props old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Graphics.vcxproj b/Shared/Graphics/Graphics.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Graphics.vcxproj.filters b/Shared/Graphics/Graphics.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Include/Graphics/All.h b/Shared/Graphics/Include/Graphics/All.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Include/Graphics/CameraResources.h b/Shared/Graphics/Include/Graphics/CameraResources.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Include/Graphics/DeviceResources.h b/Shared/Graphics/Include/Graphics/DeviceResources.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Include/Graphics/DirectXHelper.h b/Shared/Graphics/Include/Graphics/DirectXHelper.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/Include/Graphics/StepTimer.h b/Shared/Graphics/Include/Graphics/StepTimer.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/README.md b/Shared/Graphics/README.md old mode 100644 new mode 100755 diff --git a/Shared/Graphics/packages.config b/Shared/Graphics/packages.config old mode 100644 new mode 100755 diff --git a/Shared/Graphics/pch.cpp b/Shared/Graphics/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/Graphics/pch.h b/Shared/Graphics/pch.h old mode 100644 new mode 100755 diff --git a/Shared/Graphics/targetver.h b/Shared/Graphics/targetver.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/CameraIntrinsics.cpp b/Shared/HoloLensForCV/CameraIntrinsics.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/CameraIntrinsics.h b/Shared/HoloLensForCV/CameraIntrinsics.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/CsvWriter.cpp b/Shared/HoloLensForCV/CsvWriter.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/CsvWriter.h b/Shared/HoloLensForCV/CsvWriter.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/HoloLensForCV.vcxproj b/Shared/HoloLensForCV/HoloLensForCV.vcxproj old mode 100644 new mode 100755 index 3f86f26..699074a --- a/Shared/HoloLensForCV/HoloLensForCV.vcxproj +++ b/Shared/HoloLensForCV/HoloLensForCV.vcxproj @@ -155,6 +155,7 @@ 28204 Level4 true + $(SolutionDir)packages\Eigen.3.3.3\build\native\include;%(AdditionalIncludeDirectories) Console diff --git a/Shared/HoloLensForCV/HoloLensForCV.vcxproj.filters b/Shared/HoloLensForCV/HoloLensForCV.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/ICameraIntrinsics.h b/Shared/HoloLensForCV/ICameraIntrinsics.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/ISensorFrameSink.h b/Shared/HoloLensForCV/ISensorFrameSink.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/ISensorFrameSinkGroup.h b/Shared/HoloLensForCV/ISensorFrameSinkGroup.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/MediaFrameReaderContext.cpp b/Shared/HoloLensForCV/MediaFrameReaderContext.cpp old mode 100644 new mode 100755 index b1a34f9..acb1cfb --- a/Shared/HoloLensForCV/MediaFrameReaderContext.cpp +++ b/Shared/HoloLensForCV/MediaFrameReaderContext.cpp @@ -112,13 +112,23 @@ namespace HoloLensForCV Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap = frame->VideoMediaFrame->SoftwareBitmap; + Windows::Media::Devices::Core::CameraIntrinsics^ cameraIntrinsics = frame->VideoMediaFrame->CameraIntrinsics; + // // Finally, wrap all of the above information in a SensorFrame object and pass it // down to the sensor frame sink. We'll also retain a reference to the latest sensor // frame on this object for immediate consumption by the app. // - SensorFrame^ sensorFrame = - ref new SensorFrame(_sensorType, timestamp, softwareBitmap); + SensorFrame^ sensorFrame = + // ref new SensorFrame(_sensorType, timestamp, softwareBitmap); + // ref new SensorFrame(_sensorType, timestamp, softwareBitmap, frame); + ref new SensorFrame( + _sensorType + ,timestamp + ,softwareBitmap + // ,cameraIntrinsics + ); + // // Extract the frame-to-origin transform, if the MFT exposed it: @@ -178,6 +188,8 @@ namespace HoloLensForCV zero; } + + //frame->Properties->Lookup() // // Extract camera view transform, if the MFT exposed it: // diff --git a/Shared/HoloLensForCV/MediaFrameReaderContext.h b/Shared/HoloLensForCV/MediaFrameReaderContext.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/MediaFrameSourceGroup.cpp b/Shared/HoloLensForCV/MediaFrameSourceGroup.cpp old mode 100644 new mode 100755 index c36ec10..f39fcc4 --- a/Shared/HoloLensForCV/MediaFrameSourceGroup.cpp +++ b/Shared/HoloLensForCV/MediaFrameSourceGroup.cpp @@ -389,6 +389,87 @@ namespace HoloLensForCV }, Concurrency::task_continuation_context::get_current_winrt_context()); } + //CameraIntrinsics^ + + + + // ADDED : ARJUN + + Windows::Media::Devices::Core::CameraIntrinsics^ MediaFrameSourceGroup::GetCameraIntrinsics(SensorType inputSensorType) { //Async?? + + Windows::Media::Capture::Frames::MediaFrameSource^ selectedMediaFrameSource; + Windows::Media::Devices::Core::CameraIntrinsics^ output; + + for (Windows::Foundation::Collections::IKeyValuePair^ kvp : _mediaCapture->FrameSources) + { + Windows::Media::Capture::Frames::MediaFrameSource^ source = + kvp->Value; + + SensorType sensorType = + GetSensorType( + source); + + if (IsEnabled(sensorType) && sensorType == inputSensorType) { + + selectedMediaFrameSource = source; + + break; + + } + + } + + + /*Platform::String^ requestedSubtype = + nullptr; + + auto found = + std::find_if( + begin(selectedMediaFrameSource->SupportedFormats), + end(selectedMediaFrameSource->SupportedFormats), + [&](Windows::Media::Capture::Frames::MediaFrameFormat^ format) + { + requestedSubtype = + GetSubtypeForFrameReader( + selectedMediaFrameSource->Info->SourceKind, + format); + + return requestedSubtype != nullptr; + + }); + + output = selectedMediaFrameSource->TryGetCameraIntrinsics(*found); + */ + + output = selectedMediaFrameSource->TryGetCameraIntrinsics(selectedMediaFrameSource->CurrentFormat); + if (output == nullptr) { + auto found = std::find_if(begin(selectedMediaFrameSource->SupportedFormats), + end(selectedMediaFrameSource->SupportedFormats), + [&](Windows::Media::Capture::Frames::MediaFrameFormat^ format) + { + output = selectedMediaFrameSource->TryGetCameraIntrinsics(format); + + if (output == nullptr) { + dbg::trace( + L"MediaFrameSourceGroup::GetCameraIntrinsics: format %s-%s @%i/%iHz intrinsics nullptr", + format->MajorType->Data(), + format->Subtype->Data(), + format->FrameRate->Numerator, + format->FrameRate->Denominator); + } + return output != nullptr; + + }); + + } + + return output; + + } + + + + SensorType MediaFrameSourceGroup::GetSensorType( Windows::Media::Capture::Frames::MediaFrameSource^ source) { @@ -709,4 +790,7 @@ namespace HoloLensForCV return cleanupTask; } + + + } diff --git a/Shared/HoloLensForCV/MediaFrameSourceGroup.h b/Shared/HoloLensForCV/MediaFrameSourceGroup.h old mode 100644 new mode 100755 index 34cbffe..def45b2 --- a/Shared/HoloLensForCV/MediaFrameSourceGroup.h +++ b/Shared/HoloLensForCV/MediaFrameSourceGroup.h @@ -36,6 +36,9 @@ namespace HoloLensForCV SensorFrame^ GetLatestSensorFrame( SensorType sensorType); + Windows::Media::Devices::Core::CameraIntrinsics^ GetCameraIntrinsics(SensorType sensorType); + + private: /// /// Returns true if the sensor was explicitly enabled by the user. @@ -75,6 +78,8 @@ namespace HoloLensForCV concurrency::task TryInitializeMediaCaptureAsync( Windows::Media::Capture::Frames::MediaFrameSourceGroup^ group); + + private: MediaFrameSourceGroupType _mediaFrameSourceGroupType; SpatialPerception^ _spatialPerception; diff --git a/Shared/HoloLensForCV/MediaFrameSourceGroupType.h b/Shared/HoloLensForCV/MediaFrameSourceGroupType.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/MultiFrameBuffer.cpp b/Shared/HoloLensForCV/MultiFrameBuffer.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/MultiFrameBuffer.h b/Shared/HoloLensForCV/MultiFrameBuffer.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/README.md b/Shared/HoloLensForCV/README.md old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrame.cpp b/Shared/HoloLensForCV/SensorFrame.cpp old mode 100644 new mode 100755 index 236f11b..7e80ccd --- a/Shared/HoloLensForCV/SensorFrame.cpp +++ b/Shared/HoloLensForCV/SensorFrame.cpp @@ -13,13 +13,189 @@ namespace HoloLensForCV { - SensorFrame::SensorFrame( - _In_ SensorType frameType, - _In_ Windows::Foundation::DateTime timestamp, - _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap) - { - FrameType = frameType; - Timestamp = timestamp; - SoftwareBitmap = softwareBitmap; - } + SensorFrame::SensorFrame( + _In_ SensorType frameType, + _In_ Windows::Foundation::DateTime timestamp, + _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap) + { + FrameType = frameType; + Timestamp = timestamp; + SoftwareBitmap = softwareBitmap; + + } + + /*SensorFrame::SensorFrame( + _In_ SensorType frameType, + _In_ Windows::Foundation::DateTime timestamp, + _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap, + _In_ Windows::Media::Capture::Frames::MediaFrameReference^ frame) + { + FrameType = frameType; + Timestamp = timestamp; + SoftwareBitmap = softwareBitmap; + + CoreCameraIntrinsics = frame->VideoMediaFrame->CameraIntrinsics; + if (CoreCameraIntrinsics == nullptr) { + dbg::trace(L"SensorFrame:VideoMediaFrame CameraIntrinsics null."); + } + else { + dbg::trace(L"SensorFrame:VideoMediaFrame CameraIntrinsics not null!"); + } + + }*/ + + SensorFrame::SensorFrame( + _In_ SensorType frameType, + _In_ Windows::Foundation::DateTime timestamp, + _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap, + _In_ Windows::Media::Devices::Core::CameraIntrinsics^ cameraIntrinsics) + { + + FrameType = frameType; + Timestamp = timestamp; + SoftwareBitmap = softwareBitmap; + CoreCameraIntrinsics = cameraIntrinsics; + if (CoreCameraIntrinsics == nullptr) { + dbg::trace(L"SensorFrame:VideoMediaFrame CameraIntrinsics null."); + } + else { + dbg::trace(L"SensorFrame:VideoMediaFrame CameraIntrinsics not null!"); + } + + +} + + Platform::Array^ + /*void*/ SensorFrame::sensorFrameToImageBuffer() { + + Windows::Graphics::Imaging::SoftwareBitmap^ bitmap; + Windows::Graphics::Imaging::BitmapBuffer^ bitmapBuffer; + Windows::Foundation::IMemoryBufferReference^ bitmapBufferReference; + + int32_t imageWidth = 0; + int32_t imageHeight = 0; + int32_t pixelStride = 1; + int32_t rowStride = 0; + + Platform::Array^ imageBufferAsPlatformArray; + int32_t imageBufferSize = 0; + + { +#if DBG_ENABLE_INFORMATIONAL_LOGGING + dbg::TimerGuard timerGuard( + L"AppMain::sensorFrameToImageBuffer: buffer preparation", + 4.0 /* minimum_time_elapsed_in_milliseconds */); +#endif /* DBG_ENABLE_INFORMATIONAL_LOGGING */ + imageWidth = SoftwareBitmap->PixelWidth; + imageHeight = SoftwareBitmap->PixelHeight; + + bitmap = + SoftwareBitmap; + + imageWidth = bitmap->PixelWidth; + imageHeight = bitmap->PixelHeight; + + bitmapBuffer = + SoftwareBitmap->LockBuffer( + Windows::Graphics::Imaging::BitmapBufferAccessMode::Read); + + bitmapBufferReference = + bitmapBuffer->CreateReference(); + + uint32_t bitmapBufferDataSize = 0; + + uint8_t* bitmapBufferData = + Io::GetTypedPointerToMemoryBuffer( + bitmapBufferReference, + bitmapBufferDataSize); + + switch (SoftwareBitmap->BitmapPixelFormat) + { + case Windows::Graphics::Imaging::BitmapPixelFormat::Bgra8: + pixelStride = 4; + break; + + case Windows::Graphics::Imaging::BitmapPixelFormat::Gray16: + pixelStride = 2; + break; + + case Windows::Graphics::Imaging::BitmapPixelFormat::Gray8: + pixelStride = 1; + break; + + default: +#if DBG_ENABLE_INFORMATIONAL_LOGGING + dbg::trace( + L"SensorFrame::sensorFrameToImageBuffer: unrecognized bitmap pixel format, assuming 1 byte per pixel"); +#endif /* DBG_ENABLE_INFORMATIONAL_LOGGING */ + + break; + } + + rowStride = + imageWidth * pixelStride; + + imageBufferSize = + imageHeight * rowStride; + + ASSERT( + imageBufferSize == (int32_t)bitmapBufferDataSize); + + imageBufferAsPlatformArray = + ref new Platform::Array( + bitmapBufferData, + imageBufferSize); + + return imageBufferAsPlatformArray; + + } + + } + /* + Windows::Foundation::Numerics::float4x4 SensorFrame::GetAbsoluteCameraPose() { + + Windows::Foundation::Numerics::float4x4^ output = + ref new Windows::Foundation::Numerics::float4x4( + 1, 0, 0, 0, + 0, -1, 0, 0, + 0, 0, -1, 0, + 0, 0, 0, 1); + + Windows::Foundation::Numerics::float4x4 InvFrameToOrigin; + Windows::Foundation::Numerics::invert(FrameToOrigin, &InvFrameToOrigin); + + output = output * (CameraViewTransform*InvFrameToOrigin); + + return output; + + } + + Windows::Foundation::Numerics::float4x4 SensorFrame::GetCamToOrigin() { + + Windows::Foundation::Numerics::float4x4 camToRef; + Windows::Foundation::Numerics::invert(CameraViewTransform, &camToRef); + + Windows::Foundation::Numerics::float4x4 camToOrigin = camToRef * FrameToOrigin; + + + Eigen::Vector3f camPinhole(camToOrigin.m41, camToOrigin.m42, camToOrigin.m43); + + Eigen::Matrix3f camToOriginR; + + camToOriginR(0, 0) = camToOrigin.m11; + camToOriginR(0, 1) = camToOrigin.m12; + camToOriginR(0, 2) = camToOrigin.m13; + camToOriginR(1, 0) = camToOrigin.m21; + camToOriginR(1, 1) = camToOrigin.m22; + camToOriginR(1, 2) = camToOrigin.m23; + camToOriginR(2, 0) = camToOrigin.m31; + camToOriginR(2, 1) = camToOrigin.m32; + camToOriginR(2, 2) = camToOrigin.m33; + + + + return camToOrigin; + + } + */ } diff --git a/Shared/HoloLensForCV/SensorFrame.h b/Shared/HoloLensForCV/SensorFrame.h old mode 100644 new mode 100755 index 09cfd75..ea9396c --- a/Shared/HoloLensForCV/SensorFrame.h +++ b/Shared/HoloLensForCV/SensorFrame.h @@ -13,26 +13,59 @@ namespace HoloLensForCV { - // - // Collects information about a sensor frame -- originated on device, or remotely. - // - public ref class SensorFrame sealed - { - public: - SensorFrame( - _In_ SensorType frameType, - _In_ Windows::Foundation::DateTime timestamp, - _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap); - - property SensorType FrameType; - property Windows::Foundation::DateTime Timestamp; - property Windows::Graphics::Imaging::SoftwareBitmap^ SoftwareBitmap; - - property Windows::Media::Devices::Core::CameraIntrinsics^ CoreCameraIntrinsics; - property CameraIntrinsics^ SensorStreamingCameraIntrinsics; - - property Windows::Foundation::Numerics::float4x4 FrameToOrigin; - property Windows::Foundation::Numerics::float4x4 CameraViewTransform; - property Windows::Foundation::Numerics::float4x4 CameraProjectionTransform; - }; + // + // Collects information about a sensor frame -- originated on device, or remotely. + // + public ref class SensorFrame sealed + { + public: + SensorFrame( + _In_ SensorType frameType, + _In_ Windows::Foundation::DateTime timestamp, + _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap); + + /*SensorFrame( + _In_ SensorType frameType, + _In_ Windows::Foundation::DateTime timestamp, + _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap, + _In_ Windows::Media::Capture::Frames::MediaFrameReference^ frame); + */ + + SensorFrame( + _In_ SensorType frameType, + _In_ Windows::Foundation::DateTime timestamp, + _In_ Windows::Graphics::Imaging::SoftwareBitmap^ softwareBitmap, + _In_ Windows::Media::Devices::Core::CameraIntrinsics^ cameraIntrinsics); + + property SensorType FrameType; + property Windows::Foundation::DateTime Timestamp; + property Windows::Graphics::Imaging::SoftwareBitmap^ SoftwareBitmap; + + property Windows::Media::Devices::Core::CameraIntrinsics^ CoreCameraIntrinsics; + property CameraIntrinsics^ SensorStreamingCameraIntrinsics; + + property Windows::Foundation::Numerics::float4x4 FrameToOrigin; + property Windows::Foundation::Numerics::float4x4 CameraViewTransform; + property Windows::Foundation::Numerics::float4x4 CameraProjectionTransform; + //Windows::Foundation::Numerics::float4x4 GetAbsoluteCameraPose(); + //Windows::Foundation::Numerics::float4x4 GetCamToOrigin(); + + //property int32_t imageBufferSize; + //uint8_t* SensorFrame::GetBitmapBufferData(); + //property Platform::Array^ imageBufferAsPlatformArray; + + //void SensorFrame::sensorFrameToImageBuffer(); + Platform::Array^ SensorFrame::sensorFrameToImageBuffer(); + + + private: + + //property int32_t imageWidth; + //property int32_t imageHeight; + //property int32_t pixelStride; + //property int32_t rowStride; + //property uint8_t* bitmapBufferData; + + + }; } diff --git a/Shared/HoloLensForCV/SensorFrameReceiver.cpp b/Shared/HoloLensForCV/SensorFrameReceiver.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameReceiver.h b/Shared/HoloLensForCV/SensorFrameReceiver.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameRecorder.cpp b/Shared/HoloLensForCV/SensorFrameRecorder.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameRecorder.h b/Shared/HoloLensForCV/SensorFrameRecorder.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameRecorderSink.cpp b/Shared/HoloLensForCV/SensorFrameRecorderSink.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameRecorderSink.h b/Shared/HoloLensForCV/SensorFrameRecorderSink.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameStreamHeader.cpp b/Shared/HoloLensForCV/SensorFrameStreamHeader.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameStreamHeader.h b/Shared/HoloLensForCV/SensorFrameStreamHeader.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameStreamer.cpp b/Shared/HoloLensForCV/SensorFrameStreamer.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameStreamer.h b/Shared/HoloLensForCV/SensorFrameStreamer.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameStreamingServer.cpp b/Shared/HoloLensForCV/SensorFrameStreamingServer.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorFrameStreamingServer.h b/Shared/HoloLensForCV/SensorFrameStreamingServer.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SensorType.h b/Shared/HoloLensForCV/SensorType.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SpatialPerception.cpp b/Shared/HoloLensForCV/SpatialPerception.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/SpatialPerception.h b/Shared/HoloLensForCV/SpatialPerception.h old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/pch.cpp b/Shared/HoloLensForCV/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/HoloLensForCV/pch.h b/Shared/HoloLensForCV/pch.h old mode 100644 new mode 100755 index 73a7a27..2a83498 --- a/Shared/HoloLensForCV/pch.h +++ b/Shared/HoloLensForCV/pch.h @@ -69,3 +69,6 @@ #include "MediaFrameSourceGroup.h" #include "MultiFrameBuffer.h" + +#include + diff --git a/Shared/Holographic/AppMainBase.cpp b/Shared/Holographic/AppMainBase.cpp old mode 100644 new mode 100755 diff --git a/Shared/Holographic/AppViewBase.cpp b/Shared/Holographic/AppViewBase.cpp old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Holographic.props b/Shared/Holographic/Holographic.props old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Holographic.vcxproj b/Shared/Holographic/Holographic.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Holographic.vcxproj.filters b/Shared/Holographic/Holographic.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Include/Holographic/All.h b/Shared/Holographic/Include/Holographic/All.h old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Include/Holographic/AppMainBase.h b/Shared/Holographic/Include/Holographic/AppMainBase.h old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Include/Holographic/AppViewBase.h b/Shared/Holographic/Include/Holographic/AppViewBase.h old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Include/Holographic/IAppMain.h b/Shared/Holographic/Include/Holographic/IAppMain.h old mode 100644 new mode 100755 diff --git a/Shared/Holographic/Include/Holographic/SpatialInputHandler.h b/Shared/Holographic/Include/Holographic/SpatialInputHandler.h old mode 100644 new mode 100755 diff --git a/Shared/Holographic/README.md b/Shared/Holographic/README.md old mode 100644 new mode 100755 diff --git a/Shared/Holographic/SpatialInputHandler.cpp b/Shared/Holographic/SpatialInputHandler.cpp old mode 100644 new mode 100755 diff --git a/Shared/Holographic/pch.cpp b/Shared/Holographic/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/Holographic/pch.h b/Shared/Holographic/pch.h old mode 100644 new mode 100755 diff --git a/Shared/Holographic/targetver.h b/Shared/Holographic/targetver.h old mode 100644 new mode 100755 diff --git a/Shared/Io/BufferHelpers.cpp b/Shared/Io/BufferHelpers.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/All.h b/Shared/Io/Include/Io/All.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/BufferHelpers.h b/Shared/Io/Include/Io/BufferHelpers.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/IoHelpers.h b/Shared/Io/Include/Io/IoHelpers.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/StorageHandleAccess.h b/Shared/Io/Include/Io/StorageHandleAccess.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/StringHelpers.h b/Shared/Io/Include/Io/StringHelpers.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/Tar.h b/Shared/Io/Include/Io/Tar.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/Time.h b/Shared/Io/Include/Io/Time.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/TimeConverter.h b/Shared/Io/Include/Io/TimeConverter.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Include/Io/Timer.h b/Shared/Io/Include/Io/Timer.h old mode 100644 new mode 100755 diff --git a/Shared/Io/Io.props b/Shared/Io/Io.props old mode 100644 new mode 100755 diff --git a/Shared/Io/Io.vcxproj b/Shared/Io/Io.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/Io/Io.vcxproj.filters b/Shared/Io/Io.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/Io/IoHelpers.cpp b/Shared/Io/IoHelpers.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/README.md b/Shared/Io/README.md old mode 100644 new mode 100755 diff --git a/Shared/Io/StringHelpers.cpp b/Shared/Io/StringHelpers.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/Tar.cpp b/Shared/Io/Tar.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/Time.cpp b/Shared/Io/Time.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/TimeConverter.cpp b/Shared/Io/TimeConverter.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/Timer.cpp b/Shared/Io/Timer.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/pch.cpp b/Shared/Io/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/Io/pch.h b/Shared/Io/pch.h old mode 100644 new mode 100755 diff --git a/Shared/Io/targetver.h b/Shared/Io/targetver.h old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/Include/OpenCVHelpers/All.h b/Shared/OpenCVHelpers/Include/OpenCVHelpers/All.h old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/Include/OpenCVHelpers/OpenCVHelpers.h b/Shared/OpenCVHelpers/Include/OpenCVHelpers/OpenCVHelpers.h old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/Include/OpenCVHelpers/OpenCVTexture2D.h b/Shared/OpenCVHelpers/Include/OpenCVHelpers/OpenCVTexture2D.h old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/OpenCVHelpers.cpp b/Shared/OpenCVHelpers/OpenCVHelpers.cpp old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/OpenCVHelpers.props b/Shared/OpenCVHelpers/OpenCVHelpers.props old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/OpenCVHelpers.vcxproj b/Shared/OpenCVHelpers/OpenCVHelpers.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/OpenCVHelpers.vcxproj.filters b/Shared/OpenCVHelpers/OpenCVHelpers.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/OpenCVTexture2D.cpp b/Shared/OpenCVHelpers/OpenCVTexture2D.cpp old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/README.md b/Shared/OpenCVHelpers/README.md old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/packages.config b/Shared/OpenCVHelpers/packages.config old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/pch.cpp b/Shared/OpenCVHelpers/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/pch.h b/Shared/OpenCVHelpers/pch.h old mode 100644 new mode 100755 diff --git a/Shared/OpenCVHelpers/targetver.h b/Shared/OpenCVHelpers/targetver.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/All.h b/Shared/Rendering/Include/Rendering/All.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/MarkerRenderer.h b/Shared/Rendering/Include/Rendering/MarkerRenderer.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/PolylineRenderer.h b/Shared/Rendering/Include/Rendering/PolylineRenderer.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/SlateMaterial.h b/Shared/Rendering/Include/Rendering/SlateMaterial.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/SlateRenderer.h b/Shared/Rendering/Include/Rendering/SlateRenderer.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/SlateShaderStructures.h b/Shared/Rendering/Include/Rendering/SlateShaderStructures.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Include/Rendering/Texture2D.h b/Shared/Rendering/Include/Rendering/Texture2D.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/MarkerRenderer.cpp b/Shared/Rendering/MarkerRenderer.cpp old mode 100644 new mode 100755 diff --git a/Shared/Rendering/PolylineRenderer.cpp b/Shared/Rendering/PolylineRenderer.cpp old mode 100644 new mode 100755 diff --git a/Shared/Rendering/README.md b/Shared/Rendering/README.md old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Rendering.props b/Shared/Rendering/Rendering.props old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Rendering.vcxproj b/Shared/Rendering/Rendering.vcxproj old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Rendering.vcxproj.filters b/Shared/Rendering/Rendering.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Shared/Rendering/SlateMaterial.Default.gs.hlsl b/Shared/Rendering/SlateMaterial.Default.gs.hlsl old mode 100644 new mode 100755 diff --git a/Shared/Rendering/SlateMaterial.Default.ps.hlsl b/Shared/Rendering/SlateMaterial.Default.ps.hlsl old mode 100644 new mode 100755 diff --git a/Shared/Rendering/SlateMaterial.Default.vs.hlsl b/Shared/Rendering/SlateMaterial.Default.vs.hlsl old mode 100644 new mode 100755 diff --git a/Shared/Rendering/SlateMaterial.VPRT.vs.hlsl b/Shared/Rendering/SlateMaterial.VPRT.vs.hlsl old mode 100644 new mode 100755 diff --git a/Shared/Rendering/SlateMaterial.cpp b/Shared/Rendering/SlateMaterial.cpp old mode 100644 new mode 100755 diff --git a/Shared/Rendering/SlateRenderer.cpp b/Shared/Rendering/SlateRenderer.cpp old mode 100644 new mode 100755 diff --git a/Shared/Rendering/Texture2D.cpp b/Shared/Rendering/Texture2D.cpp old mode 100644 new mode 100755 diff --git a/Shared/Rendering/packages.config b/Shared/Rendering/packages.config old mode 100644 new mode 100755 diff --git a/Shared/Rendering/pch.cpp b/Shared/Rendering/pch.cpp old mode 100644 new mode 100755 diff --git a/Shared/Rendering/pch.h b/Shared/Rendering/pch.h old mode 100644 new mode 100755 diff --git a/Shared/Rendering/targetver.h b/Shared/Rendering/targetver.h old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/App.xaml b/Tools/ReceiverPV/App.xaml old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/App.xaml.cs b/Tools/ReceiverPV/App.xaml.cs old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/LockScreenLogo.scale-200.png b/Tools/ReceiverPV/Assets/LockScreenLogo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/SplashScreen.scale-200.png b/Tools/ReceiverPV/Assets/SplashScreen.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/Square150x150Logo.scale-200.png b/Tools/ReceiverPV/Assets/Square150x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/Square44x44Logo.scale-200.png b/Tools/ReceiverPV/Assets/Square44x44Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Tools/ReceiverPV/Assets/Square44x44Logo.targetsize-24_altform-unplated.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/StoreLogo.png b/Tools/ReceiverPV/Assets/StoreLogo.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Assets/Wide310x150Logo.scale-200.png b/Tools/ReceiverPV/Assets/Wide310x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/MainPage.xaml b/Tools/ReceiverPV/MainPage.xaml old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/MainPage.xaml.cs b/Tools/ReceiverPV/MainPage.xaml.cs old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Package.appxmanifest b/Tools/ReceiverPV/Package.appxmanifest old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Properties/AssemblyInfo.cs b/Tools/ReceiverPV/Properties/AssemblyInfo.cs old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/Properties/Default.rd.xml b/Tools/ReceiverPV/Properties/Default.rd.xml old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/README.md b/Tools/ReceiverPV/README.md old mode 100644 new mode 100755 diff --git a/Tools/ReceiverPV/ReceiverPV.csproj b/Tools/ReceiverPV/ReceiverPV.csproj old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/App.xaml b/Tools/ReceiverVLC/App.xaml old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/App.xaml.cs b/Tools/ReceiverVLC/App.xaml.cs old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/LockScreenLogo.scale-200.png b/Tools/ReceiverVLC/Assets/LockScreenLogo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/SplashScreen.scale-200.png b/Tools/ReceiverVLC/Assets/SplashScreen.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/Square150x150Logo.scale-200.png b/Tools/ReceiverVLC/Assets/Square150x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/Square44x44Logo.scale-200.png b/Tools/ReceiverVLC/Assets/Square44x44Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Tools/ReceiverVLC/Assets/Square44x44Logo.targetsize-24_altform-unplated.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/StoreLogo.png b/Tools/ReceiverVLC/Assets/StoreLogo.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Assets/Wide310x150Logo.scale-200.png b/Tools/ReceiverVLC/Assets/Wide310x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/MainPage.xaml b/Tools/ReceiverVLC/MainPage.xaml old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/MainPage.xaml.cs b/Tools/ReceiverVLC/MainPage.xaml.cs old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Package.appxmanifest b/Tools/ReceiverVLC/Package.appxmanifest old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Properties/AssemblyInfo.cs b/Tools/ReceiverVLC/Properties/AssemblyInfo.cs old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/Properties/Default.rd.xml b/Tools/ReceiverVLC/Properties/Default.rd.xml old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/README.md b/Tools/ReceiverVLC/README.md old mode 100644 new mode 100755 diff --git a/Tools/ReceiverVLC/ReceiverVLC.csproj b/Tools/ReceiverVLC/ReceiverVLC.csproj old mode 100644 new mode 100755 diff --git a/Tools/Recorder/AppMain.cpp b/Tools/Recorder/AppMain.cpp old mode 100644 new mode 100755 diff --git a/Tools/Recorder/AppMain.h b/Tools/Recorder/AppMain.h old mode 100644 new mode 100755 diff --git a/Tools/Recorder/AppView.cpp b/Tools/Recorder/AppView.cpp old mode 100644 new mode 100755 diff --git a/Tools/Recorder/AppView.h b/Tools/Recorder/AppView.h old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/LockScreenLogo.scale-200.png b/Tools/Recorder/Assets/LockScreenLogo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/SplashScreen.scale-200.png b/Tools/Recorder/Assets/SplashScreen.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/Square150x150Logo.scale-200.png b/Tools/Recorder/Assets/Square150x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/Square44x44Logo.scale-200.png b/Tools/Recorder/Assets/Square44x44Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Tools/Recorder/Assets/Square44x44Logo.targetsize-24_altform-unplated.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/StoreLogo.png b/Tools/Recorder/Assets/StoreLogo.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Assets/Wide310x150Logo.scale-200.png b/Tools/Recorder/Assets/Wide310x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Package.appxmanifest b/Tools/Recorder/Package.appxmanifest old mode 100644 new mode 100755 diff --git a/Tools/Recorder/README.md b/Tools/Recorder/README.md old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Recorder.vcxproj b/Tools/Recorder/Recorder.vcxproj old mode 100644 new mode 100755 diff --git a/Tools/Recorder/Recorder.vcxproj.filters b/Tools/Recorder/Recorder.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Tools/Recorder/packages.config b/Tools/Recorder/packages.config old mode 100644 new mode 100755 diff --git a/Tools/Recorder/pch.cpp b/Tools/Recorder/pch.cpp old mode 100644 new mode 100755 diff --git a/Tools/Recorder/pch.h b/Tools/Recorder/pch.h old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/AppMain.cpp b/Tools/StreamerPV/AppMain.cpp old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/AppMain.h b/Tools/StreamerPV/AppMain.h old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/AppView.cpp b/Tools/StreamerPV/AppView.cpp old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/AppView.h b/Tools/StreamerPV/AppView.h old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/LockScreenLogo.scale-200.png b/Tools/StreamerPV/Assets/LockScreenLogo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/SplashScreen.scale-200.png b/Tools/StreamerPV/Assets/SplashScreen.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/Square150x150Logo.scale-200.png b/Tools/StreamerPV/Assets/Square150x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/Square44x44Logo.scale-200.png b/Tools/StreamerPV/Assets/Square44x44Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Tools/StreamerPV/Assets/Square44x44Logo.targetsize-24_altform-unplated.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/StoreLogo.png b/Tools/StreamerPV/Assets/StoreLogo.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Assets/Wide310x150Logo.scale-200.png b/Tools/StreamerPV/Assets/Wide310x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/Package.appxmanifest b/Tools/StreamerPV/Package.appxmanifest old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/README.md b/Tools/StreamerPV/README.md old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/StreamerPV.vcxproj b/Tools/StreamerPV/StreamerPV.vcxproj old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/StreamerPV.vcxproj.filters b/Tools/StreamerPV/StreamerPV.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/packages.config b/Tools/StreamerPV/packages.config old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/pch.cpp b/Tools/StreamerPV/pch.cpp old mode 100644 new mode 100755 diff --git a/Tools/StreamerPV/pch.h b/Tools/StreamerPV/pch.h old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/AppMain.cpp b/Tools/StreamerVLC/AppMain.cpp old mode 100644 new mode 100755 index f2f4777..80bb53f --- a/Tools/StreamerVLC/AppMain.cpp +++ b/Tools/StreamerVLC/AppMain.cpp @@ -22,76 +22,166 @@ using namespace Windows::Graphics::Holographic; using namespace Windows::Perception::Spatial; using namespace Windows::UI::Input::Spatial; using namespace std::placeholders; +using namespace Windows::ApplicationModel::Background; +using namespace Windows::UI::Core; +using namespace Tasks; namespace StreamerVLC { - // Loads and initializes application assets when the application is loaded. - AppMain::AppMain(const std::shared_ptr& deviceResources) - : Holographic::AppMainBase(deviceResources) - , _selectedHoloLensMediaFrameSourceGroupType( - HoloLensForCV::MediaFrameSourceGroupType::HoloLensResearchModeSensors) - , _holoLensMediaFrameSourceGroupStarted(false) - { - } - - void AppMain::OnHolographicSpaceChanged( - Windows::Graphics::Holographic::HolographicSpace^ holographicSpace) - { - // - // Initialize the camera preview hologram. - // - _slateRenderer = - std::make_unique( - _deviceResources); - - // - // Initialize the HoloLens media frame readers - // - StartHoloLensMediaFrameSourceGroup(); - } - - void AppMain::OnSpatialInput( - _In_ Windows::UI::Input::Spatial::SpatialInteractionSourceState^ pointerState) - { - Windows::Perception::Spatial::SpatialCoordinateSystem^ currentCoordinateSystem = - _spatialPerception->GetOriginFrameOfReference()->CoordinateSystem; - - // When a Pressed gesture is detected, the sample hologram will be repositioned - // two meters in front of the user. - _slateRenderer->PositionHologram( - pointerState->TryGetPointerPose(currentCoordinateSystem)); - } - - // Updates the application state once per frame. - void AppMain::OnUpdate( - _In_ Windows::Graphics::Holographic::HolographicFrame^ holographicFrame, - _In_ const Graphics::StepTimer& stepTimer) - { - dbg::TimerGuard timerGuard( - L"AppMain::OnUpdate", - 30.0 /* minimum_time_elapsed_in_milliseconds */); + void AppMain::InitializeBackgroundStreamer() { // Refer to Windows Universal Samples for UWP apps, segment on Background Tasks + + Platform::String^ TaskName = "BackgroundTask"; + + //auto task = + BackgroundExecutionManager::RequestAccessAsync(); + + auto iter = BackgroundTaskRegistration::AllTasks->First(); + auto hascur = iter->HasCurrent; + + while (hascur) { + auto cur = iter->Current->Value; + if (cur->Name == TaskName) { + taskRegistered = true; + dbg::trace(L"Background Task already still registered!"); + break; + } + + hascur = iter->MoveNext(); + } + if (taskRegistered) { + + // + // Loop through all ungrouped background tasks and unregister any with the name passed into this function. + // + for (auto pair : BackgroundTaskRegistration::AllTasks) + { + auto task = pair->Value; + if (task->Name == TaskName) + { + task->Unregister(true); + } + } + + dbg::trace(L"Background Task deregistered!"); + taskRegistered = false; + + } + + else if (!taskRegistered) { + auto builder = ref new BackgroundTaskBuilder(); + + builder->Name = TaskName; + builder->TaskEntryPoint = "Tasks.BackgroundTask"; + + ApplicationTrigger^ trigger = ref new ApplicationTrigger(); + builder->SetTrigger(trigger); + + BackgroundTaskRegistration^ task = builder->Register(); + dbg::trace(L"Task registered!"); + + concurrency::create_task(trigger->RequestAsync()).then([this, trigger](concurrency::task applicationTriggerTask) { + + ApplicationTriggerResult result = applicationTriggerTask.get(); + auto res = "App Trigger Result = " + result.ToString(); + dbg::trace(L"Task triggered!"); + dbg::trace(result.ToString()->Data()); + }); + + + } + + } + /* + void AppMain::OnProgress(BackgroundTaskRegistration^ task, BackgroundTaskProgressEventArgs^ args) + { + // Dispatcher->RunAsync(CoreDispatcherPriority::Normal, ref new DispatchedHandler([this, args]() + //{ + //auto progress = "Progress: " + args->Progress + "%"; + //BackgroundTaskSample::SampleBackgroundTaskProgress = progress; + //UpdateUI(); + //})); + } + + void AppMain::OnCompleted(BackgroundTaskRegistration^ task, BackgroundTaskCompletedEventArgs^ args) { + + } + */ + + // Loads and initializes application assets when the application is loaded. + AppMain::AppMain(const std::shared_ptr& deviceResources) + : Holographic::AppMainBase(deviceResources) + , _selectedHoloLensMediaFrameSourceGroupType( + HoloLensForCV::MediaFrameSourceGroupType::HoloLensResearchModeSensors) + , _holoLensMediaFrameSourceGroupStarted(false) + { + + taskRegistered = false; + + } + + + void AppMain::OnHolographicSpaceChanged( + Windows::Graphics::Holographic::HolographicSpace^ holographicSpace) + { + // + // Initialize the camera preview hologram. + // + _slateRenderer = + std::make_unique( + _deviceResources); + + InitializeBackgroundStreamer(); + + // Initialize the HoloLens media frame readers, here, for using SensorStreamingServer + // + //StartHoloLensMediaFrameSourceGroup(); + + + } + + void AppMain::OnSpatialInput( + _In_ Windows::UI::Input::Spatial::SpatialInteractionSourceState^ pointerState) + { + Windows::Perception::Spatial::SpatialCoordinateSystem^ currentCoordinateSystem = + _spatialPerception->GetOriginFrameOfReference()->CoordinateSystem; + + // When a Pressed gesture is detected, the sample hologram will be repositioned + // two meters in front of the user. + //_slateRenderer->PositionHologram( + //pointerState->TryGetPointerPose(currentCoordinateSystem)); + } + + // Updates the application state once per frame. + void AppMain::OnUpdate( + _In_ Windows::Graphics::Holographic::HolographicFrame^ holographicFrame, + _In_ const Graphics::StepTimer& stepTimer) + { + dbg::TimerGuard timerGuard( + L"AppMain::OnUpdate", + 30.0 /* minimum_time_elapsed_in_milliseconds */); + HoloLensForCV::SensorType renderSensorType = HoloLensForCV::SensorType::VisibleLightLeftFront; - // - // Update scene objects. - // - // Put time-based updates here. By default this code will run once per frame, - // but if you change the StepTimer to use a fixed time step this code will - // run as many times as needed to get to the current step. - // - _slateRenderer->Update( - stepTimer); - - if (!_holoLensMediaFrameSourceGroupStarted) - { - return; - } - - HoloLensForCV::SensorFrame^ latestCameraPreviewFrame; - Windows::Graphics::Imaging::BitmapPixelFormat cameraPreviewExpectedBitmapPixelFormat; - DXGI_FORMAT cameraPreviewTextureFormat; - int32_t cameraPreviewPixelStride; + // + // Update scene objects. + // + // Put time-based updates here. By default this code will run once per frame, + // but if you change the StepTimer to use a fixed time step this code will + // run as many times as needed to get to the current step. + // + _slateRenderer->Update( + stepTimer); + + if (!_holoLensMediaFrameSourceGroupStarted) + { + return; + } + + HoloLensForCV::SensorFrame^ latestCameraPreviewFrame; + Windows::Graphics::Imaging::BitmapPixelFormat cameraPreviewExpectedBitmapPixelFormat; + DXGI_FORMAT cameraPreviewTextureFormat; + int32_t cameraPreviewPixelStride; { latestCameraPreviewFrame = @@ -125,116 +215,120 @@ namespace StreamerVLC } } - if (nullptr == latestCameraPreviewFrame) - { - return; - } + if (nullptr == latestCameraPreviewFrame) + { + return; + } - if (_cameraPreviewTimestamp.UniversalTime == latestCameraPreviewFrame->Timestamp.UniversalTime) - { - return; - } + if (_cameraPreviewTimestamp.UniversalTime == latestCameraPreviewFrame->Timestamp.UniversalTime) + { + return; + } - _cameraPreviewTimestamp = latestCameraPreviewFrame->Timestamp; + _cameraPreviewTimestamp = latestCameraPreviewFrame->Timestamp; - if (nullptr == _cameraPreviewTexture) - { + if (nullptr == _cameraPreviewTexture) + { #if 0 - dbg::trace( - L"latestCameraPreviewFrame->SoftwareBitmap->PixelWidth=0x%08x, latestCameraPreviewFrame->SoftwareBitmap->PixelHeight=0x%08x", - latestCameraPreviewFrame->SoftwareBitmap->PixelWidth, latestCameraPreviewFrame->SoftwareBitmap->PixelHeight); + dbg::trace( + L"latestCameraPreviewFrame->SoftwareBitmap->PixelWidth=0x%08x, latestCameraPreviewFrame->SoftwareBitmap->PixelHeight=0x%08x", + latestCameraPreviewFrame->SoftwareBitmap->PixelWidth, latestCameraPreviewFrame->SoftwareBitmap->PixelHeight); #endif - _cameraPreviewTexture = - std::make_shared( - _deviceResources, - latestCameraPreviewFrame->SoftwareBitmap->PixelWidth, - latestCameraPreviewFrame->SoftwareBitmap->PixelHeight, - cameraPreviewTextureFormat); - } + _cameraPreviewTexture = + std::make_shared( + _deviceResources, + latestCameraPreviewFrame->SoftwareBitmap->PixelWidth, + latestCameraPreviewFrame->SoftwareBitmap->PixelHeight, + cameraPreviewTextureFormat); + } - { - void* mappedTexture = - _cameraPreviewTexture->MapCPUTexture( - D3D11_MAP_WRITE /* mapType */); + { + void* mappedTexture = + _cameraPreviewTexture->MapCPUTexture( + D3D11_MAP_WRITE /* mapType */); - Windows::Graphics::Imaging::SoftwareBitmap^ bitmap = - latestCameraPreviewFrame->SoftwareBitmap; + Windows::Graphics::Imaging::SoftwareBitmap^ bitmap = + latestCameraPreviewFrame->SoftwareBitmap; #if 0 - dbg::trace( - L"cameraPreviewExpectedBitmapPixelFormat=0x%08x, bitmap->BitmapPixelFormat=0x%08x", - cameraPreviewExpectedBitmapPixelFormat, bitmap->BitmapPixelFormat); + dbg::trace( + L"cameraPreviewExpectedBitmapPixelFormat=0x%08x, bitmap->BitmapPixelFormat=0x%08x", + cameraPreviewExpectedBitmapPixelFormat, bitmap->BitmapPixelFormat); #endif - REQUIRES(cameraPreviewExpectedBitmapPixelFormat == bitmap->BitmapPixelFormat); + REQUIRES(cameraPreviewExpectedBitmapPixelFormat == bitmap->BitmapPixelFormat); - Windows::Graphics::Imaging::BitmapBuffer^ bitmapBuffer = - bitmap->LockBuffer( - Windows::Graphics::Imaging::BitmapBufferAccessMode::Read); + Windows::Graphics::Imaging::BitmapBuffer^ bitmapBuffer = + bitmap->LockBuffer( + Windows::Graphics::Imaging::BitmapBufferAccessMode::Read); - uint32_t pixelBufferDataLength = 0; + uint32_t pixelBufferDataLength = 0; - uint8_t* pixelBufferData = - Io::GetTypedPointerToMemoryBuffer( - bitmapBuffer->CreateReference(), - pixelBufferDataLength); + uint8_t* pixelBufferData = + Io::GetTypedPointerToMemoryBuffer( + bitmapBuffer->CreateReference(), + pixelBufferDataLength); - const int32_t bytesToCopy = - _cameraPreviewTexture->GetWidth() * _cameraPreviewTexture->GetHeight() * cameraPreviewPixelStride; + const int32_t bytesToCopy = + _cameraPreviewTexture->GetWidth() * _cameraPreviewTexture->GetHeight() * cameraPreviewPixelStride; - ASSERT(static_cast(bytesToCopy) == pixelBufferDataLength); + ASSERT(static_cast(bytesToCopy) == pixelBufferDataLength); - ASSERT(0 == memcpy_s( - mappedTexture, - bytesToCopy, - pixelBufferData, - pixelBufferDataLength)); + ASSERT(0 == memcpy_s( + mappedTexture, + bytesToCopy, + pixelBufferData, + pixelBufferDataLength)); - _cameraPreviewTexture->UnmapCPUTexture(); - } + _cameraPreviewTexture->UnmapCPUTexture(); + } + + _cameraPreviewTexture->CopyCPU2GPU(); - _cameraPreviewTexture->CopyCPU2GPU(); - } + + } - void AppMain::OnPreRender() - { - } + void AppMain::OnPreRender() + { + } - // Renders the current frame to each holographic camera, according to the - // current application and spatial positioning state. - void AppMain::OnRender() - { - // Draw the sample hologram. - _slateRenderer->Render( - _cameraPreviewTexture); - } + // Renders the current frame to each holographic camera, according to the + // current application and spatial positioning state. + void AppMain::OnRender() + { + // Draw the sample hologram. + //_slateRenderer->Render( + //_cameraPreviewTexture); + } - // Notifies classes that use Direct3D device resources that the device resources - // need to be released before this method returns. - void AppMain::OnDeviceLost() - { - _slateRenderer->ReleaseDeviceDependentResources(); + // Notifies classes that use Direct3D device resources that the device resources + // need to be released before this method returns. + void AppMain::OnDeviceLost() + { + //_slateRenderer->ReleaseDeviceDependentResources(); - _holoLensMediaFrameSourceGroup = nullptr; - _holoLensMediaFrameSourceGroupStarted = false; + //_holoLensMediaFrameSourceGroup = nullptr; + //_holoLensMediaFrameSourceGroupStarted = false; - _cameraPreviewTexture.reset(); - } + //_cameraPreviewTexture.reset(); + } - // Notifies classes that use Direct3D device resources that the device resources - // may now be recreated. - void AppMain::OnDeviceRestored() - { - _slateRenderer->CreateDeviceDependentResources(); + // Notifies classes that use Direct3D device resources that the device resources + // may now be recreated. + void AppMain::OnDeviceRestored() + { + //_slateRenderer->CreateDeviceDependentResources(); - StartHoloLensMediaFrameSourceGroup(); - } + //StartHoloLensMediaFrameSourceGroup(); + + //InitializeBackgroundStreamer(); + } // Called when the application is suspending. void AppMain::SaveAppState() { - if (_holoLensMediaFrameSourceGroup == nullptr) + /*if (_holoLensMediaFrameSourceGroup == nullptr) return; concurrency::create_task(_holoLensMediaFrameSourceGroup->StopAsync()).then( @@ -246,63 +340,64 @@ namespace StreamerVLC delete _sensorFrameStreamer; _sensorFrameStreamer = nullptr; + delete _multiFrameBuffer; + _multiFrameBuffer = nullptr; + + }).wait(); + */ + //InitializeBackgroundStreamer(); + } // Called when the application is resuming. void AppMain::LoadAppState() { - StartHoloLensMediaFrameSourceGroup(); + + //InitializeBackgroundStreamer(); + //StartHoloLensMediaFrameSourceGroup(); + + } + + void AppMain::StartHoloLensMediaFrameSourceGroup() + { + std::vector enabledSensorTypes; + + // + // Enabling all of the Research Mode sensors at the same time can be quite expensive + // performance-wise. It's best to scope down the list of enabled sensors to just those + // that are required for a given task. In this example, we will select the visible + // light cameras. + // + + enabledSensorTypes.emplace_back( + HoloLensForCV::SensorType::VisibleLightLeftFront); + + enabledSensorTypes.emplace_back( + HoloLensForCV::SensorType::VisibleLightRightFront); + + _multiFrameBuffer = + ref new HoloLensForCV::MultiFrameBuffer(); + + + _holoLensMediaFrameSourceGroup = + ref new HoloLensForCV::MediaFrameSourceGroup( + _selectedHoloLensMediaFrameSourceGroupType, + _spatialPerception, + _multiFrameBuffer); + + for (const auto enabledSensorType : enabledSensorTypes) + { + _holoLensMediaFrameSourceGroup->Enable( + enabledSensorType); + } + + concurrency::create_task(_holoLensMediaFrameSourceGroup->StartAsync()).then( + [&]() + { + _holoLensMediaFrameSourceGroupStarted = true; + }); } - void AppMain::StartHoloLensMediaFrameSourceGroup() - { - std::vector enabledSensorTypes; - - // - // Enabling all of the Research Mode sensors at the same time can be quite expensive - // performance-wise. It's best to scope down the list of enabled sensors to just those - // that are required for a given task. In this example, we will select the visible - // light cameras. - // - enabledSensorTypes.emplace_back( - HoloLensForCV::SensorType::VisibleLightLeftLeft); - - enabledSensorTypes.emplace_back( - HoloLensForCV::SensorType::VisibleLightLeftFront); - - enabledSensorTypes.emplace_back( - HoloLensForCV::SensorType::VisibleLightRightFront); - - enabledSensorTypes.emplace_back( - HoloLensForCV::SensorType::VisibleLightRightRight); - - _sensorFrameStreamer = - ref new HoloLensForCV::SensorFrameStreamer(); - - for (const auto enabledSensorType : enabledSensorTypes) - { - _sensorFrameStreamer->Enable( - enabledSensorType); - } - - _holoLensMediaFrameSourceGroup = - ref new HoloLensForCV::MediaFrameSourceGroup( - _selectedHoloLensMediaFrameSourceGroupType, - _spatialPerception, - _sensorFrameStreamer); - - for (const auto enabledSensorType : enabledSensorTypes) - { - _holoLensMediaFrameSourceGroup->Enable( - enabledSensorType); - } - - concurrency::create_task(_holoLensMediaFrameSourceGroup->StartAsync()).then( - [&]() - { - _holoLensMediaFrameSourceGroupStarted = true; - }); - } } diff --git a/Tools/StreamerVLC/AppMain.h b/Tools/StreamerVLC/AppMain.h old mode 100644 new mode 100755 index d37ee07..acf4450 --- a/Tools/StreamerVLC/AppMain.h +++ b/Tools/StreamerVLC/AppMain.h @@ -10,55 +10,87 @@ //********************************************************* #pragma once +#include + +//using namespace Platform; +using namespace Windows::ApplicationModel::Background; +using namespace Windows::Storage; + namespace StreamerVLC { - class AppMain : public Holographic::AppMainBase - { - public: - AppMain( - const std::shared_ptr& deviceResources); - // IDeviceNotify - virtual void OnDeviceLost() override; + class AppMain : public Holographic::AppMainBase + { + public: + AppMain( + const std::shared_ptr& deviceResources); - virtual void OnDeviceRestored() override; + // IDeviceNotify + virtual void OnDeviceLost() override; - // IAppMain - virtual void OnHolographicSpaceChanged( - _In_ Windows::Graphics::Holographic::HolographicSpace^ holographicSpace) override; + virtual void OnDeviceRestored() override; - virtual void OnSpatialInput( - _In_ Windows::UI::Input::Spatial::SpatialInteractionSourceState^ pointerState) override; + // IAppMain + virtual void OnHolographicSpaceChanged( + _In_ Windows::Graphics::Holographic::HolographicSpace^ holographicSpace) override; - virtual void OnUpdate( - _In_ Windows::Graphics::Holographic::HolographicFrame^ holographicFrame, - _In_ const Graphics::StepTimer& stepTimer) override; + virtual void OnSpatialInput( + _In_ Windows::UI::Input::Spatial::SpatialInteractionSourceState^ pointerState) override; - virtual void OnPreRender() override; + virtual void OnUpdate( + _In_ Windows::Graphics::Holographic::HolographicFrame^ holographicFrame, + _In_ const Graphics::StepTimer& stepTimer) override; - virtual void OnRender() override; + virtual void OnPreRender() override; + + virtual void OnRender() override; virtual void LoadAppState() override; virtual void SaveAppState() override; - private: - // Initializes access to HoloLens sensors. - void StartHoloLensMediaFrameSourceGroup(); + Windows::ApplicationModel::Background::ApplicationTrigger^ _appTrigger; + /* + static void UpdateBackgroundTaskRegistrationStatus(String^ name, bool registered); + static String^ ApplicationTriggerTaskProgress; + static bool ApplicationTriggerTaskRegistered; + static String^ ApplicationTriggerTaskResult; + + void AttachProgressAndCompletedHandlers(IBackgroundTaskRegistration^ task); + */ + private: + + // Initializes access to HoloLens sensors. + //void StartHoloLensMediaFrameSourceGroup(); + + + // Selected HoloLens media frame source group + void StartHoloLensMediaFrameSourceGroup(); + HoloLensForCV::MediaFrameSourceGroupType _selectedHoloLensMediaFrameSourceGroupType; + HoloLensForCV::MediaFrameSourceGroup^ _holoLensMediaFrameSourceGroup; + bool _holoLensMediaFrameSourceGroupStarted; + + // HoloLens media frame server manager + HoloLensForCV::SensorFrameStreamer^ _sensorFrameStreamer; + HoloLensForCV::MultiFrameBuffer^ _multiFrameBuffer; - private: - // Selected HoloLens media frame source group - HoloLensForCV::MediaFrameSourceGroupType _selectedHoloLensMediaFrameSourceGroupType; - HoloLensForCV::MediaFrameSourceGroup^ _holoLensMediaFrameSourceGroup; - bool _holoLensMediaFrameSourceGroupStarted; + // Camera preview + std::unique_ptr _slateRenderer; + Rendering::Texture2DPtr _cameraPreviewTexture; + Windows::Foundation::DateTime _cameraPreviewTimestamp; - // HoloLens media frame server manager - HoloLensForCV::SensorFrameStreamer^ _sensorFrameStreamer; + boolean taskRegistered; - // Camera preview - std::unique_ptr _slateRenderer; - Rendering::Texture2DPtr _cameraPreviewTexture; - Windows::Foundation::DateTime _cameraPreviewTimestamp; - }; + void InitializeBackgroundStreamer(); + + //BackgroundTaskRegistration^ RegisterBackgroundTask(String^ taskEntryPoint, String^ name, IBackgroundTrigger^ trigger, IBackgroundCondition^ condition, BackgroundTaskRegistrationGroup^ group); + //void AttachProgressAndCompletedHandlers(Windows::ApplicationModel::Background::IBackgroundTaskRegistration^ task); + //void RegisterBackgroundTask(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + //void UnregisterBackgroundTask(Platform::Object^ sender, Windows::UI::Xaml::RoutedEventArgs^ e); + //void OnProgress(Windows::ApplicationModel::Background::BackgroundTaskRegistration^ task, Windows::ApplicationModel::Background::BackgroundTaskProgressEventArgs^ args); + //void OnCompleted(Windows::ApplicationModel::Background::BackgroundTaskRegistration^ task, Windows::ApplicationModel::Background::BackgroundTaskCompletedEventArgs^ args); + //void UpdateUI(); + + }; } diff --git a/Tools/StreamerVLC/AppView.cpp b/Tools/StreamerVLC/AppView.cpp old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/AppView.h b/Tools/StreamerVLC/AppView.h old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/LockScreenLogo.scale-200.png b/Tools/StreamerVLC/Assets/LockScreenLogo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/SplashScreen.scale-200.png b/Tools/StreamerVLC/Assets/SplashScreen.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/Square150x150Logo.scale-200.png b/Tools/StreamerVLC/Assets/Square150x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/Square44x44Logo.scale-200.png b/Tools/StreamerVLC/Assets/Square44x44Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/Square44x44Logo.targetsize-24_altform-unplated.png b/Tools/StreamerVLC/Assets/Square44x44Logo.targetsize-24_altform-unplated.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/StoreLogo.png b/Tools/StreamerVLC/Assets/StoreLogo.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Assets/Wide310x150Logo.scale-200.png b/Tools/StreamerVLC/Assets/Wide310x150Logo.scale-200.png old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/Package.appxmanifest b/Tools/StreamerVLC/Package.appxmanifest old mode 100644 new mode 100755 index 23abe9d..6042b35 --- a/Tools/StreamerVLC/Package.appxmanifest +++ b/Tools/StreamerVLC/Package.appxmanifest @@ -1,10 +1,9 @@  - + @@ -25,12 +24,24 @@ + + + + + + + + + + + - + + - + \ No newline at end of file diff --git a/Tools/StreamerVLC/README.md b/Tools/StreamerVLC/README.md old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/StreamerVLC.vcxproj b/Tools/StreamerVLC/StreamerVLC.vcxproj old mode 100644 new mode 100755 index 045c35e..6db5417 --- a/Tools/StreamerVLC/StreamerVLC.vcxproj +++ b/Tools/StreamerVLC/StreamerVLC.vcxproj @@ -82,7 +82,7 @@ d2d1.lib; d3d11.lib; dxgi.lib; dwrite.lib; windowscodecs.lib; %(AdditionalDependencies); - %(AdditionalLibraryDirectories); $(VCInstallDir)\lib\store; $(VCInstallDir)\lib + %(AdditionalLibraryDirectories);$(VCInstallDir)\lib\store;$(VCInstallDir)\lib mincore.lib;kernel32.lib;ole32.lib;%(IgnoreSpecificDefaultLibraries) @@ -143,6 +143,9 @@ {421bb462-74f2-4831-9ab7-06b77e0a98b4} + + {b4dd17ec-eef8-41fc-8bdc-3c8652db68e1} + diff --git a/Tools/StreamerVLC/StreamerVLC.vcxproj.filters b/Tools/StreamerVLC/StreamerVLC.vcxproj.filters old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/packages.config b/Tools/StreamerVLC/packages.config old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/pch.cpp b/Tools/StreamerVLC/pch.cpp old mode 100644 new mode 100755 diff --git a/Tools/StreamerVLC/pch.h b/Tools/StreamerVLC/pch.h old mode 100644 new mode 100755 diff --git a/Tools/Tasks/BackgroundTask.cpp b/Tools/Tasks/BackgroundTask.cpp new file mode 100755 index 0000000..8ac167a --- /dev/null +++ b/Tools/Tasks/BackgroundTask.cpp @@ -0,0 +1,1261 @@ +#include "pch.h" +#include "BackgroundTask.h" + +#include +#include +#include + +using namespace Tasks; +using namespace dbg; +using namespace concurrency; +using namespace Platform; +using namespace Windows::Foundation; +using namespace Windows::Foundation::Collections; +using namespace Windows::Networking::Sockets; +using namespace Windows::Security::Cryptography::Certificates; +using namespace Windows::Storage::Streams; +using namespace Windows::UI::Core; +using namespace Windows::UI::Xaml; +using namespace Windows::UI::Xaml::Controls; +using namespace Windows::UI::Xaml::Navigation; +using namespace Windows::Web; +using namespace Windows::Data::Json; +using namespace Windows::Security::Cryptography; +using namespace Windows::Globalization::DateTimeFormatting; + + +namespace Tasks { +static int count = 0; +static long long s_previousTimestamp = 0; +static int id; +static int pubCount; +static bool connected = false; + +static const std::string base64_chars = +"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +"abcdefghijklmnopqrstuvwxyz" +"0123456789+/"; + +static const Platform::String^ base64_charsp = +"ABCDEFGHIJKLMNOPQRSTUVWXYZ" +"abcdefghijklmnopqrstuvwxyz" +"0123456789+/"; + + +static inline bool is_base64(unsigned char c) { + return (isalnum(c) || (c == '+') || (c == '/')); +} + + +void BackgroundTask::Run(IBackgroundTaskInstance^ taskInstance) { + + + dbg::trace(L"Background Task::Run called"); + + id = 0; + pubCount = 0; + _selectedHoloLensMediaFrameSourceGroupType = HoloLensForCV::MediaFrameSourceGroupType::HoloLensResearchModeSensors; + _holoLensMediaFrameSourceGroupStarted = false; + keepRunning = true; + auto cost = BackgroundWorkCost::CurrentBackgroundWorkCost; + auto settings = ApplicationData::Current->LocalSettings; + settings->Values->Insert("BackgroundWorkCost", cost.ToString()); + pairingInProgress = false; + taskInstance->Canceled += ref new BackgroundTaskCanceledEventHandler(this, &BackgroundTask::OnCanceled); + + + TaskDeferral = taskInstance->GetDeferral(); + TaskInstance = taskInstance; + + Connect(); + + inProcess = false; + + while (keepRunning) { + + if (!_holoLensMediaFrameSourceGroupStarted) { + if (!inProcess) { + + StartHoloLensMediaFrameSourceGroup(); + + } + } + + else if (_holoLensMediaFrameSourceGroupStarted && !pairingInProgress) { + + concurrency::create_task(BackgroundTask::RunAsync()).then([&]() { + + pairingInProgress = false; + count++; + + }); + } + } + + //TO-DO, send an output indicating that the bg task is closing + + dbg::trace(L"Background Task Completed."); + + TaskDeferral->Complete(); + +} + + +void BackgroundTask::StartHoloLensMediaFrameSourceGroup() +{ + std::vector enabledSensorTypes; + inProcess = true; + // + // Enabling all of the Research Mode sensors at the same time can be quite expensive + // performance-wise. It's best to scope down the list of enabled sensors to just those + // that are required for a given task. + + //In this example, selected: the visible light front cameras. + + + enabledSensorTypes.emplace_back( + HoloLensForCV::SensorType::VisibleLightLeftFront); + + enabledSensorTypes.emplace_back( + HoloLensForCV::SensorType::VisibleLightRightFront); + + _multiFrameBuffer = + ref new HoloLensForCV::MultiFrameBuffer(); + + _spatialPerception = ref new HoloLensForCV::SpatialPerception(); + + _holoLensMediaFrameSourceGroup = + ref new HoloLensForCV::MediaFrameSourceGroup( + _selectedHoloLensMediaFrameSourceGroupType, + _spatialPerception, + _multiFrameBuffer); + + for (const auto enabledSensorType : enabledSensorTypes) + { + _holoLensMediaFrameSourceGroup->Enable( + enabledSensorType); + } + dbg::trace(L"calling startasync for mediaframesourcegroup"); + concurrency::create_task(_holoLensMediaFrameSourceGroup->StartAsync()).then( + [&]() + { + dbg::trace(L"media frame source group started."); + inProcess = false; + _holoLensMediaFrameSourceGroupStarted = true; + + + leftCameraIntrinsics = _holoLensMediaFrameSourceGroup->GetCameraIntrinsics(HoloLensForCV::SensorType::VisibleLightLeftFront); + rightCameraIntrinsics = _holoLensMediaFrameSourceGroup->GetCameraIntrinsics(HoloLensForCV::SensorType::VisibleLightRightFront); + + if (leftCameraIntrinsics == nullptr) { + + dbg::trace(L"Camera Intrinsics nullptr."); //Not calibrated + } + }); +} + +Windows::Foundation::IAsyncAction^ BackgroundTask::RunAsync() { + + return concurrency::create_async( + [this]() + { + + return StreamAsync(); + }); + +} + + +concurrency::task BackgroundTask::StreamAsync() { + + //dbg::trace(L"Background Task::StreamAsync called"); + + Concurrency::task streamTask = + Concurrency::task_from_result(); + + pairingInProgress = true; + const float c_timestampTolerance = 0.001f; + + auto commonTime = _multiFrameBuffer->GetTimestampForSensorPair( + HoloLensForCV::SensorType::VisibleLightLeftFront, + HoloLensForCV::SensorType::VisibleLightRightFront, + c_timestampTolerance); + + if (_multiFrameBuffer->GetFrameForTime(HoloLensForCV::SensorType::VisibleLightLeftFront, + commonTime, + c_timestampTolerance) == nullptr || _multiFrameBuffer->GetFrameForTime(HoloLensForCV::SensorType::VisibleLightRightFront, + commonTime, + c_timestampTolerance) == nullptr ) { + dbg::trace(L"a frame nullptr!"); + return streamTask; + } + else { + HoloLensForCV::SensorFrame^ leftFrame; + HoloLensForCV::SensorFrame^ rightFrame; + try { + leftFrame = _multiFrameBuffer->GetFrameForTime( + HoloLensForCV::SensorType::VisibleLightLeftFront, + commonTime, + c_timestampTolerance); + + rightFrame = _multiFrameBuffer->GetFrameForTime( + HoloLensForCV::SensorType::VisibleLightRightFront, + commonTime, + c_timestampTolerance); + + if (leftFrame == nullptr || rightFrame == nullptr) { + return streamTask; + } + /*} catch (Exception^ f) { + + dbg::trace(L"StreamAsync: Exception!"); + delete leftFrame; + delete rightFrame; + + return streamTask; + + }*/ + + auto timeDiff100ns = leftFrame->Timestamp.UniversalTime - rightFrame->Timestamp.UniversalTime; + + if (std::abs(timeDiff100ns * 1e-7f) > 2e-3f) + { + dbg::trace(L"StreamAsync: times are different by %f seconds", std::abs(timeDiff100ns * 1e-7f)); + + } + + + if (commonTime.UniversalTime == s_previousTimestamp) + { + //dbg::trace(L"StreamAsync: timestamp did not change"); + return streamTask; + } + + s_previousTimestamp = commonTime.UniversalTime; + //code to retrieve Array^ needs to be cleaned + auto outPair = std::make_pair(leftFrame, rightFrame); + std::pair leftData = sensorFrameToImageBufferPair(outPair.first); + std::pair rightData = sensorFrameToImageBufferPair(outPair.second); + Platform::Array^ imageBufferAsPlatformArrayLeft; + Platform::Array^ imageBufferAsPlatformArrayRight; + + imageBufferAsPlatformArrayLeft = + ref new Platform::Array( + leftData.first, + leftData.second); + imageBufferAsPlatformArrayRight = + ref new Platform::Array( + rightData.first, + rightData.second); + + + dbg::trace( + L"BackgroundTask::StreamAsync: %i platform arrays created at %i, size %i", + count, + outPair.first->Timestamp, + imageBufferAsPlatformArrayLeft->Value->Length); + + int i = 300000; + dbg::trace( + L"BackgroundTask::StreamAsync: data index %i value %i ", + i, + imageBufferAsPlatformArrayLeft->Value[i]); + + + Windows::Foundation::Numerics::float4x4 leftTransform = leftFrame->CameraViewTransform; + Windows::Foundation::Numerics::float4x4 rightTransform = rightFrame->CameraViewTransform; + dbg::trace(L"Left Camera View Transform %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + leftTransform.m11, leftTransform.m12, leftTransform.m13, leftTransform.m14, leftTransform.m21, leftTransform.m22, leftTransform.m23, leftTransform.m24, + leftTransform.m31, leftTransform.m32, leftTransform.m33, leftTransform.m34, leftTransform.m41, leftTransform.m42, leftTransform.m43, leftTransform.m44 + ); + dbg::trace(L"Right Camera View Transform %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + rightTransform.m11, rightTransform.m12, rightTransform.m13, rightTransform.m14, rightTransform.m21, rightTransform.m22, rightTransform.m23, rightTransform.m24, + rightTransform.m31, rightTransform.m32, rightTransform.m33, rightTransform.m34, rightTransform.m41, rightTransform.m42, rightTransform.m43, rightTransform.m44 + ); + + auto leftFrameToOrigin = leftFrame->FrameToOrigin; + auto rightFrameToOrigin = rightFrame->FrameToOrigin; + dbg::trace(L"Left Camera Frame To Origin %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + leftFrameToOrigin.m11, leftFrameToOrigin.m12, leftFrameToOrigin.m13, leftFrameToOrigin.m14, leftFrameToOrigin.m21, leftFrameToOrigin.m22, leftFrameToOrigin.m23, leftFrameToOrigin.m24, + leftFrameToOrigin.m31, leftFrameToOrigin.m32, leftFrameToOrigin.m33, leftFrameToOrigin.m34, leftFrameToOrigin.m41, leftFrameToOrigin.m42, leftFrameToOrigin.m43, leftFrameToOrigin.m44 + ); + + dbg::trace(L"Right Camera Frame To Origin %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + rightFrameToOrigin.m11, rightFrameToOrigin.m12, rightFrameToOrigin.m13, rightFrameToOrigin.m14, rightFrameToOrigin.m21, rightFrameToOrigin.m22, rightFrameToOrigin.m23, rightFrameToOrigin.m24, + rightFrameToOrigin.m31, rightFrameToOrigin.m32, rightFrameToOrigin.m33, rightFrameToOrigin.m34, rightFrameToOrigin.m41, rightFrameToOrigin.m42, rightFrameToOrigin.m43, rightFrameToOrigin.m44 + ); + + + auto leftPose = GetAbsoluteCameraPose(leftFrame); + auto rightPose = GetAbsoluteCameraPose(rightFrame); + + dbg::trace(L"Left Pose %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + leftPose.m11, leftPose.m12, leftPose.m13, leftPose.m14, leftPose.m21, leftPose.m22, leftPose.m23, leftPose.m24, + leftPose.m31, leftPose.m32, leftPose.m33, leftPose.m34, leftPose.m41, leftPose.m42, leftPose.m43, leftPose.m44 + ); + dbg::trace(L"Right Pose %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + rightPose.m11, rightPose.m12, rightPose.m13, rightPose.m14, rightPose.m21, rightPose.m22, rightPose.m23, rightPose.m24, + rightPose.m31, rightPose.m32, rightPose.m33, rightPose.m34, rightPose.m41, rightPose.m42, rightPose.m43, rightPose.m44 + ); + + auto leftCamToWorld = GetCamToWorld(leftPose); + auto rightCamToWorld = GetCamToWorld(rightPose); + Windows::Foundation::Numerics::invert(GetCamToWorld(leftPose), &leftCamToWorld); + + dbg::trace(L"Left CamToWorld %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + leftCamToWorld.m11, leftCamToWorld.m12, leftCamToWorld.m13, leftCamToWorld.m14, leftCamToWorld.m21, leftCamToWorld.m22, leftCamToWorld.m23, leftCamToWorld.m24, + leftCamToWorld.m31, leftCamToWorld.m32, leftCamToWorld.m33, leftCamToWorld.m34, leftCamToWorld.m41, leftCamToWorld.m42, leftCamToWorld.m43, leftCamToWorld.m44 + ); + dbg::trace(L"Right CamToWorld %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + rightCamToWorld.m11, rightCamToWorld.m12, rightCamToWorld.m13, rightCamToWorld.m14, rightCamToWorld.m21, rightCamToWorld.m22, rightCamToWorld.m23, rightCamToWorld.m24, + rightCamToWorld.m31, rightCamToWorld.m32, rightCamToWorld.m33, rightCamToWorld.m34, rightCamToWorld.m41, rightCamToWorld.m42, rightCamToWorld.m43, rightCamToWorld.m44 + ); + + /*auto leftCamToOrigin = GetCamToOrigin(leftFrame); + auto rightCamToOrigin = GetCamToOrigin(rightFrame); + + + + dbg::trace(L"Left CamToOrigin %s %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + leftCamToOrigin.m11, leftCamToOrigin.m12, leftCamToOrigin.m13, leftCamToOrigin.m14, leftCamToOrigin.m21, leftCamToOrigin.m22, leftCamToOrigin.m23, leftCamToOrigin.m24, + leftCamToOrigin.m31, leftCamToOrigin.m32, leftCamToOrigin.m33, leftCamToOrigin.m34, leftCamToOrigin.m41, leftCamToOrigin.m42, leftCamToOrigin.m43, leftCamToOrigin.m44 + ); + dbg::trace(L"Right CamToOrigin %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + rightCamToOrigin.m11, rightCamToOrigin.m12, rightCamToOrigin.m13, rightCamToOrigin.m14, rightCamToOrigin.m21, rightCamToOrigin.m22, rightCamToOrigin.m23, rightCamToOrigin.m24, + rightCamToOrigin.m31, rightCamToOrigin.m32, rightCamToOrigin.m33, rightCamToOrigin.m34, rightCamToOrigin.m41, rightCamToOrigin.m42, rightCamToOrigin.m43, rightCamToOrigin.m44 + ); + */ + if (connected) { + + Publish("/hololens", commonTime, leftFrame, imageBufferAsPlatformArrayLeft, rightFrame, imageBufferAsPlatformArrayRight); + PublishHello("/listener", "Hello from the HoloLens."); + pubCount++; + + } + } + catch (Exception^ e) { + + dbg::trace(L"StreamAsync: Exception."); + return streamTask; + } + + //NULL VALUES RECEIVED. Cameras need to be calibrated, and then calibration values, ie, core camera intrinsics, sent back to the HoloLens (How?) + //This includes: Camera Matrix K with parameters fx, fy, cx, cy. 2 degrees of radial distortion and a tangential distortion. + + + /*auto leftRadialDistortion = leftFrame->CoreCameraIntrinsics->RadialDistortion; + auto leftTangentialDistortian = leftFrame->CoreCameraIntrinsics->TangentialDistortion; + + dbg::trace(L"radial distortian: %i %i %i tangential distortian: %i %i, focal length: %i %i, principal point: %i %i, image height: %i, width: %i", + leftRadialDistortion.x, leftRadialDistortion.y, leftRadialDistortion.z, + leftTangentialDistortian.x, leftTangentialDistortian.y, + leftFrame->CoreCameraIntrinsics->FocalLength.x, leftFrame->CoreCameraIntrinsics->FocalLength.y, + leftFrame->CoreCameraIntrinsics->PrincipalPoint.x, leftFrame->CoreCameraIntrinsics->PrincipalPoint.y, + leftFrame->CoreCameraIntrinsics->ImageHeight, leftFrame->CoreCameraIntrinsics->ImageWidth); + */ + + /* + auto leftUndistProjTransform = leftFrame->CoreCameraIntrinsics->UndistortedProjectionTransform; + dbg::trace(L"Left Camera Undistorted Projection Transform %i %i %i %i, %i %i %i %i, %i %i %i %i, %i %i %i %i ", + leftUndistProjTransform.m11, leftUndistProjTransform.m12, leftUndistProjTransform.m13, leftUndistProjTransform.m14, leftUndistProjTransform.m21, leftUndistProjTransform.m22, leftUndistProjTransform.m23, leftUndistProjTransform.m24, + leftUndistProjTransform.m31, leftUndistProjTransform.m32, leftUndistProjTransform.m33, leftUndistProjTransform.m34, leftUndistProjTransform.m41, leftUndistProjTransform.m42, leftUndistProjTransform.m43, leftUndistProjTransform.m44 + ); + + + + //DEBUGGING LOOP FOR ARRAY + auto printer = false; + int i = 307200 - 5; + int j = i + 5; + while (!printer) { + + dbg::trace( + L"BackgroundTask::StreamAsync: data index %i value %i ", + i, + imageBufferAsPlatformArrayLeft->Value[i]); + i = i + 1; + if (i >= j) { + printer = true; + } + } + //END DEBUGGING LOOP FOR ARRAY + + /* + Platform::Array^ imageBufferLeft = sensorFrameToImageBuffer(leftFrame); + //int x = imageBufferLeft->Length - 150; + + if (leftFrame != nullptr && rightFrame != nullptr) { + dbg::trace(L" %i timestamp, array of length %i, value %i at index %i ", + count, + leftFrame->Timestamp.UniversalTime, + imageBufferLeft->Length, + imageBufferLeft->Value[imageBufferLeft->Length - 50], + imageBufferLeft->Length - 50 ); + } + else { + dbg::trace(L"Waiting for frames to not be null"); + } + */ + return streamTask; + + + } +} + +Windows::Foundation::Numerics::float4x4 BackgroundTask::GetAbsoluteCameraPose(HoloLensForCV::SensorFrame^ frame) { + + Windows::Foundation::Numerics::float4x4 interm; + + memset( &interm , 0, sizeof(interm)); + + interm.m11 = 1; interm.m22 = 1; interm.m33 = 1; interm.m44 = 1; + Windows::Foundation::Numerics::float4x4 InvFrameToOrigin; + Windows::Foundation::Numerics::invert(frame->FrameToOrigin, &InvFrameToOrigin); + + auto pose = interm * frame->CameraViewTransform*InvFrameToOrigin; + return pose; + +} + +Windows::Foundation::Numerics::float4x4 BackgroundTask::GetCamToWorld(Windows::Foundation::Numerics::float4x4 pose) { + + Windows::Foundation::Numerics::float4x4 output; + Windows::Foundation::Numerics::invert(pose, &output); + return output; +} + +Windows::Foundation::Numerics::float4x4 BackgroundTask::GetCamToOrigin(HoloLensForCV::SensorFrame^ frame) { + + Windows::Foundation::Numerics::float4x4 camToRef; + Windows::Foundation::Numerics::float4x4 camToOrigin; + if (!Windows::Foundation::Numerics::invert(frame->CameraViewTransform, &camToRef)) { + + dbg::trace(L"Could not invert!"); + memset(&camToOrigin, 0, sizeof(camToOrigin)); + + } + else { + + camToOrigin = camToRef * frame->FrameToOrigin; + //CAMERA EXTRINSICS + Eigen::Vector3f camPinhole(camToOrigin.m41, camToOrigin.m42, camToOrigin.m43); + Eigen::Matrix3f camToOriginR; + + camToOriginR(0, 0) = camToOrigin.m11; + camToOriginR(0, 1) = camToOrigin.m12; + camToOriginR(0, 2) = camToOrigin.m13; + camToOriginR(1, 0) = camToOrigin.m21; + camToOriginR(1, 1) = camToOrigin.m22; + camToOriginR(1, 2) = camToOrigin.m23; + camToOriginR(2, 0) = camToOrigin.m31; + camToOriginR(2, 1) = camToOrigin.m32; + camToOriginR(2, 2) = camToOrigin.m33; + //4x4 camToOrigin transform not affine. Projection warping(?, I'm not solid on the math behind this one) parameters observed in fourth row. + + } + return camToOrigin; + +} + + +std::pair BackgroundTask::sensorFrameToImageBufferPair(HoloLensForCV::SensorFrame^ sensorFrame) { + + Windows::Graphics::Imaging::SoftwareBitmap^ bitmap; + Windows::Graphics::Imaging::BitmapBuffer^ bitmapBuffer; + Windows::Foundation::IMemoryBufferReference^ bitmapBufferReference; + + int32_t imageWidth = 0; + int32_t imageHeight = 0; + int32_t pixelStride = 1; + int32_t rowStride = 0; + + Platform::Array^ imageBufferAsPlatformArray; + int32_t imageBufferSize = 0; + + { +#if DBG_ENABLE_INFORMATIONAL_LOGGING + dbg::TimerGuard timerGuard( + L"AppMain::sensorFrameToImageBuffer: buffer preparation", + 4.0 /* minimum_time_elapsed_in_milliseconds */); +#endif /* DBG_ENABLE_INFORMATIONAL_LOGGING */ + + bitmap = + sensorFrame->SoftwareBitmap; + + imageWidth = bitmap->PixelWidth; + imageHeight = bitmap->PixelHeight; + + bitmapBuffer = + bitmap->LockBuffer( + Windows::Graphics::Imaging::BitmapBufferAccessMode::Read); + + bitmapBufferReference = + bitmapBuffer->CreateReference(); + + uint32_t bitmapBufferDataSize = 0; + + uint8_t* bitmapBufferData = + Io::GetTypedPointerToMemoryBuffer( + bitmapBufferReference, + bitmapBufferDataSize); + + switch (bitmap->BitmapPixelFormat) + { + case Windows::Graphics::Imaging::BitmapPixelFormat::Bgra8: + pixelStride = 4; + break; + + case Windows::Graphics::Imaging::BitmapPixelFormat::Gray16: + pixelStride = 2; + break; + + case Windows::Graphics::Imaging::BitmapPixelFormat::Gray8: + pixelStride = 1; + break; + + default: +#if DBG_ENABLE_INFORMATIONAL_LOGGING + dbg::trace( + L"AppMain::sensorFrameToImageBuffer: unrecognized bitmap pixel format, assuming 1 byte per pixel"); +#endif /* DBG_ENABLE_INFORMATIONAL_LOGGING */ + + break; + } + + rowStride = + imageWidth * pixelStride; + + imageBufferSize = + imageHeight * rowStride; + + ASSERT( + imageBufferSize == (int32_t)bitmapBufferDataSize); + + + std::pair outPair = std::make_pair(bitmapBufferData, imageBufferSize); + + /*imageBufferAsPlatformArray = + ref new Platform::Array( + bitmapBufferData, + imageBufferSize);*/ + return outPair; + } +} + +//This does not work; I don't know why. Probably some pointers related thing I'm not able to comprehend +//Hence a slightly messier route used, which involved std::pair objects. + +Platform::Array^ BackgroundTask::sensorFrameToImageBuffer(HoloLensForCV::SensorFrame^ sensorFrame) { + + Windows::Graphics::Imaging::SoftwareBitmap^ bitmap; + Windows::Graphics::Imaging::BitmapBuffer^ bitmapBuffer; + Windows::Foundation::IMemoryBufferReference^ bitmapBufferReference; + + int32_t imageWidth = 0; + int32_t imageHeight = 0; + int32_t pixelStride = 1; + int32_t rowStride = 0; + + Platform::Array^ imageBufferAsPlatformArray; + int32_t imageBufferSize = 0; + + { +#if DBG_ENABLE_INFORMATIONAL_LOGGING + dbg::TimerGuard timerGuard( + L"AppMain::sensorFrameToImageBuffer: buffer preparation", + 4.0 /* minimum_time_elapsed_in_milliseconds */); +#endif /* DBG_ENABLE_INFORMATIONAL_LOGGING */ + + bitmap = + sensorFrame->SoftwareBitmap; + + imageWidth = bitmap->PixelWidth; + imageHeight = bitmap->PixelHeight; + + bitmapBuffer = + bitmap->LockBuffer( + Windows::Graphics::Imaging::BitmapBufferAccessMode::Read); + + bitmapBufferReference = + bitmapBuffer->CreateReference(); + + uint32_t bitmapBufferDataSize = 0; + + uint8_t* bitmapBufferData = + Io::GetTypedPointerToMemoryBuffer( + bitmapBufferReference, + bitmapBufferDataSize); + + switch (bitmap->BitmapPixelFormat) + { + case Windows::Graphics::Imaging::BitmapPixelFormat::Bgra8: + pixelStride = 4; + break; + + case Windows::Graphics::Imaging::BitmapPixelFormat::Gray16: + pixelStride = 2; + break; + + case Windows::Graphics::Imaging::BitmapPixelFormat::Gray8: + pixelStride = 1; + break; + + default: +#if DBG_ENABLE_INFORMATIONAL_LOGGING + dbg::trace( + L"AppMain::sensorFrameToImageBuffer: unrecognized bitmap pixel format, assuming 1 byte per pixel"); +#endif /* DBG_ENABLE_INFORMATIONAL_LOGGING */ + + break; + } + + rowStride = + imageWidth * pixelStride; + + imageBufferSize = + imageHeight * rowStride; + + ASSERT( + imageBufferSize == (int32_t)bitmapBufferDataSize); + + imageBufferAsPlatformArray = + ref new Platform::Array( + bitmapBufferData, + imageBufferSize); + + return imageBufferAsPlatformArray; + } +} + +void BackgroundTask::OnCanceled(IBackgroundTaskInstance^ taskInstance, BackgroundTaskCancellationReason reason) { + CancelRequested = true; + CancelReason = reason; +} + + void BackgroundTask::SetBusy(bool value) { + busy = value; + } + + void BackgroundTask::Connect() { + SetBusy(true); + ConnectAsync().then([this]() { + + SetBusy(false); + connected = true; + + Advertise("/listener", "std_msgs/String"); + Advertise("/hololens", "project/HoloLensStereo"); + PublishHello("/listener", "Hello from the HoloLens."); + + }); + } + + + task BackgroundTask::ConnectAsync() { + Uri^ server = ref new Uri( + "ws://141.3.81.144:9090/" + ); + if (!server) + { + dbg::trace(L"Uri false"); + return task_from_result(); + } + + messageWebSocket = ref new MessageWebSocket(); + messageWebSocket->Control->MessageType = SocketMessageType::Utf8; + + /* won't be receiving messages. refer to the Websockets section in Windows universal samples for UWP apps. Very comprehensive. + //Could be useful for modelling communication with CV analyser as ROS services instead of ROS messages. This should be possible. + + messageWebSocket->MessageReceived += + ref new TypedEventHandler< + MessageWebSocket^, + MessageWebSocketMessageReceivedEventArgs^>(this, &MessageReceived); + messageWebSocket->Closed += ref new TypedEventHandler(this, &OnClosed); + */ + + return create_task(messageWebSocket->ConnectAsync(server)) + .then([this](task previousTask) + { + try + { + // Reraise any exception that occurred in the task. + previousTask.get(); + dbg::trace(L"web socket connected."); + } + catch (Exception^ ex) + { + // Error happened during connect operation. + delete messageWebSocket; + messageWebSocket = nullptr; + dbg::trace(L"ConnectAsync: Error during connection operation."); + return; + } + + // /* REMOVE + // The default DataWriter encoding is Utf8. + dbg::trace(L"ConnectAsync: Connected."); + messageWriter = ref new DataWriter(messageWebSocket->OutputStream); + dbg::trace(L"ConnectAsync: DataWriter initialized."); + }); + + + } + + + void BackgroundTask::Send(Platform::String^ message) { + SetBusy(true); + + SendAsync(message).then([this]() { + SetBusy(false); + }); + + } + + task BackgroundTask::SendAsync(Platform::String^ message) { + + auto a = messageWriter->WriteString(message); + dbg::trace(L"SendAsync: %i string length, in bytes. ", a); + return concurrency::create_task(messageWriter->StoreAsync()).then( + [this](task previousTask) { + previousTask.get(); + + dbg::trace(L"Send Complete"); + }); + } + + void BackgroundTask::Send(Platform::Array^ message) { + + SetBusy(true); + SendAsync(message).then([this]() { + SetBusy(false); + }); + + } + + task BackgroundTask::SendAsync(Platform::Array^ message) { + + messageWriter->WriteBytes(message->Value); + //dbg::trace(L"SendAsync: %i array length, in bytes. ", message); + return concurrency::create_task(messageWriter->StoreAsync()).then( + [this](task previousTask) { + previousTask.get(); + + dbg::trace(L"Send Complete"); + }); + + } + + void BackgroundTask::Send(DateTime timestamp) { + + SetBusy(true); + SendAsync(timestamp).then([this]() { + SetBusy(false); + }); + } + + task BackgroundTask::SendAsync(DateTime timestamp) { + messageWriter->WriteDateTime(timestamp); + + return concurrency::create_task(messageWriter->StoreAsync()).then( + [this](task previousTask) { + + previousTask.get(); + dbg::trace(L"Send Complete"); + + }); + + } + + + void BackgroundTask::Advertise(Platform::String^ topic, Platform::String^ messageType) { + + + JsonObject^ jsonObject = ref new JsonObject(); + jsonObject->Insert("op", JsonValue::CreateStringValue("advertise")); + jsonObject->Insert("topic", JsonValue::CreateStringValue(topic)); + jsonObject->Insert("type", JsonValue::CreateStringValue(messageType)); + + String^ output = jsonObject->Stringify(); + + dbg::trace(L"Advertise: %s", + output->Data() + ); + Send(output); + } + + void BackgroundTask::Publish(Platform::String^ topic, Windows::Foundation::DateTime commonTimestamp, HoloLensForCV::SensorFrame^ leftFrame, Platform::Array^ leftData, HoloLensForCV::SensorFrame^ rightFrame, Platform::Array^ rightData) { + + JsonObject^ jsonObject = ref new JsonObject(); + + + dbg::trace(L"bitmap pixel format %i", leftFrame->SoftwareBitmap->BitmapPixelFormat); + + //op and topic + jsonObject->Insert("op", JsonValue::CreateStringValue("publish")); + jsonObject->Insert("topic", JsonValue::CreateStringValue(topic)); + + JsonObject^ msg = ref new JsonObject(); + msg->Insert("greeting", JsonValue::CreateStringValue("Hello project.")); + msg->Insert("height" ,JsonValue::CreateNumberValue(leftFrame->SensorStreamingCameraIntrinsics->ImageHeight)); + msg->Insert("width", JsonValue::CreateNumberValue(leftFrame->SensorStreamingCameraIntrinsics->ImageWidth)); + + //Image buffer data as base64 encoded string. + Platform::String^ leftString = StringFromstd(base64_encode(leftData->Data, leftData->Length)); + + //CryptographicBuffer::EncodeToBase64String(CryptographicBuffer::CreateFromByteArray(leftData)); UWP JSON encrypting. Can be useful if data being received by another UWP app. + Platform::String^ rightString = StringFromstd(base64_encode(rightData->Data, rightData->Length)); + //CryptographicBuffer::EncodeToBase64String(CryptographicBuffer::CreateFromByteArray(rightData)); + + msg->Insert("left64", JsonValue::CreateStringValue(leftString)); + msg->Insert("right64", JsonValue::CreateStringValue(rightString)); + + auto leftCamToOrigin = GetCamToOrigin(leftFrame); + auto rightCamToOrigin = GetCamToOrigin(rightFrame); + + Eigen::Vector3f leftcamPinhole(leftCamToOrigin.m41, leftCamToOrigin.m42, leftCamToOrigin.m43); + Eigen::Vector3f rightcamPinhole(rightCamToOrigin.m41, rightCamToOrigin.m42, rightCamToOrigin.m43); + + Eigen::Matrix3f leftCamToOriginR; + Eigen::Matrix3f rightCamToOriginR; + + + leftCamToOriginR(0, 0) = leftCamToOrigin.m11; + leftCamToOriginR(0, 1) = leftCamToOrigin.m12; + leftCamToOriginR(0, 2) = leftCamToOrigin.m13; + leftCamToOriginR(1, 0) = leftCamToOrigin.m21; + leftCamToOriginR(1, 1) = leftCamToOrigin.m22; + leftCamToOriginR(1, 2) = leftCamToOrigin.m23; + leftCamToOriginR(2, 0) = leftCamToOrigin.m31; + leftCamToOriginR(2, 1) = leftCamToOrigin.m32; + leftCamToOriginR(2, 2) = leftCamToOrigin.m33; + rightCamToOriginR(0, 0) = rightCamToOrigin.m11; + rightCamToOriginR(0, 1) = rightCamToOrigin.m12; + rightCamToOriginR(0, 2) = rightCamToOrigin.m13; + rightCamToOriginR(1, 0) = rightCamToOrigin.m21; + rightCamToOriginR(1, 1) = rightCamToOrigin.m22; + rightCamToOriginR(1, 2) = rightCamToOrigin.m23; + rightCamToOriginR(2, 0) = rightCamToOrigin.m31; + rightCamToOriginR(2, 1) = rightCamToOrigin.m32; + rightCamToOriginR(2, 2) = rightCamToOrigin.m33; + + Eigen::Quaternionf leftRotQuat(leftCamToOriginR); + leftRotQuat.normalize(); + Eigen::Quaternionf rightRotQuat(rightCamToOriginR); + rightRotQuat.normalize(); + + + JsonObject^ leftTransform = ref new JsonObject(); + JsonObject^ leftTranslation = ref new JsonObject(); + leftTranslation->Insert("x", JsonValue::CreateNumberValue(leftcamPinhole(0) )); + leftTranslation->Insert("y", JsonValue::CreateNumberValue(leftcamPinhole(1))); + leftTranslation->Insert("z", JsonValue::CreateNumberValue(leftcamPinhole(2))); + leftTransform->Insert("translation", JsonValue::Parse( leftTranslation->Stringify() )); + JsonObject^ leftRotation = ref new JsonObject(); + leftRotation->Insert("x", JsonValue::CreateNumberValue(leftRotQuat.x())); + leftRotation->Insert("y", JsonValue::CreateNumberValue(leftRotQuat.y())); + leftRotation->Insert("z", JsonValue::CreateNumberValue(leftRotQuat.z())); + leftRotation->Insert("w", JsonValue::CreateNumberValue(leftRotQuat.w())); + leftTransform->Insert("rotation", JsonValue::Parse(leftRotation->Stringify())); + msg->Insert("leftCamToWorld", JsonValue::Parse(leftTransform->Stringify())); + + JsonObject^ rightTransform = ref new JsonObject(); + JsonObject^ rightTranslation = ref new JsonObject(); + rightTranslation->Insert("x", JsonValue::CreateNumberValue(rightcamPinhole(0))); + rightTranslation->Insert("y", JsonValue::CreateNumberValue(rightcamPinhole(1))); + rightTranslation->Insert("z", JsonValue::CreateNumberValue(rightcamPinhole(2))); + rightTransform->Insert("translation", JsonValue::Parse(rightTranslation->Stringify())); + JsonObject^ rightRotation = ref new JsonObject(); + rightRotation->Insert("x", JsonValue::CreateNumberValue(rightRotQuat.x())); + rightRotation->Insert("y", JsonValue::CreateNumberValue(rightRotQuat.y())); + rightRotation->Insert("z", JsonValue::CreateNumberValue(rightRotQuat.z())); + rightRotation->Insert("w", JsonValue::CreateNumberValue(rightRotQuat.w())); + rightTransform->Insert("rotation", JsonValue::Parse(rightRotation->Stringify())); + msg->Insert("rightCamToWorld", JsonValue::Parse(rightTransform->Stringify())); + + //Final Json publish + jsonObject->Insert("msg", JsonValue::Parse( msg->Stringify() )); + Send(jsonObject->Stringify()); + + } + + + void BackgroundTask::PublishHello(Platform::String^ topic, Platform::String^ message) { + + JsonObject^ jsonObject = ref new JsonObject(); + jsonObject->Insert("op", JsonValue::CreateStringValue("publish")); + jsonObject->Insert("topic", JsonValue::CreateStringValue(topic)); + + JsonObject^ dataX = ref new JsonObject(); + dataX->Insert("data", JsonValue::CreateStringValue(message)); + + + jsonObject->Insert("msg", JsonValue::Parse(dataX->Stringify())); + dbg::trace(L"Publish Test Pair # %i", pubCount); + + Send(jsonObject->Stringify()); + + } + + /* + void BackgroundTask::Publish(Platform::String^ topic, Platform::String^ message) { + //std::string call = "\"op\":\"publish\", \"topic\":\"" + topic + "\", \"msg\":" + message + "\""; + //call = "{" + call + "}"; + + JsonObject^ jsonObject = ref new JsonObject(); + jsonObject->Insert("op", JsonValue::CreateStringValue("publish")); + jsonObject->Insert("topic", JsonValue::CreateStringValue(topic)); + + Platform::String^ msg = "{data:'" + message + "'}"; + + bool dataAsString; + + dataAsString = false; + + Platform::String^ data; + + if (!dataAsString) { + + //JsonObject^ dataX = ref new JsonObject(); + //dataX->Insert("data", JsonValue::CreateStringValue(message)); + + dbg::trace(L"Publish: Data %s , %s", message->Data(), + msg->Data() + //data->Stringify()->Data() + ); + + jsonObject->Insert("msg", JsonValue::CreateStringValue( + msg + // dataX->Stringify() + )); + + //data = dataX->Stringify(); + data = msg; + + } + else if (dataAsString) { + + data = "{\"data\":\"" + message + "\"}"; + jsonObject->Insert("msg", JsonValue::CreateStringValue(data->ToString())); + + } + + auto output = jsonObject->Stringify(); // Connected. Publish: Expected a JSON object of type std_msgs/string but received a + // (with data as string) {"op":"publish","topic":"/listener","msg":"{\"data\":\"Hello from the HoloLens\"}"} || {"op":"publish","topic":"/listener","msg":"[\"data\":\"Hello from the HoloLens\"]"} + // (with data as jsonobject) {"op":"publish","topic":"/listener","msg":"{\"data\":\"Hello from the HoloLens\"}"} + + auto outputx = "{\r\n" + + "\'op\':\'publish\',\r\n" + + "\'topic\':\'/listener\',\r\n" + + "\'msg\':\'" + data + "\',\r\n" + + "}"; ////Connected. Nothing Echoed. Nothing Received. {} 'op' error || [] No Error Message. + auto outputy = "{\r\n" + + "\"op\":\"publish\",\r\n" + + "\"topic\": \"/listener\",\r\n" + + "\"msg\":\"" + data + "\",\r\n" + + "}";//Connected. Nothing Echoed. Nothing Received. {} 'op' error || [] No Error Message. Did not disconnect the client? + auto outputz = "{" + + "\"op\":\"publish\"," + + "\"topic\":\"/listener\"," + + "\"msg\":\"" + data + "\"" + + "}";//Connected. Nothing Echoed. Nothing Received. {} 'op' error || [] No Error Message. + auto outputzz = "{" + + "\'op\':\'publish\'," + + "\'topic\':\'/listener\'," + + "\'msg\':\'" + data + "\'" + + "}"; //Connected. Nothing Echoed. Nothing Received. No Error Message. + + auto outputzzz = "{op:'publish',topic:'/listener',msg:" + msg + "}"; + + //stringify {"op":"publish","topic":"/listener","msg":"{ \"data \" : \" Hello from the HoloLens \" } "} + //tostring {"op":"publish","topic":"/listener","msg":"{ \"data \" : \" Hello from the HoloLens \" } "} + + dbg::trace(L"Publish: output stringify %s, x %s, y %s , z %s, zz %s zzz %s", output->Data(), outputx->Data(), outputy->Data() , outputz->Data(), outputzz->Data(), outputzzz->Data()); + //dbg::trace(L"Publish: output tostring %s", jsonObject->ToString()); + Send(outputzzz); + + + /* + JsonObject^ jsonObject = ref new JsonObject(); + auto parsed = JsonObject::TryParse(call, &jsonObject); + dbg::trace(L"Publish: TryParse(call, &jsonObject) %s", parsed.ToString()); + if (parsed) { + + } + */ + //dbg::trace(L"Publish: %s", ); + //Send(call); + //} + + + + void BackgroundTask::PublishArray(Platform::String^ topic, Platform::Array^ inputArray) { + JsonObject^ jsonObject = ref new JsonObject(); + JsonObject^ data = ref new JsonObject(); + auto outputArray = inputArray->Value; + String^ msg = ref new String(); + + unsigned int i = 0; + while (i < sizeof(outputArray)) { + if (i != 0 && i != ( sizeof(outputArray)-1 )) { + msg += ", "; + } + msg += outputArray[i]; + i++; + } + + msg = "[ " + msg + " ]"; + data->Insert("data", JsonValue::Parse(msg) ); + + jsonObject->Insert("op", JsonValue::CreateStringValue("publish")); + jsonObject->Insert("topic", JsonValue::CreateStringValue(topic)); + jsonObject->Insert("msg", + + JsonValue::CreateStringValue( data->Stringify() ) // ? ? ? ? ? ? ? ? + ); + + auto output = jsonObject->Stringify(); + + dbg::trace(L"sending array"); + Send(output); + + + } + + + /* + void BackgroundTask::MessageReceived(MessageWebSocket^ sender, MessageWebSocketMessageReceivedEventArgs^ args) + { + // Dispatch the event to the UI thread so we can update UI. + //Dispatcher->RunAsync(CoreDispatcherPriority::Normal, ref new DispatchedHandler([this, args]() + //{ + dbg::trace(L"Message Received; Type: %s", args->MessageType.ToString()); + DataReader^ reader = args->GetDataReader(); + reader->UnicodeEncoding = UnicodeEncoding::Utf8; + try + { + + ///* REMOVE + + String^ read = reader->ReadString(reader->UnconsumedBufferLength); + //AppendOutputLine(read); + } + catch (Exception^ ex) + { + // AppendOutputLine(BuildWebSocketError(ex)); + //AppendOutputLine(ex->Message); + dbg::trace(L"MessageReceived: Error."); + } + ///* REMOVE + delete reader; + //})); + } + */ + + void BackgroundTask::OnDisconnect() { + + SetBusy(true); + CloseSocket(); + SetBusy(false); + + } + + void BackgroundTask::OnClosed(IWebSocket^ sender, WebSocketClosedEventArgs^ args) + { + if (messageWebSocket == sender) + { + CloseSocket(); + } + } + + void BackgroundTask::CloseSocket() { + if (messageWriter != nullptr) { + messageWriter->DetachStream(); + delete messageWriter; + messageWriter = nullptr; + + } + + if (messageWebSocket != nullptr) { + messageWebSocket->Close(1000, "Closed."); + messageWebSocket = nullptr; + } + } + + std::string BackgroundTask::base64_encode(unsigned char const* bytes_to_encode, unsigned int in_len) { + std::string ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (i = 0; (i < 4); i++) + ret += base64_chars[char_array_4[i]]; + i = 0; + } + } + + if (i) + { + for (j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + + for (j = 0; (j < i + 1); j++) + ret += base64_chars[char_array_4[j]]; + + while ((i++ < 3)) + ret += '='; + + } + + return ret; + + } + + std::string BackgroundTask::base64_decode(std::string const& encoded_string) { + size_t in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + std::string ret; + + while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i == 4) { + for (i = 0; i < 4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]) & 0xff; + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = 0; j < i; j++) + char_array_4[j] = base64_chars.find(char_array_4[j]) & 0xff; + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; + } + + String^ BackgroundTask::StringFromstd(std::string input) + { + std::wstring wid_str = std::wstring(input.begin(), input.end()); + const wchar_t* w_char = wid_str.c_str(); + Platform::String^ p_string = ref new Platform::String(w_char); + return p_string; + + } + String^ BackgroundTask::StringFromAscIIChars(char* chars) + { + size_t newsize = strlen(chars) + 1; + wchar_t * wcstring = new wchar_t[newsize]; + size_t convertedChars = 0; + mbstowcs_s(&convertedChars, wcstring, newsize, chars, _TRUNCATE); + String^ str = ref new Platform::String(wcstring); + delete[] wcstring; + return str; + }/* + Platform::String^ BackgroundTask::base64_encodep(unsigned char const* bytes_to_encode, unsigned int in_len) { + Platform::String^ ret; + int i = 0; + int j = 0; + unsigned char char_array_3[3]; + unsigned char char_array_4[4]; + + while (in_len--) { + char_array_3[i++] = *(bytes_to_encode++); + if (i == 3) { + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + char_array_4[3] = char_array_3[2] & 0x3f; + + for (i = 0; (i < 4); i++) + ret += &base64_charsp->Data.[char_array_4[i]]; + + i = 0; + } + } + + if (i) + { + for (j = i; j < 3; j++) + char_array_3[j] = '\0'; + + char_array_4[0] = (char_array_3[0] & 0xfc) >> 2; + char_array_4[1] = ((char_array_3[0] & 0x03) << 4) + ((char_array_3[1] & 0xf0) >> 4); + char_array_4[2] = ((char_array_3[1] & 0x0f) << 2) + ((char_array_3[2] & 0xc0) >> 6); + + for (j = 0; (j < i + 1); j++) + ret += &base64_charsp->Data[char_array_4[j]]; + + while ((i++ < 3)) + ret += '='; + + } + + return ret; + + } + + Platform::String^ BackgroundTask::base64_decodep(std::string const& encoded_string) { // not needed here + size_t in_len = encoded_string.size(); + int i = 0; + int j = 0; + int in_ = 0; + unsigned char char_array_4[4], char_array_3[3]; + Platform::String^ ret; + + while (in_len-- && (encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { + char_array_4[i++] = encoded_string[in_]; in_++; + if (i == 4) { + for (i = 0; i < 4; i++) + char_array_4[i] = base64_chars.find(char_array_4[i]) & 0xff; + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + char_array_3[2] = ((char_array_4[2] & 0x3) << 6) + char_array_4[3]; + + for (i = 0; (i < 3); i++) + ret += char_array_3[i]; + i = 0; + } + } + + if (i) { + for (j = 0; j < i; j++) + char_array_4[j] = base64_charsp->Data.find(char_array_4[j]) & 0xff; + + char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); + char_array_3[1] = ((char_array_4[1] & 0xf) << 4) + ((char_array_4[2] & 0x3c) >> 2); + + for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; + } + + return ret; + }*/ +} \ No newline at end of file diff --git a/Tools/Tasks/BackgroundTask.h b/Tools/Tasks/BackgroundTask.h new file mode 100755 index 0000000..6b1de2e --- /dev/null +++ b/Tools/Tasks/BackgroundTask.h @@ -0,0 +1,114 @@ +#pragma once + +#include "pch.h" + +using namespace Windows::ApplicationModel::Background; +using namespace Windows::Storage; +using namespace Windows::System::Threading; +using namespace Windows::Foundation; + +namespace Tasks +{ + [Windows::Foundation::Metadata::WebHostHidden] + public ref class BackgroundTask sealed : public IBackgroundTask + { + public: + + virtual void Run(IBackgroundTaskInstance^ taskInstance); + void OnCanceled(IBackgroundTaskInstance^ taskInstance, BackgroundTaskCancellationReason reason); + //void OnCompleted(BackgroundTaskRegistration^ task, BackgroundTaskCompletedEventArgs^ args); + + private: + + Platform::Agile TaskDeferral = nullptr; + bool keepRunning; + + void StartHoloLensMediaFrameSourceGroup(); + HoloLensForCV::MediaFrameSourceGroupType _selectedHoloLensMediaFrameSourceGroupType; + HoloLensForCV::MediaFrameSourceGroup^ _holoLensMediaFrameSourceGroup; + bool _holoLensMediaFrameSourceGroupStarted; + HoloLensForCV::SpatialPerception^ _spatialPerception; + HoloLensForCV::MultiFrameBuffer^ _multiFrameBuffer; + + Windows::Foundation::IAsyncAction^ RunAsync(); + concurrency::task StreamAsync(); + boolean pairingInProgress; + + Windows::ApplicationModel::Background::BackgroundTaskCancellationReason CancelReason = Windows::ApplicationModel::Background::BackgroundTaskCancellationReason::Abort; + volatile bool CancelRequested = false; + + Windows::System::Threading::ThreadPoolTimer^ PeriodicTimer = nullptr; + unsigned int Progress = 0; + Windows::ApplicationModel::Background::IBackgroundTaskInstance^ TaskInstance = nullptr; + + + Windows::Media::Devices::Core::CameraIntrinsics^ leftCameraIntrinsics; + Windows::Media::Devices::Core::CameraIntrinsics^ rightCameraIntrinsics; + boolean inProcess; + Platform::Array^ sensorFrameToImageBuffer(HoloLensForCV::SensorFrame^ sensorFrame); + std::pair BackgroundTask::sensorFrameToImageBufferPair(HoloLensForCV::SensorFrame^ sensorFrame); + + struct HoloLensCameraCalibration + { + std::wstring SensorName; + + float FocalLengthX; + float FocalLengthY; + + float PrincipalPointX; + float PrincipalPointY; + + float RadialDistortionX; + float RadialDistortionY; + float RadialDistortionZ; + + float TangentialDistortionX; + float TangentialDistortionY; + }; + + Windows::Foundation::Numerics::float4x4 GetCamToOrigin(HoloLensForCV::SensorFrame^ frame); + Windows::Foundation::Numerics::float4x4 GetAbsoluteCameraPose(HoloLensForCV::SensorFrame^ frame); + Windows::Foundation::Numerics::float4x4 GetCamToWorld(Windows::Foundation::Numerics::float4x4 pose); + + //ROS handling + + void Advertise(Platform::String^ topic, Platform::String^ messageType); + void PublishHello(Platform::String^ topic, Platform::String^ message); + void PublishArray(Platform::String^ topic, Platform::Array^ inputArray); + + void Publish(Platform::String^ topic, Windows::Foundation::DateTime commonTimestamp, + HoloLensForCV::SensorFrame^ leftFrame, Platform::Array^ leftData, HoloLensForCV::SensorFrame^ rightFrame, Platform::Array^ rightData); + + //Encoding from C++ base64.hpp Github repo {Insert Link} + std::string base64_encode(unsigned char const*, unsigned int len); + std::string base64_decode(std::string const& s); + //Platform::String^ base64_encodep(unsigned char const* bytes_to_encode, unsigned int in_len); + //Platform::String^ base64_decodep(std::string const& encoded_string); + Platform::String^ StringFromAscIIChars(char* chars); + Platform::String^ StringFromstd(std::string input); + + + //Websocket handling + bool busy; + void SetBusy(bool value); + + void Connect(); + Concurrency::task ConnectAsync(); + + void Send(Platform::String^ message); void Send(Platform::Array^ message); void Send(DateTime timestamp); //Publish + Concurrency::task SendAsync(Platform::String^ message); Concurrency::task SendAsync(Platform::Array^ message); Concurrency::task SendAsync(DateTime timestamp); + + void OnDisconnect(); + + Windows::Networking::Sockets::MessageWebSocket^ messageWebSocket; + Windows::Storage::Streams::DataWriter^ messageWriter; + //void OnServerCustomValidationRequested( + //Windows::Networking::Sockets::MessageWebSocket^ sender, + //Windows::Networking::Sockets::WebSocketServerCustomValidationRequestedEventArgs^ args); + + //void MessageReceived(Windows::Networking::Sockets::MessageWebSocket^ sender, Windows::Networking::Sockets::MessageWebSocketMessageReceivedEventArgs^ args); + void OnClosed(Windows::Networking::Sockets::IWebSocket^ sender, Windows::Networking::Sockets::WebSocketClosedEventArgs^ args); + void CloseSocket(); + + }; +} diff --git a/Tools/Tasks/Tasks.vcxproj b/Tools/Tasks/Tasks.vcxproj new file mode 100755 index 0000000..3118bb0 --- /dev/null +++ b/Tools/Tasks/Tasks.vcxproj @@ -0,0 +1,304 @@ + + + + + Debug + ARM + + + Debug + ARM64 + + + Debug + Win32 + + + Debug + x64 + + + Release + ARM + + + Release + ARM64 + + + Release + Win32 + + + Release + x64 + + + + {b4dd17ec-eef8-41fc-8bdc-3c8652db68e1} + WindowsRuntimeComponent + Tasks + en-US + 14.0 + true + Windows Store + 10.0.17134.0 + 10.0.10240.0 + 10.0 + + + + DynamicLibrary + true + v141 + + + DynamicLibrary + true + v141 + + + DynamicLibrary + true + v141 + + + DynamicLibrary + true + v141 + + + DynamicLibrary + false + true + v141 + + + DynamicLibrary + false + true + v141 + + + DynamicLibrary + false + true + v141 + + + DynamicLibrary + false + true + v141 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + false + + + + Use + _WINRT_DLL;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + Use + _WINRT_DLL;NDEBUG;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + $(SolutionDir)Shared/Debugging/Include;$(SolutionDir)Shared/Io/Include;$(SolutionDir)Shared/Rendering/Include;$(SolutionDir)Shared/Holographic/Include;$(SolutionDir)Shared/Graphics/Include;$(SolutionDir)packages\Eigen.3.3.3\build\native\include;$(SolutionDir)\..\..\Libraries\cpp-base64\;%(AdditionalIncludeDirectories) + + + Console + false + + + + + Use + _WINRT_DLL;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + Use + _WINRT_DLL;NDEBUG;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + Use + _WINRT_DLL;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + Use + _WINRT_DLL;NDEBUG;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + Use + _WINRT_DLL;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + Use + _WINRT_DLL;NDEBUG;%(PreprocessorDefinitions) + pch.h + $(IntDir)pch.pch + $(WindowsSDK_WindowsMetadata);$(AdditionalUsingDirectories) + /bigobj %(AdditionalOptions) + 28204 + + + Console + false + + + + + + + + + Create + Create + Create + Create + Create + Create + Create + Create + + + + + + {ad347424-7340-47ce-a979-2c7f2df0eb38} + + + {208c932d-a71e-4c67-a444-0697e9a4226e} + + + {6e542043-c5d1-4850-b43e-e9295b640c2b} + + + {940a6d80-0775-4272-84c9-1585c4757071} + + + + + + \ No newline at end of file diff --git a/Tools/Tasks/Tasks.vcxproj.filters b/Tools/Tasks/Tasks.vcxproj.filters new file mode 100755 index 0000000..70e3ba0 --- /dev/null +++ b/Tools/Tasks/Tasks.vcxproj.filters @@ -0,0 +1,17 @@ + + + + + 5331142e-9a64-41b1-8329-5b4b67b80be6 + rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tga;tiff;tif;png;wav;mfcribbon-ms + + + + + + + + + + + \ No newline at end of file diff --git a/Tools/Tasks/pch.cpp b/Tools/Tasks/pch.cpp new file mode 100755 index 0000000..bcb5590 --- /dev/null +++ b/Tools/Tasks/pch.cpp @@ -0,0 +1 @@ +#include "pch.h" diff --git a/Tools/Tasks/pch.h b/Tools/Tasks/pch.h new file mode 100755 index 0000000..a673b83 --- /dev/null +++ b/Tools/Tasks/pch.h @@ -0,0 +1,33 @@ +#pragma once + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +#include +#include +#include +#include +#include +//#include "../../../Libraries/cpp-base64/base64.h"