Merge.
[dcpomatic.git] / src / lib / transcoder.cc
index e0af2c5943bcd94d54aef1ed2ade12bca80cf63d..49742f98d551b12b6168f0d54d0b8f1c937a679b 100644 (file)
@@ -32,6 +32,7 @@
 #include "player.h"
 #include "job.h"
 #include "writer.h"
+#include "compose.hpp"
 #include "subtitle_content.h"
 #include <boost/signals2.hpp>
 #include <boost/foreach.hpp>
@@ -61,6 +62,7 @@ Transcoder::Transcoder (shared_ptr<const Film> film, shared_ptr<Job> j)
 void
 Transcoder::go ()
 {
+       _writer->start ();
        _encoder->begin ();
 
        DCPTime const frame = DCPTime::from_frames (1, _film->video_frame_rate ());
@@ -88,17 +90,25 @@ Transcoder::go ()
                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));
+
+               shared_ptr<AudioBuffers> audio = _player->get_audio (t, frame, true);
+               if (audio) {
+                       _writer->write (audio);
+               }
+
                if (non_burnt_subtitles) {
                        _writer->write (_player->get_subtitles (t, frame, true, false));
                }
        }
 
+       /* XXX: we should be passing through details of positions, at least... */
+       BOOST_FOREACH (shared_ptr<dcp::ReelAsset> i, _player->get_reel_assets ()) {
+               _writer->write (i);
+       }
+
        _finishing = true;
        _encoder->end ();
        _writer->finish ();
-
-       _player->statistics().dump (_film->log ());
 }
 
 float