Add get_disc_mode to image readers.

Add it in cd-info display.
Update regression tests.

I'm not sure disc_mode is all that helpful or correct.
This commit is contained in:
rocky
2004-07-24 14:23:37 +00:00
parent c81ea6b678
commit b4cea7fd9e
22 changed files with 314 additions and 65 deletions

View File

@@ -1,5 +1,5 @@
/* /*
$Id: bincue.c,v 1.35 2004/07/17 22:16:47 rocky Exp $ $Id: bincue.c,v 1.36 2004/07/24 14:23:38 rocky Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -26,7 +26,7 @@
(*.cue). (*.cue).
*/ */
static const char _rcsid[] = "$Id: bincue.c,v 1.35 2004/07/17 22:16:47 rocky Exp $"; static const char _rcsid[] = "$Id: bincue.c,v 1.36 2004/07/24 14:23:38 rocky Exp $";
#include "image.h" #include "image.h"
#include "cdio_assert.h" #include "cdio_assert.h"
@@ -84,7 +84,7 @@ typedef struct {
track_t i_tracks; /* number of tracks in image */ track_t i_tracks; /* number of tracks in image */
track_t i_first_track; /* track number of first track */ track_t i_first_track; /* track number of first track */
cdtext_t cdtext; /* CD-TEXT */ cdtext_t cdtext; /* CD-TEXT */
track_format_t mode; discmode_t disc_mode;
} _img_private_t; } _img_private_t;
static uint32_t _stat_size_bincue (void *user_data); static uint32_t _stat_size_bincue (void *user_data);
@@ -97,7 +97,7 @@ static bool parse_cuefile (_img_private_t *cd, const char *toc_name);
Initialize image structures. Initialize image structures.
*/ */
static bool static bool
_bincue_init (_img_private_t *env) _init_bincue (_img_private_t *env)
{ {
lsn_t lead_lsn; lsn_t lead_lsn;
@@ -115,6 +115,7 @@ _bincue_init (_img_private_t *env)
env->gen.init = true; env->gen.init = true;
env->i_first_track = 1; env->i_first_track = 1;
env->psz_mcn = NULL; env->psz_mcn = NULL;
env->disc_mode = CDIO_DISC_MODE_NO_INFO;
cdtext_init (&(env->cdtext)); cdtext_init (&(env->cdtext));
@@ -397,6 +398,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->endsize = 0; this_track->endsize = 0;
this_track->track_format = TRACK_FORMAT_AUDIO; this_track->track_format = TRACK_FORMAT_AUDIO;
this_track->track_green = false; this_track->track_green = false;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DA;
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_XA_2_1:
case CDIO_DISC_MODE_CD_XA_2_2:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE1/2048", psz_field)) { } else if (0 == strcmp ("MODE1/2048", psz_field)) {
if (cd) { if (cd) {
@@ -408,6 +427,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->datastart = 0; this_track->datastart = 0;
this_track->datasize = CDIO_CD_FRAMESIZE; this_track->datasize = CDIO_CD_FRAMESIZE;
this_track->endsize = 0; this_track->endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
break;
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_XA_2_1:
case CDIO_DISC_MODE_CD_XA_2_2:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE1/2352", psz_field)) { } else if (0 == strcmp ("MODE1/2352", psz_field)) {
if (cd) { if (cd) {
@@ -420,6 +457,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->endsize = CDIO_CD_EDC_SIZE this_track->endsize = CDIO_CD_EDC_SIZE
+ CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE; + CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE;
this_track->mode = MODE1_RAW; this_track->mode = MODE1_RAW;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_2;
break;
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_XA_2_1:
case CDIO_DISC_MODE_CD_XA_2_2:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE2/2336", psz_field)) { } else if (0 == strcmp ("MODE2/2336", psz_field)) {
if (cd) { if (cd) {
@@ -431,6 +486,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
+ CDIO_CD_HEADER_SIZE; + CDIO_CD_HEADER_SIZE;
this_track->datasize = M2RAW_SECTOR_SIZE; this_track->datasize = M2RAW_SECTOR_SIZE;
this_track->endsize = 0; this_track->endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_2;
break;
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_XA_2_1:
case CDIO_DISC_MODE_CD_XA_2_2:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE2/2048", psz_field)) { } else if (0 == strcmp ("MODE2/2048", psz_field)) {
if (cd) { if (cd) {
@@ -438,6 +511,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->track_format= TRACK_FORMAT_XA; this_track->track_format= TRACK_FORMAT_XA;
this_track->track_green = true; this_track->track_green = true;
this_track->mode = MODE2_FORM1; this_track->mode = MODE2_FORM1;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
break;
case CDIO_DISC_MODE_CD_XA_2_1:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_XA_2_2:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE2/2324", psz_field)) { } else if (0 == strcmp ("MODE2/2324", psz_field)) {
if (cd) { if (cd) {
@@ -445,6 +536,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->track_format= TRACK_FORMAT_XA; this_track->track_format= TRACK_FORMAT_XA;
this_track->track_green = true; this_track->track_green = true;
this_track->mode = MODE2_FORM2; this_track->mode = MODE2_FORM2;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2;
break;
case CDIO_DISC_MODE_CD_XA_2_2:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_XA_2_1:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE2/2336", psz_field)) { } else if (0 == strcmp ("MODE2/2336", psz_field)) {
if (cd) { if (cd) {
@@ -456,6 +565,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
+ CDIO_CD_HEADER_SIZE; + CDIO_CD_HEADER_SIZE;
this_track->datasize = M2RAW_SECTOR_SIZE; this_track->datasize = M2RAW_SECTOR_SIZE;
this_track->endsize = 0; this_track->endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2;
break;
case CDIO_DISC_MODE_CD_XA_2_2:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_XA_2_1:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else if (0 == strcmp ("MODE2/2352", psz_field)) { } else if (0 == strcmp ("MODE2/2352", psz_field)) {
if (cd) { if (cd) {
@@ -467,6 +594,24 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
+ CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE; + CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE;
this_track->datasize = CDIO_CD_FRAMESIZE; this_track->datasize = CDIO_CD_FRAMESIZE;
this_track->endsize = CDIO_CD_SYNC_SIZE + CDIO_CD_ECC_SIZE; this_track->endsize = CDIO_CD_SYNC_SIZE + CDIO_CD_ECC_SIZE;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2;
break;
case CDIO_DISC_MODE_CD_XA_2_2:
case CDIO_DISC_MODE_CD_MIXED:
case CDIO_DISC_MODE_ERROR:
/* Disc type stays the same. */
break;
case CDIO_DISC_MODE_CD_DA:
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_XA_2_1:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
} }
} else { } else {
cdio_log(log_level, cdio_log(log_level,
@@ -1012,6 +1157,7 @@ cdio_open_cue (const char *psz_cue_name)
.get_cdtext = _get_cdtext_image, .get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_bincue, .get_devices = cdio_get_devices_bincue,
.get_default_device = cdio_get_default_device_bincue, .get_default_device = cdio_get_default_device_bincue,
.get_discmode = _get_discmode_image,
.get_drive_cap = _get_drive_cap_image, .get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image, .get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image, .get_mcn = _get_mcn_image,
@@ -1055,7 +1201,7 @@ cdio_open_cue (const char *psz_cue_name)
_set_arg_image (_data, "source", psz_bin_name); _set_arg_image (_data, "source", psz_bin_name);
free(psz_bin_name); free(psz_bin_name);
if (_bincue_init(_data)) { if (_init_bincue(_data)) {
return ret; return ret;
} else { } else {
_free_image(_data); _free_image(_data);

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cdrdao.c,v 1.20 2004/07/17 22:16:47 rocky Exp $ $Id: cdrdao.c,v 1.21 2004/07/24 14:23:39 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
toc reading routine adapted from cuetools toc reading routine adapted from cuetools
@@ -25,7 +25,7 @@
(*.cue). (*.cue).
*/ */
static const char _rcsid[] = "$Id: cdrdao.c,v 1.20 2004/07/17 22:16:47 rocky Exp $"; static const char _rcsid[] = "$Id: cdrdao.c,v 1.21 2004/07/24 14:23:39 rocky Exp $";
#include "image.h" #include "image.h"
#include "cdio_assert.h" #include "cdio_assert.h"
@@ -84,7 +84,7 @@ typedef struct {
track_t i_tracks; /* number of tracks in image */ track_t i_tracks; /* number of tracks in image */
track_t i_first_track; /* track number of first track */ track_t i_first_track; /* track number of first track */
cdtext_t cdtext; /* CD-TEXT */ cdtext_t cdtext; /* CD-TEXT */
track_format_t mode; discmode_t disc_mode;
} _img_private_t; } _img_private_t;
static uint32_t _stat_size_cdrdao (void *user_data); static uint32_t _stat_size_cdrdao (void *user_data);
@@ -110,6 +110,7 @@ _init_cdrdao (_img_private_t *env)
env->gen.init = true; env->gen.init = true;
env->i_first_track = 1; env->i_first_track = 1;
env->psz_mcn = NULL; env->psz_mcn = NULL;
env->disc_mode = CDIO_DISC_MODE_NO_INFO;
cdtext_init (&(env->cdtext)); cdtext_init (&(env->cdtext));
@@ -346,14 +347,14 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
} else if (0 == strcmp ("CD_DA", psz_keyword)) { } else if (0 == strcmp ("CD_DA", psz_keyword)) {
if (-1 == i) { if (-1 == i) {
if (NULL != cd) if (NULL != cd)
cd->mode = TRACK_FORMAT_AUDIO; cd->disc_mode = CDIO_DISC_MODE_CD_DA;
} else { } else {
goto not_in_global_section; goto not_in_global_section;
} }
} else if (0 == strcmp ("CD_ROM", psz_keyword)) { } else if (0 == strcmp ("CD_ROM", psz_keyword)) {
if (-1 == i) { if (-1 == i) {
if (NULL != cd) if (NULL != cd)
cd->mode = TRACK_FORMAT_DATA; cd->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
} else { } else {
goto not_in_global_section; goto not_in_global_section;
} }
@@ -361,7 +362,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
} else if (0 == strcmp ("CD_ROM_XA", psz_keyword)) { } else if (0 == strcmp ("CD_ROM_XA", psz_keyword)) {
if (-1 == i) { if (-1 == i) {
if (NULL != cd) if (NULL != cd)
cd->mode = TRACK_FORMAT_XA; cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
} else { } else {
goto not_in_global_section; goto not_in_global_section;
} }
@@ -991,6 +992,7 @@ cdio_open_cdrdao (const char *psz_cue_name)
.get_cdtext = _get_cdtext_image, .get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_cdrdao, .get_devices = cdio_get_devices_cdrdao,
.get_default_device = cdio_get_default_device_cdrdao, .get_default_device = cdio_get_default_device_cdrdao,
.get_discmode = _get_discmode_image,
.get_drive_cap = _get_drive_cap_image, .get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image, .get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image, .get_mcn = _get_mcn_image,

View File

@@ -1,5 +1,5 @@
/* /*
$Id: nrg.c,v 1.32 2004/07/17 22:16:47 rocky Exp $ $Id: nrg.c,v 1.33 2004/07/24 14:23:39 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org> Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
@@ -45,7 +45,7 @@
#include "_cdio_stdio.h" #include "_cdio_stdio.h"
#include "nrg.h" #include "nrg.h"
static const char _rcsid[] = "$Id: nrg.c,v 1.32 2004/07/17 22:16:47 rocky Exp $"; static const char _rcsid[] = "$Id: nrg.c,v 1.33 2004/07/24 14:23:39 rocky Exp $";
/* reader */ /* reader */
@@ -80,7 +80,7 @@ typedef struct {
track_t i_tracks; /* number of tracks in image */ track_t i_tracks; /* number of tracks in image */
track_t i_first_track; /* track number of first track */ track_t i_first_track; /* track number of first track */
cdtext_t cdtext; /* CD-TEXT */ cdtext_t cdtext; /* CD-TEXT */
track_format_t mode; discmode_t disc_mode;
/* Nero Specific stuff. Note: for the image_free to work, this *must* /* Nero Specific stuff. Note: for the image_free to work, this *must*
be last. */ be last. */
@@ -396,32 +396,32 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name)
switch (env->dtyp) { switch (env->dtyp) {
case 0: case 0:
/* Mode 1 */ /* Mode 1 */
track_format = TRACK_FORMAT_DATA; track_format = TRACK_FORMAT_DATA;
env->mode = MODE1; env->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
break; break;
case 2: case 2:
/* Mode 2 form 1 */ /* Mode 2 form 1 */
form2 = 0; form2 = 0;
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
env->mode = MODE2_FORM1; env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
break; break;
case 3: case 3:
/* Mode 2 */ /* Mode 2 */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
env->mode = MODE2; env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; /* ?? */
break; break;
case 0x6: case 0x6:
/* Mode2 form mix */ /* Mode2 form mix */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
env->mode = MODE2_FORM_MIX; env->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break; break;
case 0x20: /* ??? Mode2 form 2, Mode2 raw?? */ case 0x20: /* ??? Mode2 form 2, Mode2 raw?? */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
env->mode = MODE2_FORM2; /* Just a guess. */ env->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; /* ??. */
break; break;
case 0x7: case 0x7:
track_format = TRACK_FORMAT_AUDIO; track_format = TRACK_FORMAT_AUDIO;
env->mode = AUDIO; env->disc_mode = CDIO_DISC_MODE_CD_DA;
break; break;
default: default:
cdio_log (log_level, "Unknown track format %x\n", cdio_log (log_level, "Unknown track format %x\n",
@@ -509,43 +509,43 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name)
switch (track_mode) { switch (track_mode) {
case 0: case 0:
/* Mode 1 */ /* Mode 1 */
track_format = TRACK_FORMAT_DATA; track_format = TRACK_FORMAT_DATA;
track_green = false; /* ?? */ track_green = false; /* ?? */
blocksize = CDIO_CD_FRAMESIZE; blocksize = CDIO_CD_FRAMESIZE;
env->mode = MODE1; env->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
break; break;
case 2: case 2:
/* Mode 2 form 1 */ /* Mode 2 form 1 */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
track_green = false; /* ?? */ track_green = false; /* ?? */
blocksize = CDIO_CD_FRAMESIZE; blocksize = CDIO_CD_FRAMESIZE;
env->mode = MODE2_FORM1; env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
break; break;
case 3: case 3:
/* Mode 2 */ /* Mode 2 */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
track_green = true; track_green = true;
blocksize = M2RAW_SECTOR_SIZE; blocksize = M2RAW_SECTOR_SIZE;
env->mode = MODE2; env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; /* ?? */
break; break;
case 06: case 06:
/* Mode2 form mix */ /* Mode2 form mix */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
track_green = true; track_green = true;
blocksize = M2RAW_SECTOR_SIZE; blocksize = M2RAW_SECTOR_SIZE;
env->mode = MODE2_FORM_MIX; env->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break; break;
case 0x20: /* ??? Mode2 form 2, Mode2 raw?? */ case 0x20: /* ??? Mode2 form 2, Mode2 raw?? */
track_format = TRACK_FORMAT_XA; track_format = TRACK_FORMAT_XA;
track_green = true; track_green = true;
blocksize = M2RAW_SECTOR_SIZE; blocksize = M2RAW_SECTOR_SIZE;
env->mode = MODE2_FORM2; /* Just a guess. */ env->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; /* ??. */
break; break;
case 7: case 7:
track_format = TRACK_FORMAT_AUDIO; track_format = TRACK_FORMAT_AUDIO;
track_green = false; track_green = false;
blocksize = CDIO_CD_FRAMESIZE_RAW; blocksize = CDIO_CD_FRAMESIZE_RAW;
env->mode = AUDIO; env->disc_mode = CDIO_DISC_MODE_CD_DA;
break; break;
default: default:
cdio_log (log_level, cdio_log (log_level,
@@ -756,6 +756,7 @@ _init_nrg (_img_private_t *env)
} }
env->psz_mcn = NULL; env->psz_mcn = NULL;
env->disc_mode = CDIO_DISC_MODE_NO_INFO;
cdtext_init (&(env->cdtext)); cdtext_init (&(env->cdtext));
@@ -1189,6 +1190,7 @@ cdio_open_nrg (const char *psz_source)
.get_cdtext = _get_cdtext_image, .get_cdtext = _get_cdtext_image,
.get_devices = cdio_get_devices_nrg, .get_devices = cdio_get_devices_nrg,
.get_default_device = cdio_get_default_device_nrg, .get_default_device = cdio_get_default_device_nrg,
.get_discmode = _get_discmode_image,
.get_drive_cap = _get_drive_cap_image, .get_drive_cap = _get_drive_cap_image,
.get_first_track_num= _get_first_track_num_image, .get_first_track_num= _get_first_track_num_image,
.get_mcn = _get_mcn_image, .get_mcn = _get_mcn_image,

View File

@@ -1,5 +1,5 @@
/* /*
$Id: image_common.h,v 1.13 2004/07/17 22:16:47 rocky Exp $ $Id: image_common.h,v 1.14 2004/07/24 14:23:37 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
@@ -119,6 +119,16 @@ _get_cdtext_image (void *user_data, track_t i_track)
} }
/*!
Get disc type associated with cd_obj.
*/
static discmode_t
_get_discmode_image (void *p_user_data)
{
_img_private_t *p_env = p_user_data;
return p_env->disc_mode;
}
/*! /*!
Return the media catalog number (MCN) from the CD or NULL if there Return the media catalog number (MCN) from the CD or NULL if there
is none or we don't have the ability to get it. is none or we don't have the ability to get it.

View File

@@ -1,5 +1,5 @@
/* /*
$Id: cd-info.c,v 1.73 2004/07/17 22:16:47 rocky Exp $ $Id: cd-info.c,v 1.74 2004/07/24 14:23:39 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com> Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org> Copyright (C) 1996, 1997, 1998 Gerd Knorr <kraxel@bytesex.org>
@@ -79,8 +79,8 @@ struct arguments
int no_ioctl; int no_ioctl;
int no_analysis; int no_analysis;
char *access_mode; /* Access method driver should use for control */ char *access_mode; /* Access method driver should use for control */
#ifdef HAVE_CDDB
int no_cddb; /* If set the below are meaningless. */ int no_cddb; /* If set the below are meaningless. */
#ifdef HAVE_CDDB
char *cddb_email; /* email to report to CDDB server. */ char *cddb_email; /* email to report to CDDB server. */
char *cddb_server; /* CDDB server to contact */ char *cddb_server; /* CDDB server to contact */
int cddb_port; /* port number to contact CDDB server. */ int cddb_port; /* port number to contact CDDB server. */
@@ -90,6 +90,8 @@ struct arguments
char *cddb_cachedir; char *cddb_cachedir;
#endif #endif
int no_vcd; int no_vcd;
int no_device;
int no_disc_mode;
uint32_t debug_level; uint32_t debug_level;
int version_only; int version_only;
int silent; int silent;
@@ -162,8 +164,17 @@ parse_options (int argc, const char *argv[])
{"cddb-timeout", '\0', POPT_ARG_INT, &opts.cddb_timeout, 0, {"cddb-timeout", '\0', POPT_ARG_INT, &opts.cddb_timeout, 0,
"CDDB timeout value in seconds (default 10 seconds)"}, "CDDB timeout value in seconds (default 10 seconds)"},
#else
{"no-cddb", '\0', POPT_ARG_NONE, &opts.no_cddb, 1,
"Don't look up audio CDDB information - for this build, this is always set"},
#endif #endif
{"no-device-info", '\0', POPT_ARG_NONE, &opts.no_device, 0,
"Don't show device info, just CD info"},
{"no-disc-mode", '\0', POPT_ARG_NONE, &opts.no_disc_mode, 0,
"Don't show disc-mode info"},
#ifdef HAVE_VCDINFO #ifdef HAVE_VCDINFO
{"no-vcd", 'v', POPT_ARG_NONE, &opts.no_vcd, 0, {"no-vcd", 'v', POPT_ARG_NONE, &opts.no_vcd, 0,
"Don't look up Video CD information"}, "Don't look up Video CD information"},
@@ -803,6 +814,8 @@ init(void)
opts.silent = false; opts.silent = false;
opts.list_drives = false; opts.list_drives = false;
opts.no_header = false; opts.no_header = false;
opts.no_device = 0;
opts.no_disc_mode = 0;
opts.debug_level = 0; opts.debug_level = 0;
opts.no_tracks = 0; opts.no_tracks = 0;
opts.print_iso9660 = 0; opts.print_iso9660 = 0;
@@ -814,7 +827,13 @@ init(void)
opts.cddb_server = NULL; opts.cddb_server = NULL;
opts.cddb_timeout = -1; opts.cddb_timeout = -1;
opts.cddb_disable_cache = false; opts.cddb_disable_cache = false;
#else
opts.no_cddb = 1;
#endif
#ifdef HAVE_VCDINFO
opts.no_vcd = 0;
#else
opts.no_vcd = 1;
#endif #endif
opts.no_ioctl = 0; opts.no_ioctl = 0;
opts.no_analysis = 0; opts.no_analysis = 0;
@@ -959,13 +978,13 @@ main(int argc, const char *argv[])
} }
} }
if (opts.silent == 0) { if (0 == opts.silent) {
printf("CD location : %s\n", source_name); printf("CD location : %s\n", source_name);
printf("CD driver name: %s\n", cdio_get_driver_name(cdio)); printf("CD driver name: %s\n", cdio_get_driver_name(cdio));
printf(" access mode: %s\n\n", cdio_get_arg(cdio, "access-mode")); printf(" access mode: %s\n\n", cdio_get_arg(cdio, "access-mode"));
} }
{ if (0 == opts.no_device) {
cdio_drive_read_cap_t i_read_cap; cdio_drive_read_cap_t i_read_cap;
cdio_drive_write_cap_t i_write_cap; cdio_drive_write_cap_t i_write_cap;
cdio_drive_misc_cap_t i_misc_cap; cdio_drive_misc_cap_t i_misc_cap;
@@ -988,16 +1007,53 @@ main(int argc, const char *argv[])
if (device_list) free(device_list); if (device_list) free(device_list);
} }
printf(STRONG "\n");
if ( 0 == opts.no_disc_mode ) {
printf("Disc mode is listed as: ");
switch(cdio_get_discmode(cdio)) {
case CDIO_DISC_MODE_CD_DA:
printf("CD-DA\n");
break;
case CDIO_DISC_MODE_CD_DATA_1:
printf("CD-ROM form 1 mode 1");
break;
case CDIO_DISC_MODE_CD_DATA_2:
printf("CD-ROM form 1 mode 2");
break;
case CDIO_DISC_MODE_CD_XA_2_1:
printf("CD-ROM XA form2 mode 1");
break;
case CDIO_DISC_MODE_CD_XA_2_2:
printf("CD-ROM XA form2 mode 2");
break;
case CDIO_DISC_MODE_CD_MIXED:
printf("CD-ROM mixed mode");
break;
case CDIO_DISC_MODE_DVD:
printf("some sort of DVD");
break;
case CDIO_DISC_MODE_NO_INFO:
printf("No information");
break;
case CDIO_DISC_MODE_ERROR:
printf("No error");
break;
}
printf("\n");
}
i_first_track = cdio_get_first_track_num(cdio); i_first_track = cdio_get_first_track_num(cdio);
i_tracks = cdio_get_num_tracks(cdio); i_tracks = cdio_get_num_tracks(cdio);
if (!opts.no_tracks) { if (!opts.no_tracks) {
printf(STRONG "CD-ROM Track List (%i - %i)\n" NORMAL, printf("CD-ROM Track List (%i - %i)\n" NORMAL,
i_first_track, i_tracks); i_first_track, i_tracks);
printf(" #: MSF LSN Type Green?\n"); printf(" #: MSF LSN Type Green?\n");
} }
/* Read and possibly print track information. */ /* Read and possibly print track information. */
for (i = i_first_track; i <= CDIO_CDROM_LEADOUT_TRACK; i++) { for (i = i_first_track; i <= CDIO_CDROM_LEADOUT_TRACK; i++) {
msf_t msf; msf_t msf;

View File

@@ -23,6 +23,9 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-DA
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 audio false 1: 00:02:00 000000 audio false

View File

@@ -23,6 +23,9 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-DA
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 audio false 1: 00:02:00 000000 audio false

View File

@@ -1,5 +1,5 @@
#!/bin/sh #!/bin/sh
#$Id: check_cue.sh.in,v 1.19 2004/05/06 12:05:50 rocky Exp $ #$Id: check_cue.sh.in,v 1.20 2004/07/24 14:23:39 rocky Exp $
# Tests to see that BIN/CUE and cdrdao TOC file iamge reading is correct # Tests to see that BIN/CUE and cdrdao TOC file iamge reading is correct
# (via cd-info). # (via cd-info).
@@ -40,7 +40,7 @@ check_result $RC "cd-info TOC test $testnum" "cd-info $opts"
fname=isofs-m1 fname=isofs-m1
testnum='ISO 9660 mode1 CUE' testnum='ISO 9660 mode1 CUE'
if test -f ${srcdir}/${fname}.bin ; then if test -f ${srcdir}/${fname}.bin ; then
opts="-q --cue-file ${srcdir}/${fname}.cue --iso9660" opts="-q --no-disc-mode --cue-file ${srcdir}/${fname}.cue --iso9660"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "$opts" check_result $RC "cd-info CUE test $testnum" "$opts"
@@ -50,7 +50,7 @@ fi
testnum='ISO 9660 mode1 TOC' testnum='ISO 9660 mode1 TOC'
if test -f ${srcdir}/${fname}.bin ; then if test -f ${srcdir}/${fname}.bin ; then
opts="-q --toc-file ${srcdir}/${fname}.toc --iso9660" opts="-q --no-disc-mode --toc-file ${srcdir}/${fname}.toc --iso9660"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info TOC test $testnum" "cd-info $opts" check_result $RC "cd-info TOC test $testnum" "cd-info $opts"
@@ -66,12 +66,12 @@ else
fi fi
testnum='Video CD' testnum='Video CD'
if test -f ${srcdir}/${fname}.bin ; then if test -f ${srcdir}/${fname}.bin ; then
opts="-q -c ${srcdir}/${fname}.cue --iso9660" opts="-q --no-disc-mode -c ${srcdir}/${fname}.cue --iso9660"
test_cdinfo "$opts" ${fname}.dump $right test_cdinfo "$opts" ${fname}.dump $right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "cd-info $opts" check_result $RC "cd-info CUE test $testnum" "cd-info $opts"
opts="-q -t ${srcdir}/${fname}.toc --iso9660" opts="-q --no-disc-mode -t ${srcdir}/${fname}.toc --iso9660"
if test -f ${srcdir}/${fname}.toc ; then if test -f ${srcdir}/${fname}.toc ; then
test_cdinfo "$opts" ${fname}.dump $right test_cdinfo "$opts" ${fname}.dump $right
RC=$? RC=$?
@@ -86,7 +86,7 @@ fi
fname=svcd_ogt_test_ntsc fname=svcd_ogt_test_ntsc
testnum='Super Video CD' testnum='Super Video CD'
if test -f ${srcdir}/${fname}.bin ; then if test -f ${srcdir}/${fname}.bin ; then
opts="-q --cue-file ${srcdir}/${fname}.cue $vcd_opt --iso9660" opts="-q --no-disc-mode --cue-file ${srcdir}/${fname}.cue $vcd_opt --iso9660"
test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right test_cdinfo "$opts" ${fname}.dump ${srcdir}/${fname}.right
RC=$? RC=$?
check_result $RC "cd-info CUE test $testnum" "cd-info $opts" check_result $RC "cd-info CUE test $testnum" "cd-info $opts"

View File

@@ -22,6 +22,9 @@ Writing....
Can write CD-RW : Yes Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
Media Catalog Number (MCN): 0000010271955 Media Catalog Number (MCN): 0000010271955
__________________________________ __________________________________
CD Analysis Report CD Analysis Report

View File

@@ -22,6 +22,9 @@ Writing....
Can write CD-RW : Yes Can write CD-RW : Yes
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
Media Catalog Number (MCN): 0000010271955 Media Catalog Number (MCN): 0000010271955
__________________________________ __________________________________
CD Analysis Report CD Analysis Report

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM form 1 mode 2
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,7 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
CD-ROM Track List (1 - 1) CD-ROM Track List (1 - 1)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 data false 1: 00:02:00 000000 data false

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM XA form2 mode 1
CD-ROM Track List (1 - 2) CD-ROM Track List (1 - 2)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true

View File

@@ -23,6 +23,7 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
CD-ROM Track List (1 - 2) CD-ROM Track List (1 - 2)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM XA form2 mode 1
CD-ROM Track List (1 - 2) CD-ROM Track List (1 - 2)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true

View File

@@ -23,6 +23,7 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
CD-ROM Track List (1 - 3) CD-ROM Track List (1 - 3)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true

View File

@@ -23,6 +23,8 @@ Writing....
Can write DVD-R : No Can write DVD-R : No
Can write DVD-RAM : No Can write DVD-RAM : No
__________________________________ __________________________________
Disc mode is listed as: CD-ROM XA form2 mode 1
CD-ROM Track List (1 - 5) CD-ROM Track List (1 - 5)
#: MSF LSN Type Green? #: MSF LSN Type Green?
1: 00:02:00 000000 XA true 1: 00:02:00 000000 XA true