Hi list
First of all, thank you for the amazing framework. We are using it in
our lab at UNICAMP/Brasil and we are impressed with it.
I have two newby questions:
1) I can read mono audio files with MultiChannelAudioFileReader but I
can't write them with MultiChannelAudioFileWriter. When I've tried to
do this I've got a segfault. The code is attached. Is it correct? I'm
using the deb package for (k)ubuntu feisty.
2) What is the standard interface to read and write files:
MultiChannel/MonoAudioFileReader/Writer or AudioFileIn/Out? Why are
there two different interfaces?
Thanks in advance,
Fabio
#include <iostream>
#include <vector>
#include <CLAM/Audio.hxx>
#include <CLAM/AudioFile.hxx>
#include <CLAM/MultiChannelAudioFileReader.hxx>
#include <CLAM/MultiChannelAudioFileWriter.hxx>
using namespace std;
using namespace CLAM;
int
main(int argc, char** argv)
{
if (argc != 3) {
cerr << "Usage: clam_test <in file name> <out file name>" << endl;
exit(-1);
}
try {
AudioFileSource infile;
infile.OpenExisting(argv[1]);
if (!infile.IsReadable()) {
cerr << "Error: file " << infile.GetLocation()
<< " cannot be opened or its format is not supported" << endl;
exit(-1);
}
MultiChannelAudioFileReaderConfig incfg;
incfg.SetSourceFile(infile);
MultiChannelAudioFileReader reader(incfg);
AudioFileHeader outheader = infile.GetHeader();
outheader.SetFormat(EAudioFileFormat::FormatFromFilename(argv[2]));
AudioFileTarget outfile;
outfile.CreateNew(argv[2], outheader);
if (!outfile.IsWritable()) {
cerr << "The desired format " << outheader.GetFormat()
<< "does not support current header parameters" << endl;
exit(-1);
}
MultiChannelAudioFileWriterConfig outcfg;
outcfg.AddTargetFile();
outcfg.UpdateData();
outcfg.SetTargetFile(outfile);
MultiChannelAudioFileWriter writer(outcfg);
vector<Audio> channels(outheader.GetChannels());
for (size_t i = 0; i < channels.size(); ++i) channels[i].SetSize(2048);
writer.Start();
reader.Start();
while (reader.Do(channels)) writer.Do(channels);
reader.Stop();
writer.Stop();
} catch (const Err& e) {
e.Print();
exit(-1);
} catch (const exception& e) {
cerr << e.what() << endl;
exit(-1);
}
return 0;
}
_______________________________________________
CLAM mailing list
[email protected]
http://www.iua.upf.es/mtg/clam