New track mode modifier BURN_SCMS
This commit is contained in:
parent
0322107411
commit
1d376769d0
@ -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
|
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 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,
|
and by experiments with drives NEC ND-4570A, LG GSA-4082B, LITE-ON LTR48125S,
|
||||||
Optiarc BD RW BD-5300S, LG BDDVDRW GGC-H20L
|
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 .
|
CTL|ADR, TNO, INDEX, DATA FORM, SCMS, MIN, SEC, FRAME .
|
||||||
(mmc5r03c.pdf 6.33)
|
(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)
|
(mmc5r03c.pdf 6.33.3.4)
|
||||||
ADR is 01h for entries which define time points. It is 02h for media catalog
|
ADR is 01h for entries which define time points. It is 02h for media catalog
|
||||||
entries and it is 03h for track ISRC entries.
|
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).
|
TNO is the track number (1 to 99).
|
||||||
|
|
||||||
INDEX is a subaddress within tracks. This recipe uses only INDEX 01h within
|
INDEX is a subaddress within tracks. This recipe uses only INDEX 01h within
|
||||||
tracks.
|
tracks.
|
||||||
(mmc5r03c.pdf 4.2.3.5.2)
|
(mmc5r03c.pdf 4.2.3.5.2)
|
||||||
|
|
||||||
DATA FORM is 00h for audio payload, 01h for audio pause, 10h for data,
|
DATA FORM is 00h for audio payload, 01h for audio pause, 10h for data,
|
||||||
41h for CD-TEXT in Lead-in.
|
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)
|
(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.
|
MIN, SEC, FRAME give the MSF address where the described data entity starts.
|
||||||
LBA = frames - 150, 75 frames = 1 sec , 60 sec = 1 min.
|
LBA = frames - 150, 75 frames = 1 sec , 60 sec = 1 min.
|
||||||
This address must increase from entry to entry (or at least stay equal).
|
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 1 to 7)
|
||||||
(02h, catalog characters 8 to 13, 00h)
|
(02h, catalog characters 8 to 13, 00h)
|
||||||
These two entries shall be omitted if no catalog number is given.
|
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 */
|
/** Input mode modifier - subcodes present raw 96 */
|
||||||
#define BURN_SUBCODE_R96 (1 << 12)
|
#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 */
|
/** Possible disc writing style/modes */
|
||||||
enum burn_write_types
|
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 i, m, s, f, form, pform, runtime = -150, ret, track_length;
|
||||||
int leadin_form, leadin_start;
|
int leadin_form, leadin_start;
|
||||||
unsigned char ctladr;
|
unsigned char ctladr, scms;
|
||||||
struct burn_drive *d;
|
struct burn_drive *d;
|
||||||
struct burn_toc_entry *e;
|
struct burn_toc_entry *e;
|
||||||
struct cue_sheet *sheet;
|
struct cue_sheet *sheet;
|
||||||
@ -581,6 +581,10 @@ struct cue_sheet *burn_create_toc_entries(struct burn_write_opts *o,
|
|||||||
pform = form;
|
pform = form;
|
||||||
for (i = 0; i < ntr; i++) {
|
for (i = 0; i < ntr; i++) {
|
||||||
type_to_form(tar[i]->mode, &ctladr, &form);
|
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) {
|
if (tar[i]->isrc.has_isrc) {
|
||||||
ret = add_isrc_cue(sheet, ctladr, i + 1,
|
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) {
|
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);
|
runtime);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
goto failed;
|
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].adr = 1;
|
||||||
e[3 + i].control = type_to_ctrl(tar[i]->mode);
|
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)
|
if (ret <= 0)
|
||||||
goto failed;
|
goto failed;
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user