X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fimage_decoder.cc;h=7a9acd9e4960e611bda76e912e4837738e94dc59;hb=71d8cf20889a3c419c9a3e485f461236e5317423;hp=498ff2e25dc026dad8000fd956ce0645a5bb71f5;hpb=f0be0f0e060e40d9a0da1b44429ef41901b8a536;p=dcpomatic.git diff --git a/src/lib/image_decoder.cc b/src/lib/image_decoder.cc index 498ff2e25..7a9acd9e4 100644 --- a/src/lib/image_decoder.cc +++ b/src/lib/image_decoder.cc @@ -23,6 +23,7 @@ #include "image_content.h" #include "image_decoder.h" #include "image.h" +#include "image_proxy.h" #include "film.h" #include "exceptions.h" @@ -52,27 +53,10 @@ ImageDecoder::pass () return; } - Magick::Image* magick_image = new Magick::Image (_image_content->path(_video_position).string ()); - libdcp::Size size (magick_image->columns(), magick_image->rows()); - - _image.reset (new Image (PIX_FMT_RGB24, size, true)); - - using namespace MagickCore; - - uint8_t* p = _image->data()[0]; - for (int y = 0; y < size.height; ++y) { - uint8_t* q = p; - for (int x = 0; x < size.width; ++x) { - Magick::Color c = magick_image->pixelColor (x, y); - *q++ = c.redQuantum() * 255 / QuantumRange; - *q++ = c.greenQuantum() * 255 / QuantumRange; - *q++ = c.blueQuantum() * 255 / QuantumRange; - } - p += _image->stride()[0]; - } - - delete magick_image; + shared_ptr film = _film.lock (); + assert (film); + _image.reset (new MagickImageProxy (_image_content->path (_image_content->still() ? 0 : _video_position), film->log ())); video (_image, false, _video_position); }