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"
33class SeekableReadStream;
70 virtual int readBuffer(int16 *buffer,
const int numSamples) = 0;
174 int readBuffer(int16 *buffer,
const int numSamples)
override;
178 bool isStereo()
const override {
return _parent->isStereo(); }
179 int getRate()
const override {
return _parent->getRate(); }
187 uint _completeIterations;
305 DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES);
307 int readBuffer(int16 *buffer,
const int numSamples)
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(); }
381 DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES) = 0;
397 void queueBuffer(
byte *data, uint32 size, DisposeAfterUse::Flag disposeAfterUse,
byte flags);
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:50
virtual int readBuffer(int16 *buffer, const int numSamples)=0
virtual bool endOfData() const =0
virtual bool isStereo() const =0
virtual int getRate() const =0
virtual bool endOfStream() const
Definition: audiostream.h:99
Definition: audiostream.h:123
virtual void setRemainingIterations(uint loops)=0
virtual uint getCompleteIterations() const =0
Definition: audiostream.h:144
int readBuffer(int16 *buffer, const int numSamples) override
LoopingAudioStream(RewindableAudioStream *stream, uint loops, DisposeAfterUse::Flag disposeAfterUse=DisposeAfterUse::YES, bool rewind=true)
LoopingAudioStream(Common::DisposablePtr< RewindableAudioStream > &&stream, uint loops, bool rewind=true)
int getRate() const override
Definition: audiostream.h:179
bool endOfStream() const override
bool isStereo() const override
Definition: audiostream.h:178
bool endOfData() const override
uint getCompleteIterations() const override
Definition: audiostream.h:181
void setRemainingIterations(uint loops) override
Definition: audiostream.h:182
Definition: audiostream.h:446
virtual void queuePacket(Common::SeekableReadStream *data)=0
Definition: audiostream.h:370
virtual void queueAudioStream(Audio::AudioStream *audStream, DisposeAfterUse::Flag disposeAfterUse=DisposeAfterUse::YES)=0
virtual uint32 numQueuedStreams() const =0
void queueBuffer(byte *data, uint32 size, DisposeAfterUse::Flag disposeAfterUse, byte flags)
Definition: audiostream.h:109
Definition: audiostream.h:212
virtual bool seek(const Timestamp &where)=0
bool rewind() override
Definition: audiostream.h:254
static SeekableAudioStream * openStreamFile(const Common::Path &basename)
bool seek(uint32 where)
Definition: audiostream.h:234
virtual Timestamp getLength() const =0
Definition: audiostream.h:471
uint getChannels() const
Definition: audiostream.h:497
int readBuffer(int16 *data, const int numSamples) override
Definition: audiostream.h:484
bool endOfData() const override
Definition: audiostream.h:485
bool endOfStream() const override
Definition: audiostream.h:486
int getRate() const override
Definition: audiostream.h:483
void queuePacket(Common::SeekableReadStream *data) override
Definition: audiostream.h:491
void finish() override
Definition: audiostream.h:492
virtual AudioStream * makeStream(Common::SeekableReadStream *data)=0
StatelessPacketizedAudioStream(uint rate, uint channels)
Definition: audiostream.h:477
bool isStereo() const override
Definition: audiostream.h:482
Definition: audiostream.h:287
SubLoopingAudioStream(SeekableAudioStream *stream, uint loops, const Timestamp loopStart, const Timestamp loopEnd, DisposeAfterUse::Flag disposeAfterUse=DisposeAfterUse::YES)
int readBuffer(int16 *buffer, const int numSamples) override
void setRemainingIterations(uint loops) override
Definition: audiostream.h:315
uint getCompleteIterations() const override
Definition: audiostream.h:314
bool isStereo() const override
Definition: audiostream.h:311
int getRate() const override
Definition: audiostream.h:312
bool endOfData() const override
bool endOfStream() const override
Definition: audiostream.h:334
bool isStereo() const override
Definition: audiostream.h:348
SubSeekableAudioStream(SeekableAudioStream *parent, const Timestamp start, const Timestamp end, DisposeAfterUse::Flag disposeAfterUse=DisposeAfterUse::YES)
bool endOfStream() const override
Definition: audiostream.h:353
Timestamp getLength() const override
Definition: audiostream.h:357
bool seek(const Timestamp &where) override
bool endOfData() const override
Definition: audiostream.h:352
int getRate() const override
Definition: audiostream.h:350
int readBuffer(int16 *buffer, const int numSamples) override
Definition: timestamp.h:83
AudioStream * makeLoopingAudioStream(RewindableAudioStream *stream, uint loops)
QueuingAudioStream * makeQueuingAudioStream(int rate, bool stereo)
Timestamp convertTimeToStreamPos(const Timestamp &where, int rate, bool isStereo)
AudioStream * makeSilentAudioStream(int rate, bool stereo)
AudioStream * makeLimitingAudioStream(AudioStream *parentStream, const Timestamp &length, DisposeAfterUse::Flag disposeAfterUse=DisposeAfterUse::YES)
AudioStream * makeNullAudioStream()
Definition: algorithm.h:29
Path
Definition: game.h:76