-/* $Id$
-
-This file is part of libmspal
-Copyright © 2008-2009 Mikko Rasa, Mikkosoft Productions
-Distributed under the LGPL
-*/
-
#include "buffer.h"
-#include "sound.h"
+#include "sounddecoder.h"
#include "streamer.h"
using namespace std;
Streamer::Streamer(Source &s):
src(s),
- snd(0)
+ decoder(0)
{ }
Streamer::~Streamer()
delete *i;
}
-void Streamer::play(Sound &s)
+void Streamer::play(SoundDecoder &s)
{
- snd = &s;
+ decoder = &s;
tick();
src.play();
}
void Streamer::stop()
{
- snd = 0;
+ decoder = 0;
src.stop();
}
}
}
- if(!snd)
+ if(!decoder)
return;
if(src.get_state()!=PLAYING && src.get_state()!=PAUSED)
src.play();
- unsigned freq = snd->get_frequency();
+ unsigned freq = decoder->get_frequency();
unsigned chunk_size = freq&~0xF;
unsigned queued = src.get_buffers_queued();
+ vector<char> data(chunk_size);
for(unsigned i=queued; i<4; ++i)
{
- char data[chunk_size];
unsigned pos = 0;
while(pos<chunk_size)
{
- unsigned len = snd->read(data+pos, chunk_size-pos);
+ unsigned len = decoder->read(&data[0]+pos, chunk_size-pos);
if(len==0)
break;
pos += len;
if(pos)
{
Buffer *buf = new Buffer;
- buf->data(snd->get_format(), data, pos, freq);
+ buf->data(decoder->get_format(), &data[0], pos, freq);
src.queue_buffer(*buf);
buffers.push_back(buf);
}
}
- if(snd->eof())
- snd = 0;
+ if(decoder->eof())
+ decoder = 0;
}
} // namespace AL