diff options
Diffstat (limited to 'src/lib/video_decoder.cc')
| -rw-r--r-- | src/lib/video_decoder.cc | 38 |
1 files changed, 17 insertions, 21 deletions
diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc index 891720f6b..99d711693 100644 --- a/src/lib/video_decoder.cc +++ b/src/lib/video_decoder.cc @@ -22,7 +22,6 @@ #include "film.h" #include "image.h" #include "log.h" -#include "options.h" #include "job.h" #include "i18n.h" @@ -30,10 +29,10 @@ using boost::shared_ptr; using boost::optional; -VideoDecoder::VideoDecoder (shared_ptr<Film> f, DecodeOptions o) - : Decoder (f, o) +VideoDecoder::VideoDecoder (shared_ptr<const Film> f) + : Decoder (f) , _video_frame (0) - , _last_source_time (0) + , _last_content_time (0) { } @@ -51,8 +50,13 @@ VideoDecoder::emit_video (shared_ptr<Image> image, double t) sub = _timed_subtitle->subtitle (); } - signal_video (image, false, sub); - _last_source_time = t; + signal_video (image, false, sub, t); +} + +bool +VideoDecoder::have_last_video () const +{ + return _last_image; } /** Called by subclasses to repeat the last video frame that we @@ -60,14 +64,14 @@ VideoDecoder::emit_video (shared_ptr<Image> image, double t) * we will generate a black frame. */ void -VideoDecoder::repeat_last_video () +VideoDecoder::repeat_last_video (double t) { if (!_last_image) { _last_image.reset (new SimpleImage (pixel_format(), native_size(), true)); _last_image->make_black (); } - signal_video (_last_image, true, _last_subtitle); + signal_video (_last_image, true, _last_subtitle, t); } /** Emit our signal to say that some video data is ready. @@ -76,7 +80,7 @@ VideoDecoder::repeat_last_video () * @param sub Subtitle for this frame, or 0. */ void -VideoDecoder::signal_video (shared_ptr<Image> image, bool same, shared_ptr<Subtitle> sub) +VideoDecoder::signal_video (shared_ptr<Image> image, bool same, shared_ptr<Subtitle> sub, double t) { TIMING (N_("Decoder emits %1"), _video_frame); Video (image, same, sub); @@ -84,6 +88,7 @@ VideoDecoder::signal_video (shared_ptr<Image> image, bool same, shared_ptr<Subti _last_image = image; _last_subtitle = sub; + _last_content_time = t; } /** Set up the current subtitle. This will be put onto frames that @@ -102,21 +107,12 @@ VideoDecoder::emit_subtitle (shared_ptr<TimedSubtitle> s) } } -/** Set which stream of subtitles we should use from our source. - * @param s Stream to use. - */ -void -VideoDecoder::set_subtitle_stream (shared_ptr<SubtitleStream> s) -{ - _subtitle_stream = s; -} - void VideoDecoder::set_progress (Job* j) const { assert (j); - - if (_film->length()) { - j->set_progress (float (_video_frame) / _film->length().get()); + + if (_film->video_length()) { + j->set_progress (float (_video_frame) / _film->video_length()); } } |
