Mercurial > audlegacy-plugins
diff src/cdaudio/cdaudio.c @ 561:914c96de3244 trunk
[svn] Convert plugins to use InputPlayback.output instead of InputPlugin.output
author | iabervon |
---|---|
date | Sun, 28 Jan 2007 21:09:12 -0800 |
parents | d5782f3bd760 |
children | daa0323924d6 |
line wrap: on
line diff
--- a/src/cdaudio/cdaudio.c Sun Jan 28 17:41:50 2007 -0800 +++ b/src/cdaudio/cdaudio.c Sun Jan 28 21:09:12 2007 -0800 @@ -117,8 +117,8 @@ static int get_time(InputPlayback *playback); static void get_song_info(char *filename, char **title, int *length); static TitleInput *get_song_tuple(char *filename); -static void get_volume(int *l, int *r); -static void set_volume(int l, int r); +static gint get_volume(int *l, int *r); +static gint set_volume(int l, int r); static void cleanup(void); void cdda_fileinfo(char *filename); @@ -857,8 +857,9 @@ } static void * -dae_play_loop(void *arg) +dae_play_loop(void *data) { + InputPlayback *playback = data; char *buffer = g_malloc(CD_FRAMESIZE_RAW * CDDA_DAE_FRAMES); int pos = LBA(cdda_playing.cd_toc.track[cdda_playing.track]); int end, frames; @@ -873,7 +874,7 @@ char *data; if (dae_data.seek != -1) { - cdda_ip.output->flush(dae_data.seek * 1000); + playback->output->flush(dae_data.seek * 1000); pos = LBA(cdda_playing.cd_toc.track[cdda_playing.track]) + dae_data.seek * 75; dae_data.seek = -1; @@ -909,21 +910,21 @@ data = buffer; while (cdda_playing.playing && left > 0 && dae_data.seek == -1) { int cur = MIN(512 * 2 * 2, left); - cdda_ip.add_vis_pcm(cdda_ip.output->written_time(), + cdda_ip.add_vis_pcm(playback->output->written_time(), FMT_S16_LE, 2, cur, data); - while (cdda_ip.output->buffer_free() < cur && + while (playback->output->buffer_free() < cur && cdda_playing.playing && dae_data.seek == -1) xmms_usleep(30000); if (cdda_playing.playing && dae_data.seek == -1) - produce_audio(cdda_ip.output->written_time(), FMT_S16_LE, 2, cur, data, &cdda_playing.playing); + produce_audio(playback->output->written_time(), FMT_S16_LE, 2, cur, data, &cdda_playing.playing); left -= cur; data += cur; } pos += frames; } - cdda_ip.output->buffer_free(); - cdda_ip.output->buffer_free(); + playback->output->buffer_free(); + playback->output->buffer_free(); g_free(buffer); g_thread_exit(NULL); @@ -931,9 +932,9 @@ } static void -dae_play(void) +dae_play(InputPlayback *playback) { - if (cdda_ip.output->open_audio(FMT_S16_LE, 44100, 2) == 0) { + if (playback->output->open_audio(FMT_S16_LE, 44100, 2) == 0) { dae_data.audio_error = TRUE; cdda_playing.playing = FALSE; return; @@ -941,7 +942,7 @@ dae_data.seek = -1; dae_data.eof = FALSE; dae_data.audio_error = FALSE; - dae_data.thread = g_thread_create(dae_play_loop, NULL, TRUE, NULL); + dae_data.thread = g_thread_create(dae_play_loop, playback, TRUE, NULL); } static void @@ -1002,7 +1003,7 @@ cdda_playing.playing = TRUE; if (drive->dae) - dae_play(); + dae_play(playback); else seek(playback, 0); return; @@ -1091,7 +1092,7 @@ } static void -stop(InputPlayback * data) +stop(InputPlayback * playback) { struct timeout *to_info; if (cdda_playing.fd < 0) @@ -1101,7 +1102,7 @@ if (cdda_playing.drive.dae) { g_thread_join(dae_data.thread); - cdda_ip.output->close_audio(); + playback->output->close_audio(); } else ioctl(cdda_playing.fd, XMMS_PAUSE, 0); @@ -1119,14 +1120,14 @@ } static void -cdda_pause(InputPlayback *data, short p) +cdda_pause(InputPlayback *playback, short p) { if (cdda_playing.drive.dae) { - cdda_ip.output->pause(p); + playback->output->pause(p); return; } if (p) { - pause_time = get_time(data); + pause_time = get_time(playback); ioctl(cdda_playing.fd, XMMS_PAUSE, 0); } else { @@ -1193,14 +1194,14 @@ } static int -get_time_dae(void) +get_time_dae(InputPlayback *playback) { if (dae_data.audio_error) return -2; if (!cdda_playing.playing || - (dae_data.eof && !cdda_ip.output->buffer_playing())) + (dae_data.eof && !playback->output->buffer_playing())) return -1; - return cdda_ip.output->output_time(); + return playback->output->output_time(); } static int @@ -1210,7 +1211,7 @@ return -1; if (cdda_playing.drive.dae) - return get_time_dae(); + return get_time_dae(playback); else return get_time_analog(); } @@ -1324,24 +1325,26 @@ #endif -static void +static gint get_volume(int *l, int *r) { if (cdda_playing.drive.dae) - cdda_ip.output->get_volume(l, r); + return 0; else if (cdda_playing.drive.mixer == CDDA_MIXER_OSS) oss_get_volume(l, r, cdda_playing.drive.oss_mixer); else if (cdda_playing.drive.mixer == CDDA_MIXER_DRIVE) drive_get_volume(l, r); + return 1; } -static void +static gint set_volume(int l, int r) { if (cdda_playing.drive.dae) - cdda_ip.output->set_volume(l, r); + return 0; else if (cdda_playing.drive.mixer == CDDA_MIXER_OSS) oss_set_volume(l, r, cdda_playing.drive.oss_mixer); else if (cdda_playing.drive.mixer == CDDA_MIXER_DRIVE) drive_set_volume(l, r); + return 1; }