X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/189e98302534f1bf59c7ed0b29ba6dd025b45fc1..1f10f780da61a9403d52d9ce6eb4e5144df3c678:/server/speaker.c diff --git a/server/speaker.c b/server/speaker.c index f9badeb..c167f7b 100644 --- a/server/speaker.c +++ b/server/speaker.c @@ -104,10 +104,10 @@ * * Don't make this too big or arithmetic will start to overflow. */ -#define NETWORK_BYTES 1024 +#define NETWORK_BYTES (1024+sizeof(struct rtp_header)) -/** @brief Maximum RTP playahead (seconds) */ -#define RTP_AHEAD 1 +/** @brief Maximum RTP playahead (ms) */ +#define RTP_AHEAD_MS 1000 /** @brief Maximum number of FDs to poll for */ #define NFDS 256 @@ -971,9 +971,10 @@ int main(int argc, char **argv) { struct timeval now; uint64_t target_us; uint64_t target_rtp_time; - const uint64_t samples_ahead = RTP_AHEAD * config->sample_format.rate - * config->sample_format.channels; - + const int64_t samples_ahead = ((uint64_t)RTP_AHEAD_MS + * config->sample_format.rate + * config->sample_format.channels + / 1000); static unsigned logit; /* If we're starting then initialize the base time */ @@ -988,7 +989,7 @@ int main(int argc, char **argv) { * config->sample_format.channels) / 1000000; -#if 0 +#if 1 /* TODO remove logging guff */ if(!(logit++ & 1023)) info("rtp_time %llu target %llu difference %lld [%lld]", @@ -996,8 +997,7 @@ int main(int argc, char **argv) { rtp_time - target_rtp_time, samples_ahead); #endif - if(rtp_time < target_rtp_time - || rtp_time - target_rtp_time < samples_ahead) + if((int64_t)(rtp_time - target_rtp_time) < samples_ahead) bfd_slot = addfd(bfd, POLLOUT); break; }