Began to implement formatting of DVD-RAM and experimentally of BD-RE

This commit is contained in:
Thomas Schmitt 2008-04-18 09:28:16 +00:00
parent 4683386de1
commit 65cf751a30
3 changed files with 64 additions and 22 deletions

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps .\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection .\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" other parameters are allowed: see man(7), man(1) .\" other parameters are allowed: see man(7), man(1)
.TH CDRSKIN 1 "April 12, 2008" .TH CDRSKIN 1 "April 17, 2008"
.\" Please adjust this date whenever revising the manpage. .\" Please adjust this date whenever revising the manpage.
.\" .\"
.\" Some roff macros, for reference: .\" Some roff macros, for reference:
@ -1087,10 +1087,10 @@ original cdrecord.
.TP .TP
.BI stream_recording="on"|"off" .BI stream_recording="on"|"off"
By setting "on" request that compliance to the desired speed setting is By setting "on" request that compliance to the desired speed setting is
preferred over management of write errors. With DVD-RAM this can bring preferred over management of write errors. With DVD-RAM and BD-RE this can
effective write speed near to the nominal write speed of the media. But it bring effective write speed near to the nominal write speed of the media.
will also disable the automatic use of replacement blocks if write errors But it will also disable the automatic use of replacement blocks
occur. It might as well be disliked or ignored by the drive. if write errors occur. It might as well be disliked or ignored by the drive.
.br .br
.SH EXAMPLES .SH EXAMPLES
.SS .SS

View File

