1 2#ifndef __PLAYER_H__ 3#define __PLAYER_H__ 4 5#include <stdint.h> 6 7#if defined(__linux__) 8/* AirTunes v2 packet interval in ns */ 9# define AIRTUNES_V2_STREAM_PERIOD 7980000 10#elif defined(__FreeBSD__) || defined(__FreeBSD_kernel__) 11/* AirTunes v2 packet interval in ms */ 12# define AIRTUNES_V2_STREAM_PERIOD 8 13#endif 14 15/* AirTunes v2 number of samples per packet */ 16#define AIRTUNES_V2_PACKET_SAMPLES 352 17 18 19/* Samples to bytes, bytes to samples */ 20#define STOB(s) ((s) * 4) 21#define BTOS(b) ((b) / 4) 22 23enum play_status { 24 PLAY_STOPPED = 2, 25 PLAY_PAUSED = 3, 26 PLAY_PLAYING = 4, 27}; 28 29enum repeat_mode { 30 REPEAT_OFF = 0, 31 REPEAT_SONG = 1, 32 REPEAT_ALL = 2, 33}; 34 35struct spk_flags { 36 unsigned selected:1; 37 unsigned has_password:1; 38 39 unsigned has_video:1; 40}; 41 42struct player_status { 43 enum play_status status; 44 enum repeat_mode repeat; 45 char shuffle; 46 47 int volume; 48 49 uint32_t plid; 50 uint32_t id; 51 uint32_t pos_ms; 52 int pos_pl; 53}; 54 55typedef void (*spk_enum_cb)(uint64_t id, const char *name, int relvol, struct spk_flags flags, void *arg); 56typedef void (*player_status_handler)(void); 57 58struct player_source; 59 60int 61player_is_playing(void); 62 63int 64player_get_current_pos(uint64_t *pos, struct timespec *ts, int commit); 65 66int 67player_get_status(struct player_status *status); 68 69int 70player_now_playing(uint32_t *id); 71 72 73void 74player_speaker_enumerate(spk_enum_cb cb, void *arg); 75 76int 77player_speaker_set(uint64_t *ids); 78 79int 80player_playback_start(uint32_t *idx_id); 81 82int 83player_playback_stop(void); 84 85int 86player_playback_pause(void); 87 88int 89player_playback_seek(int ms); 90 91int 92player_playback_next(void); 93 94int 95player_playback_prev(void); 96 97 98int 99player_volume_set(int vol); 100 101int 102player_volume_setrel_speaker(uint64_t id, int relvol); 103 104int 105player_volume_setabs_speaker(uint64_t id, int vol); 106 107int 108player_repeat_set(enum repeat_mode mode); 109 110int 111player_shuffle_set(int enable); 112 113 114struct player_source * 115player_queue_make_daap(const char *query, const char *sort); 116 117struct player_source * 118player_queue_make_pl(int plid, uint32_t *id); 119 120int 121player_queue_add(struct player_source *ps); 122 123void 124player_queue_clear(void); 125 126void 127player_queue_plid(uint32_t plid); 128 129 130void 131player_set_update_handler(player_status_handler handler); 132 133int 134player_init(void); 135 136void 137player_deinit(void); 138 139#endif /* !__PLAYER_H__ */ 140