\r
#include "consumer/frame_consumer_device.h"\r
\r
-#include "processor/draw_frame.h"\r
#include "processor/draw_frame.h"\r
#include "processor/frame_processor_device.h"\r
\r
#include <common/concurrency/executor.h>\r
\r
-#include <boost/thread.hpp>\r
#include <boost/range/algorithm_ext/erase.hpp>\r
\r
#include <tbb/parallel_for.h>\r
\r
-#include <boost/noncopyable.hpp>\r
-\r
#include <memory>\r
\r
namespace caspar { namespace core {\r
};\r
\r
frame_consumer_device::frame_consumer_device(frame_consumer_device&& other) : impl_(std::move(other.impl_)){}\r
-frame_consumer_device::frame_consumer_device(const video_format_desc& format_desc, const std::vector<safe_ptr<frame_consumer>>& consumers)\r
- : impl_(new implementation(format_desc, consumers)){}\r
+frame_consumer_device::frame_consumer_device(const video_format_desc& format_desc, const std::vector<safe_ptr<frame_consumer>>& consumers) : impl_(new implementation(format_desc, consumers)){}\r
void frame_consumer_device::consume(safe_ptr<const read_frame>&& future_frame) { impl_->consume(std::move(future_frame)); }\r
}}
\ No newline at end of file
void consume(safe_ptr<const read_frame>&& future_frame); // nothrow\r
private:\r
struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ safe_ptr<implementation> impl_;\r
};\r
\r
}}
\ No newline at end of file
<PrecompiledHeader>Use</PrecompiledHeader>\r
<WarningLevel>Level4</WarningLevel>\r
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>\r
- <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
+ <MultiProcessorCompilation>false</MultiProcessorCompilation>\r
<PreprocessorDefinitions>NDEBUG;_VC80_UPGRADE=0x0710;%(PreprocessorDefinitions)</PreprocessorDefinitions>\r
<WholeProgramOptimization>true</WholeProgramOptimization>\r
<TreatWarningAsError>true</TreatWarningAsError>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
<ClCompile Include="producer\flash\Flash9e_i.c">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">\r
- </PrecompiledHeaderFile>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>\r
</ClCompile>\r
<ClCompile Include="producer\flash\FlashAxContainer.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdAfx.h</PrecompiledHeaderFile>\r
</Midl>\r
<Midl Include="producer\flash\Flash9e.IDL">\r
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
</Midl>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="producer\flash\flash_producer.h">\r
<Filter>Source\channel\producer\flash</Filter>\r
</ClInclude>\r
- <ClInclude Include="producer\flash\axflash.h">\r
- <Filter>Source\channel\producer\flash\interop</Filter>\r
- </ClInclude>\r
<ClInclude Include="producer\flash\FlashAxContainer.h">\r
<Filter>Source\channel\producer\flash\interop</Filter>\r
</ClInclude>\r
<ClInclude Include="processor\pixel_format.h">\r
<Filter>Source\channel\processor</Filter>\r
</ClInclude>\r
+ <ClInclude Include="producer\flash\axflash.h">\r
+ <Filter>Source\channel\producer\flash\interop</Filter>\r
+ </ClInclude>\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="protocol\amcp\AMCPCommandQueue.cpp">\r
<ClCompile Include="producer\flash\flash_producer.cpp">\r
<Filter>Source\channel\producer\flash</Filter>\r
</ClCompile>\r
- <ClCompile Include="producer\flash\Flash9e_i.c">\r
- <Filter>Source\channel\producer\flash\interop</Filter>\r
- </ClCompile>\r
<ClCompile Include="producer\flash\FlashAxContainer.cpp">\r
<Filter>Source\channel\producer\flash\interop</Filter>\r
</ClCompile>\r
<ClCompile Include="format\video_format.cpp">\r
<Filter>Source\channel</Filter>\r
</ClCompile>\r
+ <ClCompile Include="producer\flash\Flash9e_i.c">\r
+ <Filter>Source\channel\producer\flash\interop</Filter>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<Midl Include="consumer\decklink\DeckLinkAPI_v7_3.idl">\r
#include "../../Server.h"\r
\r
#include <boost/filesystem.hpp>\r
+#include <boost/format.hpp>\r
+\r
+using boost::format;\r
+using boost::io::group;\r
\r
namespace caspar { namespace core { namespace flash {\r
\r
void add(int layer, const std::wstring& filename, bool play_on_load, const std::wstring& label, const std::wstring& data)\r
{\r
CASPAR_LOG(info) << "Invoking add-command";\r
- \r
- std::wstringstream param;\r
-\r
- param << TEXT("<invoke name=\"Add\" returntype=\"xml\"><arguments><number>") << layer << TEXT("</number><string>") << filename << TEXT("</string>") << (play_on_load?TEXT("<true/>"):TEXT("<false/>")) << TEXT("<string>") << label << TEXT("</string><string><![CDATA[ ") << data << TEXT(" ]]></string></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"Add\" returntype=\"xml\"><arguments><number>%1%</number><string>%2%</string>%3%<string>%4%</string><string><![CDATA[%5%]]></string></arguments></invoke>") % layer % filename % (play_on_load?TEXT("<true/>"):TEXT("<false/>")) % label % data).str());\r
}\r
\r
void remove(int layer)\r
{\r
CASPAR_LOG(info) << "Invoking remove-command";\r
- \r
- std::wstringstream param;\r
- param << TEXT("<invoke name=\"Delete\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"Delete\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str());\r
}\r
\r
void play(int layer)\r
{\r
CASPAR_LOG(info) << "Invoking play-command";\r
- \r
- std::wstringstream param;\r
- param << TEXT("<invoke name=\"Play\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"Play\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str());\r
}\r
\r
- void stop(int layer, unsigned int mix_out_duration)\r
+ void stop(int layer, unsigned int)\r
{\r
CASPAR_LOG(info) << "Invoking stop-command";\r
- \r
- std::wstringstream param;\r
- param << TEXT("<invoke name=\"Stop\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><number>") << mix_out_duration << TEXT("</number></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"Stop\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str());\r
}\r
\r
void next(int layer)\r
{\r
CASPAR_LOG(info) << "Invoking next-command";\r
- \r
- std::wstringstream param;\r
- param << TEXT("<invoke name=\"Next\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"Next\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array></arguments></invoke>") % layer).str());\r
}\r
\r
void update(int layer, const std::wstring& data)\r
{\r
CASPAR_LOG(info) << "Invoking update-command";\r
- \r
- std::wstringstream param;\r
- param << TEXT("<invoke name=\"SetData\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><string><![CDATA[ ") << data << TEXT(" ]]></string></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"SetData\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array><string><![CDATA[%2%]]></string></arguments></invoke>") % layer % data).str());\r
}\r
\r
void invoke(int layer, const std::wstring& label)\r
{\r
CASPAR_LOG(info) << "Invoking invoke-command";\r
- \r
- std::wstringstream param;\r
- param << TEXT("<invoke name=\"Invoke\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>") << layer << TEXT("</number></property></array><string>") << label << TEXT("</string></arguments></invoke>");\r
- \r
- flash_producer_->param(param.str());\r
+ flash_producer_->param((boost::wformat(L"<invoke name=\"Invoke\" returntype=\"xml\"><arguments><array><property id=\"0\"><number>%1%</number></property></array><string>%2%</string></arguments></invoke>") % layer % label).str());\r
}\r
\r
safe_ptr<draw_frame> receive()\r
<videomode>PAL</videomode>\r
<consumers>\r
<ogl>\r
- <device>1</device>\r
+ <device>0</device>\r
<stretch>uniform</stretch>\r
<windowed>true</windowed>\r
</ogl>\r