+ { \r
+ const auto& format_desc = frame_factory_->get_video_format_desc();\r
+\r
+ if(abs(context_->fps()/2.0 - format_desc.fps) < 2.0) // flash == 2 * format -> interlace\r
+ {\r
+ auto frame1 = render_frame();\r
+ auto frame2 = render_frame();\r
+ frame_buffer_.push(core::basic_frame::interlace(frame1, frame2, format_desc.field_mode));\r
+ }\r
+ else if(abs(context_->fps()- format_desc.fps/2.0) < 2.0) // format == 2 * flash -> duplicate\r
+ {\r
+ auto frame = render_frame();\r
+ frame_buffer_.push(frame);\r
+ frame_buffer_.push(frame);\r
+ }\r
+ else //if(abs(renderer_->fps() - format_desc_.fps) < 0.1) // format == flash -> simple\r
+ {\r
+ auto frame = render_frame();\r
+ frame_buffer_.push(frame);\r
+ }\r
+\r
+ if(context_->is_empty())\r
+ {\r
+ context_.reset(nullptr);\r
+ return;\r
+ }\r
+\r
+ graph_->set_value("output-buffer-count", static_cast<float>(frame_buffer_.size())/static_cast<float>(frame_buffer_.capacity())); \r
+ fps_.fetch_and_store(static_cast<int>(context_->fps()*100.0)); \r
+ graph_->set_text(narrow(print()));\r
+\r
+ render(renderer);\r