Enabled automatic extraction of .au

This commit is contained in:
Thomas Schmitt 2006-10-24 13:02:20 +00:00
parent f95d7aa6aa
commit 7d6e1b18e6
4 changed files with 18 additions and 9 deletions

View File

@ -360,8 +360,10 @@ results with audio data files which are :
little-endian byte order with option -swab little-endian byte order with option -swab
Files with name extension .wav get examined wether they are in Microsoft WAVE Files with name extension .wav get examined wether they are in Microsoft WAVE
format with above parameters and eventually get extracted by cdrskin itself. format with above parameters and eventually get extracted by cdrskin itself.
All other formats (including SUN's format .au) are to be extracted by commands Files with name extension .au get examined wether they are in SUN's audio
like those given above under "Usage examples". format with above parameters. Their big-endianness gets handled properly.
Any other formats are to be extracted by commands like those given above under
"Usage examples".
I myself am not into audio. So libburn-hackers@pykix.org might be the I myself am not into audio. So libburn-hackers@pykix.org might be the
best address for suggestions, requests and bug reports. best address for suggestions, requests and bug reports.

View File

@ -926,7 +926,7 @@ int Cdrtrack_get_fifo(struct CdrtracK *track, struct CdrfifO **fifo, int flag)
int Cdrtrack_extract_audio(struct CdrtracK *track, int *fd, off_t *xtr_size, int Cdrtrack_extract_audio(struct CdrtracK *track, int *fd, off_t *xtr_size,
int flag) int flag)
{ {
int l; int l, ok= 0;
#ifdef Cdrskin_libburn_has_audioxtR #ifdef Cdrskin_libburn_has_audioxtR
struct libdax_audioxtr *xtr= NULL; struct libdax_audioxtr *xtr= NULL;
char *fmt,*fmt_info; char *fmt,*fmt_info;
@ -938,9 +938,13 @@ int Cdrtrack_extract_audio(struct CdrtracK *track, int *fd, off_t *xtr_size,
if(track->track_type!=BURN_AUDIO && !track->track_type_by_default) if(track->track_type!=BURN_AUDIO && !track->track_type_by_default)
return(0); return(0);
l= strlen(track->source_path); l= strlen(track->source_path);
if(l<4) if(l>=4)
return(0);
if(strcmp(track->source_path+l-4,".wav")!=0) if(strcmp(track->source_path+l-4,".wav")!=0)
ok= 1;
if(l>=3)
if(strcmp(track->source_path+l-3,".au")!=0)
ok= 1;
if(!ok)
return(0); return(0);
if(track->track_type_by_default) { if(track->track_type_by_default) {
@ -957,7 +961,7 @@ int Cdrtrack_extract_audio(struct CdrtracK *track, int *fd, off_t *xtr_size,
return(ret); return(ret);
libdax_audioxtr_get_id(xtr,&fmt,&fmt_info, libdax_audioxtr_get_id(xtr,&fmt,&fmt_info,
&num_channels,&sample_rate,&bits_per_sample,&msb_first,0); &num_channels,&sample_rate,&bits_per_sample,&msb_first,0);
if(strcmp(fmt,".wav")!=0 || if((strcmp(fmt,".wav")!=0 && strcmp(fmt,".au")!=0) ||
num_channels!=2 || sample_rate!=44100 || bits_per_sample!=16) { num_channels!=2 || sample_rate!=44100 || bits_per_sample!=16) {
fprintf(stderr,"cdrskin: ( %s )\n",fmt_info); fprintf(stderr,"cdrskin: ( %s )\n",fmt_info);
fprintf(stderr,"cdrskin: FATAL : Inappropriate audio coding in '%s'.\n", fprintf(stderr,"cdrskin: FATAL : Inappropriate audio coding in '%s'.\n",

View File

@ -1 +1 @@
#define Cdrskin_timestamP "2006.10.24.102107" #define Cdrskin_timestamP "2006.10.24.130259"

View File

@ -146,7 +146,7 @@ help:;
fprintf(stderr, "Detected format: %s\n", fmt_info); fprintf(stderr, "Detected format: %s\n", fmt_info);
libdax_audioxtr_get_size(xtr, &data_size, 0); libdax_audioxtr_get_size(xtr, &data_size, 0);
fprintf(stderr, "Data size : %.f bytes\n", (double) data_size); fprintf(stderr, "Data size : %.f bytes\n", (double) data_size);
if(strcmp(fmt,".wav")!=0 || if((strcmp(fmt,".wav")!=0 && strcmp(fmt,".au")!=0) ||
num_channels!=2 || sample_rate!=44100 || bits_per_sample!=16) { num_channels!=2 || sample_rate!=44100 || bits_per_sample!=16) {
fprintf(stderr, fprintf(stderr,
"%sAudio source parameters do not comply to cdrskin/README specs\n", "%sAudio source parameters do not comply to cdrskin/README specs\n",
@ -154,6 +154,9 @@ help:;
if(be_strict) if(be_strict)
exit(6); exit(6);
} }
if(msb_first==0)
fprintf(stderr,
"NOTE: Extracted data to be written with cdrskin option -swab\n");
if(detach_fd) { if(detach_fd) {
/* Take over fd from xtr */; /* Take over fd from xtr */;