From 25d5a2afe46ca335d21374332911d2425eefd374 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sat, 4 Nov 2006 09:27:50 +0000 Subject: [PATCH] Enabled audio tracks with TAO --- cdrskin/cdrskin_timestamp.h | 2 +- libburn/sector.c | 5 +++-- libburn/spc.c | 11 +++++++++++ 3 files changed, 15 insertions(+), 3 deletions(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 68bdfc5..9530951 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2006.11.03.202403" +#define Cdrskin_timestamP "2006.11.04.092909" diff --git a/libburn/sector.c b/libburn/sector.c index 8b949a8..4920c01 100644 --- a/libburn/sector.c +++ b/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/libburn/spc.c b/libburn/spc.c index 4cf1226..e5ccbc7 100644 --- a/libburn/spc.c +++ b/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! */