New track mode modifier BURN_SCMS
This commit is contained in:
parent
ce29b4b38c
commit
38aaa2f8aa
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2011.12.30.174416"
|
||||
#define Cdrskin_timestamP "2011.12.31.120007"
|
||||
|
@ -228,6 +228,8 @@ sync. libburn uses the info provided by 52h READ TRACK INFORMATION.
|
||||
-------------------------------------------------------------------------------
|
||||
Guided by reading libburn/* from http://icculus.org/burn
|
||||
backed by reading mmc5r03c.pdf from http://www.t10.org/ftp/t10/drafts/mmc5/
|
||||
backed by reading scms.html from
|
||||
http://www.barrel-of-monkeys.com/graphics/prod/dvdplayers/
|
||||
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S,
|
||||
Optiarc BD RW BD-5300S, LG BDDVDRW GGC-H20L
|
||||
|
||||
@ -266,24 +268,39 @@ Each entry of the sheet is of 8 bytes size. Its fields are named
|
||||
CTL|ADR, TNO, INDEX, DATA FORM, SCMS, MIN, SEC, FRAME .
|
||||
(mmc5r03c.pdf 6.33)
|
||||
|
||||
CTL is 40h for data and 00h for audio.
|
||||
CTL is comprised of four bits:
|
||||
bit4 = Pre-emphasis (audio only)
|
||||
bit5 = Digital copy permission:
|
||||
0 = prohibited (one-time copy is permitted if SCMS is 00h)
|
||||
1 = permitted (unlimited)
|
||||
bit6 = Data track indicator (bit4 and bit7 shall be 0)
|
||||
bit7 = 4-channel audio
|
||||
Usually CTL is 40h for data and 00h for audio.
|
||||
(mmc5r03c.pdf 6.33.3.4)
|
||||
ADR is 01h for entries which define time points. It is 02h for media catalog
|
||||
entries and it is 03h for track ISRC entries.
|
||||
The bits of CTL and ADR are combined in the CTL|ADR byte.
|
||||
|
||||
TNO is the track number (1 to 99).
|
||||
|
||||
INDEX is a subaddress within tracks. This recipe uses only INDEX 01h within
|
||||
tracks.
|
||||
(mmc5r03c.pdf 4.2.3.5.2)
|
||||
|
||||
DATA FORM is 00h for audio payload, 01h for audio pause, 10h for data,
|
||||
41h for CD-TEXT in Lead-in.
|
||||
(mmc5r03c.pdf 6.33.3.11 CD-DA Data Form, 6.33.3.12 CD-ROM mode 1 Form)
|
||||
SCMS is always 00h.
|
||||
|
||||
SCMS value 80h in conjunction with bit5 of CTL is an indicator for exhausted
|
||||
one-time-copy permission. If this permission is still intact, then SCMS is 00h.
|
||||
|
||||
MIN, SEC, FRAME give the MSF address where the described data entity starts.
|
||||
LBA = frames - 150, 75 frames = 1 sec , 60 sec = 1 min.
|
||||
This address must increase from entry to entry (or at least stay equal).
|
||||
|
||||
The first two entries describe the Media Catalog Number, a string of 13
|
||||
characters, also known with CD-TEXT as "UPC/EAN".
|
||||
|
||||
The first two entries in a Cue Sheet describe the Media Catalog Number,
|
||||
a string of 13 characters, also known with CD-TEXT as "UPC/EAN".
|
||||
(02h, catalog characters 1 to 7)
|
||||
(02h, catalog characters 8 to 13, 00h)
|
||||
These two entries shall be omitted if no catalog number is given.
|
||||
|
@ -121,6 +121,13 @@ struct burn_write_opts;
|
||||
/** Input mode modifier - subcodes present raw 96 */
|
||||
#define BURN_SUBCODE_R96 (1 << 12)
|
||||
|
||||
/* ts B11230 */
|
||||
/** Track mode modifier - Serial Copy Management System, SAO only
|
||||
@since 1.2.0
|
||||
*/
|
||||
#define BURN_SCMS (1 << 13)
|
||||
|
||||
|
||||
/** Possible disc writing style/modes */
|
||||
enum burn_write_types
|
||||
{
|
||||
|
@ -452,7 +452,7 @@ struct cue_sheet *burn_create_toc_entries(struct burn_write_opts *o,
|
||||
{
|
||||
int i, m, s, f, form, pform, runtime = -150, ret, track_length;
|
||||
int leadin_form, leadin_start;
|
||||
unsigned char ctladr;
|
||||
unsigned char ctladr, scms;
|
||||
struct burn_drive *d;
|
||||
struct burn_toc_entry *e;
|
||||
struct cue_sheet *sheet;
|
||||
@ -581,6 +581,10 @@ struct cue_sheet *burn_create_toc_entries(struct burn_write_opts *o,
|
||||
pform = form;
|
||||
for (i = 0; i < ntr; i++) {
|
||||
type_to_form(tar[i]->mode, &ctladr, &form);
|
||||
if (tar[i]->mode & BURN_SCMS)
|
||||
scms = 0x80;
|
||||
else
|
||||
scms = 0;
|
||||
|
||||
if (tar[i]->isrc.has_isrc) {
|
||||
ret = add_isrc_cue(sheet, ctladr, i + 1,
|
||||
@ -603,7 +607,7 @@ struct cue_sheet *burn_create_toc_entries(struct burn_write_opts *o,
|
||||
|
||||
if (pform != form) {
|
||||
|
||||
ret = add_cue(sheet, ctladr | 1, i + 1, 0, form, 0,
|
||||
ret = add_cue(sheet, ctladr | 1, i + 1, 0, form, scms,
|
||||
runtime);
|
||||
if (ret <= 0)
|
||||
goto failed;
|
||||
@ -644,7 +648,8 @@ struct cue_sheet *burn_create_toc_entries(struct burn_write_opts *o,
|
||||
e[3 + i].adr = 1;
|
||||
e[3 + i].control = type_to_ctrl(tar[i]->mode);
|
||||
|
||||
ret = add_cue(sheet, ctladr | 1, i + 1, 1, form, 0, runtime);
|
||||
ret = add_cue(sheet, ctladr | 1, i + 1, 1, form, scms,
|
||||
runtime);
|
||||
if (ret <= 0)
|
||||
goto failed;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user