Reduce overall number of CD disc modes. I thing the main purpose

that will be used is to separate CD Audio from CD Data, XA and DVD's.

On GNU/Linux it seems that the implementation is a bit artificial.
This commit is contained in:
rocky
2004-07-25 18:37:09 +00:00
parent 5f36bce150
commit fd5e6d1243
18 changed files with 247 additions and 130 deletions

View File

@@ -1,5 +1,5 @@
/*
$Id: bincue.c,v 1.36 2004/07/24 14:23:38 rocky Exp $
$Id: bincue.c,v 1.37 2004/07/25 18:37:09 rocky Exp $
Copyright (C) 2002, 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001 Herbert Valerio Riedel <hvr@gnu.org>
@@ -26,7 +26,7 @@
(*.cue).
*/
static const char _rcsid[] = "$Id: bincue.c,v 1.36 2004/07/24 14:23:38 rocky Exp $";
static const char _rcsid[] = "$Id: bincue.c,v 1.37 2004/07/25 18:37:09 rocky Exp $";
#include "image.h"
#include "cdio_assert.h"
@@ -407,10 +407,8 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
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:
case CDIO_DISC_MODE_CD_DATA:
case CDIO_DISC_MODE_CD_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -429,17 +427,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
cd->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case CDIO_DISC_MODE_CD_DATA_1:
case CDIO_DISC_MODE_CD_DATA:
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:
case CDIO_DISC_MODE_CD_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -459,17 +455,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->mode = MODE1_RAW;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_2;
cd->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_DATA:
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:
case CDIO_DISC_MODE_CD_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -488,17 +482,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_2;
cd->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case CDIO_DISC_MODE_CD_DATA_2:
case CDIO_DISC_MODE_CD_DATA:
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:
case CDIO_DISC_MODE_CD_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -513,17 +505,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
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;
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA_2_1:
case CDIO_DISC_MODE_CD_XA:
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:
case CDIO_DISC_MODE_CD_DATA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -538,17 +528,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
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;
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA_2_2:
case CDIO_DISC_MODE_CD_XA:
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:
case CDIO_DISC_MODE_CD_DATA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -567,17 +555,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
this_track->endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_2;
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA_2_2:
case CDIO_DISC_MODE_CD_XA:
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:
case CDIO_DISC_MODE_CD_DATA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
@@ -596,17 +582,15 @@ parse_cuefile (_img_private_t *cd, const char *psz_cue_name)
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;
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA_2_2:
case CDIO_DISC_MODE_CD_XA:
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:
case CDIO_DISC_MODE_CD_DATA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:

View File

