diff options
| author | Carl Hetherington <cth@carlh.net> | 2020-04-23 15:48:19 +0200 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2020-04-23 15:48:19 +0200 |
| commit | 990f879d9af6300068af44c431b1a8e158e7f7a0 (patch) | |
| tree | b938ca31af91c256f01eae8c3566a95763eefdfa /src/lib | |
| parent | 4b7185e4eda53534c4d71a1f31ba33ca3dd8dc8d (diff) | |
Nicer fix for 86102d30bf0aad89115bbeb3d8aaa2a27a0aa432
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/analyse_audio_job.cc | 2 | ||||
| -rw-r--r-- | src/lib/encoder.cc | 2 | ||||
| -rw-r--r-- | src/lib/hints.cc | 2 | ||||
| -rw-r--r-- | src/lib/player.cc | 38 | ||||
| -rw-r--r-- | src/lib/player.h | 6 |
5 files changed, 33 insertions, 17 deletions
diff --git a/src/lib/analyse_audio_job.cc b/src/lib/analyse_audio_job.cc index ead36bca1..e77f83bde 100644 --- a/src/lib/analyse_audio_job.cc +++ b/src/lib/analyse_audio_job.cc @@ -140,7 +140,7 @@ AnalyseAudioJob::json_name () const void AnalyseAudioJob::run () { - shared_ptr<Player> player (new Player(_film, _playlist, _playlist->length(_film))); + shared_ptr<Player> player (new Player(_film, _playlist)); player->set_ignore_video (); player->set_ignore_text (); player->set_fast (); diff --git a/src/lib/encoder.cc b/src/lib/encoder.cc index b52507ed1..0a29989b1 100644 --- a/src/lib/encoder.cc +++ b/src/lib/encoder.cc @@ -41,7 +41,7 @@ using boost::shared_ptr; Encoder::Encoder (shared_ptr<const Film> film, weak_ptr<Job> job) : _film (film) , _job (job) - , _player (new Player(film, film->playlist(), film->length())) + , _player (new Player(film)) { } diff --git a/src/lib/hints.cc b/src/lib/hints.cc index 68cf82b84..581d63972 100644 --- a/src/lib/hints.cc +++ b/src/lib/hints.cc @@ -259,7 +259,7 @@ Hints::thread () emit (bind(boost::ref(Progress), _("Examining closed captions"))); - shared_ptr<Player> player (new Player(film, film->playlist(), film->length())); + shared_ptr<Player> player (new Player(film)); player->set_ignore_video (); player->set_ignore_audio (); player->Text.connect (bind(&Hints::text, this, _1, _2, _4)); diff --git a/src/lib/player.cc b/src/lib/player.cc index 00650d88d..e41cecf13 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -85,7 +85,23 @@ int const PlayerProperty::FILM_VIDEO_FRAME_RATE = 703; int const PlayerProperty::DCP_DECODE_REDUCTION = 704; int const PlayerProperty::PLAYBACK_LENGTH = 705; -Player::Player (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist_, DCPTime playback_length) +Player::Player (shared_ptr<const Film> film) + : _film (film) + , _suspended (0) + , _ignore_video (false) + , _ignore_audio (false) + , _ignore_text (false) + , _always_burn_open_subtitles (false) + , _fast (false) + , _tolerant (film->tolerant()) + , _play_referenced (false) + , _audio_merger (_film->audio_frame_rate()) + , _shuffler (0) +{ + construct (); +} + +Player::Player (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist_) : _film (film) , _playlist (playlist_) , _suspended (0) @@ -98,7 +114,12 @@ Player::Player (shared_ptr<const Film> film, shared_ptr<const Playlist> playlist , _play_referenced (false) , _audio_merger (_film->audio_frame_rate()) , _shuffler (0) - , _playback_length (playback_length) +{ + construct (); +} + +void +Player::construct () { _film_changed_connection = _film->Change.connect (bind (&Player::film_change, this, _1, _2)); /* The butler must hear about this first, so since we are proxying this through to the butler we must @@ -127,15 +148,6 @@ Player::setup_pieces () } -void -Player::set_playback_length (DCPTime len) -{ - Change (CHANGE_TYPE_PENDING, PlayerProperty::PLAYBACK_LENGTH, false); - _playback_length = len; - Change (CHANGE_TYPE_DONE, PlayerProperty::PLAYBACK_LENGTH, false); - setup_pieces (); -} - bool have_video (shared_ptr<const Content> content) { @@ -151,6 +163,8 @@ have_audio (shared_ptr<const Content> content) void Player::setup_pieces_unlocked () { + _playback_length = _playlist ? _playlist->length(_film) : _film->length(); + list<shared_ptr<Piece> > old_pieces = _pieces; _pieces.clear (); @@ -1247,6 +1261,6 @@ Player::content_time_to_dcp (shared_ptr<Content> content, ContentTime t) shared_ptr<const Playlist> Player::playlist () const { - return _playlist; + return _playlist ? _playlist : _film->playlist(); } diff --git a/src/lib/player.h b/src/lib/player.h index 407f7651a..51de78982 100644 --- a/src/lib/player.h +++ b/src/lib/player.h @@ -69,7 +69,8 @@ public: class Player : public boost::enable_shared_from_this<Player>, public boost::noncopyable { public: - Player (boost::shared_ptr<const Film>, boost::shared_ptr<const Playlist> playlist, dcpomatic::DCPTime playback_length); + Player (boost::shared_ptr<const Film>); + Player (boost::shared_ptr<const Film>, boost::shared_ptr<const Playlist> playlist); ~Player (); bool pass (); @@ -82,7 +83,6 @@ public: return _video_container_size; } - void set_playback_length (dcpomatic::DCPTime len); void set_video_container_size (dcp::Size); void set_ignore_video (); void set_ignore_audio (); @@ -115,6 +115,7 @@ private: friend struct empty_test2; friend struct check_reuse_old_data_test; + void construct (); void setup_pieces (); void setup_pieces_unlocked (); void flush (); @@ -151,6 +152,7 @@ private: mutable boost::mutex _mutex; boost::shared_ptr<const Film> _film; + /** Playlist, or 0 if we are using the one from the _film */ boost::shared_ptr<const Playlist> _playlist; /** > 0 if we are suspended (i.e. pass() and seek() do nothing) */ |
