X-Git-Url: https://main.carlh.net/gitweb/?a=blobdiff_plain;f=src%2Flib%2Fblack_decoder.cc;h=beb6bfef385c5b5f5a3c21a67e95d7aece5d845a;hb=5fa669bbfc7392d29c9ec94cf6527c56558fe43f;hp=e8e1a3df2e2ce967bb5ae79d0fcfef16a82e85da;hpb=64a2f1bb6a7b972607fa363631ef7a47444e8217;p=dcpomatic.git diff --git a/src/lib/black_decoder.cc b/src/lib/black_decoder.cc index e8e1a3df2..beb6bfef3 100644 --- a/src/lib/black_decoder.cc +++ b/src/lib/black_decoder.cc @@ -25,7 +25,8 @@ using boost::shared_ptr; BlackDecoder::BlackDecoder (shared_ptr f, shared_ptr c) : Decoder (f) - , VideoDecoder (f, c) + , VideoDecoder (f) + , _null_content (c) { } @@ -36,9 +37,9 @@ BlackDecoder::pass () if (!_image) { _image.reset (new SimpleImage (AV_PIX_FMT_RGB24, video_size(), true)); _image->make_black (); - video (_image, false, _next_video); + video (_image, false, _next_video_frame); } else { - video (_image, true, _next_video); + video (_image, true, _next_video_frame); } } @@ -53,20 +54,28 @@ BlackDecoder::video_frame_rate () const return f->dcp_video_frame_rate (); } -ContentVideoFrame +VideoContent::Frame BlackDecoder::video_length () const { - return _video_content->length() * video_frame_rate() / TIME_HZ; + return _null_content->length() * video_frame_rate() / TIME_HZ; } -Time -BlackDecoder::next () const +void +BlackDecoder::seek (VideoContent::Frame frame) { - return _next_video; + _next_video_frame = frame; } void -BlackDecoder::seek (Time t) +BlackDecoder::seek_back () +{ + if (_next_video_frame > 0) { + --_next_video_frame; + } +} + +bool +BlackDecoder::done () const { - _next_video = t; + return _next_video_frame >= _null_content->video_length (); }