diff options
Diffstat (limited to 'src/lib/imagemagick_decoder.cc')
| -rw-r--r-- | src/lib/imagemagick_decoder.cc | 33 |
1 files changed, 28 insertions, 5 deletions
diff --git a/src/lib/imagemagick_decoder.cc b/src/lib/imagemagick_decoder.cc index d68c1648f..5713e68f9 100644 --- a/src/lib/imagemagick_decoder.cc +++ b/src/lib/imagemagick_decoder.cc @@ -29,7 +29,7 @@ using std::cout; using boost::shared_ptr; ImageMagickDecoder::ImageMagickDecoder ( - boost::shared_ptr<Film> f, boost::shared_ptr<const Options> o, Job* j) + boost::shared_ptr<Film> f, boost::shared_ptr<const DecodeOptions> o, Job* j) : Decoder (f, o, j) , VideoDecoder (f, o, j) { @@ -73,13 +73,13 @@ ImageMagickDecoder::pass () return true; } - using namespace MagickCore; - Magick::Image* magick_image = new Magick::Image (_film->content_path ()); Size size = native_size (); - shared_ptr<CompactImage> image (new CompactImage (PIX_FMT_RGB24, size)); + shared_ptr<Image> image (new SimpleImage (PIX_FMT_RGB24, size, false)); + using namespace MagickCore; + uint8_t* p = image->data()[0]; for (int y = 0; y < size.height; ++y) { for (int x = 0; x < size.width; ++x) { @@ -91,8 +91,10 @@ ImageMagickDecoder::pass () } delete magick_image; + + image = image->crop (_film->crop(), false); - emit_video (image); + emit_video (image, 0); ++_iter; return false; @@ -105,3 +107,24 @@ ImageMagickDecoder::pixel_format () const return PIX_FMT_RGB24; } +bool +ImageMagickDecoder::seek (SourceFrame f) +{ + _iter = _files.begin (); + for (int i = 0; i < f; ++i) { + if (_iter == _files.end()) { + return true; + } + ++_iter; + } + + return false; +} + +void +ImageMagickDecoder::film_changed (Film::Property p) +{ + if (p == Film::CROP) { + OutputChanged (); + } +} |
