- dont_write = 0;
- if (!written && start_time)
- dont_write = start_time_in_future(&delay);
- if (!dont_write) {
- p = audiobuf;
- while (loaded >= chunk_bytes) {
- ret = (ssize_t) pcm_write(p, chunk_size) * bytes_per_frame;
- if (ret <= 0) {
- fprintf(stderr, "write error: %d\n", ret);
- EXIT(E_WRITE);
- }
- p += ret;
- written += ret;
- loaded -= ret;
- }
- if (loaded && p != audiobuf) {
- fprintf(stderr, "memcpy: %d\n", loaded);
- memcpy(audiobuf, p, loaded);
+ if (!written) {
+ if (loaded < prebuf_size)
+ goto read;
+ if (start_time && start_time_in_future(&delay)) {
+ do_initial_delay(&delay);
+ start_time = NULL;