[PATCH] aplay: capture: write only the amount of read frames

Rajwa, Marcin marcin.rajwa at linux.intel.com
Fri Aug 7 18:17:27 CEST 2020


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 <marcin.rajwa at linux.intel.com>

diff --git a/aplay/aplay.c b/aplay/aplay.c
index 6836558..f5010dc 100644
--- a/aplay/aplay.c
+++ b/aplay/aplay.c
@@ -3204,11 +3204,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 / 8 * bits_per_frame;
+                       if (xwrite(fd, audiobuf, save) != save) {
                                 perror(name);
                                 in_aborting = 1;
                                 break;


More information about the Alsa-devel mailing list