Made support for DVD+R DL official, enabled untested support for BD-RE
This commit is contained in:
parent
ea6957ef68
commit
616454c737
@ -16,8 +16,8 @@
|
||||
.\" .sp <n> insert n+1 empty lines
|
||||
.\" for manpage-specific macros, see man(7)
|
||||
.SH NAME
|
||||
cdrskin \- burns preformatted data to CD-R[W], DVD-R[W], DVD+R[W], DVD-RAM
|
||||
via libburn.
|
||||
cdrskin \- burns preformatted data to CD-R[W], DVD-R[W], DVD+R[W], DVD+R/DL,
|
||||
DVD-RAM via libburn.
|
||||
.SH SYNOPSIS
|
||||
.B cdrskin
|
||||
.RI [ options | track_source_addresses ]
|
||||
@ -44,7 +44,7 @@ or in Session at Once mode for seamless tracks.
|
||||
.br
|
||||
Multi session on CD (follow-up sessions in TAO only)
|
||||
.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
|
||||
Single session on DVD-RW or DVD-R (Disk-at-once).
|
||||
.br
|
||||
@ -163,7 +163,7 @@ Multiple cycles of blanking and overwriting with random numbers might be.
|
||||
.SS
|
||||
.B Sequentially Recordable DVD Media:
|
||||
.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.
|
||||
.br
|
||||
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.
|
||||
Multiple tracks per session are permissible.
|
||||
.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
|
||||
DVD+R.
|
||||
DVD+R[/DL].
|
||||
.br
|
||||
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
|
||||
@ -598,7 +598,7 @@ One should use it only if inavoidable.
|
||||
.TP
|
||||
.BI \-sao
|
||||
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
|
||||
With CD this mode is able to put several audio tracks on media without
|
||||
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.
|
||||
No -multi is allowed with DVD-R[W] -sao.
|
||||
.br
|
||||
-sao is permissible with overwriteable DVD and with DVD+R but actually only
|
||||
imposes restrictions without providing known advantages.
|
||||
-sao is permissible with overwriteable DVD and with DVD+R[/DL] but actually
|
||||
only imposes restrictions without providing known advantages.
|
||||
.br
|
||||
-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
|
||||
@ -647,7 +647,7 @@ suffix ".wav".
|
||||
.TP
|
||||
.BI \-tao
|
||||
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.
|
||||
.br
|
||||
Mode -tao can be used with track sources of unpredictable size, like standard
|
||||
@ -951,7 +951,7 @@ tested. Currently this applies to :
|
||||
.br
|
||||
Profile 0015h , DVD-R/DL Sequential (will not allow -multi).
|
||||
.br
|
||||
Profile 002Bh , DVD+R/DL.
|
||||
Profile 0043h , BD-RE.
|
||||
.br
|
||||
If you really test such media, then please report the outcome on
|
||||
libburn-hackers@pykix.org
|
||||
@ -1131,7 +1131,7 @@ cdrskin -v dev=0,1,0 fs=32m speed=8 \\
|
||||
.br
|
||||
-tao padsize=300k -
|
||||
.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
|
||||
cdrskin dev=/dev/hdc -v padsize=300k -multi -tao 1.iso
|
||||
.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
|
||||
tested. The list of those untested profiles is subject to change.
|
||||
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
|
||||
libburn-hackers@pykix.org
|
||||
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",
|
||||
0x11 "DVD-R sequential recording", 0x12 "DVD-RAM",
|
||||
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
|
||||
0x15 "DVD-R/DL sequential recording", 0x2b "DVD+R/DL".
|
||||
Writeable stdio-drives return this profile
|
||||
0x15 "DVD-R/DL sequential recording", 0x43 "BD-RE".
|
||||
Writeable stdio-drives return this profile:
|
||||
0xffff "stdio file"
|
||||
@param d The drive where the media is inserted.
|
||||
@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;
|
||||
if(trackno<=0) {
|
||||
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
||||
d->current_profile == 0x12 )
|
||||
/* DVD+RW , DVD-RW restricted overwrite , DVD-RAM */
|
||||
d->current_profile == 0x12 || d->current_profile == 0x43)
|
||||
/* DVD+RW , DVD-RW restricted overwrite , DVD-RAM
|
||||
BD-RE */
|
||||
trackno = 1;
|
||||
else if (d->current_profile == 0x10 ||
|
||||
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);
|
||||
num = mmc_four_char_to_int(data + 16);
|
||||
if (d->current_profile == 0x1a || d->current_profile == 0x13 ||
|
||||
d->current_profile == 0x12) {
|
||||
d->current_profile == 0x12 || d->current_profile == 0x43) {
|
||||
/* overwriteable */
|
||||
*lba = *nwa = num = 0;
|
||||
} 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
|
||||
*/
|
||||
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;
|
||||
|
||||
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;
|
||||
#endif
|
||||
#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;
|
||||
#endif
|
||||
#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;
|
||||
#endif
|
||||
#ifdef Libburn_support_dvd_plus_R
|
||||
if (cp == 0x1b || (cp == 0x2b && burn_support_untested_profiles))
|
||||
/* DVD+R , DVD+R/DL */
|
||||
if (cp == 0x1b || cp == 0x2b) /* DVD+R , DVD+R/DL */
|
||||
d->current_is_supported_profile = 1;
|
||||
#endif
|
||||
|
||||
@ -3004,8 +3005,9 @@ int mmc_compose_mode_page_5(struct burn_drive *d,
|
||||
pd[13] = 16;
|
||||
|
||||
} else if (d->current_profile == 0x1a || d->current_profile == 0x1b ||
|
||||
d->current_profile == 0x2b || d->current_profile == 0x12) {
|
||||
/* not with DVD+R[W][/DL] or DVD-RAM */;
|
||||
d->current_profile == 0x2b || d->current_profile == 0x12 ||
|
||||
d->current_profile == 0x43) {
|
||||
/* not with DVD+R[W][/DL] or DVD-RAM or BD-RE */;
|
||||
return 0;
|
||||
} else {
|
||||
/* 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 */
|
||||
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);
|
||||
else if (d->status == BURN_DISC_BLANK ||
|
||||
(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)
|
||||
goto unsuitable_profile;
|
||||
if (d->drive_role == 2 ||
|
||||
d->current_profile == 0x1a || d->current_profile == 0x12) {
|
||||
/* DVD+RW , DVD-RAM , emulated drive on stdio file */
|
||||
d->current_profile == 0x1a || d->current_profile == 0x12 ||
|
||||
d->current_profile == 0x43) {
|
||||
/* DVD+RW , DVD-RAM , BD-RE, emulated drive on stdio file */
|
||||
if (o->start_byte >= 0 && (o->start_byte % 2048))
|
||||
strcat(reasons,
|
||||
"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);
|
||||
if (ret <= 0)
|
||||
return 0;
|
||||
} else if (d->current_profile == 0x12) {
|
||||
/* DVD-RAM */
|
||||
} else if (d->current_profile == 0x12 || d->current_profile == 0x43) {
|
||||
/* DVD-RAM , BD-RE */
|
||||
/* ??? any finalization needed ? */;
|
||||
} else if (d->current_profile == 0x13) {
|
||||
/* DVD-RW restricted overwrite */
|
||||
@ -1522,8 +1523,9 @@ int burn_dvd_write_sync(struct burn_write_opts *o,
|
||||
|
||||
d->needs_close_session = 0;
|
||||
|
||||
if (d->current_profile == 0x1a || d->current_profile == 0x12) {
|
||||
/* DVD+RW , DVD-RAM */
|
||||
if (d->current_profile == 0x1a || d->current_profile == 0x12 ||
|
||||
d->current_profile == 0x43) {
|
||||
/* DVD+RW , DVD-RAM , BD-RE */
|
||||
ret = 1;
|
||||
if (d->current_profile == 0x1a)
|
||||
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;
|
||||
if (d->current_profile == 0x1a) /* DVD+RW */
|
||||
alignment = 2 * 1024;
|
||||
if (d->current_profile == 0x43) /* BD-RE */
|
||||
alignment = 2 * 1024;
|
||||
if (alignment == 0) {
|
||||
sprintf(msg, "Write start address not supported");
|
||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||
|
Loading…
Reference in New Issue
Block a user