@ -3121,13 +3121,23 @@ struct CdrskiN {
int no_blank_appendable; int no_blank_appendable;
int blank_format_type; /* 0=blank int blank_format_type; /* 0=blank
bit0-7: bit0-7:
1=format_overwrite 1=format_overwrite for DVD+RW, DVD-RW
bit8-15: bit0-7 of burn_disc_format(flag) bit8-15: bit0-7 of burn_disc_format(flag)
bit8 = write zeros after formatting bit8 = write zeros after formatting
bit9 = insist in size 0 bit9 = insist in size 0
bit10= format to maximum available size bit10= format to maximum available size
bit11= - reserved -
bit12= - reserved -
bit13= - reserved -
2=deformat_sequential (blank_fast might matter) 2=deformat_sequential (blank_fast might matter)
3=format (= format_overwrite restricted to DVD+RW) 3=format (= format_overwrite restricted to DVD+RW)
4=format_defectmgt for DVD-RAM, BD-RE
bit8 = write zeros after formatting
bit9 = - reserved -
bit10= format to maximum available size
bit11= - reserved -
bit12= - reserved -
bit13= try to disable defect management
*/ */
double blank_format_size; /* to be used with burn_disc_format() */ double blank_format_size; /* to be used with burn_disc_format() */
@ -4947,8 +4957,9 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
char *verb= "blank", *presperf="blanking", *fmt_text= "..."; char *verb= "blank", *presperf="blanking", *fmt_text= "...";
char profile_name[80]; char profile_name[80];
static char fmtp[][40]= { static char fmtp[][40]= {
"format_default", "format_overwrite", "deformat_sequential"}; "format_default", "format_overwrite", "deformat_sequential",
static int fmtp_max= 2; "format_defectmgt"};
static int fmtp_max= 3;
start_time= Sfile_microtime(0); /* will be refreshed later */ start_time= Sfile_microtime(0); /* will be refreshed later */
ret= Cdrskin_grab_drive(skin,0); ret= Cdrskin_grab_drive(skin,0);
@ -4965,7 +4976,7 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
if(skin->verbosity>=Cdrskin_verbose_progresS) if(skin->verbosity>=Cdrskin_verbose_progresS)
Cdrskin_report_disc_status(skin,s,1); Cdrskin_report_disc_status(skin,s,1);
do_format= skin->blank_format_type & 0xff; do_format= skin->blank_format_type & 0xff;
if(do_format == 1 || do_format == 3) { if(do_format == 1 || do_format == 3 || do_format == 4) {
verb= "format"; verb= "format";
presperf= "formatting"; presperf= "formatting";
} }
@ -5025,22 +5036,34 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
"cdrskin: HINT : For de-icing use option blank=format_overwrite_full\n"); "cdrskin: HINT : For de-icing use option blank=format_overwrite_full\n");
{ret= 2; goto ex;} {ret= 2; goto ex;}
} }
} else if((profile_number == 0x12 && skin->preskin->allow_untested_media) || } else {
fprintf(stderr,
"cdrskin: SORRY : blank=%s for now does DVD-RW and DVD+RW only\n",
fmt_text);
{ret= 0; goto ex;}
}
if(s==BURN_DISC_UNSUITABLE)
fprintf(stderr,
"cdrskin: NOTE : blank=%s accepted not yet suitable media\n",
fmt_text);
} else if(do_format==4) {
/* Formatting and influencing defect management of DVD-RAM , BD-RE */
if((profile_number == 0x12 && skin->preskin->allow_untested_media) ||
(profile_number == 0x43 && skin->preskin->allow_untested_media)) { (profile_number == 0x43 && skin->preskin->allow_untested_media)) {
/* <<<
fprintf(stderr, fprintf(stderr,
"cdrskin: SORRY : Formatting of DVD-RAM and BD-RE is not implemented yet\n"); "cdrskin: SORRY : Formatting of DVD-RAM and BD-RE is not implemented yet\n");
{ret= 0; goto ex;} {ret= 0; goto ex;}
*/
/* <<< for now strictly experimental */ /* >>> check whether the current media is already formatted */;
/* DVD-RAM , BD-RE */
/* >>> check whether the current format is already 0x00 of maximum size */
/* >>> demand bit10 of blank_format_type or size>0 */;
} else { } else {
fprintf(stderr, fprintf(stderr,
"cdrskin: SORRY : blank=%s for now does DVD+/-RW only\n",fmt_text); "cdrskin: SORRY : blank=%s for now does DVD-RAM and BD-RE only\n",
fmt_text);
{ret= 0; goto ex;} {ret= 0; goto ex;}
} }
if(s==BURN_DISC_UNSUITABLE) if(s==BURN_DISC_UNSUITABLE)
@ -5110,7 +5133,8 @@ unsupported_format_type:;
Cdrskin_adjust_speed(skin,0); Cdrskin_adjust_speed(skin,0);
#ifndef Cdrskin_extra_leaN #ifndef Cdrskin_extra_leaN
Cdrskin_wait_before_action(skin,1+(do_format==1 || do_format==3)); Cdrskin_wait_before_action(skin,
1+(do_format==1 || do_format==3 || do_format==4));
#endif /* ! Cdrskin_extra_leaN */ #endif /* ! Cdrskin_extra_leaN */
skin->drive_is_busy= 1; skin->drive_is_busy= 1;
@ -5118,9 +5142,10 @@ unsupported_format_type:;
burn_disc_erase(drive,skin->blank_fast); burn_disc_erase(drive,skin->blank_fast);
#ifdef Cdrskin_libburn_has_burn_disc_formaT #ifdef Cdrskin_libburn_has_burn_disc_formaT
} else if(do_format==1 || do_format==3) { } else if(do_format==1 || do_format==3 || do_format==4) {
burn_disc_format(drive,(off_t) skin->blank_format_size, burn_disc_format(drive,(off_t) skin->blank_format_size,
((skin->blank_format_type>>8)&7) | ((!!skin->force_is_set)<<4)); ((skin->blank_format_type>>8)&(1|2|4|32)) |
((!!skin->force_is_set)<<4));
#endif #endif
} else { } else {
@ -5154,7 +5179,8 @@ blanking_done:;
"\rcdrskin: %s done \n", "\rcdrskin: %s done \n",
presperf); presperf);
printf("%s time: %.3fs\n", printf("%s time: %.3fs\n",
(do_format==1 || do_format==3?"Formatting":"Blanking"), (do_format==1 || do_format==3 || do_format==4 ?
"Formatting":"Blanking"),
Sfile_microtime(0)-start_time); Sfile_microtime(0)-start_time);
} }
fflush(stdout); fflush(stdout);
@ -6967,6 +6993,22 @@ set_blank:;
skin->blank_format_type= 1; skin->blank_format_type= 1;
skin->blank_format_size= 0; skin->blank_format_size= 0;
skin->preskin->demands_cdrskin_caps= 1; skin->preskin->demands_cdrskin_caps= 1;
} else if(strncmp(cpt,"format_defectmgt",16)==0) {
skin->do_blank= 1;
skin->blank_format_type= 4;
skin->blank_format_size= 0;
skin->preskin->demands_cdrskin_caps= 1;
if(cpt[16]=='_') {
cpt+= 17;
if(strcmp(cpt,"none")==0)
skin->blank_format_type|= (1<<13);
else if(strcmp(cpt,"max")==0)
;
else if(strcmp(cpt,"min")==0)
skin->blank_format_type|= (1<<10);
else if(isdigit(*cpt))
skin->blank_format_size= Scanf_io_size(cpt,0);
}
} else if(strcmp(cpt,"deformat_sequential")==0) { } else if(strcmp(cpt,"deformat_sequential")==0) {
skin->do_blank= 1; skin->do_blank= 1;
skin->blank_format_type= 2; skin->blank_format_type= 2;

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2008.04.18.092715" #define Cdrskin_timestamP "2008.04.18.092816"