diff --git a/libburn/trunk/cdrskin/cdrskin_timestamp.h b/libburn/trunk/cdrskin/cdrskin_timestamp.h index 3c633504..b53d2475 100644 --- a/libburn/trunk/cdrskin/cdrskin_timestamp.h +++ b/libburn/trunk/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2009.11.18.122713" +#define Cdrskin_timestamP "2009.11.18.185733" diff --git a/libburn/trunk/libburn/write.c b/libburn/trunk/libburn/write.c index 389f0c31..f5d05595 100644 --- a/libburn/trunk/libburn/write.c +++ b/libburn/trunk/libburn/write.c @@ -1096,10 +1096,11 @@ int burn_disc_open_track_dvd_minus_r(struct burn_write_opts *o, #endif if (o->write_type == BURN_WRITE_SAO) { /* DAO */ - /* Round track size up to 32 KiB and reserve track */ - size = ((off_t) burn_track_get_sectors(s->track[tnum])) - * (off_t) 2048; - size = (size + (off_t) 0x7fff) & ~((off_t) 0x7fff); + /* Round track size up to write chunk size and reserve track */ + size = ((off_t) burn_track_get_sectors(s->track[tnum])); + if (size % o->obs) + size += (off_t) (o->obs - (size % o->obs)); + size *= (off_t) 2048; ret = d->reserve_track(d, size); if (ret <= 0) { sprintf(msg, "Cannot reserve track of %.f bytes", @@ -1137,14 +1138,11 @@ int burn_disc_open_track_dvd_plus_r(struct burn_write_opts *o, if (o->write_type == BURN_WRITE_SAO && ! burn_track_is_open_ended(s->track[tnum])) { - /* Round track size up to 32 KiB and reserve track */ - - /* ts A81208 */ - /* >>> ??? round to 64 KiB for BD-R ? (It is not mandatory) */ - - size = ((off_t) burn_track_get_sectors(s->track[tnum])) - * (off_t) 2048; - size = (size + (off_t) 0x7fff) & ~((off_t) 0x7fff); + /* Round track size up to write chunk size and reserve track */ + size = ((off_t) burn_track_get_sectors(s->track[tnum])); + if (size % o->obs) + size += (off_t) (o->obs - (size % o->obs)); + size *= (off_t) 2048; ret = d->reserve_track(d, size); if (ret <= 0) { sprintf(msg, "Cannot reserve track of %.f bytes",