3 This file is part of libmspal
4 Copyright © 2008-2009 Mikko Rasa, Mikkosoft Productions
5 Distributed under the LGPL
17 Streamer::Streamer(Source &s):
26 for(list<Buffer *>::iterator i=buffers.begin(); i!=buffers.end(); ++i)
30 void Streamer::play(Sound &s)
45 if(unsigned n = src.get_buffers_processed())
47 for(unsigned i=0; i<n; ++i)
49 src.unqueue_buffer(*buffers.front());
50 delete buffers.front();
51 buffers.erase(buffers.begin());
58 if(src.get_state()!=PLAYING && src.get_state()!=PAUSED)
61 unsigned freq = snd->get_frequency();
62 unsigned chunk_size = freq&~0xF;
63 unsigned queued = src.get_buffers_queued();
64 for(unsigned i=queued; i<4; ++i)
66 char data[chunk_size];
70 unsigned len = snd->read(data+pos, chunk_size-pos);
78 Buffer *buf = new Buffer;
79 buf->data(snd->get_format(), data, pos, freq);
80 src.queue_buffer(*buf);
81 buffers.push_back(buf);