Commit e2c8b960 authored by Max Kellermann's avatar Max Kellermann

moved code to pc_init(), dc_init()

parent 5e51fa02
...@@ -20,6 +20,14 @@ ...@@ -20,6 +20,14 @@
struct decoder_control dc; struct decoder_control dc;
void dc_init(void)
{
notify_init(&dc.notify);
dc.state = DECODE_STATE_STOP;
dc.command = DECODE_COMMAND_NONE;
dc.error = DECODE_ERROR_NOERROR;
}
void dc_command_wait(Notify *notify) void dc_command_wait(Notify *notify)
{ {
while (dc.command != DECODE_COMMAND_NONE) { while (dc.command != DECODE_COMMAND_NONE) {
......
...@@ -56,6 +56,8 @@ struct decoder_control { ...@@ -56,6 +56,8 @@ struct decoder_control {
extern struct decoder_control dc; extern struct decoder_control dc;
void dc_init(void);
static inline int decoder_is_idle(void) static inline int decoder_is_idle(void)
{ {
return dc.state == DECODE_STATE_STOP && return dc.state == DECODE_STATE_STOP &&
......
...@@ -25,7 +25,9 @@ ...@@ -25,7 +25,9 @@
#include "conf.h" #include "conf.h"
#include "path.h" #include "path.h"
#include "playerData.h" #include "playerData.h"
#include "outputBuffer.h"
#include "decoder_thread.h" #include "decoder_thread.h"
#include "decoder_control.h"
#include "player_control.h" #include "player_control.h"
#include "stats.h" #include "stats.h"
#include "sig_handlers.h" #include "sig_handlers.h"
...@@ -415,6 +417,9 @@ int main(int argc, char *argv[]) ...@@ -415,6 +417,9 @@ int main(int argc, char *argv[])
initCommands(); initCommands();
initPlayerData(); initPlayerData();
pc_init(buffered_before_play);
ob_init(buffered_chunks, &pc.notify);
dc_init();
initAudioConfig(); initAudioConfig();
initAudioDriver(); initAudioDriver();
initVolume(); initVolume();
...@@ -464,6 +469,7 @@ int main(int argc, char *argv[]) ...@@ -464,6 +469,7 @@ int main(int argc, char *argv[])
finishPermissions(); finishPermissions();
finishCommands(); finishCommands();
decoder_plugin_deinit_all(); decoder_plugin_deinit_all();
ob_free();
cleanUpPidFile(); cleanUpPidFile();
finishConf(); finishConf();
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "playerData.h" #include "playerData.h"
#include "player_control.h" #include "player_control.h"
#include "decoder_control.h"
#include "outputBuffer.h" #include "outputBuffer.h"
#include "conf.h" #include "conf.h"
#include "log.h" #include "log.h"
...@@ -27,15 +26,14 @@ ...@@ -27,15 +26,14 @@
#define DEFAULT_BUFFER_SIZE 2048 #define DEFAULT_BUFFER_SIZE 2048
#define DEFAULT_BUFFER_BEFORE_PLAY 10 #define DEFAULT_BUFFER_BEFORE_PLAY 10
unsigned int buffered_chunks;
unsigned int buffered_before_play; unsigned int buffered_before_play;
void initPlayerData(void) void initPlayerData(void)
{ {
float perc = DEFAULT_BUFFER_BEFORE_PLAY; float perc = DEFAULT_BUFFER_BEFORE_PLAY;
char *test; char *test;
int crossfade = 0;
size_t bufferSize = DEFAULT_BUFFER_SIZE; size_t bufferSize = DEFAULT_BUFFER_SIZE;
unsigned int buffered_chunks;
ConfigParam *param; ConfigParam *param;
param = getConfigParam(CONF_AUDIO_BUFFER_SIZE); param = getConfigParam(CONF_AUDIO_BUFFER_SIZE);
...@@ -71,22 +69,4 @@ void initPlayerData(void) ...@@ -71,22 +69,4 @@ void initPlayerData(void)
if (buffered_before_play > buffered_chunks) { if (buffered_before_play > buffered_chunks) {
buffered_before_play = buffered_chunks; buffered_before_play = buffered_chunks;
} }
ob_init(buffered_chunks, &pc.notify);
notify_init(&pc.notify);
pc.command = PLAYER_COMMAND_NONE;
pc.error = PLAYER_ERROR_NOERROR;
pc.state = PLAYER_STATE_STOP;
pc.queueState = PLAYER_QUEUE_BLANK;
pc.queueLockState = PLAYER_QUEUE_UNLOCKED;
pc.crossFade = crossfade;
pc.softwareVolume = 1000;
notify_init(&dc.notify);
dc.state = DECODE_STATE_STOP;
dc.command = DECODE_COMMAND_NONE;
dc.error = DECODE_ERROR_NOERROR;
} }
...@@ -19,6 +19,7 @@ ...@@ -19,6 +19,7 @@
#ifndef PLAYER_DATA_H #ifndef PLAYER_DATA_H
#define PLAYER_DATA_H #define PLAYER_DATA_H
extern unsigned int buffered_chunks;
extern unsigned int buffered_before_play; extern unsigned int buffered_before_play;
void initPlayerData(void); void initPlayerData(void);
......
...@@ -25,6 +25,19 @@ ...@@ -25,6 +25,19 @@
struct player_control pc; struct player_control pc;
void pc_init(unsigned int buffered_before_play)
{
pc.buffered_before_play = buffered_before_play;
notify_init(&pc.notify);
pc.command = PLAYER_COMMAND_NONE;
pc.error = PLAYER_ERROR_NOERROR;
pc.state = PLAYER_STATE_STOP;
pc.queueState = PLAYER_QUEUE_BLANK;
pc.queueLockState = PLAYER_QUEUE_UNLOCKED;
pc.crossFade = 0;
pc.softwareVolume = 1000;
}
static void set_current_song(Song *song) static void set_current_song(Song *song)
{ {
assert(song != NULL); assert(song != NULL);
......
...@@ -80,6 +80,8 @@ enum player_queue_state { ...@@ -80,6 +80,8 @@ enum player_queue_state {
#define PLAYER_QUEUE_LOCKED 1 #define PLAYER_QUEUE_LOCKED 1
struct player_control { struct player_control {
unsigned int buffered_before_play;
Notify notify; Notify notify;
volatile enum player_command command; volatile enum player_command command;
volatile enum player_state state; volatile enum player_state state;
...@@ -103,6 +105,8 @@ struct player_control { ...@@ -103,6 +105,8 @@ struct player_control {
extern struct player_control pc; extern struct player_control pc;
void pc_init(unsigned int buffered_before_play);
void player_command_finished(void); void player_command_finished(void);
void playerPlay(Song * song); void playerPlay(Song * song);
......
...@@ -18,7 +18,6 @@ ...@@ -18,7 +18,6 @@
#include "player_thread.h" #include "player_thread.h"
#include "player_control.h" #include "player_control.h"
#include "playerData.h"
#include "decoder_control.h" #include "decoder_control.h"
#include "audio.h" #include "audio.h"
#include "pcm_utils.h" #include "pcm_utils.h"
...@@ -171,7 +170,7 @@ static void do_play(void) ...@@ -171,7 +170,7 @@ static void do_play(void)
{ {
int do_pause = 0; int do_pause = 0;
int buffering = 1; int buffering = 1;
unsigned int bbp = buffered_before_play; unsigned int bbp = pc.buffered_before_play;
enum xfade_state do_xfade = XFADE_UNKNOWN; enum xfade_state do_xfade = XFADE_UNKNOWN;
unsigned int crossFadeChunks = 0; unsigned int crossFadeChunks = 0;
/** the position of the next cross-faded chunk in the next /** the position of the next cross-faded chunk in the next
...@@ -277,7 +276,7 @@ static void do_play(void) ...@@ -277,7 +276,7 @@ static void do_play(void)
cross_fade_calc(pc.crossFade, dc.totalTime, cross_fade_calc(pc.crossFade, dc.totalTime,
&(ob.audioFormat), &(ob.audioFormat),
ob.size - ob.size -
buffered_before_play); pc.buffered_before_play);
if (crossFadeChunks > 0) { if (crossFadeChunks > 0) {
do_xfade = XFADE_ENABLED; do_xfade = XFADE_ENABLED;
nextChunk = -1; nextChunk = -1;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment