Made available drive buffer fill during write

This commit is contained in:
2006-10-23 11:31:37 +00:00
parent 95965c695d
commit 728c8621b4
9 changed files with 120 additions and 18 deletions

View File

@ -145,13 +145,14 @@ Get an overview of cdrecord style addresses of available devices
cdrskin -scanbus
cdrskin dev=ATA -scanbus
Note: Adresses reported with dev=ATA are to be used with prefix "ATA:".
Like "ATA:2,2,0" . Their numbers are not cdrecord compatible. See
"Pseudo-SCSI Adresses". It is well possible to use IDE device file
paths like "/dev/hdc" rather than "ATA:2,2,0".
With SCSI devices it is possible to use "/dev/sg1" or "/dev/scd0".
Note: Address numbers have changed since cdrskin-0.2.2. To get the old number
scheme, use option --old_pseudo_scsi_adr . Sorry for any inconvenience.
Note: Adresses reported with dev=ATA are to be used with prefix "ATA:". You may
well use device file addresses as reported with --devices. Examples:
dev=1,1,0 dev=ATA:1,0,0 dev=/dev/hdc dev=/dev/sg1
See also "Drive Addressing".
Note: Address numbers have changed since cdrskin-0.2.2 in order to become
compatible with cdrecord numbers. To get the old number scheme, use
option --old_pseudo_scsi_adr . See also "Pseudo-SCSI Adresses".
Sorry for any inconvenience.
Obtain some info about the drive
@ -182,7 +183,7 @@ Anything except .wav files has to be converted into raw format first
madplay -o raw:track04.cd /path/to/track4.mp3
mppdec --raw-le /path/to/track5.mpc track05.cd
cdrskin dev=/dev/hdc blank=fast fs=0 -eject \
cdrskin dev=1,1,0 blank=fast fs=0 -eject \
-audio track0[1-5].cd /path/to/track6.wav
@ -238,9 +239,25 @@ scdbackup which still runs a bit better with cdrecord than with cdrskin. TAO.
I have the hope that Joerg feels more flattered than annoyed by cdrskin.
Drive Addressing
Drives get addressed either via their cdrecord-style addresses as listed
with option -scanbus (see below "Pseudo-SCSI Adresses") or via the paths
of device files.
Not only device files listed by --devices may be used but also device files
which via their major,minor numbers point to the same device driver as
a listed device file.
Helpful with Linux kernel 2.4 is a special SCSI feature:
It is possible to address a scsi(-emulated) drive via associated device files
which are not listed by option --devices but point to the same SCSI addresses
as listed device files. This addressing via e.g. /dev/sr0 or /dev/scd1 is
compatible with generic read programs like dd and with write program growisofs.
Pseudo-SCSI Adresses
cdrecord and cdrskin share the syntax of addresses but not necessarily
cdrecord and cdrskin share the syntax of SCSI addresses but not necessarily
the meaning of the components. A cdrecord-style address for cdrskin
[prefix:]scsibus,target,lun
can be interpreted in two different modes.

View File

@ -173,6 +173,7 @@ or
#define Cdrskin_libburn_has_get_start_end_lbA 1
#define Cdrskin_libburn_has_burn_disc_unsuitablE 1
#define Cdrskin_libburn_has_read_atiP 1
#define Cdrskin_libburn_has_buffer_progresS 1
#endif
#ifndef Cdrskin_libburn_versioN
@ -3662,7 +3663,8 @@ int Cdrskin_burn_pacifier(struct CdrskiN *skin,
enum burn_drive_status drive_status,
struct burn_progress *p,
double start_time, double *last_time,
double *total_count, double *last_count, int flag)
double *total_count, double *last_count,
int *min_buffer_fill, int flag)
/*
bit0= growisofs style
*/
@ -3673,7 +3675,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;
int fs,bs,old_track_idx,buffer_fill;
char fifo_text[80],mb_text[40];
char *debug_mark= ""; /* use this to prepend a marker text for experiments */
@ -3860,9 +3862,20 @@ thank_you_for_patience:;
} else
sprintf(mb_text,"%4d",(int) (written_total_bytes/1024.0/1024.0));
speed_factor= Cdrskin_cd_speed_factoR*sector_size/2048;
printf("\r%sTrack %-2.2d: %s MB written %s[buf 50%%] %4.1fx.",
buffer_fill= 50;
#ifdef Cdrskin_libburn_has_buffer_progresS
if(p->buffer_capacity>0)
buffer_fill= (double) (p->buffer_capacity - p->buffer_available)*100.0
/ (double) p->buffer_capacity;
#endif /* Cdrskin_libburn_has_buffer_progresS */
if(buffer_fill<*min_buffer_fill)
*min_buffer_fill= buffer_fill;
printf("\r%sTrack %-2.2d: %s MB written %s[buf %3d%%] %4.1fx.",
debug_mark,skin->supposed_track_idx+1,mb_text,fifo_text,
measured_speed/speed_factor);
buffer_fill,measured_speed/speed_factor);
fflush(stdout);
}
if(skin->is_writing==0) {
@ -3923,7 +3936,7 @@ int Cdrskin_burn(struct CdrskiN *skin, int flag)
struct burn_progress p;
struct burn_drive *drive;
int ret,loop_counter= 0,max_track= -1,i,hflag;
int fifo_disabled= 0,fifo_percent,total_min_fill,mb;
int fifo_disabled= 0,fifo_percent,total_min_fill,mb,min_buffer_fill= 101;
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;
@ -4066,7 +4079,7 @@ int Cdrskin_burn(struct CdrskiN *skin, int flag)
if(loop_counter>0)
Cdrskin_burn_pacifier(skin,drive_status,&p,start_time,&last_time,
&total_count,&last_count,0);
&total_count,&last_count,&min_buffer_fill,0);
/* <<< debugging : artificial abort without a previous signal */;
@ -4187,7 +4200,9 @@ fifo_full_at_end:;
"Cdrskin: fifo was %.f times empty and %.f times full, min fill was %d%%.\n",
empty_counter,full_counter,fifo_percent);
}
printf("Min drive buffer fill was 50%%\n");
if(min_buffer_fill>100)
min_buffer_fill= 50;
printf("Min drive buffer fill was %d%%\n", min_buffer_fill);
}
#endif /* ! Cdrskin_extra_leaN */

View File

@ -201,6 +201,8 @@ cdrskin_0.2.2-x86-suse9_0-static.tar.gz</A>, (250 KB), -static compiled,
</LI>
<LI>Track source files with ending .wav are checked for compliance and
extracted automatically.</LI>
<LI>Drive buffer fill indicator reports are realistic percentage numbers.</LI>
<LI>Option -toc is supported, drive firmware revision gets displayed.</LI>
</UL></DD>
<DD>&nbsp;</DD>
<DD><A HREF="README_cdrskin_devel">README 0.2.3</A>

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2006.10.23.074430"
#define Cdrskin_timestamP "2006.10.23.113116"