summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2019-11-10 22:51:55 +0100
committerCarl Hetherington <cth@carlh.net>2019-11-11 14:15:44 +0100
commit0e8a1ab7c41756115f44229053e1e7024530fb32 (patch)
treeddeeb9969f5c783ba208574da67c9c7fc591b623
parentc247a1b81b78164acf84f4b003062fab25e64b53 (diff)
Make DecoderPart::_position an optional.
-rw-r--r--src/lib/audio_decoder.cc4
-rw-r--r--src/lib/audio_decoder.h2
-rw-r--r--src/lib/decoder.cc4
-rw-r--r--src/lib/decoder_part.h2
-rw-r--r--src/lib/ffmpeg_decoder.cc2
-rw-r--r--src/lib/text_decoder.h4
-rw-r--r--src/lib/video_decoder.cc2
-rw-r--r--src/lib/video_decoder.h4
8 files changed, 12 insertions, 12 deletions
diff --git a/src/lib/audio_decoder.cc b/src/lib/audio_decoder.cc
index e0fb20b7e..a5e86f22b 100644
--- a/src/lib/audio_decoder.cc
+++ b/src/lib/audio_decoder.cc
@@ -111,7 +111,7 @@ AudioDecoder::stream_position (shared_ptr<const Film> film, AudioStreamPtr strea
return ContentTime::from_frames (i->second, _content->resampled_frame_rate(film));
}
-ContentTime
+boost::optional<ContentTime>
AudioDecoder::position (shared_ptr<const Film> film) const
{
optional<ContentTime> p;
@@ -122,7 +122,7 @@ AudioDecoder::position (shared_ptr<const Film> film) const
}
}
- return p.get_value_or(ContentTime());
+ return p;
}
void
diff --git a/src/lib/audio_decoder.h b/src/lib/audio_decoder.h
index 32d71c067..d81a1c7c8 100644
--- a/src/lib/audio_decoder.h
+++ b/src/lib/audio_decoder.h
@@ -47,7 +47,7 @@ class AudioDecoder : public boost::enable_shared_from_this<AudioDecoder>, public
public:
AudioDecoder (Decoder* parent, boost::shared_ptr<const AudioContent> content, bool fast);
- dcpomatic::ContentTime position (boost::shared_ptr<const Film> film) const;
+ boost::optional<dcpomatic::ContentTime> position (boost::shared_ptr<const Film> film) const;
void emit (boost::shared_ptr<const Film> film, AudioStreamPtr stream, boost::shared_ptr<const AudioBuffers>, dcpomatic::ContentTime);
void seek ();
void flush ();
diff --git a/src/lib/decoder.cc b/src/lib/decoder.cc
index 3cadcca47..0f2bc4358 100644
--- a/src/lib/decoder.cc
+++ b/src/lib/decoder.cc
@@ -44,11 +44,11 @@ Decoder::position () const
optional<ContentTime> pos;
shared_ptr<const Film> f = film();
- if (video && !video->ignore() && (!pos || video->position(f) < *pos)) {
+ if (video && !video->ignore() && (!pos || video->position(f).get_value_or(ContentTime()) < *pos)) {
pos = video->position(f);
}
- if (audio && !audio->ignore() && (!pos || audio->position(f) < *pos)) {
+ if (audio && !audio->ignore() && (!pos || audio->position(f).get_value_or(ContentTime()) < *pos)) {
pos = audio->position(f);
}
diff --git a/src/lib/decoder_part.h b/src/lib/decoder_part.h
index 53d1a1b08..c8e13445a 100644
--- a/src/lib/decoder_part.h
+++ b/src/lib/decoder_part.h
@@ -34,7 +34,7 @@ public:
DecoderPart (Decoder* parent);
virtual ~DecoderPart () {}
- virtual dcpomatic::ContentTime position (boost::shared_ptr<const Film> film) const = 0;
+ virtual boost::optional<dcpomatic::ContentTime> position (boost::shared_ptr<const Film> film) const = 0;
virtual void seek () = 0;
void set_ignore (bool i) {
diff --git a/src/lib/ffmpeg_decoder.cc b/src/lib/ffmpeg_decoder.cc
index 62d4d2655..04aa022b2 100644
--- a/src/lib/ffmpeg_decoder.cc
+++ b/src/lib/ffmpeg_decoder.cc
@@ -126,7 +126,7 @@ FFmpegDecoder::flush ()
if (video) {
double const vfr = _ffmpeg_content->video_frame_rate().get();
Frame const f = full_length.frames_round (vfr);
- Frame v = video->position(film()).frames_round(vfr) + 1;
+ Frame v = video->position(film()).get_value_or(ContentTime()).frames_round(vfr) + 1;
while (v < f) {
video->emit (film(), shared_ptr<const ImageProxy> (new RawImageProxy (_black_image)), v);
++v;
diff --git a/src/lib/text_decoder.h b/src/lib/text_decoder.h
index 02afeeb94..fba9b5947 100644
--- a/src/lib/text_decoder.h
+++ b/src/lib/text_decoder.h
@@ -44,7 +44,7 @@ public:
dcpomatic::ContentTime first
);
- dcpomatic::ContentTime position (boost::shared_ptr<const Film>) const {
+ boost::optional<dcpomatic::ContentTime> position (boost::shared_ptr<const Film>) const {
return _position;
}
@@ -68,7 +68,7 @@ public:
private:
boost::shared_ptr<const TextContent> _content;
- dcpomatic::ContentTime _position;
+ boost::optional<dcpomatic::ContentTime> _position;
};
#endif
diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc
index 0b97e5e87..7a3a3e19b 100644
--- a/src/lib/video_decoder.cc
+++ b/src/lib/video_decoder.cc
@@ -118,7 +118,7 @@ VideoDecoder::emit (shared_ptr<const Film> film, shared_ptr<const ImageProxy> im
void
VideoDecoder::seek ()
{
- _position = ContentTime();
+ _position = boost::optional<ContentTime>();
_last_emitted_frame.reset ();
_last_emitted_eyes.reset ();
}
diff --git a/src/lib/video_decoder.h b/src/lib/video_decoder.h
index 76a91c525..34ce8f288 100644
--- a/src/lib/video_decoder.h
+++ b/src/lib/video_decoder.h
@@ -51,7 +51,7 @@ public:
friend struct ffmpeg_pts_offset_test;
friend void ffmpeg_decoder_sequential_test_one (boost::filesystem::path file, float fps, int gaps, int video_length);
- dcpomatic::ContentTime position (boost::shared_ptr<const Film>) const {
+ boost::optional<dcpomatic::ContentTime> position (boost::shared_ptr<const Film>) const {
return _position;
}
@@ -66,7 +66,7 @@ private:
/** Frame of last thing to be emitted */
boost::optional<Frame> _last_emitted_frame;
boost::optional<Eyes> _last_emitted_eyes;
- dcpomatic::ContentTime _position;
+ boost::optional<dcpomatic::ContentTime> _position;
};
#endif