return make_safe<basic_frame>(std::move(frames));\r
}\r
\r
+safe_ptr<basic_frame> disable_audio(const safe_ptr<basic_frame>& frame)\r
+{\r
+ auto frame2 = make_safe<basic_frame>(frame);\r
+ frame2->get_frame_transform().volume = 0.0;\r
+ return frame2;\r
+}\r
+ \r
}}
\ No newline at end of file
struct implementation;\r
safe_ptr<implementation> impl_;\r
};\r
-\r
-inline bool is_concrete_frame(const safe_ptr<basic_frame>& frame)\r
-{\r
- return frame != basic_frame::empty() && frame != basic_frame::eof() && frame != basic_frame::late();\r
-}\r
-\r
-inline bool is_concrete_frame(const std::shared_ptr<basic_frame>& frame)\r
-{\r
- return frame != nullptr && frame.get() != basic_frame::empty().get() && frame.get() != basic_frame::eof().get() && frame.get() != basic_frame::late().get();\r
-}\r
+ \r
+safe_ptr<basic_frame> disable_audio(const safe_ptr<basic_frame>& frame);\r
\r
}}
\ No newline at end of file
#include <boost/property_tree/ptree.hpp>\r
\r
namespace caspar { namespace core {\r
- \r
-safe_ptr<basic_frame> disable_audio(const safe_ptr<basic_frame>& frame)\r
-{\r
- auto frame2 = make_safe<basic_frame>(frame);\r
- frame2->get_frame_transform().volume = 0.0;\r
- return frame2;\r
-}\r
\r
struct layer::implementation\r
{ \r
graph_->set_value("frame-time", frame_timer_.elapsed()*format_desc_.fps*0.5);\r
\r
if(frame_buffer_.empty() && input_.eof())\r
- return last_frame();\r
+ return disable_audio(last_frame());\r
\r
if(frame_buffer_.empty())\r
{\r