X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fvideo_decoder.cc;h=e0a7576eeaf5c51670cf1702c6b7b4597467db15;hb=1104fed9f028f221f58bf1f7287d8cdf63835a47;hp=f4501bbf3e5e5672033b88f868ddbc049907fd49;hpb=880719c0bf2f2ce99ca44a5f5289fdd30962246a;p=dcpomatic.git diff --git a/src/lib/video_decoder.cc b/src/lib/video_decoder.cc index f4501bbf3..e0a7576ee 100644 --- a/src/lib/video_decoder.cc +++ b/src/lib/video_decoder.cc @@ -31,7 +31,7 @@ using boost::optional; VideoDecoder::VideoDecoder (shared_ptr f, shared_ptr o, Job* j) : Decoder (f, o, j) , _video_frame (0) - , _last_source_frame (0) + , _last_source_time (0) { } @@ -39,19 +39,18 @@ VideoDecoder::VideoDecoder (shared_ptr f, shared_ptr /** Called by subclasses to tell the world that some video data is ready. * We find a subtitle then emit it for listeners. * @param image frame to emit. - * @param f Frame within the source. + * @param t Time of the frame within the source, in seconds. */ void -VideoDecoder::emit_video (shared_ptr image, SourceFrame f) +VideoDecoder::emit_video (shared_ptr image, double t) { shared_ptr sub; - if (_timed_subtitle && _timed_subtitle->displayed_at (f / _film->frames_per_second())) { - _film->log()->log (String::compose ("putting subtitle using %1 instead of %2", f, video_frame())); + if (_timed_subtitle && _timed_subtitle->displayed_at (t)) { sub = _timed_subtitle->subtitle (); } - signal_video (image, sub); - _last_source_frame = f; + signal_video (image, false, sub); + _last_source_time = t; } void @@ -62,14 +61,14 @@ VideoDecoder::repeat_last_video () _last_image->make_black (); } - signal_video (_last_image, _last_subtitle); + signal_video (_last_image, true, _last_subtitle); } void -VideoDecoder::signal_video (shared_ptr image, shared_ptr sub) +VideoDecoder::signal_video (shared_ptr image, bool same, shared_ptr sub) { TIMING ("Decoder emits %1", _video_frame); - Video (image, sub); + Video (image, same, sub); ++_video_frame; _last_image = image;