/** 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)
/* Create some threads to do work on the PlayerVideos we are creating; at present this is used to
multi-thread JPEG2000 decoding.
*/
- for (int i = 0; i < boost::thread::hardware_concurrency(); ++i) {
+ for (size_t i = 0; i < boost::thread::hardware_concurrency(); ++i) {
_prepare_pool.create_thread (bind (&boost::asio::io_service::run, &_prepare_service));
}
}
void
Butler::player_changed ()
{
- optional<DCPTime> t;
-
- {
- boost::mutex::scoped_lock lm (_mutex);
- t = _video.earliest ();
- }
-
- if (t) {
- seek (*t, true);
- } else {
- _video.clear ();
- _audio.clear ();
- }
+ _video.clear ();
+ _audio.clear ();
}
/** Try to get `frames' frames of audio and copy it into `out'. Silence