googlevr / gvr-ios-sdk

Google VR SDK for iOS
http://developers.google.com/vr/ios/
Other
645 stars 191 forks source link

GVRAudioSDK pod hard to find, misleading header inclusion in GVRSDK pod #283

Closed ian-wevr closed 6 years ago

ian-wevr commented 6 years ago

The GVRSDK pod includes Surround Renderer C API headers, but the static library in the pod omits corresponding symbols. This is confusing as the docs don't mention any other pod or library to link against. Search for "GVRAudioSDK" (with quotes) via Google, no relevant results appear.

Additionally, the Surround Sound API is difficult to find, even for Android, because the audio section of documentation doesn't discuss it -- it links to the Spatial Audio API which can be misleading because it doesn't handle playing steaming audio, nor is the related Surround Renderer API mentioned there.

I don't believe there's a link to the audio C APIs from the iOS section of the audio documentation, so it is unclear as to if and which of the audio C APIs are supported on iOS.

jkammerl commented 6 years ago

Thanks for your feedback and apologies for the confusion. We'll work on a fix to add the missing symbols to the iOS SDK.

To give you more context, The GvrAudioSurround API has been specifically released to support ambisonic audio decoding in 360 video player applications like the Exoplayer project or VR movie theater experiences. Since it needs to be integrated into an audio/media engines, we excluded it from the getting started guide and only released its reference documentation for C/C++. However, I agree that we should better discuss its existence in our overview pages.

ian-wevr commented 6 years ago

@jkammerl Thanks for your reply! Here's a little more information about my usage in case it's helpful.

GvrAudioSurround API has been specifically released to support ambisonic audio decoding in 360 video player applications

FYI, this is chiefly what I'm using it for, although with the added feature of streaming non-ambisonic (mono) sounds with moving locations. As mentioned, the API isn't really designed for this, but I've been using gvr_audio_surround_set_head_rotation and manually attenuate samples to emulate distance from the head.

We'll work on a fix to add the missing symbols to the iOS SDK.

In my case, since I only use audio, I found the separate GVRAudioSDK pod ideal and don't use the GVRSDK pod. Although, I ended up dissecting the GVRAudioSDK pod and pulling the static libraries out of it. Integrating pods into my existing projects proved more trouble than gain. Having more direct access to the libraries and headers (e.g. via clone) would, at least for me, be a boon -- maybe that's available somewhere and I missed it?

jkammerl commented 6 years ago

Apologies for the delayed response. I just check the symbols in libGVRAudioSDK from Pods (GVRAudioSDK 1.100.0) which contain the gvr_audio_surround API.

nm libGVRAudioSDK.a|grep surround 0000000000005060 b __ZZ25gvr_audio_surround_createE28kSurroundFormatConversionMap 000000000000023e T _gvr_audio_surround_add_interleaved_input 000000000000026e T _gvr_audio_surround_clear 0000000000000000 T _gvr_audio_surround_create 00000000000001f2 T _gvr_audio_surround_destroy 0000000000000230 T _gvr_audio_surround_get_available_input_size_samples 000000000000024f T _gvr_audio_surround_get_available_output_size_samples 000000000000025d T _gvr_audio_surround_get_interleaved_output 000000000000028a T _gvr_audio_surround_set_head_rotation 000000000000027c T _gvr_audio_surround_trigger_processing libGVRAudioSDK.a(binaural_surround_renderer_impl.o): 0000000000001045 T _opus_multistream_surround_encoder_create 00000000000009c2 T _opus_multistream_surround_encoder_get_size 0000000000000d29 T _opus_multistream_surround_encoder_init 0000000000000000 T _surround_analysis

Re binary distribution: thanks for sharing your preference. Currently we don't have plans to migrate the distribution to github but it's good to know that there is demand for it.

I'll close the issue - please reopen if you still having trouble using the GvrSurroundAPI