New options modesty_on_drive= and minbuf=
This commit is contained in:
parent
7be3b520f6
commit
f7c7e61aa0
@ -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 22, 2007"
|
.TH CDRSKIN 1 "July 12, 2007"
|
||||||
.\" 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:
|
||||||
@ -423,6 +423,13 @@ This option can be performed on track sources which are regular files or block
|
|||||||
devices. For the first track of the session it can be performed on any type
|
devices. For the first track of the session it can be performed on any type
|
||||||
of source if there is a fifo of at least 64 kiB. See option fs= .
|
of source if there is a fifo of at least 64 kiB. See option fs= .
|
||||||
.TP
|
.TP
|
||||||
|
.BI minbuf= percentage
|
||||||
|
Equivalent to:
|
||||||
|
.br
|
||||||
|
modesty_on_drive=1:min_percent=<percentage>:max_percent=95
|
||||||
|
.br
|
||||||
|
Percentage is permissible between 25 and 95.
|
||||||
|
.TP
|
||||||
.BI msifile= path
|
.BI msifile= path
|
||||||
Run option -msinfo and copy the result line into the file given by path.
|
Run option -msinfo and copy the result line into the file given by path.
|
||||||
Unlike -msinfo this option does not redirect all normal output away from
|
Unlike -msinfo this option does not redirect all normal output away from
|
||||||
@ -796,6 +803,32 @@ Try to ignore any signals rather than to abort the program. This is not a
|
|||||||
very good idea. You might end up waiting a very long time for cdrskin
|
very good idea. You might end up waiting a very long time for cdrskin
|
||||||
to finish.
|
to finish.
|
||||||
.TP
|
.TP
|
||||||
|
.BI modesty_on_drive= <mode>[:min_percent=<num>][:max_percent=<num>]
|
||||||
|
Mode 1 keeps the program from trying to write to the burner drive while its
|
||||||
|
buffer is in danger to be filled by more than max_percent. If this filling is
|
||||||
|
exceeded then the program will wait until the filling is at most min_percent.
|
||||||
|
.br
|
||||||
|
This can ease the load on operating system and drive controller and thus help
|
||||||
|
with achieving better input bandwidth if disk and burner are not on independent
|
||||||
|
controllers (like hda and hdb). Unsufficient input bandwidth is indicated by
|
||||||
|
output "(fifo xy%)" of option -v if xy is lower than 90 for some time.
|
||||||
|
modesty_on_drive= might hamper output bandwidth and cause buffer underruns.
|
||||||
|
.br
|
||||||
|
To have max_percent larger than the burner's best actual
|
||||||
|
buffer fill has the same effect as min_percent==max_percent. Some burners
|
||||||
|
do not use their full buffer with all media types. Watch output "[buf xy%]"
|
||||||
|
of option -v to get an impression of the actual buffer usage. Some burners
|
||||||
|
are not suitable because they report buffer fill with granularity too large
|
||||||
|
in size or time.
|
||||||
|
.br
|
||||||
|
Mode 0 disables this feature. Mode -1 keeps it unchanged. Default is:
|
||||||
|
.br
|
||||||
|
modesty_on_drive=0:min_percent=65:max_percent=95
|
||||||
|
.br
|
||||||
|
Percentages are permissible in the range of 25 to 100.
|
||||||
|
This mode can be activated only if option speed= is given with a number > 0
|
||||||
|
which should be realistic, i.e. appropriate for drive and media.
|
||||||
|
.TP
|
||||||
.BI \--no_abort_handler
|
.BI \--no_abort_handler
|
||||||
On signals exit even if the drive is in busy state. This is not a very good
|
On signals exit even if the drive is in busy state. This is not a very good
|
||||||
idea. You might end up with a stuck drive that refuses to hand out the media.
|
idea. You might end up with a stuck drive that refuses to hand out the media.
|
||||||
|
@ -131,7 +131,7 @@ or
|
|||||||
/* Place novelty switch macros here.
|
/* Place novelty switch macros here.
|
||||||
Move them down to Cdrskin_libburn_from_pykix_svN on version leap
|
Move them down to Cdrskin_libburn_from_pykix_svN on version leap
|
||||||
*/
|
*/
|
||||||
/* - no novelty switches currently - */
|
#define Cdrskin_libburn_has_set_waitinG 1
|
||||||
|
|
||||||
#endif /* Cdrskin_libburn_0_3_7 */
|
#endif /* Cdrskin_libburn_0_3_7 */
|
||||||
|
|
||||||
@ -2209,6 +2209,9 @@ set_dev:;
|
|||||||
printf(
|
printf(
|
||||||
" --ignore_signals try to ignore any signals rather than to abort\n");
|
" --ignore_signals try to ignore any signals rather than to abort\n");
|
||||||
printf(" --list_ignored_options list all ignored cdrecord options.\n");
|
printf(" --list_ignored_options list all ignored cdrecord options.\n");
|
||||||
|
#ifdef Cdrskin_libburn_has_set_waitinG
|
||||||
|
printf(" modesty_on_drive=<options> no writing into full drive buffer\n");
|
||||||
|
#endif
|
||||||
printf(" --no_abort_handler exit even if the drive is in busy state\n");
|
printf(" --no_abort_handler exit even if the drive is in busy state\n");
|
||||||
printf(" --no_blank_appendable refuse to blank appendable CD-RW\n");
|
printf(" --no_blank_appendable refuse to blank appendable CD-RW\n");
|
||||||
printf(" --no_convert_fs_adr only literal translations of dev=\n");
|
printf(" --no_convert_fs_adr only literal translations of dev=\n");
|
||||||
@ -2304,6 +2307,10 @@ see_cdrskin_eng_html:;
|
|||||||
fprintf(stderr,"\t-toc\t\tretrieve and print TOC/PMA data\n");
|
fprintf(stderr,"\t-toc\t\tretrieve and print TOC/PMA data\n");
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\t-atip\t\tretrieve media state, print \"Is *erasable\"\n");
|
"\t-atip\t\tretrieve media state, print \"Is *erasable\"\n");
|
||||||
|
#ifdef Cdrskin_libburn_has_set_waitinG
|
||||||
|
fprintf(stderr,
|
||||||
|
"\tminbuf=percent\tset lower limit for drive buffer modesty\n");
|
||||||
|
#endif
|
||||||
#ifdef Cdrskin_libburn_has_multI
|
#ifdef Cdrskin_libburn_has_multI
|
||||||
fprintf(stderr,
|
fprintf(stderr,
|
||||||
"\t-multi\t\tgenerate a TOC that allows multi session\n");
|
"\t-multi\t\tgenerate a TOC that allows multi session\n");
|
||||||
@ -2616,6 +2623,9 @@ struct CdrskiN {
|
|||||||
enum burn_write_types write_type;
|
enum burn_write_types write_type;
|
||||||
int block_type;
|
int block_type;
|
||||||
int multi;
|
int multi;
|
||||||
|
int modesty_on_drive;
|
||||||
|
int min_buffer_percent;
|
||||||
|
int max_buffer_percent;
|
||||||
|
|
||||||
double write_start_address;
|
double write_start_address;
|
||||||
int assert_write_lba;
|
int assert_write_lba;
|
||||||
@ -2748,6 +2758,9 @@ int Cdrskin_new(struct CdrskiN **skin, struct CdrpreskiN *preskin, int flag)
|
|||||||
o->write_type= BURN_WRITE_SAO;
|
o->write_type= BURN_WRITE_SAO;
|
||||||
o->block_type= BURN_BLOCK_SAO;
|
o->block_type= BURN_BLOCK_SAO;
|
||||||
o->multi= 0;
|
o->multi= 0;
|
||||||
|
o->modesty_on_drive= 0;
|
||||||
|
o->min_buffer_percent= 65;
|
||||||
|
o->max_buffer_percent= 95;
|
||||||
o->write_start_address= -1.0;
|
o->write_start_address= -1.0;
|
||||||
o->assert_write_lba= -1;
|
o->assert_write_lba= -1;
|
||||||
o->burnfree= 1;
|
o->burnfree= 1;
|
||||||
@ -2938,7 +2951,7 @@ int Cdrskin_fill_fifo(struct CdrskiN *skin, int flag)
|
|||||||
/** Inform libburn about the consumer x-speed factor of skin */
|
/** Inform libburn about the consumer x-speed factor of skin */
|
||||||
int Cdrskin_adjust_speed(struct CdrskiN *skin, int flag)
|
int Cdrskin_adjust_speed(struct CdrskiN *skin, int flag)
|
||||||
{
|
{
|
||||||
int k_speed;
|
int k_speed, modesty= 0;
|
||||||
|
|
||||||
if(skin->x_speed<0)
|
if(skin->x_speed<0)
|
||||||
k_speed= 0; /* libburn.h promises 0 to be max speed. */
|
k_speed= 0; /* libburn.h promises 0 to be max speed. */
|
||||||
@ -2952,6 +2965,15 @@ int Cdrskin_adjust_speed(struct CdrskiN *skin, int flag)
|
|||||||
ClN(fprintf(stderr,"cdrskin_debug: k_speed= %d\n",k_speed));
|
ClN(fprintf(stderr,"cdrskin_debug: k_speed= %d\n",k_speed));
|
||||||
|
|
||||||
burn_drive_set_speed(skin->drives[skin->driveno].drive,k_speed,k_speed);
|
burn_drive_set_speed(skin->drives[skin->driveno].drive,k_speed,k_speed);
|
||||||
|
|
||||||
|
#ifdef Cdrskin_libburn_has_set_waitinG
|
||||||
|
if(k_speed>0)
|
||||||
|
modesty= skin->modesty_on_drive;
|
||||||
|
burn_drive_set_buffer_waiting(skin->drives[skin->driveno].drive,
|
||||||
|
modesty, -1, -1, -1,
|
||||||
|
skin->min_buffer_percent,
|
||||||
|
skin->max_buffer_percent);
|
||||||
|
#endif
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -6097,6 +6119,90 @@ gracetime_equals:;
|
|||||||
printf("%s\n",ignored_full_options[k]);
|
printf("%s\n",ignored_full_options[k]);
|
||||||
printf("\n");
|
printf("\n");
|
||||||
|
|
||||||
|
} else if(strncmp(argv[i],"-minbuf=",8)==0) {
|
||||||
|
value_pt= argv[i]+8;
|
||||||
|
goto minbuf_equals;
|
||||||
|
} else if(strncmp(argv[i],"minbuf=",7)==0) {
|
||||||
|
value_pt= argv[i]+7;
|
||||||
|
minbuf_equals:;
|
||||||
|
#ifdef Cdrskin_libburn_has_set_waitinG
|
||||||
|
skin->modesty_on_drive= 1;
|
||||||
|
sscanf(value_pt,"%lf",&value);
|
||||||
|
if (value<25 || value>95) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: FATAL : minbuf= value must be between 25 and 95\n");
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
skin->min_buffer_percent= value;
|
||||||
|
skin->max_buffer_percent= 95;
|
||||||
|
ClN(printf("cdrskin: minbuf=%d percent desired buffer fill\n",
|
||||||
|
skin->min_buffer_percent));
|
||||||
|
#else
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: SORRY : Option minbuf= is not available yet.\n");
|
||||||
|
return(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
} else if(strncmp(argv[i],"modesty_on_drive=",17)==0) {
|
||||||
|
#ifdef Cdrskin_libburn_has_set_waitinG
|
||||||
|
value_pt= argv[i]+17;
|
||||||
|
if(*value_pt=='0') {
|
||||||
|
skin->modesty_on_drive= 0;
|
||||||
|
if(skin->verbosity>=Cdrskin_verbose_cmD)
|
||||||
|
ClN(printf(
|
||||||
|
"cdrskin: modesty_on_drive=0 : buffer waiting by os driver\n"));
|
||||||
|
} else if(*value_pt=='1') {
|
||||||
|
skin->modesty_on_drive= 1;
|
||||||
|
if(skin->verbosity>=Cdrskin_verbose_cmD)
|
||||||
|
ClN(printf(
|
||||||
|
"cdrskin: modesty_on_drive=1 : buffer waiting by libburn\n"));
|
||||||
|
} else if(*value_pt=='-' && argv[i][18]=='1') {
|
||||||
|
skin->modesty_on_drive= -1;
|
||||||
|
if(skin->verbosity>=Cdrskin_verbose_cmD)
|
||||||
|
ClN(printf(
|
||||||
|
"cdrskin: modesty_on_drive=-1 : buffer waiting as libburn defaults\n"));
|
||||||
|
} else {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: FATAL : modesty_on_drive= must be -1, 0 or 1\n");
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
while(1) {
|
||||||
|
value_pt= strchr(value_pt,':');
|
||||||
|
if(value_pt==NULL)
|
||||||
|
break;
|
||||||
|
value_pt++;
|
||||||
|
if(strncmp(value_pt,"min_percent=",12)==0) {
|
||||||
|
sscanf(value_pt+12,"%lf",&value);
|
||||||
|
if (value<25 || value>100) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: FATAL : modest_on_drive= min_percent value must be between 25 and 100\n");
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
skin->min_buffer_percent= value;
|
||||||
|
ClN(printf("cdrskin: modesty_on_drive : %d percent min buffer fill\n",
|
||||||
|
skin->min_buffer_percent));
|
||||||
|
} else if(strncmp(value_pt,"max_percent=",12)==0) {
|
||||||
|
sscanf(value_pt+12,"%lf",&value);
|
||||||
|
if (value<25 || value>100) {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: FATAL : modest_on_drive= max_percent value must be between 25 and 100\n");
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
skin->max_buffer_percent= value;
|
||||||
|
ClN(printf("cdrskin: modesty_on_drive : %d percent max buffer fill\n",
|
||||||
|
skin->max_buffer_percent));
|
||||||
|
} else {
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: SORRY : modest_on_drive= unknown option code : %s\n",
|
||||||
|
value_pt);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
fprintf(stderr,
|
||||||
|
"cdrskin: SORRY : Option modesty_on_drive= is not available yet.\n");
|
||||||
|
return(0);
|
||||||
|
#endif
|
||||||
|
|
||||||
} else if(strcmp(argv[i],"-multi")==0) {
|
} else if(strcmp(argv[i],"-multi")==0) {
|
||||||
#ifdef Cdrskin_libburn_has_multI
|
#ifdef Cdrskin_libburn_has_multI
|
||||||
skin->multi= 1;
|
skin->multi= 1;
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Cdrskin_timestamP "2007.07.12.171727"
|
#define Cdrskin_timestamP "2007.07.12.171832"
|
||||||
|
Loading…
Reference in New Issue
Block a user