]> git.sesse.net Git - casparcg/commitdiff
Added support for NewTek AirPlay.
authorRobert Nagy <ronag@live.com>
Fri, 6 Sep 2013 21:05:24 +0000 (23:05 +0200)
committerRobert Nagy <ronag@live.com>
Fri, 6 Sep 2013 21:05:24 +0000 (23:05 +0200)
Sponsored by NewTek.

15 files changed:
casparcg.sln
dependencies/newtek/bin/Processing.AirSend.x86.dll [new file with mode: 0644]
dependencies/newtek/include/AirSend_api.h [new file with mode: 0644]
dependencies/newtek/lib/Processing.AirSend.x86.lib [new file with mode: 0644]
modules/newtek/StdAfx.cpp [new file with mode: 0644]
modules/newtek/StdAfx.h [new file with mode: 0644]
modules/newtek/bin/Release/newtek.lib [new file with mode: 0644]
modules/newtek/consumer/newtek_consumer.cpp [new file with mode: 0644]
modules/newtek/consumer/newtek_consumer.h [new file with mode: 0644]
modules/newtek/newtek.cpp [new file with mode: 0644]
modules/newtek/newtek.h [new file with mode: 0644]
modules/newtek/newtek.vcxproj [new file with mode: 0644]
shell/casparcg.config
shell/server.cpp
shell/shell.vcxproj

index 5d868cb758d5ab19c8cd6de1ec1cb016d09efdaf..695425a11dae80c07101e129f7a9f737b9d52c5d 100644 (file)
@@ -1,6 +1,6 @@
 \r
-Microsoft Visual Studio Solution File, Format Version 11.00\r
-# Visual Studio 2010\r
+Microsoft Visual Studio Solution File, Format Version 12.00\r
+# Visual Studio 2012\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "core", "core\core.vcxproj", "{79388C20-6499-4BF6-B8B9-D8C33D7D4DDD}"\r
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "shell", "shell\shell.vcxproj", "{8C26C94F-8092-4769-8D84-DEA479721C5B}"\r
@@ -34,6 +34,8 @@ Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "common", "common\common.vcx
 EndProject\r
 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "portaudio", "modules\portaudio\portaudio.vcxproj", "{36A2D15A-41D3-485C-BC70-187B7FC6E6C4}"\r
 EndProject\r
+Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "newtek", "modules\newtek\newtek.vcxproj", "{29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}"\r
+EndProject\r
 Global\r
        GlobalSection(SolutionConfigurationPlatforms) = preSolution\r
                Debug|Win32 = Debug|Win32\r
@@ -138,6 +140,14 @@ Global
                {36A2D15A-41D3-485C-BC70-187B7FC6E6C4}.Profile|Win32.Build.0 = Profile|Win32\r
                {36A2D15A-41D3-485C-BC70-187B7FC6E6C4}.Release|Win32.ActiveCfg = Release|Win32\r
                {36A2D15A-41D3-485C-BC70-187B7FC6E6C4}.Release|Win32.Build.0 = Release|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Debug|Win32.ActiveCfg = Debug|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Debug|Win32.Build.0 = Debug|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Develop|Win32.ActiveCfg = Develop|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Develop|Win32.Build.0 = Develop|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Profile|Win32.ActiveCfg = Profile|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Profile|Win32.Build.0 = Profile|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Release|Win32.ActiveCfg = Release|Win32\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}.Release|Win32.Build.0 = Release|Win32\r
        EndGlobalSection\r
        GlobalSection(SolutionProperties) = preSolution\r
                HideSolutionNode = FALSE\r
@@ -151,5 +161,6 @@ Global
                {88F974F0-D09F-4788-8CF8-F563209E60C1} = {C54DA43E-4878-45DB-B76D-35970553672C}\r
                {3E11FF65-A9DA-4F80-87F2-A7C6379ED5E2} = {C54DA43E-4878-45DB-B76D-35970553672C}\r
                {36A2D15A-41D3-485C-BC70-187B7FC6E6C4} = {C54DA43E-4878-45DB-B76D-35970553672C}\r
