X-Git-Url: https://git.carlh.net/gitweb/?a=blobdiff_plain;ds=inline;f=src%2Flib%2Fimagemagick_decoder.cc;h=7049b7d6e31945ace55eadd9e16bc4ef6f04a170;hb=9bdd8cc51942a13e360dde4efc04b3ca417c8b94;hp=279c8bf3290ab36276fa7afb1627e3cfced1b3e3;hpb=db468a15e50c8491d4b8462ad0676be905f49065;p=dcpomatic.git diff --git a/src/lib/imagemagick_decoder.cc b/src/lib/imagemagick_decoder.cc index 279c8bf32..7049b7d6e 100644 --- a/src/lib/imagemagick_decoder.cc +++ b/src/lib/imagemagick_decoder.cc @@ -52,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 ()); @@ -84,7 +92,7 @@ ImageMagickDecoder::pass () image = image->crop (_film->crop(), true); - emit_video (image, 0); + emit_video (image, double (_position) / 24); ++_position; return false; @@ -97,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) { @@ -120,11 +118,3 @@ ImageMagickDecoder::seek (double t) _position = f; return false; } - -void -ImageMagickDecoder::film_changed (Film::Property p) -{ - if (p == Film::CROP) { - OutputChanged (); - } -}