#include "color_producer.h"\r
\r
#include "../frame/basic_frame.h"\r
+#include "../frame/frame_factory.h"\r
#include "../../mixer/write_frame.h"\r
\r
#include <sstream>\r
\r
namespace caspar { namespace core {\r
\r
+class write_frame;\r
+struct frame_factory;\r
+\r
safe_ptr<frame_producer> create_color_producer(const safe_ptr<core::frame_factory>& frame_factory, const std::vector<std::wstring>& params);\r
safe_ptr<core::write_frame> create_color_frame(void* tag, const safe_ptr<core::frame_factory>& frame_factory, const std::wstring& color);\r
\r
*/\r
#pragma once\r
\r
-#include "frame/frame_factory.h"\r
-\r
#include <common/memory/safe_ptr.h>\r
\r
#include <boost/noncopyable.hpp>\r
namespace caspar { namespace core {\r
\r
class basic_frame;\r
+struct frame_factory;\r
\r
-class frame_producer : boost::noncopyable\r
+struct frame_producer : boost::noncopyable\r
{\r
public:\r
enum hints\r
\r
namespace caspar { namespace core {\r
\r
-class frame_producer;\r
+struct frame_producer;\r
class basic_frame;\r
\r
class layer : boost::noncopyable\r
#define __STDC_LIMIT_MACROS\r
#include <libavformat/avformat.h>\r
#include <libavcodec/avcodec.h>\r
+ #include <libavfilter/avfilter.h>\r
#include <libswscale/swscale.h>\r
}\r
\r
#include "ffmpeg_consumer.h"\r
\r
#include <core/mixer/read_frame.h>\r
+#include <core/consumer/frame_consumer.h>\r
+#include <core/video_format.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/utility/string.h>\r
*/\r
#pragma once\r
\r
-#include <core/consumer/frame_consumer.h>\r
-#include <core/video_format.h>\r
-\r
#include <boost/property_tree/ptree.hpp>\r
\r
#include <string>\r
\r
namespace caspar { \r
\r
-safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const std::vector<std::wstring>& params);\r
-safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const boost::property_tree::ptree& ptree);\r
+//safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const std::vector<std::wstring>& params);\r
+//safe_ptr<core::frame_consumer> create_ffmpeg_consumer(const boost::property_tree::ptree& ptree);\r
\r
}
\ No newline at end of file
av_lockmgr_register(ffmpeg_lock_callback);\r
av_log_set_callback(log_callback);\r
\r
- core::register_consumer_factory([](const std::vector<std::wstring>& params){return create_ffmpeg_consumer(params);});\r
+ //core::register_consumer_factory([](const std::vector<std::wstring>& params){return create_ffmpeg_consumer(params);});\r
core::register_producer_factory(create_ffmpeg_producer);\r
}\r
\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>\r
+ <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
+ </ClCompile>\r
+ <ClCompile Include="ffmpeg.cpp">\r
+ <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">false</ShowIncludes>\r
</ClCompile>\r
- <ClCompile Include="ffmpeg.cpp" />\r
<ClCompile Include="producer\audio\audio_decoder.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
+ <ShowIncludes Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">false</ShowIncludes>\r
</ClCompile>\r
<ClCompile Include="producer\filter\filter.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
#pragma once\r
\r
+#include <common/exception/exceptions.h>\r
+\r
#include <string>\r
\r
#pragma warning(push, 1)\r
\r
#include "../../ffmpeg_error.h"\r
\r
-#include <tbb/task_group.h>\r
+#include <core/video_format.h>\r
+\r
+#include <tbb/cache_aligned_allocator.h>\r
+\r
+#include <queue>\r
\r
#if defined(_MSC_VER)\r
#pragma warning (push)\r
\r
#include <common/memory/safe_ptr.h>\r
\r
-#include <core/video_format.h>\r
-\r
#include <boost/noncopyable.hpp>\r
\r
-#include <deque>\r
+#include <vector>\r
\r
-struct AVStream;\r
-struct AVCodecContext;\r
+struct AVPacket;\r
+struct AVFormatContext;\r
\r
namespace caspar {\r
\r
+namespace core {\r
+\r
+struct video_format_desc;\r
+\r
+}\r
+\r
class audio_decoder : boost::noncopyable\r
{\r
public:\r
#include "audio/audio_decoder.h"\r
#include "video/video_decoder.h"\r
\r
+#include <common/env.h>\r
#include <common/utility/assert.h>\r
-#include <common/utility/timer.h>\r
#include <common/diagnostics/graph.h>\r
\r
-#include <core/mixer/write_frame.h>\r
#include <core/video_format.h>\r
-#include <core/producer/frame/audio_transform.h>\r
+#include <core/producer/frame_producer.h>\r
+#include <core/producer/frame/frame_factory.h>\r
#include <core/producer/frame/basic_frame.h>\r
-#include <core/producer/color/color_producer.h>\r
-\r
-#include <common/env.h>\r
\r
+#include <boost/assign.hpp>\r
#include <boost/timer.hpp>\r
-#include <boost/range/algorithm.hpp>\r
-#include <boost/range/algorithm_ext.hpp>\r
+#include <boost/foreach.hpp>\r
+#include <boost/filesystem.hpp>\r
+#include <boost/range/algorithm/find_if.hpp>\r
+#include <boost/range/algorithm/find.hpp>\r
\r
#include <tbb/task_group.h>\r
-\r
-#include <deque>\r
-#include <vector>\r
+#include <tbb/parallel_invoke.h>\r
\r
namespace caspar {\r
\r
*/\r
#pragma once\r
\r
-#include <core/producer/frame_producer.h>\r
-\r
#include <common/memory/safe_ptr.h>\r
\r
#include <string>\r
#include <vector>\r
\r
namespace caspar {\r
+\r
+namespace core {\r
+\r
+struct frame_producer;\r
+struct frame_factory;\r
+\r
+}\r
\r
safe_ptr<core::frame_producer> create_ffmpeg_producer(const safe_ptr<core::frame_factory>& frame_factory, const std::vector<std::wstring>& params);\r
\r
\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
#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
\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
\r
#include <common/memory/safe_ptr.h>\r
\r
+#include <boost/noncopyable.hpp>\r
+\r
#include <string>\r
#include <vector>\r
\r
return false;\r
}\r
\r
-class filter\r
+class filter : boost::noncopyable\r
{\r
public:\r
filter(const std::wstring& filters = L"");\r
+ filter(filter&& other);\r
+ filter& operator=(filter&& other);\r
\r
std::vector<safe_ptr<AVFrame>> execute(const std::shared_ptr<AVFrame>& frame);\r
\r
\r
#include "parallel_yadif.h"\r
\r
+#include <common/log/log.h>\r
+\r
+#if defined(_MSC_VER)\r
+#pragma warning (push)\r
+#pragma warning (disable : 4244)\r
+#endif\r
extern "C" \r
{\r
#include <libavfilter/avfilter.h>\r
}\r
+#if defined(_MSC_VER)\r
+#pragma warning (pop)\r
+#endif\r
\r
#include <tbb/parallel_for.h>\r
+#include <tbb/concurrent_queue.h>\r
\r
#include <boost/thread/once.hpp>\r
\r
#pragma once\r
\r
+#include <memory>\r
+\r
struct AVFilterContext;\r
\r
namespace caspar {\r
#include <core/mixer/write_frame.h>\r
\r
#include <common/env.h>\r
+#include <common/exception/exceptions.h>\r
#include <common/log/log.h>\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 <libavcodec/avcodec.h>\r
+ #include <libavformat/avformat.h>\r
+}\r
+#if defined(_MSC_VER)\r
+#pragma warning (pop)\r
+#endif\r
+\r
+#include <boost/foreach.hpp>\r
#include <boost/range/algorithm_ext/push_back.hpp>\r
\r
+#include <deque>\r
+#include <queue>\r
+#include <vector>\r
+\r
using namespace caspar::core;\r
\r
namespace caspar {\r
\r
#include <common/memory/safe_ptr.h>\r
\r
-#include <core/video_format.h>\r
-\r
#include <boost/noncopyable.hpp>\r
\r
#include <vector>\r
\r
+struct AVFrame;\r
+\r
namespace caspar { \r
\r
namespace core {\r
#pragma warning (disable : 4244)\r
#endif\r
\r
-#include "..\stdafx.h"\r
+#include "../stdafx.h"\r
\r
#include "input.h"\r
#include "../ffmpeg_error.h"\r
#include <core/video_format.h>\r
\r
#include <common/diagnostics/graph.h>\r
+#include <common/exception/exceptions.h>\r
+#include <common/exception/win32_exception.h>\r
\r
#include <tbb/concurrent_queue.h>\r
#include <tbb/atomic.h>\r
#include <boost/thread/condition_variable.hpp>\r
#include <boost/thread/mutex.hpp>\r
#include <boost/thread/thread.hpp>\r
-#include <boost/range/iterator_range.hpp>\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 <libavformat/avformat.h>\r
}\r
+#if defined(_MSC_VER)\r
+#pragma warning (pop)\r
+#endif\r
\r
namespace caspar {\r
\r
*/\r
#pragma once\r
\r
-#include <common/diagnostics/graph.h>\r
+#include <common/memory/safe_ptr.h>\r
\r
#include <memory>\r
#include <string>\r
\r
-#include <boost/iterator/iterator_facade.hpp>\r
+#include <boost/noncopyable.hpp>\r
\r
-struct AVCodecContext;\r
+struct AVFormatContext;\r
+struct AVPacket;\r
\r
namespace caspar {\r
+\r
+namespace diagnostics {\r
+\r
+class graph;\r
+\r
+}\r
\r
class input : boost::noncopyable\r
{\r
#include <tbb/concurrent_unordered_map.h>\r
#include <tbb/concurrent_queue.h>\r
\r
-#include <core/producer/frame/pixel_format.h>\r
#include <core/producer/frame/image_transform.h>\r
#include <core/producer/frame/frame_factory.h>\r
#include <core/producer/frame_producer.h>\r
#include <core/mixer/write_frame.h>\r
\r
+#include <common/exception/exceptions.h>\r
#include <common/memory/memcpy.h>\r
\r
#if defined(_MSC_VER)\r
{\r
#include <libswscale/swscale.h>\r
#include <libavcodec/avcodec.h>\r
- #include <libavfilter/avfilter.h>\r
}\r
#if defined(_MSC_VER)\r
#pragma warning (pop)\r
#include "../../stdafx.h"\r
\r
#include "video_decoder.h"\r
+\r
#include "../util.h"\r
#include "../filter/filter.h"\r
\r
#include "../../ffmpeg_error.h"\r
#include "../../tbb_avcodec.h"\r
\r
-#include <common/memory/memcpy.h>\r
-\r
-#include <core/video_format.h>\r
-#include <core/producer/frame/basic_frame.h>\r
-#include <core/mixer/write_frame.h>\r
#include <core/producer/frame/image_transform.h>\r
#include <core/producer/frame/frame_factory.h>\r
-#include <core/producer/color/color_producer.h>\r
+\r
+#include <boost/range/algorithm_ext/push_back.hpp>\r
\r
#include <tbb/task_group.h>\r
\r
-#include <boost/range/algorithm_ext.hpp>\r
+#include <queue>\r
\r
#if defined(_MSC_VER)\r
#pragma warning (push)\r
{\r
#define __STDC_CONSTANT_MACROS\r
#define __STDC_LIMIT_MACROS\r
- #include <libavformat/avformat.h>\r
#include <libavcodec/avcodec.h>\r
+ #include <libavformat/avformat.h>\r
}\r
#if defined(_MSC_VER)\r
#pragma warning (pop)\r
\r
#include <core/video_format.h>\r
\r
-struct AVStream;\r
+#include <boost/noncopyable.hpp>\r
+\r
+#include <vector>\r
+\r
+struct AVFormatContext;\r
+struct AVFrame;\r
+struct AVPacket;\r
\r
namespace caspar {\r
\r
\r
#include <common/log/log.h>\r
#include <common/env.h>\r
+#include <common/utility/assert.h>\r
\r
#include <tbb/task.h>\r
#include <tbb/atomic.h>\r
+#include <tbb/parallel_for.h>\r
#include <tbb/tbb_thread.h>\r
\r
-#include <regex>\r
-#include <boost/algorithm/string.hpp>\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 <libavformat/avformat.h>\r
}\r
+#if defined(_MSC_VER)\r
+#pragma warning (pop)\r
+#endif\r
\r
namespace caspar {\r
\r
#include <core/video_format.h>\r
\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 <common/env.h>\r
#include <core/video_format.h>\r
\r
#include <core/producer/frame/basic_frame.h>\r
+#include <core/producer/frame/frame_factory.h>\r
#include <core/producer/frame/image_transform.h>\r
#include <core/mixer/write_frame.h>\r
\r
channels_.back()->output()->add(index++, create_bluefish_consumer(xml_consumer.second)); \r
else if(name == "decklink") \r
channels_.back()->output()->add(index++, create_decklink_consumer(xml_consumer.second)); \r
- else if(name == "file") \r
- channels_.back()->output()->add(index++, create_ffmpeg_consumer(xml_consumer.second)); \r
+ //else if(name == "file") \r
+ // channels_.back()->output()->add(index++, create_ffmpeg_consumer(xml_consumer.second)); \r
else if(name == "audio")\r
channels_.back()->output()->add(index++, make_safe<oal_consumer>()); \r
else if(name != "<xmlcomment>")\r