Skip to content

Commit

Permalink
audio: add get_micropones() function
Browse files Browse the repository at this point in the history
The Google VTS tests for Android VtsHalAudioV5_0Target(GetMicrophonesTest)
needs to use pointer of function (*get_micropones)() which is not initialized
and function adev_get_microphones() required for initialization witch is
not implemented in tinyhal.

The analysis of the implementation of the audio hal for Qualcomm
(https://android.googlesource.com/platform/hardware/qcom/audio/+/refs/heads/
master/hal/audio_hw.c) and Goldfish
(https://android.googlesource.com/device/generic/goldfish/+/dc18a59%5E%21/)
have been made. The implementation similar to Goldfish(stub) has been chosen as
basic.

Function adev_get_microphones() was implemented as stub function that will
expand in the future. This function fill array audio_microphone_characteristic_t
with default microphone information.

Signed-off-by: Anton Dehtiarov <[email protected]>
  • Loading branch information
AntonDehtiarov committed Sep 29, 2020
1 parent 5f03d4a commit bfb0a28
Showing 1 changed file with 48 additions and 0 deletions.
48 changes: 48 additions & 0 deletions audio/audio_hw.c
Original file line number Diff line number Diff line change
Expand Up @@ -2036,6 +2036,50 @@ static int do_init_in_pcm(struct stream_in_pcm *in,
return 0;
}

#ifdef AUDIO_DEVICE_API_VERSION_5_0
static int adev_get_microphones(const struct audio_hw_device *dev,
struct audio_microphone_characteristic_t *mic_array,
size_t *mic_count)
{
if (mic_count == NULL) {
return -ENOSYS;
}

if (*mic_count == 0) {
*mic_count = 1;
return 0;
}

if (mic_array == NULL) {
return -ENOSYS;
}

strncpy(mic_array->device_id, "mic_generic", AUDIO_MICROPHONE_ID_MAX_LEN - 1);
mic_array->device = AUDIO_DEVICE_IN_BUILTIN_MIC;
strncpy(mic_array->address, AUDIO_BOTTOM_MICROPHONE_ADDRESS,
AUDIO_DEVICE_MAX_ADDRESS_LEN - 1);
memset(mic_array->channel_mapping, AUDIO_MICROPHONE_CHANNEL_MAPPING_UNUSED,
sizeof(mic_array->channel_mapping));
mic_array->location = AUDIO_MICROPHONE_LOCATION_UNKNOWN;
mic_array->group = 0;
mic_array->index_in_the_group = 0;
mic_array->sensitivity = AUDIO_MICROPHONE_SENSITIVITY_UNKNOWN;
mic_array->max_spl = AUDIO_MICROPHONE_SPL_UNKNOWN;
mic_array->min_spl = AUDIO_MICROPHONE_SPL_UNKNOWN;
mic_array->directionality = AUDIO_MICROPHONE_DIRECTIONALITY_UNKNOWN;
mic_array->num_frequency_responses = 0;
mic_array->geometric_location.x = AUDIO_MICROPHONE_COORDINATE_UNKNOWN;
mic_array->geometric_location.y = AUDIO_MICROPHONE_COORDINATE_UNKNOWN;
mic_array->geometric_location.z = AUDIO_MICROPHONE_COORDINATE_UNKNOWN;
mic_array->orientation.x = AUDIO_MICROPHONE_COORDINATE_UNKNOWN;
mic_array->orientation.y = AUDIO_MICROPHONE_COORDINATE_UNKNOWN;
mic_array->orientation.z = AUDIO_MICROPHONE_COORDINATE_UNKNOWN;

*mic_count = 1;
return 0;
}
#endif

/*********************************************************************
* Stream open and close
*********************************************************************/
Expand Down Expand Up @@ -2344,6 +2388,10 @@ static int adev_open(const hw_module_t *module, const char *name,
adev->hw_device.close_input_stream = adev_close_input_stream;
adev->hw_device.dump = adev_dump;

#ifdef AUDIO_DEVICE_API_VERSION_5_0
adev->hw_device.get_microphones = adev_get_microphones;
#endif

property_get("ro.product.device", property, "generic");
snprintf(file_name, sizeof(file_name), "%s/audio.%s.xml", ETC_PATH, property);

Expand Down

0 comments on commit bfb0a28

Please sign in to comment.