+               {29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE} = {C54DA43E-4878-45DB-B76D-35970553672C}\r
        EndGlobalSection\r
 EndGlobal\r
diff --git a/dependencies/newtek/bin/Processing.AirSend.x86.dll b/dependencies/newtek/bin/Processing.AirSend.x86.dll
new file mode 100644 (file)
index 0000000..5435aab
Binary files /dev/null and b/dependencies/newtek/bin/Processing.AirSend.x86.dll differ
diff --git a/dependencies/newtek/include/AirSend_api.h b/dependencies/newtek/include/AirSend_api.h
new file mode 100644 (file)
index 0000000..274cf7a
--- /dev/null
@@ -0,0 +1,85 @@
+#pragma once
+
+// Are files exported ?
+#ifdef COMPILE_PROCESSING_AIRSEND
+#define        PROCESSING_AIRSEND_API  __declspec(dllexport)
+#else  // COMPILE_PROCESSING_AIRSEND
+#define        PROCESSING_AIRSEND_API  __declspec(dllimport)
+#endif // COMPILE_PROCESSING_AIRSEND
+
+// Create and initialize an AirSend instance. This will return NULL if it fails.
+extern "C" PROCESSING_AIRSEND_API      
+                       void*   AirSend_Create( // The video resolution. This should be a multiple of 8 pixels wide.
+                                                                   // This is the full frame resolution and not the per field resolution
+                                                                       // so for instance a 1920x1080 interlaced video stream would store
+                                                                       // xres=1920 yres=1080
+                                                                       const int xres, const int yres, 
+                                                                       // The frame-rate as a numerator and denominator. Examples :
+                                                                       // NTSC, 480i30, 1080i30 : 30000/1001
+                                                                       // NTSC, 720p60 : 60000/1001
+                                                                       // PAL, 576i50, 1080i50 : 30000/1200
+                                                                       // PAL, 720p50 : 60000/1200
+                                                                       const int frame_rate_n, const int frame_rate_d, 
+                                                                       // Is this field interlaced or not ?
+                                                                       const bool progressive,
+                                                                       // The image aspect ratio as a floating point. For instance
+                                                                       // 4:3  = 4.0/3.0  = 1.33333
+                                                                       // 16:9 = 16.0/9.0 = 1.77778
+                                                                       const float aspect_ratio,
+                                                                       // Do we want audio ?
+                                                                       const bool audio_enabled,
+                                                                       // The number of audio channels. 
+                                                                       const int no_channels,
+                                                                       // The audio sample-rate
+                                                                       const int sample_rate );
+
+// Destroy an instance of AirSend that was created by AirSend_Create.
+extern "C" PROCESSING_AIRSEND_API
+                       void AirSend_Destroy( void* p_instance );
+
+// Add a video frame. This is in YCbCr format and may have an optional alpha channel.
+// This is stored in an uncompressed video buffer of FourCC UYVY which has 16 bits per pixel
+// YUV 4:2:2 (Y sample at every pixel, U and V sampled at every second pixel horizontally on each line). 
+// This means that the stride of the image is xres*2 bytes pointed to by p_ycbcr. 
+// For fielded video, the two fields are interleaved together and it is assumed that field 0 is always
+// above field 1 which matches all modern video formats. It is recommended that if you desire to send
+// 486 line video that you drop the first line and the bottom 5 lines and send 480 line video. 
+// The return value is true when connected, false when not connected.
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_frame_ycbcr( void* p_instance, const BYTE* p_ycbcr );
+
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_frame_ycbcr_alpha( void* p_instance, const BYTE* p_ycbcr, const BYTE* p_alpha );
+
+// These methods allow you to add video in BGRA and BGRX formats. (BGRX is 32 bit BGR with the alpha channel
+// ignored.) Frames are provided as uncompressed buffers. YCbCr is the preferred color space and these are
+// provided as a conveniance.
+// The return value is true when connected, false when not connected.
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_frame_bgra( void* p_instance, const BYTE* p_bgra );
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_frame_bgrx( void* p_instance, const BYTE* p_bgrx );
+
+// Because Windows tends to create images bottom to top by default in memory, there are versions of the
+// BGR? functions that will send the video frame vertically flipped to avoid you needing to use CPU time
+// and memory bandwidth doing this yourself.
+// The return value is true when connected, false when not connected.
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_frame_bgra_flipped( void* p_instance, const BYTE* p_bgra );
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_frame_bgrx_flipped( void* p_instance, const BYTE* p_bgrx );
+
+// Add audio data. This should be in 16 bit PCM uncompressed and all channels are interleaved together.
+// Because audio and video are muxed together and send to the video source it is important that you send
+// these at the same rate since video frames will be "held" in the muxer until the corresponding audio
+// is received so that all data can be sent in "display" order to the TriCaster.
+// The return value is true when connected, false when not connected.
+extern "C" PROCESSING_AIRSEND_API
+                       bool AirSend_add_audio( void* p_instance, const short* p_src, const int no_samples );
+
+// This allows you to tell a particular TriCaster that is on "Receive" mode to watch this video source.
+// By default, on a TriCaster "Net 1" is on port 7000, and "Net 2" is on port 7001. Note that a full implementation
+// should use Bonjour to locate the TriCaster as described in the SDK documentation; when working this way
+// you would always know the true port numbers.
+extern "C" PROCESSING_AIRSEND_API
+                       void AirSend_request_connection( void* p_instance, const ULONG IP, const USHORT Port );
diff --git a/dependencies/newtek/lib/Processing.AirSend.x86.lib b/dependencies/newtek/lib/Processing.AirSend.x86.lib
new file mode 100644 (file)
index 0000000..cf8b252
Binary files /dev/null and b/dependencies/newtek/lib/Processing.AirSend.x86.lib differ
diff --git a/modules/newtek/StdAfx.cpp b/modules/newtek/StdAfx.cpp
new file mode 100644 (file)
index 0000000..04bd954
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag89@gmail.com
+*/
+// stdafx.cpp : source file that includes just the standard includes
+//     dma.pch will be the pre-compiled header
+//     stdafx.obj will contain the pre-compiled type information
+
+#include "stdafx.h"
+
+// TODO: reference any additional headers you need in STDAFX.H
+// and not in this file
diff --git a/modules/newtek/StdAfx.h b/modules/newtek/StdAfx.h
new file mode 100644 (file)
index 0000000..f65aa48
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag89@gmail.com
+*/
+
+#pragma once
+
+#ifdef _DEBUG
+#include <crtdbg.h>
+#endif
+
+#define NOMINMAX
+
+#include <Windows.h>
+
+#include <memory>
+#include <array>
+#include <functional>
+#include <algorithm>
+#include <vector>
+#include <deque>
+#include <queue>
+#include <string>
+#include <math.h>
+
+#include <common/utility/string.h>
+#include <common/memory/safe_ptr.h>
+//#include "../common/concurrency/executor.h" // Can't include this due to MSVC lambda bug
+
+#include <common/log/Log.h>
+#include <common/exception/exceptions.h>
+
+#include <assert.h>
diff --git a/modules/newtek/bin/Release/newtek.lib b/modules/newtek/bin/Release/newtek.lib
new file mode 100644 (file)
index 0000000..e423c97
Binary files /dev/null and b/modules/newtek/bin/Release/newtek.lib differ
diff --git a/modules/newtek/consumer/newtek_consumer.cpp b/modules/newtek/consumer/newtek_consumer.cpp
new file mode 100644 (file)
index 0000000..fad2ef1
--- /dev/null
@@ -0,0 +1,180 @@
+/*
+* Copyright 2013 NewTek
+*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag@live.com
+*/
+#include "../StdAfx.h"
+
+#include "newtek_consumer.h"
+
+#include <core/consumer/frame_consumer.h>
+#include <core/parameters/parameters.h>
+#include <core/video_format.h>
+#include <core/mixer/read_frame.h>
+
+#include <common/utility/assert.h>
+#include <common/concurrency/executor.h>
+
+#include <boost/algorithm/string.hpp>
+
+#include <AirSend_api.h>
+
+namespace caspar { namespace newtek { 
+                       
+struct newtek_consumer : public core::frame_consumer
+{
+       std::shared_ptr<void>   air_send_;
+       core::video_format_desc format_desc_;
+       core::channel_layout    channel_layout_;
+       executor                                executor_;
+
+public:
+
+       newtek_consumer(core::channel_layout channel_layout)
+               : executor_(print())
+               , channel_layout_(channel_layout)
+       {
+       }
+       
+       ~newtek_consumer()
+       {
+       }
+
+       // frame_consumer
+       
+       virtual void initialize(const core::video_format_desc& format_desc, int channel_index) override
+       {
+               air_send_.reset(
+                       AirSend_Create(
+                               format_desc.width,
+                               format_desc.height,
+                               format_desc.time_scale,
+                               format_desc.duration,
+                               format_desc.field_mode == core::field_mode::progressive,
+                               static_cast<float>(format_desc.square_width) / static_cast<float>(format_desc.square_height),
+                               true,
+                               channel_layout_.num_channels,
+                               format_desc.audio_sample_rate),
+                       AirSend_Destroy);
+
+               CASPAR_VERIFY(air_send_);
+
+               format_desc_ = format_desc;
+
+               CASPAR_LOG(info) << print() << L" Successfully Initialized.";   
+       }
+
+       virtual boost::unique_future<bool> send(const safe_ptr<core::read_frame>& frame) override
+       {
+               CASPAR_VERIFY(format_desc_.height * format_desc_.width * 4 == static_cast<unsigned>(frame->image_data().size()));
+
+               return executor_.begin_invoke([=]() -> bool
+               {                       
+                       // AUDIO
+
+                       std::vector<int16_t, tbb::cache_aligned_allocator<int16_t>> audio_buffer;
+
+                       if (core::needs_rearranging(
+                                       frame->multichannel_view(),
+                                       channel_layout_,
+                                       channel_layout_.num_channels))
+                       {
+                               core::audio_buffer downmixed;
+
+                               downmixed.resize(
+                                               frame->multichannel_view().num_samples() 
+                                                               * channel_layout_.num_channels,
+                                               0);
+
+                               auto dest_view = core::make_multichannel_view<int32_t>(
+                                               downmixed.begin(), downmixed.end(), channel_layout_);
+
+                               core::rearrange_or_rearrange_and_mix(
+                                               frame->multichannel_view(),
+                                               dest_view,
+                                               core::default_mix_config_repository());
+
+                               audio_buffer = core::audio_32_to_16(downmixed);
+                       }
+                       else
+                       {
+                               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);
+
+                       // VIDEO
+
+                       AirSend_add_frame_bgra(air_send_.get(), frame->image_data().begin());
+                       
+                       return true;
+               });
+       }
+               
+       virtual std::wstring print() const override
+       {
+               return L"newtek";
+       }
+
+       virtual boost::property_tree::wptree info() const override
+       {
+               boost::property_tree::wptree info;
+               info.add(L"type", L"newtek-consumer");
+               return info;
+       }
+
+       virtual size_t buffer_depth() const override
+       {
+               return 0;
+       }
+       
+       virtual int index() const override
+       {
+               return 900;
+       }
+
+       virtual int64_t presentation_frame_age_millis() const override
+       {
+               return 0;
+       }
+};     
+
+safe_ptr<core::frame_consumer> create_consumer(const core::parameters& params)
+{
+       if(params.size() < 1 || params[0] != L"NEWTEK")
+               return core::frame_consumer::empty();
+               
+       const auto channel_layout = core::default_channel_layout_repository()
+               .get_by_name(
+                       params.get(L"CHANNEL_LAYOUT", L"STEREO"));
+
+       return make_safe<newtek_consumer>(channel_layout);
+}
+
+safe_ptr<core::frame_consumer> create_consumer(const boost::property_tree::wptree& ptree) 
+{      
+       const auto channel_layout =
+               core::default_channel_layout_repository()
+                       .get_by_name(
+                               boost::to_upper_copy(ptree.get(L"channel-layout", L"STEREO")));
+
+       return make_safe<newtek_consumer>(channel_layout);
+}
+
+}}
\ No newline at end of file
diff --git a/modules/newtek/consumer/newtek_consumer.h b/modules/newtek/consumer/newtek_consumer.h
new file mode 100644 (file)
index 0000000..a780fed
--- /dev/null
@@ -0,0 +1,42 @@
+/*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag89@gmail.com
+*/
+
+#pragma once
+
+#include <common/memory/safe_ptr.h>
+
+#include <boost/property_tree/ptree.hpp>
+
+#include <string>
+
+namespace caspar { 
+
+namespace core {
+       struct frame_consumer;
+       class parameters;
+}
+        
+namespace newtek {
+
+safe_ptr<core::frame_consumer> create_consumer(const core::parameters& params);
+safe_ptr<core::frame_consumer> create_consumer(const boost::property_tree::wptree& ptree);
+
+}}
\ No newline at end of file
diff --git a/modules/newtek/newtek.cpp b/modules/newtek/newtek.cpp
new file mode 100644 (file)
index 0000000..f75c9d8
--- /dev/null
@@ -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 <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag89@gmail.com
+*/
+
+#include "newtek.h"
+
+#include "consumer/newtek_consumer.h"
+
+#include <core/parameters/parameters.h>
+#include <core/consumer/frame_consumer.h>
+
+namespace caspar { namespace newtek {
+
+void init()
+{
+       try
+       {
+               core::register_consumer_factory([](const core::parameters& params)
+               {
+                       return newtek::create_consumer(params);
+               });
+       }
+       catch(...){}
+}
+
+}}
\ No newline at end of file
diff --git a/modules/newtek/newtek.h b/modules/newtek/newtek.h
new file mode 100644 (file)
index 0000000..0631db0
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+* 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 <http://www.gnu.org/licenses/>.
+*
+* Author: Robert Nagy, ronag89@gmail.com
+*/
+
+#pragma once
+
+#include <string>
+#include <vector>
+
+namespace caspar { namespace newtek {
+
+void init();
+
+}}
\ No newline at end of file
diff --git a/modules/newtek/newtek.vcxproj b/modules/newtek/newtek.vcxproj
new file mode 100644 (file)
index 0000000..2cd4238
--- /dev/null
@@ -0,0 +1,276 @@
+<?xml version="1.0" encoding="utf-8"?>
+<Project DefaultTargets="Build" ToolsVersion="4.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
+  <ItemGroup Label="ProjectConfigurations">
+    <ProjectConfiguration Include="Profile|Win32">
+      <Configuration>Profile</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Debug|Win32">
+      <Configuration>Debug</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Develop|Win32">
+      <Configuration>Develop</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+    <ProjectConfiguration Include="Release|Win32">
+      <Configuration>Release</Configuration>
+      <Platform>Win32</Platform>
+    </ProjectConfiguration>
+  </ItemGroup>
+  <PropertyGroup Label="Globals">
+    <ProjectGuid>{29CCB0C0-A1B7-4C05-BFEC-486C9A0B78CE}</ProjectGuid>
+    <RootNamespace>newtek</RootNamespace>
+    <Keyword>Win32Proj</Keyword>
+    <ProjectName>newtek</ProjectName>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <WholeProgramOptimization>false</WholeProgramOptimization>
+  </PropertyGroup>
+  <PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
+    <ConfigurationType>StaticLibrary</ConfigurationType>
+    <CharacterSet>Unicode</CharacterSet>
+    <UseIntelTBB>true</UseIntelTBB>
+    <InstrumentIntelTBB>false</InstrumentIntelTBB>
+  </PropertyGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
+  <ImportGroup Label="ExtensionSettings">
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="PropertySheets">
+    <Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" Label="LocalAppDataPlatform" />
+    <Import Project="$(VCTargetsPath)Microsoft.CPP.UpgradeFromVC71.props" />
+  </ImportGroup>
+  <PropertyGroup Label="UserMacros" />
+  <PropertyGroup>
+    <_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>
+    <IntDir Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath)</IncludePath>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath)</IncludePath>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;$(IncludePath)</IncludePath>
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\..\;..\..\common;..\..\dependencies\newtek\include;..\..\dependencies\boost\;..\..\dependencies\tbb\include\;..\..\dependencies\ffmpeg 0.8\include;$(IncludePath)</IncludePath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\..\dependencies\BluefishSDK_V5_10_0_42\Lib\;..\..\dependencies\boost\stage\lib\;..\..\dependencies\tbb\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>
+    <OutDir Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectName)</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectName)</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(ProjectName)</TargetName>
+    <TargetName Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">$(ProjectName)</TargetName>
+  </PropertyGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <MinimalRebuild>false</MinimalRebuild>
+      <ExceptionHandling>Async</ExceptionHandling>
+      <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
+      <SmallerTypeCheck>false</SmallerTypeCheck>
+      <RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>NotSet</EnableEnhancedInstructionSet>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <BrowseInformation>true</BrowseInformation>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>EditAndContinue</DebugInformationFormat>
+      <PreprocessorDefinitions>TBB_USE_DEBUG;_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;TBB_USE_CAPTURED_EXCEPTION=0;TBB_USE_ASSERT=1;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <FloatingPointModel>Fast</FloatingPointModel>
+      <ForcedIncludeFiles>common/compiler/vs/disable_silly_warnings.h</ForcedIncludeFiles>
+    </ClCompile>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <Lib>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>AnySuitable</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <ExceptionHandling>Async</ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;TBB_USE_CAPTURED_EXCEPTION=0;NDEBUG;_VC80_UPGRADE=0x0710;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WholeProgramOptimization>true</WholeProgramOptimization>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <OmitFramePointers>true</OmitFramePointers>
+      <FloatingPointModel>Fast</FloatingPointModel>
+      <ForcedIncludeFiles>common/compiler/vs/disable_silly_warnings.h</ForcedIncludeFiles>
+    </ClCompile>
+    <PreLinkEvent>
+      <Command>
+      </Command>
+    </PreLinkEvent>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <Lib>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+      <LinkTimeCodeGeneration>true</LinkTimeCodeGeneration>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>MaxSpeed</Optimization>
+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <ExceptionHandling>Async</ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;TBB_USE_CAPTURED_EXCEPTION=0;TBB_USE_THREADING_TOOLS=1;NDEBUG;_VC80_UPGRADE=0x0710;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <OmitFramePointers>true</OmitFramePointers>
+      <FloatingPointModel>Fast</FloatingPointModel>
+      <ForcedIncludeFiles>common/compiler/vs/disable_silly_warnings.h</ForcedIncludeFiles>
+    </ClCompile>
+    <PreLinkEvent>
+      <Command>
+      </Command>
+    </PreLinkEvent>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <Lib>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">
+    <PreBuildEvent>
+      <Command>
+      </Command>
+    </PreBuildEvent>
+    <ClCompile>
+      <Optimization>Disabled</Optimization>
+      <InlineFunctionExpansion>Disabled</InlineFunctionExpansion>
+      <IntrinsicFunctions>true</IntrinsicFunctions>
+      <FavorSizeOrSpeed>Speed</FavorSizeOrSpeed>
+      <AdditionalIncludeDirectories>../;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
+      <ExceptionHandling>Async</ExceptionHandling>
+      <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
+      <EnableEnhancedInstructionSet>StreamingSIMDExtensions2</EnableEnhancedInstructionSet>
+      <RuntimeTypeInfo>true</RuntimeTypeInfo>
+      <PrecompiledHeader>Use</PrecompiledHeader>
+      <WarningLevel>Level4</WarningLevel>
+      <DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
+      <MultiProcessorCompilation>true</MultiProcessorCompilation>
+      <PreprocessorDefinitions>_CRT_SECURE_NO_WARNINGS;_SCL_SECURE_NO_WARNINGS;TBB_USE_CAPTURED_EXCEPTION=0;TBB_USE_ASSERT=1;TBB_USE_PERFORMANCE_WARNINGS=1;_VC80_UPGRADE=0x0710;%(PreprocessorDefinitions)</PreprocessorDefinitions>
+      <WholeProgramOptimization>false</WholeProgramOptimization>
+      <TreatWarningAsError>true</TreatWarningAsError>
+      <OmitFramePointers>true</OmitFramePointers>
+      <FloatingPointModel>Fast</FloatingPointModel>
+      <ForcedIncludeFiles>common/compiler/vs/disable_silly_warnings.h</ForcedIncludeFiles>
+    </ClCompile>
+    <PostBuildEvent>
+      <Command>
+      </Command>
+    </PostBuildEvent>
+    <Lib>
+      <AdditionalDependencies>
+      </AdditionalDependencies>
+    </Lib>
+  </ItemDefinitionGroup>
+  <ItemGroup>
+    <ClInclude Include="newtek.h" />
+    <ClInclude Include="consumer\newtek_consumer.h" />
+    <ClInclude Include="StdAfx.h" />
+  </ItemGroup>
+  <ItemGroup>
+    <ClCompile Include="newtek.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">NotUsing</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>
+    </ClCompile>
+    <ClCompile Include="consumer\newtek_consumer.cpp">
+      <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>
+      <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>
+      <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>
+      <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../StdAfx.h</PrecompiledHeaderFile>
+    </ClCompile>
+    <ClCompile Include="StdAfx.cpp">
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">Create</PrecompiledHeader>
+      <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>
+    </ClCompile>
+  </ItemGroup>
+  <ItemGroup>
+    <ProjectReference Include="..\..\common\common.vcxproj">
+      <Project>{02308602-7fe0-4253-b96e-22134919f56a}</Project>
+    </ProjectReference>
+    <ProjectReference Include="..\..\core\core.vcxproj">
+      <Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>
+    </ProjectReference>
+  </ItemGroup>
+  <Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
+  <ImportGroup Label="ExtensionTargets">
+  </ImportGroup>
+</Project>
\ No newline at end of file
index 5bb8f69440296f56e5deb786238421c7956f3365..3ba90ce2a4376670b420617043a899166ccef2b2 100644 (file)
@@ -1,7 +1,7 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <configuration>\r
   <paths>\r
