diff --git a/libisoburn/burn_wrap.c b/libisoburn/burn_wrap.c index 6d717bb6..07aa126d 100644 --- a/libisoburn/burn_wrap.c +++ b/libisoburn/burn_wrap.c @@ -1900,7 +1900,7 @@ int isoburn_toc_entry_finish(struct burn_toc_entry *entry, { int pmin, psec, pframe; - entry->extensions_valid= 1; + entry->extensions_valid= 1 | 8; entry->adr= 1; entry->control= 4; entry->session= session_no & 255; @@ -1908,7 +1908,13 @@ int isoburn_toc_entry_finish(struct burn_toc_entry *entry, entry->point= track_no & 255; entry->point_msb= (track_no >> 8) & 255; - burn_lba_to_msf(entry->start_lba, &pmin, &psec, &pframe); + if(entry->start_lba < 0) { + pmin= 255; + psec= 59; + pframe=74; + } else { + burn_lba_to_msf(entry->start_lba, &pmin, &psec, &pframe); + } if(pmin<=255) entry->pmin= pmin; else @@ -1933,7 +1939,13 @@ void isoburn_toc_session_get_leadout_entry(struct isoburn_toc_session *s, if(s->track_count<=0 || s->track_pointers==NULL || s->toc_entry==NULL) return; t= s->track_pointers[s->track_count-1]; - entry->start_lba= t->toc_entry->start_lba + t->toc_entry->track_blocks; + entry->long_start_lba= t->toc_entry->start_lba + t->toc_entry->track_blocks; + if(entry->long_start_lba > 0x7fffffff) { + entry->start_lba= -1; + } else { + entry->start_lba= entry->long_start_lba; + } + entry->long_track_blocks= 0; entry->track_blocks= 0; isoburn_toc_entry_finish(entry, s->toc_entry->session, t->toc_entry->track_no, 0); @@ -1959,8 +1971,18 @@ void isoburn_toc_track_get_entry(struct isoburn_toc_track *t, } if(t->toc_entry==NULL) return; - entry->start_lba= t->toc_entry->start_lba; - entry->track_blocks= t->toc_entry->track_blocks; + entry->long_start_lba= t->toc_entry->start_lba; + if(entry->long_start_lba > 0x7fffffff) { + entry->start_lba= -1; + } else { + entry->start_lba= entry->long_start_lba; + } + entry->long_track_blocks= t->toc_entry->track_blocks; + if(entry->long_track_blocks > 0x7fffffff) { + entry->track_blocks= -1; + } else { + entry->track_blocks= entry->long_track_blocks; + } isoburn_toc_entry_finish(entry, t->toc_entry->session, t->toc_entry->track_no, 0); } diff --git a/xorriso/xorriso_timestamp.h b/xorriso/xorriso_timestamp.h index 1f8850ca..253f8e3a 100644 --- a/xorriso/xorriso_timestamp.h +++ b/xorriso/xorriso_timestamp.h @@ -1 +1 @@ -#define Xorriso_timestamP "2024.03.10.072545" +#define Xorriso_timestamP "2024.03.10.075517"