audio: make recording packet length calculation exact
authorVolker Rümelin <vr_qemu@t-online.de>
Fri, 24 Feb 2023 19:05:52 +0000 (20:05 +0100)
committerMarc-André Lureau <marcandre.lureau@redhat.com>
Mon, 6 Mar 2023 06:30:23 +0000 (10:30 +0400)
commita9ea567873ba8d532520f194413ff28f37065c00
treec25cdae272de3f9ffbd94439cc7255496cd9c50f
parentfbde1edf06dad792ef3e9f51e3f52a49669bdd40
audio: make recording packet length calculation exact

Introduce the new function st_rate_frames_out() to calculate the
exact number of audio output frames the resampling code can
generate from a given number of audio input frames. When upsampling,
this function returns the maximum number of output frames.

This new function replaces the audio_frontend_frames_in()
function, which calculated the average number of output frames
rounded down to the nearest integer. The audio_frontend_frames_in()
function was additionally used to limit the number of output frames
to the resample buffer size. In audio_pcm_sw_read() the variable
resample_buf.size replaces the open coded audio_frontend_frames_in()
function. In audio_run_in() an additional MIN() function is
necessary.

After this patch the audio packet length calculation for audio
recording is exact.

Acked-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
Signed-off-by: Volker Rümelin <vr_qemu@t-online.de>
Message-Id: <20230224190555.7409-12-vr_qemu@t-online.de>
audio/audio.c
audio/mixeng.c
audio/mixeng.h