forked from owntone/owntone-server
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathplayer.h
195 lines (139 loc) · 3.25 KB
/
player.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
#ifndef __PLAYER_H__
#define __PLAYER_H__
#include <stdbool.h>
#include <stdint.h>
#include "db.h"
// Maximum number of previously played songs that are remembered
#define MAX_HISTORY_COUNT 20
enum play_status {
PLAY_STOPPED = 2,
PLAY_PAUSED = 3,
PLAY_PLAYING = 4,
};
enum repeat_mode {
REPEAT_OFF = 0,
REPEAT_SONG = 1,
REPEAT_ALL = 2,
};
enum player_seek_mode {
PLAYER_SEEK_POSITION = 1,
PLAYER_SEEK_RELATIVE = 2,
};
struct player_speaker_info {
uint64_t id;
uint32_t active_remote;
char name[255];
char output_type[50];
int relvol;
int absvol;
bool selected;
bool has_password;
bool requires_auth;
bool needs_auth_key;
bool prevent_playback;
bool busy;
bool has_video;
};
struct player_status {
enum play_status status;
enum repeat_mode repeat;
char shuffle;
char consume;
int volume;
/* Playlist id */
uint32_t plid;
/* Id of the playing file/item in the files database */
uint32_t id;
/* Item-Id of the playing file/item in the queue */
uint32_t item_id;
/* Elapsed time in ms of playing item */
uint32_t pos_ms;
/* Length in ms of playing item */
uint32_t len_ms;
};
typedef void (*spk_enum_cb)(struct player_speaker_info *spk, void *arg);
struct player_history
{
/* Buffer index of the oldest remembered song */
unsigned int start_index;
/* Count of song ids in the buffer */
unsigned int count;
/* Circular buffer of song ids previously played */
uint32_t id[MAX_HISTORY_COUNT];
uint32_t item_id[MAX_HISTORY_COUNT];
};
int
player_get_status(struct player_status *status);
int
player_playing_now(uint32_t *id);
void
player_speaker_enumerate(spk_enum_cb cb, void *arg);
int
player_speaker_set(uint64_t *ids);
int
player_speaker_get_byid(struct player_speaker_info *spk, uint64_t id);
int
player_speaker_get_byactiveremote(struct player_speaker_info *spk, uint32_t active_remote);
int
player_speaker_enable(uint64_t id);
int
player_speaker_disable(uint64_t id);
int
player_speaker_prevent_playback_set(uint64_t id, bool prevent_playback);
int
player_speaker_busy_set(uint64_t id, bool busy);
void
player_speaker_resurrect(void *arg);
int
player_speaker_authorize(uint64_t id, const char *pin);
int
player_playback_start(void);
int
player_playback_start_byitem(struct db_queue_item *queue_item);
int
player_playback_start_byid(uint32_t id);
int
player_playback_stop(void);
int
player_playback_pause(void);
int
player_playback_flush(void);
int
player_playback_seek(int seek_ms, enum player_seek_mode seek_mode);
int
player_playback_next(void);
int
player_playback_prev(void);
int
player_volume_set(int vol);
int
player_volume_setrel_speaker(uint64_t id, int relvol);
int
player_volume_setabs_speaker(uint64_t id, int vol);
int
player_volume_setraw_speaker(uint64_t id, const char *volstr);
int
player_repeat_set(enum repeat_mode mode);
int
player_shuffle_set(int enable);
int
player_consume_set(int enable);
void
player_queue_clear_history(void);
void
player_queue_plid(uint32_t plid);
struct player_history *
player_history_get(void);
int
player_device_add(void *device);
int
player_device_remove(void *device);
void
player_raop_verification_kickoff(char **arglist);
const char *
player_pmap(void *p);
int
player_init(void);
void
player_deinit(void);
#endif /* !__PLAYER_H__ */