diff options
Diffstat (limited to 'audio_in.c')
-rw-r--r-- | audio_in.c | 27 |
1 files changed, 12 insertions, 15 deletions
@@ -95,22 +95,11 @@ int audio_in_set_route(struct tinyalsa_audio_stream_in *stream_in, stream_in->device_current = device; - if(device == 0) { - tinyalsa_mixer_set_route(stream_in->device->mixer, - AUDIO_DEVICE_IN_DEFAULT, stream_in->device->mode); + if(device == 0) + return stream_in->stream.common.standby((struct audio_stream *) stream_in); - rc = yamaha_mc1n2_audio_input_stop(stream_in->device->mc1n2_pdata); - if(rc < 0) { - LOGE("Failed to set Yamaha-MC1N2-Audio route"); - } - - stream_in->standby = 1; - - return 0; - } - tinyalsa_mixer_set_route(stream_in->device->mixer, - stream_in->device_current, stream_in->device->mode); + tinyalsa_mixer_set_device(stream_in->device->mixer, stream_in->device_current); #ifdef YAMAHA_MC1N2_AUDIO yamaha_mc1n2_audio_set_route(stream_in->device->mc1n2_pdata, device, @@ -308,7 +297,7 @@ static int audio_in_set_gain(struct audio_stream_in *stream, float gain) return -1; tinyalsa_mixer_set_input_gain(stream_in->device->mixer, - stream_in->device_current, stream_in->device->mode, gain); + stream_in->device_current, gain); return 0; } @@ -396,6 +385,8 @@ void audio_hw_close_input_stream(struct audio_hw_device *dev, tinyalsa_audio_device = (struct tinyalsa_audio_device *) dev; + tinyalsa_mixer_set_input_state(tinyalsa_audio_device->mixer, 0); + tinyalsa_audio_device->stream_in = NULL; } @@ -459,6 +450,12 @@ int audio_hw_open_input_stream(struct audio_hw_device *dev, *channels = (uint32_t) tinyalsa_audio_stream_in->channels; *format = (uint32_t) tinyalsa_audio_stream_in->format; + rc = tinyalsa_mixer_set_input_state(tinyalsa_audio_device->mixer, 1); + if(rc < 0) { + LOGE("Unable to set input state"); + goto error_stream; + } + audio_in_set_route(tinyalsa_audio_stream_in, devices); rc = audio_in_pcm_open(tinyalsa_audio_stream_in); |