New -read_speed prefixes "soft_force:" and "soft_corr:"
This commit is contained in:
parent
f23b23fd17
commit
ffb7fe64c9
@ -242,6 +242,8 @@ int Xorriso_new(struct XorrisO ** xorriso,char *progname, int flag)
|
|||||||
m->auto_close= 0;
|
m->auto_close= 0;
|
||||||
m->write_speed= 0; /* max */
|
m->write_speed= 0; /* max */
|
||||||
m->read_speed= -2; /* do not set */
|
m->read_speed= -2; /* do not set */
|
||||||
|
m->read_speed_force= 0;
|
||||||
|
m->read_speed_corr= 250000; /* look back at most 0.25 seconds with _force */
|
||||||
m->fs= 4*512; /* 4 MiB */
|
m->fs= 4*512; /* 4 MiB */
|
||||||
m->padding= 300*1024;
|
m->padding= 300*1024;
|
||||||
m->do_padding_by_libisofs= 0;
|
m->do_padding_by_libisofs= 0;
|
||||||
|
@ -1,7 +1,7 @@
|
|||||||
|
|
||||||
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
/* xorriso - creates, loads, manipulates and burns ISO 9660 filesystem images.
|
||||||
|
|
||||||
Copyright 2007-2019 Thomas Schmitt, <scdbackup@gmx.net>
|
Copyright 2007-2020 Thomas Schmitt, <scdbackup@gmx.net>
|
||||||
|
|
||||||
Provided under GPL version 2 or later.
|
Provided under GPL version 2 or later.
|
||||||
|
|
||||||
@ -204,6 +204,42 @@ ex:;
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/* @param flag: bit0= set read speed
|
||||||
|
bit1= set write speed
|
||||||
|
*/
|
||||||
|
int Xorriso_set_speed(struct XorrisO *xorriso, struct burn_drive *drive,
|
||||||
|
int read_speed, int write_speed, int flag)
|
||||||
|
{
|
||||||
|
int r_speed = 0, w_speed = 0, ret = 0, profile_no= 0;
|
||||||
|
char profile_name[80];
|
||||||
|
|
||||||
|
if((flag & 3) == 0)
|
||||||
|
return(0);
|
||||||
|
if(xorriso->read_speed == -2) {
|
||||||
|
if(!(flag & 2))
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
if(flag & 1)
|
||||||
|
r_speed= read_speed;
|
||||||
|
if(flag & 2)
|
||||||
|
w_speed= write_speed;
|
||||||
|
|
||||||
|
ret= burn_disc_get_profile(drive, &profile_no, profile_name);
|
||||||
|
if(ret <= 0)
|
||||||
|
profile_no= 0;
|
||||||
|
if((r_speed > 0 || w_speed > 0) && profile_no >= 0x10) {
|
||||||
|
ret= burn_drive_set_speed_exact(drive, r_speed, w_speed);
|
||||||
|
if(ret > 0)
|
||||||
|
goto ex;
|
||||||
|
}
|
||||||
|
burn_drive_set_speed(drive, r_speed, w_speed);
|
||||||
|
ret= 2;
|
||||||
|
ex:;
|
||||||
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
|
return(ret);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* @param flag bit0= acquire as isoburn input drive
|
/* @param flag bit0= acquire as isoburn input drive
|
||||||
bit1= acquire as libburn output drive (as isoburn drive if bit0)
|
bit1= acquire as libburn output drive (as isoburn drive if bit0)
|
||||||
bit2= regard overwritable media as blank
|
bit2= regard overwritable media as blank
|
||||||
@ -573,8 +609,7 @@ int Xorriso_aquire_drive(struct XorrisO *xorriso, char *adr, char *show_adr,
|
|||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
if(xorriso->read_speed != -2)
|
Xorriso_set_speed(xorriso, drive, xorriso->read_speed, 0, 1);
|
||||||
burn_drive_set_speed(drive, xorriso->read_speed, 0);
|
|
||||||
read_ret= ret= isoburn_read_image(drive, ropts, &volset);
|
read_ret= ret= isoburn_read_image(drive, ropts, &volset);
|
||||||
|
|
||||||
/* <<< Resetting to normal thresholds */
|
/* <<< Resetting to normal thresholds */
|
||||||
@ -2308,12 +2343,13 @@ int Xorriso_scsi_log(struct XorrisO *xorriso, int flag)
|
|||||||
int Xorriso_check_md5_range(struct XorrisO *xorriso, off_t start_lba,
|
int Xorriso_check_md5_range(struct XorrisO *xorriso, off_t start_lba,
|
||||||
off_t end_lba, char md5[16], int flag)
|
off_t end_lba, char md5[16], int flag)
|
||||||
{
|
{
|
||||||
int ret;
|
int ret, us_corr = 0;
|
||||||
struct burn_drive_info *dinfo= NULL;
|
struct burn_drive_info *dinfo= NULL;
|
||||||
struct burn_drive *drive= NULL;
|
struct burn_drive *drive= NULL;
|
||||||
off_t pos, data_count, to_read;
|
off_t pos, data_count, to_read, slowdown_count= 0;
|
||||||
char *data= NULL, data_md5[16];
|
char *data= NULL, data_md5[16];
|
||||||
void *ctx = NULL;
|
void *ctx = NULL;
|
||||||
|
struct timeval prev_time;
|
||||||
|
|
||||||
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
ret= Xorriso_get_drive_handles(xorriso, &dinfo, &drive,
|
||||||
"on attempt to check session MD5 checksum", 0);
|
"on attempt to check session MD5 checksum", 0);
|
||||||
@ -2327,8 +2363,10 @@ int Xorriso_check_md5_range(struct XorrisO *xorriso, off_t start_lba,
|
|||||||
Xorriso_no_malloc_memory(xorriso, NULL, 0);
|
Xorriso_no_malloc_memory(xorriso, NULL, 0);
|
||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
if(xorriso->read_speed != -2)
|
if(xorriso->read_speed_force > 0) /* initialize forced speed limit */
|
||||||
burn_drive_set_speed(drive, xorriso->read_speed, 0);
|
burn_nominal_slowdown(xorriso->read_speed_force, xorriso->read_speed_corr,
|
||||||
|
&prev_time, &us_corr, (off_t) 0, 1);
|
||||||
|
Xorriso_set_speed(xorriso, drive, xorriso->read_speed, 0, 1);
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
for(pos= start_lba; pos < end_lba; pos+= 32) {
|
for(pos= start_lba; pos < end_lba; pos+= 32) {
|
||||||
to_read= 32;
|
to_read= 32;
|
||||||
@ -2339,6 +2377,15 @@ int Xorriso_check_md5_range(struct XorrisO *xorriso, off_t start_lba,
|
|||||||
if(ret <= 0)
|
if(ret <= 0)
|
||||||
goto ex;
|
goto ex;
|
||||||
iso_md5_compute(ctx, data, (int) data_count);
|
iso_md5_compute(ctx, data, (int) data_count);
|
||||||
|
if(xorriso->read_speed_force > 0 && pos + to_read <= end_lba) {
|
||||||
|
slowdown_count+= data_count;
|
||||||
|
if(slowdown_count >= 128 * 1024) {
|
||||||
|
burn_nominal_slowdown(xorriso->read_speed_force,
|
||||||
|
xorriso->read_speed_corr,
|
||||||
|
&prev_time, &us_corr, slowdown_count, 0);
|
||||||
|
slowdown_count= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
xorriso->pacifier_count+= data_count;
|
xorriso->pacifier_count+= data_count;
|
||||||
xorriso->pacifier_byte_count+= data_count;
|
xorriso->pacifier_byte_count+= data_count;
|
||||||
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
Xorriso_pacifier_callback(xorriso, "content bytes read",
|
||||||
@ -2741,7 +2788,7 @@ int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
|
|||||||
{
|
{
|
||||||
int i, j, ret, total_count= 0, sectors= -1, sector_size= -1, skip_reading;
|
int i, j, ret, total_count= 0, sectors= -1, sector_size= -1, skip_reading;
|
||||||
int prev_quality= -1, quality= -1, retry= 0, profile_no, is_cd= 0;
|
int prev_quality= -1, quality= -1, retry= 0, profile_no, is_cd= 0;
|
||||||
int eccb_size= 16;
|
int eccb_size= 16, us_corr = 0;
|
||||||
int start_sec, end_sec, first_value, fret, suspect_tao_end= 0;
|
int start_sec, end_sec, first_value, fret, suspect_tao_end= 0;
|
||||||
char profile_name[80];
|
char profile_name[80];
|
||||||
int start_lba= 0;
|
int start_lba= 0;
|
||||||
@ -2749,6 +2796,8 @@ int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
|
|||||||
struct burn_drive_info *dinfo;
|
struct burn_drive_info *dinfo;
|
||||||
char *data= NULL, *data_pt;
|
char *data= NULL, *data_pt;
|
||||||
off_t data_count, to_read, read_count= 0, write_amount, skipped_to_read;
|
off_t data_count, to_read, read_count= 0, write_amount, skipped_to_read;
|
||||||
|
off_t slowdown_count= 0;
|
||||||
|
struct timeval prev_time;
|
||||||
double pre_read_time, post_read_time, time_diff, total_time_diff= 0;
|
double pre_read_time, post_read_time, time_diff, total_time_diff= 0;
|
||||||
double last_abort_file_time= 0;
|
double last_abort_file_time= 0;
|
||||||
void *ctx= NULL;
|
void *ctx= NULL;
|
||||||
@ -2861,8 +2910,10 @@ int Xorriso_check_interval(struct XorrisO *xorriso, struct SpotlisT *spotlist,
|
|||||||
goto ex;
|
goto ex;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(xorriso->read_speed != -2)
|
if(xorriso->read_speed_force > 0) /* initialize forced speed limit */
|
||||||
burn_drive_set_speed(drive, xorriso->read_speed, 0);
|
burn_nominal_slowdown(xorriso->read_speed_force, xorriso->read_speed_corr,
|
||||||
|
&prev_time, &us_corr, (off_t) 0, 1);
|
||||||
|
Xorriso_set_speed(xorriso, drive, xorriso->read_speed, 0, 1);
|
||||||
Xorriso_process_msg_queues(xorriso,0);
|
Xorriso_process_msg_queues(xorriso,0);
|
||||||
start_lba= from_lba;
|
start_lba= from_lba;
|
||||||
to_read= read_chunk;
|
to_read= read_chunk;
|
||||||
@ -3020,6 +3071,15 @@ abort_check:;
|
|||||||
if(job->data_to_limit >= 0 && read_count > job->data_to_limit)
|
if(job->data_to_limit >= 0 && read_count > job->data_to_limit)
|
||||||
write_amount-= (read_count - job->data_to_limit);
|
write_amount-= (read_count - job->data_to_limit);
|
||||||
}
|
}
|
||||||
|
if(xorriso->read_speed_force > 0) {
|
||||||
|
slowdown_count+= data_count;
|
||||||
|
if(slowdown_count >= 128 * 1024) {
|
||||||
|
burn_nominal_slowdown(xorriso->read_speed_force,
|
||||||
|
xorriso->read_speed_corr,
|
||||||
|
&prev_time, &us_corr, slowdown_count, 0);
|
||||||
|
slowdown_count= 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
if(write_amount > 0) {
|
if(write_amount > 0) {
|
||||||
if(job->data_to_fd >= 0) {
|
if(job->data_to_fd >= 0) {
|
||||||
ret= lseek(job->data_to_fd,
|
ret= lseek(job->data_to_fd,
|
||||||
|
@ -1779,9 +1779,10 @@ int Xorriso_option_help(struct XorrisO *xorriso, int flag)
|
|||||||
" Enable or disable status and content changes of drive.",
|
" Enable or disable status and content changes of drive.",
|
||||||
" -scsi_dev_family \"default\"|\"sr\"|\"scd\"|\"sg\"",
|
" -scsi_dev_family \"default\"|\"sr\"|\"scd\"|\"sg\"",
|
||||||
" Linux specific: Choose device file type.",
|
" Linux specific: Choose device file type.",
|
||||||
" -read_speed number[\"k/s\"|\"m/s\"|\"[x]CD\"|\"[x]DVD\"|\"[x]BD\"]",
|
" -read_speed number[\"k/s\"|\"[x]CD\"|\"[x]DVD\"|\"[x]BD\"]|keyword",
|
||||||
" Set the read speed. Default is \"none\" = do not set speed",
|
" Set the read speed. Default is \"none\" = do not set speed",
|
||||||
" before reading.",
|
" before reading. Prefix \"soft_force:\" enables slowdown by",
|
||||||
|
" software.",
|
||||||
" -grow_blindly \"off\"|predicted_nwa",
|
" -grow_blindly \"off\"|predicted_nwa",
|
||||||
" Switch between modifying and blind growing.",
|
" Switch between modifying and blind growing.",
|
||||||
" -load \"session\"|\"track\"|\"lba\"|\"sbsector\"|\"volid\"|\"auto\" id",
|
" -load \"session\"|\"track\"|\"lba\"|\"sbsector\"|\"volid\"|\"auto\" id",
|
||||||
|
@ -1408,12 +1408,31 @@ int Xorriso_option_sleep(struct XorrisO *xorriso, char *duration, int flag)
|
|||||||
/* Commands -speed , -read_speed */
|
/* Commands -speed , -read_speed */
|
||||||
/* @param flag bit0= -read_speed rather than -speed
|
/* @param flag bit0= -read_speed rather than -speed
|
||||||
*/
|
*/
|
||||||
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag)
|
int Xorriso_option_speed(struct XorrisO *xorriso, char *speed_in, int flag)
|
||||||
{
|
{
|
||||||
int is_cd= 1, unit_found= 0, ret, profile_number, intspeed= 1;
|
int is_cd= 1, unit_found= 0, ret, profile_number, intspeed= 1, for_force= 0;
|
||||||
double num= -2.0;
|
double num= -2.0;
|
||||||
char *cpt, profile_name[80];
|
char *cpt, profile_name[80], *speed;
|
||||||
|
|
||||||
|
speed= speed_in;
|
||||||
|
|
||||||
|
if(strncmp(speed, "soft_corr:", 10) == 0 && (flag & 1)) {
|
||||||
|
sscanf(speed + 10, "%lf", &num);
|
||||||
|
if(num > 1.0e9 || num < 0.0) {
|
||||||
|
sprintf(xorriso->info_text,
|
||||||
|
"-read_speed soft_corr: Value too small or too large (0 to 1e9): '%s'",
|
||||||
|
speed + 10);
|
||||||
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
|
return(0);
|
||||||
|
}
|
||||||
|
xorriso->read_speed_corr= num;
|
||||||
|
return(1);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(strncmp(speed, "soft_force:", 11) == 0 && (flag & 1)) {
|
||||||
|
for_force= 1;
|
||||||
|
speed+= 11;
|
||||||
|
}
|
||||||
if(speed[0] == 0 || strcmp(speed, "any") == 0 || strcmp(speed, "max") == 0) {
|
if(speed[0] == 0 || strcmp(speed, "any") == 0 || strcmp(speed, "max") == 0) {
|
||||||
intspeed= 0;
|
intspeed= 0;
|
||||||
} else if(strcmp(speed, "min") == 0) {
|
} else if(strcmp(speed, "min") == 0) {
|
||||||
@ -1425,13 +1444,8 @@ int Xorriso_option_speed(struct XorrisO *xorriso, char *speed, int flag)
|
|||||||
if(num <= 0)
|
if(num <= 0)
|
||||||
intspeed= num;
|
intspeed= num;
|
||||||
}
|
}
|
||||||
if(intspeed <= 0) {
|
if(intspeed <= 0)
|
||||||
if(flag & 1)
|
goto set_speed_and_exit;
|
||||||
xorriso->read_speed= intspeed;
|
|
||||||
else
|
|
||||||
xorriso->write_speed= intspeed;
|
|
||||||
return(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
for(cpt= speed+strlen(speed)-1; cpt>=speed; cpt--)
|
for(cpt= speed+strlen(speed)-1; cpt>=speed; cpt--)
|
||||||
if(isdigit(*cpt) || *cpt=='.')
|
if(isdigit(*cpt) || *cpt=='.')
|
||||||
@ -1472,17 +1486,24 @@ bd_speed:;
|
|||||||
|
|
||||||
if(num> 2.0e9) {
|
if(num> 2.0e9) {
|
||||||
sprintf(xorriso->info_text,
|
sprintf(xorriso->info_text,
|
||||||
"-speed: Value too large or not recognizable: '%s'", speed);
|
"%s: Value too large or not recognizable: '%s'",
|
||||||
|
flag & 1 ? "-read_speed" : "-speed", speed);
|
||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "SORRY", 0);
|
||||||
return(0);
|
return(0);
|
||||||
}
|
}
|
||||||
intspeed= num;
|
intspeed= num;
|
||||||
if(intspeed < num)
|
if(intspeed < num)
|
||||||
intspeed++;
|
intspeed++;
|
||||||
if(flag & 1)
|
|
||||||
xorriso->read_speed= intspeed;
|
set_speed_and_exit:;
|
||||||
|
if(flag & 1) {
|
||||||
|
if(for_force)
|
||||||
|
xorriso->read_speed_force= intspeed;
|
||||||
else
|
else
|
||||||
|
xorriso->read_speed= intspeed;
|
||||||
|
} else {
|
||||||
xorriso->write_speed= intspeed;
|
xorriso->write_speed= intspeed;
|
||||||
|
}
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3434,6 +3434,16 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
|
|
||||||
is_default= (xorriso->read_speed == -2);
|
is_default= (xorriso->read_speed == -2);
|
||||||
sprintf(line,"-read_speed %s\n", Xorriso__speedname(xorriso->read_speed));
|
sprintf(line,"-read_speed %s\n", Xorriso__speedname(xorriso->read_speed));
|
||||||
|
if(!(is_default && no_defaults))
|
||||||
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||||
|
is_default= (xorriso->read_speed_force <= 0);
|
||||||
|
sprintf(line,"-read_speed soft_force:%s\n",
|
||||||
|
xorriso->read_speed_force <= 0 ?
|
||||||
|
"0" : Xorriso__speedname(xorriso->read_speed_force));
|
||||||
|
if(!(is_default && no_defaults))
|
||||||
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||||
|
is_default= (xorriso->read_speed_corr == 250000);
|
||||||
|
sprintf(line,"-read_speed soft_corr:%d\n", xorriso->read_speed_corr);
|
||||||
if(!(is_default && no_defaults))
|
if(!(is_default && no_defaults))
|
||||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||||
|
|
||||||
|
@ -9,7 +9,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 XORRISO 1 "Version 1.5.3, Aug 06, 2020"
|
.TH XORRISO 1 "Version 1.5.3, Aug 26, 2020"
|
||||||
.\" 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:
|
||||||
@ -819,9 +819,32 @@ or high. Therefore "min" cannot become higher than 1x speed of the involved
|
|||||||
medium type. Read speed "max" cannot become lower than 52xCD, 24xDVD,
|
medium type. Read speed "max" cannot become lower than 52xCD, 24xDVD,
|
||||||
or 20xBD, depending on the medium type.
|
or 20xBD, depending on the medium type.
|
||||||
.br
|
.br
|
||||||
MMC drives usually activate their own idea of speed and take
|
MMC drives usually activate their own idea of speed and take the speed value
|
||||||
the speed value given by the burn program only as hint
|
given by the burn program only as hint for their own decision. Friendly drives
|
||||||
for their own decision.
|
adjust their constant angular velocity so that the desired speed is reached
|
||||||
|
at the outer rim of the medium. But often there is only the choice between
|
||||||
|
very slow and very loud.
|
||||||
|
.br
|
||||||
|
Sometimes no speed setting is obeyed at all, but speed is adjusted to the
|
||||||
|
demand frequency of the reading program. So xorriso offers to set an additional
|
||||||
|
software enforced limit by prefix "soft_force:". The program will take care
|
||||||
|
not to read faster than the soft_force speed.
|
||||||
|
This may be combined with setting the drive speed to a higher value.
|
||||||
|
Setting "soft_force:0" disables this feature.
|
||||||
|
.br
|
||||||
|
"soft_force:" tries to correct in subsequent waiting periods lost or surplus
|
||||||
|
time of up to 0.25 seconds. This smoothens the overall data stream but also
|
||||||
|
enables short times of higher speed to compensate short times of low speed.
|
||||||
|
Prefix "soft_corr:" sets this hindsight span by giving a number of
|
||||||
|
microseconds. Not more than 1 billion = 1000 seconds.
|
||||||
|
Very short times can cause speed deviations, because systematic inaccuracies of
|
||||||
|
the waiting function cannot be compensated.
|
||||||
|
.br
|
||||||
|
Examples (combinable):
|
||||||
|
.br
|
||||||
|
\-read_speed 6xBD
|
||||||
|
.br
|
||||||
|
\-read_speed soft_force:4xBD \-read_speed soft_corr:100000
|
||||||
.TP
|
.TP
|
||||||
\fB\-load\fR entity id
|
\fB\-load\fR entity id
|
||||||
Load a particular (possibly outdated) ISO session from \-dev or \-indev.
|
Load a particular (possibly outdated) ISO session from \-dev or \-indev.
|
||||||
|
@ -753,7 +753,28 @@ activate them only after image loading.
|
|||||||
than 52xCD, 24xDVD, or 20xBD, depending on the medium type.
|
than 52xCD, 24xDVD, or 20xBD, depending on the medium type.
|
||||||
MMC drives usually activate their own idea of speed and take the
|
MMC drives usually activate their own idea of speed and take the
|
||||||
speed value given by the burn program only as hint for their own
|
speed value given by the burn program only as hint for their own
|
||||||
decision.
|
decision. Friendly drives adjust their constant angular velocity
|
||||||
|
so that the desired speed is reached at the outer rim of the
|
||||||
|
medium. But often there is only the choice between very slow and
|
||||||
|
very loud.
|
||||||
|
Sometimes no speed setting is obeyed at all, but speed is adjusted
|
||||||
|
to the demand frequency of the reading program. So xorriso offers
|
||||||
|
to set an additional software enforced limit by prefix
|
||||||
|
"soft_force:". The program will take care not to read faster than
|
||||||
|
the soft_force speed. This may be combined with setting the drive
|
||||||
|
speed to a higher value. Setting "soft_force:0" disables this
|
||||||
|
feature.
|
||||||
|
"soft_force:" tries to correct in subsequent waiting periods lost
|
||||||
|
or surplus time of up to 0.25 seconds. This smoothens the overall
|
||||||
|
data stream but also enables short times of higher speed to
|
||||||
|
compensate short times of low speed. Prefix "soft_corr:" sets this
|
||||||
|
hindsight span by giving a number of microseconds. Not more than 1
|
||||||
|
billion = 1000 seconds. Very short times can cause speed
|
||||||
|
deviations, because systematic inaccuracies of the waiting function
|
||||||
|
cannot be compensated.
|
||||||
|
Examples (combinable):
|
||||||
|
-read_speed 6xBD
|
||||||
|
-read_speed soft_force:4xBD -read_speed soft_corr:100000
|
||||||
-load entity id
|
-load entity id
|
||||||
Load a particular (possibly outdated) ISO session from -dev or
|
Load a particular (possibly outdated) ISO session from -dev or
|
||||||
-indev. Usually all available sessions are shown with command
|
-indev. Usually all available sessions are shown with command
|
||||||
@ -5374,7 +5395,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* # starts a comment line: Scripting. (line 156)
|
* # starts a comment line: Scripting. (line 156)
|
||||||
* -abort_on controls abort on error: Exception. (line 27)
|
* -abort_on controls abort on error: Exception. (line 27)
|
||||||
* -abstract_file sets abstract file name: SetWrite. (line 250)
|
* -abstract_file sets abstract file name: SetWrite. (line 250)
|
||||||
* -acl controls handling of ACLs: Loading. (line 144)
|
* -acl controls handling of ACLs: Loading. (line 165)
|
||||||
* -add inserts one or more paths: Insert. (line 44)
|
* -add inserts one or more paths: Insert. (line 44)
|
||||||
* -add_plainly inserts one or more paths: Insert. (line 68)
|
* -add_plainly inserts one or more paths: Insert. (line 68)
|
||||||
* -alter_date sets timestamps in ISO image: Manip. (line 139)
|
* -alter_date sets timestamps in ISO image: Manip. (line 139)
|
||||||
@ -5384,14 +5405,14 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -application_id sets application id: SetWrite. (line 197)
|
* -application_id sets application id: SetWrite. (line 197)
|
||||||
* -application_use sets application use field: SetWrite. (line 272)
|
* -application_use sets application use field: SetWrite. (line 272)
|
||||||
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
|
* -as emulates mkisofs or cdrecord: Emulation. (line 13)
|
||||||
* -assert_volid rejects undesired images: Loading. (line 84)
|
* -assert_volid rejects undesired images: Loading. (line 105)
|
||||||
* -auto_charset learns character set from image: Loading. (line 96)
|
* -auto_charset learns character set from image: Loading. (line 117)
|
||||||
* -backslash_codes enables backslash conversion: Scripting. (line 71)
|
* -backslash_codes enables backslash conversion: Scripting. (line 71)
|
||||||
* -ban_stdio_write demands real drive: Loading. (line 316)
|
* -ban_stdio_write demands real drive: Loading. (line 337)
|
||||||
* -biblio_file sets biblio file name: SetWrite. (line 256)
|
* -biblio_file sets biblio file name: SetWrite. (line 256)
|
||||||
* -blank erases media: Writing. (line 57)
|
* -blank erases media: Writing. (line 57)
|
||||||
* -boot_image controls bootability: Bootable. (line 75)
|
* -boot_image controls bootability: Bootable. (line 75)
|
||||||
* -calm_drive reduces drive activity: Loading. (line 306)
|
* -calm_drive reduces drive activity: Loading. (line 327)
|
||||||
* -cd sets working directory in ISO: Navigate. (line 7)
|
* -cd sets working directory in ISO: Navigate. (line 7)
|
||||||
* -cdx sets working directory on disk: Navigate. (line 15)
|
* -cdx sets working directory on disk: Navigate. (line 15)
|
||||||
* -changes_pending overrides change status: Writing. (line 12)
|
* -changes_pending overrides change status: Writing. (line 12)
|
||||||
@ -5425,15 +5446,15 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -cp_rx copies file trees to disk: Restore. (line 110)
|
* -cp_rx copies file trees to disk: Restore. (line 110)
|
||||||
* -cp_rx copies file trees to disk <1>: Restore. (line 118)
|
* -cp_rx copies file trees to disk <1>: Restore. (line 118)
|
||||||
* -cut_out inserts piece of data file: Insert. (line 139)
|
* -cut_out inserts piece of data file: Insert. (line 139)
|
||||||
* -data_cache_size adjusts read cache size: Loading. (line 332)
|
* -data_cache_size adjusts read cache size: Loading. (line 353)
|
||||||
* -dev acquires one drive for input and output: AqDrive. (line 12)
|
* -dev acquires one drive for input and output: AqDrive. (line 12)
|
||||||
* -devices gets list of drives: Inquiry. (line 7)
|
* -devices gets list of drives: Inquiry. (line 7)
|
||||||
* -device_links gets list of drives: Inquiry. (line 17)
|
* -device_links gets list of drives: Inquiry. (line 17)
|
||||||
* -dialog enables dialog mode: DialogCtl. (line 7)
|
* -dialog enables dialog mode: DialogCtl. (line 7)
|
||||||
* -disk_dev_ino fast incremental backup: Loading. (line 226)
|
* -disk_dev_ino fast incremental backup: Loading. (line 247)
|
||||||
* -disk_pattern controls pattern expansion: Insert. (line 34)
|
* -disk_pattern controls pattern expansion: Insert. (line 34)
|
||||||
* -displacement compensate altered image start address: Loading.
|
* -displacement compensate altered image start address: Loading.
|
||||||
(line 57)
|
(line 78)
|
||||||
* -drive_access control device file locking: AqDrive. (line 72)
|
* -drive_access control device file locking: AqDrive. (line 72)
|
||||||
* -drive_class controls drive accessability: AqDrive. (line 43)
|
* -drive_class controls drive accessability: AqDrive. (line 43)
|
||||||
* -du show directory size in ISO image: Navigate. (line 78)
|
* -du show directory size in ISO image: Navigate. (line 78)
|
||||||
@ -5442,8 +5463,8 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -dusx show directory size on disk: Navigate. (line 88)
|
* -dusx show directory size on disk: Navigate. (line 88)
|
||||||
* -dux show directory size on disk: Navigate. (line 84)
|
* -dux show directory size on disk: Navigate. (line 84)
|
||||||
* -dvd_obs set write block size: SetWrite. (line 336)
|
* -dvd_obs set write block size: SetWrite. (line 336)
|
||||||
* -early_stdio_test classifies stdio drives: Loading. (line 320)
|
* -early_stdio_test classifies stdio drives: Loading. (line 341)
|
||||||
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 208)
|
* -ecma119_map names w/o Rock Ridge, Joliet: Loading. (line 229)
|
||||||
* -eject ejects drive tray: Writing. (line 50)
|
* -eject ejects drive tray: Writing. (line 50)
|
||||||
* -end writes pending session and ends program: Scripting. (line 151)
|
* -end writes pending session and ends program: Scripting. (line 151)
|
||||||
* -errfile_log logs problematic disk files: Scripting. (line 116)
|
* -errfile_log logs problematic disk files: Scripting. (line 116)
|
||||||
@ -5454,13 +5475,13 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -extract_cut copies file piece to disk: Restore. (line 87)
|
* -extract_cut copies file piece to disk: Restore. (line 87)
|
||||||
* -extract_l copies files to disk: Restore. (line 83)
|
* -extract_l copies files to disk: Restore. (line 83)
|
||||||
* -extract_single copies file to disk: Restore. (line 80)
|
* -extract_single copies file to disk: Restore. (line 80)
|
||||||
* -file_name_limit curbs length of file names: Loading. (line 246)
|
* -file_name_limit curbs length of file names: Loading. (line 267)
|
||||||
* -file_size_limit limits data file size: SetInsert. (line 7)
|
* -file_size_limit limits data file size: SetInsert. (line 7)
|
||||||
* -find traverses and alters ISO tree: CmdFind. (line 7)
|
* -find traverses and alters ISO tree: CmdFind. (line 7)
|
||||||
* -findx traverses disk tree: Navigate. (line 91)
|
* -findx traverses disk tree: Navigate. (line 91)
|
||||||
* -follow softlinks and mount points: SetInsert. (line 69)
|
* -follow softlinks and mount points: SetInsert. (line 69)
|
||||||
* -format formats media: Writing. (line 87)
|
* -format formats media: Writing. (line 87)
|
||||||
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 194)
|
* -for_backup -acl,-xattr,-hardlinks,-md5: Loading. (line 215)
|
||||||
* -fs sets size of fifo: SetWrite. (line 402)
|
* -fs sets size of fifo: SetWrite. (line 402)
|
||||||
* -getfacl shows ACL in ISO image: Navigate. (line 60)
|
* -getfacl shows ACL in ISO image: Navigate. (line 60)
|
||||||
* -getfacl_r shows ACL in ISO image: Navigate. (line 66)
|
* -getfacl_r shows ACL in ISO image: Navigate. (line 66)
|
||||||
@ -5468,15 +5489,15 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -getfattr_r shows xattr in ISO image: Navigate. (line 75)
|
* -getfattr_r shows xattr in ISO image: Navigate. (line 75)
|
||||||
* -gid sets global ownership: SetWrite. (line 293)
|
* -gid sets global ownership: SetWrite. (line 293)
|
||||||
* -grow_blindly overrides next writeable address: AqDrive. (line 112)
|
* -grow_blindly overrides next writeable address: AqDrive. (line 112)
|
||||||
* -hardlinks controls handling of hard links: Loading. (line 107)
|
* -hardlinks controls handling of hard links: Loading. (line 128)
|
||||||
* -help prints help text: Scripting. (line 19)
|
* -help prints help text: Scripting. (line 19)
|
||||||
* -hfsplus enables production of HFS+ partition: SetWrite. (line 14)
|
* -hfsplus enables production of HFS+ partition: SetWrite. (line 14)
|
||||||
* -hide excludes file names from directory trees: Manip. (line 177)
|
* -hide excludes file names from directory trees: Manip. (line 177)
|
||||||
* -history brings text into readline history: Scripting. (line 42)
|
* -history brings text into readline history: Scripting. (line 42)
|
||||||
* -indev acquires a drive for input: AqDrive. (line 23)
|
* -indev acquires a drive for input: AqDrive. (line 23)
|
||||||
* -in_charset sets input character set: Loading. (line 91)
|
* -in_charset sets input character set: Loading. (line 112)
|
||||||
* -iso_nowtime fixed "now" time for ISO 9660 objects: Loading.
|
* -iso_nowtime fixed "now" time for ISO 9660 objects: Loading.
|
||||||
(line 220)
|
(line 241)
|
||||||
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
|
* -iso_rr_pattern controls pattern expansion: Manip. (line 10)
|
||||||
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 37)
|
* -jigdo clears JTE or or adds parameter to JTE: Jigdo. (line 37)
|
||||||
* -joliet enables production of Joliet tree: SetWrite. (line 10)
|
* -joliet enables production of Joliet tree: SetWrite. (line 10)
|
||||||
@ -5489,7 +5510,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -list_profiles lists supported media: Writing. (line 163)
|
* -list_profiles lists supported media: Writing. (line 163)
|
||||||
* -list_speeds lists available write speeds: Writing. (line 139)
|
* -list_speeds lists available write speeds: Writing. (line 139)
|
||||||
* -lns creates ISO symbolic link: Insert. (line 181)
|
* -lns creates ISO symbolic link: Insert. (line 181)
|
||||||
* -load addresses a particular session as input: Loading. (line 33)
|
* -load addresses a particular session as input: Loading. (line 54)
|
||||||
* -local_charset sets terminal character set: Charset. (line 57)
|
* -local_charset sets terminal character set: Charset. (line 57)
|
||||||
* -logfile logs output channels to file: Frontend. (line 19)
|
* -logfile logs output channels to file: Frontend. (line 19)
|
||||||
* -ls lists files in ISO image: Navigate. (line 24)
|
* -ls lists files in ISO image: Navigate. (line 24)
|
||||||
@ -5504,7 +5525,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -map_l inserts paths from disk file: Insert. (line 96)
|
* -map_l inserts paths from disk file: Insert. (line 96)
|
||||||
* -map_single inserts path: Insert. (line 93)
|
* -map_single inserts path: Insert. (line 93)
|
||||||
* -mark sets synchronizing message: Frontend. (line 23)
|
* -mark sets synchronizing message: Frontend. (line 23)
|
||||||
* -md5 controls handling of MD5 sums: Loading. (line 163)
|
* -md5 controls handling of MD5 sums: Loading. (line 184)
|
||||||
* -mkdir creates ISO directory: Insert. (line 177)
|
* -mkdir creates ISO directory: Insert. (line 177)
|
||||||
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 342)
|
* -modesty_on_drive keep drive buffer hungry: SetWrite. (line 342)
|
||||||
* -mount issues mount command for ISO session: Restore. (line 153)
|
* -mount issues mount command for ISO session: Restore. (line 153)
|
||||||
@ -5545,7 +5566,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -pwdx tells working directory on disk: Navigate. (line 21)
|
* -pwdx tells working directory on disk: Navigate. (line 21)
|
||||||
* -quoted_not_list sets exclusions: SetInsert. (line 66)
|
* -quoted_not_list sets exclusions: SetInsert. (line 66)
|
||||||
* -quoted_path_list inserts paths from disk file: Insert. (line 85)
|
* -quoted_path_list inserts paths from disk file: Insert. (line 85)
|
||||||
* -read_fs filesystem type for image loading: Loading. (line 75)
|
* -read_fs filesystem type for image loading: Loading. (line 96)
|
||||||
* -read_mkisofsrc searches and reads .mkisofsrc file: Emulation.
|
* -read_mkisofsrc searches and reads .mkisofsrc file: Emulation.
|
||||||
(line 155)
|
(line 155)
|
||||||
* -read_speed set read speed: Loading. (line 11)
|
* -read_speed set read speed: Loading. (line 11)
|
||||||
@ -5561,7 +5582,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
(line 57)
|
(line 57)
|
||||||
* -rollback discards pending changes: Writing. (line 9)
|
* -rollback discards pending changes: Writing. (line 9)
|
||||||
* -rollback_end ends program without writing: Scripting. (line 154)
|
* -rollback_end ends program without writing: Scripting. (line 154)
|
||||||
* -rom_toc_scan searches for sessions: Loading. (line 278)
|
* -rom_toc_scan searches for sessions: Loading. (line 299)
|
||||||
* -rr_reloc_dir sets name of relocation directory: SetWrite. (line 150)
|
* -rr_reloc_dir sets name of relocation directory: SetWrite. (line 150)
|
||||||
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179)
|
* -scdbackup_tag enables scdbackup checksum tag: Emulation. (line 179)
|
||||||
* -scsi_dev_family choose Linux device file type: AqDrive. (line 95)
|
* -scsi_dev_family choose Linux device file type: AqDrive. (line 95)
|
||||||
@ -5609,7 +5630,7 @@ File: xorriso.info, Node: CommandIdx, Next: ConceptIdx, Prev: Legal, Up: Top
|
|||||||
* -volume_date sets volume timestamp: SetWrite. (line 211)
|
* -volume_date sets volume timestamp: SetWrite. (line 211)
|
||||||
* -write_type chooses TAO or SAO/DAO: SetWrite. (line 423)
|
* -write_type chooses TAO or SAO/DAO: SetWrite. (line 423)
|
||||||
* -x enables automatic execution order of arguments: ArgSort. (line 16)
|
* -x enables automatic execution order of arguments: ArgSort. (line 16)
|
||||||
* -xattr controls handling of xattr (EA): Loading. (line 151)
|
* -xattr controls handling of xattr (EA): Loading. (line 172)
|
||||||
* -zisofs controls zisofs production: SetWrite. (line 296)
|
* -zisofs controls zisofs production: SetWrite. (line 296)
|
||||||
|
|
||||||
|
|
||||||
@ -5621,7 +5642,7 @@ File: xorriso.info, Node: ConceptIdx, Prev: CommandIdx, Up: Top
|
|||||||
|