#include <libconfig.h>
#include <stdint.h>
+// clang-format off
+// Play samples provided may be from the source, in which case they will be timed
+// or they may be generated by Shairport Sync, in which case they will not be timed.
+
+// Typically these would be samples of silence, which may be dithered, sent during the lead-in to
+// the start of the material, or inserted instead of a missing frame, or after a flush.
+// clang-format on
+
+typedef enum {
+ play_samples_are_untimed = 0, // typically the samples are (possibly dithered) silence
+ play_samples_are_timed, // timed and numbered.
+} play_samples_type;
+
typedef struct {
double current_volume_dB;
int32_t minimum_volume_dB;
void (*start)(int sample_rate, int sample_format);
// block of samples
- int (*play)(void *buf, int samples);
+ int (*play)(void *buf, int samples, int sample_type, uint32_t timestamp, uint64_t playtime);
void (*stop)(void);
// may be null if no implemented