Tidy up logging a bit. Make it configurable from the GUI.
[dcpomatic.git] / src / lib / image_decoder.cc
index 498ff2e25dc026dad8000fd956ce0645a5bb71f5..7a9acd9e4960e611bda76e912e4837738e94dc59 100644 (file)
@@ -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<const Film> 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);
 }