play.c: make alsa_write() take the number of _bytes_ to write
[paraslash.git] / play.c
diff --git a/play.c b/play.c
index f459e4d..1a30285 100644 (file)
--- a/play.c
+++ b/play.c
@@ -174,12 +174,13 @@ static void alsa_init(void)
 /**
  * push out pcm frames
  * \param data pointer do data to be written
 /**
  * push out pcm frames
  * \param data pointer do data to be written
- * \param count number of frames
+ * \param nbytes number of bytes (not frames)
  *
  * \return Number of bytes written. Exit on errors.
  */
  *
  * \return Number of bytes written. Exit on errors.
  */
-int alsa_write(u_char *data, size_t count)
+int alsa_write(u_char *data, size_t nbytes)
 {
 {
+       size_t count = nbytes / bytes_per_frame;
        snd_pcm_sframes_t r, result = 0;
        while (count > 0) {
                /* write interleaved frames */
        snd_pcm_sframes_t r, result = 0;
        while (count > 0) {
                /* write interleaved frames */
@@ -276,7 +277,7 @@ again:
        }
        p = audiobuf;
        while (loaded >= chunk_bytes) {
        }
        p = audiobuf;
        while (loaded >= chunk_bytes) {
-               ret = alsa_write(p, chunk_size);
+               ret = alsa_write(p, chunk_bytes);
                p += ret;
                written += ret;
                loaded -= ret;
                p += ret;
                written += ret;
                loaded -= ret;