+
+void
+FilmViewer::create_butler()
+{
+#if wxCHECK_VERSION(3, 1, 0)
+ auto const j2k_gl_optimised = dynamic_pointer_cast<GLVideoView>(_video_view) && _optimise_for_j2k;
+#else
+ auto const j2k_gl_optimised = false;
+#endif
+
+ DCPOMATIC_ASSERT(_player);
+
+ _butler = std::make_shared<Butler>(
+ _film,
+ *_player,
+ Config::instance()->audio_mapping(_audio_channels),
+ _audio_channels,
+ boost::bind(&PlayerVideo::force, AV_PIX_FMT_RGB24),
+ VideoRange::FULL,
+ j2k_gl_optimised ? Image::Alignment::COMPACT : Image::Alignment::PADDED,
+ true,
+ j2k_gl_optimised,
+ (Config::instance()->sound() && _audio.isStreamOpen()) ? Butler::Audio::ENABLED : Butler::Audio::DISABLED
+ );