- int const left_size = xml->number_child<int> ("LeftSize");
- int const right_size = xml->number_child<int> ("RightSize");
- shared_ptr<dcp::StereoPictureFrame> f (new dcp::StereoPictureFrame ());
- socket->read (f->left_j2k_data(), left_size);
- socket->read (f->right_j2k_data(), right_size);
- _stereo = f;
- } else {
- int const size = xml->number_child<int> ("Size");
- shared_ptr<dcp::MonoPictureFrame> f (new dcp::MonoPictureFrame ());
- socket->read (f->j2k_data (), size);
- _mono = f;
+ }
+ _data = Data (xml->number_child<int> ("Size"));
+ socket->read (_data.data().get (), _data.size ());
+}
+
+void
+J2KImageProxy::ensure_j2k () const
+{
+ if (!_j2k) {
+ _j2k = dcp::decompress_j2k (const_cast<uint8_t*> (_data.data().get()), _data.size (), 0);