diff options
Diffstat (limited to 'engines')
-rw-r--r-- | engines/sci/module.mk | 3 | ||||
-rw-r--r-- | engines/sci/video/vmd_decoder.cpp | 119 | ||||
-rw-r--r-- | engines/sci/video/vmd_decoder.h | 89 |
3 files changed, 1 insertions, 210 deletions
diff --git a/engines/sci/module.mk b/engines/sci/module.mk index 7107b722f9..238209c446 100644 --- a/engines/sci/module.mk +++ b/engines/sci/module.mk @@ -77,8 +77,7 @@ ifdef ENABLE_SCI32 MODULE_OBJS += \ graphics/frameout.o \ graphics/paint32.o \ - graphics/robot.o \ - video/vmd_decoder.o + graphics/robot.o endif # This module can be built as a plugin diff --git a/engines/sci/video/vmd_decoder.cpp b/engines/sci/video/vmd_decoder.cpp deleted file mode 100644 index 680a449207..0000000000 --- a/engines/sci/video/vmd_decoder.cpp +++ /dev/null @@ -1,119 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#ifdef ENABLE_SCI32 - -#include "sci/video/vmd_decoder.h" - -#include "common/endian.h" -#include "common/util.h" -#include "common/stream.h" -#include "common/system.h" - -#include "graphics/dither.h" - -#include "sound/mixer.h" -#include "sound/audiostream.h" - -namespace Sci { - -VMDDecoder::VMDDecoder(Audio::Mixer *mixer) : _mixer(mixer) { - _vmdDecoder = new Graphics::Vmd(new Graphics::PaletteLUT(5, Graphics::PaletteLUT::kPaletteYUV)); - _surface = 0; - _dirtyPalette = false; - _fileStream = 0; -} - -VMDDecoder::~VMDDecoder() { - close(); -} - -bool VMDDecoder::load(Common::SeekableReadStream *stream) { - close(); - - if (!_vmdDecoder->load(stream)) - return false; - - _fileStream = stream; - - if (_vmdDecoder->getFeatures() & Graphics::CoktelVideo::kFeaturesPalette) - loadPaletteFromVMD(); - - if (_vmdDecoder->getFeatures() & Graphics::CoktelVideo::kFeaturesSound) - _vmdDecoder->enableSound(*_mixer); - - if (_vmdDecoder->hasExtraData()) - warning("This VMD video has extra embedded data, which is currently not handled"); - - _surface = new Graphics::Surface(); - _surface->create(_vmdDecoder->getWidth(), _vmdDecoder->getHeight(), 1); - _vmdDecoder->setVideoMemory((byte *)_surface->pixels, _surface->w, _surface->h); - return true; -} - -void VMDDecoder::close() { - if (!_fileStream) - return; - - _vmdDecoder->unload(); - - delete _fileStream; - _fileStream = 0; - - _surface->free(); - delete _surface; - _surface = 0; - - reset(); -} - -Graphics::Surface *VMDDecoder::decodeNextFrame() { - Graphics::CoktelVideo::State state = _vmdDecoder->nextFrame(); - - if (state.flags & Graphics::CoktelVideo::kStatePalette) - loadPaletteFromVMD(); - - if (_curFrame == -1) - _startTime = g_system->getMillis(); - - _curFrame++; - return _surface; -} - -void VMDDecoder::loadPaletteFromVMD() { - const byte *pal = _vmdDecoder->getPalette(); - - for (int i = 0; i < 256; i++) { - _palette[i * 3 + 0] = pal[i * 3 + 0] << 2; - _palette[i * 3 + 1] = pal[i * 3 + 1] << 2; - _palette[i * 3 + 2] = pal[i * 3 + 2] << 2; - } - - _dirtyPalette = true; -} - -} // End of namespace Graphics - -#endif diff --git a/engines/sci/video/vmd_decoder.h b/engines/sci/video/vmd_decoder.h deleted file mode 100644 index e79064b1f7..0000000000 --- a/engines/sci/video/vmd_decoder.h +++ /dev/null @@ -1,89 +0,0 @@ -/* ScummVM - Graphic Adventure Engine - * - * ScummVM is the legal property of its developers, whose names - * are too numerous to list here. Please refer to the COPYRIGHT - * file distributed with this source distribution. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU General Public License - * as published by the Free Software Foundation; either version 2 - * of the License, or (at your option) any later version. - - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - - * You should have received a copy of the GNU General Public License - * along with this program; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. - * - * $URL$ - * $Id$ - * - */ - -#ifdef ENABLE_SCI32 - -#ifndef GRAPHICS_VIDEO_VMD_DECODER_H -#define GRAPHICS_VIDEO_VMD_DECODER_H - -#include "graphics/video/coktelvideo/coktelvideo.h" -#include "graphics/video/video_decoder.h" -#include "sound/mixer.h" - -namespace Sci { - -/** - * Wrapper for the Coktel Vision VMD video decoder - * for videos by Coktel Vision/Sierra. - * - * VMD videos were used in the following SCI21/SCI3 - * adventure games, developed by Sierra: - * - Gabriel Knight 2: The Beast Within - * - Leisure Suit Larry 7 - * - Lighthouse - * - Phantasmagoria 1 - * - RAMA - * - Shivers - * - Shivers 2: Harvest of Souls - * - Torin's Passage - */ -class VMDDecoder : public Graphics::FixedRateVideoDecoder { -public: - VMDDecoder(Audio::Mixer *mixer); - virtual ~VMDDecoder(); - - uint32 getFrameWaitTime(); - - bool load(Common::SeekableReadStream *stream); - void close(); - - bool isVideoLoaded() const { return _fileStream != 0; } - uint16 getWidth() const { return _surface->w; } - uint16 getHeight() const { return _surface->h; } - uint32 getFrameCount() const { return _vmdDecoder->getFramesCount(); } - Graphics::Surface *decodeNextFrame(); - Graphics::PixelFormat getPixelFormat() const { return Graphics::PixelFormat::createFormatCLUT8(); } - byte *getPalette() { _dirtyPalette = false; return _palette; } - bool hasDirtyPalette() const { return _dirtyPalette; } - -protected: - Common::Rational getFrameRate() const { return _vmdDecoder->getFrameRate(); } - -private: - Graphics::Vmd *_vmdDecoder; - Audio::Mixer *_mixer; - Graphics::Surface *_surface; - Common::SeekableReadStream *_fileStream; - byte _palette[256 * 3]; - bool _dirtyPalette; - - void loadPaletteFromVMD(); -}; - -} // End of namespace Graphics - -#endif - -#endif |