summaryrefslogtreecommitdiff
path: root/src/lib/player.cc
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2017-08-03 17:54:06 +0100
committerCarl Hetherington <cth@carlh.net>2017-08-14 21:07:49 +0100
commit0253b4e45c71a1c2e2a8bffaf1c3cb84a0a3e41a (patch)
tree85ca9af20c85ca04a221ca9023c0d2980ffeeca7 /src/lib/player.cc
parente952a7b0681d1ad2fc6ebcd0cd7231bf59bbe043 (diff)
Basics of forced reduction of JPEG2000 decode resolution.
Diffstat (limited to 'src/lib/player.cc')
-rw-r--r--src/lib/player.cc21
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);
+}