Extract scan_content().
authorCarl Hetherington <cth@carlh.net>
Fri, 8 Dec 2023 15:00:49 +0000 (16:00 +0100)
committerCarl Hetherington <cth@carlh.net>
Sat, 9 Dec 2023 15:40:56 +0000 (16:40 +0100)
src/lib/hints.cc
src/lib/hints.h

index b4d94dbcc3d03ab4ab06de1045c94cdd2b7f153f..55342a8d05dfcad7ce0919af97d19b762cb0b06c 100644 (file)
@@ -370,37 +370,9 @@ Hints::check_out_of_range_markers ()
 
 
 void
-Hints::thread ()
-try
+Hints::scan_content(shared_ptr<const Film> film)
 {
-       start_of_thread ("Hints");
-
-       auto film = _film.lock ();
-       if (!film) {
-               return;
-       }
-
-       auto content = film->content ();
-
-       check_certificates ();
-       check_interop ();
-       check_big_font_files ();
-       check_few_audio_channels ();
-       check_upmixers ();
-       check_incorrect_container ();
-       check_unusual_container ();
-       check_high_j2k_bandwidth ();
-       check_frame_rate ();
-       check_4k_3d ();
-       check_speed_up ();
-       check_vob ();
-       check_3d_in_2d ();
-       auto const check_loudness_done = check_loudness ();
-       check_ffec_and_ffmc_in_smpte_feature ();
-       check_out_of_range_markers ();
-       check_subtitle_languages();
-       check_audio_language ();
-       check_8_or_16_audio_channels();
+       auto const check_loudness_done = check_loudness();
 
        if (check_loudness_done) {
                emit (bind(boost::ref(Progress), _("Examining subtitles and closed captions")));
@@ -409,38 +381,75 @@ try
        }
 
        auto player = make_shared<Player>(film, Image::Alignment::COMPACT);
-       player->set_ignore_video ();
+       player->set_ignore_video();
        if (check_loudness_done || _disable_audio_analysis) {
                /* We don't need to analyse audio because we already loaded a suitable analysis */
-               player->set_ignore_audio ();
+               player->set_ignore_audio();
+       } else {
+               /* Send auto to the analyser to check loudness */
+               player->Audio.connect(bind(&Hints::audio, this, _1, _2));
        }
-       player->Audio.connect (bind(&Hints::audio, this, _1, _2));
-       player->Text.connect (bind(&Hints::text, this, _1, _2, _3, _4));
+       player->Text.connect(bind(&Hints::text, this, _1, _2, _3, _4));
 
        struct timeval last_pulse;
-       gettimeofday (&last_pulse, 0);
+       gettimeofday(&last_pulse, 0);
 
-       _writer->write (player->get_subtitle_fonts());
+       _writer->write(player->get_subtitle_fonts());
 
        while (!player->pass()) {
 
                struct timeval now;
-               gettimeofday (&now, 0);
+               gettimeofday(&now, 0);
                if ((seconds(now) - seconds(last_pulse)) > 1) {
                        if (_stop) {
                                return;
                        }
-                       emit (bind (boost::ref(Pulse)));
+                       emit(bind(boost::ref(Pulse)));
                        last_pulse = now;
                }
        }
 
        if (!check_loudness_done) {
-               _analyser.finish ();
+               _analyser.finish();
                _analyser.get().write(film->audio_analysis_path(film->playlist()));
-               check_loudness ();
+               check_loudness();
+       }
+}
+
+
+void
+Hints::thread ()
+try
+{
+       start_of_thread ("Hints");
+
+       auto film = _film.lock ();
+       if (!film) {
+               return;
        }
 
+       auto content = film->content ();
+
+       check_certificates ();
+       check_interop ();
+       check_big_font_files ();
+       check_few_audio_channels ();
+       check_upmixers ();
+       check_incorrect_container ();
+       check_unusual_container ();
+       check_high_j2k_bandwidth ();
+       check_frame_rate ();
+       check_4k_3d ();
+       check_speed_up ();
+       check_vob ();
+       check_3d_in_2d ();
+       check_ffec_and_ffmc_in_smpte_feature ();
+       check_out_of_range_markers ();
+       check_subtitle_languages();
+       check_audio_language ();
+       check_8_or_16_audio_channels();
+
+       scan_content(film);
 
        if (_long_subtitle && !_very_long_subtitle) {
                hint (_("At least one of your subtitle lines has more than 52 characters.  It is recommended to make each line 52 characters at most in length."));
index 55703a10bc59d74de464d17519d3dee60c88ffdd..0d65edc218bad3455467a24fc1448eb50592bbdd 100644 (file)
@@ -58,12 +58,14 @@ private:
        friend struct hint_subtitle_too_early;
 
        void thread ();
+       void scan_content(std::shared_ptr<const Film> film);
        void hint (std::string h);
        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_certificates ();
        void check_interop ();
        void check_big_font_files ();