Even better open-file error reports.
[dcpomatic.git] / src / lib / dcp_examiner.cc
index 92f0d15c87c7847a085e0a13bc71e53cb9fd0664..06bef4c3aa29ac2ed1680e2cd2fc041541883c02 100644 (file)
 #include <dcp/reel_picture_asset.h>
 #include <dcp/reel_sound_asset.h>
 #include <dcp/mono_picture_asset.h>
+#include <dcp/mono_picture_asset_reader.h>
 #include <dcp/mono_picture_frame.h>
 #include <dcp/stereo_picture_asset.h>
+#include <dcp/stereo_picture_asset_reader.h>
 #include <dcp/stereo_picture_frame.h>
 #include <dcp/sound_asset.h>
 #include <iostream>
@@ -50,6 +52,7 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content)
        , _has_subtitles (false)
        , _encrypted (false)
        , _kdm_valid (false)
+       , _three_d (false)
 {
        dcp::DCP dcp (content->directory ());
        dcp.read (false, 0, true);
@@ -70,7 +73,7 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content)
        for (list<shared_ptr<dcp::Reel> >::const_iterator i = reels.begin(); i != reels.end(); ++i) {
 
                if ((*i)->main_picture ()) {
-                       dcp::Fraction const frac = (*i)->main_picture()->frame_rate ();
+                       dcp::Fraction const frac = (*i)->main_picture()->edit_rate ();
                        float const fr = float(frac.numerator) / frac.denominator;
                        if (!_video_frame_rate) {
                                _video_frame_rate = fr;
@@ -122,9 +125,9 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content)
                        shared_ptr<dcp::StereoPictureAsset> stereo = dynamic_pointer_cast<dcp::StereoPictureAsset> (asset);
 
                        if (mono) {
-                               mono->get_frame(0)->xyz_image ();
+                               mono->start_read()->get_frame(0)->xyz_image ();
                        } else {
-                               stereo->get_frame(0)->xyz_image (dcp::EYE_LEFT);
+                               stereo->start_read()->get_frame(0)->xyz_image (dcp::EYE_LEFT);
                        }
 
                }
@@ -137,4 +140,6 @@ DCPExaminer::DCPExaminer (shared_ptr<const DCPContent> content)
        }
 
        _standard = dcp.standard ();
+       _three_d = !reels.empty() && reels.front()->main_picture() &&
+               dynamic_pointer_cast<dcp::StereoPictureAsset> (reels.front()->main_picture()->asset());
 }