X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/937be4c02816d026de3063f32d82fafda1f3c512..d25c461540eadff2230653059ea2f692ee8dfc63:/server/speaker.h diff --git a/server/speaker.h b/server/speaker.h index 4e22d38..de89ee0 100644 --- a/server/speaker.h +++ b/server/speaker.h @@ -46,13 +46,17 @@ #define FRAMES 4096 /** @brief Bytes to send per network packet + * + * This is the maximum number of bytes we pass to write(2); to determine actual + * packet sizes, add a UDP header and an IP header (and a link layer header if + * it's the link layer size you care about). * * Don't make this too big or arithmetic will start to overflow. */ -#define NETWORK_BYTES (1024+sizeof(struct rtp_header)) +#define NETWORK_BYTES (1500-8/*UDP*/-40/*IP*/-8/*conservatism*/) /** @brief Maximum RTP playahead (ms) */ -#define RTP_AHEAD_MS 1000 +#define RTP_AHEAD_MS 100 /** @brief Maximum number of FDs to poll for */ #define NFDS 256 @@ -163,12 +167,18 @@ struct speaker_backend { void (*deactivate)(void); /** @brief Called before poll() + * @param timeoutp Pointer to timeout + * + * Called before the call to poll(). + * + * If desirable, should call addfd() to update the FD array and stash the + * slot number somewhere safe. This will only be called if @ref device_state + * is @ref device_open. * - * Called before the call to poll(). Should call addfd() to update - * the FD array and stash the slot number somewhere safe. This will - * only be called if @ref device_state = @ref device_open. + * @p timeoutp points to the poll timeout value in milliseconds. It may be + * reduced, but never increased. */ - void (*beforepoll)(void); + void (*beforepoll)(int *timeoutp); /** @brief Called after poll() * @return 1 if output device ready for play, 0 otherwise @@ -213,6 +223,7 @@ extern const struct speaker_backend network_backend; extern const struct speaker_backend alsa_backend; extern const struct speaker_backend command_backend; extern const struct speaker_backend coreaudio_backend; +extern const struct speaker_backend oss_backend; extern struct pollfd fds[NFDS]; extern int fdno;