]> git.sesse.net Git - casparcg/commitdiff
2.0.0.2: Updated to ffmpeg 0.7 and replaced manual packet copy by av_dup_packet.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 18 May 2011 15:55:23 +0000 (15:55 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 18 May 2011 15:55:23 +0000 (15:55 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@777 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

12 files changed:
modules/decklink/decklink.vcxproj
modules/decklink/interop/DeckLinkAPI_h.h
modules/decklink/interop/DeckLinkAPI_i.c
modules/ffmpeg/ffmpeg.vcxproj
modules/ffmpeg/producer/audio/audio_decoder.cpp
modules/ffmpeg/producer/audio/audio_decoder.h
modules/ffmpeg/producer/ffmpeg_producer.cpp
modules/ffmpeg/producer/input.cpp
modules/ffmpeg/producer/packet.h
modules/ffmpeg/producer/video/video_decoder.cpp
modules/ffmpeg/producer/video/video_decoder.h
shell/shell.vcxproj

index 02bbbd9a5011e154093cefb6dd8df0ae73dd0298..3daf960a4a0e70cecbdb6849f1ad8a1f3f639dd7 100644 (file)
       <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">interop\</OutputDirectory>\r
       <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">interop\</OutputDirectory>\r
       <OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">interop\</OutputDirectory>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
-      <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
     </Midl>\r
     <Midl Include="interop\DeckLinkAPI_v7_1.idl">\r
       <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
index 1c790d5257917d16b24956143e488b3e7acd6ae1..5a5c8b372ac67c502fa8e1f4c7c22ae6e614be58 100644 (file)
@@ -4,7 +4,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Wed May 18 01:57:28 2011\r
+/* at Wed May 18 17:47:16 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 9ae432a3a7b364fc25c050d911a724cd7b448f80..be7d9d6891b35fc04d93d73fba15bd378a52b764 100644 (file)
@@ -6,7 +6,7 @@
 \r
 \r
  /* File created by MIDL compiler version 7.00.0555 */\r
-/* at Wed May 18 01:57:28 2011\r
+/* at Wed May 18 17:47:16 2011\r
  */\r
 /* Compiler settings for interop\DeckLinkAPI.idl:\r
     Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
index 8b7d1765b8886762b597ebb3d7c2e9b198b17d32..7b1c341900adc9ce1dd590cbe8d4b2ec343c9819 100644 (file)
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>\r
     <IntDir Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">$(ProjectDir)tmp\$(Configuration)\</IntDir>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.7\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.7\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.7\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\..\;..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.7\include\;..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.7\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.7\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.7\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.7\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>\r
     <OutDir Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">$(ProjectDir)bin\$(Configuration)\</OutDir>\r
index 671bd3b979241d58dfd19801a10d948a716e97da..4cc3339d301ed8143483071a594f1bbf71eaa3cc 100644 (file)
@@ -64,7 +64,7 @@ public:
                }\r
        }\r
                \r
-       std::vector<std::vector<short>> execute(const packet& audio_packet)\r
+       std::vector<std::vector<short>> execute(packet&& audio_packet)\r
        {       \r
                std::vector<std::vector<short>> result;\r
 \r
@@ -78,7 +78,7 @@ public:
                        current_chunk_.resize(s + 4*format_desc_.audio_sample_rate*2+FF_INPUT_BUFFER_PADDING_SIZE/2);\r
                \r
                        int written_bytes = (current_chunk_.size() - s)*2 - FF_INPUT_BUFFER_PADDING_SIZE;\r
-                       const int errn = avcodec_decode_audio2(&codec_context_, &current_chunk_[s], &written_bytes, audio_packet.data->data(), audio_packet.data->size());\r
+                       const int errn = avcodec_decode_audio3(&codec_context_, &current_chunk_[s], &written_bytes, audio_packet.av_packet.get());\r
                        if(errn < 0)\r
                        {       \r
                                BOOST_THROW_EXCEPTION(\r
@@ -102,5 +102,5 @@ public:
 };\r
 \r
 audio_decoder::audio_decoder(AVCodecContext& codec_context, const core::video_format_desc& format_desc) : impl_(new implementation(codec_context, format_desc)){}\r
-std::vector<std::vector<short>> audio_decoder::execute(const packet& audio_packet){return impl_->execute(audio_packet);}\r
+std::vector<std::vector<short>> audio_decoder::execute(packet&& audio_packet){return impl_->execute(std::move(audio_packet));}\r
 }
\ No newline at end of file
index f5c705f2f8155f2cccfda8c69078af83757121a4..3e96eb3d3245650aa347d4ff10f0a49c98104808 100644 (file)
@@ -38,7 +38,7 @@ class audio_decoder : boost::noncopyable
 {\r
 public:\r
        explicit audio_decoder(AVCodecContext& codec_context, const core::video_format_desc& format_desc);\r
-       std::vector<std::vector<short>> execute(const packet& audio_packet);\r
+       std::vector<std::vector<short>> execute(packet&& audio_packet);\r
 private:\r
        struct implementation;\r
        std::shared_ptr<implementation> impl_;\r
index 9b65db85fa3cb6038491b38015da7231e871aa35..b7dbbf09d3476d1dfe56685dbef1dc2335168946 100644 (file)
@@ -159,14 +159,14 @@ public:
                return try_merge_audio_and_video();     \r
        }\r
 \r
-       void try_decode_video_packet(const packet& video_packet)\r
+       void try_decode_video_packet(packet&& video_packet)\r
        {\r
                if(!video_decoder_)\r
                        return;\r
 \r
                try\r
                {\r
-                       boost::range::push_back(video_frame_buffer_, video_decoder_->execute(video_packet));\r
+                       boost::range::push_back(video_frame_buffer_, video_decoder_->execute(std::move(video_packet)));\r
                }\r
                catch(...)\r
                {\r
@@ -176,14 +176,14 @@ public:
                }\r
        }\r
 \r
-       void try_decode_audio_packet(const packet& audio_packet)\r
+       void try_decode_audio_packet(packet&& audio_packet)\r
        {\r
                if(!audio_decoder_)\r
                        return;\r
 \r
                try\r
                {\r
-                       boost::range::push_back(audio_chunk_buffer_, audio_decoder_->execute(audio_packet));\r
+                       boost::range::push_back(audio_chunk_buffer_, audio_decoder_->execute(std::move(audio_packet)));\r
                }\r
                catch(...)\r
                {\r
index a4e8b4c9639e24f57446997b2e28f52f0eda1b02..70803035a48100c8f1f06aaed73ceb4efcb9882a 100644 (file)
@@ -37,7 +37,6 @@
 #include <boost/range/iterator_range.hpp>\r
 #include <boost/range/algorithm.hpp>\r
 \r
-\r
 extern "C" \r
 {\r
        #define __STDC_CONSTANT_MACROS\r
@@ -112,13 +111,13 @@ public:
                                boost::errinfo_errno(AVUNERROR(errn)));\r
                }\r
 \r
-               video_codec_context_ = open_stream(CODEC_TYPE_VIDEO, video_s_index_);\r
+               video_codec_context_ = open_stream(AVMEDIA_TYPE_VIDEO, video_s_index_);\r
                if(!video_codec_context_)\r
                        CASPAR_LOG(warning) << print() << " Could not open any video stream.";\r
                else\r
                        fix_time_base(video_codec_context_.get());\r
                \r
-               audio_codex_context_ = open_stream(CODEC_TYPE_AUDIO, audio_s_index_);\r
+               audio_codex_context_ = open_stream(AVMEDIA_TYPE_AUDIO, audio_s_index_);\r
                if(!audio_codex_context_)\r
                        CASPAR_LOG(warning) << print() << " Could not open any audio stream.";\r
                else\r
@@ -217,11 +216,14 @@ private:
 \r
                try\r
                {\r
-                       AVPacket tmp_packet;\r
-                       safe_ptr<AVPacket> read_packet(&tmp_packet, av_free_packet);    \r
+                       std::shared_ptr<AVPacket> read_packet(new AVPacket(), [](AVPacket* p)\r
+                       {\r
+                               av_free_packet(p);\r
+                               delete p;\r
+                       });\r
 \r
-                       const int errn = av_read_frame(format_context_.get(), read_packet.get());\r
-                       if(is_eof(errn))\r
+                       const int errn = av_read_frame(format_context_.get(), read_packet.get()); // read_packet is only valid until next call of av_read_frame.\r
+                       if(is_eof(errn))                                                                                                                  // Use av_dup_packet to extend its life.\r
                        {\r
                                if(loop_)\r
                                {\r
@@ -245,9 +247,15 @@ private:
                        else\r
                        {\r
                                if(read_packet->stream_index == video_s_index_)                 \r
-                                       video_packet_buffer_.try_push(packet(read_packet->data, read_packet->data + read_packet->size));        \r
-                               else if(read_packet->stream_index)\r
-                                       audio_packet_buffer_.try_push(packet(read_packet->data, read_packet->data + read_packet->size));        \r
+                               {                                       \r
+                                       av_dup_packet(read_packet.get());\r
+                                       video_packet_buffer_.try_push(packet(read_packet));     \r
+                               }\r
+                               else if(read_packet->stream_index)      \r
+                               {                                       \r
+                                       av_dup_packet(read_packet.get());\r
+                                       audio_packet_buffer_.try_push(packet(read_packet));     \r
+                               }\r
                        }\r
                                                \r
                        graph_->update_value("input-buffer", static_cast<float>(video_packet_buffer_.size())/static_cast<float>(PACKET_BUFFER_COUNT));          \r
@@ -292,7 +300,7 @@ private:
                if(length_ != -1)\r
                        return get_default_context()->frame_number > eof_count_;                \r
 \r
-               return errn == AVERROR_EOF || errn == AVERROR_IO;\r
+               return errn == AVERROR_EOF;\r
        }\r
                \r
        packet get_packet(tbb::concurrent_bounded_queue<packet>& buffer)\r
index 2e2e08346adacea224c2875355e51fae882ac55c..9a76643fb4f5ceedebabfd9046624716327d3a0a 100644 (file)
@@ -1,7 +1,8 @@
 #pragma once\r
 \r
 #include <vector>\r
-#include <tbb/cache_aligned_allocator.h>\r
+\r
+#include <memory>\r
 \r
 namespace caspar {\r
        \r
@@ -14,18 +15,15 @@ enum packet_type
 \r
 struct packet\r
 {\r
-       typedef std::vector<unsigned char, tbb::cache_aligned_allocator<unsigned char>> aligned_buffer;\r
-\r
        packet_type type;\r
-       std::shared_ptr<aligned_buffer> data;\r
-\r
+       std::shared_ptr<AVPacket> av_packet;\r
+       \r
        packet(packet_type t = empty_packet) \r
                : type(t){}\r
 \r
-       template<typename T>\r
-       packet(T first, T last) \r
+       packet(const std::shared_ptr<AVPacket>& av_packet) \r
                : type(data_packet)\r
-               , data(new aligned_buffer(first, last)){}\r
+               , av_packet(av_packet){}\r
 };\r
 \r
 }
\ No newline at end of file
index 37ab59d629a829ae6f05857b7724858933ee4557..64722650a472f7dfcbeed55e42a277baf7b0254b 100644 (file)
@@ -43,6 +43,7 @@ extern "C"
        #define __STDC_LIMIT_MACROS\r
        #include <libswscale/swscale.h>\r
        #include <libavformat/avformat.h>\r
+       #include <libavcodec/avcodec.h>\r
 }\r
 #if defined(_MSC_VER)\r
 #pragma warning (pop)\r
@@ -147,7 +148,7 @@ public:
                }\r
        }\r
        \r
-       std::vector<safe_ptr<core::write_frame>> execute(const packet& video_packet)\r
+       std::vector<safe_ptr<core::write_frame>> execute(packet&& video_packet)\r
        {                               \r
                std::vector<safe_ptr<core::write_frame>> result;\r
 \r
@@ -160,7 +161,7 @@ public:
                        safe_ptr<AVFrame> decoded_frame(avcodec_alloc_frame(), av_free);\r
 \r
                        int frame_finished = 0;\r
-                       const int errn = avcodec_decode_video(&codec_context_, decoded_frame.get(), &frame_finished, video_packet.data->data(), video_packet.data->size());\r
+                       const int errn = avcodec_decode_video2(&codec_context_, decoded_frame.get(), &frame_finished, video_packet.av_packet.get());\r
                \r
                        if(errn < 0)\r
                        {\r
@@ -216,6 +217,6 @@ public:
 };\r
 \r
 video_decoder::video_decoder(AVCodecContext& codec_context, const safe_ptr<core::frame_factory>& frame_factory) : impl_(new implementation(codec_context, frame_factory)){}\r
-std::vector<safe_ptr<core::write_frame>> video_decoder::execute(const packet& video_packet){return impl_->execute(video_packet);}\r
+std::vector<safe_ptr<core::write_frame>> video_decoder::execute(packet&& video_packet){return impl_->execute(std::move(video_packet));}\r
 \r
 }
\ No newline at end of file
index 1756b1c205710a59377b292e2363c144fd79bd41..07d772892aba43262c182e69f06e3adeabf001c6 100644 (file)
@@ -36,7 +36,7 @@ class video_decoder : boost::noncopyable
 {\r
 public:\r
        explicit video_decoder(AVCodecContext& codec_context, const safe_ptr<core::frame_factory>& frame_factory);\r
-       std::vector<safe_ptr<core::write_frame>> execute(const packet& video_packet);   \r
+       std::vector<safe_ptr<core::write_frame>> execute(packet&& video_packet);        \r
 private:\r
        struct implementation;\r
        safe_ptr<implementation> impl_;\r
index fb194c6a2d4aded91cc8152d865f19ae6a7e103f..90b449b870631217fd0f38914f06ccc0cf79630b 100644 (file)
     <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_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.6\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.6\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.6\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.6\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.6\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.6\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.6\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
-    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.6\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.7\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.7\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.7\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <IncludePath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\dependencies\boost_1_44_0\;..\dependencies\ffmpeg 0.7\include\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\include\;..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.7\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.7\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.7\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
+    <LibraryPath Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">C:\Program\Microsoft DirectX SDK (June 2010)\Lib\x86;..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\dependencies\boost_1_44_0\stage\lib\;..\dependencies\ffmpeg 0.7\lib\;..\dependencies\FreeImage\Dist\;..\dependencies\GLee5_4\;..\dependencies\SFML-1.6\lib\;..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(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>Bluevelvet3_d.lib;BlueHancUtils_d.lib;sfml-system-d.lib;sfml-audio-d.lib;sfml-window-d.lib;sfml-graphics-d.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>\r
+      <AdditionalDependencies>Bluevelvet3_d.lib;BlueHancUtils_d.lib;sfml-system-d.lib;sfml-audio-d.lib;sfml-window-d.lib;sfml-graphics-d.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;Glee.lib</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -234,7 +234,7 @@ copy "$(ProjectDir)caspar.config" "$(OutDir)"</Command>
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>Bluevelvet3.lib;BlueHancUtils.lib;sfml-system.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>\r
+      <AdditionalDependencies>Bluevelvet3.lib;BlueHancUtils.lib;sfml-system.lib;sfml-audio.lib;sfml-window.lib;sfml-graphics.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;Glee.lib</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -289,7 +289,7 @@ copy "$(ProjectDir)caspar.config" "$(OutDir)"</Command>
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>Bluevelvet3.lib;BlueHancUtils.lib;sfml-system.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>\r
+      <AdditionalDependencies>Bluevelvet3.lib;BlueHancUtils.lib;sfml-system.lib;sfml-audio.lib;sfml-window.lib;sfml-graphics.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;Glee.lib</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
@@ -344,7 +344,7 @@ copy "$(ProjectDir)caspar.config" "$(OutDir)"</Command>
       </Command>\r
     </PreLinkEvent>\r
     <Link>\r
-      <AdditionalDependencies>Bluevelvet3.lib;BlueHancUtils.lib;sfml-system.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>\r
+      <AdditionalDependencies>Bluevelvet3.lib;BlueHancUtils.lib;sfml-system.lib;sfml-audio.lib;sfml-window.lib;sfml-graphics.lib;OpenGL32.lib;FreeImage.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avutil.lib;avfilter.lib;swscale.lib;tbb.lib;Glee.lib</AdditionalDependencies>\r
       <Version>\r
       </Version>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r