Reporting BD speed units with pacifier rather than DVD units

This commit is contained in:
Thomas Schmitt 2008-11-30 09:50:38 +00:00
parent f9740b5aeb
commit 327412eb54
2 changed files with 18 additions and 6 deletions

View File

@ -1 +1 @@
#define Xorriso_timestamP "2008.11.29.214208"
#define Xorriso_timestamP "2008.11.30.095007"

View File

@ -1033,7 +1033,7 @@ int Xorriso_auto_format(struct XorrisO *xorriso, int flag)
*/
int Xorriso_write_session(struct XorrisO *xorriso, int flag)
{
int ret, relax= 0, i;
int ret, relax= 0, i, pacifier_speed= 0;
int major, minor, micro;
char xorriso_id[256], *img_id, sfe[5*SfileadrL], *cpt;
struct isoburn_imgen_opts *sopts= NULL;
@ -1050,11 +1050,12 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
IsoNode *node;
ElToritoBootImage *bootimg;
enum eltorito_boot_media_type emul_type= ELTORITO_NO_EMUL;
int profile_number;
char profile_name[80];
#ifdef NIX
int profile, status, num_formats;
char profile_name[80];
off_t size;
unsigned dummy;
@ -1124,6 +1125,12 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
{ret= 0; goto ex;}
}
}
ret= Xorriso_get_profile(xorriso, &profile_number, profile_name, 2);
if(ret == 2)
pacifier_speed= 1;
else if(ret == 1 && (profile_number == 0x41 || profile_number == 0x42 ||
profile_number == 0x43))
pacifier_speed= 2;
ret= isoburn_igopt_new(&sopts, 0);
if(ret<=0) {
@ -1394,7 +1401,7 @@ int Xorriso_write_session(struct XorrisO *xorriso, int flag)
isoburn_disc_write(burn_options, disc);
burn_write_opts_free(burn_options);
ret= Xorriso_pacifier_loop(xorriso, drive, 0);
ret= Xorriso_pacifier_loop(xorriso, drive, pacifier_speed << 4);
if(ret<=0)
goto ex;
if(!isoburn_drive_wrote_well(drive)) {
@ -1502,6 +1509,7 @@ int Xorriso_check_burn_abort(struct XorrisO *xorriso, int flag)
1= mkisofs
2= cdrecord
bit4= report speed in CD units
bit5= report speed in BD units
*/
int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
int flag)
@ -1526,6 +1534,8 @@ int Xorriso_pacifier_loop(struct XorrisO *xorriso, struct burn_drive *drive,
emul= xorriso->pacifier_style;
if(flag&16)
speed_factor= 150.0*1024;
else if(flag & 32)
speed_factor= 4495625;
progress.sector= 0;
current_time= Sfile_microtime(0);
while(1) {
@ -7101,7 +7111,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
char *track_source, off_t tsize, int flag)
{
int ret, fd, unpredicted_size, profile_number, is_cd= 0, dummy, nwa= -1;
int isosize= -1, do_isosize;
int isosize= -1, do_isosize, is_bd= 0;
struct burn_drive_info *dinfo;
struct burn_drive *drive;
@ -7238,6 +7248,8 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
ret= Xorriso_get_profile(xorriso, &profile_number, profile_name, 2);
is_cd= (ret==2);
is_bd= (profile_number == 0x41 || profile_number == 0x42 ||
profile_number == 0x43);
if(isoburn_needs_emulation(drive)) {
if(flag&1) {
@ -7282,7 +7294,7 @@ int Xorriso_burn_track(struct XorrisO *xorriso, off_t write_start_address,
xorriso->run_state= 1; /* Indicate that burning has started */
burn_disc_write(burn_options, disc);
ret= Xorriso_pacifier_loop(xorriso, drive, 2|(is_cd<<4));
ret= Xorriso_pacifier_loop(xorriso, drive, 2 | (is_cd << 4) | (is_bd << 5));
if(ret<=0)
goto ex;
if(!burn_drive_wrote_well(drive)) {