ValveSoftware / openvr

OpenVR SDK
http://steamvr.com
BSD 3-Clause "New" or "Revised" License
6.1k stars 1.28k forks source link

Tracked camera frame header is incomplete on HTC Vive #1605

Open Rectus opened 3 years ago

Rectus commented 3 years ago

When calling IVRTrackedCamera::GetVideoStreamFrameBuffer while using the original HTC Vive with the mono camera, several fields in the returned CameraVideoStreamFrameHeader_t do not get filled correctly. The ulFrameExposureTime field is set to 0, and trackedDevicePose is set to an invalid pose.

This breaks the ability to apply proper reprojection to the camera image.

Tested on Windows 10 with SteamVR beta 1.20.3

Rectus commented 2 years ago

Update: This only happens when the frame rate of the camera is set to 30 Hz. After successfully setting the camera to 60 Hz the structures are filled out properly.

This also seems to affect the SteamVR room view feature, which does not activate on 30 Hz. Properly setting the camera refresh rate is difficult, since the slider in the settings UI will only increment the frame rate by one 5 Hz step when dragged, and misconfigure the camera, requiring a USB device reset to recover from. Clicking the far end of the slider will correctly set the frame rate to 60 Hz.