Move a little bit forward in implementing SILENCE in cdrdao.
cdrdao tests now work while being a little more strict.
This commit is contained in:
@@ -229,6 +229,9 @@ _read_cdrdao (void *user_data, void *data, size_t size)
|
|||||||
|
|
||||||
/*!
|
/*!
|
||||||
Return the size of the CD in logical block address (LBA) units.
|
Return the size of the CD in logical block address (LBA) units.
|
||||||
|
|
||||||
|
FIXME: this assumes there is only one source for data or
|
||||||
|
one track of silence.
|
||||||
*/
|
*/
|
||||||
static lsn_t
|
static lsn_t
|
||||||
get_disc_last_lsn_cdrdao (void *p_user_data)
|
get_disc_last_lsn_cdrdao (void *p_user_data)
|
||||||
@@ -242,14 +245,21 @@ get_disc_last_lsn_cdrdao (void *p_user_data)
|
|||||||
i_size = p_env->tocent[i_leadout-1].sec_count;
|
i_size = p_env->tocent[i_leadout-1].sec_count;
|
||||||
} else {
|
} else {
|
||||||
if (NULL == p_env->tocent[i_leadout-1].data_source) {
|
if (NULL == p_env->tocent[i_leadout-1].data_source) {
|
||||||
|
if (!p_env->tocent[i_leadout-1].silence) {
|
||||||
cdio_warn ("Data source for image %s is null",
|
cdio_warn ("Data source for image %s is null",
|
||||||
p_env->gen.source_name);
|
p_env->gen.source_name);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
/* FIXME: this is only correct if there is one
|
||||||
|
track of silence. */
|
||||||
|
i_size = p_env->tocent[i_leadout-1].silence;
|
||||||
|
} else {
|
||||||
|
/* FIXME: this is only correct if there is one data source. */
|
||||||
i_size = cdio_stream_stat(p_env->tocent[i_leadout-1].data_source)
|
i_size = cdio_stream_stat(p_env->tocent[i_leadout-1].data_source)
|
||||||
- p_env->tocent[i_leadout-1].offset;
|
- p_env->tocent[i_leadout-1].offset;
|
||||||
|
}
|
||||||
if (i_size < 0) {
|
if (i_size < 0) {
|
||||||
cdio_error ("Can't get file information for data souce for image %s",
|
cdio_error ("Disc data size too small for track specification in image %s",
|
||||||
p_env->gen.source_name);
|
p_env->gen.source_name);
|
||||||
return i_size;
|
return i_size;
|
||||||
}
|
}
|
||||||
@@ -650,7 +660,14 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
|
|||||||
|
|
||||||
/* SILENCE <length> */
|
/* SILENCE <length> */
|
||||||
} else if (0 == strcmp ("SILENCE", psz_keyword)) {
|
} else if (0 == strcmp ("SILENCE", psz_keyword)) {
|
||||||
UNIMPLIMENTED_MSG;
|
if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {
|
||||||
|
if (NULL != cd)
|
||||||
|
cd->tocent[i].silence = cdio_mmssff_to_lba (psz_field);
|
||||||
|
} else {
|
||||||
|
goto format_error;
|
||||||
|
}
|
||||||
|
cdio_log(log_level, "%s line %d: SILENCE not fully implimented",
|
||||||
|
psz_cue_name, i_line);
|
||||||
|
|
||||||
/* ZERO <length> */
|
/* ZERO <length> */
|
||||||
} else if (0 == strcmp ("ZERO", psz_keyword)) {
|
} else if (0 == strcmp ("ZERO", psz_keyword)) {
|
||||||
@@ -847,7 +864,7 @@ parse_tocfile (_img_private_t *cd, const char *psz_cue_name)
|
|||||||
if (0 <= i) {
|
if (0 <= i) {
|
||||||
if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {
|
if (NULL != (psz_field = strtok (NULL, " \t\n\r"))) {
|
||||||
if (NULL != cd)
|
if (NULL != cd)
|
||||||
cd->tocent[i].silence = cdio_mmssff_to_lba (psz_field);
|
cd->tocent[i].pregap = cdio_mmssff_to_lba (psz_field);
|
||||||
} else {
|
} else {
|
||||||
goto format_error;
|
goto format_error;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
TITLE "Join us now we have the software"
|
TITLE "Join us now we have the software"
|
||||||
CATALOG 0000010271955
|
CATALOG 0000010271955
|
||||||
PERFORMER "Richard Stallman"
|
PERFORMER "Richard Stallman"
|
||||||
FILE "BOING.BIN" BINARY
|
FILE "CDDA.BIN" BINARY
|
||||||
TRACK 01 AUDIO
|
TRACK 01 AUDIO
|
||||||
FLAGS DCP
|
FLAGS DCP
|
||||||
INDEX 01 00:00:00
|
INDEX 01 00:00:00
|
||||||
|
|||||||
@@ -1,23 +1,22 @@
|
|||||||
// $Id: vcd2.toc,v 1.1 2005/01/16 04:34:20 rocky Exp $
|
|
||||||
// Taken from one of Steve Schultz's VCD collection.
|
// Taken from one of Steve Schultz's VCD collection.
|
||||||
// The .bin has been changed and is wrong.
|
// The .bin and offsets have been changed and are wrong.
|
||||||
CD_ROM_XA
|
CD_ROM_XA
|
||||||
|
|
||||||
|
|
||||||
// Track 1
|
// Track 1
|
||||||
TRACK MODE2_FORM_MIX
|
TRACK MODE2_FORM_MIX
|
||||||
COPY
|
COPY
|
||||||
DATAFILE "cdda.bin" 00:05:00 // length in bytes: 1051200
|
DATAFILE "../cdda.bin" 00:00:00 // comment
|
||||||
|
|
||||||
|
|
||||||
// Track 2
|
// Track 2
|
||||||
TRACK MODE2_FORM_MIX
|
TRACK MODE2_FORM_MIX
|
||||||
COPY
|
COPY
|
||||||
DATAFILE "cdda.bin" #1051200 34:31:23 // length in bytes: 362892928
|
DATAFILE "cdda.bin" #100 00:00:03
|
||||||
|
|
||||||
|
|
||||||
// Track 3
|
// Track 3
|
||||||
TRACK MODE2_FORM_MIX
|
TRACK MODE2_FORM_MIX
|
||||||
COPY
|
COPY
|
||||||
DATAFILE "cdda.bin" #363944128 39:04:26 // length in bytes: 410729536
|
DATAFILE "cdda.bin" #200 00:00:25
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user