]> git.tdb.fi Git - libs/al.git/blobdiff - source/streamer.cpp
Split Sound into SoundDecoder and Waveform parts
[libs/al.git] / source / streamer.cpp
index b90a9d1c73ab3f78b50384c805348ff40b960699..bca08a2f06ea02c6ff357e90e42ba40ded4c02a7 100644 (file)
@@ -1,5 +1,5 @@
 #include "buffer.h"
-#include "sound.h"
+#include "sounddecoder.h"
 #include "streamer.h"
 
 using namespace std;
@@ -9,7 +9,7 @@ namespace AL {
 
 Streamer::Streamer(Source &s):
        src(s),
-       snd(0)
+       decoder(0)
 { }
 
 Streamer::~Streamer()
@@ -20,16 +20,16 @@ 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();
 }
 
@@ -45,13 +45,13 @@ void Streamer::tick()
                }
        }
 
-       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);
@@ -60,7 +60,7 @@ void Streamer::tick()
                unsigned pos = 0;
                while(pos<chunk_size)
                {
-                       unsigned len = snd->read(&data[0]+pos, chunk_size-pos);
+                       unsigned len = decoder->read(&data[0]+pos, chunk_size-pos);
                        if(len==0)
                                break;
                        pos += len;
@@ -69,14 +69,14 @@ void Streamer::tick()
                if(pos)
                {
                        Buffer *buf = new Buffer;
-                       buf->data(snd->get_format(), &data[0], 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