Request mic access only when is needed

This commit is contained in:
volzhs 2018-12-14 00:35:01 +09:00
parent 199c294d4c
commit 7d387dc63f
4 changed files with 15 additions and 1 deletions

View file

@ -210,6 +210,9 @@
</member>
<member name="audio/driver" type="String" setter="" getter="">
</member>
<member name="audio/enable_audio_input" type="bool" setter="" getter="">
This option should be enabled if project works with microphone.
</member>
<member name="audio/mix_rate" type="int" setter="" getter="">
Mix rate used for audio. In general, it's better to not touch this and leave it to the host operating system.
</member>

View file

@ -159,8 +159,11 @@ Error AudioDriverCoreAudio::init() {
result = AudioUnitInitialize(audio_unit);
ERR_FAIL_COND_V(result != noErr, FAILED);
if (GLOBAL_GET("audio/enable_audio_input")) {
return capture_init();
}
return OK;
}
OSStatus AudioDriverCoreAudio::output_callback(void *inRefCon,
AudioUnitRenderActionFlags *ioActionFlags,

View file

@ -30,6 +30,7 @@
#include "audio_stream.h"
#include "core/os/os.h"
#include "core/project_settings.h"
//////////////////////////////
@ -184,6 +185,12 @@ float AudioStreamPlaybackMicrophone::get_stream_sampling_rate() {
}
void AudioStreamPlaybackMicrophone::start(float p_from_pos) {
if (!GLOBAL_GET("audio/enable_audio_input")) {
WARN_PRINTS("Need to enable Project settings > Audio > Enable Audio Input option to use capturing.");
return;
}
input_ofs = 0;
AudioDriver::get_singleton()->capture_start();

View file

@ -172,6 +172,7 @@ int AudioDriverManager::get_driver_count() {
}
void AudioDriverManager::initialize(int p_driver) {
GLOBAL_DEF_RST("audio/enable_audio_input", false);
int failed_driver = -1;
// Check if there is a selected driver