graph_->set_value("frame-time", frame_timer.elapsed()*format_desc_.fps*0.5);\r
event_subject_ << monitor::event("profiler/time") % frame_timer.elapsed() % (1.0/format_desc_.fps); \r
\r
- graph_->set_text(print());\r
-\r
event_subject_ << monitor::event("file/time") % monitor::duration(file_frame_number()/fps_) \r
% monitor::duration(file_nb_frames()/fps_)\r
<< monitor::event("file/frame") % static_cast<int32_t>(file_frame_number())\r
muxer_.clear();\r
\r
// TODO: Fix HACK.\r
-\r
- // BEGIN HACK: There is no way to flush yadif. Need to poll 2 frames.\r
- if(target > 0)\r
- target -= 1; \r
- // END HACK\r
-\r
+ \r
target = std::min(target, file_nb_frames());\r
\r
input_.seek(target);\r
muxer_.clear();\r
\r
// BEGIN HACK: There is no way to flush yadif. Need to poll 2 frames.\r
- decode_next_frame();\r
- if(!muxer_.empty())\r
- muxer_.pop();\r
+ for(int n = 0; n < 25 && file_frame_number() != target+1; ++n)\r
+ {\r
+ decode_next_frame();\r
+ if(!muxer_.empty())\r
+ muxer_.pop();\r
+ }\r
// END HACK\r
\r
decode_next_frame();\r
muxer_.push(video);\r
muxer_.push(audio);\r
}\r
+ graph_->set_text(print());\r
}\r
};\r
\r