Some allowances for video/audio/subtitle possibly being null.
[dcpomatic.git] / src / lib / dcp_decoder.cc
index 4e28dc7582bea298c5641b054ad4ee585069460e..8008fe515590fa52df974e4e14ac4f59e3eaff56 100644 (file)
@@ -44,7 +44,7 @@ using boost::shared_ptr;
 using boost::dynamic_pointer_cast;
 
 DCPDecoder::DCPDecoder (shared_ptr<const DCPContent> c, shared_ptr<Log> log, bool fast)
-       : VideoDecoder (c->video, log)
+       : VideoDecoder (c, log)
        , AudioDecoder (c->audio, fast, log)
        , SubtitleDecoder (c->subtitle)
        , _dcp_content (c)
@@ -74,7 +74,7 @@ DCPDecoder::pass (PassReason reason, bool)
                ++i;
        }
 
-       double const vfr = _dcp_content->video->video_frame_rate ();
+       double const vfr = _dcp_content->active_video_frame_rate ();
 
        /* Frame within the (played part of the) reel that is coming up next */
        int64_t const frame = _next.frames_round (vfr);
@@ -157,8 +157,8 @@ DCPDecoder::seek (ContentTime t, bool accurate)
        SubtitleDecoder::seek (t, accurate);
 
        _reel = _reels.begin ();
-       while (_reel != _reels.end() && t >= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->video->video_frame_rate ())) {
-               t -= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->video->video_frame_rate ());
+       while (_reel != _reels.end() && t >= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate ())) {
+               t -= ContentTime::from_frames ((*_reel)->main_picture()->duration(), _dcp_content->active_video_frame_rate ());
                ++_reel;
        }
 
@@ -178,7 +178,7 @@ DCPDecoder::text_subtitles_during (ContentTimePeriod period, bool starting) cons
        /* XXX: inefficient */
 
        list<ContentTimePeriod> ctp;
-       double const vfr = _dcp_content->video->video_frame_rate ();
+       double const vfr = _dcp_content->active_video_frame_rate ();
 
        BOOST_FOREACH (shared_ptr<dcp::Reel> r, _reels) {
                if (!r->main_subtitle ()) {