]> git.sesse.net Git - casparcg/commitdiff
2.0.0.2:
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 13 Jan 2011 17:56:20 +0000 (17:56 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 13 Jan 2011 17:56:20 +0000 (17:56 +0000)
  - bluefish_consumer: Dlls are loaded dynamically on-demand. Which means that a separate compilation is for running CasparCG on a machine without bluefish drivers installed.
  - bluefish_consumer: Embedded audio is now disabled when not used.

git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@350 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/consumer/bluefish/bluefish_consumer.cpp
core/consumer/frame_consumer_device.cpp
shell/boostrapper.cpp
shell/caspar.config
shell/shell.vcxproj

index 0d7726708c7dda7effe86ff4d7d1e51471af5a9f..dc8e81e012466d1c11b789b2a61b1b8790c2a559 100644 (file)
@@ -20,8 +20,6 @@
  \r
 #include "..\..\StdAfx.h"\r
 \r
-#ifndef DISABLE_BLUEFISH\r
-\r
 #include "bluefish_consumer.h"\r
 #include "util.h"\r
 #include "memory.h"\r
 \r
 #include <memory>\r
 \r
+#include <Windows.h>\r
+\r
 namespace caspar { namespace core { namespace bluefish {\r
        \r
+class BlueVelvetLib\r
+{\r
+       HINSTANCE lib_;\r
+\r
+       BlueVelvetLib()\r
+       {  \r
+#ifdef _DEBUG\r
+               auto lib_str = L"BlueVelvet3_d.dll";\r
+#else\r
+               auto lib_str = L"BlueVelvet3.dll";\r
+#endif\r
+               lib_ = LoadLibrary(lib_str);       \r
+               if(!lib_)\r
+                       BOOST_THROW_EXCEPTION(file_not_found() << msg_info("Could not find BlueVelvet3.dll"));\r
+               BlueVelvetFactory4 = (BlueVelvetFactory4Func)GetProcAddress(lib_, "BlueVelvetFactory4");\r
+       }\r
+public:\r
+       typedef CBlueVelvet4* (*BlueVelvetFactory4Func)();\r
+       BlueVelvetFactory4Func BlueVelvetFactory4;\r
+       \r
+       ~BlueVelvetLib(){FreeLibrary(lib_);}\r
+\r
+       static BlueVelvetLib& get_instance()\r
+       {\r
+               static BlueVelvetLib instance;\r
+               return instance;\r
+       }\r
+};\r
+       \r
+class BlueHancUtilLib\r
+{\r
+       HINSTANCE lib_;\r
+       BlueHancUtilLib()\r
+       {  \r
+#ifdef _DEBUG\r
+               auto lib_str = L"BlueHancUtils_d.dll";\r
+#else\r
+               auto lib_str = L"BlueHancUtils.dll";\r
+#endif\r
+               lib_ = LoadLibrary(lib_str);       \r
+               if(!lib_)\r
+                       BOOST_THROW_EXCEPTION(file_not_found() << msg_info("Could not find BlueHancUtils.dll"));\r
+               encode_hanc_frame = (encode_hanc_frame_func)GetProcAddress(lib_, "encode_hanc_frame");\r
+               encode_hanc_frame_ex = (encode_hanc_frame_ex_func)GetProcAddress(lib_, "encode_hanc_frame_ex");\r
+       }\r
+public:\r
+       typedef BLUE_UINT32 (*encode_hanc_frame_func)(struct hanc_stream_info_struct * hanc_stream_ptr, void * audio_pcm_ptr,BLUE_UINT32 no_audio_ch,BLUE_UINT32 no_audio_samples,BLUE_UINT32 nTypeOfSample,BLUE_UINT32 emb_audio_flag);\r
+       encode_hanc_frame_func encode_hanc_frame;\r
+\r
+       typedef BLUE_UINT32 (*encode_hanc_frame_ex_func)(BLUE_UINT32 card_type, struct hanc_stream_info_struct * hanc_stream_ptr, void * audio_pcm_ptr, BLUE_UINT32 no_audio_ch,        BLUE_UINT32 no_audio_samples, BLUE_UINT32 nTypeOfSample, BLUE_UINT32 emb_audio_flag);\r
+       encode_hanc_frame_ex_func encode_hanc_frame_ex;\r
+\r
+       ~BlueHancUtilLib(){FreeLibrary(lib_);}\r
+\r
+       static BlueHancUtilLib& get_instance()\r
+       {\r
+               static BlueHancUtilLib instance;\r
+               return instance;\r
+       }\r
+};\r
+\r
 struct consumer::implementation : boost::noncopyable\r
 {\r
        boost::unique_future<void> active_;\r
        executor executor_;\r
                        \r
-       std::shared_ptr<CBlueVelvet4> sdk_;\r
+       std::shared_ptr<CBlueVelvet4> blue_;\r
        \r
        unsigned int device_index_;\r
        video_format_desc format_desc_;\r
@@ -61,7 +122,7 @@ struct consumer::implementation : boost::noncopyable
 \r
 public:\r
        implementation::implementation(const video_format_desc& format_desc, unsigned int device_index, bool embed_audio) \r
-               : sdk_(BlueVelvetFactory4())\r
+               : blue_(BlueVelvetLib::get_instance().BlueVelvetFactory4())\r
                , device_index_(device_index)\r
                , format_desc_(format_desc)\r
                , mem_fmt_(MEM_FMT_ARGB_PC)\r
@@ -72,10 +133,10 @@ public:
                , embed_audio_(embed_audio)\r
        {\r
                                \r
-               if(BLUE_FAIL(sdk_->device_attach(device_index_, FALSE))) \r
+               if(BLUE_FAIL(blue_->device_attach(device_index_, FALSE))) \r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to attach device."));\r
        \r
-               int videoCardType = sdk_->has_video_cardtype();\r
+               int videoCardType = blue_->has_video_cardtype();\r
                CASPAR_LOG(info) << TEXT("BLUECARD INFO: Card type: ") << get_card_desc(videoCardType) << TEXT(". (device ") << device_index_ << TEXT(")");\r
        \r
                //void* pBlueDevice = blue_attach_to_device(1);\r
@@ -88,10 +149,10 @@ public:
                //blue_detach_from_device(&pBlueDevice);\r
                \r
                auto desiredVideoFormat = vid_fmt_from_video_format(format_desc_.format);\r
-               int videoModeCount = sdk_->count_video_mode();\r
+               int videoModeCount = blue_->count_video_mode();\r
                for(int videoModeIndex = 1; videoModeIndex <= videoModeCount; ++videoModeIndex) \r
                {\r
-                       EVideoMode videoMode = sdk_->enum_video_mode(videoModeIndex);\r
+                       EVideoMode videoMode = blue_->enum_video_mode(videoModeIndex);\r
                        if(videoMode == desiredVideoFormat) \r
                                vid_fmt_ = videoMode;                   \r
                }\r
@@ -99,61 +160,66 @@ public:
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to set videomode."));\r
                \r
                // Set default video output channel\r
-               //if(BLUE_FAIL(set_card_property(sdk_, DEFAULT_VIDEO_OUTPUT_CHANNEL, channel)))\r
+               //if(BLUE_FAIL(set_card_property(blue_, DEFAULT_VIDEO_OUTPUT_CHANNEL, channel)))\r
                //      CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to set default channel. (device ") << device_index_ << TEXT(")");\r
 \r
                //Setting output Video mode\r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_MODE, vid_fmt_))) \r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_MODE, vid_fmt_))) \r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to set videomode."));\r
 \r
                //Select Update Mode for output\r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_UPDATE_TYPE, upd_fmt_))) \r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_UPDATE_TYPE, upd_fmt_))) \r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to set update type. "));\r
        \r
                disable_video_output();\r
 \r
                //Enable dual link output\r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_DUAL_LINK_OUTPUT, 1)))\r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_DUAL_LINK_OUTPUT, 1)))\r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to enable dual link."));\r
 \r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_DUAL_LINK_OUTPUT_SIGNAL_FORMAT_TYPE, Signal_FormatType_4224)))\r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_DUAL_LINK_OUTPUT_SIGNAL_FORMAT_TYPE, Signal_FormatType_4224)))\r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to set dual link format type to 4:2:2:4. (device " + boost::lexical_cast<std::string>(device_index_) + ")"));\r
                        \r
                //Select output memory format\r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_MEMORY_FORMAT, mem_fmt_))) \r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_MEMORY_FORMAT, mem_fmt_))) \r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to set memory format."));\r
                \r
                //Select image orientation\r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_IMAGE_ORIENTATION, ImageOrientation_Normal)))\r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_IMAGE_ORIENTATION, ImageOrientation_Normal)))\r
                        CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to set image orientation to normal. (device ") << device_index_ << TEXT(")"); \r
 \r
                // Select data range\r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_RGB_DATA_RANGE, CGR_RANGE))) \r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_RGB_DATA_RANGE, CGR_RANGE))) \r
                        CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to set RGB data range to CGR. (device ") << device_index_ << TEXT(")");       \r
                \r
