From 93a023b09e75e3e05197f83d0cf409f5510ad2e6 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:05:05 -0400 Subject: [PATCH 01/20] shared pv support --- hl2ss/hl2ss/custom_video_effect.h | 3 ++- hl2ss/hl2ss/ipc_sc.cpp | 2 ++ hl2ss/hl2ss/personal_video.cpp | 42 ++++++++++++++++++++++--------- hl2ss/hl2ss/personal_video.h | 2 +- 4 files changed, 35 insertions(+), 14 deletions(-) diff --git a/hl2ss/hl2ss/custom_video_effect.h b/hl2ss/hl2ss/custom_video_effect.h index 430086b1..b8ff79cc 100644 --- a/hl2ss/hl2ss/custom_video_effect.h +++ b/hl2ss/hl2ss/custom_video_effect.h @@ -13,7 +13,8 @@ struct MRCVideoOptions bool video_stabilization; bool blank_protected; bool show_mesh; - uint8_t _reserved[2]; + bool shared; + uint8_t _reserved[1]; float global_opacity; float output_width; float output_height; diff --git a/hl2ss/hl2ss/ipc_sc.cpp b/hl2ss/hl2ss/ipc_sc.cpp index 7912ebaa..6e4d449f 100644 --- a/hl2ss/hl2ss/ipc_sc.cpp +++ b/hl2ss/hl2ss/ipc_sc.cpp @@ -187,6 +187,8 @@ bool ReceiveMRCVideoOptions(SOCKET clientsocket, MRCVideoOptions& options) if (!ok) { return false; } ok = recv_u8(clientsocket, *(uint8_t*)&options.show_mesh); if (!ok) { return false; } + ok = recv_u8(clientsocket, *(uint8_t*)&options.shared); + if (!ok) { return false; } ok = recv_u32(clientsocket, *(uint32_t*)&options.global_opacity); if (!ok) { return false; } ok = recv_u32(clientsocket, *(uint32_t*)&options.output_width); diff --git a/hl2ss/hl2ss/personal_video.cpp b/hl2ss/hl2ss/personal_video.cpp index 570a03c3..7ae26ae2 100644 --- a/hl2ss/hl2ss/personal_video.cpp +++ b/hl2ss/hl2ss/personal_video.cpp @@ -19,6 +19,7 @@ using namespace winrt::Windows::Media::Capture::Frames; static CRITICAL_SECTION g_lock; // DeleteCriticalSection static bool g_ready = false; +static bool g_shared = false; static MediaCapture g_mediaCapture = nullptr; static MediaFrameSource g_videoSource = nullptr; @@ -111,12 +112,20 @@ void PersonalVideo_Open(MRCVideoOptions const& options) PersonalVideo_FindMediaSourceGroup(width, height, framerate, sourceGroup, profile, description); + if (!options.shared) + { settings.VideoProfile(profile); settings.RecordMediaDescription(description); + settings.SharingMode(MediaCaptureSharingMode::ExclusiveControl); + } + else + { + settings.SharingMode(MediaCaptureSharingMode::SharedReadOnly); + } + settings.VideoDeviceId(sourceGroup.Id()); settings.StreamingCaptureMode(StreamingCaptureMode::Video); settings.MemoryPreference(MediaCaptureMemoryPreference::Cpu); - settings.SharingMode(MediaCaptureSharingMode::ExclusiveControl); settings.SourceGroup(sourceGroup); settings.MediaCategory(MediaCategory::Media); @@ -126,7 +135,8 @@ void PersonalVideo_Open(MRCVideoOptions const& options) PersonalVideo_FindVideoSource(g_mediaCapture, g_videoSource); - g_ready = true; + g_shared = options.shared; + g_ready = true; } // OK @@ -148,11 +158,19 @@ bool PersonalVideo_Status() } // OK -bool PersonalVideo_SetFormat(uint32_t width, uint32_t height, uint32_t framerate) +bool PersonalVideo_SetFormat(uint16_t& width, uint16_t& height, uint8_t& framerate) { MediaFrameFormat selectedFormat = nullptr; bool ok; + if (g_shared) + { + width = (uint16_t)g_videoSource.CurrentFormat().VideoFormat().Width(); + height = (uint16_t)g_videoSource.CurrentFormat().VideoFormat().Height(); + framerate = (uint8_t) g_videoSource.CurrentFormat().FrameRate().Numerator(); + return true; + } + ok = PersonalVideo_FindVideoFormat(g_videoSource, width, height, framerate, selectedFormat); if (!ok) { return false; } @@ -175,7 +193,7 @@ void PersonalVideo_SetFocus(uint32_t focusmode, uint32_t autofocusrange, uint32_ FocusSettings fs; CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } switch (focusmode) { @@ -219,7 +237,7 @@ void PersonalVideo_SetVideoTemporalDenoising(uint32_t mode) VideoTemporalDenoisingMode vtdm; CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } switch (mode) { @@ -237,7 +255,7 @@ void PersonalVideo_SetWhiteBalance_Preset(uint32_t preset) ColorTemperaturePreset ctp; CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } switch (preset) { @@ -261,7 +279,7 @@ void PersonalVideo_SetWhiteBalance_Value(uint32_t value) uint32_t temperature; CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } temperature = value * 25; if ((temperature >= 2300) && (temperature <= 7500)) { g_mediaCapture.VideoDeviceController().WhiteBalanceControl().SetValueAsync(temperature).get(); } @@ -274,7 +292,7 @@ void PersonalVideo_SetExposure(uint32_t setauto, uint32_t value) bool mode; CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } mode = setauto != 0; g_mediaCapture.VideoDeviceController().ExposureControl().SetAutoAsync(mode).get(); @@ -287,7 +305,7 @@ void PersonalVideo_SetExposure(uint32_t setauto, uint32_t value) void PersonalVideo_SetExposurePriorityVideo(uint32_t enabled) { CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } g_mediaCapture.VideoDeviceController().ExposurePriorityVideoControl().Enabled(enabled != 0); } @@ -297,7 +315,7 @@ void PersonalVideo_SetSceneMode(uint32_t mode) CaptureSceneMode value; CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } switch (mode) { @@ -323,7 +341,7 @@ void PersonalVideo_SetSceneMode(uint32_t mode) void PersonalVideo_SetIsoSpeed(uint32_t setauto, uint32_t value) { CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } if (setauto != 0) { g_mediaCapture.VideoDeviceController().IsoSpeedControl().SetAutoAsync().get(); } else if ((value >= 100) && (value <= 3200)) { g_mediaCapture.VideoDeviceController().IsoSpeedControl().SetValueAsync(value).get(); } } @@ -331,6 +349,6 @@ void PersonalVideo_SetIsoSpeed(uint32_t setauto, uint32_t value) void PersonalVideo_SetBacklightCompensation(bool enable) { CriticalSection cs(&g_lock); - if (!g_ready) { return; } + if (!g_ready || g_shared) { return; } g_mediaCapture.VideoDeviceController().BacklightCompensation().TrySetValue(enable ? 1.0 : 0.0); } diff --git a/hl2ss/hl2ss/personal_video.h b/hl2ss/hl2ss/personal_video.h index e2f46988..8b3fdd12 100644 --- a/hl2ss/hl2ss/personal_video.h +++ b/hl2ss/hl2ss/personal_video.h @@ -9,7 +9,7 @@ void PersonalVideo_Cleanup(); void PersonalVideo_Open(MRCVideoOptions const& options); void PersonalVideo_Close(); bool PersonalVideo_Status(); -bool PersonalVideo_SetFormat(uint32_t width, uint32_t height, uint32_t framerate); +bool PersonalVideo_SetFormat(uint16_t& width, uint16_t& height, uint8_t& framerate); winrt::Windows::Media::Capture::Frames::MediaFrameReader PersonalVideo_CreateFrameReader(); void PersonalVideo_SetFocus(uint32_t focusmode, uint32_t autofocusrange, uint32_t distance, uint32_t value, uint32_t disabledriverfallback); From 6bb72b2486841b52b4396c678114ce31d8d0effe Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:06:00 -0400 Subject: [PATCH 02/20] better pv extrinsics --- hl2ss/hl2ss/research_mode.cpp | 23 ++++++++++++++++------- hl2ss/hl2ss/research_mode.h | 6 +++--- hl2ss/hl2ss/stream_pv.cpp | 9 +++++++-- hl2ss/hl2ss/stream_rm.cpp | 5 +---- 4 files changed, 27 insertions(+), 16 deletions(-) diff --git a/hl2ss/hl2ss/research_mode.cpp b/hl2ss/hl2ss/research_mode.cpp index 855f3948..9f81ecc7 100644 --- a/hl2ss/hl2ss/research_mode.cpp +++ b/hl2ss/hl2ss/research_mode.cpp @@ -1,6 +1,12 @@ #include "research_mode.h" +#include +#include + +using namespace winrt::Windows::Perception::Spatial; +using namespace winrt::Windows::Perception::Spatial::Preview; + extern "C" { HMODULE LoadLibraryA(LPCSTR lpLibFileName); } typedef HRESULT(__cdecl* PFN_CREATEPROVIDER)(IResearchModeSensorDevice**); @@ -30,7 +36,7 @@ static HANDLE g_imu_consent_event = NULL; // CloseHandle static ResearchModeSensorConsent g_camera_consent_value = ResearchModeSensorConsent::UserPromptRequired; static ResearchModeSensorConsent g_imu_consent_value = ResearchModeSensorConsent::UserPromptRequired; static std::vector g_sensors; // Release -static GUID g_rigNodeId; +static SpatialLocator g_locator = nullptr; //----------------------------------------------------------------------------- // Functions @@ -51,14 +57,14 @@ static void ResearchMode_IMUAccessCallback(ResearchModeSensorConsent consent) } // OK -bool ResearchMode_WaitForCameraConsent() +static bool ResearchMode_WaitForCameraConsent() { WaitForSingleObject(g_camera_consent_event, INFINITE); return g_camera_consent_value == ResearchModeSensorConsent::Allowed; } // OK -bool ResearchMode_WaitForIMUConsent() +static bool ResearchMode_WaitForIMUConsent() { WaitForSingleObject(g_imu_consent_event, INFINITE); return g_imu_consent_value == ResearchModeSensorConsent::Allowed; @@ -92,6 +98,7 @@ bool ResearchMode_Initialize() PFN_CREATEPROVIDER pfnCreate; size_t sensorcount; size_t sensorsloaded; + GUID rigNodeId; g_hrResearchMode = LoadLibraryA("ResearchModeAPI"); if (!g_hrResearchMode) { return false; } @@ -139,11 +146,13 @@ bool ResearchMode_Initialize() hr = g_pSensorDevice->QueryInterface(IID_PPV_ARGS(&pSensorDevicePerception)); if (FAILED(hr)) { return false; } - hr = pSensorDevicePerception->GetRigNodeId(&g_rigNodeId); + hr = pSensorDevicePerception->GetRigNodeId(&rigNodeId); if (FAILED(hr)) { return false; } pSensorDevicePerception->Release(); + g_locator = SpatialGraphInteropPreview::CreateLocatorForNode(rigNodeId); + return true; } @@ -168,7 +177,7 @@ void ResearchMode_Cleanup() g_camera_consent_value = ResearchModeSensorConsent::UserPromptRequired; g_imu_consent_value = ResearchModeSensorConsent::UserPromptRequired; g_sensors.clear(); - memset(&g_rigNodeId, 0, sizeof(g_rigNodeId)); + g_locator = nullptr; } // OK @@ -323,7 +332,7 @@ bool ResearchMode_GetExtrinsics(IResearchModeSensor* sensor, DirectX::XMFLOAT4X4 } // OK -GUID ResearchMode_GetRigNodeId() +SpatialLocator ResearchMode_GetLocator() { - return g_rigNodeId; + return g_locator; } diff --git a/hl2ss/hl2ss/research_mode.h b/hl2ss/hl2ss/research_mode.h index b2a73005..6959112b 100644 --- a/hl2ss/hl2ss/research_mode.h +++ b/hl2ss/hl2ss/research_mode.h @@ -4,6 +4,8 @@ #include #include +#include + int const RM_VLC_WIDTH = 640; int const RM_VLC_HEIGHT = 480; int const RM_VLC_FPS = 30; @@ -28,8 +30,6 @@ int const RM_ZLT_ABSIZE = RM_ZLT_PIXELS * sizeof(uint16_t); uint8_t const NV12_ZERO_CHROMA = 0x80; -bool ResearchMode_WaitForCameraConsent(); -bool ResearchMode_WaitForIMUConsent(); bool ResearchMode_WaitForConsent(IResearchModeSensor* sensor); bool ResearchMode_Initialize(); @@ -42,4 +42,4 @@ int ResearchMode_GetSensorTypeCount(); bool ResearchMode_GetIntrinsics(IResearchModeSensor* sensor, std::vector& uv2x, std::vector& uv2y, std::vector& mapx, std::vector& mapy, float K[4]); bool ResearchMode_GetExtrinsics(IResearchModeSensor* sensor, DirectX::XMFLOAT4X4& extrinsics); -GUID ResearchMode_GetRigNodeId(); +winrt::Windows::Perception::Spatial::SpatialLocator ResearchMode_GetLocator(); diff --git a/hl2ss/hl2ss/stream_pv.cpp b/hl2ss/hl2ss/stream_pv.cpp index 37fcc86a..08b419e4 100644 --- a/hl2ss/hl2ss/stream_pv.cpp +++ b/hl2ss/hl2ss/stream_pv.cpp @@ -8,6 +8,7 @@ #include "ports.h" #include "timestamps.h" #include "ipc_sc.h" +#include "research_mode.h" #include #include @@ -46,6 +47,7 @@ static uint32_t g_divisor = 1; // Mode: 2 static HANDLE g_event_intrinsic = NULL; // alias static float g_intrinsics[2 + 2 + 3 + 2 + 16]; +static float4x4 g_extrinsics; //----------------------------------------------------------------------------- // Functions @@ -135,6 +137,8 @@ static void PV_OnVideoFrameArrived_Intrinsics(MediaFrameReader const& sender, Me memcpy(&g_intrinsics[7], &t, sizeof(t)); memcpy(&g_intrinsics[9], &p, sizeof(p)); + g_extrinsics = Locator_Locate(QPCTimestampToPerceptionTimestamp(frame.SystemRelativeTime().Value().count()), ResearchMode_GetLocator(), frame.CoordinateSystem()); + SetEvent(g_event_intrinsic); } @@ -224,7 +228,7 @@ void PV_Stream(SOCKET clientsocket, HANDLE clientevent, MediaFrameReader const& // OK static void PV_Intrinsics(SOCKET clientsocket, HANDLE clientevent, MediaFrameReader const& reader) { - WSABUF wsaBuf[1]; + WSABUF wsaBuf[2]; g_event_intrinsic = clientevent; @@ -234,7 +238,8 @@ static void PV_Intrinsics(SOCKET clientsocket, HANDLE clientevent, MediaFrameRea WaitForSingleObject(g_event_intrinsic, INFINITE); reader.StopAsync().get(); - pack_buffer(wsaBuf, 0, g_intrinsics, sizeof(g_intrinsics)); + pack_buffer(wsaBuf, 0, g_intrinsics, sizeof(g_intrinsics)); + pack_buffer(wsaBuf, 1, &g_extrinsics, sizeof(g_extrinsics)); send_multiple(clientsocket, wsaBuf, sizeof(wsaBuf) / sizeof(WSABUF)); } diff --git a/hl2ss/hl2ss/stream_rm.cpp b/hl2ss/hl2ss/stream_rm.cpp index 180f4016..c5114e4d 100644 --- a/hl2ss/hl2ss/stream_rm.cpp +++ b/hl2ss/hl2ss/stream_rm.cpp @@ -69,7 +69,6 @@ static DWORD WINAPI RM_EntryPoint(void* param) SOCKET clientsocket; // closesocket IResearchModeSensor* sensor; ResearchModeSensorType type; - GUID nodeId; char const* port; bool ok; @@ -81,9 +80,7 @@ static DWORD WINAPI RM_EntryPoint(void* param) ok = ResearchMode_WaitForConsent(sensor); if (!ok) { return false; } - nodeId = ResearchMode_GetRigNodeId(); - locator = SpatialGraphInteropPreview::CreateLocatorForNode(nodeId); - + locator = ResearchMode_GetLocator(); port = g_research_sensor_port[type]; listensocket = CreateSocket(port); From 9871cbe6c39c0cde55d21dbc70715726700e1702 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:07:27 -0400 Subject: [PATCH 03/20] Update hl2ss.py --- viewer/hl2ss.py | 18 +++++++++++------- 1 file changed, 11 insertions(+), 7 deletions(-) diff --git a/viewer/hl2ss.py b/viewer/hl2ss.py index 6b1544d7..a2b89179 100644 --- a/viewer/hl2ss.py +++ b/viewer/hl2ss.py @@ -462,8 +462,8 @@ def _create_configuration_for_h26x_encoding(options): return bytes(configuration) -def _create_configuration_for_mrc_video(enable, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective): - return struct.pack(' Date: Fri, 26 Apr 2024 02:08:15 -0400 Subject: [PATCH 04/20] Update hl2ss_lnm.py --- viewer/hl2ss_lnm.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/viewer/hl2ss_lnm.py b/viewer/hl2ss_lnm.py index 3c2ca7e8..1234b0cf 100644 --- a/viewer/hl2ss_lnm.py +++ b/viewer/hl2ss_lnm.py @@ -72,8 +72,8 @@ def get_sync_period(rx): # Control #------------------------------------------------------------------------------ -def start_subsystem_pv(host, port, enable_mrc=False, hologram_composition=True, recording_indicator=False, video_stabilization=False, blank_protected=False, show_mesh=False, global_opacity=0.9, output_width=0.0, output_height=0.0, video_stabilization_length=0, hologram_perspective=hl2ss.HologramPerspective.PV): - hl2ss.start_subsystem_pv(host, port, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective) +def start_subsystem_pv(host, port, enable_mrc=False, hologram_composition=True, recording_indicator=False, video_stabilization=False, blank_protected=False, show_mesh=False, shared=False, global_opacity=0.9, output_width=0.0, output_height=0.0, video_stabilization_length=0, hologram_perspective=hl2ss.HologramPerspective.PV): + hl2ss.start_subsystem_pv(host, port, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, shared, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective) def stop_subsystem_pv(host, port): From fdf5e0a249c4ba90069ef84feba0b30617faf1ec Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:08:20 -0400 Subject: [PATCH 05/20] Update client_stream_pv.py --- viewer/client_stream_pv.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/viewer/client_stream_pv.py b/viewer/client_stream_pv.py index e048d9c2..55026d33 100644 --- a/viewer/client_stream_pv.py +++ b/viewer/client_stream_pv.py @@ -65,6 +65,8 @@ print(data.projection) print('Intrinsics') print(data.intrinsics) + print('RigNode Extrinsics') + print(data.extrinsics) else: enable = True From 282469a39accd0f53624199cc52dd141d309460a Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:18:43 -0400 Subject: [PATCH 06/20] Update hl2ss_3dcv.py --- viewer/hl2ss_3dcv.py | 32 ++++---------------------------- 1 file changed, 4 insertions(+), 28 deletions(-) diff --git a/viewer/hl2ss_3dcv.py b/viewer/hl2ss_3dcv.py index 5a3df36f..0eada112 100644 --- a/viewer/hl2ss_3dcv.py +++ b/viewer/hl2ss_3dcv.py @@ -276,10 +276,7 @@ def _save_calibration_pv(calibration, path): calibration.tangential_distortion.tofile(os.path.join(path, 'tangential_distortion.bin')) calibration.projection .tofile(os.path.join(path, 'projection.bin')) calibration.intrinsics .tofile(os.path.join(path, 'intrinsics.bin')) - - -def _save_extrinsics_pv(extrinsics, path): - extrinsics .tofile(os.path.join(path, 'extrinsics.bin')) + calibration.extrinsics .tofile(os.path.join(path, 'extrinsics.bin')) def _load_calibration_rm_vlc(path): @@ -331,14 +328,9 @@ def _load_calibration_pv(path): tangential_distortion = np.fromfile(os.path.join(path, 'tangential_distortion.bin'), dtype=np.float32) projection = np.fromfile(os.path.join(path, 'projection.bin'), dtype=np.float32).reshape((4, 4)) intrinsics = np.fromfile(os.path.join(path, 'intrinsics.bin'), dtype=np.float32).reshape((4, 4)) - - return hl2ss._Mode2_PV(focal_length, principal_point, radial_distortion, tangential_distortion, projection, intrinsics) - - -def _load_extrinsics_pv(path): extrinsics = np.fromfile(os.path.join(path, 'extrinsics.bin'), dtype=np.float32).reshape((4, 4)) - return extrinsics + return hl2ss._Mode2_PV(focal_length, principal_point, radial_distortion, tangential_distortion, projection, intrinsics, extrinsics) #------------------------------------------------------------------------------ @@ -410,12 +402,6 @@ def _load_calibration_rm(port, path): # Calibration Manager #------------------------------------------------------------------------------ -class _Mode2_PV(hl2ss._Mode2_PV): - def __init__(self, mode2, extrinsics): - super().__init__(mode2.focal_length, mode2.principal_point, mode2.radial_distortion, mode2.tangential_distortion, mode2.projection, mode2.intrinsics) - self.extrinsics = extrinsics - - def _check_calibration_directory(path): if (not os.path.isdir(path)): raise IOError('Calibration path ' + path + ' does not exist') @@ -444,12 +430,11 @@ def get_calibration_rm(host, port, path): return calibration -def get_calibration_pv(host, port, path, focus, width, height, framerate, load_extrinsics): +def get_calibration_pv(host, port, path, focus, width, height, framerate): _check_calibration_directory(path) root = _calibration_subdirectory(port, path) base = _calibration_subdirectory_pv(focus, width, height, root) - extrinsics = _load_extrinsics_pv(root) if (load_extrinsics) else None try: calibration = _load_calibration_pv(base) @@ -458,16 +443,7 @@ def get_calibration_pv(host, port, path, focus, width, height, framerate, load_e os.makedirs(base, exist_ok=True) _save_calibration_pv(calibration, base) - return _Mode2_PV(calibration, extrinsics) - - -def save_extrinsics_pv(port, extrinsics, path): - _check_calibration_directory(path) - - base = _calibration_subdirectory(port, path) - os.makedirs(base, exist_ok=True) - - return _save_extrinsics_pv(extrinsics, base) + return calibration #------------------------------------------------------------------------------ From a53c11765d89a912bc4bd2e725ea42895bc56273 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:18:58 -0400 Subject: [PATCH 07/20] Update sample_sm_pv_depth.py --- viewer/sample_sm_pv_depth.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viewer/sample_sm_pv_depth.py b/viewer/sample_sm_pv_depth.py index 2a00f1df..4b41fd4c 100644 --- a/viewer/sample_sm_pv_depth.py +++ b/viewer/sample_sm_pv_depth.py @@ -64,7 +64,7 @@ rc_client.close() # Get calibration (focus is fixed so intrinsics don't change between frames) - pv_calibration = hl2ss_3dcv.get_calibration_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO, calibration_path, pv_focus, pv_width, pv_height, pv_fps, False) + pv_calibration = hl2ss_3dcv.get_calibration_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO, calibration_path, pv_focus, pv_width, pv_height, pv_fps) pv_calibration.intrinsics, pv_calibration.extrinsics = hl2ss_3dcv.pv_fix_calibration(pv_calibration.intrinsics, np.eye(4, 4, dtype=np.float32)) # Get PV rays in camera coordinates From 44247163941ffb924024e6fd5f745c15a1e5dc49 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:19:02 -0400 Subject: [PATCH 08/20] Update sample_stereo_rectify_pv.py --- viewer/sample_stereo_rectify_pv.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/viewer/sample_stereo_rectify_pv.py b/viewer/sample_stereo_rectify_pv.py index 0935d73b..f4c70044 100644 --- a/viewer/sample_stereo_rectify_pv.py +++ b/viewer/sample_stereo_rectify_pv.py @@ -71,7 +71,7 @@ def on_press(key): port_left = hl2ss.StreamPort.RM_VLC_LEFTFRONT calibration_lf = hl2ss_3dcv.get_calibration_rm(host, port_left, calibration_path) - calibration_rf = hl2ss_3dcv.get_calibration_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO, calibration_path, pv_focus, pv_width, pv_height, pv_framerate, True) + calibration_rf = hl2ss_3dcv.get_calibration_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO, calibration_path, pv_focus, pv_width, pv_height, pv_framerate) rotation_lf = hl2ss_3dcv.rm_vlc_get_rotation(port_left) From 91000c44ad237c2b330f92b0bfad5095852a7c57 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:32:29 -0400 Subject: [PATCH 09/20] Delete pv_extrinsic_calibration.py --- tools/pv_extrinsic_calibration.py | 80 ------------------------------- 1 file changed, 80 deletions(-) delete mode 100644 tools/pv_extrinsic_calibration.py diff --git a/tools/pv_extrinsic_calibration.py b/tools/pv_extrinsic_calibration.py deleted file mode 100644 index 6a935fe4..00000000 --- a/tools/pv_extrinsic_calibration.py +++ /dev/null @@ -1,80 +0,0 @@ - -from scipy.spatial.transform import Rotation -from tqdm import tqdm - -import numpy as np -import argparse -import hl2ss -import hl2ss_lnm -import hl2ss_3dcv - -parser = argparse.ArgumentParser(description='HL2SS PV Extrinsic Calibration Tool. This tool requires that the HL2 is stationary. For best results, place the HL2 on a flat surface such as a table.') -parser.add_argument('--host', help='HL2 IP address (e.g. 192.168.1.0)', required=True) -parser.add_argument('--path', help='HL2 calibration folder (e.g. ../calibration/)', required=True) - -args = parser.parse_args() - -host = args.host -path = args.path - -samples = 32 - -client_rc = hl2ss.ipc_rc(host, hl2ss.IPCPort.REMOTE_CONFIGURATION) -client_pv = hl2ss_lnm.rx_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO) -client_rn = hl2ss_lnm.rx_rm_vlc(host, hl2ss.StreamPort.RM_VLC_LEFTFRONT) - -list_pv = [] -list_rn = [] - -invalid = False - -print('Connecting to HL2 (' + host + ')...') - -hl2ss.start_subsystem_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO) - -client_rc.open() -client_rc.wait_for_pv_subsystem(True) - -client_pv.open() -client_rn.open() - -for i in tqdm(range(0, samples)): - data_pv = client_pv.get_next_packet() - data_rn = client_rn.get_next_packet() - - invalid = (not hl2ss.is_valid_pose(data_pv.pose)) or (not hl2ss.is_valid_pose(data_rn.pose)) - if (invalid): - break - - list_pv.append(data_pv.pose) - list_rn.append(data_rn.pose) - -client_pv.close() -client_rn.close() - -hl2ss.stop_subsystem_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO) -client_rc.wait_for_pv_subsystem(False) -client_rc.close() - -if (invalid): - print('Invalid pose detected') - print('Please make sure none of the HL2 sensors are covered and try again') - quit() - -# camera_to_world -# inv(extrinsics_pv) @ rn_pose = pv_pose -# inv(extrinsics_pv) = pv_pose @ inv(rn_pose) -# extrinsics_pv = rn_pose @ inv(pv_pose) - -list_extrinsics = [rn_pose @ np.linalg.inv(pv_pose) for rn_pose, pv_pose in zip(list_rn, list_pv)] - -extrinsics = np.zeros((4, 4), dtype=np.float32) -extrinsics[ 3, :3] = np.mean(np.array([list_extrinsics[i][3, 0:3] for i in range(0, samples)], dtype=np.float32), axis=0) -extrinsics[:3, :3] = Rotation.from_matrix(np.vstack([list_extrinsics[i][:3, :3].reshape((1, 3, 3)) for i in range(0, samples)])).mean().as_matrix() -extrinsics[ 3, 3] = 1 - -hl2ss_3dcv.save_extrinsics_pv(hl2ss.StreamPort.PERSONAL_VIDEO, extrinsics, path) - -print('PV extrinsics saved to ' + path) -print('PV extrinsics:') -print(extrinsics) From 575435965fa824d89f72d4c513fc9ff0dadad853 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 02:32:33 -0400 Subject: [PATCH 10/20] Update pv_intrinsics_downloader.py --- tools/pv_intrinsics_downloader.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/pv_intrinsics_downloader.py b/tools/pv_intrinsics_downloader.py index e507bf9e..529a0e55 100644 --- a/tools/pv_intrinsics_downloader.py +++ b/tools/pv_intrinsics_downloader.py @@ -33,7 +33,7 @@ print('Setting PV focus to {focus}'.format(focus=focus)) client_rc.set_pv_focus(hl2ss.PV_FocusMode.Manual, hl2ss.PV_AutoFocusRange.Normal, hl2ss.PV_ManualFocusDistance.Infinity, focus, hl2ss.PV_DriverFallback.Disable) print('Fetching PV calibration for {width}x{height}@{framerate}'.format(width=width, height=height, framerate=framerate)) -calibration = hl2ss_3dcv.get_calibration_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO, path, focus, width, height, framerate, False) +calibration = hl2ss_3dcv.get_calibration_pv(host, hl2ss.StreamPort.PERSONAL_VIDEO, path, focus, width, height, framerate) print('PV calibration saved to ' + path) print('PV intrinsics:') print(calibration.intrinsics) From acc338ff9f99a2edfca3764b6139cc1b9eb306f6 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 11:41:26 -0400 Subject: [PATCH 11/20] pv shared stub + extrinsics --- extensions/client_cpp/hl2ss.cpp | 8 +++++--- extensions/client_cpp/hl2ss.h | 3 ++- extensions/client_cpp/hl2ss_lnm.cpp | 4 ++-- extensions/client_cpp/hl2ss_lnm.h | 2 +- 4 files changed, 10 insertions(+), 7 deletions(-) diff --git a/extensions/client_cpp/hl2ss.cpp b/extensions/client_cpp/hl2ss.cpp index 2bd9263a..21257a6d 100644 --- a/extensions/client_cpp/hl2ss.cpp +++ b/extensions/client_cpp/hl2ss.cpp @@ -299,7 +299,7 @@ void create_configuration_for_h26x_encoding(std::vector& sc, std::vecto } } -void create_configuration_for_mrc_video(std::vector& sc, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective) +void create_configuration_for_mrc_video(std::vector& sc, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, bool shared, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective) { push_u8(sc, enable_mrc); push_u8(sc, hologram_composition); @@ -307,6 +307,7 @@ void create_configuration_for_mrc_video(std::vector& sc, bool enable_mr push_u8(sc, video_stabilization); push_u8(sc, blank_protected); push_u8(sc, show_mesh); + push_u8(sc, shared); push_float(sc, global_opacity); push_float(sc, output_width); push_float(sc, output_height); @@ -408,13 +409,13 @@ uint8_t const STOP = 0x08; uint8_t const MODE_3 = 0x03; }; -void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective) +void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, bool shared, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective) { std::vector sc; client c; create_configuration_for_pv_mode_2(sc, pv_control::START | pv_control::MODE_3, 1920, 1080, 30); - create_configuration_for_mrc_video(sc, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective); + create_configuration_for_mrc_video(sc, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, shared, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective); c.open(host, port); c.sendall(sc.data(), sc.size()); @@ -1187,6 +1188,7 @@ std::shared_ptr download_calibration_pv(char const* host, uint16 c.download(data->radial_distortion, sizeof(data->radial_distortion), chunk_size::SINGLE_TRANSFER); c.download(data->tangential_distortion, sizeof(data->tangential_distortion), chunk_size::SINGLE_TRANSFER); c.download(data->projection, sizeof(data->projection), chunk_size::SINGLE_TRANSFER); + c.download(data->extrinsics, sizeof(data->extrinsics), chunk_size::SINGLE_TRANSFER); c.close(); diff --git a/extensions/client_cpp/hl2ss.h b/extensions/client_cpp/hl2ss.h index a67ee701..1c920bbd 100644 --- a/extensions/client_cpp/hl2ss.h +++ b/extensions/client_cpp/hl2ss.h @@ -386,7 +386,7 @@ struct pv_intrinsics float cy; }; -void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective); +void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, bool shared, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective); void stop_subsystem_pv(char const* host, uint16_t port); //------------------------------------------------------------------------------ @@ -777,6 +777,7 @@ struct calibration_pv float radial_distortion[3]; float tangential_distortion[2]; float projection[4][4]; + float extrinsics[4][4]; }; std::shared_ptr download_calibration_rm_vlc(char const* host, uint16_t port); diff --git a/extensions/client_cpp/hl2ss_lnm.cpp b/extensions/client_cpp/hl2ss_lnm.cpp index 58f091da..e0e65956 100644 --- a/extensions/client_cpp/hl2ss_lnm.cpp +++ b/extensions/client_cpp/hl2ss_lnm.cpp @@ -78,9 +78,9 @@ uint64_t get_sync_period(hl2ss::rx* rx) // Control //------------------------------------------------------------------------------ -void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective) +void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc, bool hologram_composition, bool recording_indicator, bool video_stabilization, bool blank_protected, bool show_mesh, bool shared, float global_opacity, float output_width, float output_height, uint32_t video_stabilization_length, uint32_t hologram_perspective) { - hl2ss::start_subsystem_pv(host, port, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective); + hl2ss::start_subsystem_pv(host, port, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, shared, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective); } void stop_subsystem_pv(char const* host, uint16_t port) diff --git a/extensions/client_cpp/hl2ss_lnm.h b/extensions/client_cpp/hl2ss_lnm.h index d13ef3ac..835440ce 100644 --- a/extensions/client_cpp/hl2ss_lnm.h +++ b/extensions/client_cpp/hl2ss_lnm.h @@ -26,7 +26,7 @@ uint64_t get_sync_period(hl2ss::rx* rx); // Control //------------------------------------------------------------------------------ -void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc=false, bool hologram_composition=true, bool recording_indicator=false, bool video_stabilization=false, bool blank_protected=false, bool show_mesh=false, float global_opacity=0.9f, float output_width=0.0f, float output_height=0.0f, uint32_t video_stabilization_length=0, uint32_t hologram_perspective=hl2ss::hologram_perspective::PV); +void start_subsystem_pv(char const* host, uint16_t port, bool enable_mrc=false, bool hologram_composition=true, bool recording_indicator=false, bool video_stabilization=false, bool blank_protected=false, bool show_mesh=false, bool shared=false, float global_opacity=0.9f, float output_width=0.0f, float output_height=0.0f, uint32_t video_stabilization_length=0, uint32_t hologram_perspective=hl2ss::hologram_perspective::PV); void stop_subsystem_pv(char const* host, uint16_t port); //------------------------------------------------------------------------------ From 1b6919478fc8b2a7528c73e50176de57600fb4b2 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 13:48:40 -0400 Subject: [PATCH 12/20] pv shared RAW --- viewer/hl2ss.py | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/viewer/hl2ss.py b/viewer/hl2ss.py index a2b89179..42144fbb 100644 --- a/viewer/hl2ss.py +++ b/viewer/hl2ss.py @@ -1107,13 +1107,27 @@ class _unpack_pv: 'nv12' : None } + _resolution = { + get_video_stride(1952)*1100 : (1952, 1100, get_video_stride(1952)), + get_video_stride(1504)*846 : (1504, 846, get_video_stride(1504)), + get_video_stride(1920)*1080 : (1920, 1080, get_video_stride(1920)), + get_video_stride(1280)*720 : (1280, 720, get_video_stride(1280)), + get_video_stride(640)*360 : ( 640, 360, get_video_stride( 640)), + get_video_stride(760)*428 : ( 760, 428, get_video_stride( 760)), + get_video_stride(960)*540 : ( 960, 540, get_video_stride( 960)), + get_video_stride(1128)*636 : (1128, 636, get_video_stride(1128)), + get_video_stride(424)*240 : ( 424, 240, get_video_stride( 424)), + get_video_stride(500)*282 : ( 500, 282, get_video_stride( 500)) + } + def create(self, width, height): self.width = width self.height = height self.stride = get_video_stride(width) def decode(self, payload, format): - image = np.frombuffer(payload, dtype=np.uint8).reshape((int(self.height*3/2), self.stride))[:, :self.width] + self.width, self.height, self.stride = _unpack_pv._resolution[(len(payload) * 2) // 3] + image = np.frombuffer(payload, dtype=np.uint8).reshape(((self.height*3) //2, self.stride))[:, :self.width] sf = _unpack_pv._cv2_nv12_format[format] return image if (sf is None) else cv2.cvtColor(image, sf) From 241a3cecf8efc53ccf7729d0e120da2faaf97a8d Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:06:40 -0400 Subject: [PATCH 13/20] cpp client raw nv12 trim fix --- extensions/client_cpp/hl2ss.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/extensions/client_cpp/hl2ss.cpp b/extensions/client_cpp/hl2ss.cpp index 21257a6d..9eef8154 100644 --- a/extensions/client_cpp/hl2ss.cpp +++ b/extensions/client_cpp/hl2ss.cpp @@ -709,8 +709,8 @@ void collect_i420(uint8_t* dst, int width, int height, uint8_t* data[8], int lin void collect_nv12(uint8_t* dst, uint16_t width, uint16_t height, uint8_t const* src, uint16_t stride) { - trim_plane(dst, src, height, width, stride); - trim_plane(dst + (height * width), src + (height * stride), height, width / 2, stride / 2); + trim_plane(dst, src, height, width, stride); + trim_plane(dst + (height * width), src + (height * stride), height / 2, width, stride); } uint16_t get_video_stride(uint16_t width) From 2530ab7c9871cf8bed71a8a4f8bbc713b65dab76 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 14:17:07 -0400 Subject: [PATCH 14/20] Update hl2ss.py --- viewer/hl2ss.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/viewer/hl2ss.py b/viewer/hl2ss.py index 42144fbb..a6fa89e5 100644 --- a/viewer/hl2ss.py +++ b/viewer/hl2ss.py @@ -1126,8 +1126,8 @@ def create(self, width, height): self.stride = get_video_stride(width) def decode(self, payload, format): - self.width, self.height, self.stride = _unpack_pv._resolution[(len(payload) * 2) // 3] - image = np.frombuffer(payload, dtype=np.uint8).reshape(((self.height*3) //2, self.stride))[:, :self.width] + width, height, stride = _unpack_pv._resolution[(len(payload) * 2) // 3] + image = np.frombuffer(payload, dtype=np.uint8).reshape(((height*3) //2, stride))[:, :width] sf = _unpack_pv._cv2_nv12_format[format] return image if (sf is None) else cv2.cvtColor(image, sf) From 1dde1395f32baed6f022ac5eeff29c2280e470e5 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:21:46 -0400 Subject: [PATCH 15/20] Update hl2ss.h --- extensions/client_cpp/hl2ss.h | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/client_cpp/hl2ss.h b/extensions/client_cpp/hl2ss.h index 1c920bbd..fcda2508 100644 --- a/extensions/client_cpp/hl2ss.h +++ b/extensions/client_cpp/hl2ss.h @@ -629,10 +629,11 @@ class decoder_pv static uint32_t const K_SIZE = sizeof(pv_intrinsics); static uint8_t decoded_bpp(uint8_t decoded_format); + static void resolution(uint32_t bytes, uint16_t& width, uint16_t& height, uint16_t& stride); + static void resolution_decoded(uint32_t payload_size, uint8_t decoded_format, uint16_t& width, uint16_t& height, uint8_t& channels); void open(uint16_t width, uint16_t height, uint8_t profile); - uint32_t decoded_size(uint8_t decoded_format); - std::unique_ptr decode(uint8_t* data, uint32_t size, uint8_t decoded_format); + std::unique_ptr decode(uint8_t* data, uint32_t size, uint8_t decoded_format, uint32_t& decoded_size); void close(); }; From f84a3368f562a11580b50e78a90783392a5af63d Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:22:36 -0400 Subject: [PATCH 16/20] Update hl2ss.cpp --- extensions/client_cpp/hl2ss.cpp | 73 ++++++++++++++++++++++++--------- 1 file changed, 53 insertions(+), 20 deletions(-) diff --git a/extensions/client_cpp/hl2ss.cpp b/extensions/client_cpp/hl2ss.cpp index 9eef8154..04dd2b5b 100644 --- a/extensions/client_cpp/hl2ss.cpp +++ b/extensions/client_cpp/hl2ss.cpp @@ -713,7 +713,7 @@ void collect_nv12(uint8_t* dst, uint16_t width, uint16_t height, uint8_t const* trim_plane(dst + (height * width), src + (height * stride), height / 2, width, stride); } -uint16_t get_video_stride(uint16_t width) +constexpr uint16_t get_video_stride(uint16_t width) { return width + ((64 - (width & 63)) & 63); } @@ -863,6 +863,37 @@ uint8_t decoder_pv::decoded_bpp(uint8_t decoded_format) return cv_format[decoded_format][0]; } +void decoder_pv::resolution(uint32_t bytes, uint16_t& width, uint16_t& height, uint16_t& stride) +{ + switch (bytes) + { + case get_video_stride(1952)*1100: width = 1952; height = 1100; stride = get_video_stride(1952); break; + case get_video_stride(1504)* 846: width = 1504; height = 846; stride = get_video_stride(1504); break; + case get_video_stride(1920)*1080: width = 1920; height = 1080; stride = get_video_stride(1920); break; + case get_video_stride(1280)* 720: width = 1280; height = 720; stride = get_video_stride(1280); break; + case get_video_stride( 640)* 360: width = 640; height = 360; stride = get_video_stride( 640); break; + case get_video_stride( 760)* 428: width = 760; height = 428; stride = get_video_stride( 760); break; + case get_video_stride( 960)* 540: width = 960; height = 540; stride = get_video_stride( 960); break; + case get_video_stride(1128)* 636: width = 1128; height = 636; stride = get_video_stride(1128); break; + case get_video_stride( 424)* 240: width = 424; height = 240; stride = get_video_stride( 424); break; + case get_video_stride( 500)* 282: width = 500; height = 282; stride = get_video_stride( 500); break; + case 1952*1100: width = 1952; height = 1100; stride = 1952; break; + case 1504* 846: width = 1504; height = 846; stride = 1504; break; + case 760* 428: width = 760; height = 428; stride = 760; break; + case 1128* 636: width = 1128; height = 636; stride = 1128; break; + case 424* 240: width = 424; height = 240; stride = 424; break; + case 500* 282: width = 500; height = 282; stride = 500; break; + default: throw std::runtime_error("hl2ss::decoder_pv::resolution : unknown resolution"); + } +} + +void decoder_pv::resolution_decoded(uint32_t payload_size, uint8_t decoded_format, uint16_t& width, uint16_t& height, uint8_t& channels) +{ + uint16_t stride; + channels = decoded_bpp(decoded_format); + resolution((payload_size - K_SIZE) / channels, width, height, stride); +} + void decoder_pv::open(uint16_t width, uint16_t height, uint8_t profile) { m_width = width; @@ -872,38 +903,38 @@ void decoder_pv::open(uint16_t width, uint16_t height, uint8_t profile) if (m_profile != video_profile::RAW) { m_codec.open(get_video_codec_id(m_profile)); } } -uint32_t decoder_pv::decoded_size(uint8_t decoded_format) +std::unique_ptr decoder_pv::decode(uint8_t* data, uint32_t size, uint8_t decoded_format, uint32_t& decoded_size) { - return m_width * m_height * decoded_bpp(decoded_format) + K_SIZE; -} - -std::unique_ptr decoder_pv::decode(uint8_t* data, uint32_t size, uint8_t decoded_format) -{ - uint32_t full_size = decoded_size(decoded_format); uint32_t h26x_size = size - K_SIZE; - - std::unique_ptr out = std::make_unique(full_size); - - cv::Mat input = cv::Mat((m_height * 3) / 2, m_width, CV_8UC1); - cv::Mat output; - int code; + uint16_t width; + uint16_t height; + uint16_t stride; + cv::Mat input; + int code; if (m_profile != video_profile::RAW) { std::shared_ptr f = m_codec.decode(data, h26x_size); - collect_i420(input.data, m_width, m_height, f->av_frame->data, f->av_frame->linesize); + width = f->av_frame->width; + height = f->av_frame->height; + input = cv::Mat((height * 3) / 2, width, CV_8UC1); + collect_i420(input.data, width, height, f->av_frame->data, f->av_frame->linesize); code = cv_format[decoded_format][2]; } else { - collect_nv12(input.data, m_width, m_height, data, get_video_stride(m_width)); + resolution((h26x_size * 2) / 3, width, height, stride); + input = cv::Mat((height * 3) / 2, width, CV_8UC1); + collect_nv12(input.data, width, height, data, stride); code = cv_format[decoded_format][3]; } - - output = cv::Mat(m_height, m_width, cv_format[decoded_format][1], out.get()); + + decoded_size = width * height * decoded_bpp(decoded_format) + K_SIZE; + std::unique_ptr out = std::make_unique(decoded_size); + cv::Mat output = cv::Mat(height, width, cv_format[decoded_format][1], out.get()); cv::cvtColor(input, output, code); + memcpy(out.get() + decoded_size - K_SIZE, data + h26x_size, K_SIZE); - memcpy(out.get() + full_size - K_SIZE, data + h26x_size, K_SIZE); return out; } @@ -1028,7 +1059,9 @@ void rx_decoded_pv::open() std::shared_ptr rx_decoded_pv::get_next_packet() { std::shared_ptr p = rx_pv::get_next_packet(); - p->set_payload(m_decoder.decoded_size(decoded_format), m_decoder.decode(p->payload.get(), p->sz_payload, decoded_format)); + uint32_t size; + std::unique_ptr payload = m_decoder.decode(p->payload.get(), p->sz_payload, decoded_format, size); + p->set_payload(size, std::move(payload)); return p; } From 517482578bcee4b27df97a689f089fcba6942473 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 16:45:12 -0400 Subject: [PATCH 17/20] Update main.cpp --- extensions/client_cpp/main.cpp | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/extensions/client_cpp/main.cpp b/extensions/client_cpp/main.cpp index 6ab52229..bcda74ad 100644 --- a/extensions/client_cpp/main.cpp +++ b/extensions/client_cpp/main.cpp @@ -8,11 +8,8 @@ // Common //----------------------------------------------------------------------------- -void print_packet_metadata(uint64_t timestamp, hl2ss::matrix_4x4* matrix) +void print_matrix(hl2ss::matrix_4x4* matrix) { - std::cout << "Pose at time " << timestamp << std::endl; - if (matrix) - { std::cout << "[" << std::endl; for (int row = 0; row < 4; ++row) { @@ -23,6 +20,14 @@ void print_packet_metadata(uint64_t timestamp, hl2ss::matrix_4x4* matrix) std::cout << std::endl; } std::cout << "]" << std::endl; +} + +void print_packet_metadata(uint64_t timestamp, hl2ss::matrix_4x4* matrix) +{ + std::cout << "Pose at time " << timestamp << std::endl; + if (matrix) + { + print_matrix(matrix); } else { From ea2a8361e3bb8ebca874d7aa1ad82246661c8fdd Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:35:19 -0400 Subject: [PATCH 18/20] Update hl2ss_matlab.cpp --- extensions/client_matlab/hl2ss_matlab.cpp | 27 ++++++++++++++++++----- 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/extensions/client_matlab/hl2ss_matlab.cpp b/extensions/client_matlab/hl2ss_matlab.cpp index 0ada6550..4dc45571 100644 --- a/extensions/client_matlab/hl2ss_matlab.cpp +++ b/extensions/client_matlab/hl2ss_matlab.cpp @@ -455,7 +455,7 @@ class MexFunction : public matlab::mex::Function outputs[0] = std::move(o); } - void pack_pv(int64_t frame_index, int32_t status, hl2ss::packet* packet, uint16_t width, uint16_t height, matlab::mex::ArgumentList outputs) + void pack_pv(int64_t frame_index, int32_t status, hl2ss::packet* packet, uint16_t width, uint16_t height, uint8_t channels, matlab::mex::ArgumentList outputs) { matlab::data::StructArray o = m_factory.createStructArray({ 1 }, { "frame_index", "status", "timestamp", "image", "intrinsics", "pose" }); @@ -468,7 +468,7 @@ class MexFunction : public matlab::mex::Function if (packet->payload) { uint32_t image_size = packet->sz_payload - hl2ss::decoder_pv::K_SIZE; - o[0]["image"] = unpack_payload(packet->payload.get(), 0, image_size, { height, width, image_size / (sizeof(uint8_t) * height * width) }); + o[0]["image"] = unpack_payload(packet->payload.get(), 0, image_size, { height, width, channels }); o[0]["intrinsics"] = unpack_payload( packet->payload.get(), image_size, hl2ss::decoder_pv::K_SIZE, { 4 }); } if (packet->pose) @@ -676,9 +676,22 @@ class MexFunction : public matlab::mex::Function int64_t frame_index; int32_t status; std::shared_ptr packet = grab(source, frame_index, status, inputs); - hl2ss::rx_pv const* p_rx = source->get_rx(); - pack_pv(frame_index, status, packet.get(), p_rx->width, p_rx->height, outputs); + uint16_t width; + uint16_t height; + uint8_t channels; + + if (packet) + { + hl2ss::rx_decoded_pv const* p_rx = source->get_rx(); + hl2ss::decoder_pv::resolution_decoded(packet->sz_payload, p_rx->decoded_format, width, height, channels); + } + else + { + width = height = channels = 0; + } + + pack_pv(frame_index, status, packet.get(), width, height, channels, outputs); } void get_packet_microphone(uint16_t port, matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) @@ -776,13 +789,14 @@ class MexFunction : public matlab::mex::Function bool video_stabilization = get_argument(inputs); bool blank_protected = get_argument(inputs); bool show_mesh = get_argument(inputs); + bool shared = get_argument(inputs); float global_opacity = get_argument(inputs); float output_width = get_argument(inputs); float output_height = get_argument(inputs); uint32_t video_stabilization_length = get_argument(inputs); uint32_t hologram_perspective = get_argument(inputs); - hl2ss::lnm::start_subsystem_pv(host.c_str(), port, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective); + hl2ss::lnm::start_subsystem_pv(host.c_str(), port, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, shared, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective); } void stop_subsystem_pv(matlab::mex::ArgumentList outputs, matlab::mex::ArgumentList inputs) @@ -881,13 +895,14 @@ class MexFunction : public matlab::mex::Function std::shared_ptr data = hl2ss::lnm::download_calibration_pv(host, port, width, height, framerate); - matlab::data::StructArray o = m_factory.createStructArray({ 1 }, { "focal_length", "principal_point", "radial_distortion", "tangential_distortion", "projection" }); + matlab::data::StructArray o = m_factory.createStructArray({ 1 }, { "focal_length", "principal_point", "radial_distortion", "tangential_distortion", "projection", "extrinsics" }); o[0]["focal_length"] = to_typed_array(data->focal_length, { sizeof(data->focal_length) / sizeof(float) }); o[0]["principal_point"] = to_typed_array(data->principal_point, { sizeof(data->principal_point) / sizeof(float) }); o[0]["radial_distortion"] = to_typed_array(data->radial_distortion, { sizeof(data->radial_distortion) / sizeof(float) }); o[0]["tangential_distortion"] = to_typed_array(data->tangential_distortion, { sizeof(data->tangential_distortion) / sizeof(float) }); o[0]["projection"] = unpack_payload(&data->projection, 0, sizeof(data->projection), { 4, 4 }); + o[0]["extrinsics"] = unpack_payload(&data->extrinsics, 0, sizeof(data->extrinsics), { 4, 4 }); outputs[0] = std::move(o); } From 47248879076fedc81c73e6519e1fb8c4a0cb7d89 Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:35:33 -0400 Subject: [PATCH 19/20] Update sink_pv.m --- extensions/client_matlab/+hl2ss/+mt/sink_pv.m | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/client_matlab/+hl2ss/+mt/sink_pv.m b/extensions/client_matlab/+hl2ss/+mt/sink_pv.m index 1c700719..a93aa511 100644 --- a/extensions/client_matlab/+hl2ss/+mt/sink_pv.m +++ b/extensions/client_matlab/+hl2ss/+mt/sink_pv.m @@ -75,7 +75,7 @@ function close(self) response = self.module('download_calibration', self.host, self.port, self.width, self.height, self.framerate); end - function start_subsystem(self, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective) + function start_subsystem(self, enable_mrc, hologram_composition, recording_indicator, video_stabilization, blank_protected, show_mesh, shared, global_opacity, output_width, output_height, video_stabilization_length, hologram_perspective) arguments self enable_mrc = false @@ -84,6 +84,7 @@ function start_subsystem(self, enable_mrc, hologram_composition, recording_indic video_stabilization = false blank_protected = false show_mesh = false + shared = false global_opacity = 0.9 output_width = 0.0 output_height = 0.0 @@ -91,7 +92,7 @@ function start_subsystem(self, enable_mrc, hologram_composition, recording_indic hologram_perspective = 1 end - self.module('start_subsystem_pv', self.host, self.port, logical(enable_mrc), logical(hologram_composition), logical(recording_indicator), logical(video_stabilization), logical(blank_protected), logical(show_mesh), single(global_opacity), single(output_width), single(output_height), uint32(video_stabilization_length), uint32(hologram_perspective)); + self.module('start_subsystem_pv', self.host, self.port, logical(enable_mrc), logical(hologram_composition), logical(recording_indicator), logical(video_stabilization), logical(blank_protected), logical(show_mesh), logical(shared), single(global_opacity), single(output_width), single(output_height), uint32(video_stabilization_length), uint32(hologram_perspective)); end function stop_subsystem(self) From d741dd0c9a51b886067d863d888529f04f43261f Mon Sep 17 00:00:00 2001 From: jdibenes <58836755+jdibenes@users.noreply.github.com> Date: Fri, 26 Apr 2024 17:55:37 -0400 Subject: [PATCH 20/20] Update hl2ss.dll --- unity/Assets/Plugins/WSA/hl2ss.dll | Bin 601088 -> 603136 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/unity/Assets/Plugins/WSA/hl2ss.dll b/unity/Assets/Plugins/WSA/hl2ss.dll index 4fdbfd3a347718e47210a3db19f8f127324efb5c..71980e2470ef2e3a747f80403e41dba2aa547dfd 100644 GIT binary patch delta 140032 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 ui5MwHL~}Gw1;Y<#9n}_J-nxkw*S2;IR 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 z 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
    hMWdz>)f84*36sK~>yeiJ&KjkJLO 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 Wi7;~L8G5j_W&D8Sx_|BSng0VMOVLvR