Setup Butler::_prepare_only_proxy on construction.
authorCarl Hetherington <cth@carlh.net>
Mon, 13 Sep 2021 23:36:38 +0000 (01:36 +0200)
committerCarl Hetherington <cth@carlh.net>
Mon, 27 Sep 2021 11:41:46 +0000 (13:41 +0200)
src/lib/butler.cc
src/lib/butler.h
src/lib/ffmpeg_encoder.cc
src/wx/film_viewer.cc
test/butler_test.cc
test/dcp_playback_test.cc
test/player_test.cc

index cbd5ba15d4f01839349d8759173f9e14ec9e1aa0..ca0887a4cc3cb05410c8d88b47005aac69188db8 100644 (file)
@@ -68,7 +68,8 @@ Butler::Butler (
        function<AVPixelFormat (AVPixelFormat)> pixel_format,
        VideoRange video_range,
        bool aligned,
-       bool fast
+       bool fast,
+       bool prepare_only_proxy
        )
        : _film (film)
        , _player (player)
@@ -85,6 +86,7 @@ Butler::Butler (
        , _video_range (video_range)
        , _aligned (aligned)
        , _fast (fast)
+       , _prepare_only_proxy (prepare_only_proxy)
 {
        _player_video_connection = _player->Video.connect (bind (&Butler::video, this, _1, _2));
        _player_audio_connection = _player->Audio.connect (bind (&Butler::audio, this, _1, _2, _3));
index d31442f6c699b1096a52ba842d22043d571f2b44..320e56bf91ae3a7d50cab58b42de560c2d85f212 100644 (file)
@@ -46,7 +46,8 @@ public:
                std::function<AVPixelFormat (AVPixelFormat)> pixel_format,
                VideoRange video_range,
                bool aligned,
-               bool fast
+               bool fast,
+               bool prepare_only_proxy
                );
 
        ~Butler ();
@@ -80,9 +81,6 @@ public:
        boost::optional<TextRingBuffers::Data> get_closed_caption ();
 
        void disable_audio ();
-       void set_prepare_only_proxy (bool p) {
-               _prepare_only_proxy = p;
-       }
 
        std::pair<size_t, std::string> memory_used () const;
 
index 61ca1ae008bc47fa99c92178ec5a863be0ef28be..77f27d5194218cbd8c67c7249e314c7d8f7246a9 100644 (file)
@@ -108,7 +108,7 @@ FFmpegEncoder::FFmpegEncoder (
        }
 
        _butler = std::make_shared<Butler>(
-               _film, _player, map, _output_audio_channels, bind(&PlayerVideo::force, _1, FFmpegFileEncoder::pixel_format(format)), VideoRange::VIDEO, true, false
+               _film, _player, map, _output_audio_channels, bind(&PlayerVideo::force, _1, FFmpegFileEncoder::pixel_format(format)), VideoRange::VIDEO, true, false, false
                );
 }
 
index 749e4ceb7c315e73147737c465f2d26e981fba80..98948b1f2b6c7f6deeef6ef9b23725d99a24e7b1 100644 (file)
@@ -222,17 +222,14 @@ FilmViewer::recreate_butler ()
                bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24),
                VideoRange::FULL,
                false,
-               true
+               true,
+               dynamic_pointer_cast<GLVideoView>(_video_view) && _optimise_for_j2k
                );
 
        if (!Config::instance()->sound() && !_audio.isStreamOpen()) {
                _butler->disable_audio ();
        }
 
-       if (dynamic_pointer_cast<GLVideoView>(_video_view) && _optimise_for_j2k) {
-               _butler->set_prepare_only_proxy (true);
-       }
-
        _closed_captions_dialog->set_butler (_butler);
 
        resume ();
index dbd7a287edd1308e9047b66d9b3047bba562a81c..65c9139d76145134d382e978ee8e841f1167fd5f 100644 (file)
@@ -59,7 +59,7 @@ BOOST_AUTO_TEST_CASE (butler_test1)
                map.set (i, i, 1);
        }
 
-       Butler butler (film, make_shared<Player>(film), map, 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, false);
+       Butler butler (film, make_shared<Player>(film), map, 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, false, false);
 
        BOOST_CHECK (butler.get_video(true, 0).second == DCPTime());
        BOOST_CHECK (butler.get_video(true, 0).second == DCPTime::from_frames(1, 24));
index ef1b623e78ffc8f7a67ef1f46dbd9ae37628ecb9..efe7138e1173f7718aed67af2b62be3ec9e4a036 100644 (file)
@@ -53,7 +53,8 @@ BOOST_AUTO_TEST_CASE (dcp_playback_test)
                bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24),
                VideoRange::FULL,
                false,
-               true
+               true,
+               false
                );
 
        auto audio_buffer = new float[2000 * 6];
index c325537fa80a18908049188f5ade4b83ba9e7c76..1f5b543aa36e573f284e291646fba79f8f76b62e 100644 (file)
@@ -234,7 +234,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test)
        player->set_always_burn_open_subtitles ();
        player->set_play_referenced ();
 
-       auto butler = std::make_shared<Butler>(film, player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, true);
+       auto butler = std::make_shared<Butler>(film, player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, true, false);
        butler->disable_audio();
 
        for (int i = 0; i < 10; ++i) {
@@ -266,7 +266,7 @@ BOOST_AUTO_TEST_CASE (player_seek_test2)
        player->set_always_burn_open_subtitles ();
        player->set_play_referenced ();
 
-       auto butler = std::make_shared<Butler>(film, player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, true);
+       auto butler = std::make_shared<Butler>(film, player, AudioMapping(), 2, bind(PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, true, false);
        butler->disable_audio();
 
        butler->seek(DCPTime::from_seconds(5), true);
@@ -357,7 +357,7 @@ BOOST_AUTO_TEST_CASE (player_trim_crash)
 
        auto player = std::make_shared<Player>(film);
        player->set_fast ();
-       auto butler = std::make_shared<Butler>(film, player, AudioMapping(), 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, true);
+       auto butler = std::make_shared<Butler>(film, player, AudioMapping(), 6, bind(&PlayerVideo::force, _1, AV_PIX_FMT_RGB24), VideoRange::FULL, false, true, false);
 
        /* Wait for the butler to fill */
        dcpomatic_sleep_seconds (5);