First successful multi-session write to a sequential DVD-RW

This commit is contained in:
Thomas Schmitt 2007-01-30 19:16:35 +00:00
parent 53a1e99675
commit fa792f6a67
3 changed files with 21 additions and 3 deletions

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2007.01.30.165317" #define Cdrskin_timestamP "2007.01.30.191740"

View File

@ -45,11 +45,11 @@ extern struct libdax_msgs *libdax_messenger;
/* ts A70129 >>> EXPERIMENTAL UNTESTED /* ts A70129 >>> EXPERIMENTAL UNTESTED
#define Libburn_support_dvd_r_seQ 1
*/ */
#define Libburn_support_dvd_r_seQ 1
/* Progress report (with Libburn_support_dvd_plus_rW defined): /* Progress report:
ts A61219 : It seems to work with a used (i.e. thoroughly formatted) DVD+RW. ts A61219 : It seems to work with a used (i.e. thoroughly formatted) DVD+RW.
Error messages of class DEBUG appear because of inability to Error messages of class DEBUG appear because of inability to
read TOC or track info. Nevertheless, the written images verify. read TOC or track info. Nevertheless, the written images verify.
@ -70,6 +70,14 @@ extern struct libdax_msgs *libdax_messenger;
ts A70101 : Formatted DVD-RW media. Success is varying with media, but ts A70101 : Formatted DVD-RW media. Success is varying with media, but
dvd+rw-format does not do better with the same media. dvd+rw-format does not do better with the same media.
ts A70112 : Support for writing to DVD-RAM. ts A70112 : Support for writing to DVD-RAM.
ts A70130 : Burned a first non-multi sequential DVD-RW. Feature 0021h
Incremental Recording vanishes after that and media thus gets
not recognized as suitable any more.
After a run with -multi another disc still offers 0021h .
dvd+rw-mediainfo shows two tracks. The second, an afio archive
is readable by afio. Third and forth veryfy too. Suddenly
dvd+rw-mediainfo sees lba 0 with track 2. But #2 still verifies
if one knows its address.
Todo: Todo:
Determine first free lba for appending data. Determine first free lba for appending data.

View File

@ -894,11 +894,17 @@ int burn_disc_close_track_dvd_minus_r(struct burn_write_opts *o,
struct burn_session *s, int tnum) struct burn_session *s, int tnum)
{ {
struct burn_drive *d = o->drive; struct burn_drive *d = o->drive;
char msg[80];
/* only DVD-R or sequential DVD-RW */ /* only DVD-R or sequential DVD-RW */
if (d->current_has_feat21h != 1) /* only with Incremental writing */ if (d->current_has_feat21h != 1) /* only with Incremental writing */
return 2; return 2;
sprintf(msg, "Closing track %2.2d (absolute track number %d)",
tnum + 1, d->last_track_no);
libdax_msgs_submit(libdax_messenger, o->drive->global_index,0x00020119,
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH, msg,0,0);
d->busy = BURN_DRIVE_CLOSING_SESSION; d->busy = BURN_DRIVE_CLOSING_SESSION;
/* Ignoring tnum here and hoping that d->last_track_no is correct */ /* Ignoring tnum here and hoping that d->last_track_no is correct */
d->close_track_session(d, 0, d->last_track_no); /* CLOSE TRACK, 001b */ d->close_track_session(d, 0, d->last_track_no); /* CLOSE TRACK, 001b */
@ -1023,6 +1029,10 @@ int burn_disc_close_session_dvd_minus_r(struct burn_write_opts *o,
if (d->current_has_feat21h != 1) if (d->current_has_feat21h != 1)
return 2; /* only for Incremental writing */ return 2; /* only for Incremental writing */
libdax_msgs_submit(libdax_messenger, o->drive->global_index,0x00020119,
LIBDAX_MSGS_SEV_DEBUG, LIBDAX_MSGS_PRIO_HIGH,
"Closing session", 0, 0);
d->busy = BURN_DRIVE_CLOSING_SESSION; d->busy = BURN_DRIVE_CLOSING_SESSION;
d->close_track_session(d, 1, 0); /* CLOSE SESSION, 010b */ d->close_track_session(d, 1, 0); /* CLOSE SESSION, 010b */
d->busy = BURN_DRIVE_WRITING; d->busy = BURN_DRIVE_WRITING;