- _film->log()->log (String::compose ("Writer writes %1 to MXF", encoded.second));
- if (encoded.first) {
- libdcp::FrameInfo const fin = _picture_asset_writer->write (encoded.first->data(), encoded.first->size());
- encoded.first->write_info (_film, encoded.second, fin);
- _last_written = encoded.first;
- } else {
+ switch (qi.type) {
+ case QueueItem::FULL:
+ {
+ _film->log()->log (String::compose (N_("Writer FULL-writes %1 to MXF"), qi.frame));
+ if (!qi.encoded) {
+ qi.encoded.reset (new EncodedData (_film->j2c_path (qi.frame, false)));
+ }
+ libdcp::FrameInfo const fin = _picture_asset_writer->write (qi.encoded->data(), qi.encoded->size());
+ qi.encoded->write_info (_film, qi.frame, fin);
+ _last_written = qi.encoded;
+ ++_full_written;
+ break;
+ }
+ case QueueItem::FAKE:
+ _film->log()->log (String::compose (N_("Writer FAKE-writes %1 to MXF"), qi.frame));
+ _picture_asset_writer->fake_write (qi.size);
+ _last_written.reset ();
+ ++_fake_written;
+ break;
+ case QueueItem::REPEAT:
+ {
+ _film->log()->log (String::compose (N_("Writer REPEAT-writes %1 to MXF"), qi.frame));