aboutsummaryrefslogtreecommitdiff
path: root/video
diff options
context:
space:
mode:
authorMatthew Hoops2011-04-13 16:04:29 -0400
committerMatthew Hoops2011-04-13 16:04:29 -0400
commit6d153f311c65fe414e31e99f8a9a6503c49a01a5 (patch)
tree9173f9964c0fec4215514e622f705810730d0ce9 /video
parent47c2a9adbe8d9e6640a819386f0f34e929937672 (diff)
parent66b43f2312578f35e0718d0699de207a7bf77f1a (diff)
downloadscummvm-rg350-6d153f311c65fe414e31e99f8a9a6503c49a01a5.tar.gz
scummvm-rg350-6d153f311c65fe414e31e99f8a9a6503c49a01a5.tar.bz2
scummvm-rg350-6d153f311c65fe414e31e99f8a9a6503c49a01a5.zip
Merge remote branch 'upstream/master' into t7g-ios
Conflicts: video/qt_decoder.cpp
Diffstat (limited to 'video')
-rw-r--r--video/avi_decoder.h54
-rw-r--r--video/codecs/cdtoons.cpp14
-rw-r--r--video/codecs/indeo3.cpp2
-rw-r--r--video/coktel_decoder.cpp29
-rw-r--r--video/coktel_decoder.h2
-rw-r--r--video/dxa_decoder.cpp8
-rw-r--r--video/qt_decoder.cpp16
-rw-r--r--video/smk_decoder.cpp6
8 files changed, 55 insertions, 76 deletions
diff --git a/video/avi_decoder.h b/video/avi_decoder.h
index c2551454db..33189910c7 100644
--- a/video/avi_decoder.h
+++ b/video/avi_decoder.h
@@ -37,35 +37,35 @@ namespace Video {
// IDs used throughout the AVI files
// that will be handled by this player
-#define ID_RIFF MKID_BE('RIFF')
-#define ID_AVI MKID_BE('AVI ')
-#define ID_LIST MKID_BE('LIST')
-#define ID_HDRL MKID_BE('hdrl')
-#define ID_AVIH MKID_BE('avih')
-#define ID_STRL MKID_BE('strl')
-#define ID_STRH MKID_BE('strh')
-#define ID_VIDS MKID_BE('vids')
-#define ID_AUDS MKID_BE('auds')
-#define ID_MIDS MKID_BE('mids')
-#define ID_TXTS MKID_BE('txts')
-#define ID_JUNK MKID_BE('JUNK')
-#define ID_STRF MKID_BE('strf')
-#define ID_MOVI MKID_BE('movi')
-#define ID_REC MKID_BE('rec ')
-#define ID_VEDT MKID_BE('vedt')
-#define ID_IDX1 MKID_BE('idx1')
-#define ID_STRD MKID_BE('strd')
-#define ID_00AM MKID_BE('00AM')
-//#define ID_INFO MKID_BE('INFO')
+#define ID_RIFF MKTAG('R','I','F','F')
+#define ID_AVI MKTAG('A','V','I',' ')
+#define ID_LIST MKTAG('L','I','S','T')
+#define ID_HDRL MKTAG('h','d','r','l')
+#define ID_AVIH MKTAG('a','v','i','h')
+#define ID_STRL MKTAG('s','t','r','l')
+#define ID_STRH MKTAG('s','t','r','h')
+#define ID_VIDS MKTAG('v','i','d','s')
+#define ID_AUDS MKTAG('a','u','d','s')
+#define ID_MIDS MKTAG('m','i','d','s')
+#define ID_TXTS MKTAG('t','x','t','s')
+#define ID_JUNK MKTAG('J','U','N','K')
+#define ID_STRF MKTAG('s','t','r','f')
+#define ID_MOVI MKTAG('m','o','v','i')
+#define ID_REC MKTAG('r','e','c',' ')
+#define ID_VEDT MKTAG('v','e','d','t')
+#define ID_IDX1 MKTAG('i','d','x','1')
+#define ID_STRD MKTAG('s','t','r','d')
+#define ID_00AM MKTAG('0','0','A','M')
+//#define ID_INFO MKTAG('I','N','F','O')
// Codec tags
-#define ID_RLE MKID_BE('RLE ')
-#define ID_CRAM MKID_BE('CRAM')
-#define ID_MSVC MKID_BE('msvc')
-#define ID_WHAM MKID_BE('WHAM')
-#define ID_CVID MKID_BE('cvid')
-#define ID_IV32 MKID_BE('iv32')
-#define ID_DUCK MKID_BE('DUCK')
+#define ID_RLE MKTAG('R','L','E',' ')
+#define ID_CRAM MKTAG('C','R','A','M')
+#define ID_MSVC MKTAG('m','s','v','c')
+#define ID_WHAM MKTAG('W','H','A','M')
+#define ID_CVID MKTAG('c','v','i','d')
+#define ID_IV32 MKTAG('i','v','3','2')
+#define ID_DUCK MKTAG('D','U','C','K')
struct BITMAPINFOHEADER {
uint32 size;
diff --git a/video/codecs/cdtoons.cpp b/video/codecs/cdtoons.cpp
index eaa8f53602..bdca5f9c80 100644
--- a/video/codecs/cdtoons.cpp
+++ b/video/codecs/cdtoons.cpp
@@ -170,7 +170,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
nextPos += size;
switch (tag) {
- case MKID_BE('Diff'):
+ case MKTAG('D','i','f','f'):
{
debugN(5, "CDToons: Diff\n");
uint16 count = stream->readUint16BE();
@@ -206,7 +206,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
}
}
break;
- case MKID_BE('XFrm'):
+ case MKTAG('X','F','r','m'):
{
debugN(5, "CDToons: XFrm\n");
if (!(flags & 0x10))
@@ -229,7 +229,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
dirtyRect2XFrm.left, dirtyRect2XFrm.top, dirtyRect2XFrm.right, dirtyRect2XFrm.bottom);
}
break;
- case MKID_BE('Mrks'):
+ case MKTAG('M','r','k','s'):
debugN(5, "CDToons: Mrks\n");
if (!(flags & 0x2))
error("CDToons: useless Mrks?");
@@ -237,14 +237,14 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
// TODO
warning("CDToons: encountered Mrks, not implemented yet");
break;
- case MKID_BE('Scal'):
+ case MKTAG('S','c','a','l'):
// TODO
warning("CDToons: encountered Scal, not implemented yet");
break;
- case MKID_BE('WrMp'):
+ case MKTAG('W','r','M','p'):
warning("CDToons: encountered WrMp, ignoring");
break;
- case MKID_BE('FrtR'):
+ case MKTAG('F','r','t','R'):
{
debugN(5, "CDToons: FrtR\n");
if (!(flags & 0x40))
@@ -259,7 +259,7 @@ Graphics::Surface *CDToonsDecoder::decodeImage(Common::SeekableReadStream *strea
}
}
break;
- case MKID_BE('BckR'):
+ case MKTAG('B','c','k','R'):
{
debugN(5, "CDToons: BckR\n");
if (!(flags & 0x20))
diff --git a/video/codecs/indeo3.cpp b/video/codecs/indeo3.cpp
index d9dde1e8e5..e7f470bd3a 100644
--- a/video/codecs/indeo3.cpp
+++ b/video/codecs/indeo3.cpp
@@ -85,7 +85,7 @@ bool Indeo3Decoder::isIndeo3(Common::SeekableReadStream &stream) {
return false;
// These 4 uint32s XOR'd need to spell "FRMH"
- if ((id0 ^ id1 ^ id2 ^ id3) != MKID_BE('FRMH'))
+ if ((id0 ^ id1 ^ id2 ^ id3) != MKTAG('F','R','M','H'))
return false;
return true;
diff --git a/video/coktel_decoder.cpp b/video/coktel_decoder.cpp
index b2d64bfb3c..0ab12e91cc 100644
--- a/video/coktel_decoder.cpp
+++ b/video/coktel_decoder.cpp
@@ -34,9 +34,10 @@
#include "audio/audiostream.h"
#include "audio/decoders/raw.h"
+#include "audio/decoders/adpcm_intern.h"
#include "common/memstream.h"
-static const uint32 kVideoCodecIndeo3 = MKID_BE('iv32');
+static const uint32 kVideoCodecIndeo3 = MKTAG('i','v','3','2');
namespace Video {
@@ -1516,26 +1517,6 @@ const uint16 VMDDecoder::_tableDPCM[128] = {
0x0F00, 0x1000, 0x1400, 0x1800, 0x1C00, 0x2000, 0x3000, 0x4000
};
-const int32 VMDDecoder::_tableADPCM[] = {
- 7, 8, 9, 10, 11, 12, 13, 14,
- 16, 17, 19, 21, 23, 25, 28, 31,
- 34, 37, 41, 45, 50, 55, 60, 66,
- 73, 80, 88, 97, 107, 118, 130, 143,
- 157, 173, 190, 209, 230, 253, 279, 307,
- 337, 371, 408, 449, 494, 544, 598, 658,
- 724, 796, 876, 963, 1060, 1166, 1282, 1411,
- 1552, 1707, 1878, 2066, 2272, 2499, 2749, 3024,
- 3327, 3660, 4026, 4428, 4871, 5358, 5894, 6484,
- 7132, 7845, 8630, 9493, 10442, 11487, 12635, 13899,
- 15289, 16818, 18500, 20350, 22385, 24623, 27086, 29794,
- 32767, 0
-};
-
-const int32 VMDDecoder::_tableADPCMStep[] = {
- -1, -1, -1, -1, 2, 4, 6, 8,
- -1, -1, -1, -1, 2, 4, 6, 8
-};
-
VMDDecoder::VMDDecoder(Audio::Mixer *mixer, Audio::Mixer::SoundType soundType) : CoktelDecoder(mixer, soundType),
_stream(0), _version(0), _flags(0), _frameInfoOffset(0), _partsPerFrame(0), _frames(0),
_soundFlags(0), _soundFreq(0), _soundSliceSize(0), _soundSlicesCount(0),
@@ -2617,7 +2598,7 @@ byte *VMDDecoder::deADPCM(const byte *data, uint32 &size, int32 init, int32 inde
index = CLIP<int32>(index, 0, 88);
- int32 predictor = _tableADPCM[index];
+ int32 predictor = Audio::Ima_ADPCMStream::_imaTable[index];
uint32 dataByte = 0;
bool newByte = true;
@@ -2634,7 +2615,7 @@ byte *VMDDecoder::deADPCM(const byte *data, uint32 &size, int32 init, int32 inde
newByte = !newByte;
- index += _tableADPCMStep[code];
+ index += Audio::ADPCMStream::_stepAdjustTable[code];
index = CLIP<int32>(index, 0, 88);
int32 value = predictor / 8;
@@ -2653,7 +2634,7 @@ byte *VMDDecoder::deADPCM(const byte *data, uint32 &size, int32 init, int32 inde
init = CLIP<int32>(init, -32768, 32767);
- predictor = _tableADPCM[index];
+ predictor = Audio::Ima_ADPCMStream::_imaTable[index];
*out++ = TO_BE_16(init);
}
diff --git a/video/coktel_decoder.h b/video/coktel_decoder.h
index 9c8263be9d..e83e1d29ed 100644
--- a/video/coktel_decoder.h
+++ b/video/coktel_decoder.h
@@ -431,8 +431,6 @@ private:
// Tables for the audio decompressors
static const uint16 _tableDPCM[128];
- static const int32 _tableADPCM[];
- static const int32 _tableADPCMStep[];
Common::SeekableReadStream *_stream;
diff --git a/video/dxa_decoder.cpp b/video/dxa_decoder.cpp
index 62c2622437..a64b8f6fee 100644
--- a/video/dxa_decoder.cpp
+++ b/video/dxa_decoder.cpp
@@ -73,7 +73,7 @@ bool DXADecoder::loadStream(Common::SeekableReadStream *stream) {
_fileStream = stream;
uint32 tag = _fileStream->readUint32BE();
- assert(tag == MKID_BE('DEXA'));
+ assert(tag == MKTAG('D','E','X','A'));
uint8 flags = _fileStream->readByte();
_frameCount = _fileStream->readUint16BE();
@@ -136,7 +136,7 @@ bool DXADecoder::loadStream(Common::SeekableReadStream *stream) {
switch (tag) {
case 0: // No more tags
break;
- case MKID_BE('MAXD'):
+ case MKTAG('M','A','X','D'):
assert(size == 4);
_decompBufferSize = _fileStream->readUint32BE();
break;
@@ -479,13 +479,13 @@ void DXADecoder::decode13(int size) {
const Graphics::Surface *DXADecoder::decodeNextFrame() {
uint32 tag = _fileStream->readUint32BE();
- if (tag == MKID_BE('CMAP')) {
+ if (tag == MKTAG('C','M','A','P')) {
_fileStream->read(_palette, 256 * 3);
_dirtyPalette = true;
}
tag = _fileStream->readUint32BE();
- if (tag == MKID_BE('FRAM')) {
+ if (tag == MKTAG('F','R','A','M')) {
byte type = _fileStream->readByte();
uint32 size = _fileStream->readUint32BE();
if ((_inBuffer == NULL) || (_inBufferSize < size)) {
diff --git a/video/qt_decoder.cpp b/video/qt_decoder.cpp
index 414073bccc..8ff7c8a7a4 100644
--- a/video/qt_decoder.cpp
+++ b/video/qt_decoder.cpp
@@ -201,28 +201,28 @@ void QuickTimeDecoder::seekToTime(Audio::Timestamp time) {
}
Codec *QuickTimeDecoder::createCodec(uint32 codecTag, byte bitsPerPixel) {
- if (codecTag == MKID_BE('cvid')) {
+ if (codecTag == MKTAG('c','v','i','d')) {
// Cinepak: As used by most Myst and all Riven videos as well as some Myst ME videos. "The Chief" videos also use this.
return new CinepakDecoder(bitsPerPixel);
- } else if (codecTag == MKID_BE('rpza')) {
+ } else if (codecTag == MKTAG('r','p','z','a')) {
// Apple Video ("Road Pizza"): Used by some Myst videos.
return new RPZADecoder(getWidth(), getHeight());
- } else if (codecTag == MKID_BE('rle ')) {
+ } else if (codecTag == MKTAG('r','l','e',' ')) {
// QuickTime RLE: Used by some Myst ME videos.
return new QTRLEDecoder(getWidth(), getHeight(), bitsPerPixel);
- } else if (codecTag == MKID_BE('smc ')) {
+ } else if (codecTag == MKTAG('s','m','c',' ')) {
// Apple SMC: Used by some Myst videos.
return new SMCDecoder(getWidth(), getHeight());
- } else if (codecTag == MKID_BE('SVQ1')) {
+ } else if (codecTag == MKTAG('S','V','Q','1')) {
// Sorenson Video 1: Used by some Myst ME videos.
warning("Sorenson Video 1 not yet supported");
- } else if (codecTag == MKID_BE('SVQ3')) {
+ } else if (codecTag == MKTAG('S','V','Q','3')) {
// Sorenson Video 3: Used by some Myst ME videos.
warning("Sorenson Video 3 not yet supported");
- } else if (codecTag == MKID_BE('jpeg')) {
+ } else if (codecTag == MKTAG('j','p','e','g')) {
// Motion JPEG: Used by some Myst ME 10th Anniversary videos.
return new JPEGDecoder();
- } else if (codecTag == MKID_BE('QkBk')) {
+ } else if (codecTag == MKTAG('Q','k','B','k')) {
// CDToons: Used by most of the Broderbund games.
return new CDToonsDecoder(getWidth(), getHeight());
} else {
diff --git a/video/smk_decoder.cpp b/video/smk_decoder.cpp
index a9f2eeeb5b..760d0045d9 100644
--- a/video/smk_decoder.cpp
+++ b/video/smk_decoder.cpp
@@ -379,13 +379,13 @@ bool SmackerDecoder::loadStream(Common::SeekableReadStream *stream) {
_header.signature = _fileStream->readUint32BE();
// No BINK support available
- if (_header.signature == MKID_BE('BIKi')) {
+ if (_header.signature == MKTAG('B','I','K','i')) {
delete _fileStream;
_fileStream = 0;
return false;
}
- assert(_header.signature == MKID_BE('SMK2') || _header.signature == MKID_BE('SMK4'));
+ assert(_header.signature == MKTAG('S','M','K','2') || _header.signature == MKTAG('S','M','K','4'));
uint32 width = _fileStream->readUint32LE();
uint32 height = _fileStream->readUint32LE();
@@ -615,7 +615,7 @@ const Graphics::Surface *SmackerDecoder::decodeNextFrame() {
break;
case SMK_BLOCK_FULL:
// Smacker v2 has one mode, Smacker v4 has three
- if (_header.signature == MKID_BE('SMK2')) {
+ if (_header.signature == MKTAG('S','M','K','2')) {
mode = 0;
} else {
// 00 - mode 0