X-Git-Url: https://main.carlh.net/gitweb/?p=dcpomatic.git;a=blobdiff_plain;f=src%2Flib%2Fplayer.cc;h=4f81199a5a49847394ff58834786624bbec2d4a0;hp=00650d88dc9412648d2c298ac11594e0601122c4;hb=97f0b9b3ed8a2c64b0f2cb0c6d4d07acde51be6b;hpb=4b7185e4eda53534c4d71a1f31ba33ca3dd8dc8d diff --git a/src/lib/player.cc b/src/lib/player.cc index 00650d88d..4f81199a5 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 film, shared_ptr playlist_, DCPTime playback_length) +Player::Player (shared_ptr 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 film, shared_ptr playlist_) : _film (film) , _playlist (playlist_) , _suspended (0) @@ -98,7 +114,12 @@ Player::Player (shared_ptr film, shared_ptr 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,19 +148,10 @@ 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 content) { - return static_cast(content->video); + return static_cast(content->video) && content->video->use(); } bool @@ -151,6 +163,8 @@ have_audio (shared_ptr content) void Player::setup_pieces_unlocked () { + _playback_length = _playlist ? _playlist->length(_film) : _film->length(); + list > old_pieces = _pieces; _pieces.clear (); @@ -850,9 +864,7 @@ Player::video (weak_ptr wp, ContentVideo video) 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, @@ -1247,6 +1259,6 @@ Player::content_time_to_dcp (shared_ptr content, ContentTime t) shared_ptr Player::playlist () const { - return _playlist; + return _playlist ? _playlist : _film->playlist(); }