mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-01-24 21:23:51 +00:00
52 lines
1.3 KiB
C++
52 lines
1.3 KiB
C++
#include <iostream>
|
|
|
|
#include <mangle/stream/servers/file_stream.hpp>
|
|
#include <mangle/sound/filters/openal_audiere.hpp>
|
|
#include <mangle/sound/sources/stream_source.hpp>
|
|
#include <mangle/stream/filters/buffer_stream.hpp>
|
|
|
|
using namespace std;
|
|
using namespace Mangle::Stream;
|
|
using namespace Mangle::Sound;
|
|
|
|
AudiereLoader loader;
|
|
OpenAL_Factory openal;
|
|
|
|
void play(const char* name)
|
|
{
|
|
try
|
|
{
|
|
cout << "Opening " << name << " via Audiere\n";
|
|
SampleSourcePtr samples = loader.load(name);
|
|
cout << "Loading entire file into memory\n";
|
|
StreamPtr buf(new BufferStream(samples));
|
|
|
|
// Recreate the stream as a sample source (we're only doing it
|
|
// this complicated to test each step individually)
|
|
int a,b,c;
|
|
samples->getInfo(&a,&b,&c);
|
|
samples.reset(new Stream2Samples(buf, a,b,c));
|
|
|
|
cout << "Creating OpenAL sound from data\n";
|
|
SoundPtr snd = openal.loadRaw(samples);
|
|
cout << "Playing (abort with Ctrl-C)\n";
|
|
snd->play();
|
|
|
|
while(snd->isPlaying())
|
|
usleep(10000);
|
|
cout << "Done playing\n";
|
|
}
|
|
catch(exception &e)
|
|
{
|
|
cout << " ERROR: " << e.what() << "\n";
|
|
}
|
|
}
|
|
|
|
int main(int argc, char** argv)
|
|
{
|
|
if(argc==1)
|
|
cout << "Specify sound file (wav, mp3, ogg) on command line.\n";
|
|
for(int i=1; i<argc; i++)
|
|
play(argv[i]);
|
|
return 0;
|
|
}
|