From 3845e1af056553397294820f9a542bf694a38e98 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 1 Jan 2012 12:43:36 +0000 Subject: [PATCH] Writing SCMS into mode page 5 if TAO --- cdrskin/cdrskin_timestamp.h | 2 +- doc/cookbook.txt | 3 ++- libburn/mmc.c | 10 ++++++++-- 3 files changed, 11 insertions(+), 4 deletions(-) diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 5f0c4df..039a441 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2012.01.01.124121" +#define Cdrskin_timestamP "2012.01.01.124330" diff --git a/doc/cookbook.txt b/doc/cookbook.txt index 1b99636..6b358a9 100644 --- a/doc/cookbook.txt +++ b/doc/cookbook.txt @@ -94,6 +94,7 @@ parameters: Write Type Packet/TAO/SAO/RAW 01h = TAO Multi-session Whether to keep appendable 00b = finalize 11b = keep appendable + Copy Whether to deny copying 1 = deny by SCMS , 0 = allow Track Mode Describes frame type 4 for data , 0 for audio Data Block Type Layout of payload blocks 8 for 2048 byte data blocks 0 for 2352 byte audio blocks @@ -1489,7 +1490,7 @@ at the NWA of a sufficiently sized track. ------------------------------------------------------------------------------- -This text is copyright 2011 Thomas Schmitt . +This text is copyright 2011 - 2012 Thomas Schmitt . Permission is granted to copy, modify, and distribute it, as long as the references to the original information sources are maintained. There is NO WARRANTY, to the extent permitted by law. diff --git a/libburn/mmc.c b/libburn/mmc.c index 9d37880..45e6013 100644 --- a/libburn/mmc.c +++ b/libburn/mmc.c @@ -4151,9 +4151,10 @@ fprintf(stderr, "libburn_EXPERIMENTAL: block_type = %d, pd[4]= %u\n", } /* ISRC at bytes 32 to 47. Tables 664, 671 */ + /* SCMS at byte 3 bit 4 */ isrc_text[0] = 0; - if (s != NULL && o->write_type == BURN_WRITE_TAO) - if (tno >= 1 && tno <= s->tracks) + if (s != NULL && o->write_type == BURN_WRITE_TAO) { + if (tno >= 1 && tno <= s->tracks) { if (s->track[tno - 1]->isrc.has_isrc) { isrc = &(s->track[tno - 1]->isrc); isrc_text[0] = isrc->country[0]; @@ -4165,6 +4166,11 @@ fprintf(stderr, "libburn_EXPERIMENTAL: block_type = %d, pd[4]= %u\n", (unsigned int) isrc->year, isrc->serial); } + if ((s->track[tno - 1]->mode & BURN_SCMS) && + !(s->track[tno - 1]->mode & BURN_COPY)) + pd[3] |= 0x10; + } + } if (isrc_text[0] != 0 && d->mdata->write_page_length >= 46) { pd[32] = 0x80; /* TCVAL */ memcpy(pd + 33, isrc_text, 12);