diff options
author | Johannes Schickel | 2012-03-19 17:41:40 -0700 |
---|---|---|
committer | Johannes Schickel | 2012-03-19 17:41:40 -0700 |
commit | a2ad364615784c3ceffd5533b548ccff195c32ae (patch) | |
tree | aea75f1efa9d7a6958171deccd1437b2eff2d426 /video | |
parent | 9997493e36ff4a391b485d3794f04e5e1c3cf53f (diff) | |
parent | a7740fb6de17967e0187b606e94d8b7f91951f79 (diff) | |
download | scummvm-rg350-a2ad364615784c3ceffd5533b548ccff195c32ae.tar.gz scummvm-rg350-a2ad364615784c3ceffd5533b548ccff195c32ae.tar.bz2 scummvm-rg350-a2ad364615784c3ceffd5533b548ccff195c32ae.zip |
Merge pull request #199 from clone2727/image-decoder
Introduce an ImageDecoder class
Diffstat (limited to 'video')
-rw-r--r-- | video/codecs/mjpeg.cpp | 25 | ||||
-rw-r--r-- | video/codecs/mjpeg.h | 3 |
2 files changed, 10 insertions, 18 deletions
diff --git a/video/codecs/mjpeg.cpp b/video/codecs/mjpeg.cpp index 248a80d714..10fd9d7c50 100644 --- a/video/codecs/mjpeg.cpp +++ b/video/codecs/mjpeg.cpp @@ -22,8 +22,8 @@ #include "common/system.h" #include "common/textconsole.h" -#include "graphics/jpeg.h" #include "graphics/surface.h" +#include "graphics/decoders/jpeg.h" #include "video/codecs/mjpeg.h" @@ -34,38 +34,31 @@ class SeekableReadStream; namespace Video { JPEGDecoder::JPEGDecoder() : Codec() { - _jpeg = new Graphics::JPEG(); _pixelFormat = g_system->getScreenFormat(); _surface = NULL; } JPEGDecoder::~JPEGDecoder() { - delete _jpeg; - if (_surface) { _surface->free(); delete _surface; } } -const Graphics::Surface *JPEGDecoder::decodeImage(Common::SeekableReadStream* stream) { - if (!_jpeg->read(stream)) { +const Graphics::Surface *JPEGDecoder::decodeImage(Common::SeekableReadStream *stream) { + Graphics::JPEGDecoder jpeg; + + if (!jpeg.loadStream(*stream)) { warning("Failed to decode JPEG frame"); return 0; } - if (!_surface) { - _surface = new Graphics::Surface(); - _surface->create(_jpeg->getWidth(), _jpeg->getHeight(), _pixelFormat); + if (_surface) { + _surface->free(); + delete _surface; } - Graphics::Surface *frame = _jpeg->getSurface(_pixelFormat); - assert(frame); - - _surface->copyFrom(*frame); - - frame->free(); - delete frame; + _surface = jpeg.getSurface()->convertTo(_pixelFormat); return _surface; } diff --git a/video/codecs/mjpeg.h b/video/codecs/mjpeg.h index 45cb57dea2..0c3b668a74 100644 --- a/video/codecs/mjpeg.h +++ b/video/codecs/mjpeg.h @@ -31,7 +31,7 @@ class SeekableReadStream; } namespace Graphics { -class JPEG; +struct Surface; } namespace Video { @@ -50,7 +50,6 @@ public: private: Graphics::PixelFormat _pixelFormat; - Graphics::JPEG *_jpeg; Graphics::Surface *_surface; }; |