AUDIO: Add a packetized version of the PCM stream

This commit is contained in:
Matthew Hoops 2015-08-11 22:33:54 -04:00
parent a64aff0287
commit 3aa9e2c581
2 changed files with 32 additions and 0 deletions

View File

@ -221,4 +221,24 @@ SeekableAudioStream *makeRawStream(const byte *buffer, uint32 size,
return makeRawStream(new Common::MemoryReadStream(buffer, size, disposeAfterUse), rate, flags, DisposeAfterUse::YES);
}
class PacketizedRawStream : public StatelessPacketizedAudioStream {
public:
PacketizedRawStream(int rate, byte flags) :
StatelessPacketizedAudioStream(rate, ((flags & FLAG_STEREO) != 0) ? 2 : 1), _flags(flags) {}
protected:
AudioStream *makeStream(Common::SeekableReadStream *data);
private:
byte _flags;
};
AudioStream *PacketizedRawStream::makeStream(Common::SeekableReadStream *data) {
return makeRawStream(data, getRate(), _flags);
}
PacketizedAudioStream *makePacketizedRawStream(int rate, byte flags) {
return new PacketizedRawStream(rate, flags);
}
} // End of namespace Audio

View File

@ -35,6 +35,7 @@ class SeekableReadStream;
namespace Audio {
class PacketizedAudioStream;
class SeekableAudioStream;
/**
@ -89,6 +90,17 @@ SeekableAudioStream *makeRawStream(Common::SeekableReadStream *stream,
int rate, byte flags,
DisposeAfterUse::Flag disposeAfterUse = DisposeAfterUse::YES);
/**
* Creates a PacketizedAudioStream that will automatically queue
* packets as individual AudioStreams like returned by makeRawStream.
*
* @param rate Rate of the sound data.
* @param flags Audio flags combination.
* @see RawFlags
* @return The new PacketizedAudioStream.
*/
PacketizedAudioStream *makePacketizedRawStream(int rate, byte flags);
} // End of namespace Audio
#endif