diff options
| author | Carl Hetherington <cth@carlh.net> | 2019-11-10 22:51:55 +0100 |
|---|---|---|
| committer | Carl Hetherington <cth@carlh.net> | 2019-11-11 14:15:44 +0100 |
| commit | 0e8a1ab7c41756115f44229053e1e7024530fb32 (patch) | |
| tree | ddeeb9969f5c783ba208574da67c9c7fc591b623 | |
| parent | c247a1b81b78164acf84f4b003062fab25e64b53 (diff) | |
Make DecoderPart::_position an optional.
| -rw-r--r-- | src/lib/audio_decoder.cc | 4 | ||||
| -rw-r--r-- | src/lib/audio_decoder.h | 2 | ||||
| -rw-r--r-- | src/lib/decoder.cc | 4 | ||||
| -rw-r--r-- | src/lib/decoder_part.h | 2 | ||||
| -rw-r--r-- | src/lib/ffmpeg_decoder.cc | 2 | ||||
| -rw-r--r-- | src/lib/text_decoder.h | 4 | ||||
| -rw-r--r-- | src/lib/video_decoder.cc | 2 | ||||
| -rw-r--r-- | src/lib/video_decoder.h | 4 |
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 |
