X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~mdw/git/disorder/blobdiff_plain/6d2d327ca57fefaddceba10eb323451f8150e95d..c35e83d9a431ffca75fe6901acce082d84059ed3:/lib/speaker-protocol.h diff --git a/lib/speaker-protocol.h b/lib/speaker-protocol.h index 8809f0f..ac4fdf0 100644 --- a/lib/speaker-protocol.h +++ b/lib/speaker-protocol.h @@ -32,7 +32,6 @@ struct speaker_message { /** @brief Message type * * Messges from the main server: - * - @ref SM_PREPARE * - @ref SM_PLAY * - @ref SM_PAUSE * - @ref SM_RESUME @@ -54,12 +53,6 @@ struct speaker_message { }; /* messages from the main DisOrder server */ -/** @brief Prepare track @c id - * - * This message will include a file descriptor. The speaker starts buffering - * audio data read from this file against the time that it must be played. - */ -#define SM_PREPARE 0 /** @brief Play track @c id * @@ -96,16 +89,24 @@ struct speaker_message { */ #define SM_PLAYING 131 -void speaker_send(int fd, const struct speaker_message *sm, int datafd); -/* Send a message. DATAFD is passed too if not -1. Does not close DATAFD. */ +/** @brief Speaker process is ready + * + * This is sent once at startup when the speaker has finished its + * initialization. */ +#define SM_READY 132 -int speaker_recv(int fd, struct speaker_message *sm, int *datafd); -/* Receive a message. If DATAFD is not null then can receive an FD. Return 0 - * on EOF, +ve if a message is read, -1 on EAGAIN, terminates on any other - * error. */ +void speaker_send(int fd, const struct speaker_message *sm); +/* Send a message. */ + +int speaker_recv(int fd, struct speaker_message *sm); +/* Receive a message. Return 0 on EOF, +ve if a message is read, -1 on EAGAIN, + * terminates on any other error. */ /** @brief One chunk in a stream */ struct stream_header { + /** @brief Number of bytes */ + uint32_t nbytes; + /** @brief Frames per second */ uint32_t rate; @@ -124,9 +125,6 @@ struct stream_header { #else # define ENDIAN_NATIVE ENDIAN_LITTLE #endif - - /** @brief Number of bytes */ - uint32_t nbytes; } attribute((packed)); static inline int formats_equal(const struct stream_header *a,