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)
, _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
}
-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)
{
- return static_cast<bool>(content->video);
+ return static_cast<bool>(content->video) && content->video->use();
}
bool
void
Player::setup_pieces_unlocked ()
{
+ _playback_length = _playlist ? _playlist->length(_film) : _film->length();
+
list<shared_ptr<Piece> > old_pieces = _pieces;
_pieces.clear ();
video.image,
piece->content->video->crop (),
piece->content->video->fade (_film, video.frame),
- piece->content->video->scale().size (
- piece->content->video, _video_container_size, _film->frame_size ()
- ),
+ scale_for_display(piece->content->video->scaled_size(_film->frame_size()), _video_container_size, _film->frame_size()),
_video_container_size,
video.eyes,
video.part,
shared_ptr<const Playlist>
Player::playlist () const
{
- return _playlist;
+ return _playlist ? _playlist : _film->playlist();
}