Loading hal/audio_extn/utils.c +3 −0 Original line number Diff line number Diff line Loading @@ -436,6 +436,9 @@ void audio_extn_utils_update_stream_app_type_cfg(void *platform, if ((24 == bit_width) && (devices & AUDIO_DEVICE_OUT_SPEAKER)) { int32_t bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER); if (-ENOSYS != bw) bit_width = (uint32_t)bw; sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE; ALOGI("%s Allowing 24-bit playback on speaker ONLY at default sampling rate", __func__); } Loading hal/msm8916/platform.c +12 −0 Original line number Diff line number Diff line Loading @@ -1265,6 +1265,18 @@ int platform_get_snd_device_acdb_id(snd_device_t snd_device) return acdb_device_table[snd_device]; } int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_get_snd_device_bit_width(snd_device_t snd_device) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_send_audio_calibration(void *platform, snd_device_t snd_device, int app_type, int sample_rate) { Loading hal/msm8960/platform.c +12 −0 Original line number Diff line number Diff line Loading @@ -421,6 +421,18 @@ int platform_get_snd_device_acdb_id(snd_device_t snd_device __unused) return -ENOSYS; } int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_get_snd_device_bit_width(snd_device_t snd_device) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_switch_voice_call_enable_device_config(void *platform __unused, snd_device_t out_snd_device __unused, snd_device_t in_snd_device __unused) Loading hal/msm8974/platform.c +40 −5 Original line number Diff line number Diff line Loading @@ -319,6 +319,9 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE] = "speaker-dmic-broadside", }; // Platform specific backend bit width table static int backend_bit_width_table[SND_DEVICE_MAX] = {0}; /* ACDB IDs (audio DSP path configuration IDs) for each sound device */ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_NONE] = -1, Loading Loading @@ -778,6 +781,9 @@ static void set_platform_defaults() for (dev = 0; dev < SND_DEVICE_MAX; dev++) { backend_table[dev] = NULL; } for (dev = 0; dev < SND_DEVICE_MAX; dev++) { backend_bit_width_table[dev] = 16; } // TBD - do these go to the platform-info.xml file. // will help in avoiding strdups here Loading Loading @@ -1343,6 +1349,31 @@ int platform_get_snd_device_acdb_id(snd_device_t snd_device) return acdb_device_table[snd_device]; } int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width) { int ret = 0; if ((snd_device < SND_DEVICE_MIN) || (snd_device >= SND_DEVICE_MAX)) { ALOGE("%s: Invalid snd_device = %d", __func__, snd_device); ret = -EINVAL; goto done; } backend_bit_width_table[snd_device] = bit_width; done: return ret; } int platform_get_snd_device_bit_width(snd_device_t snd_device) { if ((snd_device < SND_DEVICE_MIN) || (snd_device >= SND_DEVICE_MAX)) { ALOGE("%s: Invalid snd_device = %d", __func__, snd_device); return DEFAULT_OUTPUT_SAMPLING_RATE; } return backend_bit_width_table[snd_device]; } int platform_send_audio_calibration(void *platform, snd_device_t snd_device, int app_type, int sample_rate) { Loading Loading @@ -2727,11 +2758,15 @@ bool platform_check_codec_backend_cfg(struct audio_device* adev, } } // 24 bit playback on speakers and all 16 bit playbacks is allowed through // 16 bit/48 khz backend only if ((16 == bit_width) || ((24 == bit_width) && (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER))) { // 16 bit playback on speakers is allowed through 48 khz backend only if (16 == bit_width) { sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE; } // 24 bit playback on speakers is allowed through 48 khz backend only // bit width re-configured based on platform info if ((24 == bit_width) && (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER)) { bit_width = (uint32_t)platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER); sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE; } // Force routing if the expected bitwdith or samplerate Loading hal/platform_api.h +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ int platform_set_fluence_type(void *platform, char *value); int platform_get_fluence_type(void *platform, char *value, uint32_t len); int platform_set_snd_device_acdb_id(snd_device_t snd_device, unsigned int acdb_id); int platform_get_snd_device_acdb_id(snd_device_t snd_device); int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width); int platform_get_snd_device_bit_width(snd_device_t snd_device); int platform_send_audio_calibration(void *platform, snd_device_t snd_device, int app_type, int sample_rate); int platform_get_default_app_type(void *platform); Loading Loading
hal/audio_extn/utils.c +3 −0 Original line number Diff line number Diff line Loading @@ -436,6 +436,9 @@ void audio_extn_utils_update_stream_app_type_cfg(void *platform, if ((24 == bit_width) && (devices & AUDIO_DEVICE_OUT_SPEAKER)) { int32_t bw = platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER); if (-ENOSYS != bw) bit_width = (uint32_t)bw; sample_rate = DEFAULT_OUTPUT_SAMPLING_RATE; ALOGI("%s Allowing 24-bit playback on speaker ONLY at default sampling rate", __func__); } Loading
hal/msm8916/platform.c +12 −0 Original line number Diff line number Diff line Loading @@ -1265,6 +1265,18 @@ int platform_get_snd_device_acdb_id(snd_device_t snd_device) return acdb_device_table[snd_device]; } int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_get_snd_device_bit_width(snd_device_t snd_device) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_send_audio_calibration(void *platform, snd_device_t snd_device, int app_type, int sample_rate) { Loading
hal/msm8960/platform.c +12 −0 Original line number Diff line number Diff line Loading @@ -421,6 +421,18 @@ int platform_get_snd_device_acdb_id(snd_device_t snd_device __unused) return -ENOSYS; } int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_get_snd_device_bit_width(snd_device_t snd_device) { ALOGE("%s: Not implemented", __func__); return -ENOSYS; } int platform_switch_voice_call_enable_device_config(void *platform __unused, snd_device_t out_snd_device __unused, snd_device_t in_snd_device __unused) Loading
hal/msm8974/platform.c +40 −5 Original line number Diff line number Diff line Loading @@ -319,6 +319,9 @@ static const char * const device_table[SND_DEVICE_MAX] = { [SND_DEVICE_IN_SPEAKER_DMIC_AEC_NS_BROADSIDE] = "speaker-dmic-broadside", }; // Platform specific backend bit width table static int backend_bit_width_table[SND_DEVICE_MAX] = {0}; /* ACDB IDs (audio DSP path configuration IDs) for each sound device */ static int acdb_device_table[SND_DEVICE_MAX] = { [SND_DEVICE_NONE] = -1, Loading Loading @@ -778,6 +781,9 @@ static void set_platform_defaults() for (dev = 0; dev < SND_DEVICE_MAX; dev++) { backend_table[dev] = NULL; } for (dev = 0; dev < SND_DEVICE_MAX; dev++) { backend_bit_width_table[dev] = 16; } // TBD - do these go to the platform-info.xml file. // will help in avoiding strdups here Loading Loading @@ -1343,6 +1349,31 @@ int platform_get_snd_device_acdb_id(snd_device_t snd_device) return acdb_device_table[snd_device]; } int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width) { int ret = 0; if ((snd_device < SND_DEVICE_MIN) || (snd_device >= SND_DEVICE_MAX)) { ALOGE("%s: Invalid snd_device = %d", __func__, snd_device); ret = -EINVAL; goto done; } backend_bit_width_table[snd_device] = bit_width; done: return ret; } int platform_get_snd_device_bit_width(snd_device_t snd_device) { if ((snd_device < SND_DEVICE_MIN) || (snd_device >= SND_DEVICE_MAX)) { ALOGE("%s: Invalid snd_device = %d", __func__, snd_device); return DEFAULT_OUTPUT_SAMPLING_RATE; } return backend_bit_width_table[snd_device]; } int platform_send_audio_calibration(void *platform, snd_device_t snd_device, int app_type, int sample_rate) { Loading Loading @@ -2727,11 +2758,15 @@ bool platform_check_codec_backend_cfg(struct audio_device* adev, } } // 24 bit playback on speakers and all 16 bit playbacks is allowed through // 16 bit/48 khz backend only if ((16 == bit_width) || ((24 == bit_width) && (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER))) { // 16 bit playback on speakers is allowed through 48 khz backend only if (16 == bit_width) { sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE; } // 24 bit playback on speakers is allowed through 48 khz backend only // bit width re-configured based on platform info if ((24 == bit_width) && (usecase->stream.out->devices & AUDIO_DEVICE_OUT_SPEAKER)) { bit_width = (uint32_t)platform_get_snd_device_bit_width(SND_DEVICE_OUT_SPEAKER); sample_rate = CODEC_BACKEND_DEFAULT_SAMPLE_RATE; } // Force routing if the expected bitwdith or samplerate Loading
hal/platform_api.h +2 −0 Original line number Diff line number Diff line Loading @@ -36,6 +36,8 @@ int platform_set_fluence_type(void *platform, char *value); int platform_get_fluence_type(void *platform, char *value, uint32_t len); int platform_set_snd_device_acdb_id(snd_device_t snd_device, unsigned int acdb_id); int platform_get_snd_device_acdb_id(snd_device_t snd_device); int platform_set_snd_device_bit_width(snd_device_t snd_device, unsigned int bit_width); int platform_get_snd_device_bit_width(snd_device_t snd_device); int platform_send_audio_calibration(void *platform, snd_device_t snd_device, int app_type, int sample_rate); int platform_get_default_app_type(void *platform); Loading