-    <media-path>media\</media-path>\r
+    <media-path>\\192.168.1.6\nas\CasparCG\_media\</media-path>\r
     <log-path>log\</log-path>\r
     <data-path>data\</data-path>\r
     <template-path>templates\</template-path>\r
@@ -16,6 +16,7 @@
             <device>1</device>\r
             <windowed>true</windowed>\r
           </screen>\r
+          <newtek></newtek>\r
         </consumers>\r
     </channel>\r
   </channels>\r
index b93351790ffa1d1d4d72aba8e211486874ba8e67..a90e22f83df2f2909826a0556077fafe38eab08e 100644 (file)
 #include <modules/flash/flash.h>\r
 #include <modules/portaudio/portaudio.h>\r
 #include <modules/ogl/ogl.h>\r
+#include <modules/newtek/newtek.h>\r
 #include <modules/silverlight/silverlight.h>\r
 #include <modules/image/image.h>\r
 #include <modules/image/consumer/image_consumer.h>\r
 \r
 #include <modules/portaudio/consumer/portaudio_consumer.h>\r
 #include <modules/bluefish/consumer/bluefish_consumer.h>\r
+#include <modules/newtek/consumer/newtek_consumer.h>\r
 #include <modules/decklink/consumer/decklink_consumer.h>\r
 #include <modules/decklink/consumer/blocking_decklink_consumer.h>\r
 #include <modules/ogl/consumer/ogl_consumer.h>\r
