X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fimagemagick_decoder.cc;h=7049b7d6e31945ace55eadd9e16bc4ef6f04a170;hb=9bdd8cc51942a13e360dde4efc04b3ca417c8b94;hp=aa3c64f931f7e4e48d241cab70ef1ec01b1ec872;hpb=127672223cca569986e35c91265e269ed5a6561c;p=dcpomatic.git diff --git a/src/lib/imagemagick_decoder.cc b/src/lib/imagemagick_decoder.cc index aa3c64f93..7049b7d6e 100644 --- a/src/lib/imagemagick_decoder.cc +++ b/src/lib/imagemagick_decoder.cc @@ -32,10 +32,9 @@ using std::cout; using boost::shared_ptr; using libdcp::Size; -ImageMagickDecoder::ImageMagickDecoder ( - shared_ptr f, shared_ptr c, DecodeOptions o) - : Decoder (f, o) - , VideoDecoder (f, c, o) +ImageMagickDecoder::ImageMagickDecoder (shared_ptr f, shared_ptr c) + : Decoder (f) + , VideoDecoder (f) , _imagemagick_content (c) , _position (0) { @@ -53,15 +52,23 @@ ImageMagickDecoder::native_size () const return s; } +int +ImageMagickDecoder::video_length () const +{ + return _imagemagick_content->video_length (); +} + bool ImageMagickDecoder::pass () { - if (_position > 0 && _position < _imagemagick_content->video_length ()) { - repeat_last_video (); + if (_position < 0 || _position >= _imagemagick_content->video_length ()) { + return true; + } + + if (have_last_video ()) { + repeat_last_video (double (_position) / 24); _position++; return false; - } else if (_position >= _imagemagick_content->video_length ()) { - return true; } Magick::Image* magick_image = new Magick::Image (_imagemagick_content->file().string ()); @@ -85,7 +92,7 @@ ImageMagickDecoder::pass () image = image->crop (_film->crop(), true); - emit_video (image, 0); + emit_video (image, double (_position) / 24); ++_position; return false; @@ -98,16 +105,6 @@ ImageMagickDecoder::pixel_format () const return PIX_FMT_RGB24; } -bool -ImageMagickDecoder::seek_to_last () -{ - if (_position > 0) { - --_position; - } - - return false; -} - bool ImageMagickDecoder::seek (double t) { @@ -121,11 +118,3 @@ ImageMagickDecoder::seek (double t) _position = f; return false; } - -void -ImageMagickDecoder::film_changed (Film::Property p) -{ - if (p == Film::CROP) { - OutputChanged (); - } -}