Commit 6720b511 authored by David Reid's avatar David Reid

Merge branch 'dev' of https://github.com/mackron/miniaudio into dev

parents 2d998e37 49e69ac0
...@@ -6681,6 +6681,13 @@ typedef enum ...@@ -6681,6 +6681,13 @@ typedef enum
ma_aaudio_input_preset_voice_performance /* AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE */ ma_aaudio_input_preset_voice_performance /* AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE */
} ma_aaudio_input_preset; } ma_aaudio_input_preset;
typedef enum
{
ma_aaudio_allow_capture_default = 0, /* Leaves the allowed capture policy unset. */
ma_aaudio_allow_capture_by_all, /* AAUDIO_ALLOW_CAPTURE_BY_ALL */
ma_aaudio_allow_capture_by_system, /* AAUDIO_ALLOW_CAPTURE_BY_SYSTEM */
ma_aaudio_allow_capture_by_none /* AAUDIO_ALLOW_CAPTURE_BY_NONE */
} ma_aaudio_allowed_capture_policy;
typedef union typedef union
{ {
...@@ -6814,6 +6821,7 @@ struct ma_device_config ...@@ -6814,6 +6821,7 @@ struct ma_device_config
ma_aaudio_usage usage; ma_aaudio_usage usage;
ma_aaudio_content_type contentType; ma_aaudio_content_type contentType;
ma_aaudio_input_preset inputPreset; ma_aaudio_input_preset inputPreset;
ma_aaudio_allowed_capture_policy allowedCapturePolicy;
ma_bool32 noAutoStartAfterReroute; ma_bool32 noAutoStartAfterReroute;
} aaudio; } aaudio;
}; };
...@@ -7328,6 +7336,7 @@ struct ma_context ...@@ -7328,6 +7336,7 @@ struct ma_context
ma_proc AAudioStreamBuilder_setUsage; ma_proc AAudioStreamBuilder_setUsage;
ma_proc AAudioStreamBuilder_setContentType; ma_proc AAudioStreamBuilder_setContentType;
ma_proc AAudioStreamBuilder_setInputPreset; ma_proc AAudioStreamBuilder_setInputPreset;
ma_proc AAudioStreamBuilder_setAllowedCapturePolicy;
ma_proc AAudioStreamBuilder_openStream; ma_proc AAudioStreamBuilder_openStream;
ma_proc AAudioStream_close; ma_proc AAudioStream_close;
ma_proc AAudioStream_getState; ma_proc AAudioStream_getState;
...@@ -7645,6 +7654,7 @@ struct ma_device ...@@ -7645,6 +7654,7 @@ struct ma_device
ma_aaudio_usage usage; ma_aaudio_usage usage;
ma_aaudio_content_type contentType; ma_aaudio_content_type contentType;
ma_aaudio_input_preset inputPreset; ma_aaudio_input_preset inputPreset;
ma_aaudio_allowed_capture_policy allowedCapturePolicy;
ma_bool32 noAutoStartAfterReroute; ma_bool32 noAutoStartAfterReroute;
} aaudio; } aaudio;
#endif #endif
...@@ -36918,6 +36928,7 @@ typedef int32_t ma_aaudio_performance_mo ...@@ -36918,6 +36928,7 @@ typedef int32_t ma_aaudio_performance_mo
typedef int32_t ma_aaudio_usage_t; typedef int32_t ma_aaudio_usage_t;
typedef int32_t ma_aaudio_content_type_t; typedef int32_t ma_aaudio_content_type_t;
typedef int32_t ma_aaudio_input_preset_t; typedef int32_t ma_aaudio_input_preset_t;
typedef int32_t ma_aaudio_allowed_capture_policy_t;
typedef int32_t ma_aaudio_data_callback_result_t; typedef int32_t ma_aaudio_data_callback_result_t;
typedef struct ma_AAudioStreamBuilder_t* ma_AAudioStreamBuilder; typedef struct ma_AAudioStreamBuilder_t* ma_AAudioStreamBuilder;
typedef struct ma_AAudioStream_t* ma_AAudioStream; typedef struct ma_AAudioStream_t* ma_AAudioStream;
...@@ -36992,6 +37003,11 @@ typedef struct ma_AAudioStream_t* ma_AAudioStream; ...@@ -36992,6 +37003,11 @@ typedef struct ma_AAudioStream_t* ma_AAudioStream;
#define MA_AAUDIO_INPUT_PRESET_UNPROCESSED 9 #define MA_AAUDIO_INPUT_PRESET_UNPROCESSED 9
#define MA_AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE 10 #define MA_AAUDIO_INPUT_PRESET_VOICE_PERFORMANCE 10
/* Allowed Capture Policies */
#define MA_AAUDIO_ALLOW_CAPTURE_BY_ALL 1
#define MA_AAUDIO_ALLOW_CAPTURE_BY_SYSTEM 2
#define MA_AAUDIO_ALLOW_CAPTURE_BY_NONE 3
/* Callback results. */ /* Callback results. */
#define MA_AAUDIO_CALLBACK_RESULT_CONTINUE 0 #define MA_AAUDIO_CALLBACK_RESULT_CONTINUE 0
#define MA_AAUDIO_CALLBACK_RESULT_STOP 1 #define MA_AAUDIO_CALLBACK_RESULT_STOP 1
...@@ -37016,6 +37032,7 @@ typedef void (* MA_PFN_AAudioStreamBuilder_setPerformanceMod ...@@ -37016,6 +37032,7 @@ typedef void (* MA_PFN_AAudioStreamBuilder_setPerformanceMod
typedef void (* MA_PFN_AAudioStreamBuilder_setUsage) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_usage_t contentType); typedef void (* MA_PFN_AAudioStreamBuilder_setUsage) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_usage_t contentType);
typedef void (* MA_PFN_AAudioStreamBuilder_setContentType) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_content_type_t contentType); typedef void (* MA_PFN_AAudioStreamBuilder_setContentType) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_content_type_t contentType);
typedef void (* MA_PFN_AAudioStreamBuilder_setInputPreset) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_input_preset_t inputPreset); typedef void (* MA_PFN_AAudioStreamBuilder_setInputPreset) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_input_preset_t inputPreset);
typedef void (* MA_PFN_AAudioStreamBuilder_setAllowedCapturePolicy) (ma_AAudioStreamBuilder* pBuilder, ma_aaudio_allowed_capture_policy_t policy);
typedef ma_aaudio_result_t (* MA_PFN_AAudioStreamBuilder_openStream) (ma_AAudioStreamBuilder* pBuilder, ma_AAudioStream** ppStream); typedef ma_aaudio_result_t (* MA_PFN_AAudioStreamBuilder_openStream) (ma_AAudioStreamBuilder* pBuilder, ma_AAudioStream** ppStream);
typedef ma_aaudio_result_t (* MA_PFN_AAudioStream_close) (ma_AAudioStream* pStream); typedef ma_aaudio_result_t (* MA_PFN_AAudioStream_close) (ma_AAudioStream* pStream);
typedef ma_aaudio_stream_state_t (* MA_PFN_AAudioStream_getState) (ma_AAudioStream* pStream); typedef ma_aaudio_stream_state_t (* MA_PFN_AAudioStream_getState) (ma_AAudioStream* pStream);
...@@ -37093,6 +37110,18 @@ static ma_aaudio_input_preset_t ma_to_input_preset__aaudio(ma_aaudio_input_prese ...@@ -37093,6 +37110,18 @@ static ma_aaudio_input_preset_t ma_to_input_preset__aaudio(ma_aaudio_input_prese
return MA_AAUDIO_INPUT_PRESET_GENERIC; return MA_AAUDIO_INPUT_PRESET_GENERIC;
} }
static ma_aaudio_allowed_capture_policy_t ma_to_allowed_capture_policy__aaudio(ma_aaudio_allowed_capture_policy allowedCapturePolicy)
{
switch (allowedCapturePolicy) {
case ma_aaudio_allow_capture_by_all: return MA_AAUDIO_ALLOW_CAPTURE_BY_ALL;
case ma_aaudio_allow_capture_by_system: return MA_AAUDIO_ALLOW_CAPTURE_BY_SYSTEM;
case ma_aaudio_allow_capture_by_none: return MA_AAUDIO_ALLOW_CAPTURE_BY_NONE;
default: break;
}
return MA_AAUDIO_ALLOW_CAPTURE_BY_ALL;
}
static void ma_stream_error_callback__aaudio(ma_AAudioStream* pStream, void* pUserData, ma_aaudio_result_t error) static void ma_stream_error_callback__aaudio(ma_AAudioStream* pStream, void* pUserData, ma_aaudio_result_t error)
{ {
ma_result result; ma_result result;
...@@ -37221,6 +37250,10 @@ static ma_result ma_create_and_configure_AAudioStreamBuilder__aaudio(ma_context* ...@@ -37221,6 +37250,10 @@ static ma_result ma_create_and_configure_AAudioStreamBuilder__aaudio(ma_context*
((MA_PFN_AAudioStreamBuilder_setContentType)pContext->aaudio.AAudioStreamBuilder_setContentType)(pBuilder, ma_to_content_type__aaudio(pConfig->aaudio.contentType)); ((MA_PFN_AAudioStreamBuilder_setContentType)pContext->aaudio.AAudioStreamBuilder_setContentType)(pBuilder, ma_to_content_type__aaudio(pConfig->aaudio.contentType));
} }
if (pConfig->aaudio.allowedCapturePolicy != ma_aaudio_allow_capture_default && pContext->aaudio.AAudioStreamBuilder_setAllowedCapturePolicy != NULL) {
((MA_PFN_AAudioStreamBuilder_setAllowedCapturePolicy)pContext->aaudio.AAudioStreamBuilder_setAllowedCapturePolicy)(pBuilder, ma_to_allowed_capture_policy__aaudio(pConfig->aaudio.allowedCapturePolicy));
}
((MA_PFN_AAudioStreamBuilder_setDataCallback)pContext->aaudio.AAudioStreamBuilder_setDataCallback)(pBuilder, ma_stream_data_callback_playback__aaudio, (void*)pDevice); ((MA_PFN_AAudioStreamBuilder_setDataCallback)pContext->aaudio.AAudioStreamBuilder_setDataCallback)(pBuilder, ma_stream_data_callback_playback__aaudio, (void*)pDevice);
} }
...@@ -37488,6 +37521,7 @@ static ma_result ma_device_init__aaudio(ma_device* pDevice, const ma_device_conf ...@@ -37488,6 +37521,7 @@ static ma_result ma_device_init__aaudio(ma_device* pDevice, const ma_device_conf
pDevice->aaudio.usage = pConfig->aaudio.usage; pDevice->aaudio.usage = pConfig->aaudio.usage;
pDevice->aaudio.contentType = pConfig->aaudio.contentType; pDevice->aaudio.contentType = pConfig->aaudio.contentType;
pDevice->aaudio.inputPreset = pConfig->aaudio.inputPreset; pDevice->aaudio.inputPreset = pConfig->aaudio.inputPreset;
pDevice->aaudio.allowedCapturePolicy = pConfig->aaudio.allowedCapturePolicy;
pDevice->aaudio.noAutoStartAfterReroute = pConfig->aaudio.noAutoStartAfterReroute; pDevice->aaudio.noAutoStartAfterReroute = pConfig->aaudio.noAutoStartAfterReroute;
if (pConfig->deviceType == ma_device_type_capture || pConfig->deviceType == ma_device_type_duplex) { if (pConfig->deviceType == ma_device_type_capture || pConfig->deviceType == ma_device_type_duplex) {
...@@ -37664,6 +37698,7 @@ static ma_result ma_device_reinit__aaudio(ma_device* pDevice, ma_device_type dev ...@@ -37664,6 +37698,7 @@ static ma_result ma_device_reinit__aaudio(ma_device* pDevice, ma_device_type dev
deviceConfig.aaudio.usage = pDevice->aaudio.usage; deviceConfig.aaudio.usage = pDevice->aaudio.usage;
deviceConfig.aaudio.contentType = pDevice->aaudio.contentType; deviceConfig.aaudio.contentType = pDevice->aaudio.contentType;
deviceConfig.aaudio.inputPreset = pDevice->aaudio.inputPreset; deviceConfig.aaudio.inputPreset = pDevice->aaudio.inputPreset;
deviceConfig.aaudio.allowedCapturePolicy = pDevice->aaudio.allowedCapturePolicy;
deviceConfig.aaudio.noAutoStartAfterReroute = pDevice->aaudio.noAutoStartAfterReroute; deviceConfig.aaudio.noAutoStartAfterReroute = pDevice->aaudio.noAutoStartAfterReroute;
deviceConfig.periods = 1; deviceConfig.periods = 1;
...@@ -37799,6 +37834,7 @@ static ma_result ma_context_init__aaudio(ma_context* pContext, const ma_context_ ...@@ -37799,6 +37834,7 @@ static ma_result ma_context_init__aaudio(ma_context* pContext, const ma_context_
pContext->aaudio.AAudioStreamBuilder_setUsage = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setUsage"); pContext->aaudio.AAudioStreamBuilder_setUsage = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setUsage");
pContext->aaudio.AAudioStreamBuilder_setContentType = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setContentType"); pContext->aaudio.AAudioStreamBuilder_setContentType = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setContentType");
pContext->aaudio.AAudioStreamBuilder_setInputPreset = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setInputPreset"); pContext->aaudio.AAudioStreamBuilder_setInputPreset = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setInputPreset");
pContext->aaudio.AAudioStreamBuilder_setAllowedCapturePolicy = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_setAllowedCapturePolicy");
pContext->aaudio.AAudioStreamBuilder_openStream = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_openStream"); pContext->aaudio.AAudioStreamBuilder_openStream = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStreamBuilder_openStream");
pContext->aaudio.AAudioStream_close = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStream_close"); pContext->aaudio.AAudioStream_close = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStream_close");
pContext->aaudio.AAudioStream_getState = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStream_getState"); pContext->aaudio.AAudioStream_getState = (ma_proc)ma_dlsym(pContext, pContext->aaudio.hAAudio, "AAudioStream_getState");
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment