diff --git a/example/audio.c b/example/audio.c index 535504c7..08ed1a0a 100644 --- a/example/audio.c +++ b/example/audio.c @@ -1,5 +1,5 @@ /* - $Id: audio.c,v 1.4 2005/03/19 06:42:24 rocky Exp $ + $Id: audio.c,v 1.5 2005/03/19 16:17:13 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -463,7 +463,7 @@ main(int argc, char *argv[]) if (sub.audio_status == CDIO_MMC_READ_SUB_ST_PAUSED || sub.audio_status == CDIO_MMC_READ_SUB_ST_PLAY) { { - printf("track %2d - %02d:%02d (%02d:%02d abs) ", + printf("track %2d - %02x:%02x (%02x:%02x abs) ", sub.track, sub.rel_addr.m, sub.rel_addr.s, sub.abs_addr.m, sub.abs_addr.s); } diff --git a/lib/driver/MSWindows/win32_ioctl.c b/lib/driver/MSWindows/win32_ioctl.c index 52301509..204163d7 100644 --- a/lib/driver/MSWindows/win32_ioctl.c +++ b/lib/driver/MSWindows/win32_ioctl.c @@ -1,5 +1,5 @@ /* - $Id: win32_ioctl.c,v 1.25 2005/03/19 06:42:24 rocky Exp $ + $Id: win32_ioctl.c,v 1.26 2005/03/19 16:17:13 rocky Exp $ Copyright (C) 2004, 2005 Rocky Bernstein @@ -26,7 +26,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: win32_ioctl.c,v 1.25 2005/03/19 06:42:24 rocky Exp $"; +static const char _rcsid[] = "$Id: win32_ioctl.c,v 1.26 2005/03/19 16:17:13 rocky Exp $"; #ifdef HAVE_WIN32_CDROM @@ -219,12 +219,12 @@ audio_read_subchannel_win32ioctl (void *p_user_data, const UCHAR *rel_addr = q_subchannel_data.CurrentPosition.TrackRelativeAddress; - p_subchannel->abs_addr.m = abs_addr[1]; - p_subchannel->abs_addr.s = abs_addr[2]; - p_subchannel->abs_addr.f = abs_addr[3]; - p_subchannel->rel_addr.m = rel_addr[1]; - p_subchannel->rel_addr.s = rel_addr[2]; - p_subchannel->rel_addr.f = rel_addr[3]; + p_subchannel->abs_addr.m = cdio_to_bcd8(abs_addr[1]); + p_subchannel->abs_addr.s = cdio_to_bcd8(abs_addr[2]); + p_subchannel->abs_addr.f = cdio_to_bcd8(abs_addr[3]); + p_subchannel->rel_addr.m = cdio_to_bcd8(rel_addr[1]); + p_subchannel->rel_addr.s = cdio_to_bcd8(rel_addr[2]); + p_subchannel->rel_addr.f = cdio_to_bcd8(rel_addr[3]); } return DRIVER_OP_SUCCESS; diff --git a/lib/driver/bsdi.c b/lib/driver/bsdi.c index 41c35eae..d92a700c 100644 --- a/lib/driver/bsdi.c +++ b/lib/driver/bsdi.c @@ -1,5 +1,5 @@ /* - $Id: bsdi.c,v 1.7 2005/03/19 07:28:56 rocky Exp $ + $Id: bsdi.c,v 1.8 2005/03/19 16:17:13 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: bsdi.c,v 1.7 2005/03/19 07:28:56 rocky Exp $"; +static const char _rcsid[] = "$Id: bsdi.c,v 1.8 2005/03/19 16:17:13 rocky Exp $"; #include #include @@ -335,14 +335,14 @@ audio_read_subchannel_bsdi (void *p_user_data, cdio_subchannel_t *p_subchannel) p_subchannel->index = cdstat.index_num; cdio_lba_to_msf(cdstat.abs_frame, &msf); - p_subchannel->abs_addr.m = cdio_from_bcd8 (msf.m); - p_subchannel->abs_addr.s = cdio_from_bcd8 (msf.s); - p_subchannel->abs_addr.f = cdio_from_bcd8 (msf.f); + p_subchannel->abs_addr.m = msf.m; + p_subchannel->abs_addr.s = msf.s; + p_subchannel->abs_addr.f = msf.f; cdio_lsn_to_msf(cdstat.rel_frame, &msf); - p_subchannel->rel_addr.m = cdio_from_bcd8 (msf.m); - p_subchannel->rel_addr.s = cdio_from_bcd8 (msf.s); - p_subchannel->rel_addr.f = cdio_from_bcd8 (msf.f); + p_subchannel->rel_addr.m = msf.m; + p_subchannel->rel_addr.s = msf.s; + p_subchannel->rel_addr.f = msf.f; switch(cdstat.state) { case cdstate_unknown: diff --git a/lib/driver/gnu_linux.c b/lib/driver/gnu_linux.c index 3847b11c..54a04526 100644 --- a/lib/driver/gnu_linux.c +++ b/lib/driver/gnu_linux.c @@ -1,5 +1,5 @@ /* - $Id: gnu_linux.c,v 1.10 2005/03/15 12:11:53 rocky Exp $ + $Id: gnu_linux.c,v 1.11 2005/03/19 16:17:13 rocky Exp $ Copyright (C) 2001 Herbert Valerio Riedel Copyright (C) 2002, 2003, 2004, 2005 Rocky Bernstein @@ -27,7 +27,7 @@ # include "config.h" #endif -static const char _rcsid[] = "$Id: gnu_linux.c,v 1.10 2005/03/15 12:11:53 rocky Exp $"; +static const char _rcsid[] = "$Id: gnu_linux.c,v 1.11 2005/03/19 16:17:13 rocky Exp $"; #include @@ -271,8 +271,35 @@ audio_read_subchannel_linux (void *p_user_data, { const _img_private_t *p_env = p_user_data; - p_subchannel->format = CDIO_CDROM_MSF; - return ioctl(p_env->gen.fd, CDROMSUBCHNL, p_subchannel); + struct cdrom_subchnl subchannel; + int i_rc; + + subchannel.cdsc_format = CDIO_CDROM_MSF; + i_rc = ioctl(p_env->gen.fd, CDROMSUBCHNL, &subchannel); + if (0 == i_rc) { + p_subchannel->control = subchannel.cdsc_ctrl; + p_subchannel->track = subchannel.cdsc_trk; + p_subchannel->index = subchannel.cdsc_ind; + + p_subchannel->abs_addr.m = + cdio_to_bcd8(subchannel.cdsc_absaddr.msf.minute); + p_subchannel->abs_addr.s = + cdio_to_bcd8(subchannel.cdsc_absaddr.msf.second); + p_subchannel->abs_addr.f = + cdio_to_bcd8(subchannel.cdsc_absaddr.msf.frame); + p_subchannel->rel_addr.m = + cdio_to_bcd8(subchannel.cdsc_reladdr.msf.minute); + p_subchannel->rel_addr.s = + cdio_to_bcd8(subchannel.cdsc_reladdr.msf.second); + p_subchannel->rel_addr.f = + cdio_to_bcd8(subchannel.cdsc_reladdr.msf.frame); + p_subchannel->audio_status = subchannel.cdsc_audiostatus; + + return DRIVER_OP_SUCCESS; + } else { + cdio_info ("ioctl CDROMSUBCHNL failed: %s\n", strerror(errno)); + return DRIVER_OP_ERROR; + } } /*! diff --git a/lib/driver/mmc.c b/lib/driver/mmc.c index dc31a11d..8469a5c4 100644 --- a/lib/driver/mmc.c +++ b/lib/driver/mmc.c @@ -1,6 +1,6 @@ /* Common Multimedia Command (MMC) routines. - $Id: mmc.c,v 1.23 2005/03/19 06:42:24 rocky Exp $ + $Id: mmc.c,v 1.24 2005/03/19 16:17:13 rocky Exp $ Copyright (C) 2004, 2005 Rocky Bernstein @@ -26,6 +26,7 @@ #include #include #include +#include #include "cdio_private.h" #ifdef HAVE_STRING_H @@ -608,12 +609,12 @@ mmc_audio_read_subchannel (CdIo_t *p_cdio, cdio_subchannel_t *p_subchannel) p_subchannel->control = mmc_subchannel.control; p_subchannel->track = mmc_subchannel.track; p_subchannel->index = mmc_subchannel.index; - p_subchannel->abs_addr.m = mmc_subchannel.abs_addr[1]; - p_subchannel->abs_addr.s = mmc_subchannel.abs_addr[2]; - p_subchannel->abs_addr.f = mmc_subchannel.abs_addr[3]; - p_subchannel->rel_addr.m = mmc_subchannel.rel_addr[1]; - p_subchannel->rel_addr.s = mmc_subchannel.rel_addr[2]; - p_subchannel->rel_addr.f = mmc_subchannel.rel_addr[3]; + p_subchannel->abs_addr.m = cdio_to_bcd8(mmc_subchannel.abs_addr[1]); + p_subchannel->abs_addr.s = cdio_to_bcd8(mmc_subchannel.abs_addr[2]); + p_subchannel->abs_addr.f = cdio_to_bcd8(mmc_subchannel.abs_addr[3]); + p_subchannel->rel_addr.m = cdio_to_bcd8(mmc_subchannel.rel_addr[1]); + p_subchannel->rel_addr.s = cdio_to_bcd8(mmc_subchannel.rel_addr[2]); + p_subchannel->rel_addr.f = cdio_to_bcd8(mmc_subchannel.rel_addr[3]); } return i_rc; } diff --git a/src/cdda-player.c b/src/cdda-player.c index eadeb728..581c44e6 100644 --- a/src/cdda-player.c +++ b/src/cdda-player.c @@ -1,5 +1,5 @@ /* - $Id: cdda-player.c,v 1.20 2005/03/19 06:42:24 rocky Exp $ + $Id: cdda-player.c,v 1.21 2005/03/19 16:17:13 rocky Exp $ Copyright (C) 2005 Rocky Bernstein @@ -606,7 +606,7 @@ display_status(bool b_status_only) { uint8_t i_level = audio_volume.level[i_vol_port]; sprintf(line, - "track %2d - %02d:%02d of %s (%02d:%02d abs) %s volume: %d", + "track %2d - %02x:%02x of %s (%02x:%02x abs) %s volume: %d", sub.track, sub.rel_addr.m, sub.rel_addr.s, cd_info[sub.track].length, sub.abs_addr.m, sub.abs_addr.s, @@ -614,7 +614,7 @@ display_status(bool b_status_only) (i_level*100+128) / 256 ); } else - sprintf(line,"track %2d - %02d:%02d of %s (%02d:%02d abs) %s", + sprintf(line,"track %2d - %02x:%02x of %s (%02x:%02x abs) %s", sub.track, sub.rel_addr.m, sub.rel_addr.s, cd_info[sub.track].length, sub.abs_addr.m, sub.abs_addr.s, mmc_audio_state2str(sub.audio_status)); @@ -1255,34 +1255,35 @@ main(int argc, char *argv[]) stop_track = start_track+1; one_track = 1; } - interactive = 0; + interactive = false; todo = PLAY_TRACK; break; case 'p': - interactive = 0; + interactive = false; todo = PLAY_CD; break; case 'l': - interactive = 0; + interactive = false; todo = LIST_TRACKS; break; case 'C': - interactive = 0; + interactive = false; todo = CLOSE_CD; break; case 'c': - interactive = 0; + interactive = false; todo = PS_LIST_TRACKS; break; case 's': - interactive = 0; + interactive = false; todo = STOP_PLAYING; break; case 'S': + interactive = false; todo = LIST_SUBCHANNEL; break; case 'e': - interactive = 0; + interactive = false; todo = EJECT_CD; break; case 'k': @@ -1395,7 +1396,7 @@ main(int argc, char *argv[]) if (sub.audio_status == CDIO_MMC_READ_SUB_ST_PAUSED || sub.audio_status == CDIO_MMC_READ_SUB_ST_PLAY) { { - printf("track %2d - %02d:%02d (%02d:%02d abs) ", + printf("track %2d - %02x:%02x (%02x:%02x abs) ", sub.track, sub.rel_addr.m, sub.rel_addr.s, sub.abs_addr.m, sub.abs_addr.s); }