summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2021-04-23 23:48:20 +0200
committerCarl Hetherington <cth@carlh.net>2021-05-07 09:29:58 +0200
commit8aa7473b9e2ed012e5812f2511a624a6fea79d14 (patch)
treecf80c428da9257e9b6dfe880e2bb524d2909cc9e
parent9208efcd05052b12d4f0587809638c6a5654100f (diff)
Add Piece::decoder_for().
-rw-r--r--src/lib/piece.cc13
-rw-r--r--src/lib/piece.h2
-rw-r--r--src/lib/player.cc5
3 files changed, 18 insertions, 2 deletions
diff --git a/src/lib/piece.cc b/src/lib/piece.cc
index 5c4563c0e..86fdb5ad4 100644
--- a/src/lib/piece.cc
+++ b/src/lib/piece.cc
@@ -163,3 +163,16 @@ Piece::audio_gain () const
DCPOMATIC_ASSERT (content->audio);
return content->audio->gain();
}
+
+
+shared_ptr<Decoder>
+Piece::decoder_for (shared_ptr<Content> content_) const
+{
+ if (content_ == content) {
+ return decoder;
+ }
+
+ return {};
+}
+
+
diff --git a/src/lib/piece.h b/src/lib/piece.h
index eea5021ca..3df451182 100644
--- a/src/lib/piece.h
+++ b/src/lib/piece.h
@@ -63,6 +63,8 @@ public:
int resampled_audio_frame_rate (std::shared_ptr<const Film> film) const;
double audio_gain () const;
+ std::shared_ptr<Decoder> decoder_for (std::shared_ptr<Content> content) const;
+
std::shared_ptr<Content> content;
std::shared_ptr<Decoder> decoder;
boost::optional<dcpomatic::DCPTimePeriod> ignore_video;
diff --git a/src/lib/player.cc b/src/lib/player.cc
index d95cf661e..dfd005c9c 100644
--- a/src/lib/player.cc
+++ b/src/lib/player.cc
@@ -187,8 +187,9 @@ Player::setup_pieces_unlocked ()
shared_ptr<Decoder> old_decoder;
for (auto j: old_pieces) {
- if (j->content == i) {
- old_decoder = j->decoder;
+ auto decoder = j->decoder_for(i);
+ if (decoder) {
+ old_decoder = decoder;
break;
}
}