mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-09-19 17:49:59 +02:00
aplay: pcm_read(): return read samples instead of requested upon abort
This patch changes the logic of pcm_read() when abort signal has been detected. During such condition we should return the amount of frames actually read instead of the size requested by caller. Currently functions pcm_read() and pcm_readv() when aborted (in_aborting flag set) return the amount of requested frames instead of those actually read prior to interrupt. The consequence of this is repetition of recent X frames where X stands for amount of frames in one period. This problem is barely visible or rather audible when the period is small like few milliseconds because repetition of 1 [ms] of data is not-noticeable however if we use buffer and period sizes in seconds then the problem becomes apparent. Signed-off-by: Marcin Rajwa <marcin.rajwa@linux.intel.com> Signed-off-by: Jaroslav Kysela <perex@perex.cz>
This commit is contained in:
parent
bc7a944c50
commit
5e87e2e021
1 changed files with 4 additions and 1 deletions
|
@ -2135,7 +2135,9 @@ static ssize_t pcm_read(u_char *data, size_t rcount)
|
|||
count = chunk_size;
|
||||
}
|
||||
|
||||
while (count > 0 && !in_aborting) {
|
||||
while (count > 0) {
|
||||
if (in_aborting)
|
||||
goto abort;
|
||||
if (test_position)
|
||||
do_test_position();
|
||||
check_stdin();
|
||||
|
@ -2161,6 +2163,7 @@ static ssize_t pcm_read(u_char *data, size_t rcount)
|
|||
data += r * bits_per_frame / 8;
|
||||
}
|
||||
}
|
||||
abort:
|
||||
return rcount;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue