Compiled, but not debugged, multi-channel support
diff --git a/main.c b/main.c
index 740ce4a..6c0b6c1 100644
--- a/main.c
+++ b/main.c
@@ -28,7 +28,7 @@
#include "sonic.h"
#include "wave.h"
-#define BUFFER_SIZE 1024
+#define BUFFER_SIZE 2048
/* Scan through the input file to find it's maximum value. */
static int findMaximumVolume(
@@ -71,14 +71,15 @@
waveFile outFile,
double speed,
double scale,
- int sampleRate)
+ int sampleRate,
+ int numChannels)
{
- sonicStream stream = sonicCreateStream(speed, sampleRate);
+ sonicStream stream = sonicCreateStream(speed, sampleRate, numChannels);
short inBuffer[BUFFER_SIZE], outBuffer[BUFFER_SIZE];
int samplesRead, samplesWritten;
do {
- samplesRead = readFromWaveFile(inFile, inBuffer, BUFFER_SIZE);
+ samplesRead = readFromWaveFile(inFile, inBuffer, BUFFER_SIZE/numChannels);
if(samplesRead == 0) {
sonicFlushStream(stream);
} else {
@@ -88,7 +89,8 @@
sonicWriteShortToStream(stream, inBuffer, samplesRead);
}
do {
- samplesWritten = sonicReadShortFromStream(stream, outBuffer, BUFFER_SIZE);
+ samplesWritten = sonicReadShortFromStream(stream, outBuffer,
+ BUFFER_SIZE/numChannels);
if(samplesWritten > 0) {
writeToWaveFile(outFile, outBuffer, samplesWritten);
}
@@ -116,7 +118,7 @@
int setVolume = 0;
int maxVolume;
double volume = 1.0;
- int sampleRate;
+ int sampleRate, numChannels;
double scale = 1.0;
int xArg = 1;
@@ -143,11 +145,11 @@
}
inFileName = argv[xArg];
outFileName = argv[xArg + 1];
- inFile = openInputWaveFile(inFileName, &sampleRate);
+ inFile = openInputWaveFile(inFileName, &sampleRate, &numChannels);
if(inFile == NULL) {
return 1;
}
- outFile = openOutputWaveFile(outFileName, sampleRate);
+ outFile = openOutputWaveFile(outFileName, sampleRate, numChannels);
if(outFile == NULL) {
closeWaveFile(inFile);
return 1;
@@ -159,13 +161,13 @@
}
printf("Scale = %0.2f\n", scale);
closeWaveFile(inFile);
- inFile = openInputWaveFile(inFileName, &sampleRate);
+ inFile = openInputWaveFile(inFileName, &sampleRate, &numChannels);
if(inFile == NULL) {
closeWaveFile(outFile);
return 1;
}
}
- runSonic(inFile, outFile, speed, scale, sampleRate);
+ runSonic(inFile, outFile, speed, scale, sampleRate, numChannels);
closeWaveFile(inFile);
closeWaveFile(outFile);
return 0;