- w = MIN(chunk_bytes, l);
-// fprintf(stderr, "play: writing %d\n", w);
- r = (ssize_t) pcm_write(audiobuf, w / bytes_per_frame) * bytes_per_frame;
-// fprintf(stderr, "wrote %d\n", r);
- if (r < 0)
- EXIT(E_WRITE);
- written += r;
- l -= r;
- if (l)
- memmove(audiobuf, audiobuf + r, l);
-// fprintf(stderr, "written %lu, loaded : %d\n", written, l);
+ if (loaded && p != audiobuf) {
+ fprintf(stderr, "memcpy: %d\n", loaded);
+ memcpy(audiobuf, p, loaded);
+ }
+ }
+ if (dont_write && loaded >= bufsize) {
+ do_initial_delay(&delay);
+ start_time = NULL;
+ goto again;
+ }
+ ret = read(STDIN_FILENO, audiobuf, bufsize - loaded);
+ if (ret < 0)
+ EXIT(E_READ);
+ if (ret) {
+ loaded += ret;
+ goto again;