Loading hal/audio_hw.c +26 −2 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ #include "voice_extn.h" #include "sound/compress_params.h" #define MAX_COMPRESS_OFFLOAD_FRAGMENT_SIZE (256 * 1024) #define MIN_COMPRESS_OFFLOAD_FRAGMENT_SIZE (8 * 1024) #define COMPRESS_OFFLOAD_FRAGMENT_SIZE (32 * 1024) #define COMPRESS_OFFLOAD_NUM_FRAGMENTS 4 /* ToDo: Check and update a proper value in msec */ Loading Loading @@ -150,6 +151,7 @@ static pthread_mutex_t adev_init_lock; static unsigned int audio_device_ref_count; static int set_voice_volume_l(struct audio_device *adev, float volume); static uint32_t get_offload_buffer_size(); static bool is_supported_format(audio_format_t format) { Loading Loading @@ -2089,7 +2091,7 @@ static int adev_open_output_stream(struct audio_hw_device *dev, else out->compr_config.codec->id = get_snd_codec_id(config->offload_info.format); out->compr_config.fragment_size = COMPRESS_OFFLOAD_FRAGMENT_SIZE; out->compr_config.fragment_size = get_offload_buffer_size(); out->compr_config.fragments = COMPRESS_OFFLOAD_NUM_FRAGMENTS; out->compr_config.codec->sample_rate = compress_get_alsa_rate(config->offload_info.sample_rate); Loading Loading @@ -2648,6 +2650,28 @@ static int adev_open(const hw_module_t *module, const char *name, return 0; } /* Read offload buffer size from a property. * If value is not power of 2 round it to * power of 2. */ static uint32_t get_offload_buffer_size() { char value[PROPERTY_VALUE_MAX] = {0}; uint32_t fragment_size = COMPRESS_OFFLOAD_FRAGMENT_SIZE; if((property_get("audio.offload.buffer.size.kb", value, "")) && atoi(value)) { fragment_size = atoi(value) * 1024; //ring buffer size needs to be 4k aligned. CHECK(!(fragment_size * COMPRESS_OFFLOAD_NUM_FRAGMENTS % 4096)); } if(fragment_size < MIN_COMPRESS_OFFLOAD_FRAGMENT_SIZE) fragment_size = MIN_COMPRESS_OFFLOAD_FRAGMENT_SIZE; else if(fragment_size > MAX_COMPRESS_OFFLOAD_FRAGMENT_SIZE) fragment_size = MAX_COMPRESS_OFFLOAD_FRAGMENT_SIZE; ALOGVV("%s: fragment_size %d", __func__, fragment_size); return fragment_size; } static struct hw_module_methods_t hal_module_methods = { .open = adev_open, }; Loading hal/audio_hw.h +6 −0 Original line number Diff line number Diff line Loading @@ -250,6 +250,12 @@ int enable_audio_route(struct audio_device *adev, bool update_mixer); struct audio_usecase *get_usecase_from_list(struct audio_device *adev, audio_usecase_t uc_id); #define LITERAL_TO_STRING(x) #x #define CHECK(condition) LOG_ALWAYS_FATAL_IF(!(condition), "%s",\ __FILE__ ":" LITERAL_TO_STRING(__LINE__)\ " ASSERT_FATAL(" #condition ") failed.") /* * NOTE: when multiple mutexes have to be acquired, always take the * stream_in or stream_out mutex first, followed by the audio_device mutex. Loading hal/msm8974/hw_info.c +0 −5 Original line number Diff line number Diff line Loading @@ -51,11 +51,6 @@ struct hardware_info { #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) #define LITERAL_TO_STRING(x) #x #define CHECK(condition) LOG_ALWAYS_FATAL_IF(!(condition), "%s",\ __FILE__ ":" LITERAL_TO_STRING(__LINE__)\ " ASSERT_FATAL(" #condition ") failed.") static const snd_device_t taiko_fluid_variant_devices[] = { SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES, Loading Loading
hal/audio_hw.c +26 −2 Original line number Diff line number Diff line Loading @@ -53,7 +53,8 @@ #include "voice_extn.h" #include "sound/compress_params.h" #define MAX_COMPRESS_OFFLOAD_FRAGMENT_SIZE (256 * 1024) #define MIN_COMPRESS_OFFLOAD_FRAGMENT_SIZE (8 * 1024) #define COMPRESS_OFFLOAD_FRAGMENT_SIZE (32 * 1024) #define COMPRESS_OFFLOAD_NUM_FRAGMENTS 4 /* ToDo: Check and update a proper value in msec */ Loading Loading @@ -150,6 +151,7 @@ static pthread_mutex_t adev_init_lock; static unsigned int audio_device_ref_count; static int set_voice_volume_l(struct audio_device *adev, float volume); static uint32_t get_offload_buffer_size(); static bool is_supported_format(audio_format_t format) { Loading Loading @@ -2089,7 +2091,7 @@ static int adev_open_output_stream(struct audio_hw_device *dev, else out->compr_config.codec->id = get_snd_codec_id(config->offload_info.format); out->compr_config.fragment_size = COMPRESS_OFFLOAD_FRAGMENT_SIZE; out->compr_config.fragment_size = get_offload_buffer_size(); out->compr_config.fragments = COMPRESS_OFFLOAD_NUM_FRAGMENTS; out->compr_config.codec->sample_rate = compress_get_alsa_rate(config->offload_info.sample_rate); Loading Loading @@ -2648,6 +2650,28 @@ static int adev_open(const hw_module_t *module, const char *name, return 0; } /* Read offload buffer size from a property. * If value is not power of 2 round it to * power of 2. */ static uint32_t get_offload_buffer_size() { char value[PROPERTY_VALUE_MAX] = {0}; uint32_t fragment_size = COMPRESS_OFFLOAD_FRAGMENT_SIZE; if((property_get("audio.offload.buffer.size.kb", value, "")) && atoi(value)) { fragment_size = atoi(value) * 1024; //ring buffer size needs to be 4k aligned. CHECK(!(fragment_size * COMPRESS_OFFLOAD_NUM_FRAGMENTS % 4096)); } if(fragment_size < MIN_COMPRESS_OFFLOAD_FRAGMENT_SIZE) fragment_size = MIN_COMPRESS_OFFLOAD_FRAGMENT_SIZE; else if(fragment_size > MAX_COMPRESS_OFFLOAD_FRAGMENT_SIZE) fragment_size = MAX_COMPRESS_OFFLOAD_FRAGMENT_SIZE; ALOGVV("%s: fragment_size %d", __func__, fragment_size); return fragment_size; } static struct hw_module_methods_t hal_module_methods = { .open = adev_open, }; Loading
hal/audio_hw.h +6 −0 Original line number Diff line number Diff line Loading @@ -250,6 +250,12 @@ int enable_audio_route(struct audio_device *adev, bool update_mixer); struct audio_usecase *get_usecase_from_list(struct audio_device *adev, audio_usecase_t uc_id); #define LITERAL_TO_STRING(x) #x #define CHECK(condition) LOG_ALWAYS_FATAL_IF(!(condition), "%s",\ __FILE__ ":" LITERAL_TO_STRING(__LINE__)\ " ASSERT_FATAL(" #condition ") failed.") /* * NOTE: when multiple mutexes have to be acquired, always take the * stream_in or stream_out mutex first, followed by the audio_device mutex. Loading
hal/msm8974/hw_info.c +0 −5 Original line number Diff line number Diff line Loading @@ -51,11 +51,6 @@ struct hardware_info { #define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0])) #define LITERAL_TO_STRING(x) #x #define CHECK(condition) LOG_ALWAYS_FATAL_IF(!(condition), "%s",\ __FILE__ ":" LITERAL_TO_STRING(__LINE__)\ " ASSERT_FATAL(" #condition ") failed.") static const snd_device_t taiko_fluid_variant_devices[] = { SND_DEVICE_OUT_SPEAKER, SND_DEVICE_OUT_SPEAKER_AND_HEADPHONES, Loading