BlackDecoder::BlackDecoder (shared_ptr<const Film> f, shared_ptr<NullContent> c)
: Decoder (f)
- , VideoDecoder (f, c)
+ , VideoDecoder (f)
+ , _null_content (c)
{
}
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);
}
}
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 ();
}