- shared_ptr<const dcp::MonoPictureMXF> mono_picture = dynamic_pointer_cast<const dcp::MonoPictureMXF> (picture);
- shared_ptr<const dcp::MonoPictureFrame> j2k_frame = mono_picture->get_frame (0);
- return j2k_frame->argb_frame ();
+ shared_ptr<const dcp::MonoPictureAsset> mono_picture = dynamic_pointer_cast<const dcp::MonoPictureAsset> (picture);
+ shared_ptr<const dcp::MonoPictureAssetReader> reader = mono_picture->start_read ();
+ shared_ptr<const dcp::MonoPictureFrame> j2k_frame = reader->get_frame (0);
+ shared_ptr<dcp::OpenJPEGImage> xyz = j2k_frame->xyz_image();
+
+ uint8_t* argb = new uint8_t[xyz->size().width * xyz->size().height * 4];
+ dcp::xyz_to_rgba (j2k_frame->xyz_image(), dcp::ColourConversion::srgb_to_xyz(), argb, xyz->size().width * 4);
+ return make_pair (argb, xyz->size ());