Silenced error condition about -sao with stdin and -isosize
This commit is contained in:
parent
cc5560fc86
commit
962f68b1d6
@ -952,11 +952,12 @@ int Cdrtrack_get_track_type(struct CdrtracK *o, int *track_type,
|
||||
bit1= size returns fixed_size, padding returns tao_to_sao_tsize
|
||||
*/
|
||||
int Cdrtrack_get_size(struct CdrtracK *track, double *size, double *padding,
|
||||
double *sector_size, int flag)
|
||||
double *sector_size, int *use_data_image_size, int flag)
|
||||
{
|
||||
|
||||
*size= track->fixed_size;
|
||||
*padding= track->padding;
|
||||
*use_data_image_size= track->use_data_image_size;
|
||||
#ifdef Cdrskin_allow_libburn_taO
|
||||
if((flag&1) && track->libburn_track!=NULL) {
|
||||
off_t readcounter= 0,writecounter= 0;
|
||||
@ -1354,19 +1355,21 @@ int Cdrtrack_activate_tao_tsize(struct CdrtracK *track, int flag)
|
||||
|
||||
#endif /* ! Cdrskin_libburn_write_mode_ruleS */
|
||||
|
||||
|
||||
/* @param flag bit0=use *size_used and not the detected data image size
|
||||
*/
|
||||
int Cdrtrack_activate_image_size(struct CdrtracK *track, double *size_used,
|
||||
int flag)
|
||||
{
|
||||
*size_used= track->data_image_size;
|
||||
if(!(flag&1))
|
||||
*size_used= track->data_image_size;
|
||||
if(track->use_data_image_size==0)
|
||||
return(2);
|
||||
if(track->data_image_size<=0)
|
||||
if(*size_used<=0)
|
||||
return(0);
|
||||
track->fixed_size= track->data_image_size;
|
||||
track->fixed_size= *size_used;
|
||||
if(track->libburn_track!=NULL) {
|
||||
#ifdef Cdrskin_libburn_has_track_set_sizE
|
||||
burn_track_set_size(track->libburn_track, (off_t) track->data_image_size);
|
||||
burn_track_set_size(track->libburn_track, (off_t) *size_used);
|
||||
#else
|
||||
fprintf(stderr,
|
||||
"cdrskin: SORRY : libburn version is too old for -isosize\n");
|
||||
@ -4264,7 +4267,7 @@ int Cdrskin_burn_pacifier(struct CdrskiN *skin,
|
||||
double elapsed_time,elapsed_total_time,current_time;
|
||||
double estim_time,estim_minutes,estim_seconds,percent;
|
||||
int ret,fifo_percent,fill,space,advance_interval=0,new_mb,old_mb,time_to_tell;
|
||||
int fs,bs,old_track_idx,buffer_fill,formatting= 0;
|
||||
int fs,bs,old_track_idx,buffer_fill,formatting= 0,use_data_image_size;
|
||||
char fifo_text[80],mb_text[40];
|
||||
char *debug_mark= ""; /* use this to prepend a marker text for experiments */
|
||||
|
||||
@ -4348,7 +4351,7 @@ int Cdrskin_burn_pacifier(struct CdrskiN *skin,
|
||||
|
||||
if(old_track_idx>=0 && old_track_idx<skin->supposed_track_idx) {
|
||||
Cdrtrack_get_size(skin->tracklist[old_track_idx],&fixed_size,&padding,
|
||||
§or_size,1);
|
||||
§or_size,&use_data_image_size,1);
|
||||
if(skin->verbosity>=Cdrskin_verbose_progresS)
|
||||
printf("\n");
|
||||
printf("%sTrack %-2.2d: Total bytes read/written: %.f/%.f (%.f sectors).\n",
|
||||
@ -4360,7 +4363,7 @@ int Cdrskin_burn_pacifier(struct CdrskiN *skin,
|
||||
if(skin->supposed_track_idx>=0 &&
|
||||
skin->supposed_track_idx<skin->track_counter)
|
||||
Cdrtrack_get_size(skin->tracklist[skin->supposed_track_idx],&fixed_size,
|
||||
&padding,§or_size,0);
|
||||
&padding,§or_size,&use_data_image_size,0);
|
||||
|
||||
bytes_to_write= ((double) p->sectors)*sector_size;
|
||||
written_total_bytes= ((double) p->sector)*sector_size;
|
||||
@ -4633,6 +4636,7 @@ int Cdrskin_activate_write_mode(struct CdrskiN *skin, enum burn_disc_status s,
|
||||
int ok, was_still_default= 0, block_type_demand,track_type,sector_size, i;
|
||||
int profile_number= -1, track_type_1= 0, mixed_mode= 0, unpredicted_size= 0;
|
||||
int might_do_tao= 0, might_do_sao= 1, allows_multi= 1, ret, current_is_cd= 1;
|
||||
int use_data_image_size;
|
||||
struct burn_drive_info *drive_info = NULL;
|
||||
char profile_name[80];
|
||||
double fixed_size= 0.0, tao_to_sao_tsize= 0.0, dummy;
|
||||
@ -4675,7 +4679,7 @@ int Cdrskin_activate_write_mode(struct CdrskiN *skin, enum burn_disc_status s,
|
||||
else if(track_type_1!=track_type)
|
||||
mixed_mode= 1;
|
||||
Cdrtrack_get_size(skin->tracklist[i],&fixed_size,
|
||||
&tao_to_sao_tsize,&dummy,2);
|
||||
&tao_to_sao_tsize,&dummy,&use_data_image_size,2);
|
||||
|
||||
/* <<< until CD-SAO does fill-up: filluped last CD track length undefined */
|
||||
if(fixed_size<=0 &&
|
||||
@ -4853,13 +4857,14 @@ it_is_done:;
|
||||
|
||||
int Cdrskin_announce_tracks(struct CdrskiN *skin, int flag)
|
||||
{
|
||||
int i,mb;
|
||||
int i,mb,use_data_image_size;
|
||||
double size,padding,sector_size= 2048.0;
|
||||
double sectors;
|
||||
|
||||
if(skin->verbosity>=Cdrskin_verbose_progresS) {
|
||||
for(i=0;i<skin->track_counter;i++) {
|
||||
Cdrtrack_get_size(skin->tracklist[i],&size,&padding,§or_size,0);
|
||||
Cdrtrack_get_size(skin->tracklist[i],&size,&padding,§or_size,
|
||||
&use_data_image_size,0);
|
||||
if(size<=0) {
|
||||
printf("Track %-2.2d: %s unknown length",
|
||||
i+1,(sector_size==2048?"data ":"audio"));
|
||||
@ -4924,6 +4929,7 @@ int Cdrskin_burn(struct CdrskiN *skin, int flag)
|
||||
struct burn_drive *drive;
|
||||
int ret,loop_counter= 0,max_track= -1,i,hflag,nwa,num, wrote_well= 2;
|
||||
int fifo_disabled= 0,fifo_percent,total_min_fill,min_buffer_fill= 101;
|
||||
int use_data_image_size, needs_early_fifo_fill= 0;
|
||||
double put_counter,get_counter,empty_counter,full_counter;
|
||||
double start_time,last_time;
|
||||
double total_count= 0.0,last_count= 0.0,size,padding,sector_size= 2048.0;
|
||||
@ -4992,11 +4998,15 @@ burn_failed:;
|
||||
fprintf(stderr,"cdrskin: FATAL : cannot add track %d to session.\n",i+1);
|
||||
goto burn_failed;
|
||||
}
|
||||
Cdrtrack_get_size(skin->tracklist[i],&size,&padding,§or_size,0);
|
||||
Cdrtrack_get_size(skin->tracklist[i],&size,&padding,§or_size,
|
||||
&use_data_image_size,0);
|
||||
if(size>0)
|
||||
skin->fixed_size+= size+padding;
|
||||
else
|
||||
else {
|
||||
skin->has_open_ended_track= 1;
|
||||
if(use_data_image_size)
|
||||
needs_early_fifo_fill= 1;
|
||||
}
|
||||
}
|
||||
|
||||
#ifndef Cdrskin_libburn_write_mode_ruleS
|
||||
@ -5012,6 +5022,38 @@ burn_failed:;
|
||||
#endif /* ! Cdrskin_allow_sao_for_appendablE */
|
||||
}
|
||||
#endif /* ! Cdrskin_libburn_write_mode_ruleS */
|
||||
|
||||
/* Final decision on track size has to be made after eventual -isosize
|
||||
determination via fifo content.
|
||||
*/
|
||||
if(needs_early_fifo_fill && !skin->tell_media_space) {
|
||||
ret= Cdrskin_fill_fifo(skin,0);
|
||||
if(ret<=0)
|
||||
goto fifo_filling_failed;
|
||||
}
|
||||
skin->fixed_size= 0.0;
|
||||
skin->has_open_ended_track= 0;
|
||||
for(i=0;i<skin->track_counter;i++) {
|
||||
size= 1024*1024; /* a dummy size in case of skin->tell_media_space */
|
||||
ret= Cdrtrack_activate_image_size(skin->tracklist[i],&size,
|
||||
!!skin->tell_media_space);
|
||||
if(ret<=0) {
|
||||
fprintf(stderr,
|
||||
"cdrskin: FATAL : cannot determine -isosize of track source\n");
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
if(size>0.0 && skin->verbosity>=Cdrskin_verbose_debuG)
|
||||
ClN(fprintf(stderr,
|
||||
"cdrskin: DEBUG: track %2.2d : %s %.fs (= %.fb)\n",
|
||||
i+1,(ret==1?"activated -isosize":"ignored image size"),
|
||||
size/2048.0,size));
|
||||
Cdrtrack_get_size(skin->tracklist[i],&size,&padding,§or_size,
|
||||
&use_data_image_size,0);
|
||||
if(size>0)
|
||||
skin->fixed_size+= size+padding;
|
||||
else
|
||||
skin->has_open_ended_track= 1;
|
||||
}
|
||||
|
||||
o= burn_write_opts_new(drive);
|
||||
burn_write_opts_set_perform_opc(o, 0);
|
||||
@ -5086,39 +5128,18 @@ burn_failed:;
|
||||
|
||||
#ifndef Cdrskin_extra_leaN
|
||||
Cdrskin_wait_before_action(skin,0);
|
||||
ret= Cdrskin_fill_fifo(skin,0);
|
||||
if(needs_early_fifo_fill)
|
||||
ret= 1;
|
||||
else
|
||||
ret= Cdrskin_fill_fifo(skin,0);
|
||||
if(ret<=0) {
|
||||
fifo_filling_failed:;
|
||||
fprintf(stderr,"cdrskin: FATAL : filling of fifo failed\n");
|
||||
goto ex;
|
||||
}
|
||||
|
||||
#endif /* ! Cdrskin_extra_leaN */
|
||||
|
||||
/* Final decision on track size has to be made after eventual -isosize
|
||||
determination via fifo content. This makes best sense if the automated
|
||||
write mode decision is done afterwards in libburn, not before in cdrskin.
|
||||
*/
|
||||
skin->fixed_size= 0.0;
|
||||
skin->has_open_ended_track= 0;
|
||||
for(i=0;i<skin->track_counter;i++) {
|
||||
ret= Cdrtrack_activate_image_size(skin->tracklist[i],&size,0);
|
||||
if(ret<=0) {
|
||||
fprintf(stderr,
|
||||
"cdrskin: FATAL : cannot determine -isosize of track source\n");
|
||||
{ret= 0; goto ex;}
|
||||
}
|
||||
if(size>0.0 && skin->verbosity>=Cdrskin_verbose_debuG)
|
||||
ClN(fprintf(stderr,
|
||||
"cdrskin: DEBUG: track %2.2d : %s %.fs (= %.fb)\n",
|
||||
i+1,(ret==1?"activated -isosize":"ignored image size"),
|
||||
size/2048.0,size));
|
||||
Cdrtrack_get_size(skin->tracklist[i],&size,&padding,§or_size,0);
|
||||
if(size>0)
|
||||
skin->fixed_size+= size+padding;
|
||||
else
|
||||
skin->has_open_ended_track= 1;
|
||||
}
|
||||
|
||||
Cdrskin_adjust_speed(skin,0);
|
||||
|
||||
#ifndef Cdrskin_extra_leaN
|
||||
@ -5219,7 +5240,8 @@ burn_failed:;
|
||||
printf("Track 01: Total bytes read/written: %.f/%.f (%.f sectors).\n",
|
||||
total_count,total_count,total_count/sector_size);
|
||||
} else {
|
||||
Cdrtrack_get_size(skin->tracklist[max_track],&size,&padding,§or_size,1);
|
||||
Cdrtrack_get_size(skin->tracklist[max_track],&size,&padding,§or_size,
|
||||
&use_data_image_size,1);
|
||||
printf(
|
||||
"Track %-2.2d: Total bytes read/written: %.f/%.f (%.f sectors).\n",
|
||||
max_track+1,size,size+padding,(size+padding)/sector_size);
|
||||
|
@ -1 +1 @@
|
||||
#define Cdrskin_timestamP "2007.03.28.100934"
|
||||
#define Cdrskin_timestamP "2007.03.28.111739"
|
||||
|
Loading…
Reference in New Issue
Block a user