-               if(BLUE_FAIL(set_card_property(sdk_, VIDEO_PREDEFINED_COLOR_MATRIX, vid_fmt_ == VID_FMT_PAL ? MATRIX_601_CGR : MATRIX_709_CGR)))\r
+               if(BLUE_FAIL(set_card_property(blue_, VIDEO_PREDEFINED_COLOR_MATRIX, vid_fmt_ == VID_FMT_PAL ? MATRIX_601_CGR : MATRIX_709_CGR)))\r
                        CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to set colormatrix to ") << (vid_fmt_ == VID_FMT_PAL ? TEXT("601 CGR") : TEXT("709 CGR")) << TEXT(". (device ") << device_index_ << TEXT(")");\r
-               \r
-               //if(BLUE_FAIL(set_card_property(sdk_, EMBEDDED_AUDIO_OUTPUT, 0)))      \r
-               //      CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to enable embedded audio. (device ") << device_index_ << TEXT(")");   \r
-               //else \r
-               //{\r
-               //      CASPAR_LOG(info) << TEXT("BLUECARD INFO: Enabled embedded audio. (device ") << device_index_ << TEXT(")");\r
-               //      hasEmbeddedAudio_ = true;\r
-               //}\r
+\r
+               if(!embed_audio_)\r
+               {\r
+                       if(BLUE_FAIL(set_card_property(blue_, EMBEDEDDED_AUDIO_OUTPUT, 0))) \r
+                               CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to disable embedded audio. (device ") << device_index_ << TEXT(")");                  \r
+                       CASPAR_LOG(info) << TEXT("BLUECARD INFO: Disabled embedded-audio. device ") << device_index_ << TEXT(")");\r
+               }\r
+               else\r
+               {\r
+                       if(BLUE_FAIL(set_card_property(blue_, EMBEDEDDED_AUDIO_OUTPUT, blue_emb_audio_enable | blue_emb_audio_group1_enable))) \r
+                               CASPAR_LOG(error) << TEXT("BLUECARD ERROR: Failed to enable embedded audio. (device ") << device_index_ << TEXT(")");                   \r
+                       CASPAR_LOG(info) << TEXT("BLUECARD INFO: Enabled embedded-audio. device ") << device_index_ << TEXT(")");\r
+               }\r
 \r
                CASPAR_LOG(info) << TEXT("BLUECARD INFO: Successfully configured bluecard for ") << format_desc_ << TEXT(". (device ") << device_index_ << TEXT(")");\r
 \r
