diff --git a/trunk/cdrskin/cdrskin_timestamp.h b/trunk/cdrskin/cdrskin_timestamp.h index 68bdfc5d..95309515 100644 --- a/trunk/cdrskin/cdrskin_timestamp.h +++ b/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2006.11.03.202403" +#define Cdrskin_timestamP "2006.11.04.092909" diff --git a/trunk/libburn/sector.c b/trunk/libburn/sector.c index 8b949a83..4920c013 100644 --- a/trunk/libburn/sector.c +++ b/trunk/libburn/sector.c @@ -53,7 +53,8 @@ static void uncook_subs(unsigned char *dest, unsigned char *source) int sector_get_outmode(enum burn_write_types write_type, enum burn_block_types block_type) { - if (write_type == BURN_WRITE_SAO) + /* ts A61103 : extended SAO condition to TAO */ + if (write_type == BURN_WRITE_SAO || write_type == BURN_WRITE_TAO) return 0; else switch (block_type) { @@ -722,7 +723,7 @@ void sector_headers(struct burn_write_opts *o, unsigned char *out, /* ts A61031 */ if (o->write_type == BURN_WRITE_TAO) - return 1; + return; if (mode & BURN_MODE1) modebyte = 1; diff --git a/trunk/libburn/spc.c b/trunk/libburn/spc.c index 4cf12266..e5ccbc7a 100644 --- a/trunk/libburn/spc.c +++ b/trunk/libburn/spc.c @@ -274,6 +274,11 @@ void spc_sense_write_params(struct burn_drive *d) mmc_read_disc_info(d); } +/* remark ts A61104 : +Although command MODE SELECT is SPC, the content of the +Write Parameters Mode Page (05h) is MMC (Table 108 in MMC-1). +Thus the filling of the mode page should be done by a mmc_ function. +*/ void spc_select_write_params(struct burn_drive *d, const struct burn_write_opts *o) { @@ -316,6 +321,12 @@ void spc_select_write_params(struct burn_drive *d, + o->write_type; c.page->data[11] = (o->multi << 6) | o->control; c.page->data[12] = spc_block_type(o->block_type); + + /* ts A61104 */ + if(!(o->control&4)) /* audio (MMC-1 table 61) */ + if(o->write_type == BURN_WRITE_TAO) /* ??? for others too ? */ + c.page->data[12] = 0; /* Data Block Type: Raw Data */ + c.page->data[22] = 0; c.page->data[23] = 150; /* audio pause length */ /*XXX need session format! */