1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53
|
#pragma once
#include "Sound.h"
namespace sound {
/**
* Play sound in a loop. This assumes the stream is seekable, otherwise the looping will not
* have any effect.
*/
class SoundLoop : public Sound {
STORM_CLASS;
public:
STORM_CTOR SoundLoop(Sound *sound);
// Close.
virtual void STORM_FN close();
// Position.
virtual Word STORM_FN tell();
// Seek.
virtual Bool STORM_FN seek(Word to);
// Length.
virtual Word STORM_FN length();
// Sample frequency.
virtual Nat STORM_FN sampleFreq() const;
// Channels.
virtual Nat STORM_FN channels() const;
// Read.
virtual Buffer STORM_FN read(Buffer to);
// More data?
virtual Bool STORM_FN more();
private:
// Data source.
Sound *src;
// # of repeats so far (to report accurate position).
Word repeat;
// Seek discovered to not be supported?
Bool noSeek;
};
// Create nicely.
SoundLoop *STORM_FN loop(Sound *sound);
}
|