From 9b02b42db48d4c202afcaf5001019534f30f6c96 Mon Sep 17 00:00:00 2001 From: Marcin Rajwa Date: Fri, 7 Aug 2020 16:17:25 +0200 Subject: [PATCH] aplay: capture: write only the amount of read frames This patch changes the way aborted stream is being saved. Currently when abort signal happens the write back of read samples is skipped but there is no reason to not save them. Also, we need to know how much frames have been read and write only those. Signed-off-by: Marcin Rajwa Signed-off-by: Jaroslav Kysela --- aplay/aplay.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/aplay/aplay.c b/aplay/aplay.c index d71035c..f71d0c9 100644 --- a/aplay/aplay.c +++ b/aplay/aplay.c @@ -3206,11 +3206,12 @@ static void capture(char *orig_name) size_t c = (rest <= (off64_t)chunk_bytes) ? (size_t)rest : chunk_bytes; size_t f = c * 8 / bits_per_frame; - if (pcm_read(audiobuf, f) != f) { + size_t read = pcm_read(audiobuf, f); + size_t save; + if (read != f) in_aborting = 1; - break; - } - if (xwrite(fd, audiobuf, c) != c) { + save = read * bits_per_frame / 8; + if (xwrite(fd, audiobuf, save) != save) { perror(name); in_aborting = 1; break;