Loading hal/audio_hw.c +53 −1 Original line number Diff line number Diff line Loading @@ -2137,6 +2137,50 @@ static int check_input_parameters(uint32_t sample_rate, return 0; } /** Add a value in a list if not already present. * @return true if value was successfully inserted or already present, * false if the list is full and does not contain the value. */ static bool register_uint(uint32_t value, uint32_t* list, size_t list_length) { for (size_t i = 0; i < list_length; i++) { if (list[i] == value) return true; // value is already present if (list[i] == 0) { // no values in this slot list[i] = value; return true; // value inserted } } return false; // could not insert value } /** Add channel_mask in supported_channel_masks if not already present. * @return true if channel_mask was successfully inserted or already present, * false if supported_channel_masks is full and does not contain channel_mask. */ static void register_channel_mask(audio_channel_mask_t channel_mask, audio_channel_mask_t supported_channel_masks[static MAX_SUPPORTED_CHANNEL_MASKS]) { ALOGE_IF(!register_uint(channel_mask, supported_channel_masks, MAX_SUPPORTED_CHANNEL_MASKS), "%s: stream can not declare supporting its channel_mask %x", __func__, channel_mask); } /** Add format in supported_formats if not already present. * @return true if format was successfully inserted or already present, * false if supported_formats is full and does not contain format. */ static void register_format(audio_format_t format, audio_format_t supported_formats[static MAX_SUPPORTED_FORMATS]) { ALOGE_IF(!register_uint(format, supported_formats, MAX_SUPPORTED_FORMATS), "%s: stream can not declare supporting its format %x", __func__, format); } /** Add sample_rate in supported_sample_rates if not already present. * @return true if sample_rate was successfully inserted or already present, * false if supported_sample_rates is full and does not contain sample_rate. */ static void register_sample_rate(uint32_t sample_rate, uint32_t supported_sample_rates[static MAX_SUPPORTED_SAMPLE_RATES]) { ALOGE_IF(!register_uint(sample_rate, supported_sample_rates, MAX_SUPPORTED_SAMPLE_RATES), "%s: stream can not declare supporting its sample rate %x", __func__, sample_rate); } static size_t get_stream_buffer_size(size_t duration_ms, uint32_t sample_rate, audio_format_t format, Loading Loading @@ -4008,7 +4052,6 @@ static int adev_open_output_stream(struct audio_hw_device *dev, out->flags = flags; out->devices = devices; out->dev = adev; out->supported_channel_masks[0] = AUDIO_CHANNEL_OUT_STEREO; out->handle = handle; out->a2dp_compress_mute = false; Loading Loading @@ -4435,6 +4478,10 @@ static int adev_open_output_stream(struct audio_hw_device *dev, config->channel_mask = out->stream.common.get_channels(&out->stream.common); config->sample_rate = out->stream.common.get_sample_rate(&out->stream.common); register_format(out->format, out->supported_formats); register_channel_mask(out->channel_mask, out->supported_channel_masks); register_sample_rate(out->sample_rate, out->supported_sample_rates); out->error_log = error_log_create( ERROR_LOG_ENTRIES, 1000000000 /* aggregate consecutive identical errors within one second in ns */); Loading Loading @@ -5024,6 +5071,11 @@ static int adev_open_input_stream(struct audio_hw_device *dev, in->config.channels = channel_count; in->sample_rate = in->config.rate; register_format(in->format, in->supported_formats); register_channel_mask(in->channel_mask, in->supported_channel_masks); register_sample_rate(in->sample_rate, in->supported_sample_rates); in->error_log = error_log_create( ERROR_LOG_ENTRIES, NANOS_PER_SECOND /* aggregate consecutive identical errors within one second */); Loading Loading
hal/audio_hw.c +53 −1 Original line number Diff line number Diff line Loading @@ -2137,6 +2137,50 @@ static int check_input_parameters(uint32_t sample_rate, return 0; } /** Add a value in a list if not already present. * @return true if value was successfully inserted or already present, * false if the list is full and does not contain the value. */ static bool register_uint(uint32_t value, uint32_t* list, size_t list_length) { for (size_t i = 0; i < list_length; i++) { if (list[i] == value) return true; // value is already present if (list[i] == 0) { // no values in this slot list[i] = value; return true; // value inserted } } return false; // could not insert value } /** Add channel_mask in supported_channel_masks if not already present. * @return true if channel_mask was successfully inserted or already present, * false if supported_channel_masks is full and does not contain channel_mask. */ static void register_channel_mask(audio_channel_mask_t channel_mask, audio_channel_mask_t supported_channel_masks[static MAX_SUPPORTED_CHANNEL_MASKS]) { ALOGE_IF(!register_uint(channel_mask, supported_channel_masks, MAX_SUPPORTED_CHANNEL_MASKS), "%s: stream can not declare supporting its channel_mask %x", __func__, channel_mask); } /** Add format in supported_formats if not already present. * @return true if format was successfully inserted or already present, * false if supported_formats is full and does not contain format. */ static void register_format(audio_format_t format, audio_format_t supported_formats[static MAX_SUPPORTED_FORMATS]) { ALOGE_IF(!register_uint(format, supported_formats, MAX_SUPPORTED_FORMATS), "%s: stream can not declare supporting its format %x", __func__, format); } /** Add sample_rate in supported_sample_rates if not already present. * @return true if sample_rate was successfully inserted or already present, * false if supported_sample_rates is full and does not contain sample_rate. */ static void register_sample_rate(uint32_t sample_rate, uint32_t supported_sample_rates[static MAX_SUPPORTED_SAMPLE_RATES]) { ALOGE_IF(!register_uint(sample_rate, supported_sample_rates, MAX_SUPPORTED_SAMPLE_RATES), "%s: stream can not declare supporting its sample rate %x", __func__, sample_rate); } static size_t get_stream_buffer_size(size_t duration_ms, uint32_t sample_rate, audio_format_t format, Loading Loading @@ -4008,7 +4052,6 @@ static int adev_open_output_stream(struct audio_hw_device *dev, out->flags = flags; out->devices = devices; out->dev = adev; out->supported_channel_masks[0] = AUDIO_CHANNEL_OUT_STEREO; out->handle = handle; out->a2dp_compress_mute = false; Loading Loading @@ -4435,6 +4478,10 @@ static int adev_open_output_stream(struct audio_hw_device *dev, config->channel_mask = out->stream.common.get_channels(&out->stream.common); config->sample_rate = out->stream.common.get_sample_rate(&out->stream.common); register_format(out->format, out->supported_formats); register_channel_mask(out->channel_mask, out->supported_channel_masks); register_sample_rate(out->sample_rate, out->supported_sample_rates); out->error_log = error_log_create( ERROR_LOG_ENTRIES, 1000000000 /* aggregate consecutive identical errors within one second in ns */); Loading Loading @@ -5024,6 +5071,11 @@ static int adev_open_input_stream(struct audio_hw_device *dev, in->config.channels = channel_count; in->sample_rate = in->config.rate; register_format(in->format, in->supported_formats); register_channel_mask(in->channel_mask, in->supported_channel_masks); register_sample_rate(in->sample_rate, in->supported_sample_rates); in->error_log = error_log_create( ERROR_LOG_ENTRIES, NANOS_PER_SECOND /* aggregate consecutive identical errors within one second */); Loading