struct timeval diff;
t->ret = 0;
- if (wng->eof && *wng->loaded < pad->bytes_per_frame)
+ if (*wng->eof && *wng->loaded < pad->bytes_per_frame)
return;
t->ret = 1;
if (*wng->loaded < pad->bytes_per_frame)
return;
if (tv_diff(&s->now, &pad->next_chunk, &diff) < 0) {
- if (tv_diff(&s->timeout, &diff, NULL) < 0)
+ if (tv_diff(&s->timeout, &diff, NULL) > 0)
s->timeout = diff;
} else {
s->timeout.tv_sec = 0;
unsigned char *data = (unsigned char*)wng->buf;
t->ret = 0;
- if (!frames)
+ if (!frames) {
+ if (*wng->eof)
+ t->ret = *wng->loaded;
return;
+ }
if (tv_diff(&s->now, &pad->next_chunk, NULL) < 0)
return;
// PARA_INFO_LOG("%zd frames\n", frames);