#include "ImageMagickSource.h" #include "yuri/config/RegisteredClass.h" #include "Magick++.h" #include namespace yuri { namespace imagemagick_module { REGISTER("imagemagick_source",ImageMagickSource) IO_THREAD_GENERATOR(ImageMagickSource) using namespace yuri::io; shared_ptr ImageMagickSource::configure() { shared_ptr p = BasicIOThread::configure(); p->set_description("Image loader based on ImageMagick."); p->set_max_pipes(1,1); return p; } ImageMagickSource::ImageMagickSource(Log &log_,pThreadBase parent,Parameters ¶meters): BasicIOThread(log_,parent,1,1,std::string("ImageMagickSource")) { IO_THREAD_INIT("ImageMagickSource") } ImageMagickSource::~ImageMagickSource() { } bool ImageMagickSource::step() { pBasicFrame frame = in[0]->pop_frame(); if (!frame) return true; if (frame->get_planes_count()>1) { log[warning] << "Input frame has more than 1 plane, ignoring them\n"; } try { Magick::Blob blob(PLANE_RAW_DATA(frame,0),PLANE_SIZE(frame,0)); Magick::Image image(blob); image.modifyImage(); yuri::size_t width = image.columns(); yuri::size_t height = image.rows(); log[debug] << "Loaded image " << width << "x" <