Merge branch 'master' of ssh://git.carlh.net/home/carl/git/dcpomatic
[dcpomatic.git] / src / lib / player.cc
index 30313d39dd23bb57445cf43ff8a45f7b9c2d8b00..20a3e14533557997117cfd9fb0c9a91ae017a700 100644 (file)
@@ -123,7 +123,7 @@ Player::setup_pieces ()
                        continue;
                }
 
-               shared_ptr<Decoder> decoder = decoder_factory (i, _film->log(), _fast);
+               shared_ptr<Decoder> decoder = decoder_factory (i, _film->log());
                FrameRateChange frc (i->active_video_frame_rate(), _film->video_frame_rate());
 
                if (!decoder) {
@@ -139,6 +139,15 @@ Player::setup_pieces ()
                        decoder->audio->set_ignore ();
                }
 
+               if (decoder->audio && _fast) {
+                       decoder->audio->set_fast ();
+               }
+
+               shared_ptr<DCPDecoder> dcp = dynamic_pointer_cast<DCPDecoder> (decoder);
+               if (dcp && _play_referenced) {
+                       dcp->set_decode_referenced ();
+               }
+
                _pieces.push_back (shared_ptr<Piece> (new Piece (i, decoder, frc)));
        }
 
@@ -706,7 +715,7 @@ Player::get_reel_assets ()
 
                scoped_ptr<DCPDecoder> decoder;
                try {
-                       decoder.reset (new DCPDecoder (j, _film->log(), false));
+                       decoder.reset (new DCPDecoder (j, _film->log()));
                } catch (...) {
                        return a;
                }