X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/1f10f780da61a9403d52d9ce6eb4e5144df3c678..bfd27c143e12fd330d30f444fcff72a21cfaf5a7:/clients/playrtp.c diff --git a/clients/playrtp.c b/clients/playrtp.c index 0b25c89..33623ab 100644 --- a/clients/playrtp.c +++ b/clients/playrtp.c @@ -294,7 +294,7 @@ static const struct option options[] = { { 0, 0, 0, 0 } }; -/** @Brief Return a new packet */ +/** @brief Return a new packet */ static struct packet *new_packet(void) { struct packet *p; @@ -481,6 +481,8 @@ static inline int contains(const struct packet *p, uint32_t timestamp) { * Must be called with @ref lock held. */ static void fill_buffer(void) { + while(nsamples) + drop_first_packet(); info("Buffering..."); while(nsamples < readahead) pthread_cond_wait(&cond, &lock); @@ -920,7 +922,7 @@ int main(int argc, char **argv) { len = sizeof rcvbuf; if(getsockopt(rtpfd, SOL_SOCKET, SO_RCVBUF, &rcvbuf, &len) < 0) fatal(errno, "error calling getsockopt SO_RCVBUF"); - if(target_rcvbuf) { + if(target_rcvbuf > rcvbuf) { if(setsockopt(rtpfd, SOL_SOCKET, SO_RCVBUF, &target_rcvbuf, sizeof target_rcvbuf) < 0) error(errno, "error calling setsockopt SO_RCVBUF %d",