From: Volker Rümelin <[email protected]> Split out the function virtio_snd_pcm_open() from virtio_snd_pcm_prepare(). A later patch also needs the new function. There is no functional change.
Signed-off-by: Volker Rümelin <[email protected]> [AM: trivial rebase changes] Signed-off-by: Alexander Mikhalitsyn <[email protected]> Reviewed-by: Marc-André Lureau <[email protected]> Reviewed-by: Manos Pitsidianakis <[email protected]> --- hw/audio/virtio-snd.c | 58 ++++++++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 26 deletions(-) diff --git a/hw/audio/virtio-snd.c b/hw/audio/virtio-snd.c index 9505e478e91..af50ab4c14a 100644 --- a/hw/audio/virtio-snd.c +++ b/hw/audio/virtio-snd.c @@ -428,6 +428,37 @@ static void virtio_snd_get_qemu_audsettings(audsettings *as, as->big_endian = false; /* Conforming to VIRTIO 1.0: always little endian. */ } +/* + * Open a stream. + * + * @stream: VirtIOSoundPCMStream *stream + */ +static void virtio_snd_pcm_open(VirtIOSoundPCMStream *stream) +{ + virtio_snd_get_qemu_audsettings(&stream->as, &stream->params); + stream->info.channels_max = stream->as.nchannels; + + if (stream->info.direction == VIRTIO_SND_D_OUTPUT) { + stream->voice.out = audio_be_open_out(stream->s->audio_be, + stream->voice.out, + "virtio-sound.out", + stream, + virtio_snd_pcm_out_cb, + &stream->as); + audio_be_set_volume_out_lr(stream->s->audio_be, + stream->voice.out, 0, 255, 255); + } else { + stream->voice.in = audio_be_open_in(stream->s->audio_be, + stream->voice.in, + "virtio-sound.in", + stream, + virtio_snd_pcm_in_cb, + &stream->as); + audio_be_set_volume_in_lr(stream->s->audio_be, + stream->voice.in, 0, 255, 255); + } +} + /* * Close a stream and free all its resources. * @@ -453,8 +484,6 @@ static void virtio_snd_pcm_close(VirtIOSoundPCMStream *stream) */ static uint32_t virtio_snd_pcm_prepare(VirtIOSound *s, uint32_t stream_id) { - audsettings as; - virtio_snd_pcm_set_params *params; VirtIOSoundPCMStream *stream; stream = virtio_snd_pcm_get_stream(s, stream_id); @@ -473,30 +502,7 @@ static uint32_t virtio_snd_pcm_prepare(VirtIOSound *s, uint32_t stream_id) return cpu_to_le32(VIRTIO_SND_S_BAD_MSG); } - params = virtio_snd_pcm_get_params(s, stream_id); - - virtio_snd_get_qemu_audsettings(&as, params); - stream->info.channels_max = as.nchannels; - - stream->as = as; - - if (stream->info.direction == VIRTIO_SND_D_OUTPUT) { - stream->voice.out = audio_be_open_out(s->audio_be, - stream->voice.out, - "virtio-sound.out", - stream, - virtio_snd_pcm_out_cb, - &as); - audio_be_set_volume_out_lr(s->audio_be, stream->voice.out, 0, 255, 255); - } else { - stream->voice.in = audio_be_open_in(s->audio_be, - stream->voice.in, - "virtio-sound.in", - stream, - virtio_snd_pcm_in_cb, - &as); - audio_be_set_volume_in_lr(s->audio_be, stream->voice.in, 0, 255, 255); - } + virtio_snd_pcm_open(stream); stream->state = VIRTIO_SND_PCM_STATE_PREPARED; -- 2.47.3
