New -stream_recording mode with start address, "on" is now 32s
This commit is contained in:
parent
3a40796647
commit
7c5052454c
@ -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 XORRISO 1 "Feb 23, 2008"
|
.TH XORRISO 1 "Feb 27, 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:
|
||||||
@ -1696,12 +1696,19 @@ MMC drives usually activate their own idea of speed and take
|
|||||||
the speed value given by the burn program only as upper limit
|
the speed value given by the burn program only as upper limit
|
||||||
for their own decision.
|
for their own decision.
|
||||||
.TP
|
.TP
|
||||||
\fB\-stream_recording\fR "on"|"off"
|
\fB\-stream_recording\fR "on"|"off"|"full"|"data"|number
|
||||||
Setting "on" tries to circumvent the management of defects on DVD-RAM, BD-RE,
|
Setting "on" tries to circumvent the management of defects on DVD-RAM, BD-RE,
|
||||||
or BD-R. Defect management keeps partly damaged media usable. But it reduces
|
or BD-R. Defect management keeps partly damaged media usable. But it reduces
|
||||||
write speed to half nominal speed even if the media is in perfect shape.
|
write speed to half nominal speed even if the media is in perfect shape.
|
||||||
For the case of flawless media, one may use -stream_recording "on" to get
|
For the case of flawless media, one may use -stream_recording "on" to get
|
||||||
full speed.
|
full speed.
|
||||||
|
.br
|
||||||
|
"full" tries full speed with all write operations, whereas "on" does this
|
||||||
|
only above byte address 32s. One may give a number of at least 16s
|
||||||
|
in order to set an own address limit.
|
||||||
|
.br
|
||||||
|
"data" causes full speed to start when superblock and directory entries are
|
||||||
|
written and writing of file content blocks begins.
|
||||||
.TP
|
.TP
|
||||||
\fB\-dummy\fR "on"|"off"
|
\fB\-dummy\fR "on"|"off"
|
||||||
If "on" then simulate burning or refuse with FAILURE event if
|
If "on" then simulate burning or refuse with FAILURE event if
|
||||||
|
@ -6208,8 +6208,16 @@ int Xorriso_status(struct XorrisO *xorriso, char *filter, FILE *fp, int flag)
|
|||||||
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
Xorriso_status_result(xorriso,filter,fp,flag&2);
|
||||||
|
|
||||||
is_default= (xorriso->do_stream_recording==0);
|
is_default= (xorriso->do_stream_recording==0);
|
||||||
sprintf(line,"-stream_recording %s\n",
|
strcpy(mode, "off");
|
||||||
xorriso->do_stream_recording ? "on" : "off");
|
if(xorriso->do_stream_recording == 1)
|
||||||
|
strcpy(mode, "full");
|
||||||
|
if(xorriso->do_stream_recording == 2)
|
||||||
|
strcpy(mode, "data");
|
||||||
|
else if(xorriso->do_stream_recording == 32)
|
||||||
|
strcpy(mode, "on");
|
||||||
|
else if(xorriso->do_stream_recording >= 16)
|
||||||
|
sprintf(mode, "%ds", xorriso->do_stream_recording);
|
||||||
|
sprintf(line,"-stream_recording %s\n", mode);
|
||||||
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);
|
||||||
|
|
||||||
@ -16386,9 +16394,22 @@ int Xorriso_option_status_history_max(struct XorrisO *xorriso, int num,
|
|||||||
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
|
int Xorriso_option_stream_recording(struct XorrisO *xorriso, char *mode,
|
||||||
int flag)
|
int flag)
|
||||||
{
|
{
|
||||||
|
double num;
|
||||||
|
|
||||||
if(strcmp(mode,"on")==0 || mode[0]==0)
|
if(strcmp(mode,"on")==0 || mode[0]==0)
|
||||||
|
xorriso->do_stream_recording= 32;
|
||||||
|
else if(strcmp(mode,"full")==0)
|
||||||
xorriso->do_stream_recording= 1;
|
xorriso->do_stream_recording= 1;
|
||||||
else
|
else if(strcmp(mode,"data")==0)
|
||||||
|
xorriso->do_stream_recording= 2;
|
||||||
|
else if(mode[0] >= '0' && mode[0] <= '9') {
|
||||||
|
num= Scanf_io_size(mode, 0);
|
||||||
|
num/= 2048.0;
|
||||||
|
if(num >= 16 && num <= 0x7FFFFFFF)
|
||||||
|
xorriso->do_stream_recording= num;
|
||||||
|
else
|
||||||
|
xorriso->do_stream_recording= 0;
|
||||||
|
} else
|
||||||
xorriso->do_stream_recording= 0;
|
xorriso->do_stream_recording= 0;
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
|
@ -201,7 +201,8 @@ struct XorrisO { /* the global context of xorriso */
|
|||||||
/* <<< not sure whether to keep this after libisofs will have
|
/* <<< not sure whether to keep this after libisofs will have
|
||||||
learned to pad up MBR images to full MB */
|
learned to pad up MBR images to full MB */
|
||||||
|
|
||||||
int do_stream_recording;
|
int do_stream_recording; /* 0=no, 1=yes, 2=for data, not for dir
|
||||||
|
>=16 means yes with number as start LBA */
|
||||||
|
|
||||||
int keep_boot_image;
|
int keep_boot_image;
|
||||||
int patch_isolinux_image;
|
int patch_isolinux_image;
|
||||||
|
@ -1 +1 @@
|
|||||||
#define Xorriso_timestamP "2009.02.28.175926"
|
#define Xorriso_timestamP "2009.02.28.181358"
|
||||||
|
@ -873,7 +873,7 @@ int Xorriso_make_write_options(
|
|||||||
struct XorrisO *xorriso, struct burn_drive *drive,
|
struct XorrisO *xorriso, struct burn_drive *drive,
|
||||||
struct burn_write_opts **burn_options, int flag)
|
struct burn_write_opts **burn_options, int flag)
|
||||||
{
|
{
|
||||||
int drive_role;
|
int drive_role, stream_mode= 0;
|
||||||
|
|
||||||
*burn_options= burn_write_opts_new(drive);
|
*burn_options= burn_write_opts_new(drive);
|
||||||
if(*burn_options==NULL) {
|
if(*burn_options==NULL) {
|
||||||
@ -887,8 +887,11 @@ int Xorriso_make_write_options(
|
|||||||
burn_write_opts_set_multi(*burn_options,
|
burn_write_opts_set_multi(*burn_options,
|
||||||
!(xorriso->do_close || drive_role==0 || drive_role==3));
|
!(xorriso->do_close || drive_role==0 || drive_role==3));
|
||||||
burn_drive_set_speed(drive, xorriso->speed, xorriso->speed);
|
burn_drive_set_speed(drive, xorriso->speed, xorriso->speed);
|
||||||
burn_write_opts_set_stream_recording(*burn_options,
|
if(xorriso->do_stream_recording == 1)
|
||||||
!! xorriso->do_stream_recording);
|
stream_mode= 1;
|
||||||
|
else if(xorriso->do_stream_recording >= 16)
|
||||||
|
stream_mode= xorriso->do_stream_recording;
|
||||||
|
burn_write_opts_set_stream_recording(*burn_options, stream_mode);
|
||||||
burn_write_opts_set_underrun_proof(*burn_options, 1);
|
burn_write_opts_set_underrun_proof(*burn_options, 1);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@ -1080,7 +1083,7 @@ int Xorriso_auto_format(struct XorrisO *xorriso, int flag)
|
|||||||
*/
|
*/
|
||||||
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
||||||
{
|
{
|
||||||
int ret, relax= 0, i, pacifier_speed= 0;
|
int ret, relax= 0, i, pacifier_speed= 0, data_lba;
|
||||||
int major, minor, micro;
|
int major, minor, micro;
|
||||||
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *cpt;
|
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *cpt;
|
||||||
struct isoburn_imgen_opts *sopts= NULL;
|
struct isoburn_imgen_opts *sopts= NULL;
|
||||||
@ -1363,11 +1366,17 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
|
|||||||
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
Xorriso_msgs_submit(xorriso, 0, xorriso->info_text, 0, "FAILURE", 0);
|
||||||
{ret= 0; goto ex;}
|
{ret= 0; goto ex;}
|
||||||
}
|
}
|
||||||
isoburn_igopt_get_effective_lba(sopts, &(xorriso->session_lba));
|
|
||||||
|
|
||||||
ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);
|
ret= Xorriso_make_write_options(xorriso, drive, &burn_options, 0);
|
||||||
if(ret<=0)
|
if(ret<=0)
|
||||||
goto ex;
|
goto ex;
|
||||||
|
isoburn_igopt_get_effective_lba(sopts, &(xorriso->session_lba));
|
||||||
|
if(xorriso->do_stream_recording == 2) {
|
||||||
|
ret= isoburn_igopt_get_data_start(sopts, &data_lba);
|
||||||
|
if(ret <=0 || data_lba < 16)
|
||||||
|
data_lba= 51200; /* 100 MB */
|
||||||
|
burn_write_opts_set_stream_recording(burn_options, data_lba);
|
||||||
|
}
|
||||||
|
|
||||||
ret= Xorriso_sanitize_image_size(xorriso, drive, disc, burn_options, flag&1);
|
ret= Xorriso_sanitize_image_size(xorriso, drive, disc, burn_options, flag&1);
|
||||||
if(ret<=0 || (flag&1)) {
|
if(ret<=0 || (flag&1)) {
|
||||||
@ -1577,7 +1586,8 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
}
|
}
|
||||||
if(first_base_time > 0 &&
|
if(first_base_time > 0 &&
|
||||||
current_time - first_base_time >= 10 &&
|
current_time - first_base_time >= 10 &&
|
||||||
progress.sectors > first_base_count) {
|
progress.sectors > first_base_count &&
|
||||||
|
progress.sector > first_base_count) {
|
||||||
norm= (1.0 - quot);
|
norm= (1.0 - quot);
|
||||||
if(norm < 0.0001)
|
if(norm < 0.0001)
|
||||||
norm= 0.0001;
|
norm= 0.0001;
|
||||||
@ -1597,7 +1607,7 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
|
|||||||
norm+= 1.0;
|
norm+= 1.0;
|
||||||
}
|
}
|
||||||
time_prediction/= norm;
|
time_prediction/= norm;
|
||||||
if(time_prediction < 30*86400) {
|
if(time_prediction < 30*86400 && time_prediction > 0) {
|
||||||
time_prediction+= current_time + 1;
|
time_prediction+= current_time + 1;
|
||||||
Ftimetxt(time_prediction, date_text, 4);
|
Ftimetxt(time_prediction, date_text, 4);
|
||||||
sprintf(xorriso->info_text+strlen(xorriso->info_text),
|
sprintf(xorriso->info_text+strlen(xorriso->info_text),
|
||||||
|
Loading…
x
Reference in New Issue
Block a user