diff options
Diffstat (limited to 'audio_out.c')
-rw-r--r-- | audio_out.c | 105 |
1 files changed, 52 insertions, 53 deletions
diff --git a/audio_out.c b/audio_out.c index 8a8814c..ca605f4 100644 --- a/audio_out.c +++ b/audio_out.c @@ -52,7 +52,7 @@ int audio_out_pcm_open(struct tinyalsa_audio_stream_out *stream_out) return -1; memset(&pcm_config, 0, sizeof(pcm_config)); - pcm_config.channels = popcount(stream_out->mixer_props->channels); + pcm_config.channels = popcount(stream_out->mixer_props->channel_mask); pcm_config.rate = stream_out->mixer_props->rate; switch(stream_out->mixer_props->format) { case AUDIO_FORMAT_PCM_16_BIT: @@ -62,7 +62,7 @@ int audio_out_pcm_open(struct tinyalsa_audio_stream_out *stream_out) pcm_config.format = PCM_FORMAT_S32_LE; break; default: - LOGE("Invalid format: 0x%x", stream_out->mixer_props->format); + ALOGE("Invalid format: 0x%x", stream_out->mixer_props->format); return -1; } pcm_config.period_size = stream_out->mixer_props->period_size; @@ -72,7 +72,7 @@ int audio_out_pcm_open(struct tinyalsa_audio_stream_out *stream_out) stream_out->mixer_props->device, PCM_OUT, &pcm_config); if(pcm == NULL || !pcm_is_ready(pcm)) { - LOGE("Unable to open pcm device: %s", pcm_get_error(pcm)); + ALOGE("Unable to open pcm device: %s", pcm_get_error(pcm)); return -1; } @@ -126,12 +126,12 @@ int audio_out_resampler_open(struct tinyalsa_audio_stream_out *stream_out) rc = create_resampler(stream_out->rate, stream_out->mixer_props->rate, - popcount(stream_out->channels), + popcount(stream_out->channel_mask), RESAMPLER_QUALITY_DEFAULT, NULL, &stream_out->resampler); if(rc < 0 || stream_out->resampler == NULL) { - LOGE("Failed to create resampler"); + ALOGE("Failed to create resampler"); return -1; } @@ -195,13 +195,13 @@ int audio_out_write_process(struct tinyalsa_audio_stream_out *stream_out, void * goto error; //FIXME: This is only for PCM 16 - if(popcount(stream_out->mixer_props->channels) < popcount(stream_out->channels)) { + if(popcount(stream_out->mixer_props->channel_mask) < popcount(stream_out->channel_mask)) { frames_out_channels = frames_in; - size_out_channels = frames_out_channels * popcount(stream_out->mixer_props->channels) * audio_bytes_per_sample(stream_out->mixer_props->format); + size_out_channels = frames_out_channels * popcount(stream_out->mixer_props->channel_mask) * audio_bytes_per_sample(stream_out->mixer_props->format); buffer_out_channels = calloc(1, size_out_channels); - int channels_count_in = popcount(stream_out->channels); - int channels_count_out = popcount(stream_out->mixer_props->channels); + int channels_count_in = popcount(stream_out->channel_mask); + int channels_count_out = popcount(stream_out->mixer_props->channel_mask); int ratio = channels_count_in / channels_count_out; int16_t *byte_in = (int16_t *) buffer_in; @@ -222,20 +222,20 @@ int audio_out_write_process(struct tinyalsa_audio_stream_out *stream_out, void * frames_in = frames_out_channels; size_in = size_out_channels; buffer_in = buffer_out_channels; - } else if(popcount(stream_out->channels) != popcount(stream_out->mixer_props->channels)) { - LOGE("Asked for more channels than software can provide!"); + } else if(popcount(stream_out->channel_mask) != popcount(stream_out->mixer_props->channel_mask)) { + ALOGE("Asked for more channels than software can provide!"); goto error; } if(buffer_in != NULL) { if(stream_out->pcm == NULL || !pcm_is_ready(stream_out->pcm)) { - LOGE("pcm device is not ready"); + ALOGE("pcm device is not ready"); goto error; } rc = pcm_write(stream_out->pcm, buffer_in, size_in); if(rc != 0) { - LOGE("pcm write failed!"); + ALOGE("pcm write failed!"); goto error; } } @@ -272,7 +272,7 @@ static int audio_out_set_sample_rate(struct audio_stream *stream, uint32_t rate) { struct tinyalsa_audio_stream_out *stream_out; - LOGD("%s(%p, %d)", __func__, stream, rate); + ALOGD("%s(%p, %d)", __func__, stream, rate); if(stream == NULL) return -1; @@ -315,7 +315,7 @@ static size_t audio_out_get_buffer_size(const struct audio_stream *stream) return size; } -static uint32_t audio_out_get_channels(const struct audio_stream *stream) +static audio_channel_mask_t audio_out_get_channels(const struct audio_stream *stream) { struct tinyalsa_audio_stream_out *stream_out; @@ -324,10 +324,10 @@ static uint32_t audio_out_get_channels(const struct audio_stream *stream) stream_out = (struct tinyalsa_audio_stream_out *) stream; - return stream_out->channels; + return stream_out->channel_mask; } -static int audio_out_get_format(const struct audio_stream *stream) +static audio_format_t audio_out_get_format(const struct audio_stream *stream) { struct tinyalsa_audio_stream_out *stream_out; @@ -339,11 +339,11 @@ static int audio_out_get_format(const struct audio_stream *stream) return stream_out->format; } -static int audio_out_set_format(struct audio_stream *stream, int format) +static int audio_out_set_format(struct audio_stream *stream, audio_format_t format) { struct tinyalsa_audio_stream_out *stream_out; - LOGD("%s(%p, %d)", __func__, stream, format); + ALOGD("%s(%p, %d)", __func__, stream, format); if(stream == NULL) return -1; @@ -369,7 +369,7 @@ static int audio_out_standby(struct audio_stream *stream) struct tinyalsa_audio_stream_out *stream_out; int rc; - LOGD("%s(%p)", __func__, stream); + ALOGD("%s(%p)", __func__, stream); if(stream == NULL) return -1; @@ -385,7 +385,7 @@ static int audio_out_standby(struct audio_stream *stream) if(!stream_out->standby) { rc = yamaha_mc1n2_audio_output_stop(stream_out->device->mc1n2_pdata); if(rc < 0) { - LOGE("Failed to set Yamaha-MC1N2-Audio route"); + ALOGE("Failed to set Yamaha-MC1N2-Audio route"); } } #endif @@ -399,7 +399,7 @@ static int audio_out_standby(struct audio_stream *stream) static int audio_out_dump(const struct audio_stream *stream, int fd) { - LOGD("%s(%p, %d)", __func__, stream, fd); + ALOGD("%s(%p, %d)", __func__, stream, fd); return 0; } @@ -412,7 +412,7 @@ static int audio_out_set_parameters(struct audio_stream *stream, const char *kvp int value; int rc; - LOGD("%s(%p, %s)", __func__, stream, kvpairs); + ALOGD("%s(%p, %s)", __func__, stream, kvpairs); if(stream == NULL || kvpairs == NULL) return -1; @@ -457,7 +457,7 @@ error_params: static char *audio_out_get_parameters(const struct audio_stream *stream, const char *keys) { - LOGD("%s(%p, %s)", __func__, stream, keys); + ALOGD("%s(%p, %s)", __func__, stream, keys); return strdup(""); } @@ -467,8 +467,6 @@ static uint32_t audio_out_get_latency(const struct audio_stream_out *stream) struct tinyalsa_audio_stream_out *stream_out; uint32_t latency; - LOGD("%s(%p)", __func__, stream); - if(stream == NULL) return -1; @@ -487,7 +485,7 @@ static int audio_out_set_volume(struct audio_stream_out *stream, float left, struct tinyalsa_audio_stream_out *stream_out; float volume; - LOGD("%s(%p, %f, %f)", __func__, stream, left, right); + ALOGD("%s(%p, %f, %f)", __func__, stream, left, right); if(stream == NULL) return -1; @@ -527,13 +525,13 @@ static ssize_t audio_out_write(struct audio_stream_out *stream, #ifdef YAMAHA_MC1N2_AUDIO rc = yamaha_mc1n2_audio_output_start(stream_out->device->mc1n2_pdata); if(rc < 0) { - LOGE("Failed to set Yamaha-MC1N2-Audio route"); + ALOGE("Failed to set Yamaha-MC1N2-Audio route"); } #endif rc = audio_out_pcm_open(stream_out); if(rc < 0) { - LOGE("Unable to open pcm device"); + ALOGE("Unable to open pcm device"); goto error; } @@ -542,7 +540,7 @@ static ssize_t audio_out_write(struct audio_stream_out *stream, rc = audio_out_write_process(stream_out, (void *) buffer, (int) bytes); if(rc < 0) { - LOGE("Process and write failed!"); + ALOGE("Process and write failed!"); goto error; } @@ -559,21 +557,21 @@ error: static int audio_out_get_render_position(const struct audio_stream_out *stream, uint32_t *dsp_frames) { - LOGD("%s(%p, %p)", __func__, stream, dsp_frames); + ALOGD("%s(%p, %p)", __func__, stream, dsp_frames); return -EINVAL; } static int audio_out_add_audio_effect(const struct audio_stream *stream, effect_handle_t effect) { - LOGD("%s(%p, %p)", __func__, stream, effect); + ALOGD("%s(%p, %p)", __func__, stream, effect); return 0; } static int audio_out_remove_audio_effect(const struct audio_stream *stream, effect_handle_t effect) { - LOGD("%s(%p, %p)", __func__, stream, effect); + ALOGD("%s(%p, %p)", __func__, stream, effect); return 0; } @@ -588,7 +586,7 @@ void audio_hw_close_output_stream(struct audio_hw_device *dev, struct tinyalsa_audio_stream_out *stream_out; struct tinyalsa_audio_device *tinyalsa_audio_device; - LOGD("%s(%p)", __func__, stream); + ALOGD("%s(%p)", __func__, stream); stream_out = (struct tinyalsa_audio_stream_out *) stream; @@ -617,7 +615,8 @@ void audio_hw_close_output_stream(struct audio_hw_device *dev, } int audio_hw_open_output_stream(struct audio_hw_device *dev, - uint32_t devices, int *format, uint32_t *channels, uint32_t *sample_rate, + audio_io_handle_t handle, audio_devices_t devices, + audio_output_flags_t flags, struct audio_config *config, struct audio_stream_out **stream_out) { struct tinyalsa_audio_device *tinyalsa_audio_device; @@ -625,10 +624,10 @@ int audio_hw_open_output_stream(struct audio_hw_device *dev, struct audio_stream_out *stream; int rc; - LOGD("%s(%p, %d, %p, %p, %p, %p)", - __func__, dev, devices, format, channels, sample_rate, stream_out); + ALOGD("%s(%p, %d, %p, %p)", + __func__, dev, devices, config, stream_out); - if(dev == NULL || format == NULL || channels == NULL || sample_rate == NULL || stream_out == NULL) + if(dev == NULL || config == NULL || stream_out == NULL) return -EINVAL; tinyalsa_audio_device = (struct tinyalsa_audio_device *) dev; @@ -670,42 +669,42 @@ int audio_hw_open_output_stream(struct audio_hw_device *dev, // Default values if(tinyalsa_audio_stream_out->mixer_props->rate == 0) tinyalsa_audio_stream_out->mixer_props->rate = 44100; - if(tinyalsa_audio_stream_out->mixer_props->channels == 0) - tinyalsa_audio_stream_out->mixer_props->channels = AUDIO_CHANNEL_OUT_STEREO; + if(tinyalsa_audio_stream_out->mixer_props->channel_mask == 0) + tinyalsa_audio_stream_out->mixer_props->channel_mask = AUDIO_CHANNEL_OUT_STEREO; if(tinyalsa_audio_stream_out->mixer_props->format == 0) tinyalsa_audio_stream_out->mixer_props->format = AUDIO_FORMAT_PCM_16_BIT; //Default incoming data will always be 44100Hz, stereo, PCM 16 - if(*sample_rate == 0) + if(config->sample_rate == 0) tinyalsa_audio_stream_out->rate = 44100; else - tinyalsa_audio_stream_out->rate = *sample_rate; - if(*channels == 0) - tinyalsa_audio_stream_out->channels = AUDIO_CHANNEL_OUT_STEREO; + tinyalsa_audio_stream_out->rate = config->sample_rate; + if(config->channel_mask == 0) + tinyalsa_audio_stream_out->channel_mask = AUDIO_CHANNEL_OUT_STEREO; else - tinyalsa_audio_stream_out->channels = *channels; - if(*format == 0) + tinyalsa_audio_stream_out->channel_mask = config->channel_mask; + if(config->format == 0) tinyalsa_audio_stream_out->format = AUDIO_FORMAT_PCM_16_BIT; else - tinyalsa_audio_stream_out->format = *format; + tinyalsa_audio_stream_out->format = config->format; if(tinyalsa_audio_stream_out->rate != tinyalsa_audio_stream_out->mixer_props->rate) { rc = audio_out_resampler_open(tinyalsa_audio_stream_out); if(rc < 0) { - LOGE("Unable to open resampler!"); + ALOGE("Unable to open resampler!"); goto error_stream; } } - *sample_rate = (uint32_t) tinyalsa_audio_stream_out->rate; - *channels = (uint32_t) tinyalsa_audio_stream_out->channels; - *format = (uint32_t) tinyalsa_audio_stream_out->format; + config->sample_rate = (uint32_t) tinyalsa_audio_stream_out->rate; + config->channel_mask = (uint32_t) tinyalsa_audio_stream_out->channel_mask; + config->format = (uint32_t) tinyalsa_audio_stream_out->format; pthread_mutex_lock(&tinyalsa_audio_device->lock); rc = tinyalsa_mixer_set_output_state(tinyalsa_audio_device->mixer, 1); if(rc < 0) { - LOGE("Unable to set output state"); + ALOGE("Unable to set output state"); pthread_mutex_unlock(&tinyalsa_audio_device->lock); goto error_stream; } @@ -718,7 +717,7 @@ int audio_hw_open_output_stream(struct audio_hw_device *dev, rc = audio_out_pcm_open(tinyalsa_audio_stream_out); if(rc < 0) { - LOGE("Unable to open pcm device"); + ALOGE("Unable to open pcm device"); pthread_mutex_unlock(&tinyalsa_audio_stream_out->lock); goto error_stream; } |