Skip to content

Commit

Permalink
AUDIO: Do not read the entire AIFF buffer into memory
Browse files Browse the repository at this point in the history
  • Loading branch information
Matthew Hoops committed Jun 4, 2015
1 parent 4266d76 commit b986b44
Showing 1 changed file with 5 additions and 9 deletions.
14 changes: 5 additions & 9 deletions audio/decoders/aiff.cpp
Expand Up @@ -30,6 +30,7 @@

#include "common/endian.h"
#include "common/stream.h"
#include "common/substream.h"
#include "common/textconsole.h"

#include "audio/decoders/aiff.h"
Expand Down Expand Up @@ -159,23 +160,18 @@ bool loadAIFFFromStream(Common::SeekableReadStream &stream, int &size, int &rate
SeekableAudioStream *makeAIFFStream(Common::SeekableReadStream *stream,
DisposeAfterUse::Flag disposeAfterUse) {
int size, rate;
byte *data, flags;
byte flags;

if (!loadAIFFFromStream(*stream, size, rate, flags)) {
if (disposeAfterUse == DisposeAfterUse::YES)
delete stream;
return 0;
}

data = (byte *)malloc(size);
assert(data);
stream->read(data, size);
Common::SeekableReadStream *dataStream = new Common::SeekableSubReadStream(stream, stream->pos(), stream->pos() + size, disposeAfterUse);

if (disposeAfterUse == DisposeAfterUse::YES)
delete stream;

// Since we allocated our own buffer for the data, we must specify DisposeAfterUse::YES.
return makeRawStream(data, size, rate, flags);
// Since we allocated our own stream for the data, we must specify DisposeAfterUse::YES.
return makeRawStream(dataStream, rate, flags);
}

} // End of namespace Audio

0 comments on commit b986b44

Please sign in to comment.