aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--image/codecs/cdtoons.cpp110
-rw-r--r--image/codecs/cdtoons.h2
-rw-r--r--image/codecs/cinepak.cpp96
-rw-r--r--image/codecs/cinepak.h6
-rw-r--r--image/codecs/codec.h3
-rw-r--r--image/codecs/indeo3.cpp52
-rw-r--r--image/codecs/indeo3.h2
-rw-r--r--image/codecs/mjpeg.cpp14
-rw-r--r--image/codecs/mjpeg.h2
-rw-r--r--image/codecs/mpeg.cpp6
-rw-r--r--image/codecs/mpeg.h4
-rw-r--r--image/codecs/msrle.cpp20
-rw-r--r--image/codecs/msrle.h4
-rw-r--r--image/codecs/msvideo1.cpp18
-rw-r--r--image/codecs/msvideo1.h6
-rw-r--r--image/codecs/qtrle.cpp116
-rw-r--r--image/codecs/qtrle.h14
-rw-r--r--image/codecs/rpza.cpp32
-rw-r--r--image/codecs/rpza.h2
-rw-r--r--image/codecs/smc.cpp38
-rw-r--r--image/codecs/smc.h2
-rw-r--r--image/codecs/svq1.cpp4
-rw-r--r--image/codecs/svq1.h2
-rw-r--r--image/codecs/truemotion1.cpp10
-rw-r--r--image/codecs/truemotion1.h4
-rw-r--r--image/jpeg.cpp4
-rw-r--r--image/jpeg.h2
-rw-r--r--video/avi_decoder.cpp2
-rw-r--r--video/coktel_decoder.cpp2
-rw-r--r--video/qt_decoder.cpp2
30 files changed, 290 insertions, 291 deletions
diff --git a/image/codecs/cdtoons.cpp b/image/codecs/cdtoons.cpp
index e1246a034f..6a2dc51b86 100644
--- a/image/codecs/cdtoons.cpp
+++ b/image/codecs/cdtoons.cpp
@@ -39,12 +39,12 @@ struct CDToonsDiff {
Common::Rect rect;
};
-static Common::Rect readRect(Common::SeekableReadStream *stream) {
+static Common::Rect readRect(Common::SeekableReadStream &stream) {
Common::Rect rect;
- rect.top = stream->readUint16BE();
- rect.left = stream->readUint16BE();
- rect.bottom = stream->readUint16BE();
- rect.right = stream->readUint16BE();
+ rect.top = stream.readUint16BE();
+ rect.left = stream.readUint16BE();
+ rect.bottom = stream.readUint16BE();
+ rect.right = stream.readUint16BE();
return rect;
}
@@ -67,14 +67,14 @@ CDToonsDecoder::~CDToonsDecoder() {
delete[] i->_value.data;
}
-Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *stream) {
- uint16 u0 = stream->readUint16BE(); // always 9?
- uint16 frameId = stream->readUint16BE();
- uint16 blocksValidUntil = stream->readUint16BE();
- byte u6 = stream->readByte();
- byte backgroundColor = stream->readByte();
+Graphics::Surface *CDToonsDecoder::decodeFrame(Common::SeekableReadStream &stream) {
+ uint16 u0 = stream.readUint16BE(); // always 9?
+ uint16 frameId = stream.readUint16BE();
+ uint16 blocksValidUntil = stream.readUint16BE();
+ byte u6 = stream.readByte();
+ byte backgroundColor = stream.readByte();
debugN(5, "CDToons frame %d, size %d, unknown %04x (at 0), blocks valid until %d, unknown 6 is %02x, bkg color is %02x\n",
- frameId, stream->size(), u0, blocksValidUntil, u6, backgroundColor);
+ frameId, stream.size(), u0, blocksValidUntil, u6, backgroundColor);
Common::Rect clipRect = readRect(stream);
debugN(9, "CDToons clipRect: (%d, %d) to (%d, %d)\n",
@@ -84,31 +84,31 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
debugN(9, "CDToons dirtyRect: (%d, %d) to (%d, %d)\n",
dirtyRect.left, dirtyRect.top, dirtyRect.right, dirtyRect.bottom);
- uint32 flags = stream->readUint32BE();
+ uint32 flags = stream.readUint32BE();
if (flags & 0x80)
error("CDToons: frame already processed?");
debugN(5, "CDToons flags: %08x\n", flags);
- uint16 blockCount = stream->readUint16BE();
- uint16 blockOffset = stream->readUint16BE();
+ uint16 blockCount = stream.readUint16BE();
+ uint16 blockOffset = stream.readUint16BE();
debugN(9, "CDToons: %d blocks at 0x%04x\n",
blockCount, blockOffset);
// max block id?
- uint16 u32 = stream->readUint16BE();
+ uint16 u32 = stream.readUint16BE();
debugN(5, "CDToons unknown at 32: %04x\n", u32);
- byte actionCount = stream->readByte();
- byte u35 = stream->readByte();
+ byte actionCount = stream.readByte();
+ byte u35 = stream.readByte();
- uint16 paletteId = stream->readUint16BE();
- byte paletteSet = stream->readByte();
+ uint16 paletteId = stream.readUint16BE();
+ byte paletteSet = stream.readByte();
debugN(9, "CDToons palette id %04x, palette byte %02x\n",
paletteId, paletteSet);
- byte u39 = stream->readByte();
- uint16 u40 = stream->readUint16BE();
- uint16 u42 = stream->readUint16BE();
+ byte u39 = stream.readByte();
+ uint16 u40 = stream.readUint16BE();
+ uint16 u42 = stream.readUint16BE();
debugN(5, "CDToons: unknown at 35 is %02x, unknowns at 39: %02x, %04x, %04x\n",
u35, u39, u40, u42);
@@ -116,41 +116,41 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
for (uint i = 0; i < actionCount; i++) {
CDToonsAction action;
- action.blockId = stream->readUint16BE();
+ action.blockId = stream.readUint16BE();
action.rect = readRect(stream);
debugN(9, "CDToons action: render block %d at (%d, %d) to (%d, %d)\n",
action.blockId, action.rect.left, action.rect.top, action.rect.right, action.rect.bottom);
actions.push_back(action);
}
- if (stream->pos() > blockOffset)
+ if (stream.pos() > blockOffset)
error("CDToons header ended at 0x%08x, but blocks should have started at 0x%08x",
- stream->pos(), blockOffset);
+ stream.pos(), blockOffset);
- if (stream->pos() != blockOffset)
- error("CDToons had %d unknown bytes after header", blockOffset - stream->pos());
+ if (stream.pos() != blockOffset)
+ error("CDToons had %d unknown bytes after header", blockOffset - stream.pos());
for (uint i = 0; i < blockCount; i++) {
- uint16 blockId = stream->readUint16BE();
+ uint16 blockId = stream.readUint16BE();
if (blockId >= 1200)
error("CDToons: block id %d was too high", blockId);
if (_blocks.contains(blockId))
error("CDToons: new block %d was already seen", blockId);
CDToonsBlock block;
- block.flags = stream->readUint16BE();
+ block.flags = stream.readUint16BE();
// flag 1 = palette, flag 2 = data?
if (block.flags & 0x8000)
error("CDToons: block already processed?");
- block.size = stream->readUint32BE();
+ block.size = stream.readUint32BE();
if (block.size < 14)
error("CDToons: block size was %d, too small", block.size);
block.size -= 14;
- block.startFrame = stream->readUint16BE();
- block.endFrame = stream->readUint16BE();
- block.unknown12 = stream->readUint16BE();
+ block.startFrame = stream.readUint16BE();
+ block.endFrame = stream.readUint16BE();
+ block.unknown12 = stream.readUint16BE();
block.data = new byte[block.size];
- stream->read(block.data, block.size);
+ stream.read(block.data, block.size);
debugN(9, "CDToons block id 0x%04x of size 0x%08x, flags %04x, from frame %d to %d, unknown at 12 is %04x\n",
blockId, block.size, block.flags, block.startFrame, block.endFrame, block.unknown12);
@@ -162,16 +162,16 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
Common::Array<CDToonsDiff> diffs;
while (true) {
- int32 nextPos = stream->pos();
- uint32 tag = stream->readUint32BE();
- uint32 size = stream->readUint32BE();
+ int32 nextPos = stream.pos();
+ uint32 tag = stream.readUint32BE();
+ uint32 size = stream.readUint32BE();
nextPos += size;
switch (tag) {
case MKTAG('D','i','f','f'):
{
debugN(5, "CDToons: Diff\n");
- uint16 count = stream->readUint16BE();
+ uint16 count = stream.readUint16BE();
Common::Rect diffClipRect = readRect(stream);
debugN(9, "CDToons diffClipRect: (%d, %d) to (%d, %d)\n",
@@ -182,14 +182,14 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
CDToonsDiff diff;
diff.rect = readRect(stream);
- diff.size = stream->readUint32BE();
+ diff.size = stream.readUint32BE();
if (diff.size < 20)
error("CDToons: Diff block size was %d, too small", diff.size);
- uint16 diffWidth = stream->readUint16BE();
- uint16 diffHeight = stream->readUint16BE();
- uint16 unknown16 = stream->readUint16BE();
- uint16 unknown18 = stream->readUint16BE();
+ uint16 diffWidth = stream.readUint16BE();
+ uint16 diffHeight = stream.readUint16BE();
+ uint16 unknown16 = stream.readUint16BE();
+ uint16 unknown18 = stream.readUint16BE();
diff.size -= 8;
if (diffWidth != diff.rect.width() || diffHeight != diff.rect.height())
@@ -199,7 +199,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
unknown16, unknown18);
diff.data = new byte[diff.size];
- stream->read(diff.data, diff.size);
+ stream.read(diff.data, diff.size);
diffs.push_back(diff);
}
}
@@ -212,8 +212,8 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
if (xFrmBegin)
error("CDToons: duplicate XFrm");
- xFrmBegin = stream->readByte();
- xFrmCount = stream->readByte();
+ xFrmBegin = stream.readByte();
+ xFrmCount = stream.readByte();
debugN(9, "CDToons XFrm: run %d actions from %d\n", xFrmCount, xFrmBegin - 1);
// TODO: don't ignore (if xFrmCount is non-zero)
@@ -248,7 +248,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
if (!(flags & 0x40))
error("CDToons: useless FrtR?");
- uint16 count = stream->readUint16BE();
+ uint16 count = stream.readUint16BE();
debugN(9, "CDToons FrtR: %d dirty rectangles\n", count);
for (uint i = 0; i < count; i++) {
Common::Rect dirtyRectFrtR = readRect(stream);
@@ -263,7 +263,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
if (!(flags & 0x20))
error("CDToons: useless BckR?");
- uint16 count = stream->readUint16BE();
+ uint16 count = stream.readUint16BE();
debugN(9, "CDToons BckR: %d subentries\n", count);
for (uint i = 0; i < count; i++) {
Common::Rect dirtyRectBckR = readRect(stream);
@@ -276,15 +276,15 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
warning("Unknown CDToons tag '%s'", tag2str(tag));
}
- if (stream->pos() > nextPos)
+ if (stream.pos() > nextPos)
error("CDToons ran off the end of a block while reading it (at %d, next block at %d)",
- stream->pos(), nextPos);
- if (stream->pos() != nextPos) {
- warning("CDToons had %d unknown bytes after block", nextPos - stream->pos());
- stream->seek(nextPos);
+ stream.pos(), nextPos);
+ if (stream.pos() != nextPos) {
+ warning("CDToons had %d unknown bytes after block", nextPos - stream.pos());
+ stream.seek(nextPos);
}
- if (stream->pos() == stream->size())
+ if (stream.pos() == stream.size())
break;
}
diff --git a/image/codecs/cdtoons.h b/image/codecs/cdtoons.h
index ac569b5307..a75ce551c2 100644
--- a/image/codecs/cdtoons.h
+++ b/image/codecs/cdtoons.h
@@ -49,7 +49,7 @@ public:
CDToonsDecoder(uint16 width, uint16 height);
~CDToonsDecoder();
- Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat::createFormatCLUT8(); }
bool containsPalette() const { return true; }
const byte *getPalette() { _dirtyPalette = false; return _palette; }
diff --git a/image/codecs/cinepak.cpp b/image/codecs/cinepak.cpp
index 6af7ab08ff..8d5dbceb4a 100644
--- a/image/codecs/cinepak.cpp
+++ b/image/codecs/cinepak.cpp
@@ -83,13 +83,13 @@ CinepakDecoder::~CinepakDecoder() {
delete[] _clipTableBuf;
}
-const Graphics::Surface *CinepakDecoder::decodeImage(Common::SeekableReadStream *stream) {
- _curFrame.flags = stream->readByte();
- _curFrame.length = (stream->readByte() << 16);
- _curFrame.length |= stream->readUint16BE();
- _curFrame.width = stream->readUint16BE();
- _curFrame.height = stream->readUint16BE();
- _curFrame.stripCount = stream->readUint16BE();
+const Graphics::Surface *CinepakDecoder::decodeFrame(Common::SeekableReadStream &stream) {
+ _curFrame.flags = stream.readByte();
+ _curFrame.length = (stream.readByte() << 16);
+ _curFrame.length |= stream.readUint16BE();
+ _curFrame.width = stream.readUint16BE();
+ _curFrame.height = stream.readUint16BE();
+ _curFrame.stripCount = stream.readUint16BE();
if (_curFrame.strips == NULL)
_curFrame.strips = new CinepakStrip[_curFrame.stripCount];
@@ -98,11 +98,11 @@ const Graphics::Surface *CinepakDecoder::decodeImage(Common::SeekableReadStream
// Borrowed from FFMPEG. This should cut out the extra data Cinepak for Sega has (which is useless).
// The theory behind this is that this is here to confuse standard Cinepak decoders. But, we won't let that happen! ;)
- if (_curFrame.length != (uint32)stream->size()) {
- if (stream->readUint16BE() == 0xFE00)
- stream->readUint32BE();
- else if ((stream->size() % _curFrame.length) == 0)
- stream->seek(-2, SEEK_CUR);
+ if (_curFrame.length != (uint32)stream.size()) {
+ if (stream.readUint16BE() == 0xFE00)
+ stream.readUint32BE();
+ else if ((stream.size() % _curFrame.length) == 0)
+ stream.seek(-2, SEEK_CUR);
}
if (!_curFrame.surface) {
@@ -121,29 +121,29 @@ const Graphics::Surface *CinepakDecoder::decodeImage(Common::SeekableReadStream
}
}
- _curFrame.strips[i].id = stream->readUint16BE();
- _curFrame.strips[i].length = stream->readUint16BE() - 12; // Subtract the 12 byte header
- _curFrame.strips[i].rect.top = _y; stream->readUint16BE(); // Ignore, substitute with our own.
- _curFrame.strips[i].rect.left = 0; stream->readUint16BE(); // Ignore, substitute with our own
- _curFrame.strips[i].rect.bottom = _y + stream->readUint16BE();
- _curFrame.strips[i].rect.right = _curFrame.width; stream->readUint16BE(); // Ignore, substitute with our own
+ _curFrame.strips[i].id = stream.readUint16BE();
+ _curFrame.strips[i].length = stream.readUint16BE() - 12; // Subtract the 12 byte header
+ _curFrame.strips[i].rect.top = _y; stream.readUint16BE(); // Ignore, substitute with our own.
+ _curFrame.strips[i].rect.left = 0; stream.readUint16BE(); // Ignore, substitute with our own
+ _curFrame.strips[i].rect.bottom = _y + stream.readUint16BE();
+ _curFrame.strips[i].rect.right = _curFrame.width; stream.readUint16BE(); // Ignore, substitute with our own
// Sanity check. Because Cinepak is based on 4x4 blocks, the width and height of each strip needs to be divisible by 4.
assert(!(_curFrame.strips[i].rect.width() % 4) && !(_curFrame.strips[i].rect.height() % 4));
- uint32 pos = stream->pos();
+ uint32 pos = stream.pos();
- while ((uint32)stream->pos() < (pos + _curFrame.strips[i].length) && !stream->eos()) {
- byte chunkID = stream->readByte();
+ while ((uint32)stream.pos() < (pos + _curFrame.strips[i].length) && !stream.eos()) {
+ byte chunkID = stream.readByte();
- if (stream->eos())
+ if (stream.eos())
break;
// Chunk Size is 24-bit, ignore the first 4 bytes
- uint32 chunkSize = stream->readByte() << 16;
- chunkSize += stream->readUint16BE() - 4;
+ uint32 chunkSize = stream.readByte() << 16;
+ chunkSize += stream.readUint16BE() - 4;
- int32 startPos = stream->pos();
+ int32 startPos = stream.pos();
switch (chunkID) {
case 0x20:
@@ -168,8 +168,8 @@ const Graphics::Surface *CinepakDecoder::decodeImage(Common::SeekableReadStream
return _curFrame.surface;
}
- if (stream->pos() != startPos + (int32)chunkSize)
- stream->seek(startPos + chunkSize);
+ if (stream.pos() != startPos + (int32)chunkSize)
+ stream.seek(startPos + chunkSize);
}
_y = _curFrame.strips[i].rect.bottom;
@@ -178,32 +178,32 @@ const Graphics::Surface *CinepakDecoder::decodeImage(Common::SeekableReadStream
return _curFrame.surface;
}
-void CinepakDecoder::loadCodebook(Common::SeekableReadStream *stream, uint16 strip, byte codebookType, byte chunkID, uint32 chunkSize) {
+void CinepakDecoder::loadCodebook(Common::SeekableReadStream &stream, uint16 strip, byte codebookType, byte chunkID, uint32 chunkSize) {
CinepakCodebook *codebook = (codebookType == 1) ? _curFrame.strips[strip].v1_codebook : _curFrame.strips[strip].v4_codebook;
- int32 startPos = stream->pos();
+ int32 startPos = stream.pos();
uint32 flag = 0, mask = 0;
for (uint16 i = 0; i < 256; i++) {
if ((chunkID & 0x01) && !(mask >>= 1)) {
- if ((stream->pos() - startPos + 4) > (int32)chunkSize)
+ if ((stream.pos() - startPos + 4) > (int32)chunkSize)
break;
- flag = stream->readUint32BE();
+ flag = stream.readUint32BE();
mask = 0x80000000;
}
if (!(chunkID & 0x01) || (flag & mask)) {
byte n = (chunkID & 0x04) ? 4 : 6;
- if ((stream->pos() - startPos + n) > (int32)chunkSize)
+ if ((stream.pos() - startPos + n) > (int32)chunkSize)
break;
for (byte j = 0; j < 4; j++)
- codebook[i].y[j] = stream->readByte();
+ codebook[i].y[j] = stream.readByte();
if (n == 6) {
- codebook[i].u = stream->readSByte();
- codebook[i].v = stream->readSByte();
+ codebook[i].u = stream.readSByte();
+ codebook[i].v = stream.readSByte();
} else {
// This codebook type indicates either greyscale or
// palettized video. For greyscale, default us to
@@ -215,10 +215,10 @@ void CinepakDecoder::loadCodebook(Common::SeekableReadStream *stream, uint16 str
}
}
-void CinepakDecoder::decodeVectors(Common::SeekableReadStream *stream, uint16 strip, byte chunkID, uint32 chunkSize) {
+void CinepakDecoder::decodeVectors(Common::SeekableReadStream &stream, uint16 strip, byte chunkID, uint32 chunkSize) {
uint32 flag = 0, mask = 0;
uint32 iy[4];
- int32 startPos = stream->pos();
+ int32 startPos = stream.pos();
for (uint16 y = _curFrame.strips[strip].rect.top; y < _curFrame.strips[strip].rect.bottom; y += 4) {
iy[0] = _curFrame.strips[strip].rect.left + y * _curFrame.width;
@@ -228,28 +228,28 @@ void CinepakDecoder::decodeVectors(Common::SeekableReadStream *stream, uint16 st
for (uint16 x = _curFrame.strips[strip].rect.left; x < _curFrame.strips[strip].rect.right; x += 4) {
if ((chunkID & 0x01) && !(mask >>= 1)) {
- if ((stream->pos() - startPos + 4) > (int32)chunkSize)
+ if ((stream.pos() - startPos + 4) > (int32)chunkSize)
return;
- flag = stream->readUint32BE();
+ flag = stream.readUint32BE();
mask = 0x80000000;
}
if (!(chunkID & 0x01) || (flag & mask)) {
if (!(chunkID & 0x02) && !(mask >>= 1)) {
- if ((stream->pos() - startPos + 4) > (int32)chunkSize)
+ if ((stream.pos() - startPos + 4) > (int32)chunkSize)
return;
- flag = stream->readUint32BE();
+ flag = stream.readUint32BE();
mask = 0x80000000;
}
if ((chunkID & 0x02) || (~flag & mask)) {
- if ((stream->pos() - startPos + 1) > (int32)chunkSize)
+ if ((stream.pos() - startPos + 1) > (int32)chunkSize)
return;
// Get the codebook
- CinepakCodebook codebook = _curFrame.strips[strip].v1_codebook[stream->readByte()];
+ CinepakCodebook codebook = _curFrame.strips[strip].v1_codebook[stream.readByte()];
PUT_PIXEL(iy[0] + 0, codebook.y[0], codebook.u, codebook.v);
PUT_PIXEL(iy[0] + 1, codebook.y[0], codebook.u, codebook.v);
@@ -271,28 +271,28 @@ void CinepakDecoder::decodeVectors(Common::SeekableReadStream *stream, uint16 st
PUT_PIXEL(iy[3] + 2, codebook.y[3], codebook.u, codebook.v);
PUT_PIXEL(iy[3] + 3, codebook.y[3], codebook.u, codebook.v);
} else if (flag & mask) {
- if ((stream->pos() - startPos + 4) > (int32)chunkSize)
+ if ((stream.pos() - startPos + 4) > (int32)chunkSize)
return;
- CinepakCodebook codebook = _curFrame.strips[strip].v4_codebook[stream->readByte()];
+ CinepakCodebook codebook = _curFrame.strips[strip].v4_codebook[stream.readByte()];
PUT_PIXEL(iy[0] + 0, codebook.y[0], codebook.u, codebook.v);
PUT_PIXEL(iy[0] + 1, codebook.y[1], codebook.u, codebook.v);
PUT_PIXEL(iy[1] + 0, codebook.y[2], codebook.u, codebook.v);
PUT_PIXEL(iy[1] + 1, codebook.y[3], codebook.u, codebook.v);
- codebook = _curFrame.strips[strip].v4_codebook[stream->readByte()];
+ codebook = _curFrame.strips[strip].v4_codebook[stream.readByte()];
PUT_PIXEL(iy[0] + 2, codebook.y[0], codebook.u, codebook.v);
PUT_PIXEL(iy[0] + 3, codebook.y[1], codebook.u, codebook.v);
PUT_PIXEL(iy[1] + 2, codebook.y[2], codebook.u, codebook.v);
PUT_PIXEL(iy[1] + 3, codebook.y[3], codebook.u, codebook.v);
- codebook = _curFrame.strips[strip].v4_codebook[stream->readByte()];
+ codebook = _curFrame.strips[strip].v4_codebook[stream.readByte()];
PUT_PIXEL(iy[2] + 0, codebook.y[0], codebook.u, codebook.v);
PUT_PIXEL(iy[2] + 1, codebook.y[1], codebook.u, codebook.v);
PUT_PIXEL(iy[3] + 0, codebook.y[2], codebook.u, codebook.v);
PUT_PIXEL(iy[3] + 1, codebook.y[3], codebook.u, codebook.v);
- codebook = _curFrame.strips[strip].v4_codebook[stream->readByte()];
+ codebook = _curFrame.strips[strip].v4_codebook[stream.readByte()];
PUT_PIXEL(iy[2] + 2, codebook.y[0], codebook.u, codebook.v);
PUT_PIXEL(iy[2] + 3, codebook.y[1], codebook.u, codebook.v);
PUT_PIXEL(iy[3] + 2, codebook.y[2], codebook.u, codebook.v);
diff --git a/image/codecs/cinepak.h b/image/codecs/cinepak.h
index 99a316e428..985fc91165 100644
--- a/image/codecs/cinepak.h
+++ b/image/codecs/cinepak.h
@@ -71,7 +71,7 @@ public:
CinepakDecoder(int bitsPerPixel = 24);
~CinepakDecoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return _pixelFormat; }
private:
@@ -80,8 +80,8 @@ private:
Graphics::PixelFormat _pixelFormat;
byte *_clipTable, *_clipTableBuf;
- void loadCodebook(Common::SeekableReadStream *stream, uint16 strip, byte codebookType, byte chunkID, uint32 chunkSize);
- void decodeVectors(Common::SeekableReadStream *stream, uint16 strip, byte chunkID, uint32 chunkSize);
+ void loadCodebook(Common::SeekableReadStream &stream, uint16 strip, byte codebookType, byte chunkID, uint32 chunkSize);
+ void decodeVectors(Common::SeekableReadStream &stream, uint16 strip, byte chunkID, uint32 chunkSize);
};
} // End of namespace Image
diff --git a/image/codecs/codec.h b/image/codecs/codec.h
index 1b7a295e9d..092f9754f3 100644
--- a/image/codecs/codec.h
+++ b/image/codecs/codec.h
@@ -59,9 +59,8 @@ public:
* containing the decoded frame.
*
* @return a pointer to the decoded frame
- * @note stream is not deleted
*/
- virtual const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream) = 0;
+ virtual const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream) = 0;
/**
* Get the format that the surface returned from decodeImage() will
diff --git a/image/codecs/indeo3.cpp b/image/codecs/indeo3.cpp
index 77bcec09bb..af9120ca93 100644
--- a/image/codecs/indeo3.cpp
+++ b/image/codecs/indeo3.cpp
@@ -165,24 +165,24 @@ void Indeo3Decoder::allocFrames() {
}
}
-const Graphics::Surface *Indeo3Decoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *Indeo3Decoder::decodeFrame(Common::SeekableReadStream &stream) {
// Not Indeo 3? Fail
- if (!isIndeo3(*stream))
+ if (!isIndeo3(stream))
return 0;
- stream->seek(12);
- uint32 frameDataLen = stream->readUint32LE();
+ stream.seek(12);
+ uint32 frameDataLen = stream.readUint32LE();
// Less data than the frame should have? Fail
- if (stream->size() < (int)(frameDataLen - 16))
+ if (stream.size() < (int)(frameDataLen - 16))
return 0;
- stream->seek(16); // Behind header
- stream->skip(2); // Unknown
+ stream.seek(16); // Behind header
+ stream.skip(2); // Unknown
- uint16 flags1 = stream->readUint16LE();
- uint32 flags3 = stream->readUint32LE();
- uint8 flags2 = stream->readByte();
+ uint16 flags1 = stream.readUint16LE();
+ uint32 flags3 = stream.readUint32LE();
+ uint8 flags2 = stream.readByte();
// Finding the reference frame
if (flags1 & 0x200) {
@@ -196,22 +196,22 @@ const Graphics::Surface *Indeo3Decoder::decodeImage(Common::SeekableReadStream *
if (flags3 == 0x80)
return _surface;
- stream->skip(3);
+ stream.skip(3);
- uint16 fHeight = stream->readUint16LE();
- uint16 fWidth = stream->readUint16LE();
+ uint16 fHeight = stream.readUint16LE();
+ uint16 fWidth = stream.readUint16LE();
uint32 chromaHeight = ((fHeight >> 2) + 3) & 0x7FFC;
uint32 chromaWidth = ((fWidth >> 2) + 3) & 0x7FFC;
uint32 offs;
- uint32 offsY = stream->readUint32LE() + 16;
- uint32 offsU = stream->readUint32LE() + 16;
- uint32 offsV = stream->readUint32LE() + 16;
+ uint32 offsY = stream.readUint32LE() + 16;
+ uint32 offsU = stream.readUint32LE() + 16;
+ uint32 offsV = stream.readUint32LE() + 16;
- stream->skip(4);
+ stream.skip(4);
- uint32 hPos = stream->pos();
+ uint32 hPos = stream.pos();
if (offsY < hPos) {
warning("Indeo3Decoder::decodeImage: offsY < hPos");
@@ -226,11 +226,11 @@ const Graphics::Surface *Indeo3Decoder::decodeImage(Common::SeekableReadStream *
return 0;
}
- uint32 dataSize = stream->size() - hPos;
+ uint32 dataSize = stream.size() - hPos;
byte *inData = new byte[dataSize];
- if (stream->read(inData, dataSize) != dataSize) {
+ if (stream.read(inData, dataSize) != dataSize) {
delete[] inData;
return 0;
}
@@ -239,23 +239,23 @@ const Graphics::Surface *Indeo3Decoder::decodeImage(Common::SeekableReadStream *
byte *buf_pos;
// Luminance Y
- stream->seek(offsY);
+ stream.seek(offsY);
buf_pos = inData + offsY + 4 - hPos;
- offs = stream->readUint32LE();
+ offs = stream.readUint32LE();
decodeChunk(_cur_frame->Ybuf, _ref_frame->Ybuf, fWidth, fHeight,
buf_pos + offs * 2, flags2, hdr_pos, buf_pos, MIN<int>(fWidth, 160));
// Chrominance U
- stream->seek(offsU);
+ stream.seek(offsU);
buf_pos = inData + offsU + 4 - hPos;
- offs = stream->readUint32LE();
+ offs = stream.readUint32LE();
decodeChunk(_cur_frame->Vbuf, _ref_frame->Vbuf, chromaWidth, chromaHeight,
buf_pos + offs * 2, flags2, hdr_pos, buf_pos, MIN<int>(chromaWidth, 40));
// Chrominance V
- stream->seek(offsV);
+ stream.seek(offsV);
buf_pos = inData + offsV + 4 - hPos;
- offs = stream->readUint32LE();
+ offs = stream.readUint32LE();
decodeChunk(_cur_frame->Ubuf, _ref_frame->Ubuf, chromaWidth, chromaHeight,
buf_pos + offs * 2, flags2, hdr_pos, buf_pos, MIN<int>(chromaWidth, 40));
diff --git a/image/codecs/indeo3.h b/image/codecs/indeo3.h
index 275cbc1654..f1b406d40d 100644
--- a/image/codecs/indeo3.h
+++ b/image/codecs/indeo3.h
@@ -48,7 +48,7 @@ public:
Indeo3Decoder(uint16 width, uint16 height);
~Indeo3Decoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const;
static bool isIndeo3(Common::SeekableReadStream &stream);
diff --git a/image/codecs/mjpeg.cpp b/image/codecs/mjpeg.cpp
index aa7e1d0ec4..4ad72f259d 100644
--- a/image/codecs/mjpeg.cpp
+++ b/image/codecs/mjpeg.cpp
@@ -147,20 +147,20 @@ static const byte s_mjpegValACChrominance[] = {
0xf9, 0xfa
};
-const Graphics::Surface *MJPEGDecoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *MJPEGDecoder::decodeFrame(Common::SeekableReadStream &stream) {
// We need to reconstruct an actual JPEG stream here, then feed it to the JPEG decoder
// Yes, this is a pain.
- stream->readUint32BE(); // Skip nonsense JPEG header
- uint16 inputSkip = stream->readUint16BE() + 4;
- uint32 tag = stream->readUint32BE();
+ stream.readUint32BE(); // Skip nonsense JPEG header
+ uint16 inputSkip = stream.readUint16BE() + 4;
+ uint32 tag = stream.readUint32BE();
if (tag != MKTAG('A', 'V', 'I', '1')) {
warning("Invalid MJPEG tag found");
return 0;
}
- uint32 outputSize = stream->size() - inputSkip + sizeof(s_jpegHeader) + DHT_SEGMENT_SIZE;
+ uint32 outputSize = stream.size() - inputSkip + sizeof(s_jpegHeader) + DHT_SEGMENT_SIZE;
byte *data = (byte *)malloc(outputSize);
if (!data) {
@@ -193,8 +193,8 @@ const Graphics::Surface *MJPEGDecoder::decodeImage(Common::SeekableReadStream *s
dataOffset += 162;
// Write the actual data
- stream->seek(inputSkip);
- stream->read(data + dataOffset, stream->size() - inputSkip);
+ stream.seek(inputSkip);
+ stream.read(data + dataOffset, stream.size() - inputSkip);
Common::MemoryReadStream convertedStream(data, outputSize, DisposeAfterUse::YES);
JPEGDecoder jpeg;
diff --git a/image/codecs/mjpeg.h b/image/codecs/mjpeg.h
index b34b84b225..904b89d3ae 100644
--- a/image/codecs/mjpeg.h
+++ b/image/codecs/mjpeg.h
@@ -47,7 +47,7 @@ public:
MJPEGDecoder();
~MJPEGDecoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return _pixelFormat; }
private:
diff --git a/image/codecs/mpeg.cpp b/image/codecs/mpeg.cpp
index d81123f26d..beb042dbf1 100644
--- a/image/codecs/mpeg.cpp
+++ b/image/codecs/mpeg.cpp
@@ -52,13 +52,13 @@ MPEGDecoder::~MPEGDecoder() {
}
}
-const Graphics::Surface *MPEGDecoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *MPEGDecoder::decodeFrame(Common::SeekableReadStream &stream) {
uint32 framePeriod;
decodePacket(stream, framePeriod);
return _surface;
}
-bool MPEGDecoder::decodePacket(Common::SeekableReadStream *packet, uint32 &framePeriod, Graphics::Surface *dst) {
+bool MPEGDecoder::decodePacket(Common::SeekableReadStream &packet, uint32 &framePeriod, Graphics::Surface *dst) {
// Decode as much as we can out of this packet
uint32 size = 0xFFFFFFFF;
mpeg2_state_t state;
@@ -70,7 +70,7 @@ bool MPEGDecoder::decodePacket(Common::SeekableReadStream *packet, uint32 &frame
switch (state) {
case STATE_BUFFER:
- size = packet->read(_buffer, BUFFER_SIZE);
+ size = packet.read(_buffer, BUFFER_SIZE);
mpeg2_buffer(_mpegDecoder, _buffer, _buffer + size);
break;
case STATE_SLICE:
diff --git a/image/codecs/mpeg.h b/image/codecs/mpeg.h
index b9e961cf24..7f231dd8b3 100644
--- a/image/codecs/mpeg.h
+++ b/image/codecs/mpeg.h
@@ -72,11 +72,11 @@ public:
~MPEGDecoder();
// Codec interface
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return _pixelFormat; }
// MPEGPSDecoder call
- bool decodePacket(Common::SeekableReadStream *packet, uint32 &framePeriod, Graphics::Surface *dst = 0);
+ bool decodePacket(Common::SeekableReadStream &packet, uint32 &framePeriod, Graphics::Surface *dst = 0);
private:
Graphics::PixelFormat _pixelFormat;
diff --git a/image/codecs/msrle.cpp b/image/codecs/msrle.cpp
index 951de83c31..89fe869a9e 100644
--- a/image/codecs/msrle.cpp
+++ b/image/codecs/msrle.cpp
@@ -39,7 +39,7 @@ MSRLEDecoder::~MSRLEDecoder() {
delete _surface;
}
-const Graphics::Surface *MSRLEDecoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *MSRLEDecoder::decodeFrame(Common::SeekableReadStream &stream) {
if (_bitsPerPixel == 8) {
decode8(stream);
} else
@@ -48,7 +48,7 @@ const Graphics::Surface *MSRLEDecoder::decodeImage(Common::SeekableReadStream *s
return _surface;
}
-void MSRLEDecoder::decode8(Common::SeekableReadStream *stream) {
+void MSRLEDecoder::decode8(Common::SeekableReadStream &stream) {
int x = 0;
int y = _surface->h - 1;
@@ -60,9 +60,9 @@ void MSRLEDecoder::decode8(Common::SeekableReadStream *stream) {
byte *output = data + ((height - 1) * width);
byte *output_end = data + ((height) * width);
- while (!stream->eos()) {
- byte count = stream->readByte();
- byte value = stream->readByte();
+ while (!stream.eos()) {
+ byte count = stream.readByte();
+ byte value = stream.readByte();
if (count == 0) {
if (value == 0) {
@@ -84,8 +84,8 @@ void MSRLEDecoder::decode8(Common::SeekableReadStream *stream) {
} else if (value == 2) {
// Skip
- count = stream->readByte();
- value = stream->readByte();
+ count = stream.readByte();
+ value = stream.readByte();
y -= value;
x += count;
@@ -101,15 +101,15 @@ void MSRLEDecoder::decode8(Common::SeekableReadStream *stream) {
// Copy data
if (output + value > output_end) {
- stream->skip(value);
+ stream.skip(value);
continue;
}
for (int i = 0; i < value; i++)
- *output++ = stream->readByte();
+ *output++ = stream.readByte();
if (value & 1)
- stream->skip(1);
+ stream.skip(1);
x += value;
}
diff --git a/image/codecs/msrle.h b/image/codecs/msrle.h
index 10e3531c07..a65ef1c41d 100644
--- a/image/codecs/msrle.h
+++ b/image/codecs/msrle.h
@@ -38,7 +38,7 @@ public:
MSRLEDecoder(uint16 width, uint16 height, byte bitsPerPixel);
~MSRLEDecoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat::createFormatCLUT8(); }
private:
@@ -46,7 +46,7 @@ private:
Graphics::Surface *_surface;
- void decode8(Common::SeekableReadStream *stream);
+ void decode8(Common::SeekableReadStream &stream);
};
} // End of namespace Image
diff --git a/image/codecs/msvideo1.cpp b/image/codecs/msvideo1.cpp
index e94afedb2d..25d7395363 100644
--- a/image/codecs/msvideo1.cpp
+++ b/image/codecs/msvideo1.cpp
@@ -29,8 +29,8 @@
namespace Image {
#define CHECK_STREAM_PTR(n) \
- if ((stream->pos() + n) > stream->size() ) { \
- warning ("MS Video-1: Stream out of bounds (%d >= %d)", stream->pos() + n, stream->size()); \
+ if ((stream.pos() + n) > stream.size() ) { \
+ warning ("MS Video-1: Stream out of bounds (%d >= %d)", stream.pos() + n, stream.size()); \
return; \
}
@@ -46,7 +46,7 @@ MSVideo1Decoder::~MSVideo1Decoder() {
delete _surface;
}
-void MSVideo1Decoder::decode8(Common::SeekableReadStream *stream) {
+void MSVideo1Decoder::decode8(Common::SeekableReadStream &stream) {
byte colors[8];
byte *pixels = (byte *)_surface->getPixels();
uint16 stride = _surface->w;
@@ -73,8 +73,8 @@ void MSVideo1Decoder::decode8(Common::SeekableReadStream *stream) {
/* get the next two bytes in the encoded data stream */
CHECK_STREAM_PTR(2);
- byte byte_a = stream->readByte();
- byte byte_b = stream->readByte();
+ byte byte_a = stream.readByte();
+ byte byte_b = stream.readByte();
/* check if the decode is finished */
if (byte_a == 0 && byte_b == 0 && totalBlocks == 0) {
@@ -87,8 +87,8 @@ void MSVideo1Decoder::decode8(Common::SeekableReadStream *stream) {
uint16 flags = (byte_b << 8) | byte_a;
CHECK_STREAM_PTR(2);
- colors[0] = stream->readByte();
- colors[1] = stream->readByte();
+ colors[0] = stream.readByte();
+ colors[1] = stream.readByte();
for (byte pixel_y = 0; pixel_y < 4; pixel_y++) {
for (byte pixel_x = 0; pixel_x < 4; pixel_x++, flags >>= 1)
@@ -101,7 +101,7 @@ void MSVideo1Decoder::decode8(Common::SeekableReadStream *stream) {
CHECK_STREAM_PTR(8);
for (byte i = 0; i < 8; i++)
- colors[i] = stream->readByte();
+ colors[i] = stream.readByte();
for (byte pixel_y = 0; pixel_y < 4; pixel_y++) {
for (byte pixel_x = 0; pixel_x < 4; pixel_x++, flags >>= 1)
@@ -125,7 +125,7 @@ void MSVideo1Decoder::decode8(Common::SeekableReadStream *stream) {
}
}
-const Graphics::Surface *MSVideo1Decoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *MSVideo1Decoder::decodeFrame(Common::SeekableReadStream &stream) {
if (_bitsPerPixel == 8)
decode8(stream);
else {
diff --git a/image/codecs/msvideo1.h b/image/codecs/msvideo1.h
index 517936d35b..bdee5acbe5 100644
--- a/image/codecs/msvideo1.h
+++ b/image/codecs/msvideo1.h
@@ -38,7 +38,7 @@ public:
MSVideo1Decoder(uint16 width, uint16 height, byte bitsPerPixel);
~MSVideo1Decoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat::createFormatCLUT8(); }
private:
@@ -46,8 +46,8 @@ private:
Graphics::Surface *_surface;
- void decode8(Common::SeekableReadStream *stream);
- //void decode16(Common::SeekableReadStream *stream);
+ void decode8(Common::SeekableReadStream &stream);
+ //void decode16(Common::SeekableReadStream &stream);
};
} // End of namespace Image
diff --git a/image/codecs/qtrle.cpp b/image/codecs/qtrle.cpp
index a609e9bba9..94744efa5a 100644
--- a/image/codecs/qtrle.cpp
+++ b/image/codecs/qtrle.cpp
@@ -48,8 +48,8 @@ QTRLEDecoder::QTRLEDecoder(uint16 width, uint16 height, byte bitsPerPixel) : Cod
}
#define CHECK_STREAM_PTR(n) \
- if ((stream->pos() + n) > stream->size()) { \
- warning("QTRLE Problem: stream out of bounds (%d > %d)", stream->pos() + n, stream->size()); \
+ if ((stream.pos() + n) > stream.size()) { \
+ warning("QTRLE Problem: stream out of bounds (%d > %d)", stream.pos() + n, stream.size()); \
return; \
}
@@ -59,14 +59,14 @@ QTRLEDecoder::QTRLEDecoder(uint16 width, uint16 height, byte bitsPerPixel) : Cod
return; \
} \
-void QTRLEDecoder::decode1(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange) {
+void QTRLEDecoder::decode1(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange) {
uint32 pixelPtr = 0;
byte *rgb = (byte *)_surface->getPixels();
while (linesToChange) {
CHECK_STREAM_PTR(2);
- byte skip = stream->readByte();
- int8 rleCode = stream->readSByte();
+ byte skip = stream.readByte();
+ int8 rleCode = stream.readSByte();
if (rleCode == 0)
break;
@@ -83,8 +83,8 @@ void QTRLEDecoder::decode1(Common::SeekableReadStream *stream, uint32 rowPtr, ui
rleCode = -rleCode;
// get the next 2 bytes from the stream, treat them as groups of 8 pixels, and output them rleCode times */
CHECK_STREAM_PTR(2);
- byte pi0 = stream->readByte();
- byte pi1 = stream->readByte();
+ byte pi0 = stream.readByte();
+ byte pi1 = stream.readByte();
CHECK_PIXEL_PTR(rleCode * 2);
while (rleCode--) {
@@ -98,25 +98,25 @@ void QTRLEDecoder::decode1(Common::SeekableReadStream *stream, uint32 rowPtr, ui
CHECK_PIXEL_PTR(rleCode);
while (rleCode--)
- rgb[pixelPtr++] = stream->readByte();
+ rgb[pixelPtr++] = stream.readByte();
}
}
}
-void QTRLEDecoder::decode2_4(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange, byte bpp) {
+void QTRLEDecoder::decode2_4(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange, byte bpp) {
uint32 pixelPtr = 0;
byte *rgb = (byte *)_surface->getPixels();
byte numPixels = (bpp == 4) ? 8 : 16;
while (linesToChange--) {
CHECK_STREAM_PTR(2);
- pixelPtr = rowPtr + (numPixels * (stream->readByte() - 1));
+ pixelPtr = rowPtr + (numPixels * (stream.readByte() - 1));
- for (int8 rleCode = stream->readSByte(); rleCode != -1; rleCode = stream->readSByte()) {
+ for (int8 rleCode = stream.readSByte(); rleCode != -1; rleCode = stream.readSByte()) {
if (rleCode == 0) {
// there's another skip code in the stream
CHECK_STREAM_PTR(1);
- pixelPtr += (numPixels * (stream->readByte() - 1));
+ pixelPtr += (numPixels * (stream.readByte() - 1));
} else if (rleCode < 0) {
// decode the run length code
rleCode = -rleCode;
@@ -127,10 +127,10 @@ void QTRLEDecoder::decode2_4(Common::SeekableReadStream *stream, uint32 rowPtr,
byte pi[16]; // 16 palette indices
for (int8 i = numPixels - 1; i >= 0; i--) {
- pi[numPixels - 1 - i] = (stream->readByte() >> ((i * bpp) & 0x07)) & ((1 << bpp) - 1);
+ pi[numPixels - 1 - i] = (stream.readByte() >> ((i * bpp) & 0x07)) & ((1 << bpp) - 1);
if ((i & ((numPixels >> 2) - 1)) == 0)
- stream->readByte();
+ stream.readByte();
}
CHECK_PIXEL_PTR(rleCode * numPixels);
@@ -145,7 +145,7 @@ void QTRLEDecoder::decode2_4(Common::SeekableReadStream *stream, uint32 rowPtr,
CHECK_PIXEL_PTR(rleCode * (numPixels >> 2));
while (rleCode--) {
- byte temp = stream->readByte();
+ byte temp = stream.readByte();
if (bpp == 4) {
rgb[pixelPtr++] = (temp >> 4) & 0x0f;
rgb[pixelPtr++] = temp & 0x0f;
@@ -163,19 +163,19 @@ void QTRLEDecoder::decode2_4(Common::SeekableReadStream *stream, uint32 rowPtr,
}
}
-void QTRLEDecoder::decode8(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange) {
+void QTRLEDecoder::decode8(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange) {
uint32 pixelPtr = 0;
byte *rgb = (byte *)_surface->getPixels();
while (linesToChange--) {
CHECK_STREAM_PTR(2);
- pixelPtr = rowPtr + 4 * (stream->readByte() - 1);
+ pixelPtr = rowPtr + 4 * (stream.readByte() - 1);
- for (int8 rleCode = stream->readSByte(); rleCode != -1; rleCode = stream->readSByte()) {
+ for (int8 rleCode = stream.readSByte(); rleCode != -1; rleCode = stream.readSByte()) {
if (rleCode == 0) {
// there's another skip code in the stream
CHECK_STREAM_PTR(1);
- pixelPtr += 4 * (stream->readByte() - 1);
+ pixelPtr += 4 * (stream.readByte() - 1);
} else if (rleCode < 0) {
// decode the run length code
rleCode = -rleCode;
@@ -186,7 +186,7 @@ void QTRLEDecoder::decode8(Common::SeekableReadStream *stream, uint32 rowPtr, ui
byte pi[4]; // 4 palette indexes
for (byte i = 0; i < 4; i++)
- pi[i] = stream->readByte();
+ pi[i] = stream.readByte();
CHECK_PIXEL_PTR(rleCode * 4);
@@ -200,7 +200,7 @@ void QTRLEDecoder::decode8(Common::SeekableReadStream *stream, uint32 rowPtr, ui
CHECK_PIXEL_PTR(rleCode);
while (rleCode--)
- rgb[pixelPtr++] = stream->readByte();
+ rgb[pixelPtr++] = stream.readByte();
}
}
@@ -208,25 +208,25 @@ void QTRLEDecoder::decode8(Common::SeekableReadStream *stream, uint32 rowPtr, ui
}
}
-void QTRLEDecoder::decode16(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange) {
+void QTRLEDecoder::decode16(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange) {
uint32 pixelPtr = 0;
uint16 *rgb = (uint16 *)_surface->getPixels();
while (linesToChange--) {
CHECK_STREAM_PTR(2);
- pixelPtr = rowPtr + stream->readByte() - 1;
+ pixelPtr = rowPtr + stream.readByte() - 1;
- for (int8 rleCode = stream->readSByte(); rleCode != -1; rleCode = stream->readSByte()) {
+ for (int8 rleCode = stream.readSByte(); rleCode != -1; rleCode = stream.readSByte()) {
if (rleCode == 0) {
// there's another skip code in the stream
CHECK_STREAM_PTR(1);
- pixelPtr += stream->readByte() - 1;
+ pixelPtr += stream.readByte() - 1;
} else if (rleCode < 0) {
// decode the run length code
rleCode = -rleCode;
CHECK_STREAM_PTR(2);
- uint16 rgb16 = stream->readUint16BE();
+ uint16 rgb16 = stream.readUint16BE();
CHECK_PIXEL_PTR(rleCode);
@@ -238,7 +238,7 @@ void QTRLEDecoder::decode16(Common::SeekableReadStream *stream, uint32 rowPtr, u
// copy pixels directly to output
while (rleCode--)
- rgb[pixelPtr++] = stream->readUint16BE();
+ rgb[pixelPtr++] = stream.readUint16BE();
}
}
@@ -246,28 +246,28 @@ void QTRLEDecoder::decode16(Common::SeekableReadStream *stream, uint32 rowPtr, u
}
}
-void QTRLEDecoder::decode24(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange) {
+void QTRLEDecoder::decode24(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange) {
uint32 pixelPtr = 0;
uint32 *rgb = (uint32 *)_surface->getPixels();
while (linesToChange--) {
CHECK_STREAM_PTR(2);
- pixelPtr = rowPtr + stream->readByte() - 1;
+ pixelPtr = rowPtr + stream.readByte() - 1;
- for (int8 rleCode = stream->readSByte(); rleCode != -1; rleCode = stream->readSByte()) {
+ for (int8 rleCode = stream.readSByte(); rleCode != -1; rleCode = stream.readSByte()) {
if (rleCode == 0) {
// there's another skip code in the stream
CHECK_STREAM_PTR(1);
- pixelPtr += stream->readByte() - 1;
+ pixelPtr += stream.readByte() - 1;
} else if (rleCode < 0) {
// decode the run length code
rleCode = -rleCode;
CHECK_STREAM_PTR(3);
- byte r = stream->readByte();
- byte g = stream->readByte();
- byte b = stream->readByte();
+ byte r = stream.readByte();
+ byte g = stream.readByte();
+ byte b = stream.readByte();
uint32 color = _surface->format.RGBToColor(r, g, b);
CHECK_PIXEL_PTR(rleCode);
@@ -280,9 +280,9 @@ void QTRLEDecoder::decode24(Common::SeekableReadStream *stream, uint32 rowPtr, u
// copy pixels directly to output
while (rleCode--) {
- byte r = stream->readByte();
- byte g = stream->readByte();
- byte b = stream->readByte();
+ byte r = stream.readByte();
+ byte g = stream.readByte();
+ byte b = stream.readByte();
rgb[pixelPtr++] = _surface->format.RGBToColor(r, g, b);
}
}
@@ -292,29 +292,29 @@ void QTRLEDecoder::decode24(Common::SeekableReadStream *stream, uint32 rowPtr, u
}
}
-void QTRLEDecoder::decode32(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange) {
+void QTRLEDecoder::decode32(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange) {
uint32 pixelPtr = 0;
uint32 *rgb = (uint32 *)_surface->getPixels();
while (linesToChange--) {
CHECK_STREAM_PTR(2);
- pixelPtr = rowPtr + stream->readByte() - 1;
+ pixelPtr = rowPtr + stream.readByte() - 1;
- for (int8 rleCode = stream->readSByte(); rleCode != -1; rleCode = stream->readSByte()) {
+ for (int8 rleCode = stream.readSByte(); rleCode != -1; rleCode = stream.readSByte()) {
if (rleCode == 0) {
// there's another skip code in the stream
CHECK_STREAM_PTR(1);
- pixelPtr += stream->readByte() - 1;
+ pixelPtr += stream.readByte() - 1;
} else if (rleCode < 0) {
// decode the run length code
rleCode = -rleCode;
CHECK_STREAM_PTR(4);
- byte a = stream->readByte();
- byte r = stream->readByte();
- byte g = stream->readByte();
- byte b = stream->readByte();
+ byte a = stream.readByte();
+ byte r = stream.readByte();
+ byte g = stream.readByte();
+ byte b = stream.readByte();
uint32 color = _surface->format.ARGBToColor(a, r, g, b);
CHECK_PIXEL_PTR(rleCode);
@@ -327,10 +327,10 @@ void QTRLEDecoder::decode32(Common::SeekableReadStream *stream, uint32 rowPtr, u
// copy pixels directly to output
while (rleCode--) {
- byte a = stream->readByte();
- byte r = stream->readByte();
- byte g = stream->readByte();
- byte b = stream->readByte();
+ byte a = stream.readByte();
+ byte r = stream.readByte();
+ byte g = stream.readByte();
+ byte b = stream.readByte();
rgb[pixelPtr++] = _surface->format.ARGBToColor(a, r, g, b);
}
}
@@ -340,29 +340,29 @@ void QTRLEDecoder::decode32(Common::SeekableReadStream *stream, uint32 rowPtr, u
}
}
-const Graphics::Surface *QTRLEDecoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *QTRLEDecoder::decodeFrame(Common::SeekableReadStream &stream) {
uint16 startLine = 0;
uint16 height = _surface->h;
// check if this frame is even supposed to change
- if (stream->size() < 8)
+ if (stream.size() < 8)
return _surface;
// start after the chunk size
- stream->readUint32BE();
+ stream.readUint32BE();
// fetch the header
- uint16 header = stream->readUint16BE();
+ uint16 header = stream.readUint16BE();
// if a header is present, fetch additional decoding parameters
if (header & 8) {
- if (stream->size() < 14)
+ if (stream.size() < 14)
return _surface;
- startLine = stream->readUint16BE();
- stream->readUint16BE(); // Unknown
- height = stream->readUint16BE();
- stream->readUint16BE(); // Unknown
+ startLine = stream.readUint16BE();
+ stream.readUint16BE(); // Unknown
+ height = stream.readUint16BE();
+ stream.readUint16BE(); // Unknown
}
uint32 rowPtr = _surface->w * startLine;
diff --git a/image/codecs/qtrle.h b/image/codecs/qtrle.h
index c16daa0349..7ef89537cf 100644
--- a/image/codecs/qtrle.h
+++ b/image/codecs/qtrle.h
@@ -39,7 +39,7 @@ public:
QTRLEDecoder(uint16 width, uint16 height, byte bitsPerPixel);
~QTRLEDecoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const;
private:
@@ -47,12 +47,12 @@ private:
Graphics::Surface *_surface;
- void decode1(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange);
- void decode2_4(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange, byte bpp);
- void decode8(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange);
- void decode16(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange);
- void decode24(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange);
- void decode32(Common::SeekableReadStream *stream, uint32 rowPtr, uint32 linesToChange);
+ void decode1(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange);
+ void decode2_4(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange, byte bpp);
+ void decode8(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange);
+ void decode16(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange);
+ void decode24(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange);
+ void decode32(Common::SeekableReadStream &stream, uint32 rowPtr, uint32 linesToChange);
};
} // End of namespace Image
diff --git a/image/codecs/rpza.cpp b/image/codecs/rpza.cpp
index ecd930f785..5aeee7c90b 100644
--- a/image/codecs/rpza.cpp
+++ b/image/codecs/rpza.cpp
@@ -61,7 +61,7 @@ RPZADecoder::~RPZADecoder() {
WRITE_UINT16((uint16 *)_surface->getPixels() + blockPtr, color); \
blockPtr++
-const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *RPZADecoder::decodeFrame(Common::SeekableReadStream &stream) {
uint16 colorA = 0, colorB = 0;
uint16 color4[4];
@@ -73,40 +73,40 @@ const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *st
uint16 tb;
// First byte is always 0xe1. Warn if it's different
- byte firstByte = stream->readByte();
+ byte firstByte = stream.readByte();
if (firstByte != 0xe1)
warning("First RPZA chunk byte is 0x%02x instead of 0xe1", firstByte);
// Get chunk size, ingnoring first byte
- uint32 chunkSize = stream->readUint16BE() << 8;
- chunkSize += stream->readByte();
+ uint32 chunkSize = stream.readUint16BE() << 8;
+ chunkSize += stream.readByte();
// If length mismatch use size from MOV file and try to decode anyway
- if (chunkSize != (uint32)stream->size()) {
+ if (chunkSize != (uint32)stream.size()) {
warning("MOV chunk size != encoded chunk size; using MOV chunk size");
- chunkSize = stream->size();
+ chunkSize = stream.size();
}
// Number of 4x4 blocks in frame
int32 totalBlocks = ((_surface->w + 3) / 4) * ((_surface->h + 3) / 4);
// Process chunk data
- while ((uint32)stream->pos() < chunkSize) {
- byte opcode = stream->readByte(); // Get opcode
+ while ((uint32)stream.pos() < chunkSize) {
+ byte opcode = stream.readByte(); // Get opcode
byte numBlocks = (opcode & 0x1f) + 1; // Extract block counter from opcode
// If opcode MSbit is 0, we need more data to decide what to do
if ((opcode & 0x80) == 0) {
- colorA = (opcode << 8) | stream->readByte();
+ colorA = (opcode << 8) | stream.readByte();
opcode = 0;
- if (stream->readByte() & 0x80) {
+ if (stream.readByte() & 0x80) {
// Must behave as opcode 110xxxxx, using colorA computed
// above. Use fake opcode 0x20 to enter switch block at
// the right place
opcode = 0x20;
numBlocks = 1;
}
- stream->seek(-1, SEEK_CUR);
+ stream.seek(-1, SEEK_CUR);
}
switch (opcode & 0xe0) {
@@ -116,7 +116,7 @@ const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *st
}
break;
case 0xa0: // Fill blocks with one color
- colorA = stream->readUint16BE();
+ colorA = stream.readUint16BE();
while (numBlocks--) {
blockPtr = rowPtr + pixelPtr;
for (byte pixel_y = 0; pixel_y < 4; pixel_y++) {
@@ -131,9 +131,9 @@ const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *st
// Fill blocks with 4 colors
case 0xc0:
- colorA = stream->readUint16BE();
+ colorA = stream.readUint16BE();
case 0x20:
- colorB = stream->readUint16BE();
+ colorB = stream.readUint16BE();
// Sort out the colors
color4[0] = colorB;
@@ -162,7 +162,7 @@ const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *st
while (numBlocks--) {
blockPtr = rowPtr + pixelPtr;
for (byte pixel_y = 0; pixel_y < 4; pixel_y++) {
- byte index = stream->readByte();
+ byte index = stream.readByte();
for (byte pixel_x = 0; pixel_x < 4; pixel_x++) {
byte idx = (index >> (2 * (3 - pixel_x))) & 0x03;
PUT_PIXEL(color4[idx]);
@@ -180,7 +180,7 @@ const Graphics::Surface *RPZADecoder::decodeImage(Common::SeekableReadStream *st
for (byte pixel_x = 0; pixel_x < 4; pixel_x++) {
// We already have color of upper left pixel
if (pixel_y != 0 || pixel_x != 0)
- colorA = stream->readUint16BE();
+ colorA = stream.readUint16BE();
PUT_PIXEL(colorA);
}
diff --git a/image/codecs/rpza.h b/image/codecs/rpza.h
index f87ee1113a..62f4c02df5 100644
--- a/image/codecs/rpza.h
+++ b/image/codecs/rpza.h
@@ -39,7 +39,7 @@ public:
RPZADecoder(uint16 width, uint16 height);
~RPZADecoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat(2, 5, 5, 5, 0, 10, 5, 0, 0); }
private:
diff --git a/image/codecs/smc.cpp b/image/codecs/smc.cpp
index 434a1058b7..54493d0c34 100644
--- a/image/codecs/smc.cpp
+++ b/image/codecs/smc.cpp
@@ -29,7 +29,7 @@
namespace Image {
#define GET_BLOCK_COUNT() \
- (opcode & 0x10) ? (1 + stream->readByte()) : 1 + (opcode & 0x0F);
+ (opcode & 0x10) ? (1 + stream.readByte()) : 1 + (opcode & 0x0F);
#define ADVANCE_BLOCK() \
{ \
@@ -55,7 +55,7 @@ SMCDecoder::~SMCDecoder() {
delete _surface;
}
-const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *SMCDecoder::decodeFrame(Common::SeekableReadStream &stream) {
byte *pixels = (byte *)_surface->getPixels();
uint32 numBlocks = 0;
@@ -77,9 +77,9 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
uint32 colorOctetIndex = 0;
uint32 colorTableIndex = 0; // indices to color pair, quad, or octet tables
- int32 chunkSize = stream->readUint32BE() & 0x00FFFFFF;
- if (chunkSize != stream->size())
- warning("MOV chunk size != SMC chunk size (%d != %d); ignoring SMC chunk size", chunkSize, stream->size());
+ int32 chunkSize = stream.readUint32BE() & 0x00FFFFFF;
+ if (chunkSize != stream.size())
+ warning("MOV chunk size != SMC chunk size (%d != %d); ignoring SMC chunk size", chunkSize, stream.size());
int32 totalBlocks = ((_surface->w + 3) / 4) * ((_surface->h + 3) / 4);
@@ -88,8 +88,8 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
// sanity checks
// make sure stream ptr hasn't gone out of bounds
- if (stream->pos() > stream->size()) {
- warning("SMC decoder just went out of bounds (stream ptr = %d, chunk size = %d)", stream->pos(), stream->size());
+ if (stream.pos() > stream.size()) {
+ warning("SMC decoder just went out of bounds (stream ptr = %d, chunk size = %d)", stream.pos(), stream.size());
return _surface;
}
@@ -99,7 +99,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
return _surface;
}
- byte opcode = stream->readByte();
+ byte opcode = stream.readByte();
switch (opcode & 0xF0) {
// skip n blocks
@@ -192,7 +192,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
case 0x60:
case 0x70:
numBlocks = GET_BLOCK_COUNT();
- pixel = stream->readByte();
+ pixel = stream.readByte();
while (numBlocks--) {
blockPtr = rowPtr + pixelPtr;
@@ -216,7 +216,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
// fetch the next 2 colors from bytestream and store in next
// available entry in the color pair table
for (byte i = 0; i < CPAIR; i++) {
- pixel = stream->readByte();
+ pixel = stream.readByte();
colorTableIndex = CPAIR * colorPairIndex + i;
_colorPairs[colorTableIndex] = pixel;
}
@@ -229,10 +229,10 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
if (colorPairIndex == COLORS_PER_TABLE)
colorPairIndex = 0;
} else
- colorTableIndex = CPAIR * stream->readByte();
+ colorTableIndex = CPAIR * stream.readByte();
while (numBlocks--) {
- colorFlags = stream->readUint16BE();
+ colorFlags = stream.readUint16BE();
uint16 flagMask = 0x8000;
blockPtr = rowPtr + pixelPtr;
for (byte y = 0; y < 4; y++) {
@@ -262,7 +262,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
// fetch the next 4 colors from bytestream and store in next
// available entry in the color quad table
for (byte i = 0; i < CQUAD; i++) {
- pixel = stream->readByte();
+ pixel = stream.readByte();
colorTableIndex = CQUAD * colorQuadIndex + i;
_colorQuads[colorTableIndex] = pixel;
}
@@ -275,10 +275,10 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
if (colorQuadIndex == COLORS_PER_TABLE)
colorQuadIndex = 0;
} else
- colorTableIndex = CQUAD * stream->readByte();
+ colorTableIndex = CQUAD * stream.readByte();
while (numBlocks--) {
- colorFlags = stream->readUint32BE();
+ colorFlags = stream.readUint32BE();
// flag mask actually acts as a bit shift count here
byte flagMask = 30;
@@ -306,7 +306,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
// fetch the next 8 colors from bytestream and store in next
// available entry in the color octet table
for (byte i = 0; i < COCTET; i++) {
- pixel = stream->readByte();
+ pixel = stream.readByte();
colorTableIndex = COCTET * colorOctetIndex + i;
_colorOctets[colorTableIndex] = pixel;
}
@@ -319,7 +319,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
if (colorOctetIndex == COLORS_PER_TABLE)
colorOctetIndex = 0;
} else
- colorTableIndex = COCTET * stream->readByte();
+ colorTableIndex = COCTET * stream.readByte();
while (numBlocks--) {
/*
@@ -331,7 +331,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
// build the color flags
byte flagData[6];
- stream->read(flagData, 6);
+ stream.read(flagData, 6);
colorFlagsA = ((READ_BE_UINT16(flagData) & 0xFFF0) << 8) | (READ_BE_UINT16(flagData + 2) >> 4);
colorFlagsB = ((READ_BE_UINT16(flagData + 4) & 0xFFF0) << 8) | ((flagData[1] & 0xF) << 8) |
@@ -369,7 +369,7 @@ const Graphics::Surface *SMCDecoder::decodeImage(Common::SeekableReadStream *str
blockPtr = rowPtr + pixelPtr;
for (byte y = 0; y < 4; y++) {
for (byte x = 0; x < 4; x++)
- pixels[blockPtr++] = stream->readByte();
+ pixels[blockPtr++] = stream.readByte();
blockPtr += rowInc;
}
diff --git a/image/codecs/smc.h b/image/codecs/smc.h
index 2de1f69ce4..579d629a1c 100644
--- a/image/codecs/smc.h
+++ b/image/codecs/smc.h
@@ -45,7 +45,7 @@ public:
SMCDecoder(uint16 width, uint16 height);
~SMCDecoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat::createFormatCLUT8(); }
private:
diff --git a/image/codecs/svq1.cpp b/image/codecs/svq1.cpp
index 550445bc64..765d512797 100644
--- a/image/codecs/svq1.cpp
+++ b/image/codecs/svq1.cpp
@@ -91,10 +91,10 @@ SVQ1Decoder::~SVQ1Decoder() {
#define ALIGN(x, a) (((x)+(a)-1)&~((a)-1))
-const Graphics::Surface *SVQ1Decoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *SVQ1Decoder::decodeFrame(Common::SeekableReadStream &stream) {
debug(1, "SVQ1Decoder::decodeImage()");
- Common::BitStream32BEMSB frameData(*stream);
+ Common::BitStream32BEMSB frameData(stream);
uint32 frameCode = frameData.getBits(22);
debug(1, " frameCode: %d", frameCode);
diff --git a/image/codecs/svq1.h b/image/codecs/svq1.h
index 56310a1a38..687f7615d4 100644
--- a/image/codecs/svq1.h
+++ b/image/codecs/svq1.h
@@ -44,7 +44,7 @@ public:
SVQ1Decoder(uint16 width, uint16 height);
~SVQ1Decoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const { return _surface->format; }
private:
diff --git a/image/codecs/truemotion1.cpp b/image/codecs/truemotion1.cpp
index 3b8ad85606..1302d72e2f 100644
--- a/image/codecs/truemotion1.cpp
+++ b/image/codecs/truemotion1.cpp
@@ -163,9 +163,9 @@ void TrueMotion1Decoder::genVectorTable16(const byte *selVectorTable) {
}
}
-void TrueMotion1Decoder::decodeHeader(Common::SeekableReadStream *stream) {
- _buf = new byte[stream->size()];
- stream->read(_buf, stream->size());
+void TrueMotion1Decoder::decodeHeader(Common::SeekableReadStream &stream) {
+ _buf = new byte[stream.size()];
+ stream.read(_buf, stream.size());
byte headerBuffer[128]; // logical maximum size of the header
const byte *selVectorTable;
@@ -243,7 +243,7 @@ void TrueMotion1Decoder::decodeHeader(Common::SeekableReadStream *stream) {
_indexStream = _mbChangeBits + _mbChangeBitsRowSize * (_height >> 2);
}
- _indexStreamSize = stream->size() - (_indexStream - _buf);
+ _indexStreamSize = stream.size() - (_indexStream - _buf);
_lastDeltaset = _header.deltaset;
_lastVectable = _header.vectable;
@@ -397,7 +397,7 @@ void TrueMotion1Decoder::decode16() {
}
}
-const Graphics::Surface *TrueMotion1Decoder::decodeImage(Common::SeekableReadStream *stream) {
+const Graphics::Surface *TrueMotion1Decoder::decodeFrame(Common::SeekableReadStream &stream) {
decodeHeader(stream);
if (compressionTypes[_header.compression].algorithm == ALGO_NOP) {
diff --git a/image/codecs/truemotion1.h b/image/codecs/truemotion1.h
index e836ddb0e4..bb87dbc32c 100644
--- a/image/codecs/truemotion1.h
+++ b/image/codecs/truemotion1.h
@@ -43,7 +43,7 @@ public:
TrueMotion1Decoder(uint16 width, uint16 height);
~TrueMotion1Decoder();
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
// Always return RGB565
Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat(2, 5, 6, 5, 0, 11, 5, 0, 0); }
@@ -96,7 +96,7 @@ private:
} _header;
void selectDeltaTables(int deltaTableIndex);
- void decodeHeader(Common::SeekableReadStream *stream);
+ void decodeHeader(Common::SeekableReadStream &stream);
void decode16();
int makeYdt16Entry(int p1, int p2);
int makeCdt16Entry(int p1, int p2);
diff --git a/image/jpeg.cpp b/image/jpeg.cpp
index 3602d501be..1ce45f2539 100644
--- a/image/jpeg.cpp
+++ b/image/jpeg.cpp
@@ -59,8 +59,8 @@ void JPEGDecoder::destroy() {
_surface.free();
}
-const Graphics::Surface *JPEGDecoder::decodeImage(Common::SeekableReadStream *stream) {
- if (!loadStream(*stream))
+const Graphics::Surface *JPEGDecoder::decodeFrame(Common::SeekableReadStream &stream) {
+ if (!loadStream(stream))
return 0;
return getSurface();
diff --git a/image/jpeg.h b/image/jpeg.h
index 1bf76ecfca..dea799c31f 100644
--- a/image/jpeg.h
+++ b/image/jpeg.h
@@ -58,7 +58,7 @@ public:
virtual const Graphics::Surface *getSurface() const;
// Codec API
- const Graphics::Surface *decodeImage(Common::SeekableReadStream *stream);
+ const Graphics::Surface *decodeFrame(Common::SeekableReadStream &stream);
Graphics::PixelFormat getPixelFormat() const;
// Special API for JPEG
diff --git a/video/avi_decoder.cpp b/video/avi_decoder.cpp
index 5e404ecaac..e9c6ef93b2 100644
--- a/video/avi_decoder.cpp
+++ b/video/avi_decoder.cpp
@@ -711,7 +711,7 @@ AVIDecoder::AVIVideoTrack::~AVIVideoTrack() {
void AVIDecoder::AVIVideoTrack::decodeFrame(Common::SeekableReadStream *stream) {
if (stream) {
if (_videoCodec)
- _lastFrame = _videoCodec->decodeImage(stream);
+ _lastFrame = _videoCodec->decodeFrame(*stream);
} else {
// Empty frame
_lastFrame = 0;
diff --git a/video/coktel_decoder.cpp b/video/coktel_decoder.cpp
index e01c5f3827..21dda15cd0 100644
--- a/video/coktel_decoder.cpp
+++ b/video/coktel_decoder.cpp
@@ -2262,7 +2262,7 @@ bool VMDDecoder::renderFrame(Common::Rect &rect) {
return false;
Common::MemoryReadStream frameStream(_videoBuffer[0], _videoBufferLen[0]);
- const Graphics::Surface *codecSurf = _codec->decodeImage(&frameStream);
+ const Graphics::Surface *codecSurf = _codec->decodeFrame(frameStream);
if (!codecSurf)
return false;
diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp
index 20c20d05b1..cd3679615b 100644
--- a/video/qt_decoder.cpp
+++ b/video/qt_decoder.cpp
@@ -725,7 +725,7 @@ const Graphics::Surface *QuickTimeDecoder::VideoTrackHandler::bufferNextFrame()
return 0;
}
- const Graphics::Surface *frame = entry->_videoCodec->decodeImage(frameData);
+ const Graphics::Surface *frame = entry->_videoCodec->decodeFrame(*frameData);
delete frameData;
// Update the palette