+ void audio (std::shared_ptr<AudioBuffers> audio, dcpomatic::DCPTime time);
+ 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);
+
+ void check_interop ();
+ void check_big_font_files ();
+ void check_few_audio_channels ();
+ void check_upmixers ();
+ void check_incorrect_container ();
+ void check_unusual_container ();
+ void check_high_j2k_bandwidth ();
+ void check_frame_rate ();
+ void check_4k_3d ();
+ void check_speed_up ();
+ void check_vob ();
+ void check_3d_in_2d ();
+ bool check_loudness ();
+ void check_ffec_and_ffmc_in_smpte_feature ();
+ void check_out_of_range_markers ();
+ void check_text_languages ();
+
+ 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;
+
+ AudioAnalyser _analyser;