-               if (sdk_->has_output_key()) \r
+               if (blue_->has_output_key()) \r
                {\r
                        int dummy = TRUE; int v4444 = FALSE; int invert = FALSE; int white = FALSE;\r
-                       sdk_->set_output_key(dummy, v4444, invert, white);\r
+                       blue_->set_output_key(dummy, v4444, invert, white);\r
                }\r
 \r
-               if(sdk_->GetHDCardType(device_index_) != CRD_HD_INVALID) \r
-                       sdk_->Set_DownConverterSignalType(vid_fmt_ == VID_FMT_PAL ? SD_SDI : HD_SDI);   \r
+               if(blue_->GetHDCardType(device_index_) != CRD_HD_INVALID) \r
+                       blue_->Set_DownConverterSignalType(vid_fmt_ == VID_FMT_PAL ? SD_SDI : HD_SDI);  \r
        \r
-               if(BLUE_FAIL(sdk_->set_video_engine(engine_mode_)))\r
+               if(BLUE_FAIL(blue_->set_video_engine(engine_mode_)))\r
                        BOOST_THROW_EXCEPTION(bluefish_exception() << msg_info("BLUECARD ERROR: Failed to set vido engine."));\r
 \r
                enable_video_output();\r
@@ -172,21 +238,21 @@ public:
        {\r
                disable_video_output();\r
 \r
-               if(sdk_)\r
-                       sdk_->device_detach();          \r
+               if(blue_)\r
+                       blue_->device_detach();         \r
 \r
                CASPAR_LOG(info) << "BLUECARD INFO: Successfully released device " << device_index_;\r
        }\r
        \r
        void enable_video_output()\r
        {\r
-               if(!BLUE_PASS(set_card_property(sdk_, VIDEO_BLACKGENERATOR, 0)))\r
+               if(!BLUE_PASS(set_card_property(blue_, VIDEO_BLACKGENERATOR, 0)))\r
                        CASPAR_LOG(error) << "BLUECARD ERROR: Failed to disable video output. (device " << device_index_ << TEXT(")");  \r
        }\r
 \r
        void disable_video_output()\r
        {\r
-               if(!BLUE_PASS(set_card_property(sdk_, VIDEO_BLACKGENERATOR, 1)))\r
+               if(!BLUE_PASS(set_card_property(blue_, VIDEO_BLACKGENERATOR, 1)))\r
                        CASPAR_LOG(error) << "BLUECARD ERROR: Failed to disable video output. (device " << device_index_ << TEXT(")");          \r
        }\r
 \r