@@ -1,5 +1,5 @@
/*
$Id: cdrdao.c,v 1.21 2004/07/24 14:23:39 rocky Exp $
$Id: cdrdao.c,v 1.22 2004/07/25 18:37:09 rocky Exp $
Copyright (C) 2004 Rocky Bernstein <rocky@panix.com>
toc reading routine adapted from cuetools
@@ -25,7 +25,7 @@
(*.cue).
*/
static const char _rcsid[] = "$Id: cdrdao.c,v 1.21 2004/07/24 14:23:39 rocky Exp $";
static const char _rcsid[] = "$Id: cdrdao.c,v 1.22 2004/07/25 18:37:09 rocky Exp $";
#include "image.h"
#include "cdio_assert.h"
@@ -354,7 +354,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
} else if (0 == strcmp ("CD_ROM", psz_keyword)) {
if (-1 == i) {
if (NULL != cd)
cd->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
cd->disc_mode = CDIO_DISC_MODE_CD_DATA;
} else {
goto not_in_global_section;
}
@@ -362,7 +362,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
} else if (0 == strcmp ("CD_ROM_XA", psz_keyword)) {
if (-1 == i) {
if (NULL != cd)
cd->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
} else {
goto not_in_global_section;
}
@@ -379,6 +379,23 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
cd->tocent[i].datasize = CDIO_CD_FRAMESIZE_RAW;
cd->tocent[i].datastart = 0;
cd->tocent[i].endsize = 0;
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:
case CDIO_DISC_MODE_CD_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE1", psz_field)) {
if (NULL != cd) {
@@ -389,6 +406,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
cd->tocent[i].datasize = CDIO_CD_FRAMESIZE;
cd->tocent[i].endsize = CDIO_CD_EDC_SIZE
+ CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case CDIO_DISC_MODE_CD_DATA:
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_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE1_RAW", psz_field)) {
if (NULL != cd) {
@@ -399,6 +432,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
cd->tocent[i].datasize = CDIO_CD_FRAMESIZE;
cd->tocent[i].endsize = CDIO_CD_EDC_SIZE
+ CDIO_CD_M1F1_ZERO_SIZE + CDIO_CD_ECC_SIZE;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case CDIO_DISC_MODE_CD_DATA:
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_XA:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE2", psz_field)) {
if (NULL != cd) {
@@ -407,6 +456,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
+ CDIO_CD_HEADER_SIZE;
cd->tocent[i].datasize = M2RAW_SECTOR_SIZE;
cd->tocent[i].endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA:
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:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE2_FORM1", psz_field)) {
if (NULL != cd) {
@@ -415,6 +480,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
+ CDIO_CD_HEADER_SIZE;
cd->tocent[i].datasize = CDIO_CD_FRAMESIZE_RAW;
cd->tocent[i].endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA:
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:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE2_FORM2", psz_field)) {
if (NULL != cd) {
@@ -424,6 +505,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
cd->tocent[i].datasize = CDIO_CD_FRAMESIZE;
cd->tocent[i].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;
break;
case CDIO_DISC_MODE_CD_XA:
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:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE2_FORM_MIX", psz_field)) {
if (NULL != cd) {
@@ -434,6 +531,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
CDIO_CD_HEADER_SIZE + CDIO_CD_SUBHEADER_SIZE;
cd->tocent[i].track_green = true;
cd->tocent[i].endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA:
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:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else if (0 == strcmp ("MODE2_RAW", psz_field)) {
if (NULL != cd) {
@@ -444,6 +557,22 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
cd->tocent[i].datasize = CDIO_CD_FRAMESIZE;
cd->tocent[i].track_green = true;
cd->tocent[i].endsize = 0;
switch(cd->disc_mode) {
case CDIO_DISC_MODE_NO_INFO:
cd->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case CDIO_DISC_MODE_CD_XA:
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:
cd->disc_mode = CDIO_DISC_MODE_CD_MIXED;
break;
default:
cd->disc_mode = CDIO_DISC_MODE_ERROR;
}
}
} else {
cdio_log(log_level, "%s line %d after TRACK:",

View File

@@ -1,5 +1,5 @@
/*
$Id: nrg.c,v 1.33 2004/07/24 14:23:39 rocky Exp $
$Id: nrg.c,v 1.34 2004/07/25 18:37:09 rocky Exp $
Copyright (C) 2003, 2004 Rocky Bernstein <rocky@panix.com>
Copyright (C) 2001, 2003 Herbert Valerio Riedel <hvr@gnu.org>
@@ -45,7 +45,7 @@
#include "_cdio_stdio.h"
#include "nrg.h"
static const char _rcsid[] = "$Id: nrg.c,v 1.33 2004/07/24 14:23:39 rocky Exp $";
static const char _rcsid[] = "$Id: nrg.c,v 1.34 2004/07/25 18:37:09 rocky Exp $";
/* reader */
@@ -397,18 +397,18 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name)
case 0:
/* Mode 1 */
track_format = TRACK_FORMAT_DATA;
env->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
env->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case 2:
/* Mode 2 form 1 */
form2 = 0;
track_format = TRACK_FORMAT_XA;
env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
env->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case 3:
/* Mode 2 */
track_format = TRACK_FORMAT_XA;
env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; /* ?? */
env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ?? */
break;
case 0x6:
/* Mode2 form mix */
@@ -417,7 +417,7 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name)
break;
case 0x20: /* ??? Mode2 form 2, Mode2 raw?? */
track_format = TRACK_FORMAT_XA;
env->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; /* ??. */
env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ??. */
break;
case 0x7:
track_format = TRACK_FORMAT_AUDIO;
@@ -512,21 +512,21 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name)
track_format = TRACK_FORMAT_DATA;
track_green = false; /* ?? */
blocksize = CDIO_CD_FRAMESIZE;
env->disc_mode = CDIO_DISC_MODE_CD_DATA_1;
env->disc_mode = CDIO_DISC_MODE_CD_DATA;
break;
case 2:
/* Mode 2 form 1 */
track_format = TRACK_FORMAT_XA;
track_green = false; /* ?? */
blocksize = CDIO_CD_FRAMESIZE;
env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1;
env->disc_mode = CDIO_DISC_MODE_CD_XA;
break;
case 3:
/* Mode 2 */
track_format = TRACK_FORMAT_XA;
track_green = true;
blocksize = M2RAW_SECTOR_SIZE;
env->disc_mode = CDIO_DISC_MODE_CD_XA_2_1; /* ?? */
env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ?? */
break;
case 06:
/* Mode2 form mix */
@@ -539,7 +539,7 @@ parse_nrg (_img_private_t *env, const char *psz_nrg_name)
track_format = TRACK_FORMAT_XA;
track_green = true;
blocksize = M2RAW_SECTOR_SIZE;
env->disc_mode = CDIO_DISC_MODE_CD_XA_2_2; /* ??. */
env->disc_mode = CDIO_DISC_MODE_CD_XA; /* ??. */
break;
case 7:
track_format = TRACK_FORMAT_AUDIO;