if(current_frame_++ >= info_.duration)\r
return basic_frame::eof();\r
\r
- auto dest = core::basic_frame::empty();\r
- auto source = core::basic_frame::empty();\r
-\r
- tbb::parallel_invoke\r
- (\r
- [&]\r
- {\r
- dest = receive_and_follow(dest_producer_, hints);\r
- if(dest == core::basic_frame::late())\r
- dest = dest_producer_->last_frame();\r
- },\r
- [&]\r
- {\r
- source = receive_and_follow(source_producer_, hints);\r
- if(source == core::basic_frame::late())\r
- source = source_producer_->last_frame();\r
- }\r
- );\r
+ auto dest = basic_frame::empty();\r
+ auto source = basic_frame::empty();\r
+\r
+ tbb::parallel_invoke(\r
+ [&]\r
+ {\r
+ dest = receive_and_follow(dest_producer_, hints);\r
+ if(dest == core::basic_frame::late())\r
+ dest = dest_producer_->last_frame();\r
+ },\r
+ [&]\r
+ {\r
+ source = receive_and_follow(source_producer_, hints);\r
+ if(source == core::basic_frame::late())\r
+ source = source_producer_->last_frame();\r
+ });\r
\r
return last_frame_ = compose(dest, source);\r
}\r
\r
virtual safe_ptr<core::basic_frame> last_frame() const\r
{\r
- return last_frame_;\r
+ return disable_audio(last_frame_);\r
}\r
\r
virtual int64_t nb_frames() const \r
if(info_.type == transition::mix)\r
{\r
d_frame1->get_image_transform().set_opacity(delta1); \r
- d_frame2->get_image_transform().set_opacity(delta2); \r
+ d_frame2->get_image_transform().set_opacity(delta2);\r
+\r
+ s_frame1->get_image_transform().set_opacity(1.0-delta1); \r
+ s_frame2->get_image_transform().set_opacity(1.0-delta2); \r
}\r
else if(info_.type == transition::slide)\r
{\r