From ad726007606c69c2fa2ee788509e6070961b1c16 Mon Sep 17 00:00:00 2001 From: Helge Norberg Date: Mon, 21 Oct 2013 08:51:05 +0200 Subject: [PATCH] #187 Changed NewTek iVGA dependency to be optional at runtime. This will prevent a possible GPL violation. --- .../newtek/bin/Processing.AirSend.x86.dll | Bin 274432 -> 0 bytes dependencies/newtek/include/AirSend_api.h | 85 ---------------- .../newtek/lib/Processing.AirSend.x86.lib | Bin 45398 -> 0 bytes .../newtek/consumer/newtek_ivga_consumer.cpp | 16 +-- modules/newtek/newtek.cpp | 10 +- modules/newtek/newtek.vcxproj | 15 ++- modules/newtek/newtek.vcxproj.filters | 9 ++ modules/newtek/util/air_send.cpp | 95 ++++++++++++++++++ modules/newtek/util/air_send.h | 43 ++++++++ shell/main.cpp | 2 + shell/shell.vcxproj | 22 ++-- 11 files changed, 184 insertions(+), 113 deletions(-) delete mode 100644 dependencies/newtek/bin/Processing.AirSend.x86.dll delete mode 100644 dependencies/newtek/include/AirSend_api.h delete mode 100644 dependencies/newtek/lib/Processing.AirSend.x86.lib create mode 100644 modules/newtek/util/air_send.cpp create mode 100644 modules/newtek/util/air_send.h diff --git a/dependencies/newtek/bin/Processing.AirSend.x86.dll b/dependencies/newtek/bin/Processing.AirSend.x86.dll deleted file mode 100644 index 5435aab6b3a41103f152a39c57295f2c24bd9287..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 274432 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 -#include +#include "../util/air_send.h" + +namespace caspar { namespace newtek { -namespace caspar { namespace newtek { - struct newtek_ivga_consumer : public core::frame_consumer { std::shared_ptr air_send_; @@ -50,6 +50,8 @@ public: : executor_(print()) , channel_layout_(channel_layout) { + if (!airsend::is_available()) + BOOST_THROW_EXCEPTION(caspar_exception() << msg_info(narrow(airsend::dll_name()) + " not available")); } ~newtek_ivga_consumer() @@ -61,7 +63,7 @@ public: virtual void initialize(const core::video_format_desc& format_desc, int channel_index) override { air_send_.reset( - AirSend_Create( + airsend::create( format_desc.width, format_desc.height, format_desc.time_scale, @@ -71,7 +73,7 @@ public: true, channel_layout_.num_channels, format_desc.audio_sample_rate), - AirSend_Destroy); + airsend::destroy); CASPAR_VERIFY(air_send_); @@ -117,11 +119,11 @@ public: audio_buffer = core::audio_32_to_16(frame->audio_data()); } - AirSend_add_audio(air_send_.get(), audio_buffer.data(), audio_buffer.size() / channel_layout_.num_channels); + airsend::add_audio(air_send_.get(), audio_buffer.data(), audio_buffer.size() / channel_layout_.num_channels); // VIDEO - AirSend_add_frame_bgra(air_send_.get(), frame->image_data().begin()); + airsend::add_frame_bgra(air_send_.get(), frame->image_data().begin()); return true; }); diff --git a/modules/newtek/newtek.cpp b/modules/newtek/newtek.cpp index 0a63c5f3d..bc6ec53e0 100644 --- a/modules/newtek/newtek.cpp +++ b/modules/newtek/newtek.cpp @@ -22,6 +22,7 @@ #include "newtek.h" #include "consumer/newtek_ivga_consumer.h" +#include "util/air_send.h" #include #include @@ -32,10 +33,11 @@ void init() { try { - core::register_consumer_factory([](const core::parameters& params) - { - return newtek::create_ivga_consumer(params); - }); + if (airsend::is_available()) + core::register_consumer_factory([](const core::parameters& params) + { + return newtek::create_ivga_consumer(params); + }); } catch(...){} } diff --git a/modules/newtek/newtek.vcxproj b/modules/newtek/newtek.vcxproj index 7d859bb10..5af94ce6d 100644 --- a/modules/newtek/newtek.vcxproj +++ b/modules/newtek/newtek.vcxproj @@ -72,10 +72,10 @@ $(ProjectDir)tmp\$(Configuration)\ $(ProjectDir)tmp\$(Configuration)\ $(ProjectDir)tmp\$(Configuration)\ - ..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath) - ..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath) - ..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath) - ..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;..\..\dependencies\ffmpeg 0.8\include;$(IncludePath) + ..\..\;..\..\common;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath) + ..\..\;..\..\common;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath) + ..\..\;..\..\common;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath) + ..\..\;..\..\common;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;..\..\dependencies\ffmpeg 0.8\include;$(IncludePath) ..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath) ..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath) ..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath) @@ -241,6 +241,7 @@ + @@ -261,6 +262,12 @@ Create Create + + ../StdAfx.h + ../StdAfx.h + ../StdAfx.h + ../StdAfx.h + diff --git a/modules/newtek/newtek.vcxproj.filters b/modules/newtek/newtek.vcxproj.filters index 31bdb1131..c8a61d830 100644 --- a/modules/newtek/newtek.vcxproj.filters +++ b/modules/newtek/newtek.vcxproj.filters @@ -8,6 +8,9 @@ source + + source\util + @@ -17,6 +20,9 @@ source + + source\util + @@ -25,5 +31,8 @@ {c4a0a6b8-00cd-475e-a6a4-775bba93dbc2} + + {05a7aae8-a23c-4aa2-81c4-fd0710306ce7} + \ No newline at end of file diff --git a/modules/newtek/util/air_send.cpp b/modules/newtek/util/air_send.cpp new file mode 100644 index 000000000..a8699405e --- /dev/null +++ b/modules/newtek/util/air_send.cpp @@ -0,0 +1,95 @@ +/* +* Copyright 2013 Sveriges Television AB http://casparcg.com/ +* +* This file is part of CasparCG (www.casparcg.com). +* +* CasparCG is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* CasparCG is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with CasparCG. If not, see . +* +* Author: Helge Norberg, helge.norberg@svt.se +*/ + +#include "../StdAfx.h" + +#include "air_send.h" + +#include + +#include + +#include + +namespace caspar { namespace newtek { namespace airsend { + +void* (*create)( + const int width, const int height, + const int timescale, const int duration, + const bool progressive, + const float aspect_ratio, + const bool audio_enabled, + const int num_channels, + const int sample_rate) = nullptr; +void (*destroy)(void* instance) = nullptr; +bool (*add_audio)( + void* instance, const short* samples, const int num_samples) = nullptr; +bool (*add_frame_bgra)(void* instance, const unsigned char* data) = nullptr; + +const std::wstring& dll_name() +{ + static std::wstring name = L"Processing.AirSend.x86.dll"; + + return name; +} + +std::shared_ptr load_library() +{ + auto module = LoadLibrary(dll_name().c_str()); + + if (!module) + return nullptr; + + std::shared_ptr lib(module, FreeLibrary); + + create = reinterpret_cast( + GetProcAddress(module, "AirSend_Create")); + destroy = reinterpret_cast( + GetProcAddress(module, "AirSend_Destroy")); + add_audio = reinterpret_cast( + GetProcAddress(module, "AirSend_add_audio")); + add_frame_bgra = reinterpret_cast( + GetProcAddress(module, "AirSend_add_frame_bgra")); + + if (create == nullptr + || destroy == nullptr + || add_audio == nullptr + || add_frame_bgra == nullptr) + { + create = nullptr; + destroy = nullptr; + add_audio = nullptr; + add_frame_bgra = nullptr; + + return nullptr; + } + + return lib; +} + +bool is_available() +{ + static std::shared_ptr lib = load_library(); + + return lib; +} + +}}} diff --git a/modules/newtek/util/air_send.h b/modules/newtek/util/air_send.h new file mode 100644 index 000000000..8155fc528 --- /dev/null +++ b/modules/newtek/util/air_send.h @@ -0,0 +1,43 @@ +/* +* Copyright 2013 Sveriges Television AB http://casparcg.com/ +* +* This file is part of CasparCG (www.casparcg.com). +* +* CasparCG is free software: you can redistribute it and/or modify +* it under the terms of the GNU General Public License as published by +* the Free Software Foundation, either version 3 of the License, or +* (at your option) any later version. +* +* CasparCG is distributed in the hope that it will be useful, +* but WITHOUT ANY WARRANTY; without even the implied warranty of +* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +* GNU General Public License for more details. +* +* You should have received a copy of the GNU General Public License +* along with CasparCG. If not, see . +* +* Author: Helge Norberg, helge.norberg@svt.se +*/ +#pragma once + +#include + +namespace caspar { namespace newtek { namespace airsend { + +const std::wstring& dll_name(); +bool is_available(); + +extern void* (*create)( + const int width, const int height, + const int timescale, const int duration, + const bool progressive, + const float aspect_ratio, + const bool audio_enabled, + const int num_channels, + const int sample_rate); +extern void (*destroy)(void* instance); +extern bool (*add_audio)( + void* instance, const short* samples, const int num_samples); +extern bool (*add_frame_bgra)(void* instance, const unsigned char* data); + +}}} diff --git a/shell/main.cpp b/shell/main.cpp index 382e3c307..320d678b5 100644 --- a/shell/main.cpp +++ b/shell/main.cpp @@ -52,6 +52,7 @@ #include #include #include +#include #include #include @@ -159,6 +160,7 @@ void print_info() CASPAR_LOG(info) << L"FFMPEG-swscale " << caspar::ffmpeg::get_swscale_version(); CASPAR_LOG(info) << L"Flash " << caspar::flash::get_version(); CASPAR_LOG(info) << L"Template-Host " << caspar::flash::get_cg_version(); + CASPAR_LOG(info) << L"NewTek iVGA " << (caspar::newtek::airsend::is_available() ? L"available" : L"unavailable (" + caspar::newtek::airsend::dll_name() + L")"); } LONG WINAPI UserUnhandledExceptionFilter(EXCEPTION_POINTERS* info) diff --git a/shell/shell.vcxproj b/shell/shell.vcxproj index 5182eccb4..adf508b2b 100644 --- a/shell/shell.vcxproj +++ b/shell/shell.vcxproj @@ -131,14 +131,14 @@ $(SolutionDir)tmp\$(Configuration)\ $(SolutionDir)tmp\$(Configuration)\ $(SolutionDir)tmp\$(Configuration)\ - ..\dependencies\BluefishSDK_V5_10_0_42\Inc\;..\dependencies\boost\;..\dependencies\ffmpeg 0.8\include\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\include;..\dependencies\SFML-1.6\include\;..\dependencies\tbb\include\;..\dependencies\newtek\include\;$(IncludePath) + ..\dependencies\BluefishSDK_V5_10_0_42\Inc\;..\dependencies\boost\;..\dependencies\ffmpeg 0.8\include\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\include;..\dependencies\SFML-1.6\include\;..\dependencies\tbb\include\;$(IncludePath) ..\dependencies\BluefishSDK_V5_10_0_42\Inc\;..\dependencies\boost\;..\dependencies\ffmpeg 0.8\include\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\include;..\dependencies\SFML-1.6\include\;..\dependencies\tbb\include\;$(IncludePath) ..\dependencies\BluefishSDK_V5_10_0_42\Inc\;..\dependencies\boost\;..\dependencies\ffmpeg 0.8\include\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\include;..\dependencies\SFML-1.6\include\;..\dependencies\tbb\include\;$(IncludePath) ..\dependencies\BluefishSDK_V5_10_0_42\Inc\;..\dependencies\boost\;..\dependencies\ffmpeg 0.8\include\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\include;..\dependencies\SFML-1.6\include\;..\dependencies\tbb\include\;$(IncludePath) - C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;..\dependencies\newtek\lib;$(LibraryPath) - C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;..\dependencies\newtek\lib;$(LibraryPath) - C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;..\dependencies\newtek\lib;$(LibraryPath) - C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;..\dependencies\newtek\lib;$(LibraryPath) + C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;$(LibraryPath) + C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;$(LibraryPath) + C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;$(LibraryPath) + C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\dependencies\boost\stage\lib\;..\dependencies\ffmpeg 0.8\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\glew-1.6.0\lib;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb\lib\ia32\vc10\;..\dependencies\zlib\lib;..\dependencies\portaudio\lib;$(LibraryPath) $(SolutionDir)bin\$(Configuration)\ $(SolutionDir)bin\$(Configuration)\ $(SolutionDir)bin\$(Configuration)\ @@ -186,7 +186,7 @@ common/compiler/vs/disable_silly_warnings.h - sfml-system-s-d.lib;sfml-audio-s-d.lib;sfml-window-s-d.lib;sfml-graphics-s-d.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib;Processing.AirSend.x86.lib + sfml-system-s-d.lib;sfml-audio-s-d.lib;sfml-window-s-d.lib;sfml-graphics-s-d.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib %(AdditionalLibraryDirectories) @@ -212,7 +212,6 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)" -copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)" copy "$(ProjectDir)casparcg.config" "$(OutDir)" copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" @@ -247,7 +246,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" - sfml-system-s.lib;sfml-audio-s.lib;sfml-window-s.lib;sfml-graphics-s.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib;Processing.AirSend.x86.lib + sfml-system-s.lib;sfml-audio-s.lib;sfml-window-s.lib;sfml-graphics-s.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib %(AdditionalLibraryDirectories) @@ -276,7 +275,6 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)" -copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)" copy "$(ProjectDir)casparcg.config" "$(OutDir)" copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" @@ -311,7 +309,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" - sfml-system-s.lib;sfml-audio-s.lib;sfml-window-s.lib;sfml-graphics-s.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib;Processing.AirSend.x86.lib + sfml-system-s.lib;sfml-audio-s.lib;sfml-window-s.lib;sfml-graphics-s.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib %(AdditionalLibraryDirectories) @@ -339,7 +337,6 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)" -copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)" copy "$(ProjectDir)casparcg.config" "$(OutDir)" copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" @@ -374,7 +371,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" - sfml-system-s.lib;sfml-audio-s.lib;sfml-window-s.lib;sfml-graphics-s.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib;Processing.AirSend.x86.lib + sfml-system-s.lib;sfml-audio-s.lib;sfml-window-s.lib;sfml-graphics-s.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avdevice.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;glew32.lib;zdll.lib;portaudio_x86.lib %(AdditionalLibraryDirectories) @@ -402,7 +399,6 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)" copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)" -copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)" copy "$(ProjectDir)casparcg.config" "$(OutDir)" copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)" -- 2.39.2