50 static pthread_mutex_t
ready_mutex = PTHREAD_MUTEX_INITIALIZER;
51 static pthread_cond_t
ready_cond = PTHREAD_COND_INITIALIZER;
84 memset (& gain_from_playlist, 0,
sizeof gain_from_playlist);
98 gain_from_playlist.
album_gain = album_gain / (float) gain_unit;
99 gain_from_playlist.
track_gain = track_gain / (float) gain_unit;
104 gain_from_playlist.
album_peak = album_peak / (float) peak_unit;
105 gain_from_playlist.
track_peak = track_peak / (float) peak_unit;
173 static void update_cb (
void * hook_data,
void * user_data)
414 current_file, start_time, end_time,
paused);
427 g_return_if_fail (new_filename);
492 static void set_data (InputPlayback * p,
void * data)
504 static void set_params (InputPlayback * p,
int bitrate,
int samplerate,
517 static void set_tuple (InputPlayback * p, Tuple * tuple)
527 p->output->set_replaygain_info (& gain_from_playlist);
562 snprintf (s,
sizeof s,
get_bool (
NULL,
"leading_zero") ?
563 " (%02d:%02d)" :
" (%d:%02d)", len / 60, len % 60);
565 snprintf (s,
sizeof s,
" (%d:%02d:%02d)", len / 3600, (len / 60) %
606 l =
CLAMP (l, 0, 100);
607 r =
CLAMP (r, 0, 100);
void output_close_audio(void)
static void set_gain_from_playlist(InputPlayback *p)
void drct_set_volume(int l, int r)
int playlist_get_playing(void)
bool_t playlist_next_song(int playlist_num, bool_t repeat)
char * playback_entry_get_title(void)
static float a[EQ_BANDS][2]
void output_set_replaygain_info(const ReplayGainInfo *info)
static bool_t end_cb(void *unused)
EXPORT int vfs_fclose(VFSFile *file)
Closes a VFS stream and destroys a VFSFile object.
char * drct_get_filename(void)
static struct OutputAPI output_api
static InputPlayback playback_api
int output_get_time(void)
static float b[EQ_BANDS][2]
char * playback_entry_get_filename(void)
char * str_printf(const char *format,...)
static pthread_cond_t ready_cond
char * drct_get_title(void)
EXPORT void hook_associate(const char *name, HookFunction func, void *user)
static void * get_data(InputPlayback *p)
static pthread_mutex_t ready_mutex
void set_bool(const char *section, const char *name, bool_t value)
#define CLAMP(a, min, max)
void drct_get_info(int *bitrate, int *samplerate, int *channels)
void drct_get_ab_repeat(int *a, int *b)
void output_abort_write(void)
static bool_t playback_error
static void read_gain_from_tuple(const Tuple *tuple)
#define hook_dissociate(n, f)
int playback_entry_get_length(void)
bool_t drct_get_ready(void)
char * str_ref(char *str)
const void * plugin_get_header(PluginHandle *plugin)
static void update_cb(void *hook_data, void *user_data)
static void playback_finish(void)
static void wait_until_ready(void)
static void * playback_thread(void *unused)
Tuple * playback_entry_get_tuple(void)
static InputPlugin * current_decoder
PluginHandle * playback_entry_get_decoder(void)
void output_set_volume(int left, int right)
static void * current_data
EXPORT void tuple_unref(Tuple *tuple)
static void set_tuple(InputPlayback *p, Tuple *tuple)
bool_t(* open_audio)(int format, int rate, int channels)
static void set_pb_ready(InputPlayback *p)
static ReplayGainInfo gain_from_playlist
static char * current_title
bool_t get_bool(const char *section, const char *name)
int drct_get_length(void)
static char * current_filename
static int current_length
static int current_samplerate
static int failed_entries
bool_t output_open_audio(int format, int rate, int channels)
int output_written_time(void)
void str_unref(char *str)
EXPORT VFSFile * vfs_fopen(const char *path, const char *mode)
Opens a stream from a VFS transport using one of the registered VFSConstructor handlers.
EXPORT void event_queue_cancel(const char *name, void *data)
void playlist_set_position(int playlist_num, int entry_num)
static bool_t update_from_playlist(void)
bool_t drct_get_paused(void)
static int current_bitrate
#define event_queue(n, d)
int playback_entry_get_position(void)
static void playback_cleanup(void)
static pthread_t playback_thread_handle
void playback_entry_set_tuple(Tuple *tuple)
static int current_channels
static bool_t song_finished
EXPORT void hook_call(const char *name, void *data)
EXPORT TupleValueType tuple_get_value_type(const Tuple *tuple, int nfield, const char *field)
Returns TupleValueType of given #Tuple field.
void output_get_volume(int *left, int *right)
void output_write_audio(void *data, int size)
bool_t output_is_open(void)
void playback_play(int seek_time, bool_t pause)
static VFSFile * current_file
static bool_t restart_flag
EXPORT void vfs_rewind(VFSFile *file)
Rewinds a VFS stream.
static void set_params(InputPlayback *p, int bitrate, int samplerate, int channels)
void interface_show_error(const char *message)
int playlist_get_position(int playlist_num)
static void set_data(InputPlayback *p, void *data)
void playlist_set_playing(int playlist_num)
void drct_get_volume(int *l, int *r)
void output_set_time(int time)
void drct_set_ab_repeat(int a, int b)
void output_pause(bool_t pause)
bool_t drct_get_playing(void)
EXPORT int tuple_get_int(const Tuple *tuple, int nfield, const char *field)
Returns integer associated to #Tuple field.