diff options
author | Matthew Hoops | 2011-04-13 16:04:29 -0400 |
---|---|---|
committer | Matthew Hoops | 2011-04-13 16:04:29 -0400 |
commit | 6d153f311c65fe414e31e99f8a9a6503c49a01a5 (patch) | |
tree | 9173f9964c0fec4215514e622f705810730d0ce9 /video | |
parent | 47c2a9adbe8d9e6640a819386f0f34e929937672 (diff) | |
parent | 66b43f2312578f35e0718d0699de207a7bf77f1a (diff) | |
download | scummvm-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.h | 54 | ||||
-rw-r--r-- | video/codecs/cdtoons.cpp | 14 | ||||
-rw-r--r-- | video/codecs/indeo3.cpp | 2 | ||||
-rw-r--r-- | video/coktel_decoder.cpp | 29 | ||||
-rw-r--r-- | video/coktel_decoder.h | 2 | ||||
-rw-r--r-- | video/dxa_decoder.cpp | 8 | ||||
-rw-r--r-- | video/qt_decoder.cpp | 16 | ||||
-rw-r--r-- | video/smk_decoder.cpp | 6 |
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 |