facebookincubator / obs-plugins

OBS Plugins
GNU General Public License v2.0
54 stars 15 forks source link

OVRMRCLib 1.0 Connection Issue #4

Closed NeoSpark314 closed 4 years ago

NeoSpark314 commented 4 years ago

I'm working on integrating the OVRMRCLib 1.0 into the godot_oculus_mobile plugin https://github.com/NeoSpark314/godot_oculus_mobile/tree/mrc) for Oculus Quest. I ran into an issue I'm not sure how to track down further. If this is the wrong channel to ask these questions please redirect me if you can and feel free to close the issue.

I'm using the Mixed Reality Capture tools 3.1 from https://developer.oculus.com/downloads/package/mixed-reality-capture-tools/

When I try to load the plugin inside OBS 24.0.3 the plugin can't be loaded with the following error

10:04:09.374: LoadLibrary failed for '../../obs-plugins/64bit/oculus-mrc.dll': The specified module could not be found.
10:04:09.374:  (126)
10:04:09.374: Module '../../obs-plugins/64bit/oculus-mrc.dll' not loaded

In OBS 23.2.1 the plugin loads successfully:

10:05:47.397: [OculusMrcSource 'Oculus MRC']: Codec found. Capabilities 0x3022

I tested then capturing with Superhot and it works perfectly.

Now I'm trying to integrate OVRMRCLib (Version 1.0 from https://developer.oculus.com/downloads/package/ovrmrclib/) into the godot plugin.

I have the library initialized without error and set the activation mode to automatic. Querying ovrm_GetAPIs()->GetVersions(&majorVersion, &minorVersion, &patchVersion); reports version 1.44.0. I call ovrmResult result = ovrm_GetAPIs()->Update(); without error each frame.

ovrmResult result = ovrm_GetAPIs()->IsMrcEnabled(&value); returns value == true and I get the correct camera parmaeters via ovrm_GetAPIs()->GetExternalCameraIntrinsics(cameraId, &cameraIntrinsics); and ovrmResult result = ovrm_GetAPIs()->GetExternalCameraExtrinsics(cameraId, &cameraExtrinsics);.

but when I now try to connect from the OBS 23.2.1 plugin I get the following error in the OBS log:

10:17:14.573: [OculusMrcSource 'Oculus MRC']: ConnectClicked
10:17:17.201: [OculusMrcSource 'Oculus MRC']: Unable to connect
10:17:17.201: [OculusMrcSource 'Oculus MRC']: Socket connected to 192.168.0.118:28734
10:17:17.201: [OculusMrcSource 'Oculus MRC']: m_codecContext constructed and opened

and no actual conneciton happens and ovrmResult result = ovrm_GetAPIs()->IsMrcActivated(&value); report value == false.

The adb logcat output for OVRMrcLib is:

01-19 10:57:30.989  3743  3760 V GodotOVRMobile: OvrMrc: initializing ovrm version 1.44.0
01-19 10:57:30.989  3743  3760 D OVRMrcLib: [MediaManager] Set JavaVM to 0x7fa78e9040
01-19 10:57:30.993  3743  3760 I OVRMrcLib: GetExternalAppFilesPath() returns /storage/emulated/0/Android/data/org.godotengine.ovr_demo/files
01-19 10:57:30.993  3743  3760 D OVRMrcLib: MRC config file found: /storage/emulated/0/Android/data/org.godotengine.ovr_demo/files/mrc.xml
01-19 10:57:30.993  3743  3760 D OVRMrcLib: ExtractInt(, image_width) -> #1920#
01-19 10:57:30.993  3743  3760 D OVRMrcLib: ExtractInt(, image_height) -> #1080#
01-19 10:57:30.993  3743  3760 D OVRMrcLib: ImageSensorPixelResolution (w 1920, h 1080)
.
.
01-19 10:57:30.993  3743  3760 I OVRMrcLib: [MediaManager] MRC camera found
01-19 10:57:30.993  3743  3760 I OVRMrcLib: [MediaManager] MrcConfig: enabled 1 hq_mode 0, frame 2560 x 1080 image 1920 x 1080 tcp_port 28734 debugcamera 0 bitrate 8000000
01-19 10:57:30.993  3743  3760 E OVRMrcLib: [MediaManager] getaddrinfo error: No address associated with hostname (C:\cygwin\data\sandcastle\boxes\trunk-hg-ovrsource-full\Software\OculusSDK\Integrations\OVRPlugin\Main\1stParty\OVRMrcLib\Src\Util\MediaManager.cpp:607)
01-19 10:57:30.993  3743  3760 I OVRMrcLib: [MediaManager] GraphicsAPI set to GLES
01-19 10:57:30.993  3743  3760 E OVRMrcLib: [MediaManager] getaddrinfo error: No address associated with hostname (C:\cygwin\data\sandcastle\boxes\trunk-hg-ovrsource-full\Software\OculusSDK\Integrations\OVRPlugin\Main\1stParty\OVRMrcLib\Src\Util\MediaManager.cpp:607)
01-19 10:57:30.993  3743  3760 D OVRMrcLib: [MediaManager] SetMrcActivationMode 0 listening 0

Do you have maybe an idea what could be the reason and how to debug this? What does the error in the OVRMrcLib MediaManager mean and could this be related?

Regards, Holger

xwovr commented 4 years ago

Sorry for the late reply. Have you managed to solve the problem?

From the log, "getaddrinfo error: No address associated with hostname" was the issue. It means the Quest app can't listen to the TCP port and receive the connection from OBS plugin. Could there be some networking condition of your Quest headset (e.g. WiFi disabled)?

NeoSpark314 commented 4 years ago

Hi,

thanks for the answer. So far I was not able to resolve the issue. Not sure if it is a basic network issue as I was able to connect with Super Hot. The problem is with my own application where I try to integrate OVRMRCLib. But now that you write it... maybe I need special android permissions in the manifest to allow the connection?

xwovr commented 4 years ago

Oh, that's possible. Do you have the "Internet" permission in manifest? MRC uses TCP to connect OBS to your app, so the permission is required.

NeoSpark314 commented 4 years ago

That was the issue I had. Thanks a lot for your answer and pointing me to this! Now I get the connection and I can continue with (debugging) my integration.