\r
#include <common/assert.h>\r
#include <common/utf.h>\r
-#include <common/spl/memory.h>\r
-//#include "../common/concurrency/executor.h" // Can't include this due to MSVC lambda bug\r
+#include <common/memory.h>\r
+//#include "../common/executor.h" // Can't include this due to MSVC lambda bug\r
\r
#include <common/log.h>\r
#include <common/except.h>\r
#pragma once\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/mixer/image/image_mixer.h>\r
\r
\r
#include <common/assert.h>\r
#include <common/gl/gl_check.h>\r
-#include <common/concurrency/async.h>\r
-#include <common/memory/array.h>\r
+#include <common/future.h>\r
+#include <common/array.h>\r
\r
#include <core/frame/frame.h>\r
#include <core/frame/frame_transform.h>\r
#pragma once\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/mixer/image/blend_modes.h>\r
#include <core/mixer/image/image_mixer.h>\r
#include <core/mixer/image/blend_modes.h>\r
\r
#include <common/enum_class.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/frame/pixel_format.h>\r
#include <core/frame/frame_transform.h>\r
#include "../util/texture.h"\r
\r
#include <common/gl/gl_check.h>\r
-#include <common/concurrency/async.h>\r
-#include <common/memory/array.h>\r
+#include <common/future.h>\r
+#include <common/array.h>\r
\r
#include <core/frame/frame.h>\r
#include <core/frame/frame_transform.h>\r
#pragma once\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
+#include <common/future_fwd.h>\r
\r
#include <core/mixer/image/blend_modes.h>\r
#include <core/mixer/image/image_mixer.h>\r
#include <core/frame/frame_visitor.h>\r
#include <core/video_format.h>\r
\r
-FORWARD1(boost, template<typename> class unique_future);\r
FORWARD2(caspar, core, class frame);\r
FORWARD2(caspar, core, struct pixel_format_desc);\r
FORWARD2(caspar, core, struct video_format_desc);\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
namespace caspar { namespace accelerator { namespace ogl {\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/enum_class.h>\r
\r
#include <cstdint>\r
\r
#include <common/assert.h>\r
#include <common/except.h>\r
-#include <common/concurrency/async.h>\r
-#include <common/memory/array.h>\r
+#include <common/future.h>\r
+#include <common/array.h>\r
#include <common/gl/gl_check.h>\r
#include <common/os/windows/windows.h>\r
\r
\r
#include <core/frame/frame.h>\r
\r
-#include <common/spl/memory.h>\r
-#include <common/concurrency/executor.h>\r
+#include <common/memory.h>\r
+#include <common/executor.h>\r
\r
namespace caspar { namespace accelerator { namespace ogl {\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <string>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <cstddef>\r
\r
#pragma once\r
\r
-#include "../spl/memory.h"\r
-#include "../forward.h"\r
+#include "memory.h"\r
+#include "forward.h"\r
\r
#include <boost/any.hpp>\r
\r
#include <cstddef>\r
#include <cstdint>\r
\r
-FORWARD1(boost, template<typename> class shared_future);\r
-\r
namespace caspar {\r
\r
template<typename T>\r
</Lib>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
+ <ClInclude Include="array.h" />\r
<ClInclude Include="assert.h" />\r
<ClInclude Include="compiler\vs\disable_silly_warnings.h" />\r
- <ClInclude Include="concurrency\async.h" />\r
- <ClInclude Include="concurrency\executor.h" />\r
- <ClInclude Include="concurrency\lock.h" />\r
<ClInclude Include="diagnostics\graph.h" />\r
+ <ClInclude Include="enum_class.h" />\r
+ <ClInclude Include="env.h" />\r
<ClInclude Include="except.h" />\r
+ <ClInclude Include="executor.h" />\r
<ClInclude Include="forward.h" />\r
+ <ClInclude Include="future.h" />\r
+ <ClInclude Include="future_fwd.h" />\r
<ClInclude Include="gl\gl_check.h" />\r
+ <ClInclude Include="lock.h" />\r
<ClInclude Include="log.h" />\r
- <ClInclude Include="memory\array.h" />\r
- <ClInclude Include="memory\memcpy.h" />\r
- <ClInclude Include="memory\memshfl.h" />\r
- <ClInclude Include="memory\page_locked_allocator.h" />\r
- <ClInclude Include="env.h" />\r
+ <ClInclude Include="memory.h" />\r
+ <ClInclude Include="memshfl.h" />\r
<ClInclude Include="os\windows\current_version.h" />\r
<ClInclude Include="os\windows\system_info.h" />\r
- <ClInclude Include="enum_class.h" />\r
<ClInclude Include="os\windows\windows.h" />\r
+ <ClInclude Include="page_locked_allocator.h" />\r
<ClInclude Include="param.h" />\r
+ <ClInclude Include="prec_timer.h" />\r
<ClInclude Include="reactive.h" />\r
- <ClInclude Include="spl\memory.h" />\r
<ClInclude Include="stdafx.h" />\r
<ClInclude Include="tweener.h" />\r
<ClInclude Include="utf.h" />\r
- <ClInclude Include="prec_timer.h" />\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="diagnostics\graph.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
+ <ClCompile Include="env.cpp" />\r
<ClCompile Include="except.cpp" />\r
<ClCompile Include="gl\gl_check.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
<ClCompile Include="log.cpp" />\r
- <ClCompile Include="env.cpp" />\r
- <ClCompile Include="memory\array.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
- <ClCompile Include="memory\page_locked_allocator.cpp">\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">../StdAfx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
+ <ClCompile Include="page_locked_allocator.cpp" />\r
+ <ClCompile Include="prec_timer.cpp" />\r
<ClCompile Include="stdafx.cpp">\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Create</PrecompiledHeader>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">Create</PrecompiledHeader>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">Create</PrecompiledHeader>\r
</ClCompile>\r
- <ClCompile Include="tweener.cpp">\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|x64'">StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|x64'">StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Use</PrecompiledHeader>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|x64'">StdAfx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
+ <ClCompile Include="tweener.cpp" />\r
<ClCompile Include="utf.cpp" />\r
- <ClCompile Include="prec_timer.cpp" />\r
</ItemGroup>\r
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
<ImportGroup Label="ExtensionTargets">\r
<Filter Include="source\os\windows">\r
<UniqueIdentifier>{1f3002ae-ebb8-4195-8cf3-1a5b87822f38}</UniqueIdentifier>\r
</Filter>\r
- <Filter Include="source\memory">\r
- <UniqueIdentifier>{9259676d-c225-4422-a50e-30d152d78dc2}</UniqueIdentifier>\r
- </Filter>\r
<Filter Include="source\gl">\r
<UniqueIdentifier>{0d94bbc2-e196-4618-a90b-19392a3a0a8e}</UniqueIdentifier>\r
</Filter>\r
<Filter Include="source\diagnostics">\r
<UniqueIdentifier>{29a29bcc-a9a0-4083-b713-c3773d18e177}</UniqueIdentifier>\r
</Filter>\r
- <Filter Include="source\concurrency">\r
- <UniqueIdentifier>{644fe2e4-1199-4a0e-8d4c-63cf1ac82f1d}</UniqueIdentifier>\r
- </Filter>\r
<Filter Include="source\compiler">\r
<UniqueIdentifier>{63471750-a430-4167-9b49-31b7a068a913}</UniqueIdentifier>\r
</Filter>\r
<Filter Include="source\compiler\vs">\r
<UniqueIdentifier>{28c25c8a-1277-4d2c-9e85-5af33f9938ea}</UniqueIdentifier>\r
</Filter>\r
- <Filter Include="source\spl">\r
- <UniqueIdentifier>{8b45f3e8-2ab4-4bee-8130-144a7bc795e8}</UniqueIdentifier>\r
- </Filter>\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="diagnostics\graph.cpp">\r
<ClCompile Include="gl\gl_check.cpp">\r
<Filter>source\gl</Filter>\r
</ClCompile>\r
- <ClCompile Include="env.cpp">\r
+ <ClCompile Include="log.cpp">\r
<Filter>source</Filter>\r
</ClCompile>\r
- <ClCompile Include="utf.cpp">\r
+ <ClCompile Include="page_locked_allocator.cpp">\r
<Filter>source</Filter>\r
</ClCompile>\r
<ClCompile Include="prec_timer.cpp">\r
<Filter>source</Filter>\r
</ClCompile>\r
- <ClCompile Include="log.cpp">\r
+ <ClCompile Include="tweener.cpp">\r
<Filter>source</Filter>\r
</ClCompile>\r
- <ClCompile Include="except.cpp">\r
+ <ClCompile Include="utf.cpp">\r
<Filter>source</Filter>\r
</ClCompile>\r
- <ClCompile Include="tweener.cpp">\r
+ <ClCompile Include="env.cpp">\r
<Filter>source</Filter>\r
</ClCompile>\r
- <ClCompile Include="memory\page_locked_allocator.cpp">\r
- <Filter>source\memory</Filter>\r
- </ClCompile>\r
- <ClCompile Include="memory\array.cpp">\r
- <Filter>source\memory</Filter>\r
+ <ClCompile Include="except.cpp">\r
+ <Filter>source</Filter>\r
</ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="compiler\vs\disable_silly_warnings.h">\r
<Filter>source\compiler\vs</Filter>\r
</ClInclude>\r
- <ClInclude Include="concurrency\executor.h">\r
- <Filter>source\concurrency</Filter>\r
- </ClInclude>\r
<ClInclude Include="gl\gl_check.h">\r
<Filter>source\gl</Filter>\r
</ClInclude>\r
- <ClInclude Include="memory\page_locked_allocator.h">\r
- <Filter>source\memory</Filter>\r
- </ClInclude>\r
<ClInclude Include="diagnostics\graph.h">\r
<Filter>source\diagnostics</Filter>\r
</ClInclude>\r
<ClInclude Include="os\windows\system_info.h">\r
<Filter>source\os\windows</Filter>\r
</ClInclude>\r
- <ClInclude Include="memory\memshfl.h">\r
- <Filter>source\memory</Filter>\r
+ <ClInclude Include="os\windows\windows.h">\r
+ <Filter>source\os\windows</Filter>\r
</ClInclude>\r
- <ClInclude Include="env.h">\r
+ <ClInclude Include="lock.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="concurrency\lock.h">\r
- <Filter>source\concurrency</Filter>\r
- </ClInclude>\r
- <ClInclude Include="utf.h">\r
+ <ClInclude Include="log.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="prec_timer.h">\r
+ <ClInclude Include="memory.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="log.h">\r
+ <ClInclude Include="memshfl.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="forward.h">\r
+ <ClInclude Include="page_locked_allocator.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="enum_class.h">\r
+ <ClInclude Include="array.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
<ClInclude Include="assert.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="os\windows\windows.h">\r
- <Filter>source\os\windows</Filter>\r
+ <ClInclude Include="enum_class.h">\r
+ <Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="reactive.h">\r
+ <ClInclude Include="env.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
<ClInclude Include="except.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="tweener.h">\r
+ <ClInclude Include="executor.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="concurrency\async.h">\r
- <Filter>source\concurrency</Filter>\r
- </ClInclude>\r
- <ClInclude Include="spl\memory.h">\r
- <Filter>source\spl</Filter>\r
+ <ClInclude Include="forward.h">\r
+ <Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="memory\memcpy.h">\r
- <Filter>source\memory</Filter>\r
+ <ClInclude Include="future.h">\r
+ <Filter>source</Filter>\r
</ClInclude>\r
<ClInclude Include="param.h">\r
<Filter>source</Filter>\r
</ClInclude>\r
- <ClInclude Include="memory\array.h">\r
- <Filter>source\memory</Filter>\r
+ <ClInclude Include="prec_timer.h">\r
+ <Filter>source</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="reactive.h">\r
+ <Filter>source</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="tweener.h">\r
+ <Filter>source</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="utf.h">\r
+ <Filter>source</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="future_fwd.h">\r
+ <Filter>source</Filter>\r
</ClInclude>\r
</ItemGroup>\r
</Project>
\ No newline at end of file
\r
#pragma warning (disable : 4244)\r
\r
-#include "../concurrency/executor.h"\r
-#include "../concurrency/lock.h"\r
+#include "../executor.h"\r
+#include "../lock.h"\r
#include "../env.h"\r
\r
#include <SFML/Graphics.hpp>\r
\r
#pragma once\r
\r
-#include "../spl/memory.h"\r
+#include "../memory.h"\r
\r
#include <string>\r
#include <tuple>\r
enum_class(type v) : val_(v) {}\r
inner value() const { return val_; }\r
\r
- bool operator==(const enum_class& s) const { return val_ == s.val_; }\r
- bool operator!=(const enum_class& s) const { return val_ != s.val_; }\r
- bool operator<(const enum_class& s) const { return val_ < s.val_; }\r
- bool operator<=(const enum_class& s) const { return val_ <= s.val_; }\r
- bool operator>(const enum_class& s) const { return val_ > s.val_; }\r
- bool operator>=(const enum_class& s) const { return val_ >= s.val_; }\r
+ bool operator==(const enum_class& s) const { return val_ == s.val_; }\r
+ bool operator!=(const enum_class& s) const { return val_ != s.val_; }\r
+ bool operator<(const enum_class& s) const { return val_ < s.val_; }\r
+ bool operator<=(const enum_class& s) const { return val_ <= s.val_; }\r
+ bool operator>(const enum_class& s) const { return val_ > s.val_; }\r
+ bool operator>=(const enum_class& s) const { return val_ >= s.val_; }\r
+ \r
+ bool operator==(const int& val) const { return val_ == val; }\r
+ bool operator!=(const int& val) const { return val_ != val; }\r
+ bool operator<(const int& val) const { return val_ < val; }\r
+ bool operator<=(const int& val) const { return val_ <= val; }\r
+ bool operator>(const int& val) const { return val_ > val; }\r
+ bool operator>=(const int& val) const { return val_ >= val; }\r
\r
enum_class operator&(const enum_class& s) const\r
{\r
\r
#pragma once\r
\r
-#include "../except.h"\r
-#include "../enum_class.h"\r
-#include "../log.h"\r
+#include "except.h"\r
+#include "enum_class.h"\r
+#include "log.h"\r
\r
#include <tbb/atomic.h>\r
#include <tbb/concurrent_priority_queue.h>\r
#pragma once\r
\r
-#include "../enum_class.h"\r
+#include "enum_class.h"\r
\r
#include <boost/thread/future.hpp>\r
#include <boost/thread/thread.hpp>\r
-#include <boost/utility/declval.hpp>\r
+#include <boost/shared_ptr.hpp>\r
\r
#include <functional>\r
-#include <memory>\r
-#include <tuple>\r
\r
namespace caspar {\r
-\r
+ \r
struct launch_policy_def\r
{\r
enum type\r
{\r
- async,\r
- deferred\r
+ async = 1,\r
+ deferred = 2\r
};\r
};\r
-typedef enum_class<launch_policy_def> launch;\r
+typedef caspar::enum_class<launch_policy_def> launch;\r
\r
namespace detail {\r
\r
}\r
\r
template<typename F>\r
-auto async(launch lp, F&& f) -> boost::unique_future<decltype(f())>\r
+auto async(launch policy, F&& f) -> boost::unique_future<decltype(f())>\r
{ \r
typedef decltype(f()) result_type;\r
\r
- if(lp == launch::deferred)\r
- { \r
+ if((policy & launch::async) != 0)\r
+ {\r
+ typedef boost::packaged_task<result_type> task_t;\r
+\r
+ auto task = task_t(std::forward<F>(f)); \r
+ auto future = task.get_future();\r
+ \r
+ boost::thread(std::move(task)).detach();\r
+ \r
+ return std::move(future);\r
+ }\r
+ else if((policy & launch::deferred) != 0)\r
+ { \r
// HACK: THIS IS A MAYOR HACK!\r
\r
typedef boost::detail::future_object<result_type> future_object_t;\r
}), &dummy);\r
\r
boost::unique_future<result_type> future;\r
+\r
+ static_assert(sizeof(future) == sizeof(future_object), "");\r
+\r
reinterpret_cast<boost::shared_ptr<future_object_t>&>(future) = std::move(future_object); // Get around the "private" encapsulation.\r
return std::move(future);\r
}\r
else\r
- {\r
- typedef boost::packaged_task<result_type> task_t;\r
-\r
- auto task = task_t(std::forward<F>(f)); \r
- auto future = task.get_future();\r
- \r
- boost::thread(std::move(task)).detach();\r
- \r
- return std::move(future);\r
- }\r
+ throw std::invalid_argument("policy");\r
}\r
\r
template<typename F>\r
--- /dev/null
+#pragma once\r
+\r
+#include "forward.h"\r
+\r
+FORWARD1(boost, template<typename> class unique_future);\r
+FORWARD1(boost, template<typename> class shared_future);\r
+++ /dev/null
-/*\r
-* Copyright (c) 2011 Sveriges Television AB <info@casparcg.com>\r
-*\r
-* This file is part of CasparCG (www.casparcg.com).\r
-*\r
-* CasparCG is free software: you can redistribute it and/or modify\r
-* it under the terms of the GNU General Public License as published by\r
-* the Free Software Foundation, either version 3 of the License, or\r
-* (at your option) any later version.\r
-*\r
-* CasparCG is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-* GNU General Public License for more details.\r
-*\r
-* You should have received a copy of the GNU General Public License\r
-* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
-*\r
-* Author: Robert Nagy, ronag89@gmail.com\r
-*/\r
-\r
-#include "../stdafx.h"\r
-\r
-#include "array.h"\r
-\r
-#include "../assert.h"\r
-\r
-namespace caspar { namespace core {\r
-\r
-}}
\ No newline at end of file
+++ /dev/null
-#pragma once\r
-\r
-#include <intrin.h>\r
-#include <cstdint>\r
-\r
-#include <array>\r
-\r
-#include <tbb/parallel_for.h>\r
-\r
-#include <asmlib.h>\r
-\r
-#if defined(_MSC_VER)\r
-#pragma warning (push)\r
-#pragma warning (disable : 4244)\r
-#endif\r
-extern "C" \r
-{\r
- #include <libavutil/cpu.h>\r
-}\r
-#if defined(_MSC_VER)\r
-#pragma warning (pop)\r
-#endif\r
-\r
-namespace caspar {\r
-\r
-static bool has_uswc_memcpy()\r
-{\r
- static bool value = (ff_get_cpu_flags_x86() & AV_CPU_FLAG_SSE4) != 0;\r
- return value;\r
-}\r
- \r
-// http://software.intel.com/en-us/articles/copying-accelerated-video-decode-frame-buffers/\r
-static void uswc_memcpy(void* dest, void* source, int count) \r
-{ \r
- static const int CACHED_BUFFER_SIZE = 4096;\r
- \r
- const int block_count = count / CACHED_BUFFER_SIZE;\r
- const int remainder = count % CACHED_BUFFER_SIZE;\r
- \r
- tbb::parallel_for(tbb::blocked_range<int>(0, block_count), [&](const tbb::blocked_range<int>& r)\r
- {\r
- __declspec(align(64)) std::array<uint8_t, CACHED_BUFFER_SIZE> cache_block;\r
-\r
- auto load = reinterpret_cast<__m128i*>(source)+r.begin()*CACHED_BUFFER_SIZE/16;\r
- auto store = reinterpret_cast<__m128i*>(dest)+r.begin()*CACHED_BUFFER_SIZE/16;\r
-\r
- for(int b = r.begin(); b != r.end(); ++b)\r
- {\r
- {\r
- _mm_mfence(); \r
- auto cache = reinterpret_cast<__m128i*>(cache_block.data()); \r
-\r
- for(int n = 0; n < CACHED_BUFFER_SIZE; n += 64)\r
- {\r
- auto x0 = _mm_stream_load_si128(load++); \r
- auto x1 = _mm_stream_load_si128(load++); \r
- auto x2 = _mm_stream_load_si128(load++); \r
- auto x3 = _mm_stream_load_si128(load++); \r
- \r
- _mm_store_si128(cache++, x0); \r
- _mm_store_si128(cache++, x1); \r
- _mm_store_si128(cache++, x2); \r
- _mm_store_si128(cache++, x3); \r
- }\r
- }\r
- {\r
- _mm_mfence(); \r
- auto cache = reinterpret_cast<__m128i*>(cache_block.data()); \r
- \r
- for(int n = 0; n < CACHED_BUFFER_SIZE; n += 64)\r
- { \r
- auto x0 = _mm_load_si128(cache++); \r
- auto x1 = _mm_load_si128(cache++); \r
- auto x2 = _mm_load_si128(cache++); \r
- auto x3 = _mm_load_si128(cache++); \r
- \r
- _mm_stream_si128(store++, x0); \r
- _mm_stream_si128(store++, x1); \r
- _mm_stream_si128(store++, x2); \r
- _mm_stream_si128(store++, x3); \r
- } \r
- }\r
- }\r
- });\r
- \r
- __declspec(align(64)) std::array<uint8_t, CACHED_BUFFER_SIZE> cache_block;\r
- \r
- {\r
- _mm_mfence(); \r
- auto cache = reinterpret_cast<__m128i*>(cache_block.data()); \r
- auto load = reinterpret_cast<__m128i*>(source)+(count-remainder)/16;\r
-\r
- for(int n = 0; n < remainder; n += 16)\r
- _mm_store_si128(cache++, _mm_stream_load_si128(load++)); \r
- }\r
-\r
- { \r
- _mm_mfence(); \r
- auto cache = reinterpret_cast<__m128i*>(cache_block.data()); \r
- auto store = reinterpret_cast<__m128i*>(dest)+(count-remainder)/16;\r
-\r
- for(int n = 0; n < remainder; n += 16)\r
- _mm_stream_si128(store++, _mm_load_si128(cache++)); \r
- }\r
-} \r
-\r
-}
\ No newline at end of file
-#include "../stdafx.h"\r
+#include "stdafx.h"\r
\r
-#include "../os/windows/windows.h"\r
+#include "os/windows/windows.h"\r
\r
#include <unordered_map>\r
#include <tbb/mutex.h>\r
#pragma once\r
\r
-#include "spl/memory.h"\r
-#include "concurrency/lock.h"\r
+#include "memory.h"\r
+#include "lock.h"\r
\r
#include <tbb/spin_rw_mutex.h>\r
#include <tbb/cache_aligned_allocator.h>\r
observer(const observer&);\r
observer& operator=(const observer&);\r
public:\r
+\r
+ // Static Members\r
+\r
typedef T value_type;\r
\r
+ // Constructors\r
+\r
observer()\r
{\r
}\r
{\r
}\r
\r
+ // Methods\r
+\r
virtual void on_next(const T&) = 0;\r
+\r
+ // Properties\r
};\r
\r
template<typename T>\r
observable(const observable&);\r
observable& operator=(const observable&);\r
public:\r
+\r
+ // Static Members\r
+\r
typedef T value_type;\r
typedef observer<T> observer;\r
typedef std::weak_ptr<observer> observer_ptr;\r
+ \r
+ // Constructors\r
\r
observable()\r
{\r
virtual ~observable()\r
{\r
}\r
+ \r
+ // Methods\r
\r
virtual void subscribe(const observer_ptr&) = 0;\r
virtual void unsubscribe(const observer_ptr&) = 0;\r
+ \r
+ // Properties\r
};\r
\r
template<typename I, typename O = I>\r
class subject : public observer<I>, public observable<O>\r
{\r
public:\r
+ \r
+ // Static Members\r
+\r
typedef typename observable<O>::observer observer;\r
typedef typename observable<O>::observer_ptr observer_ptr;\r
+ \r
+ // Constructors\r
\r
virtual ~subject()\r
{\r
}\r
+ \r
+ // Methods\r
+\r
+ // Properties\r
};\r
\r
template<typename T, typename C>\r
class observer_function : public observer<T>\r
{\r
public:\r
+ \r
+ // Static Members\r
+ \r
+ // Constructors\r
+\r
observer_function()\r
{\r
}\r
{\r
other.swap(*this);\r
}\r
+ \r
+ // Methods\r
\r
void swap(observer_function& other)\r
{\r
{\r
func_(e);\r
}\r
+\r
+ // Properties\r
private:\r
C func_;\r
};\r
basic_subject_impl(const basic_subject_impl&);\r
basic_subject_impl& operator=(const basic_subject_impl&);\r
public: \r
+ // Static Members\r
+\r
typedef typename subject<I, O>::observer observer;\r
typedef typename subject<I, O>::observer_ptr observer_ptr;\r
\r
+ // Constructors\r
+\r
basic_subject_impl()\r
{\r
}\r
return *this;\r
}\r
\r
+ // Methods\r
+\r
void clear()\r
{\r
tbb::spin_rw_mutex::scoped_lock lock(mutex_, true);\r
for(auto it = std::begin(observers); it != std::end(observers); ++it)\r
(*it)->on_next(e);\r
}\r
+\r
+ // Properties\r
+\r
private:\r
typedef tbb::cache_aligned_allocator<std::weak_ptr<observer>> allocator;\r
\r
\r
typedef basic_subject_impl<I, O> impl;\r
public: \r
+\r
+ // Static Members\r
+\r
typedef typename subject<I, O>::observer observer;\r
typedef typename subject<I, O>::observer_ptr observer_ptr;\r
\r
+ // Constructors\r
+\r
basic_subject()\r
: impl_(std::make_shared<impl>())\r
\r
other.swap(*this);\r
}\r
\r
+ // Methods\r
+\r
void swap(basic_subject& other)\r
{\r
impl_.swap(other.impl_);\r
{\r
return impl_;\r
}\r
+\r
+ // Properties\r
+\r
private:\r
std::shared_ptr<impl> impl_;\r
};\r
#pragma once\r
\r
#include <string>\r
-#include <boost/lexical_cast.hpp>\r
\r
namespace caspar {\r
\r
\r
#include <common/assert.h>\r
#include <common/utf.h>\r
-#include <common/spl/memory.h>\r
-//#include "../common/concurrency/executor.h" // Can't include this due to MSVC lambda bug\r
+#include <common/memory.h>\r
+//#include "../common/executor.h" // Can't include this due to MSVC lambda bug\r
\r
#include <common/log.h>\r
#include <common/except.h>\r
#include <core/video_format.h>\r
#include <core/frame/frame.h>\r
\r
-#include <common/concurrency/async.h>\r
+#include <common/future.h>\r
\r
namespace caspar { namespace core {\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <boost/property_tree/ptree_fwd.hpp>\r
\r
#include "../video_format.h"\r
#include "../frame/frame.h"\r
\r
-#include <common/concurrency/async.h>\r
-#include <common/concurrency/executor.h>\r
+#include <common/assert.h>\r
+#include <common/future.h>\r
+#include <common/executor.h>\r
#include <common/diagnostics/graph.h>\r
#include <common/prec_timer.h>\r
-#include <common/memory/memshfl.h>\r
+#include <common/memshfl.h>\r
#include <common/env.h>\r
\r
-#include <common/assert.h>\r
#include <boost/circular_buffer.hpp>\r
-#include <boost/timer.hpp>\r
+#include <boost/lexical_cast.hpp>\r
+#include <boost/property_tree/ptree.hpp>\r
#include <boost/range/algorithm.hpp>\r
#include <boost/range/adaptors.hpp>\r
-#include <boost/property_tree/ptree.hpp>\r
+#include <boost/timer.hpp>\r
\r
namespace caspar { namespace core {\r
\r
#pragma once\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/future_fwd.h>\r
+#include <common/memory.h>\r
#include <common/reactive.h>\r
\r
#include <boost/property_tree/ptree_fwd.hpp>\r
\r
-FORWARD1(boost, template<typename> class unique_future)\r
FORWARD2(caspar, diagnostics, class graph);\r
\r
namespace caspar { namespace core {\r
\r
#include <core/video_format.h>\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <vector>\r
\r
#include "frame.h"\r
\r
#include <common/except.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <core/frame/frame_visitor.h>\r
#include <core/frame/pixel_format.h>\r
\r
#include "../video_format.h"\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/forward.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <boost/range.hpp>\r
#include <boost/any.hpp>\r
\r
#include "frame.h"\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/video_format.h>\r
\r
#pragma once\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/frame/frame_visitor.h>\r
\r
#include "blend_modes.h"\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/future_fwd.h>\r
+#include <common/memory.h>\r
\r
#include <core/video_format.h>\r
#include <core/frame/frame_visitor.h>\r
\r
#include <cstdint>\r
\r
-FORWARD1(boost, template<typename> class unique_future);\r
FORWARD2(caspar, core, struct pixel_format_desc);\r
\r
namespace caspar { namespace core {\r
#include "image/image_mixer.h"\r
\r
#include <common/env.h>\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
#include <common/diagnostics/graph.h>\r
#include <common/except.h>\r
#include <common/gl/gl_check.h>\r
#include "image/blend_modes.h"\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/future_fwd.h>\r
+#include <common/memory.h>\r
#include <common/reactive.h>\r
\r
#include <core/video_format.h>\r
\r
#include <map>\r
\r
-FORWARD1(boost, template<typename> class unique_future);\r
FORWARD2(caspar, diagnostics, class graph);\r
\r
namespace caspar { namespace core {\r
#pragma once\r
\r
#include <common/reactive.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <functional>\r
#include <string>\r
#include <core/monitor/monitor.h>\r
\r
#include <common/except.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <boost/algorithm/string.hpp>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <string>\r
#include <vector>\r
\r
#include <common/assert.h>\r
#include <common/except.h>\r
-#include <common/concurrency/executor.h>\r
-#include <common/concurrency/async.h>\r
-#include <common/spl/memory.h>\r
+#include <common/executor.h>\r
+#include <common/future.h>\r
+#include <common/memory.h>\r
\r
namespace caspar { namespace core {\r
\r
#include "../video_format.h"\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/future_fwd.h>\r
+#include <common/memory.h>\r
#include <common/enum_class.h>\r
\r
#include <cstdint>\r
#include <boost/property_tree/ptree_fwd.hpp>\r
\r
FORWARD1(caspar, class executor);\r
-FORWARD1(boost, template<typename T> class unique_future);\r
\r
namespace caspar { namespace core {\r
\r
#include "../monitor/monitor.h"\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/future_fwd.h>\r
+#include <common/memory.h>\r
\r
#include <boost/property_tree/ptree_fwd.hpp>\r
\r
#include <string>\r
\r
-FORWARD1(boost, template<typename T> class unique_future);\r
FORWARD1(boost, template<typename T> class optional);\r
\r
namespace caspar { namespace core {\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <string>\r
\r
#include "../frame/draw_frame.h"\r
#include "../frame/frame_factory.h"\r
\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
#include <common/diagnostics/graph.h>\r
\r
#include <core/frame/frame_transform.h>\r
#include "../monitor/monitor.h"\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/future_fwd.h>\r
+#include <common/memory.h>\r
#include <common/tweener.h>\r
\r
#include <boost/optional.hpp>\r
#include <vector>\r
\r
FORWARD2(caspar, diagnostics, class graph);\r
-FORWARD1(boost, template<typename> class unique_future);\r
\r
namespace caspar { namespace core {\r
\r
#include "../../video_format.h"\r
\r
#include <common/enum_class.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/tweener.h>\r
\r
#include <string>\r
\r
#include <common/diagnostics/graph.h>\r
#include <common/env.h>\r
-#include <common/concurrency/lock.h>\r
-#include <common/concurrency/executor.h>\r
+#include <common/lock.h>\r
+#include <common/executor.h>\r
\r
#include <core/mixer/image/image_mixer.h>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/reactive.h>\r
#include <common/forward.h>\r
\r
#include <math.h>\r
\r
#include <common/utf.h>\r
-#include <common/spl/memory.h>\r
-//#include "../common/concurrency/executor.h" // Can't include this due to MSVC lambda bug\r
+#include <common/memory.h>\r
+//#include "../common/executor.h" // Can't include this due to MSVC lambda bug\r
\r
#include <common/log.h>\r
#include <common/except.h>\r
#include <core/video_format.h>\r
#include <core/frame/frame.h>\r
\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
#include <common/diagnostics/graph.h>\r
-#include <common/memory/array.h>\r
-#include <common/memory/memshfl.h>\r
+#include <common/array.h>\r
+#include <common/memshfl.h>\r
\r
#include <core/consumer/frame_consumer.h>\r
#include <core/mixer/audio/audio_util.h>\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <boost/property_tree/ptree.hpp>\r
\r
#include <BlueVelvet4.h>\r
#include <BlueHancUtils.h>\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/except.h>\r
\r
namespace caspar { \r
\r
#include <BlueVelvet4.h>\r
\r
-#include <common/memory/page_locked_allocator.h>\r
+#include <common/page_locked_allocator.h>\r
\r
#include <vector>\r
\r
#include <functional>\r
\r
\r
-#include "../common/spl/memory.h"\r
+#include "../common/memory.h"\r
#include "../common/utf.h"\r
#include "../common/except.h"\r
#include "../common/log.h"\r
#include <core/frame/frame.h>\r
#include <core/mixer/audio/audio_mixer.h>\r
\r
-#include <common/concurrency/executor.h>\r
-#include <common/concurrency/lock.h>\r
+#include <common/executor.h>\r
+#include <common/lock.h>\r
#include <common/diagnostics/graph.h>\r
#include <common/except.h>\r
-#include <common/memory/memshfl.h>\r
-#include <common/memory/array.h>\r
+#include <common/memshfl.h>\r
+#include <common/array.h>\r
\r
#include <core/consumer/frame_consumer.h>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/video_format.h>\r
\r
#include "../../ffmpeg/producer/muxer/frame_muxer.h"\r
#include "../../ffmpeg/producer/muxer/display_mode.h"\r
\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
#include <common/diagnostics/graph.h>\r
#include <common/except.h>\r
#include <common/log.h>\r
#include <common/env.h>\r
#include <common/utf.h>\r
#include <common/param.h>\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
#include <common/diagnostics/graph.h>\r
-#include <common/memory/array.h>\r
-#include <common/spl/memory.h>\r
+#include <common/array.h>\r
+#include <common/memory.h>\r
\r
#include <boost/algorithm/string.hpp>\r
#include <boost/timer.hpp>\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <boost/property_tree/ptree_fwd.hpp>\r
\r
#include <core/mixer/audio/audio_mixer.h>\r
#include <core/monitor/monitor.h>\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <boost/noncopyable.hpp>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/producer/frame_producer.h>\r
#include <core/video_format.h>\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <boost/noncopyable.hpp>\r
#include <boost/algorithm/string/case_conv.hpp>\r
#include "../../ffmpeg_error.h"\r
\r
#include <common/diagnostics/graph.h>\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
#include <common/except.h>\r
#include <common/log.h>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <memory>\r
#include <string>\r
#include "display_mode.h"\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/mixer/audio/audio_mixer.h>\r
#include <core/video_format.h>\r
#include <core/producer/frame_producer.h>\r
\r
#include <common/except.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <tbb/parallel_for.h>\r
\r
#pragma once\r
\r
#include <common/forward.h>\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/video_format.h>\r
#include <core/frame/pixel_format.h>\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/forward.h>\r
\r
#include <core/monitor/monitor.h>\r
#include <boost/property_tree/ptree.hpp>\r
\r
#include "../common/utf.h"\r
-#include "../common/spl/memory.h"\r
-//#include "../common/concurrency/executor.h" // Can't include this due to MSVC lambda bug\r
+#include "../common/memory.h"\r
+//#include "../common/executor.h" // Can't include this due to MSVC lambda bug\r
\r
#include "../common/log.h"\r
#include "../common/except.h"\r
#include <core/monitor/monitor.h>\r
\r
#include <common/env.h>\r
-#include <common/concurrency/executor.h>\r
-#include <common/concurrency/lock.h>\r
+#include <common/executor.h>\r
+#include <common/lock.h>\r
#include <common/diagnostics/graph.h>\r
#include <common/prec_timer.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <boost/filesystem.hpp>\r
#include <boost/property_tree/ptree.hpp>\r
\r
#include <core/producer/frame_producer.h>\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <vector>\r
#include <string>\r
#include <common/env.h>\r
#include <common/log.h>\r
#include <common/utf.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <core/consumer/frame_consumer.h>\r
#include <core/video_format.h>\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/video_format.h>\r
\r
\r
#include <common/env.h>\r
#include <common/log.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <boost/assign.hpp>\r
#include <boost/filesystem.hpp>\r
#include <common/env.h>\r
#include <common/log.h>\r
#include <common/except.h>\r
-#include <common/memory/array.h>\r
+#include <common/array.h>\r
\r
#include <boost/assign.hpp>\r
#include <boost/filesystem.hpp>\r
#include <common/env.h>\r
\r
#include <core/consumer/frame_consumer.h>\r
+#include <core/frame/frame.h>\r
#include <core/mixer/audio/audio_util.h>\r
#include <core/mixer/audio/audio_mixer.h>\r
#include <core/video_format.h>\r
\r
-#include <core/frame/frame.h>\r
-\r
#include <SFML/Audio/SoundStream.hpp>\r
\r
#include <boost/circular_buffer.hpp>\r
+#include <boost/lexical_cast.hpp>\r
#include <boost/property_tree/ptree.hpp>\r
#include <boost/timer.hpp>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/video_format.h>\r
\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
#include <common/forward.h>\r
\r
#include <core/frame/frame_factory.h>\r
#include <common/diagnostics/graph.h>\r
#include <common/gl/gl_check.h>\r
#include <common/log.h>\r
-#include <common/spl/memory.h>\r
-#include <common/memory/array.h>\r
-#include <common/memory/memshfl.h>\r
+#include <common/memory.h>\r
+#include <common/array.h>\r
+#include <common/memshfl.h>\r
#include <common/utf.h>\r
\r
#include <ffmpeg/producer/filter/filter.h>\r
\r
#include <boost/timer.hpp>\r
#include <boost/circular_buffer.hpp>\r
+#include <boost/lexical_cast.hpp>\r
#include <boost/foreach.hpp>\r
-#include <boost/thread.hpp>\r
#include <boost/property_tree/ptree.hpp>\r
+#include <boost/thread.hpp>\r
\r
#include <tbb/atomic.h>\r
#include <tbb/concurrent_queue.h>\r
\r
struct screen_consumer : boost::noncopyable\r
{ \r
- const configuration config_;\r
- core::video_format_desc format_desc_;\r
- int channel_index_;\r
+ const configuration config_;\r
+ core::video_format_desc format_desc_;\r
+ int channel_index_;\r
\r
- GLuint texture_;\r
- std::vector<GLuint> pbos_;\r
+ GLuint texture_;\r
+ std::vector<GLuint> pbos_;\r
\r
- float width_;\r
- float height_; \r
- int screen_x_;\r
- int screen_y_;\r
- int screen_width_;\r
- int screen_height_;\r
- int square_width_;\r
- int square_height_; \r
+ float width_;\r
+ float height_; \r
+ int screen_x_;\r
+ int screen_y_;\r
+ int screen_width_;\r
+ int screen_height_;\r
+ int square_width_;\r
+ int square_height_; \r
\r
- sf::Window window_;\r
+ sf::Window window_;\r
\r
spl::shared_ptr<diagnostics::graph> graph_;\r
boost::timer perf_timer_;\r
\r
tbb::concurrent_bounded_queue<core::const_frame> frame_buffer_;\r
\r
- boost::thread thread_;\r
- tbb::atomic<bool> is_running_;\r
+ boost::thread thread_;\r
+ tbb::atomic<bool> is_running_;\r
\r
- ffmpeg::filter filter_;\r
+ ffmpeg::filter filter_;\r
public:\r
screen_consumer(const configuration& config, const core::video_format_desc& format_desc, int channel_index) \r
: config_(config)\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <vector>\r
#include <boost/property_tree/ptree.hpp>\r
#include <boost/range/algorithm.hpp>\r
\r
#include "../common/utf.h"\r
-#include "../common/spl/memory.h"\r
-//#include "../common/concurrency/executor.h" // Can't include this due to MSVC lambda bug\r
+#include "../common/memory.h"\r
+//#include "../common/executor.h" // Can't include this due to MSVC lambda bug\r
\r
#include "../common/log.h"\r
#include "../common/except.h"\r
\r
#include "AMCPCommand.h"\r
\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
\r
#include <tbb\mutex.h>\r
\r
\r
#include <core/producer/stage.h>\r
\r
-#include <common/concurrency/executor.h>\r
+#include <common/executor.h>\r
\r
namespace caspar { namespace protocol { namespace cii {\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/monitor/monitor.h>\r
\r
#pragma once\r
#endif\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <string>\r
#include <map>\r
</flash>\r
<channels>\r
<channel>\r
- <video-mode>PAL</video-mode>\r
+ <video-mode>1080p5000</video-mode>\r
+ <consumers>\r
+ <screen>\r
+ <auto-deinterlace>false</auto-deinterlace>\r
+ </screen>\r
+ </consumers>\r
+ </channel>\r
+ <channel>\r
+ <video-mode>1080p5000</video-mode>\r
+ <consumers>\r
+ <screen>\r
+ <auto-deinterlace>false</auto-deinterlace>\r
+ </screen>\r
+ </consumers>\r
+ </channel>\r
+ <channel>\r
+ <video-mode>1080p5000</video-mode>\r
<consumers>\r
<screen>\r
<auto-deinterlace>false</auto-deinterlace>\r
\r
#pragma once\r
\r
-#include <common/spl/memory.h>\r
+#include <common/memory.h>\r
\r
#include <core/monitor/monitor.h>\r
\r