@@ -106,6 +108,9 @@ struct server::implementation : boost::noncopyable
                portaudio::init();\r
                CASPAR_LOG(info) << L"Initialized portaudio module.";\r
                                                          \r
+               newtek::init();\r
+               CASPAR_LOG(info) << L"Initialized newtek module.";\r
+\r
                ogl::init();              \r
                CASPAR_LOG(info) << L"Initialized ogl module.";\r
 \r
@@ -214,6 +219,8 @@ struct server::implementation : boost::noncopyable
                                        on_consumer(bluefish::create_consumer(xml_consumer.second));                                    \r
                                else if (name == L"decklink")                                   \r
                                        on_consumer(decklink::create_consumer(xml_consumer.second));                            \r
+                               else if (name == L"newtek")                                     \r
+                                       on_consumer(newtek::create_consumer(xml_consumer.second));                      \r
                                else if (name == L"blocking-decklink")\r
                                        on_consumer(decklink::create_blocking_consumer(xml_consumer.second));                           \r
                                else if (name == L"file" || name == L"stream")                                  \r
index c11714eb9ca2648efd9866a4722f8d5e30eb82fb..5182eccb4286d22fe67f135b3eb471cbce8c0d3e 100644 (file)
@@ -50,6 +50,9 @@
     <ProjectReference Include="..\modules\image\image.vcxproj">\r
       <Project>{3e11ff65-a9da-4f80-87f2-a7c6379ed5e2}</Project>\r
     </ProjectReference>\r
