mirror of
https://github.com/owntone/owntone-server.git
synced 2025-12-07 08:12:38 -05:00
[queue] Refactor queue handling
Decouple the playing/streaming item from the queue. Move all queue related functions to seperate file queue.h/c. Introduce internal item "head" to make iterating over the play-queue and shuffle-queue easier.
This commit is contained in:
73
src/player.h
73
src/player.h
@@ -5,6 +5,7 @@
|
||||
#include <stdint.h>
|
||||
|
||||
#include "db.h"
|
||||
#include "queue.h"
|
||||
|
||||
/* AirTunes v2 packet interval in ns */
|
||||
/* (352 samples/packet * 1e9 ns/s) / 44100 samples/s = 7981859 ns/packet */
|
||||
@@ -27,12 +28,6 @@ enum play_status {
|
||||
PLAY_PLAYING = 4,
|
||||
};
|
||||
|
||||
enum repeat_mode {
|
||||
REPEAT_OFF = 0,
|
||||
REPEAT_SONG = 1,
|
||||
REPEAT_ALL = 2,
|
||||
};
|
||||
|
||||
struct spk_flags {
|
||||
unsigned selected:1;
|
||||
unsigned has_password:1;
|
||||
@@ -72,30 +67,6 @@ struct player_status {
|
||||
|
||||
typedef void (*spk_enum_cb)(uint64_t id, const char *name, int relvol, struct spk_flags flags, void *arg);
|
||||
|
||||
struct player_source
|
||||
{
|
||||
uint32_t id;
|
||||
uint32_t len_ms;
|
||||
|
||||
enum data_kind data_kind;
|
||||
enum media_kind media_kind;
|
||||
int setup_done;
|
||||
|
||||
uint64_t stream_start;
|
||||
uint64_t output_start;
|
||||
uint64_t end;
|
||||
|
||||
struct transcode_ctx *ctx;
|
||||
|
||||
struct player_source *pl_next;
|
||||
struct player_source *pl_prev;
|
||||
|
||||
struct player_source *shuffle_next;
|
||||
struct player_source *shuffle_prev;
|
||||
|
||||
struct player_source *play_next;
|
||||
};
|
||||
|
||||
struct player_queue
|
||||
{
|
||||
// The item id of the current playing item
|
||||
@@ -146,10 +117,13 @@ int
|
||||
player_playback_start(uint32_t *idx_id);
|
||||
|
||||
int
|
||||
player_playback_startpos(int pos, uint32_t *itemid);
|
||||
player_playback_start_byindex(int pos, uint32_t *itemid);
|
||||
|
||||
int
|
||||
player_playback_startid(uint32_t id, uint32_t *itemid);
|
||||
player_playback_start_bypos(int pos, uint32_t *itemid);
|
||||
|
||||
int
|
||||
player_playback_start_byitemid(uint32_t id, uint32_t *itemid);
|
||||
|
||||
int
|
||||
player_playback_stop(void);
|
||||
@@ -182,51 +156,38 @@ player_repeat_set(enum repeat_mode mode);
|
||||
int
|
||||
player_shuffle_set(int enable);
|
||||
|
||||
struct player_source *
|
||||
player_queue_make(struct query_params *qp);
|
||||
|
||||
//int
|
||||
//player_queue_make_daap(struct player_source **head, const char *query, const char *queuefilter, const char *sort, int quirk);
|
||||
struct queue_info *
|
||||
player_queue_get_bypos(int count);
|
||||
|
||||
struct player_source *
|
||||
player_queue_make_pl(int plid, uint32_t *id);
|
||||
|
||||
//struct player_source *
|
||||
//player_queue_make_mpd(char *path, int recursive);
|
||||
|
||||
struct player_queue *
|
||||
player_queue_get_relative(int count);
|
||||
|
||||
struct player_queue *
|
||||
player_queue_get(int pos, int count);
|
||||
|
||||
void
|
||||
queue_free(struct player_queue *queue);
|
||||
struct queue_info *
|
||||
player_queue_get_byindex(int pos, int count);
|
||||
|
||||
int
|
||||
player_queue_add(struct player_source *ps);
|
||||
player_queue_add(struct queue_item *items);
|
||||
|
||||
int
|
||||
player_queue_add_next(struct player_source *ps);
|
||||
player_queue_add_next(struct queue_item *items);
|
||||
|
||||
int
|
||||
player_queue_move(int ps_pos_from, int ps_pos_to);
|
||||
player_queue_move_bypos(int ps_pos_from, int ps_pos_to);
|
||||
|
||||
int
|
||||
player_queue_remove_pos_relative(int pos);
|
||||
player_queue_remove_bypos(int pos);
|
||||
|
||||
int
|
||||
player_queue_remove_queueitemid(uint32_t id);
|
||||
player_queue_remove_byitemid(uint32_t id);
|
||||
|
||||
void
|
||||
player_queue_clear(void);
|
||||
|
||||
void
|
||||
player_queue_empty(int clear_hist);
|
||||
player_queue_clear_history(void);
|
||||
|
||||
void
|
||||
player_queue_plid(uint32_t plid);
|
||||
|
||||
|
||||
struct player_history *
|
||||
player_history_get(void);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user