22 #ifndef AUDIO_AUDIOSTREAM_H 23 #define AUDIO_AUDIOSTREAM_H 25 #include "common/ptr.h" 26 #include "common/scummsys.h" 27 #include "common/types.h" 29 #include "audio/timestamp.h" 33 class SeekableReadStream;
70 virtual int readBuffer(int16 *buffer,
const int numSamples) = 0;
73 virtual bool isStereo()
const = 0;
76 virtual int getRate()
const = 0;
87 virtual bool endOfData()
const = 0;
116 virtual bool rewind() = 0;
129 virtual uint getCompleteIterations()
const = 0;
135 virtual void setRemainingIterations(uint loops) = 0;
174 int readBuffer(int16 *buffer,
const int numSamples)
override;
175 bool endOfData()
const override;
176 bool endOfStream()
const override;
178 bool isStereo()
const override {
return _parent->isStereo(); }
179 int getRate()
const override {
return _parent->getRate(); }
187 uint _completeIterations;
235 return seek(
Timestamp(where, getRate()));
245 virtual bool seek(
const Timestamp &where) = 0;
254 bool rewind()
override {
return seek(0); }
305 DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES);
307 int readBuffer(int16 *buffer,
const int numSamples)
override;
308 bool endOfData()
const override;
309 bool endOfStream()
const override;
311 bool isStereo()
const override {
return _parent->isStereo(); }
312 int getRate()
const override {
return _parent->getRate(); }
320 uint _completeIterations;
346 int readBuffer(int16 *buffer,
const int numSamples)
override;
348 bool isStereo()
const override {
return _parent->isStereo(); }
350 int getRate()
const override {
return _parent->getRate(); }
352 bool endOfData()
const override {
return (_pos >= _length) || _parent->endOfData(); }
353 bool endOfStream()
const override {
return (_pos >= _length) || _parent->endOfStream(); }
355 bool seek(
const Timestamp &where)
override;
381 DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES) = 0;
397 void queueBuffer(byte *data, uint32 size, DisposeAfterUse::Flag disposeAfterUse, byte flags);
405 virtual void finish() = 0;
411 virtual uint32 numQueuedStreams()
const = 0;
461 virtual void finish() = 0;
478 _rate(rate), _channels(channels), _stream(makeQueuingAudioStream(rate, channels == 2)) {}
482 bool isStereo()
const override {
return _channels == 2; }
483 int getRate()
const override {
return _rate; }
484 int readBuffer(int16 *data,
const int numSamples)
override {
return _stream->readBuffer(data, numSamples); }
485 bool endOfData()
const override {
return _stream->endOfData(); }
486 bool endOfStream()
const override {
return _stream->endOfStream(); }
488 uint32 numQueuedStreams()
const {
return _stream->numQueuedStreams(); }
492 void finish()
override { _stream->finish(); }
Definition: audiostream.h:123
bool isStereo() const override
Definition: audiostream.h:311
int getRate() const override
Definition: audiostream.h:312
bool isStereo() const override
Definition: audiostream.h:178
bool isStereo() const override
Definition: audiostream.h:348
AudioStream * makeSilentAudioStream(int rate, bool stereo)
Definition: audiostream.h:334
void setRemainingIterations(uint loops) override
Definition: audiostream.h:182
QueuingAudioStream * makeQueuingAudioStream(int rate, bool stereo)
Definition: timestamp.h:83
virtual bool endOfStream() const
Definition: audiostream.h:99
Definition: audiostream.h:446
Definition: audiostream.h:212
int readBuffer(int16 *data, const int numSamples) override
Definition: audiostream.h:484
AudioStream * makeLimitingAudioStream(AudioStream *parentStream, const Timestamp &length, DisposeAfterUse::Flag disposeAfterUse=DisposeAfterUse::YES)
bool isStereo() const override
Definition: audiostream.h:482
StatelessPacketizedAudioStream(uint rate, uint channels)
Definition: audiostream.h:477
void setRemainingIterations(uint loops) override
Definition: audiostream.h:315
Path
Definition: game.h:76
bool endOfData() const override
Definition: audiostream.h:485
int getRate() const override
Definition: audiostream.h:350
Definition: audiostream.h:144
uint getChannels() const
Definition: audiostream.h:497
int getRate() const override
Definition: audiostream.h:483
bool seek(uint32 where)
Definition: audiostream.h:234
void queuePacket(Common::SeekableReadStream *data) override
Definition: audiostream.h:491
Definition: algorithm.h:29
Definition: audiostream.h:50
bool rewind() override
Definition: audiostream.h:254
int getRate() const override
Definition: audiostream.h:179
uint getCompleteIterations() const override
Definition: audiostream.h:181
Definition: audiostream.h:109
Definition: audiostream.h:287
Definition: audiostream.h:471
uint getCompleteIterations() const override
Definition: audiostream.h:314
Definition: audiostream.h:370
bool endOfData() const override
Definition: audiostream.h:352
void finish() override
Definition: audiostream.h:492
Timestamp convertTimeToStreamPos(const Timestamp &where, int rate, bool isStereo)
bool endOfStream() const override
Definition: audiostream.h:353
Timestamp getLength() const override
Definition: audiostream.h:357
bool endOfStream() const override
Definition: audiostream.h:486
AudioStream * makeNullAudioStream()
AudioStream * makeLoopingAudioStream(SeekableAudioStream *stream, Timestamp start, Timestamp end, uint loops)