+    <ProjectReference Include="..\modules\newtek\newtek.vcxproj">\r
+      <Project>{29ccb0c0-a1b7-4c05-bfec-486c9a0b78ce}</Project>\r
+    </ProjectReference>\r
     <ProjectReference Include="..\modules\oal\oal.vcxproj">\r
       <Project>{82ed7ed6-8a15-40ec-a8af-f5e712e0da68}</Project>\r
     </ProjectReference>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)tmp\$(Configuration)\</IntDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(SolutionDir)tmp\$(Configuration)\</IntDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">$(SolutionDir)tmp\$(Configuration)\</IntDir>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\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)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\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)</IncludePath>\r
     <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\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)</IncludePath>\r
     <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\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)</IncludePath>\r
     <IncludePath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\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)</IncludePath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">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)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">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)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">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)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">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)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">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)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">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)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">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)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">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)</LibraryPath>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(SolutionDir)bin\$(Configuration)\</OutDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(SolutionDir)bin\$(Configuration)\</OutDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(SolutionDir)bin\$(Configuration)\</OutDir>\r
       <ForcedIncludeFiles>common/compiler/vs/disable_silly_warnings.h</ForcedIncludeFiles>\r
     </ClCompile>\r
     <Link>\r
-      <AdditionalDependencies>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</AdditionalDependencies>\r
+      <AdditionalDependencies>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</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -209,6 +212,7 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)"
 copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)"\r
+copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg.config" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>\r
     </PostBuildEvent>\r
@@ -243,7 +247,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>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</AdditionalDependencies>\r
+      <AdditionalDependencies>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</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -272,6 +276,7 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)"
 copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)"\r
+copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg.config" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>\r
     </PostBuildEvent>\r
@@ -306,7 +311,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>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</AdditionalDependencies>\r
+      <AdditionalDependencies>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</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -334,6 +339,7 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)"
 copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)"\r
+copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg.config" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>\r
     </PostBuildEvent>\r
@@ -368,7 +374,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>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</AdditionalDependencies>\r
+      <AdditionalDependencies>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</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -396,6 +402,7 @@ copy "$(SolutionDir)dependencies\tbb\bin\ia32\vc10\*.dll" "$(OutDir)"
 copy "$(SolutionDir)dependencies\zlib\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\SFML-1.6\extlibs\bin\*.dll" "$(OutDir)"\r
 copy "$(SolutionDir)dependencies\portaudio\bin\*.dll" "$(OutDir)"\r
+copy "$(SolutionDir)dependencies\newtek\bin\*.dll" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg.config" "$(OutDir)"\r
 copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"</Command>\r
     </PostBuildEvent>\r