Improved classification and TOC of finalized DVD-R[W] media
This commit is contained in:
parent
4e93de2cd2
commit
6b8ab52854
@ -3953,11 +3953,8 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
|
|||||||
|
|
||||||
#ifdef Cdrskin_libburn_has_pretend_fulL
|
#ifdef Cdrskin_libburn_has_pretend_fulL
|
||||||
if(s==BURN_DISC_UNSUITABLE) {
|
if(s==BURN_DISC_UNSUITABLE) {
|
||||||
if(skin->force_is_set ||
|
if(skin->force_is_set) {
|
||||||
profile_number == 0x14 || profile_number == 0x13) {/* allow any DVD-RW */
|
fprintf(stderr,"cdrskin: NOTE : -force blank=... : Treating unsuitable media as burn_disc_full\n");
|
||||||
fprintf(stderr,
|
|
||||||
"cdrskin: NOTE : %s blank=... : Treating unsuitable media as burn_disc_full\n",
|
|
||||||
(skin->force_is_set?"-force ":"DVD-RW "));
|
|
||||||
ret= burn_disc_pretend_full(drive);
|
ret= burn_disc_pretend_full(drive);
|
||||||
s= burn_disc_get_status(drive);
|
s= burn_disc_get_status(drive);
|
||||||
} else
|
} else
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2007.02.02.151327"
|
#define Cdrskin_timestamP "2007.02.02.173345"
|
||||||
|
@ -589,12 +589,13 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (session_number != prev_session && prev_session > 0) {
|
if (session_number != prev_session && prev_session > 0) {
|
||||||
|
/* leadout entry previous session */
|
||||||
entry = &(d->toc_entry[(i - 1) + prev_session]);
|
entry = &(d->toc_entry[(i - 1) + prev_session]);
|
||||||
lba = mmc_four_char_to_int(start_data) +
|
lba = mmc_four_char_to_int(start_data) +
|
||||||
mmc_four_char_to_int(size_data);
|
mmc_four_char_to_int(size_data);
|
||||||
mmc_int_to_four_char(start_data, lba);
|
mmc_int_to_four_char(start_data, lba);
|
||||||
mmc_int_to_four_char(size_data, 0);
|
mmc_int_to_four_char(size_data, 0);
|
||||||
mmc_fake_toc_entry(entry, session_number, 0xA2,
|
mmc_fake_toc_entry(entry, prev_session, 0xA2,
|
||||||
size_data, start_data);
|
size_data, start_data);
|
||||||
entry->min= entry->sec= entry->frame= 0;
|
entry->min= entry->sec= entry->frame= 0;
|
||||||
d->disc->session[prev_session - 1]->leadout_entry =
|
d->disc->session[prev_session - 1]->leadout_entry =
|
||||||
@ -619,14 +620,23 @@ int mmc_fake_toc(struct burn_drive *d)
|
|||||||
mmc_fake_toc_entry(entry, session_number, i + 1,
|
mmc_fake_toc_entry(entry, session_number, i + 1,
|
||||||
size_data, start_data);
|
size_data, start_data);
|
||||||
|
|
||||||
if (session_number < d->disc->sessions) {
|
|
||||||
if (prev_session != session_number)
|
if (prev_session != session_number)
|
||||||
d->disc->session[session_number - 1]->
|
d->disc->session[session_number - 1]->firsttrack = i+1;
|
||||||
firsttrack = i+1;
|
|
||||||
d->disc->session[session_number - 1]->lasttrack = i+1;
|
d->disc->session[session_number - 1]->lasttrack = i+1;
|
||||||
}
|
|
||||||
prev_session = session_number;
|
prev_session = session_number;
|
||||||
}
|
}
|
||||||
|
if (prev_session > 0 && prev_session <= d->disc->sessions) {
|
||||||
|
/* leadout entry of last session of closed disc */
|
||||||
|
entry = &(d->toc_entry[(d->last_track_no - 1) + prev_session]);
|
||||||
|
lba = mmc_four_char_to_int(start_data) +
|
||||||
|
mmc_four_char_to_int(size_data);
|
||||||
|
mmc_int_to_four_char(start_data, lba);
|
||||||
|
mmc_int_to_four_char(size_data, 0);
|
||||||
|
mmc_fake_toc_entry(entry, prev_session, 0xA2,
|
||||||
|
size_data, start_data);
|
||||||
|
entry->min= entry->sec= entry->frame= 0;
|
||||||
|
d->disc->session[prev_session - 1]->leadout_entry = entry;
|
||||||
|
}
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -897,21 +907,6 @@ void mmc_read_disc_info(struct burn_drive *d)
|
|||||||
data = c.page->data;
|
data = c.page->data;
|
||||||
d->erasable = !!(data[2] & 16);
|
d->erasable = !!(data[2] & 16);
|
||||||
|
|
||||||
if ((d->current_profile != 0 || d->status != BURN_DISC_UNREADY)
|
|
||||||
&& ! d->current_is_supported_profile) {
|
|
||||||
if (!d->silent_on_scsi_error) {
|
|
||||||
sprintf(msg,
|
|
||||||
"Unsuitable media detected. Profile %4.4Xh %s",
|
|
||||||
d->current_profile, d->current_profile_text);
|
|
||||||
libdax_msgs_submit(libdax_messenger, d->global_index,
|
|
||||||
0x0002011e,
|
|
||||||
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
|
||||||
msg, 0,0);
|
|
||||||
}
|
|
||||||
d->status = BURN_DISC_UNSUITABLE;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
switch (data[2] & 3) {
|
switch (data[2] & 3) {
|
||||||
case 0:
|
case 0:
|
||||||
d->toc_entries = 0;
|
d->toc_entries = 0;
|
||||||
@ -929,12 +924,33 @@ void mmc_read_disc_info(struct burn_drive *d)
|
|||||||
case 1:
|
case 1:
|
||||||
d->status = BURN_DISC_APPENDABLE;
|
d->status = BURN_DISC_APPENDABLE;
|
||||||
case 2:
|
case 2:
|
||||||
if ((data[2] & 3) == 2)
|
if ((data[2] & 3) == 2) {
|
||||||
d->status = BURN_DISC_FULL;
|
d->status = BURN_DISC_FULL;
|
||||||
|
#ifdef Libburn_support_dvd_r_seQ
|
||||||
|
/* offers no feature 0021h now but might do if blank */
|
||||||
|
if (d->current_profile == 0x14) /* DVD-RW */
|
||||||
|
d->current_is_supported_profile = 1;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
do_read_toc = 1;
|
do_read_toc = 1;
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ((d->current_profile != 0 || d->status != BURN_DISC_UNREADY)
|
||||||
|
&& ! d->current_is_supported_profile) {
|
||||||
|
if (!d->silent_on_scsi_error) {
|
||||||
|
sprintf(msg,
|
||||||
|
"Unsuitable media detected. Profile %4.4Xh %s",
|
||||||
|
d->current_profile, d->current_profile_text);
|
||||||
|
libdax_msgs_submit(libdax_messenger, d->global_index,
|
||||||
|
0x0002011e,
|
||||||
|
LIBDAX_MSGS_SEV_SORRY, LIBDAX_MSGS_PRIO_HIGH,
|
||||||
|
msg, 0,0);
|
||||||
|
}
|
||||||
|
d->status = BURN_DISC_UNSUITABLE;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
/* >>> ts A61217 : Note for future
|
/* >>> ts A61217 : Note for future
|
||||||
growisofs performs OPC if (data[0]<<8)|data[1]<=32
|
growisofs performs OPC if (data[0]<<8)|data[1]<=32
|
||||||
which indicates no OPC entries are attached to the
|
which indicates no OPC entries are attached to the
|
||||||
@ -1596,6 +1612,7 @@ void mmc_get_configuration(struct burn_drive *d)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
#ifdef Libburn_support_dvd_r_seQ
|
#ifdef Libburn_support_dvd_r_seQ
|
||||||
|
/* might get adjusted later by mmc_read_disc_info() */
|
||||||
if ((cp == 0x11 || cp == 0x14) && d->current_has_feat21h)
|
if ((cp == 0x11 || cp == 0x14) && d->current_has_feat21h)
|
||||||
d->current_is_supported_profile = 1;
|
d->current_is_supported_profile = 1;
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
x
Reference in New Issue
Block a user