player.h 3.69 KB
Newer Older
Warren Dukes's avatar
Warren Dukes committed
1
/* the Music Player Daemon (MPD)
2
 * Copyright (C) 2003-2007 by Warren Dukes (warren.dukes@gmail.com)
Warren Dukes's avatar
Warren Dukes committed
3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
 * This project's homepage is: http://www.musicpd.org
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */

#ifndef PLAYER_H
#define PLAYER_H

22 23
#include "../config.h"

24
#include "decode.h"
25
#include "mpd_types.h"
Warren Dukes's avatar
Warren Dukes committed
26
#include "song.h"
27
#include "metadataChunk.h"
28

Warren Dukes's avatar
Warren Dukes committed
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
#include <stdio.h>
#include <sys/param.h>

#define PLAYER_STATE_STOP	0
#define PLAYER_STATE_PAUSE	1
#define PLAYER_STATE_PLAY	2

#define PLAYER_ERROR_NOERROR		0
#define PLAYER_ERROR_FILE		1
#define PLAYER_ERROR_AUDIO		2
#define PLAYER_ERROR_SYSTEM		3
#define PLAYER_ERROR_UNKTYPE		4
#define PLAYER_ERROR_FILENOTFOUND	5

/* 0->1->2->3->5 regular playback
 *        ->4->0 don't play queued song
 */
#define PLAYER_QUEUE_BLANK	0
#define PLAYER_QUEUE_FULL	1
#define PLAYER_QUEUE_DECODE	2
#define PLAYER_QUEUE_PLAY	3
#define PLAYER_QUEUE_STOP	4
#define PLAYER_QUEUE_EMPTY	5

#define PLAYER_QUEUE_UNLOCKED	0
#define PLAYER_QUEUE_LOCKED	1

56 57 58
#define PLAYER_METADATA_STATE_READ      1
#define PLAYER_METADATA_STATE_WRITE     2

Warren Dukes's avatar
Warren Dukes committed
59
typedef struct _PlayerControl {
Warren Dukes's avatar
Warren Dukes committed
60 61 62 63 64 65 66 67 68 69 70 71
	volatile mpd_sint8 stop;
	volatile mpd_sint8 play;
	volatile mpd_sint8 pause;
	volatile mpd_sint8 state;
	volatile mpd_sint8 closeAudio;
	volatile mpd_sint8 error;
	volatile mpd_uint16 bitRate;
	volatile mpd_sint8 bits;
	volatile mpd_sint8 channels;
	volatile mpd_uint32 sampleRate;
	volatile float totalTime;
	volatile float elapsedTime;
Avuton Olrich's avatar
Avuton Olrich committed
72 73 74 75
	volatile float fileTime;
	char utf8url[MAXPATHLEN + 1];
	char currentUrl[MAXPATHLEN + 1];
	char erroredUrl[MAXPATHLEN + 1];
Warren Dukes's avatar
Warren Dukes committed
76 77 78 79 80 81 82 83 84 85
	volatile mpd_sint8 queueState;
	volatile mpd_sint8 queueLockState;
	volatile mpd_sint8 lockQueue;
	volatile mpd_sint8 unlockQueue;
	volatile mpd_sint8 seek;
	volatile double seekWhere;
	volatile float crossFade;
	volatile mpd_uint16 softwareVolume;
	volatile double totalPlayTime;
	volatile int decode_pid;
86
	volatile mpd_sint8 cycleLogFiles;
Avuton Olrich's avatar
Avuton Olrich committed
87 88 89
	volatile mpd_sint8 metadataState;
	MetadataChunk metadataChunk;
	MetadataChunk fileMetadataChunk;
Warren Dukes's avatar
Warren Dukes committed
90 91
} PlayerControl;

92
void clearPlayerPid(void);
93

94
void player_sigChldHandler(int pid, int status);
Warren Dukes's avatar
Warren Dukes committed
95

96
int playerPlay(int fd, Song * song);
Warren Dukes's avatar
Warren Dukes committed
97

98
int playerSetPause(int fd, int pause);
99

100
int playerPause(int fd);
Warren Dukes's avatar
Warren Dukes committed
101

102
int playerStop(int fd);
Warren Dukes's avatar
Warren Dukes committed
103

104
void playerCloseAudio(void);
Warren Dukes's avatar
Warren Dukes committed
105

106
void playerKill(void);
Warren Dukes's avatar
Warren Dukes committed
107

108
int getPlayerTotalTime(void);
Warren Dukes's avatar
Warren Dukes committed
109

110
int getPlayerElapsedTime(void);
Warren Dukes's avatar
Warren Dukes committed
111

112
unsigned long getPlayerBitRate(void);
Warren Dukes's avatar
Warren Dukes committed
113

114
int getPlayerState(void);
Warren Dukes's avatar
Warren Dukes committed
115

116
void clearPlayerError(void);
Warren Dukes's avatar
Warren Dukes committed
117

118
char *getPlayerErrorStr(void);
Warren Dukes's avatar
Warren Dukes committed
119

120
int getPlayerError(void);
Warren Dukes's avatar
Warren Dukes committed
121

122
int playerInit(void);
Warren Dukes's avatar
Warren Dukes committed
123

124
int playerWait(int fd);
125

Warren Dukes's avatar
Warren Dukes committed
126
int queueSong(Song * song);
Warren Dukes's avatar
Warren Dukes committed
127

128
int getPlayerQueueState(void);
Warren Dukes's avatar
Warren Dukes committed
129 130 131

void setQueueState(int queueState);

132
void playerQueueLock(void);
Warren Dukes's avatar
Warren Dukes committed
133

134
void playerQueueUnlock(void);
Warren Dukes's avatar
Warren Dukes committed
135

136
int playerSeek(int fd, Song * song, float time);
Warren Dukes's avatar
Warren Dukes committed
137 138 139

void setPlayerCrossFade(float crossFadeInSeconds);

140
float getPlayerCrossFade(void);
Warren Dukes's avatar
Warren Dukes committed
141 142 143

void setPlayerSoftwareVolume(int volume);

144
double getPlayerTotalPlayTime(void);
Warren Dukes's avatar
Warren Dukes committed
145

146
unsigned int getPlayerSampleRate(void);
147

148
int getPlayerBits(void);
149

150
int getPlayerChannels(void);
151

152
void playerCycleLogFiles(void);
153

154
Song *playerCurrentDecodeSong(void);
155

Warren Dukes's avatar
Warren Dukes committed
156
#endif