qemu-e2k/audio
Volker Rümelin 1a01df3db8 audio: make playback packet length calculation exact
Introduce the new function st_rate_frames_in() to calculate the
exact number of audio input frames needed to get a given number
of audio output frames. The exact number of frames depends only
on the difference of opos - ipos and the number of output frames.
When downsampling, this function returns the maximum number of
input frames needed.

This new function replaces the audio_frontend_frames_out() function,
which calculated the average number of input frames rounded down
to the nearest integer. Because audio_frontend_frames_out() also
limited the number of input frames to the size of the resample
buffer, st_rate_frames_in() is not a direct replacement and two
additional MIN() functions are needed. One to prevent resample
buffer overflows and one to limit the available bytes for the audio
frontends.

After this patch the audio packet length calculation for playback is
exact. When upsampling, it's still possible that the audio frontends
can't write the last audio frame. This will be fixed later.

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-9-vr_qemu@t-online.de>
2023-03-06 10:30:23 +04:00
..
alsaaudio.c alsaaudio: reintroduce default recording settings 2023-03-06 10:30:23 +04:00
audio_int.h audio: change type and name of the resample buffer 2023-03-06 10:30:23 +04:00
audio_legacy.c qapi, audio: Make introspection reflect build configuration more closely 2023-01-30 15:43:55 +01:00
audio_template.h audio: change type and name of the resample buffer 2023-03-06 10:30:23 +04:00
audio_win_int.c Remove qemu-common.h include from most units 2022-04-06 14:31:55 +02:00
audio_win_int.h Windows Waveform Audio driver (no ADC support yet) 2009-10-10 01:18:24 +04:00
audio-hmp-cmds.c audio: Move HMP commands from monitor/ to audio/ 2023-02-04 07:56:54 +01:00
audio.c audio: make playback packet length calculation exact 2023-03-06 10:30:23 +04:00
audio.h audio: add help option for -audio and -audiodev 2022-09-19 15:15:59 +02:00
coreaudio.m Replace GCC_FMT_ATTR with G_GNUC_PRINTF 2022-03-22 14:40:51 +04:00
dbusaudio.c audio: swap audio_rate_get_bytes() function parameters 2022-10-11 10:17:08 +02:00
dsound_template.h dsoundaudio: replace GetForegroundWindow() 2021-01-15 11:25:22 +01:00
dsoundaudio.c Replace GCC_FMT_ATTR with G_GNUC_PRINTF 2022-03-22 14:40:51 +04:00
jackaudio.c Use g_new() & friends where that makes obvious sense 2022-03-21 15:44:44 +01:00
meson.build audio: Move HMP commands from monitor/ to audio/ 2023-02-04 07:56:54 +01:00
mixeng_template.h audio: fix saturation nonlinearity in clip_* functions 2020-03-16 10:18:07 +01:00
mixeng.c audio: make playback packet length calculation exact 2023-03-06 10:30:23 +04:00
mixeng.h audio: make playback packet length calculation exact 2023-03-06 10:30:23 +04:00
noaudio.c audio: swap audio_rate_get_bytes() function parameters 2022-10-11 10:17:08 +02:00
ossaudio.c qapi audio: Elide redundant has_FOO in generated C 2022-12-13 18:31:37 +01:00
paaudio.c qapi audio: Elide redundant has_FOO in generated C 2022-12-13 18:31:37 +01:00
rate_template.h audio: make the resampling code greedy 2023-03-06 10:30:23 +04:00
sdlaudio.c Replace GCC_FMT_ATTR with G_GNUC_PRINTF 2022-03-22 14:40:51 +04:00
sndioaudio.c Fix non-first inclusions of qemu/osdep.h 2023-02-08 07:28:05 +01:00
spiceaudio.c audio: swap audio_rate_get_bytes() function parameters 2022-10-11 10:17:08 +02:00
trace-events audio: add "dbus" audio backend 2021-12-21 10:50:22 +04:00
trace.h trace: switch position of headers to what Meson requires 2020-08-21 06:18:24 -04:00
wavaudio.c qapi audio: Elide redundant has_FOO in generated C 2022-12-13 18:31:37 +01:00
wavcapture.c monitor: Use getter/setter functions for cur_mon 2020-10-09 07:08:19 +02:00