diff options
| author | Carl Hetherington <cth@carlh.net> | 2017-08-03 17:54:06 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2017-08-14 21:07:49 +0100 |
| commit | 0253b4e45c71a1c2e2a8bffaf1c3cb84a0a3e41a (patch) | |
| tree | 85ca9af20c85ca04a221ca9023c0d2980ffeeca7 /src/lib/player.cc | |
| parent | e952a7b0681d1ad2fc6ebcd0cd7231bf59bbe043 (diff) | |
Basics of forced reduction of JPEG2000 decode resolution.
Diffstat (limited to 'src/lib/player.cc')
| -rw-r--r-- | src/lib/player.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/lib/player.cc b/src/lib/player.cc index 3d191a302..7e21ef937 100644 --- a/src/lib/player.cc +++ b/src/lib/player.cc @@ -127,7 +127,10 @@ Player::setup_pieces () shared_ptr<DCPDecoder> dcp = dynamic_pointer_cast<DCPDecoder> (decoder); if (dcp && _play_referenced) { - dcp->set_decode_referenced (); + if (_play_referenced) { + dcp->set_decode_referenced (); + } + dcp->set_forced_reduction (_dcp_decode_reduction); } shared_ptr<Piece> piece (new Piece (i, decoder, frc)); @@ -850,6 +853,10 @@ Player::subtitle_stop (weak_ptr<Piece> wp, ContentTime to) void Player::seek (DCPTime time, bool accurate) { + if (!_have_valid_pieces) { + setup_pieces (); + } + if (_audio_processor) { _audio_processor->flush (); } @@ -950,3 +957,15 @@ Player::discard_audio (shared_ptr<const AudioBuffers> audio, DCPTime time, DCPTi cut->copy_from (audio.get(), remaining_frames, discard_frames, 0); return make_pair(cut, time + discard_time); } + +void +Player::set_dcp_decode_reduction (optional<int> reduction) +{ + if (reduction == _dcp_decode_reduction) { + return; + } + + _dcp_decode_reduction = reduction; + _have_valid_pieces = false; + Changed (false); +} |
