From 51ac900de65be39316d038f88dfa471f5d3fed53 Mon Sep 17 00:00:00 2001 From: Thomas Schmitt Date: Thu, 10 Apr 2008 21:16:07 +0000 Subject: [PATCH] Trying to fix bugs about BD-RE, macro for simulating BD-RE on DVD-RAM --- cdrskin/cdrskin.c | 11 ++++++++++- cdrskin/cdrskin_timestamp.h | 2 +- libburn/drive.c | 9 +++++++-- libburn/mmc.c | 13 ++++++++++++- 4 files changed, 30 insertions(+), 5 deletions(-) diff --git a/cdrskin/cdrskin.c b/cdrskin/cdrskin.c index d81683a..7dfc3c1 100644 --- a/cdrskin/cdrskin.c +++ b/cdrskin/cdrskin.c @@ -3052,6 +3052,8 @@ ex:; static double Cdrskin_cd_speed_factoR= 150.0*1024.0; /** The DVD payload speed factor for reporting progress: 1x */ static double Cdrskin_dvd_speed_factoR= 1385000; +/** The BD payload speed factor for reporting progress: 1x */ +static double Cdrskin_bd_speed_factoR= 4495625; /** The effective payload speed factor for reporting progress */ static double Cdrskin_speed_factoR= 150.0*1024.0; @@ -3061,6 +3063,7 @@ static double Cdrskin_speed_factoR= 150.0*1024.0; */ static double Cdrskin_libburn_cd_speed_factoR= 176.4; static double Cdrskin_libburn_dvd_speed_factoR= 1385.0; +static double Cdrskin_libburn_bd_speed_factoR= 4495.625; /* The effective speed conversion factor for burn_drive_set_speed() */ static double Cdrskin_libburn_speed_factoR= 176.4; @@ -3070,6 +3073,7 @@ static double Cdrskin_libburn_speed_factoR= 176.4; */ static double Cdrskin_libburn_cd_speed_addoN= 40.0; static double Cdrskin_libburn_dvd_speed_addoN= 1.0; /*poor accuracy with 2.4x*/ +static double Cdrskin_libburn_bd_speed_addoN= 1.0; static double Cdrskin_libburn_speed_addoN = 40.0; @@ -3704,6 +3708,10 @@ int Cdrskin_grab_drive(struct CdrskiN *skin, int flag) Cdrskin_speed_factoR= Cdrskin_dvd_speed_factoR; Cdrskin_libburn_speed_factoR= Cdrskin_libburn_dvd_speed_factoR; Cdrskin_libburn_speed_addoN= Cdrskin_libburn_dvd_speed_addoN; + } else if(strstr(profile_name,"BD")==profile_name) { + Cdrskin_speed_factoR= Cdrskin_bd_speed_factoR; + Cdrskin_libburn_speed_factoR= Cdrskin_libburn_bd_speed_factoR; + Cdrskin_libburn_speed_addoN= Cdrskin_libburn_bd_speed_addoN; } } #endif /* Cdrskin_libburn_has_get_profilE */ @@ -4473,7 +4481,8 @@ int Cdrskin_checkdrive(struct CdrskiN *skin, char *profile_name, int flag) if(drive_info->sao_block_types & BURN_BLOCK_SAO) printf(" SAO"); if((drive_info->raw_block_types & BURN_BLOCK_RAW96R) && - strstr(profile_name,"DVD")!=profile_name) + strstr(profile_name,"DVD")!=profile_name && + strstr(profile_name,"BD")!=profile_name) printf(" RAW/RAW96R"); printf("\n"); diff --git a/cdrskin/cdrskin_timestamp.h b/cdrskin/cdrskin_timestamp.h index 68269f3..83ff10b 100644 --- a/cdrskin/cdrskin_timestamp.h +++ b/cdrskin/cdrskin_timestamp.h @@ -1 +1 @@ -#define Cdrskin_timestamP "2008.04.08.133452" +#define Cdrskin_timestamP "2008.04.10.211529" diff --git a/libburn/drive.c b/libburn/drive.c index f084f8b..c295d87 100644 --- a/libburn/drive.c +++ b/libburn/drive.c @@ -46,6 +46,9 @@ extern struct libdax_msgs *libdax_messenger; static struct burn_drive drive_array[255]; static int drivetop = -1; +/* ts A80410 : in init.c */ +extern int burn_support_untested_profiles; + /* ts A61021 : the unspecific part of sg.c:enumerate_common() */ int burn_setup_drive(struct burn_drive *d, char *fname) @@ -2167,8 +2170,10 @@ int burn_disc_get_multi_caps(struct burn_drive *d, enum burn_write_types wt, wt == BURN_WRITE_TAO) o->might_simulate = 1; } else if (d->current_profile == 0x12 || d->current_profile == 0x13 || - d->current_profile == 0x1a) { - /* DVD-RAM, overwriteable DVD-RW, DVD+RW */ + d->current_profile == 0x1a || + (d->current_profile == 0x43 && + burn_support_untested_profiles)) { + /* DVD-RAM, overwriteable DVD-RW, DVD+RW, BD-RE */ o->start_adr = 1; ret = burn_disc_get_formats(d, &status, &size, &dummy, &num_formats); diff --git a/libburn/mmc.c b/libburn/mmc.c index 3315711..2350e25 100644 --- a/libburn/mmc.c +++ b/libburn/mmc.c @@ -54,6 +54,10 @@ extern struct libdax_msgs *libdax_messenger; /* ts A70306 */ #define Libburn_support_dvd_plus_R 1 +/* ts A80410 : <<< Dangerous experiment: Pretend that DVD-RAM is BD-RE +#define Libburn_dvd_ram_as_bd_rE yes +*/ + /* DVD 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 @@ -2107,9 +2111,16 @@ static int mmc_get_configuration_al(struct burn_drive *d, int *alloc_len) d->current_is_supported_profile = 1; #endif #ifdef Libburn_support_dvd_raM - if (cp == 0x12 || (cp == 0x43 && burn_support_untested_profiles)) + if (cp == 0x12 || (cp == 0x43 && burn_support_untested_profiles)) { /* DVD-RAM , BD-RE */ d->current_is_supported_profile = 1; + +#ifdef Libburn_dvd_ram_as_bd_rE + cp = d->current_profile = 0x43; + strcpy(d->current_profile_text, mmc_obtain_profile_name(cp)); +#endif + + } #endif #ifdef Libburn_support_dvd_r_seQ if (cp == 0x10 || cp == 0x11 || cp == 0x14) /* DVD-ROM,DVD-R,DVD-RW */