wip: got stuck... because PlayerVideo is related to the render size
[dcpomatic.git] / src / lib / butler.cc
index de6a6512649ac1a31543736fdb8fa5b3cebadedc..ad3834deeba57af36903bee99c33139480a0cba0 100644 (file)
 
 
 #include "butler.h"
-#include "player.h"
-#include "util.h"
-#include "log.h"
-#include "dcpomatic_log.h"
-#include "cross.h"
 #include "compose.hpp"
+#include "cross.h"
+#include "dcpomatic_log.h"
 #include "exceptions.h"
+#include "log.h"
+#include "player.h"
+#include "util.h"
 #include "video_content.h"
 
 
 using std::cout;
-using std::pair;
+using std::function;
 using std::make_pair;
+using std::pair;
+using std::shared_ptr;
 using std::string;
 using std::weak_ptr;
-using std::shared_ptr;
 using boost::bind;
 using boost::optional;
-using std::function;
 using namespace dcpomatic;
 #if BOOST_VERSION >= 106100
 using namespace boost::placeholders;
@@ -57,6 +57,8 @@ using namespace boost::placeholders;
 
 /** @param pixel_format Pixel format functor that will be used when calling ::image on PlayerVideos coming out of this
  *  butler.  This will be used (where possible) to prepare the PlayerVideos so that calling image() on them is quick.
+ *  @param display_container Same as above for the `display_container` value.
+ *  @param film_container Same as above for the `film_container` value.
  *  @param alignment Same as above for the `alignment' value.
  *  @param fast Same as above for the `fast' flag.
  */
@@ -66,10 +68,13 @@ Butler::Butler (
        AudioMapping audio_mapping,
        int audio_channels,
        function<AVPixelFormat (AVPixelFormat)> pixel_format,
+       dcp::Size display_container,
+       dcp::Size film_container,
        VideoRange video_range,
        Image::Alignment alignment,
        bool fast,
-       bool prepare_only_proxy
+       bool prepare_only_proxy,
+       Audio audio
        )
        : _film (film)
        , _player (player)
@@ -81,8 +86,10 @@ Butler::Butler (
        , _stop_thread (false)
        , _audio_mapping (audio_mapping)
        , _audio_channels (audio_channels)
-       , _disable_audio (false)
+       , _disable_audio (audio == Audio::DISABLED)
        , _pixel_format (pixel_format)
+       , _display_container(display_container)
+       , _film_container(film_container)
        , _video_range (video_range)
        , _alignment (alignment)
        , _fast (fast)
@@ -325,7 +332,7 @@ try
        /* If the weak_ptr cannot be locked the video obviously no longer requires any work */
        if (video) {
                LOG_TIMING("start-prepare in %1", thread_id());
-               video->prepare (_pixel_format, _video_range, _alignment, _fast, _prepare_only_proxy);
+               video->prepare(_pixel_format, _display_container, _film_container, _video_range, _alignment, _fast, _prepare_only_proxy);
                LOG_TIMING("finish-prepare in %1", thread_id());
        }
 }
@@ -394,14 +401,6 @@ Butler::get_audio (Behaviour behaviour, float* out, Frame frames)
 }
 
 
-void
-Butler::disable_audio ()
-{
-       boost::mutex::scoped_lock lm (_mutex);
-       _disable_audio = true;
-}
-
-
 pair<size_t, string>
 Butler::memory_used () const
 {
@@ -417,7 +416,7 @@ Butler::player_change (ChangeType type, int property)
                if (type == ChangeType::DONE) {
                        auto film = _film.lock();
                        if (film) {
-                               _video.reset_metadata (film, _player->video_container_size());
+                               _video.reset_metadata(film);
                        }
                }
                return;