\r
#include "../../ffmpeg_error.h"\r
\r
-#include <common/exception/exceptions.h>\r
-#include <core/producer/frame/basic_frame.h>\r
-#include <core/producer/frame/frame_factory.h>\r
-#include <core/mixer/write_frame.h>\r
-\r
-#include <boost/circular_buffer.hpp>\r
-\r
-#include <tbb/task_group.h>\r
+#include <boost/assign.hpp>\r
\r
#include <cstdio>\r
#include <sstream>\r
\r
+#if defined(_MSC_VER)\r
+#pragma warning (push)\r
+#pragma warning (disable : 4244)\r
+#endif\r
extern "C" \r
{\r
- #define __STDC_CONSTANT_MACROS\r
- #define __STDC_LIMIT_MACROS\r
#include <libavutil/avutil.h>\r
#include <libavutil/imgutils.h>\r
#include <libavfilter/avfilter.h>\r
#include <libavfilter/vsink_buffer.h>\r
#include <libavfilter/vsrc_buffer.h>\r
}\r
+#if defined(_MSC_VER)\r
+#pragma warning (pop)\r
+#endif\r
\r
namespace caspar {\r
\r
\r
void push(const std::shared_ptr<AVFrame>& frame)\r
{ \r
-\r
if(!graph_)\r
{\r
graph_.reset(avfilter_graph_alloc(), [](AVFilterGraph* p){avfilter_graph_free(&p);});\r
\r
AVFilterInOut* outputs = avfilter_inout_alloc();\r
AVFilterInOut* inputs = avfilter_inout_alloc();\r
-\r
+ \r
outputs->name = av_strdup("in");\r
outputs->filter_ctx = buffersrc_ctx_;\r
outputs->pad_idx = 0;\r
inputs->pad_idx = 0;\r
inputs->next = NULL;\r
\r
- int ret = avfilter_graph_parse(graph_.get(), filters_.c_str(), &inputs, &outputs, NULL);\r
-\r
+ THROW_ON_ERROR2(avfilter_graph_parse(graph_.get(), filters_.c_str(), &inputs, &outputs, NULL), "[filter]");\r
+ \r
avfilter_inout_free(&inputs);\r
avfilter_inout_free(&outputs);\r
- \r
- THROW_ON_ERROR(ret, "[filter]", "avfilter_graph_parse");\r
- \r
- THROW_ON_ERROR2(avfilter_graph_config(graph_.get(), NULL), "[filter]");\r
+\r
+ THROW_ON_ERROR2(avfilter_graph_config(graph_.get(), NULL), "[filter]"); \r
\r
for(size_t n = 0; n < graph_->filter_count; ++n)\r
{\r
};\r
\r
filter::filter(const std::wstring& filters) : impl_(new implementation(filters)){}\r
+filter::filter(filter&& other) : impl_(std::move(other.impl_)){}\r
+filter& filter::operator=(filter&& other){impl_ = std::move(other.impl_); return *this;}\r
std::vector<safe_ptr<AVFrame>> filter::execute(const std::shared_ptr<AVFrame>& frame) {return impl_->execute(frame);}\r
}
\ No newline at end of file