Annotation of /trunk/audiofile/patches/audiofile-0.2.6-sfconvert-eradicator-2.patch
Parent Directory | Revision Log
Revision 407 -
(hide annotations)
(download)
Tue Nov 13 15:36:43 2007 UTC (16 years, 10 months ago) by niro
File size: 4501 byte(s)
Tue Nov 13 15:36:43 2007 UTC (16 years, 10 months ago) by niro
File size: 4501 byte(s)
-added versionized patch
1 | niro | 407 | diff -Naur audiofile-0.2.6/sfcommands/sfconvert.c audiofile-0.2.6-magellan/sfcommands/sfconvert.c |
2 | --- audiofile-0.2.6/sfcommands/sfconvert.c 2004-03-06 07:39:23.000000000 +0100 | ||
3 | +++ audiofile-0.2.6-magellan/sfcommands/sfconvert.c 2007-11-13 15:28:53.000000000 +0100 | ||
4 | @@ -66,12 +66,14 @@ | ||
5 | |||
6 | AFfilehandle infile, outfile; | ||
7 | AFfilesetup outfilesetup; | ||
8 | - int sampleFormat, sampleWidth, channelCount; | ||
9 | - double sampleRate; | ||
10 | + int sampleFormat, sampleWidth, channelCount, byteOrder; | ||
11 | + double sampleRate, outSampleRate; | ||
12 | + int outSampleRateInt = -1; | ||
13 | int outSampleFormat = -1, outSampleWidth = -1, | ||
14 | - outChannelCount = -1; | ||
15 | + outChannelCount = -1, outByteOrder = -1; | ||
16 | double outMaxAmp = 1.0; | ||
17 | |||
18 | + | ||
19 | AFframecount totalFrames; | ||
20 | |||
21 | if (argc < 3) | ||
22 | @@ -88,7 +90,10 @@ | ||
23 | { | ||
24 | if (i + 1 >= argc) | ||
25 | usageerror(); | ||
26 | - if (!strcmp(argv[i+1], "aiff")) | ||
27 | + | ||
28 | + if (!strcmp(argv[i+1], "raw")) | ||
29 | + outFileFormat = AF_FILE_RAWDATA; | ||
30 | + else if (!strcmp(argv[i+1], "aiff")) | ||
31 | outFileFormat = AF_FILE_AIFF; | ||
32 | else if (!strcmp(argv[i+1], "aifc")) | ||
33 | outFileFormat = AF_FILE_AIFFC; | ||
34 | @@ -98,6 +103,12 @@ | ||
35 | outFileFormat = AF_FILE_NEXTSND; | ||
36 | else if (!strcmp(argv[i+1], "bics")) | ||
37 | outFileFormat = AF_FILE_BICSF; | ||
38 | + else if (!strcmp(argv[i+1], "avr")) | ||
39 | + outFileFormat = AF_FILE_AVR; | ||
40 | + else if (!strcmp(argv[i+1], "iff")) | ||
41 | + outFileFormat = AF_FILE_IFF_8SVX; | ||
42 | + else if (!strcmp(argv[i+1], "nist")) | ||
43 | + outFileFormat = AF_FILE_NIST_SPHERE; | ||
44 | else | ||
45 | { | ||
46 | fprintf(stderr, "sfconvert: Unknown format %s.\n", argv[i+1]); | ||
47 | @@ -107,6 +118,22 @@ | ||
48 | /* Increment for argument. */ | ||
49 | i++; | ||
50 | } | ||
51 | + else if (!strcmp(argv[i], "byteorder")) | ||
52 | + { | ||
53 | + if (i + 1 >= argc) | ||
54 | + usageerror(); | ||
55 | + | ||
56 | + if(!strcmp("big", argv[i+1])) { | ||
57 | + outByteOrder = AF_BYTEORDER_BIGENDIAN; | ||
58 | + } else if(!strcmp("little", argv[i+1])) { | ||
59 | + outByteOrder = AF_BYTEORDER_LITTLEENDIAN; | ||
60 | + } else { | ||
61 | + usageerror(); | ||
62 | + } | ||
63 | + | ||
64 | + /* Increment for argument. */ | ||
65 | + i++; | ||
66 | + } | ||
67 | else if (!strcmp(argv[i], "channels")) | ||
68 | { | ||
69 | if (i + 1 >= argc) | ||
70 | @@ -119,6 +146,20 @@ | ||
71 | /* Increment for argument. */ | ||
72 | i++; | ||
73 | } | ||
74 | + else if (!strcmp(argv[i], "rate")) | ||
75 | + { | ||
76 | + if (i + 1 >= argc) | ||
77 | + usageerror(); | ||
78 | + | ||
79 | + outSampleRateInt = atoi(argv[i+1]); | ||
80 | + if (outSampleRateInt <= 0) | ||
81 | + usageerror(); | ||
82 | + | ||
83 | + outSampleRate = (double)outSampleRateInt; | ||
84 | + | ||
85 | + /* Increment for argument. */ | ||
86 | + i++; | ||
87 | + } | ||
88 | else if (!strcmp(argv[i], "float")) | ||
89 | { | ||
90 | if (i + 1 >= argc) | ||
91 | @@ -170,6 +211,7 @@ | ||
92 | totalFrames = afGetFrameCount(infile, AF_DEFAULT_TRACK); | ||
93 | channelCount = afGetChannels(infile, AF_DEFAULT_TRACK); | ||
94 | sampleRate = afGetRate(infile, AF_DEFAULT_TRACK); | ||
95 | + byteOrder = afGetByteOrder(infile, AF_DEFAULT_TRACK); | ||
96 | afGetSampleFormat(infile, AF_DEFAULT_TRACK, &sampleFormat, &sampleWidth); | ||
97 | |||
98 | /* Initialize output audio format parameters. */ | ||
99 | @@ -184,14 +226,21 @@ | ||
100 | outSampleWidth = sampleWidth; | ||
101 | } | ||
102 | |||
103 | + if (outByteOrder == -1) | ||
104 | + outByteOrder = byteOrder; | ||
105 | + | ||
106 | if (outChannelCount == -1) | ||
107 | outChannelCount = channelCount; | ||
108 | |||
109 | + if (outSampleRateInt == -1) | ||
110 | + outSampleRate = sampleRate; | ||
111 | + | ||
112 | afInitFileFormat(outfilesetup, outFileFormat); | ||
113 | afInitSampleFormat(outfilesetup, AF_DEFAULT_TRACK, outSampleFormat, | ||
114 | outSampleWidth); | ||
115 | afInitChannels(outfilesetup, AF_DEFAULT_TRACK, outChannelCount); | ||
116 | - afInitRate(outfilesetup, AF_DEFAULT_TRACK, sampleRate); | ||
117 | + afInitRate(outfilesetup, AF_DEFAULT_TRACK, outSampleRate); | ||
118 | + afInitByteOrder(outfilesetup, AF_DEFAULT_TRACK, outByteOrder); | ||
119 | |||
120 | outfile = afOpenFile(outfilename, "w", outfilesetup); | ||
121 | if (outfile == AF_NULL_FILEHANDLE) | ||
122 | @@ -228,6 +277,7 @@ | ||
123 | printf("\n"); | ||
124 | |||
125 | printf("Where keywords specify format of input or output soundfile:\n"); | ||
126 | + printf(" rate n sample rate (22050, 44100, 48000, etc.)\n"); | ||
127 | printf(" byteorder e endian (e is big or little)\n"); | ||
128 | printf(" channels n n-channel file (1 or 2)\n"); | ||
129 | printf(" format f file format f (see below)\n"); | ||
130 | @@ -239,11 +289,15 @@ | ||
131 | |||
132 | printf("Currently supported formats are:\n"); | ||
133 | printf("\n"); | ||
134 | + printf(" raw \n"); | ||
135 | printf(" aiff Audio Interchange File Format\n"); | ||
136 | printf(" aifc AIFF-C File Format\n"); | ||
137 | printf(" next NeXT/Sun Format\n"); | ||
138 | printf(" wave MS RIFF WAVE Format\n"); | ||
139 | printf(" bics Berkeley/IRCAM/CARL Sound File Format\n"); | ||
140 | + printf(" avr Audio Visual Research File Format\n"); | ||
141 | + printf(" iff Amiga IFF/8SVX Sound File Format\n"); | ||
142 | + printf(" nist NIST SPHERE File Format\n"); | ||
143 | printf("\n"); | ||
144 | |||
145 | exit(EXIT_FAILURE); |