Made support for DVD+R DL official, enabled untested support for BD-RE
This commit is contained in:
parent
88c1431fdc
commit
4bf0732aa4
@ -16,8 +16,8 @@
|
|||||||
.\" .sp <n> insert n+1 empty lines
|
.\" .sp <n> insert n+1 empty lines
|
||||||
.\" for manpage-specific macros, see man(7)
|
.\" for manpage-specific macros, see man(7)
|
||||||
.SH NAME
|
.SH NAME
|
||||||
cdrskin \- burns preformatted data to CD-R[W], DVD-R[W], DVD+R[W], DVD-RAM
|
cdrskin \- burns preformatted data to CD-R[W], DVD-R[W], DVD+R[W], DVD+R/DL,
|
||||||
via libburn.
|
DVD-RAM via libburn.
|
||||||
.SH SYNOPSIS
|
.SH SYNOPSIS
|
||||||
.B cdrskin
|
.B cdrskin
|
||||||
.RI [ options | track_source_addresses ]
|
.RI [ options | track_source_addresses ]
|
||||||
@ -44,7 +44,7 @@ or in Session at Once mode for seamless tracks.
|
|||||||
.br
|
.br
|
||||||
Multi session on CD (follow-up sessions in TAO only)
|
Multi session on CD (follow-up sessions in TAO only)
|
||||||
.br
|
.br
|
||||||
or on DVD-R[W] (in Incremental mode) or on DVD+R.
|
or on DVD-R[W] (in Incremental mode) or on DVD+R[/DL].
|
||||||
.br
|
.br
|
||||||
Single session on DVD-RW or DVD-R (Disk-at-once).
|
Single session on DVD-RW or DVD-R (Disk-at-once).
|
||||||
.br
|
.br
|
||||||
@ -163,7 +163,7 @@ Multiple cycles of blanking and overwriting with random numbers might be.
|
|||||||
.SS
|
.SS
|
||||||
.B Sequentially Recordable DVD Media:
|
.B Sequentially Recordable DVD Media:
|
||||||
.br
|
.br
|
||||||
Currently DVD-RW, DVD-R and DVD+R can be used for the Sequential recording
|
Currently DVD-RW, DVD-R and DVD+R[/DL] can be used for the Sequential recording
|
||||||
model.
|
model.
|
||||||
.br
|
.br
|
||||||
DVD-RW must be in state "Sequential Recording".
|
DVD-RW must be in state "Sequential Recording".
|
||||||
@ -198,9 +198,9 @@ unpredicted length and to keep media appendable by option
|
|||||||
The only restriction towards CD-R[W] is the lack of support for -audio tracks.
|
The only restriction towards CD-R[W] is the lack of support for -audio tracks.
|
||||||
Multiple tracks per session are permissible.
|
Multiple tracks per session are permissible.
|
||||||
.br
|
.br
|
||||||
The write modes for DVD+R resemble those with DVD-R except that with DVD+R
|
The write modes for DVD+R[/DL] resemble those with DVD-R except that with +R
|
||||||
each track gets wrapped in an own session. There is no -dummy writing with
|
each track gets wrapped in an own session. There is no -dummy writing with
|
||||||
DVD+R.
|
DVD+R[/DL].
|
||||||
.br
|
.br
|
||||||
Quite deliberately write mode -sao insists in the tradition of a predicted
|
Quite deliberately write mode -sao insists in the tradition of a predicted
|
||||||
track size and blank media, whereas -tao writes the tracks open ended and
|
track size and blank media, whereas -tao writes the tracks open ended and
|
||||||
@ -598,7 +598,7 @@ One should use it only if inavoidable.
|
|||||||
.TP
|
.TP
|
||||||
.BI \-sao
|
.BI \-sao
|
||||||
Write CD in Session At Once mode, a sequential DVD-R[W] in Disc-at-once
|
Write CD in Session At Once mode, a sequential DVD-R[W] in Disc-at-once
|
||||||
(DAO) mode, or a DVD+R.
|
(DAO) mode, or a DVD+R[/DL].
|
||||||
.br
|
.br
|
||||||
With CD this mode is able to put several audio tracks on media without
|
With CD this mode is able to put several audio tracks on media without
|
||||||
producing audible gaps between them.
|
producing audible gaps between them.
|
||||||
@ -606,8 +606,8 @@ producing audible gaps between them.
|
|||||||
With DVD-R[W] this mode can only write a single track.
|
With DVD-R[W] this mode can only write a single track.
|
||||||
No -multi is allowed with DVD-R[W] -sao.
|
No -multi is allowed with DVD-R[W] -sao.
|
||||||
.br
|
.br
|
||||||
-sao is permissible with overwriteable DVD and with DVD+R but actually only
|
-sao is permissible with overwriteable DVD and with DVD+R[/DL] but actually
|
||||||
imposes restrictions without providing known advantages.
|
only imposes restrictions without providing known advantages.
|
||||||
.br
|
.br
|
||||||
-sao can only be used for tracks of fixely predicted size. This implies that
|
-sao can only be used for tracks of fixely predicted size. This implies that
|
||||||
track arguments which depict stdin or named pipes need to be preceeded by
|
track arguments which depict stdin or named pipes need to be preceeded by
|
||||||
@ -647,7 +647,7 @@ suffix ".wav".
|
|||||||
.TP
|
.TP
|
||||||
.BI \-tao
|
.BI \-tao
|
||||||
Write CD in Track At Once (TAO) mode, sequential DVD-R[W] in Incremental
|
Write CD in Track At Once (TAO) mode, sequential DVD-R[W] in Incremental
|
||||||
Streaming mode, or DVD+R without traditional -sao restrictions.
|
Streaming mode, or DVD+R[/DL] without traditional -sao restrictions.
|
||||||
This mode also applies pro-forma to overwriteable DVD media.
|
This mode also applies pro-forma to overwriteable DVD media.
|
||||||
.br
|
.br
|
||||||
Mode -tao can be used with track sources of unpredictable size, like standard
|
Mode -tao can be used with track sources of unpredictable size, like standard
|
||||||
@ -951,7 +951,7 @@ tested. Currently this applies to :
|
|||||||
.br
|
.br
|
||||||
Profile 0015h , DVD-R/DL Sequential (will not allow -multi).
|
Profile 0015h , DVD-R/DL Sequential (will not allow -multi).
|
||||||
.br
|
.br
|
||||||
Profile 002Bh , DVD+R/DL.
|
Profile 0043h , BD-RE.
|
||||||
.br
|
.br
|
||||||
If you really test such media, then please report the outcome on
|
If you really test such media, then please report the outcome on
|
||||||
libburn-hackers@pykix.org
|
libburn-hackers@pykix.org
|
||||||
@ -1131,7 +1131,7 @@ cdrskin -v dev=0,1,0 fs=32m speed=8 \\
|
|||||||
.br
|
.br
|
||||||
-tao padsize=300k -
|
-tao padsize=300k -
|
||||||
.SS
|
.SS
|
||||||
.B Write multi-session to the same CD, DVD-R[W] or DVD+R:
|
.B Write multi-session to the same CD, DVD-R[W] or DVD+R[/DL]:
|
||||||
.br
|
.br
|
||||||
cdrskin dev=/dev/hdc -v padsize=300k -multi -tao 1.iso
|
cdrskin dev=/dev/hdc -v padsize=300k -multi -tao 1.iso
|
||||||
.br
|
.br
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2008.02.22.213726"
|
#define Cdrskin_timestamP "2008.02.28.123152"
|
||||||
|
@ -730,7 +730,7 @@ void burn_preset_device_open(int exclusive, int blocking, int abort_on_busy);
|
|||||||
/** Allows the use of media types which are implemented in libburn but not yet
|
/** Allows the use of media types which are implemented in libburn but not yet
|
||||||
tested. The list of those untested profiles is subject to change.
|
tested. The list of those untested profiles is subject to change.
|
||||||
Currently it contains: 0x15 "DVD-R/DL sequential recording",
|
Currently it contains: 0x15 "DVD-R/DL sequential recording",
|
||||||
0x2b "DVD+R/DL"
|
0x43 "BD-RE"
|
||||||
If you really test such media, then please report the outcome on
|
If you really test such media, then please report the outcome on
|
||||||
libburn-hackers@pykix.org
|
libburn-hackers@pykix.org
|
||||||
If ever then this call should be done soon after burn_initialize() before
|
If ever then this call should be done soon after burn_initialize() before
|
||||||
@ -1093,10 +1093,11 @@ off_t burn_disc_available_space(struct burn_drive *d,
|
|||||||
0x09 "CD-R", 0x0a "CD-RW",
|
0x09 "CD-R", 0x0a "CD-RW",
|
||||||
0x11 "DVD-R sequential recording", 0x12 "DVD-RAM",
|
0x11 "DVD-R sequential recording", 0x12 "DVD-RAM",
|
||||||
0x13 "DVD-RW restricted overwrite", 0x14 "DVD-RW sequential recording",
|
0x13 "DVD-RW restricted overwrite", 0x14 "DVD-RW sequential recording",
|
||||||
0x1a "DVD+RW", 0x1b "DVD+R".
|
0x1a "DVD+RW", 0x1b "DVD+R"
|
||||||
|
0x2b "DVD+R/DL"
|
||||||
If enabled by burn_allow_untested_profiles() it also writes to profiles
|
If enabled by burn_allow_untested_profiles() it also writes to profiles
|
||||||
0x15 "DVD-R/DL sequential recording", 0x2b "DVD+R/DL".
|
0x15 "DVD-R/DL sequential recording", 0x43 "BD-RE".
|
||||||
Writeable stdio-drives return this profile
|
Writeable stdio-drives return this profile:
|
||||||
0xffff "stdio file"
|
0xffff "stdio file"
|
||||||
@param d The drive where the media is inserted.
|
@param d The drive where the media is inserted.
|
||||||
@param pno Profile Number as of mmc5r03c.pdf, table 89
|
@param pno Profile Number as of mmc5r03c.pdf, table 89
|
||||||
|
@ -306,8 +306,9 @@ int mmc_read_track_info(struct burn_drive *d, int trackno, struct buffer *buf,
|
|||||||
c.opcode[1] = 1;
|
c.opcode[1] = 1;
|
||||||
if(trackno<=0) {
|
if(trackno<=0) {
|
||||||
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
||||||
d->current_profile == 0x12 )
|
d->current_profile == 0x12 || d->current_profile == 0x43)
|
||||||
/* DVD+RW , DVD-RW restricted overwrite , DVD-RAM */
|
/* DVD+RW , DVD-RW restricted overwrite , DVD-RAM
|
||||||
|
BD-RE */
|
||||||
trackno = 1;
|
trackno = 1;
|
||||||
else if (d->current_profile == 0x10 ||
|
else if (d->current_profile == 0x10 ||
|
||||||
d->current_profile == 0x11 ||
|
d->current_profile == 0x11 ||
|
||||||
@ -349,7 +350,7 @@ int mmc_get_nwa(struct burn_drive *d, int trackno, int *lba, int *nwa)
|
|||||||
*nwa = mmc_four_char_to_int(data + 12);
|
*nwa = mmc_four_char_to_int(data + 12);
|
||||||
num = mmc_four_char_to_int(data + 16);
|
num = mmc_four_char_to_int(data + 16);
|
||||||
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
||||||
d->current_profile == 0x12) {
|
d->current_profile == 0x12 || d->current_profile == 0x43) {
|
||||||
/* overwriteable */
|
/* overwriteable */
|
||||||
*lba = *nwa = num = 0;
|
*lba = *nwa = num = 0;
|
||||||
} else if (!(data[7]&1)) {
|
} else if (!(data[7]&1)) {
|
||||||
@ -1490,7 +1491,7 @@ static int mmc_read_disc_info_al(struct burn_drive *d, int *alloc_len)
|
|||||||
ts A70112 : same for DVD-RAM
|
ts A70112 : same for DVD-RAM
|
||||||
*/
|
*/
|
||||||
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
||||||
d->current_profile == 0x12)
|
d->current_profile == 0x12 || d->current_profile == 0x43)
|
||||||
d->status = BURN_DISC_BLANK;
|
d->status = BURN_DISC_BLANK;
|
||||||
|
|
||||||
if (d->status == BURN_DISC_BLANK) {
|
if (d->status == BURN_DISC_BLANK) {
|
||||||
@ -2104,7 +2105,8 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
|
|||||||
d->current_is_supported_profile = 1;
|
d->current_is_supported_profile = 1;
|
||||||
#endif
|
#endif
|
||||||
#ifdef Libburn_support_dvd_raM
|
#ifdef Libburn_support_dvd_raM
|
||||||
if (cp == 0x12)
|
if (cp == 0x12 || (cp == 0x43 && burn_support_untested_profiles))
|
||||||
|
/* DVD-RAM , BD-RE */
|
||||||
d->current_is_supported_profile = 1;
|
d->current_is_supported_profile = 1;
|
||||||
#endif
|
#endif
|
||||||
#ifdef Libburn_support_dvd_r_seQ
|
#ifdef Libburn_support_dvd_r_seQ
|
||||||
@ -2114,8 +2116,7 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len)
|
|||||||
d->current_is_supported_profile = 1;
|
d->current_is_supported_profile = 1;
|
||||||
#endif
|
#endif
|
||||||
#ifdef Libburn_support_dvd_plus_R
|
#ifdef Libburn_support_dvd_plus_R
|
||||||
if (cp == 0x1b || (cp == 0x2b && burn_support_untested_profiles))
|
if (cp == 0x1b || cp == 0x2b) /* DVD+R , DVD+R/DL */
|
||||||
/* DVD+R , DVD+R/DL */
|
|
||||||
d->current_is_supported_profile = 1;
|
d->current_is_supported_profile = 1;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -3004,8 +3005,9 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
|
|||||||
pd[13] = 16;
|
pd[13] = 16;
|
||||||
|
|
||||||
} else if (d->current_profile == 0x1a || d->current_profile == 0x1b ||
|
} else if (d->current_profile == 0x1a || d->current_profile == 0x1b ||
|
||||||
d->current_profile == 0x2b || d->current_profile == 0x12) {
|
d->current_profile == 0x2b || d->current_profile == 0x12 ||
|
||||||
/* not with DVD+R[W][/DL] or DVD-RAM */;
|
d->current_profile == 0x43) {
|
||||||
|
/* not with DVD+R[W][/DL] or DVD-RAM or BD-RE */;
|
||||||
return 0;
|
return 0;
|
||||||
} else {
|
} else {
|
||||||
/* Traditional setup for CD */
|
/* Traditional setup for CD */
|
||||||
|
@ -580,7 +580,7 @@ void spc_sense_write_params(struct burn_drive *d)
|
|||||||
|
|
||||||
/* ts A70212 : try to setup d->media_capacity_remaining */
|
/* ts A70212 : try to setup d->media_capacity_remaining */
|
||||||
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
||||||
d->current_profile == 0x12)
|
d->current_profile == 0x12 || d->current_profile == 0x43)
|
||||||
d->read_format_capacities(d, -1);
|
d->read_format_capacities(d, -1);
|
||||||
else if (d->status == BURN_DISC_BLANK ||
|
else if (d->status == BURN_DISC_BLANK ||
|
||||||
(d->current_is_cd_profile && d->status == BURN_DISC_APPENDABLE)) {
|
(d->current_is_cd_profile && d->status == BURN_DISC_APPENDABLE)) {
|
||||||
|
@ -967,8 +967,9 @@ int burn_precheck_write(struct burn_write_opts *o, struct burn_disc *disc,
|
|||||||
if (d->status == BURN_DISC_UNSUITABLE)
|
if (d->status == BURN_DISC_UNSUITABLE)
|
||||||
goto unsuitable_profile;
|
goto unsuitable_profile;
|
||||||
if (d->drive_role == 2 ||
|
if (d->drive_role == 2 ||
|
||||||
d->current_profile == 0x1a || d->current_profile == 0x12) {
|
d->current_profile == 0x1a || d->current_profile == 0x12 ||
|
||||||
/* DVD+RW , DVD-RAM , emulated drive on stdio file */
|
d->current_profile == 0x43) {
|
||||||
|
/* DVD+RW , DVD-RAM , BD-RE, emulated drive on stdio file */
|
||||||
if (o->start_byte >= 0 && (o->start_byte % 2048))
|
if (o->start_byte >= 0 && (o->start_byte % 2048))
|
||||||
strcat(reasons,
|
strcat(reasons,
|
||||||
"write start address not properly aligned to 2048, ");
|
"write start address not properly aligned to 2048, ");
|
||||||
@ -1370,8 +1371,8 @@ int burn_dvd_write_session(struct burn_write_opts *o,
|
|||||||
ret = burn_disc_close_session_dvd_minus_r(o, s);
|
ret = burn_disc_close_session_dvd_minus_r(o, s);
|
||||||
if (ret <= 0)
|
if (ret <= 0)
|
||||||
return 0;
|
return 0;
|
||||||
} else if (d->current_profile == 0x12) {
|
} else if (d->current_profile == 0x12 || d->current_profile == 0x43) {
|
||||||
/* DVD-RAM */
|
/* DVD-RAM , BD-RE */
|
||||||
/* ??? any finalization needed ? */;
|
/* ??? any finalization needed ? */;
|
||||||
} else if (d->current_profile == 0x13) {
|
} else if (d->current_profile == 0x13) {
|
||||||
/* DVD-RW restricted overwrite */
|
/* DVD-RW restricted overwrite */
|
||||||
@ -1522,8 +1523,9 @@ int burn_dvd_write_sync(struct burn_write_opts *o,
|
|||||||
|
|
||||||
d->needs_close_session = 0;
|
d->needs_close_session = 0;
|
||||||
|
|
||||||
if (d->current_profile == 0x1a || d->current_profile == 0x12) {
|
if (d->current_profile == 0x1a || d->current_profile == 0x12 ||
|
||||||
/* DVD+RW , DVD-RAM */
|
d->current_profile == 0x43) {
|
||||||
|
/* DVD+RW , DVD-RAM , BD-RE */
|
||||||
ret = 1;
|
ret = 1;
|
||||||
if (d->current_profile == 0x1a)
|
if (d->current_profile == 0x1a)
|
||||||
ret = burn_disc_setup_dvd_plus_rw(o, disc);
|
ret = burn_disc_setup_dvd_plus_rw(o, disc);
|
||||||
@ -2191,6 +2193,8 @@ int burn_random_access_write(struct burn_drive *d, off_t byte_address,
|
|||||||
alignment = 32 * 1024;
|
alignment = 32 * 1024;
|
||||||
if (d->current_profile == 0x1a) /* DVD+RW */
|
if (d->current_profile == 0x1a) /* DVD+RW */
|
||||||
alignment = 2 * 1024;
|
alignment = 2 * 1024;
|
||||||
|
if (d->current_profile == 0x43) /* BD-RE */
|
||||||
|
alignment = 2 * 1024;
|
||||||
if (alignment == 0) {
|
if (alignment == 0) {
|
||||||
sprintf(msg, "Write start address not supported");
|
sprintf(msg, "Write start address not supported");
|
||||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||||
|
Loading…
Reference in New Issue
Block a user