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

ZeroThreeEight
Thomas Schmitt 16 years ago
parent 53a1e99675
commit fa792f6a67
  1. 2
      cdrskin/cdrskin_timestamp.h
  2. 12
      libburn/mmc.c
  3. 10
      libburn/write.c

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

@ -45,11 +45,11 @@ extern struct libdax_msgs *libdax_messenger;
/* 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.
Error messages of class DEBUG appear because of inability to
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
dvd+rw-format does not do better with the same media.
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:
Determine first free lba for appending data.

@ -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_drive *d = o->drive;
char msg[80];
/* only DVD-R or sequential DVD-RW */
if (d->current_has_feat21h != 1) /* only with Incremental writing */
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;
/* 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 */
@ -1023,6 +1029,10 @@ int burn_disc_close_session_dvd_minus_r(struct burn_write_opts *o,
if (d->current_has_feat21h != 1)
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->close_track_session(d, 1, 0); /* CLOSE SESSION, 010b */
d->busy = BURN_DRIVE_WRITING;

Loading…
Cancel
Save