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 dbec2d53a3
commit 54f56d1dd2
3 changed files with 64 additions and 22 deletions

View File

@ -2,7 +2,7 @@
.\" First parameter, NAME, should be all caps
.\" Second parameter, SECTION, should be 1-8, maybe w/ subsection
.\" 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.
.\"
.\" Some roff macros, for reference:
@ -1087,10 +1087,10 @@ original cdrecord.
.TP
.BI stream_recording="on"|"off"
By setting "on" request that compliance to the desired speed setting is
preferred over management of write errors. With DVD-RAM this can bring
effective write speed near to the nominal write speed of the media. But it
will also disable the automatic use of replacement blocks if write errors
occur. It might as well be disliked or ignored by the drive.
preferred over management of write errors. With DVD-RAM and BD-RE this can
bring effective write speed near to the nominal write speed of the media.
But it will also disable the automatic use of replacement blocks
if write errors occur. It might as well be disliked or ignored by the drive.
.br
.SH EXAMPLES
.SS

View File

@ -3121,13 +3121,23 @@ struct CdrskiN {
int no_blank_appendable;
int blank_format_type; /* 0=blank
bit0-7:
1=format_overwrite
1=format_overwrite for DVD+RW, DVD-RW
bit8-15: bit0-7 of burn_disc_format(flag)
bit8 = write zeros after formatting
bit9 = insist in size 0
bit10= format to maximum available size
bit11= - reserved -
bit12= - reserved -
bit13= - reserved -
2=deformat_sequential (blank_fast might matter)
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() */
@ -4947,8 +4957,9 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
char *verb= "blank", *presperf="blanking", *fmt_text= "...";
char profile_name[80];
static char fmtp[][40]= {
"format_default", "format_overwrite", "deformat_sequential"};
static int fmtp_max= 2;
"format_default", "format_overwrite", "deformat_sequential",
"format_defectmgt"};
static int fmtp_max= 3;
start_time= Sfile_microtime(0); /* will be refreshed later */
ret= Cdrskin_grab_drive(skin,0);
@ -4965,7 +4976,7 @@ int Cdrskin_blank(struct CdrskiN *skin, int flag)
if(skin->verbosity>=Cdrskin_verbose_progresS)
Cdrskin_report_disc_status(skin,s,1);
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";
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");
{ret= 2; goto ex;}
}
} else if((profile_number == 0x12 && skin->preskin->allow_untested_media) ||
(profile_number == 0x43 && 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)) {
/* <<<
fprintf(stderr,
"cdrskin: SORRY : Formatting of DVD-RAM and BD-RE is not implemented yet\n");
{ret= 0; goto ex;}
*/
/* <<< for now strictly experimental */
/* DVD-RAM , BD-RE */
/* >>> check whether the current format is already 0x00 of maximum size */
/* >>> demand bit10 of blank_format_type or size>0 */;
/* >>> check whether the current media is already formatted */;
} else {
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;}
}
if(s==BURN_DISC_UNSUITABLE)
@ -5110,7 +5133,8 @@ unsupported_format_type:;
Cdrskin_adjust_speed(skin,0);
#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 */
skin->drive_is_busy= 1;
@ -5118,9 +5142,10 @@ unsupported_format_type:;
burn_disc_erase(drive,skin->blank_fast);
#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,
((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
} else {
@ -5154,7 +5179,8 @@ blanking_done:;
"\rcdrskin: %s done \n",
presperf);
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);
}
fflush(stdout);
@ -6967,6 +6993,22 @@ set_blank:;
skin->blank_format_type= 1;
skin->blank_format_size= 0;
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) {
skin->do_blank= 1;
skin->blank_format_type= 2;

View File

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