@@ -205,7 +271,7 @@ public:
                                std::copy_n(frame->image_data().begin(), frame->image_data().size(), reserved_frames_.front()->image_data());\r
 \r
                                unsigned long n_field = 0;\r
-                               sdk_->wait_output_video_synch(UPD_FMT_FRAME, n_field);\r
+                               blue_->wait_output_video_synch(UPD_FMT_FRAME, n_field);\r
                                \r
                                if(embed_audio_)\r
                                {               \r
@@ -213,27 +279,27 @@ public:
 \r
                                        encode_hanc(reinterpret_cast<BLUE_UINT32*>(reserved_frames_.front()->hanc_data()), frame_audio_data, audio_samples, audio_nchannels);\r
                                                                \r
-                                       sdk_->system_buffer_write_async(const_cast<unsigned char*>(reserved_frames_.front()->image_data()), \r
+                                       blue_->system_buffer_write_async(const_cast<unsigned char*>(reserved_frames_.front()->image_data()), \r
                                                                                                        reserved_frames_.front()->image_size(), \r
                                                                                                        nullptr, \r
                                                                                                        BlueImage_HANC_DMABuffer(reserved_frames_.front()->id(), BLUE_DATA_IMAGE));\r
 \r
-                                       sdk_->system_buffer_write_async(reserved_frames_.front()->hanc_data(),\r
+                                       blue_->system_buffer_write_async(reserved_frames_.front()->hanc_data(),\r
                                                                                                        reserved_frames_.front()->hanc_size(), \r
                                                                                                        nullptr,                 \r
                                                                                                        BlueImage_HANC_DMABuffer(reserved_frames_.front()->id(), BLUE_DATA_HANC));\r
 \r
-                                       if(BLUE_FAIL(sdk_->render_buffer_update(BlueBuffer_Image_HANC(reserved_frames_.front()->id()))))\r
+                                       if(BLUE_FAIL(blue_->render_buffer_update(BlueBuffer_Image_HANC(reserved_frames_.front()->id()))))\r
                                                CASPAR_LOG(trace) << TEXT("BLUEFISH: render_buffer_update failed");\r
                                }\r
                                else\r
                                {\r
-                                       sdk_->system_buffer_write_async(const_cast<unsigned char*>(reserved_frames_.front()->image_data()),\r
+                                       blue_->system_buffer_write_async(const_cast<unsigned char*>(reserved_frames_.front()->image_data()),\r
                                                                                                        reserved_frames_.front()->image_size(), \r
                                                                                                        nullptr,                 \r
                                                                                                        BlueImage_DMABuffer(reserved_frames_.front()->id(), BLUE_DATA_IMAGE));\r
                        \r
-                                       if(BLUE_FAIL(sdk_->render_buffer_update(BlueBuffer_Image(reserved_frames_.front()->id()))))\r
+                                       if(BLUE_FAIL(blue_->render_buffer_update(BlueBuffer_Image(reserved_frames_.front()->id()))))\r
                                                CASPAR_LOG(trace) << TEXT("BLUEFISH: render_buffer_update failed");\r
                                }\r
 \r
@@ -253,7 +319,7 @@ public:
 \r
        void encode_hanc(BLUE_UINT32* hanc_data, void* audio_data, size_t audio_samples, size_t audio_nchannels)\r
        {       \r
-               auto card_type = sdk_->has_video_cardtype();\r
+               auto card_type = blue_->has_video_cardtype();\r
                auto sample_type = (AUDIO_CHANNEL_16BIT | AUDIO_CHANNEL_LITTLEENDIAN);\r
                \r
                hanc_stream_info_struct hanc_stream_info;\r
@@ -269,15 +335,9 @@ public:
                auto emb_audio_flag = (blue_emb_audio_enable | blue_emb_audio_group1_enable);\r
 \r
                if (!is_epoch_card(card_type))\r
-               {\r
-                       encode_hanc_frame(&hanc_stream_info, audio_data, audio_nchannels, \r
-                                                               audio_samples, sample_type, emb_audio_flag);    \r
-               }\r
+                       BlueHancUtilLib::get_instance().encode_hanc_frame(&hanc_stream_info, audio_data, audio_nchannels, audio_samples, sample_type, emb_audio_flag);  \r
                else\r
-               {\r
-                       encode_hanc_frame_ex(card_type, &hanc_stream_info, audio_data, audio_nchannels,\r
-                                                                audio_samples, sample_type, emb_audio_flag);\r
-               }                                               \r
+                       BlueHancUtilLib::get_instance().encode_hanc_frame_ex(card_type, &hanc_stream_info, audio_data, audio_nchannels, audio_samples, sample_type, emb_audio_flag);\r
        }\r
 };\r
 \r
@@ -285,6 +345,4 @@ consumer::consumer(consumer&& other) : impl_(std::move(other.impl_)){}
 consumer::consumer(const video_format_desc& format_desc, unsigned int device_index, bool embed_audio) : impl_(new implementation(format_desc, device_index, embed_audio)){}    \r
 void consumer::send(const safe_ptr<const read_frame>& frame){impl_->send(frame);}\r
 size_t consumer::buffer_depth() const{return impl_->buffer_depth();}\r
-}}}\r
-\r
-#endif
\ No newline at end of file
+}}}
\ No newline at end of file
index 8ef68465d735ea83b3d1448b289716415fce7540..9056a79a59fca478547f9fdea7830f665c53e5c0 100644 (file)
@@ -21,7 +21,7 @@ struct frame_consumer_device::implementation
        timer clock_;\r
        executor executor_;     \r
 \r
