- if (_video_content->video_frame_type() == VIDEO_FRAME_TYPE_2D) {
- fill_up_to_2d (to_push.front().frame);
- } else {
- fill_up_to_3d (to_push.front().frame, to_push.front().eyes);
+ boost::optional<VideoFrame> from;
+ boost::optional<VideoFrame> to;
+
+ if (_decoded_video.empty() && _last_seek_time && _last_seek_accurate) {
+ from = _last_seek_time->frames (_video_content->video_frame_rate ());
+ to = to_push.front().frame;
+ } else if (!_decoded_video.empty ()) {
+ from = _decoded_video.back().frame + 1;
+ to = to_push.front().frame;
+ }
+
+ if (from) {
+ if (_video_content->video_frame_type() == VIDEO_FRAME_TYPE_2D) {
+ fill_2d (from.get(), to.get ());
+ } else {
+ fill_3d (from.get(), to.get(), to_push.front().eyes);
+ }