Configure options --enable-cdrskin-fifo-odirect, --enable-dvd-obs-64k

This commit is contained in:
2009-11-16 16:53:07 +00:00
parent 25489521bb
commit b28165f10b
8 changed files with 79 additions and 26 deletions

View File

@ -1319,6 +1319,7 @@ int Cdrtrack_seek_isosize(struct CdrtracK *track, int fd, int flag)
bit0=debugging verbosity
bit1=open as source for direct write:
no audio extract, no minimum track size
bit2=permission to use O_DIRECT (if enabled at compile time)
@return <=0 error, 1 success
*/
int Cdrtrack_open_source_path(struct CdrtracK *track, int *fd, int flag)
@ -1408,12 +1409,18 @@ int Cdrtrack_open_source_path(struct CdrtracK *track, int *fd, int flag)
return(-1);
if(is_wav==-3)
return(0);
if(is_wav==0)
if(is_wav==0) {
#ifdef Cdrskin_read_o_direcT
*fd= open64(track->source_path, O_RDONLY | O_DIRECT);
#else
*fd= open(track->source_path, O_RDONLY);
if(flag & 4) {
*fd= open64(track->source_path, O_RDONLY | O_DIRECT);
if(flag & 1)
fprintf(stderr,"cdrskin: DEBUG : opened track inlet O_DIRECT\n");
} else
#endif
{
*fd= open(track->source_path, O_RDONLY);
}
}
if(*fd==-1) {
fprintf(stderr,"cdrskin: failed to open source address '%s'\n",
track->source_path);
@ -1499,7 +1506,8 @@ int Cdrtrack_attach_fifo(struct CdrtracK *track, int *outlet_fd,
*outlet_fd= -1;
if(track->fifo_size<=0)
return(2);
ret= Cdrtrack_open_source_path(track,&source_fd,flag&1);
ret= Cdrtrack_open_source_path(track,&source_fd,
(flag&1) | (4 * (track->fifo_size >= 256 * 1024)));
if(ret<=0)
return(ret);
if(pipe(pipe_fds)==-1)
@ -1516,7 +1524,7 @@ int Cdrtrack_attach_fifo(struct CdrtracK *track, int *outlet_fd,
/* >>> ??? obtain track sector size and use instead of 2048 ? */
ret= Cdrfifo_new(&ff,source_fd,pipe_fds[1],2048,track->fifo_size,0);
ret= Cdrfifo_new(&ff,source_fd,pipe_fds[1],2048,track->fifo_size, flag & 1);
if(ret<=0)
return(ret);
if(previous_fifo!=NULL)
@ -1591,6 +1599,7 @@ int Cdrtrack_add_to_session(struct CdrtracK *track, int trackno,
/*
bit0= debugging verbosity
bit1= apply padding hack (<<< should be unused for now)
bit2= permission to use O_DIRECT (if enabled at compile time)
*/
{
struct burn_track *tr;
@ -1606,7 +1615,7 @@ int Cdrtrack_add_to_session(struct CdrtracK *track, int trackno,
/* Note: track->track_type may get set in here */
if(track->source_fd==-1) {
ret= Cdrtrack_open_source_path(track,&source_fd,(flag&1));
ret= Cdrtrack_open_source_path(track, &source_fd, flag & (4 | 1));
if(ret<=0)
goto ex;
}
@ -5995,8 +6004,10 @@ thank_you_for_patience:;
if(skin->is_writing)
fprintf(stderr,"\n");
pending[0]= 0;
/*
if(bytes_to_write > 0 && skin->verbosity >= Cdrskin_verbose_debuG)
sprintf(pending, " pnd %.f", bytes_to_write - written_total_bytes);
*/
fprintf(stderr,
"\rcdrskin: thank you for being patient for %.f seconds%21.21s",
elapsed_total_time, pending);
@ -6602,7 +6613,8 @@ int Cdrskin_direct_write(struct CdrskiN *skin, int flag)
&source_path,&source_fd,&is_from_stdin,0);
if(source_fd==-1) {
ret= Cdrtrack_open_source_path(skin->tracklist[0],&source_fd,
2|(skin->verbosity>=Cdrskin_verbose_debuG));
2 | (skin->verbosity >= Cdrskin_verbose_debuG) |
(4 * (skin->fifo_size >= 256 * 1024)));
if(ret<=0)
goto ex;
}
@ -6836,6 +6848,8 @@ burn_failed:;
hflag= (skin->verbosity>=Cdrskin_verbose_debuG);
if(i==skin->track_counter-1)
Cdrtrack_ensure_padding(skin->tracklist[i],hflag&1);
if(skin->fifo_size >= 256 * 1024)
hflag|= 4;
ret= Cdrtrack_add_to_session(skin->tracklist[i],i,session,hflag);
if(ret<=0) {
fprintf(stderr,"cdrskin: FATAL : Cannot add track %d to session.\n",i+1);
@ -6972,9 +6986,14 @@ burn_failed:;
burn_write_opts_set_stream_recording(o, skin->stream_recording_is_set);
#endif
#ifdef Cdrskin_libburn_has_fsync_obS
burn_write_opts_set_dvd_obs(o, skin->dvd_obs);
#ifdef Cdrskin_dvd_obs_default_64K
if(skin->dvd_obs == 0)
burn_write_opts_set_dvd_obs(o, 64 * 1024);
else
#endif
burn_write_opts_set_dvd_obs(o, skin->dvd_obs);
burn_write_opts_set_stdio_fsync(o, skin->stdio_sync);
#endif
#endif /* Cdrskin_libburn_has_fsync_obS */
if(skin->dummy_mode) {
fprintf(stderr,