Move luminance to Interop/SMPTE metadata and remove the ISDCF metadata dialogue.
[dcpomatic.git] / src / lib / hints.h
index e100377639bd2a49ce30e9945737cc5c788cce1e..c13ad22a4e56761de1b6d075c57017c4b9f40502 100644 (file)
 #include "types.h"
 #include "dcp_text_track.h"
 #include "dcpomatic_time.h"
-#include <boost/weak_ptr.hpp>
+#include "weak_film.h"
 #include <boost/signals2.hpp>
 #include <boost/atomic.hpp>
 #include <vector>
 #include <string>
 
+
 class Film;
+class Writer;
+
 
-class Hints : public Signaller, public ExceptionStore
+class Hints : public Signaller, public ExceptionStore, public WeakConstFilm
 {
 public:
-       explicit Hints (boost::weak_ptr<const Film> film);
+       explicit Hints (std::weak_ptr<const Film> film);
        ~Hints ();
 
        void start ();
@@ -52,10 +55,9 @@ private:
 
        void thread ();
        void hint (std::string h);
-       void text (PlayerText text, TextType type, dcpomatic::DCPTimePeriod period);
+       void text (PlayerText text, TextType type, boost::optional<DCPTextTrack> track, dcpomatic::DCPTimePeriod period);
        void closed_caption (PlayerText text, dcpomatic::DCPTimePeriod period);
        void open_subtitle (PlayerText text, dcpomatic::DCPTimePeriod period);
-       boost::shared_ptr<const Film> film () const;
 
        void check_big_font_files ();
        void check_few_audio_channels ();
@@ -69,9 +71,14 @@ private:
        void check_3d_in_2d ();
        void check_loudness ();
        void check_ffec_and_ffmc_in_smpte_feature ();
+       void check_out_of_range_markers ();
 
-       boost::weak_ptr<const Film> _film;
        boost::thread _thread;
+       /** This is used to make a partial DCP containing only the subtitles and closed captions that
+        *  our final DCP will have.  This means we can see how big the files will be and warn if they
+        *  will be too big.
+        */
+       std::shared_ptr<Writer> _writer;
 
        bool _long_ccap;
        bool _overlap_ccap;