aboutsummaryrefslogtreecommitdiffstats
path: root/src/player_control.h
diff options
context:
space:
mode:
authorMax Kellermann <max@duempel.org>2013-01-04 22:31:53 +0100
committerMax Kellermann <max@duempel.org>2013-01-04 22:31:53 +0100
commit81f3d893d9e41120d76a3e710db77ccd829cbf42 (patch)
treee5d58dcd2d8541d76ce3f966521acae94aa0b6df /src/player_control.h
parent05c91082e3de0b0078c26ddb9da68fd00da8c90e (diff)
downloadmpd-81f3d893d9e41120d76a3e710db77ccd829cbf42.tar.gz
mpd-81f3d893d9e41120d76a3e710db77ccd829cbf42.tar.xz
mpd-81f3d893d9e41120d76a3e710db77ccd829cbf42.zip
player_control.h: convert header to C++
Diffstat (limited to 'src/player_control.h')
-rw-r--r--src/player_control.h339
1 files changed, 0 insertions, 339 deletions
diff --git a/src/player_control.h b/src/player_control.h
deleted file mode 100644
index 3b536b8ba..000000000
--- a/src/player_control.h
+++ /dev/null
@@ -1,339 +0,0 @@
-/*
- * Copyright (C) 2003-2011 The Music Player Daemon Project
- * 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.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
- */
-
-#ifndef MPD_PLAYER_H
-#define MPD_PLAYER_H
-
-#include "audio_format.h"
-
-#include <glib.h>
-
-#include <stdint.h>
-
-struct decoder_control;
-
-enum player_state {
- PLAYER_STATE_STOP = 0,
- PLAYER_STATE_PAUSE,
- PLAYER_STATE_PLAY
-};
-
-enum player_command {
- PLAYER_COMMAND_NONE = 0,
- PLAYER_COMMAND_EXIT,
- PLAYER_COMMAND_STOP,
- PLAYER_COMMAND_PAUSE,
- PLAYER_COMMAND_SEEK,
- PLAYER_COMMAND_CLOSE_AUDIO,
-
- /**
- * At least one audio_output.enabled flag has been modified;
- * commit those changes to the output threads.
- */
- PLAYER_COMMAND_UPDATE_AUDIO,
-
- /** player_control.next_song has been updated */
- PLAYER_COMMAND_QUEUE,
-
- /**
- * cancel pre-decoding player_control.next_song; if the player
- * has already started playing this song, it will completely
- * stop
- */
- PLAYER_COMMAND_CANCEL,
-
- /**
- * Refresh status information in the #player_control struct,
- * e.g. elapsed_time.
- */
- PLAYER_COMMAND_REFRESH,
-};
-
-enum player_error {
- PLAYER_ERROR_NONE = 0,
-
- /**
- * The decoder has failed to decode the song.
- */
- PLAYER_ERROR_DECODER,
-
- /**
- * The audio output has failed.
- */
- PLAYER_ERROR_OUTPUT,
-};
-
-struct player_status {
- enum player_state state;
- uint16_t bit_rate;
- struct audio_format audio_format;
- float total_time;
- float elapsed_time;
-};
-
-struct player_control {
- unsigned buffer_chunks;
-
- unsigned int buffered_before_play;
-
- /** the handle of the player thread, or NULL if the player
- thread isn't running */
- GThread *thread;
-
- /**
- * This lock protects #command, #state, #error.
- */
- GMutex *mutex;
-
- /**
- * Trigger this object after you have modified #command.
- */
- GCond *cond;
-
- enum player_command command;
- enum player_state state;
-
- enum player_error error_type;
-
- /**
- * The error that occurred in the player thread. This
- * attribute is only valid if #error is not
- * #PLAYER_ERROR_NONE. The object must be freed when this
- * object transitions back to #PLAYER_ERROR_NONE.
- */
- GError *error;
-
- uint16_t bit_rate;
- struct audio_format audio_format;
- float total_time;
- float elapsed_time;
-
- /**
- * The next queued song.
- *
- * This is a duplicate, and must be freed when this attribute
- * is cleared.
- */
- struct song *next_song;
-
- double seek_where;
- float cross_fade_seconds;
- float mixramp_db;
- float mixramp_delay_seconds;
- double total_play_time;
-
- /**
- * If this flag is set, then the player will be auto-paused at
- * the end of the song, before the next song starts to play.
- *
- * This is a copy of the queue's "single" flag most of the
- * time.
- */
- bool border_pause;
-};
-
-struct player_control *
-pc_new(unsigned buffer_chunks, unsigned buffered_before_play);
-
-void
-pc_free(struct player_control *pc);
-
-/**
- * Locks the #player_control object.
- */
-static inline void
-player_lock(struct player_control *pc)
-{
- g_mutex_lock(pc->mutex);
-}
-
-/**
- * Unlocks the #player_control object.
- */
-static inline void
-player_unlock(struct player_control *pc)
-{
- g_mutex_unlock(pc->mutex);
-}
-
-/**
- * Waits for a signal on the #player_control object. This function is
- * only valid in the player thread. The object must be locked prior
- * to calling this function.
- */
-static inline void
-player_wait(struct player_control *pc)
-{
- g_cond_wait(pc->cond, pc->mutex);
-}
-
-/**
- * Waits for a signal on the #player_control object. This function is
- * only valid in the player thread. The #decoder_control object must
- * be locked prior to calling this function.
- *
- * Note the small difference to the player_wait() function!
- */
-void
-player_wait_decoder(struct player_control *pc, struct decoder_control *dc);
-
-/**
- * Signals the #player_control object. The object should be locked
- * prior to calling this function.
- */
-static inline void
-player_signal(struct player_control *pc)
-{
- g_cond_signal(pc->cond);
-}
-
-/**
- * Signals the #player_control object. The object is temporarily
- * locked by this function.
- */
-static inline void
-player_lock_signal(struct player_control *pc)
-{
- player_lock(pc);
- player_signal(pc);
- player_unlock(pc);
-}
-
-/**
- * @param song the song to be queued; the given instance will be owned
- * and freed by the player
- */
-void
-pc_play(struct player_control *pc, struct song *song);
-
-/**
- * see PLAYER_COMMAND_CANCEL
- */
-void
-pc_cancel(struct player_control *pc);
-
-void
-pc_set_pause(struct player_control *pc, bool pause_flag);
-
-void
-pc_pause(struct player_control *pc);
-
-/**
- * Set the player's #border_pause flag.
- */
-void
-pc_set_border_pause(struct player_control *pc, bool border_pause);
-
-void
-pc_kill(struct player_control *pc);
-
-void
-pc_get_status(struct player_control *pc, struct player_status *status);
-
-static inline enum player_state
-pc_get_state(struct player_control *pc)
-{
- return pc->state;
-}
-
-/**
- * Set the error. Discards any previous error condition.
- *
- * Caller must lock the object.
- *
- * @param type the error type; must not be #PLAYER_ERROR_NONE
- * @param error detailed error information; must not be NULL; the
- * #player_control takes over ownership of this #GError instance
- */
-void
-pc_set_error(struct player_control *pc, enum player_error type,
- GError *error);
-
-void
-pc_clear_error(struct player_control *pc);
-
-/**
- * Returns the human-readable message describing the last error during
- * playback, NULL if no error occurred. The caller has to free the
- * returned string.
- */
-char *
-pc_get_error_message(struct player_control *pc);
-
-static inline enum player_error
-pc_get_error_type(struct player_control *pc)
-{
- return pc->error_type;
-}
-
-void
-pc_stop(struct player_control *pc);
-
-void
-pc_update_audio(struct player_control *pc);
-
-/**
- * @param song the song to be queued; the given instance will be owned
- * and freed by the player
- */
-void
-pc_enqueue_song(struct player_control *pc, struct song *song);
-
-/**
- * Makes the player thread seek the specified song to a position.
- *
- * @param song the song to be queued; the given instance will be owned
- * and freed by the player
- * @return true on success, false on failure (e.g. if MPD isn't
- * playing currently)
- */
-bool
-pc_seek(struct player_control *pc, struct song *song, float seek_time);
-
-void
-pc_set_cross_fade(struct player_control *pc, float cross_fade_seconds);
-
-float
-pc_get_cross_fade(const struct player_control *pc);
-
-void
-pc_set_mixramp_db(struct player_control *pc, float mixramp_db);
-
-static inline float
-pc_get_mixramp_db(const struct player_control *pc)
-{
- return pc->mixramp_db;
-}
-
-void
-pc_set_mixramp_delay(struct player_control *pc, float mixramp_delay_seconds);
-
-static inline float
-pc_get_mixramp_delay(const struct player_control *pc)
-{
- return pc->mixramp_delay_seconds;
-}
-
-static inline double
-pc_get_total_play_time(const struct player_control *pc)
-{
- return pc->total_play_time;
-}
-
-#endif