-       size_t max_depth_;\r
+       size_t depth_;\r
        std::deque<safe_ptr<const read_frame>> buffer_;         \r
 \r
        std::vector<safe_ptr<frame_consumer>> consumers_;\r
@@ -38,7 +38,7 @@ public:
 \r
                std::vector<size_t> depths;\r
                boost::range::transform(consumers_, std::back_inserter(depths), std::mem_fn(&frame_consumer::buffer_depth));\r
-               max_depth_ = *boost::range::max_element(depths);\r
+               depth_ = *boost::range::max_element(depths);\r
                executor_.set_capacity(3);\r
                executor_.start();\r
        }\r
@@ -49,7 +49,7 @@ public:
                {\r
                        buffer_.push_back(frame);\r
 \r
-                       if(buffer_.size() < max_depth_)\r
+                       if(buffer_.size() < depth_)\r
                                return;\r
        \r
                        boost::range::for_each(consumers_, [&](const safe_ptr<frame_consumer>& consumer)\r
index 646456a0c048451beefa3bb6ad4df858ae5bf0c9..838fd03324efdce216251d69cb77885929e0a959 100644 (file)
@@ -3,9 +3,7 @@
 #include <core/channel.h>\r
 \r
 #include <core/consumer/oal/oal_consumer.h>\r
-#ifndef DISABLE_BLUEFISH\r
 #include <core/consumer/bluefish/bluefish_consumer.h>\r
-#endif\r
 #include <core/consumer/decklink/decklink_consumer.h>\r
 #include <core/consumer/ogl/ogl_consumer.h>\r
 #include <core/producer/flash/FlashAxContainer.h>\r
@@ -82,12 +80,10 @@ struct bootstrapper::implementation : boost::noncopyable
                                                bool windowed = xml_consumer.second.get("windowed", false);\r
                                                consumers.push_back(ogl::consumer(format_desc, device, stretch, windowed));\r
                                        }\r
-                               #ifndef DISABLE_BLUEFISH\r
                                        else if(name == "bluefish")                                     \r
                                                consumers.push_back(bluefish::consumer(format_desc, xml_consumer.second.get("device", 0), xml_consumer.second.get("embedded-audio", false)));                                   \r
-                               #endif\r
                                        else if(name == "decklink")\r
-                                               consumers.push_back(make_safe<decklink::decklink_consumer>(format_desc, xml_consumer.second.get("device", 0), xml_consumer.second.get("embedded-audio", false), xml_consumer.second.get("internalkey", false)));\r
+                                               consumers.push_back(make_safe<decklink::decklink_consumer>(format_desc, xml_consumer.second.get("device", 0), xml_consumer.second.get("internalkey", false)));\r
                                        else if(name == "audio")\r
                                                consumers.push_back(oal::consumer(format_desc));                        \r
                                }\r
