xml->number_child<int> ("Width"), xml->number_child<int> ("Height")
);
- _image.reset (new Image (PIX_FMT_RGB24, size, true));
+ _image.reset (new Image (static_cast<AVPixelFormat> (xml->number_child<int> ("PixelFormat")), size, true));
_image->read_from_socket (socket);
}
node->add_child("Type")->add_child_text (N_("Raw"));
node->add_child("Width")->add_child_text (libdcp::raw_convert<string> (_image->size().width));
node->add_child("Height")->add_child_text (libdcp::raw_convert<string> (_image->size().height));
+ node->add_child("PixelFormat")->add_child_text (libdcp::raw_convert<string> (_image->pixel_format ()));
}
void
_image.reset (new Image (PIX_FMT_RGB24, size, true));
- using namespace MagickCore;
-
- magick_image->write (0, 0, size.width, size.height, "RGB", CharPixel, _image->data()[0]);
+ /* Write line-by-line here as _image must be aligned, and write() cannot be told about strides */
+ uint8_t* p = _image->data()[0];
+ for (int i = 0; i < size.height; ++i) {
+ using namespace MagickCore;
+ magick_image->write (0, i, size.width, 1, "RGB", CharPixel, p);
+ p += _image->stride()[0];
+ }
delete magick_image;