- for (DCPTime t; t < _film->length(); t += frame) {
- _encoder->process_video (_player->get_video (t, true));
- _encoder->process_audio (_player->get_audio (t, frame, true));
+ DCPTime const length = _film->length ();
+
+ if (!_film->burn_subtitles ()) {
+ _writer->write (_player->get_subtitle_fonts ());
+ }
+
+ for (DCPTime t; t < length; t += frame) {
+ list<shared_ptr<PlayerVideo> > v = _player->get_video (t, true);
+ for (list<shared_ptr<PlayerVideo> >::const_iterator i = v.begin(); i != v.end(); ++i) {
+ _encoder->enqueue (*i);
+ }
+ _writer->write (_player->get_audio (t, frame, true));
+ if (!_film->burn_subtitles ()) {
+ _writer->write (_player->get_subtitles (t, frame, true));
+ }