index a0135f35b23dab3f5ccdaf0cba80f7c981fb98c9..94a7f76543c12aaf1a7f8906e0c7e71a468a0151 100644 (file)
@@ -4,23 +4,9 @@
     <media-path>C:\\Casparcg\\_media\\</media-path>\r
     <log-path>C:\\Casparcg\\_log\\</log-path>\r
     <template-path>C:\\Casparcg\\</template-path>\r
-    <template-host-path>C:\\Casparcg\\cg.fth.18</template-host-path>\r
     <data-path>C:\\Casparcg\\_data\\</data-path>\r
   </paths>\r
   <channels>\r
-    <channel>\r
-      <videomode>PAL</videomode>\r
-      <consumers>\r
-        <!--bluefish>\r
-          <device>1</device> \r
-          <embedded-audio>true</embedded-audio>\r
-        </bluefish-->\r
-        <decklink>\r
-          <device>1</device>\r
-          <embedded-audio>true</embedded-audio>\r
-        </decklink>\r
-      </consumers>\r
-    </channel>\r
     <channel>\r
       <videomode>PAL</videomode>\r
       <consumers>\r
           <stretch>uniform</stretch>\r
           <windowed>true</windowed>\r
         </ogl>\r
+        <audio/>\r
+        <!--decklink>\r
+          <device>1</device>\r
+          <embedded-audio>true</embedded-audio>\r
+        </decklink-->\r
+        <bluefish>\r
+          <device>1</device> \r
+          <embedded-audio>true</embedded-audio>\r
+        </bluefish>\r
       </consumers>\r
     </channel>\r
   </channels>\r
index 8495ded14974c04ca74d4a8100ec5d59ffe449e7..8d7e433146dc483ff9da9c9eba667c31579a8861 100644 (file)
       <MultiProcessorCompilation>true</MultiProcessorCompilation>\r
     </ClCompile>\r
     <Link>\r
-      <AdditionalDependencies>dxguid.lib;BlueHancUtils_d.lib;sfml-audio-d.lib;sfml-window-d.lib;sfml-graphics-d.lib;OpenGL32.lib;FreeImage.lib;GLee.lib;Winmm.lib;Ws2_32.lib;BlueVelvet3_d.lib;avformat-52.lib;avcodec-52.lib;avutil-50.lib;swscale-0.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>dxguid.lib;sfml-audio-d.lib;sfml-window-d.lib;sfml-graphics-d.lib;OpenGL32.lib;FreeImage.lib;GLee.lib;Winmm.lib;Ws2_32.lib;avformat-52.lib;avcodec-52.lib;avutil-50.lib;swscale-0.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>dxguid.lib; BlueHancUtils.lib;sfml-audio.lib;sfml-window.lib;sfml-graphics.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;Bluevelvet3.lib;avformat-52.lib;avcodec-52.lib;avutil-50.lib;SWSCALE-0.lib;tbb.lib;Glee.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
+      <AdditionalDependencies>dxguid.lib;sfml-audio.lib;sfml-window.lib;sfml-graphics.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat-52.lib;avcodec-52.lib;avutil-50.lib;SWSCALE-0.lib;tbb.lib;Glee.lib;%(AdditionalDependencies)</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r