/** Minimum audio readahead in frames; should never be reached unless there are bugs in Player */
#define MAXIMUM_AUDIO_READAHEAD (48000*60)
-#define LOG_WARNING(...) _film.lock()->log()->log (String::compose (__VA_ARGS__), LogEntry::TYPE_WARNING);
+#define LOG_WARNING(...) _log->log (String::compose(__VA_ARGS__), LogEntry::TYPE_WARNING);
-Butler::Butler (weak_ptr<const Film> film, shared_ptr<Player> player, AudioMapping audio_mapping, int audio_channels)
- : _film (film)
- , _player (player)
+Butler::Butler (shared_ptr<Player> player, shared_ptr<Log> log, AudioMapping audio_mapping, int audio_channels)
+ : _player (player)
+ , _log (log)
, _prepare_work (new boost::asio::io_service::work (_prepare_service))
, _pending_seek_accurate (false)
, _finished (false)
#include <boost/signals2.hpp>
#include <boost/asio.hpp>
-class Film;
class Player;
class PlayerVideo;
+class Log;
class Butler : public ExceptionStore, public boost::noncopyable
{
public:
- Butler (boost::weak_ptr<const Film> film, boost::shared_ptr<Player> player, AudioMapping map, int audio_channels);
+ Butler (boost::shared_ptr<Player> player, boost::shared_ptr<Log> log, AudioMapping map, int audio_channels);
~Butler ();
void seek (DCPTime position, bool accurate);
bool should_run () const;
void prepare (boost::weak_ptr<PlayerVideo> video) const;
- boost::weak_ptr<const Film> _film;
boost::shared_ptr<Player> _player;
+ boost::shared_ptr<Log> _log;
boost::thread* _thread;
VideoRingBuffers _video;
}
}
- _butler.reset (new Butler (film, _player, map, _output_audio_channels));
+ _butler.reset (new Butler (_player, film->log(), map, _output_audio_channels));
}
void
map.set (2, 1, 1 / sqrt(2)); // C -> R
}
- _butler.reset (new Butler (_film, _player, map, _audio_channels));
+ _butler.reset (new Butler (_player, _film->log(), map, _audio_channels));
if (!Config::instance()->preview_sound()) {
_butler->disable_audio ();
}
map.set (i, i, 1);
}
- Butler butler (film, shared_ptr<Player>(new Player(film, film->playlist())), map, 6);
+ Butler butler (shared_ptr<Player>(new Player(film, film->playlist())), film->log(), map, 6);
BOOST_CHECK (butler.get_video().second == DCPTime());
BOOST_CHECK (butler.get_video().second == DCPTime::from_frames(1, 24));