From 0c4cfdd3595df1a101a19aa99e4bd9b69abf6094 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Sun, 25 Feb 2007 11:26:20 +0000 Subject: [PATCH] Took into respect deliberate lack of DVD-R/DL multi session capability --- cdrskin/cdrskin.1 | 2 +- cdrskin/cdrskin_timestamp.h | 2 +- libburn/drive.c | 16 +++++++++++++++- libburn/write.c | 10 ---------- libburn/write.h | 12 ++++++++++++ 5 files changed, 29 insertions(+), 13 deletions(-) diff --git a/cdrskin/cdrskin.1 b/cdrskin/cdrskin.1 index f9a276d..b138fc2 100644 --- a/cdrskin/cdrskin.1 +++ b/cdrskin/cdrskin.1 @@ -633,7 +633,7 @@ This option is only needed for revoking eventual --ignore_signals or .BI \--allow_untested_media Enable the use of media profiles which have been implemented but not yet tested. Currently this applies to : profile 0015h , DVD-R/DL Sequential -(will probably ignore -multi). +(will not allow -multi). .br If you really test such media, then please report the outcome on libburn-hackers@pykix.org diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 5218821..6226065 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2007.02.23.193427" +#define Cdrskin_timestamP "2007.02.25.112733" diff --git a/libburn/drive.c b/libburn/drive.c index 9ae46c5..fc1d95a 100644 --- a/libburn/drive.c +++ b/libburn/drive.c @@ -32,6 +32,9 @@ /* ts A70219 : for burn_disc_get_write_mode_demands() */ #include "options.h" +/* A70225 : to learn about eventual Libburn_dvd_r_dl_multi_no_close_sessioN */ +#include "write.h" + #include "libdax_msgs.h" extern struct libdax_msgs *libdax_messenger; @@ -1649,7 +1652,11 @@ int burn_disc_get_multi_caps(struct burn_drive *d, enum burn_write_types wt, o->advised_write_mode = BURN_WRITE_SAO; } if (d->current_has_feat21h) { - o->multi_session = o->multi_track = 1; +#ifndef Libburn_dvd_r_dl_multi_no_close_sessioN + if (d->current_profile != 0x15) +#endif + o->multi_session = 1; + o->multi_track = 1; o->might_do_tao = 2; o->advised_write_mode = BURN_WRITE_TAO; } @@ -1687,6 +1694,13 @@ int burn_disc_get_multi_caps(struct burn_drive *d, enum burn_write_types wt, o->might_do_sao = 4; o->might_do_tao = 2; o->advised_write_mode = BURN_WRITE_TAO; + } else if (d->current_profile == 0x1b || d->current_profile == 0x2b) { + /* DVD+R , DVD+R/DL */ + o->multi_session = 1; + o->multi_track = 1; + o->might_do_tao = 2; + o->might_do_sao = 1; + o->advised_write_mode = BURN_WRITE_TAO; } else /* unknown media */ return 0; diff --git a/libburn/write.c b/libburn/write.c index e28a37a..8adf556 100644 --- a/libburn/write.c +++ b/libburn/write.c @@ -6,16 +6,6 @@ /* ts A61009 */ /* #include */ -/* mmc5r03c.pdf 6.3.3.3.3: DVD-R DL: Close Function 010b: Close Session - "When the recording mode is Incremental Recording, - the disc is single session." - Enable this macro to get away from growisofs which uses Close Session - but also states "// DVD-R DL Seq has no notion of multi-session". - - #define Libburn_dvd_r_dl_multi_no_close_sessioN 1 - -*/ - /* ts A61106 : Deliberate defect provocation macros DO NOT DEFINE THESE IF YOU WANT SUCCESSFUL TAO ! diff --git a/libburn/write.h b/libburn/write.h index f221326..d5b1b32 100644 --- a/libburn/write.h +++ b/libburn/write.h @@ -33,4 +33,16 @@ int burn_write_close_track(struct burn_write_opts *o, struct burn_session *s, int tnum); int burn_write_close_session(struct burn_write_opts *o,struct burn_session *s); + + +/* mmc5r03c.pdf 6.3.3.3.3: DVD-R DL: Close Function 010b: Close Session + "When the recording mode is Incremental Recording, + the disc is single session." + Enable this macro to get away from growisofs which uses Close Session + but also states "// DVD-R DL Seq has no notion of multi-session". + + #define Libburn_dvd_r_dl_multi_no_close_sessioN 1 + +*/ + #endif /* BURN__WRITE_H */