mirror of
https://github.com/alsa-project/alsa-utils
synced 2024-11-09 17:35:42 +01:00
aplay: Fix playback for small raw files
This fixes a bug when trying to play files with size smaller than maximum supported header size. Lets have a look at the following example: $ aplay -s 2 sample.raw -> playback_go(fd = 10, loaded = 26, count = 2, name="sample.raw") --> l = loaded = 26 --> c = count - written = 2 --> c -= l = 2 - 26 = -24 ---> r = safe_read(fd, audiobuf + 26, -24) ---> r = -1, EXIT_FAILURE In this case we have already 'loaded' from the input file more bytes that we need to send to pcm device. So, we need to adjust the number of bytes loaded and avoid reading a negative number of bytes. Signed-off-by: Daniel Baluta <daniel.baluta@nxp.com> Signed-off-by: Takashi Iwai <tiwai@suse.de>
This commit is contained in:
parent
dba6db9228
commit
1c9adf46b8
1 changed files with 7 additions and 0 deletions
|
@ -2774,6 +2774,13 @@ static void playback_go(int fd, size_t loaded, off64_t count, int rtype, char *n
|
|||
c = count - written;
|
||||
if (c > chunk_bytes)
|
||||
c = chunk_bytes;
|
||||
|
||||
/* c < l, there is more data loaded
|
||||
* then we actually need to write
|
||||
*/
|
||||
if (c < l)
|
||||
l = c;
|
||||
|
||||
c -= l;
|
||||
|
||||
if (c == 0)
|
||||
|
|
Loading…
Reference in a new issue