--- /dev/null
+#pragma once\r
+\r
+#include "../log/log.h"\r
+\r
+#define __ASSERT_EXPR_STR(name) #name\r
+\r
+#define CASPAR_ASSERT(expr) do{if(!(expr)) CASPAR_LOG(error) << "\nAssertion failed.\n " << __ASSERT_EXPR_STR(expr) << "\n" << __FILE__ << "\n" << __LINE__ << "\n\n";}while(0)
\ No newline at end of file
#include "util.h"\r
#include "memory.h"\r
\r
-#include "../../mixer/frame/read_frame.h"\r
+#include <mixer/frame/read_frame.h>\r
\r
#include <common/concurrency/executor.h>\r
\r
\r
#include "DeckLinkAPI_h.h"\r
\r
-#include "../../video_format.h"\r
-#include "../../mixer/frame/read_frame.h"\r
+#include <core/video_format.h>\r
+\r
+#include <mixer/frame/read_frame.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/exception/exceptions.h>\r
\r
#include "ffmpeg_consumer.h"\r
\r
-#include "../../mixer/frame/read_frame.h"\r
+#include <mixer/frame/read_frame.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/utility/string_convert.h>\r
\r
#include "oal_consumer.h"\r
\r
-#include "../../video_format.h"\r
+#include <core/video_format.h>\r
\r
-#include "../../mixer/frame/read_frame.h"\r
+#include <mixer/frame/read_frame.h>\r
\r
#include <SFML/Audio.hpp>\r
\r
\r
#include "ogl_consumer.h"\r
\r
-#include "../../video_format.h"\r
-#include "../../mixer/frame/read_frame.h"\r
+#include <core/video_format.h>\r
+#include <mixer/frame/read_frame.h>\r
\r
#include <common/gl/gl_check.h>\r
#include <common/concurrency/executor.h>\r
<_ProjectFileVersion>10.0.30319.1</_ProjectFileVersion>\r
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">debug\</IntDir>\r
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">release\</IntDir>\r
- <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\common;..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\dependencies\boost_1_44_0\;..\..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\include\;..\..\..\dependencies\SFML-1.6\include\;..\..\dependencies\tbb30_20100406oss\include\;..\..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
- <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\common;..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\dependencies\boost_1_44_0\;..\..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\include\;..\..\..\dependencies\SFML-1.6\include\;..\..\dependencies\tbb30_20100406oss\include\;..\..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+ <IncludePath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\;..\common;..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\dependencies\boost_1_44_0\;..\..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\include\;..\..\..\dependencies\SFML-1.6\include\;..\..\dependencies\tbb30_20100406oss\include\;..\..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
+ <IncludePath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\;..\common;..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Inc\;..\..\dependencies\boost_1_44_0\;..\..\..\dependencies\boost_1_44_0\;..\..\dependencies\ffmpeg 0.6\include\;..\..\..\dependencies\ffmpeg 0.6\include\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\include\;..\..\..\dependencies\SFML-1.6\include\;..\..\dependencies\tbb30_20100406oss\include\;..\..\..\dependencies\tbb30_20100406oss\include\;$(IncludePath)</IncludePath>\r
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\dependencies\boost_1_44_0\stage\lib\;..\..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\lib\;..\..\..\dependencies\SFML-1.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;..\..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
<LibraryPath Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\..\dependencies\BluefishSDK_V5_8_0_31\Lib\;..\..\dependencies\boost_1_44_0\stage\lib\;..\..\..\dependencies\boost_1_44_0\stage\lib\;..\..\dependencies\ffmpeg 0.6\lib\;..\..\..\dependencies\ffmpeg 0.6\lib\;..\..\dependencies\FreeImage\Dist\;..\..\..\dependencies\FreeImage\Dist\;..\..\dependencies\GLee5_4\;..\..\..\dependencies\GLee5_4\;..\..\dependencies\SFML-1.6\lib\;..\..\..\dependencies\SFML-1.6\lib\;..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;..\..\..\dependencies\tbb30_20100406oss\lib\ia32\vc10\;$(LibraryPath)</LibraryPath>\r
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">$(ProjectDir)debug\</OutDir>\r
</PostBuildEvent>\r
</ItemDefinitionGroup>\r
<ItemGroup>\r
+ <ClInclude Include="..\mixer\audio\audio_mixer.h" />\r
+ <ClInclude Include="..\mixer\audio\audio_transform.h" />\r
+ <ClInclude Include="..\mixer\frame\draw_frame.h" />\r
+ <ClInclude Include="..\mixer\frame\pixel_format.h" />\r
+ <ClInclude Include="..\mixer\frame\read_frame.h" />\r
+ <ClInclude Include="..\mixer\frame\write_frame.h" />\r
+ <ClInclude Include="..\mixer\frame_factory.h" />\r
+ <ClInclude Include="..\mixer\frame_mixer_device.h" />\r
+ <ClInclude Include="..\mixer\fwd.h" />\r
+ <ClInclude Include="..\mixer\gpu\device_buffer.h" />\r
+ <ClInclude Include="..\mixer\gpu\host_buffer.h" />\r
+ <ClInclude Include="..\mixer\gpu\ogl_device.h" />\r
+ <ClInclude Include="..\mixer\image\image_kernel.h" />\r
+ <ClInclude Include="..\mixer\image\image_mixer.h" />\r
+ <ClInclude Include="..\mixer\image\image_transform.h" />\r
<ClInclude Include="channel.h" />\r
<ClInclude Include="consumer\bluefish\memory.h" />\r
<ClInclude Include="consumer\bluefish\bluefish_consumer.h" />\r
<ClInclude Include="consumer\frame_consumer.h" />\r
<ClInclude Include="consumer\oal\oal_consumer.h" />\r
<ClInclude Include="consumer\ogl\ogl_consumer.h" />\r
- <ClInclude Include="mixer\audio\audio_mixer.h" />\r
- <ClInclude Include="mixer\audio\audio_transform.h" />\r
- <ClInclude Include="mixer\frame\draw_frame.h" />\r
- <ClInclude Include="mixer\frame\pixel_format.h" />\r
- <ClInclude Include="mixer\frame\read_frame.h" />\r
- <ClInclude Include="mixer\frame\write_frame.h" />\r
- <ClInclude Include="mixer\frame_factory.h" />\r
- <ClInclude Include="mixer\frame_mixer_device.h" />\r
- <ClInclude Include="mixer\fwd.h" />\r
- <ClInclude Include="mixer\gpu\device_buffer.h" />\r
- <ClInclude Include="mixer\gpu\host_buffer.h" />\r
- <ClInclude Include="mixer\gpu\ogl_device.h" />\r
- <ClInclude Include="mixer\image\image_kernel.h" />\r
- <ClInclude Include="mixer\image\image_mixer.h" />\r
- <ClInclude Include="mixer\image\image_transform.h" />\r
<ClInclude Include="producer\color\color_producer.h" />\r
<ClInclude Include="producer\decklink\decklink_producer.h" />\r
<ClInclude Include="producer\ffmpeg\audio\audio_decoder.h" />\r
<ClInclude Include="StdAfx.h" />\r
</ItemGroup>\r
<ItemGroup>\r
- <ClCompile Include="channel.cpp" />\r
- <ClCompile Include="consumer\bluefish\bluefish_consumer.cpp">\r
+ <ClCompile Include="..\mixer\audio\audio_mixer.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="consumer\decklink\decklink_consumer.cpp">\r
+ <ClCompile Include="..\mixer\audio\audio_transform.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="consumer\ffmpeg\ffmpeg_consumer.cpp">\r
+ <ClCompile Include="..\mixer\frame\draw_frame.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="consumer\frame_consumer_device.cpp">\r
+ <ClCompile Include="..\mixer\frame\read_frame.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mixer\frame\write_frame.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mixer\frame_mixer_device.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="consumer\decklink\DeckLinkAPI_i.c">\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>\r
- <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
+ <ClCompile Include="..\mixer\gpu\device_buffer.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="consumer\oal\oal_consumer.cpp">\r
+ <ClCompile Include="..\mixer\gpu\host_buffer.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="consumer\ogl\ogl_consumer.cpp">\r
+ <ClCompile Include="..\mixer\gpu\ogl_device.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\audio\audio_mixer.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
+ <ClCompile Include="..\mixer\image\image_kernel.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mixer\image\image_mixer.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\audio\audio_transform.cpp">\r
+ <ClCompile Include="..\mixer\image\image_transform.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame\draw_frame.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
+ <ClCompile Include="channel.cpp" />\r
+ <ClCompile Include="consumer\bluefish\bluefish_consumer.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame\read_frame.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
+ <ClCompile Include="consumer\decklink\decklink_consumer.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame\write_frame.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
+ <ClCompile Include="consumer\ffmpeg\ffmpeg_consumer.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame_mixer_device.cpp">\r
+ <ClCompile Include="consumer\frame_consumer_device.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\gpu\device_buffer.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
- <ClCompile Include="mixer\gpu\host_buffer.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
- <ClCompile Include="mixer\gpu\ogl_device.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
- <ClCompile Include="mixer\image\image_kernel.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
+ <ClCompile Include="consumer\decklink\DeckLinkAPI_i.c">\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">NotUsing</PrecompiledHeader>\r
+ <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">NotUsing</PrecompiledHeader>\r
</ClCompile>\r
- <ClCompile Include="mixer\image\image_mixer.cpp">\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../stdafx.h</PrecompiledHeaderFile>\r
+ <ClCompile Include="consumer\oal\oal_consumer.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="mixer\image\image_transform.cpp">\r
+ <ClCompile Include="consumer\ogl\ogl_consumer.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
<ClInclude Include="consumer\ffmpeg\ffmpeg_consumer.h">\r
<Filter>Source\consumer\ffmpeg</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\frame_mixer_device.h">\r
+ <ClInclude Include="producer\frame_producer_device.h">\r
+ <Filter>Source\producer</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\layer.h">\r
+ <Filter>Source\producer</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\mixer\frame_factory.h">\r
+ <Filter>Source\mixer</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="..\mixer\frame_mixer_device.h">\r
<Filter>Source\mixer</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\fwd.h">\r
+ <ClInclude Include="..\mixer\fwd.h">\r
<Filter>Source\mixer</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\image\image_kernel.h">\r
+ <ClInclude Include="..\mixer\image\image_kernel.h">\r
<Filter>Source\mixer\image</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\image\image_mixer.h">\r
+ <ClInclude Include="..\mixer\image\image_mixer.h">\r
<Filter>Source\mixer\image</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\audio\audio_mixer.h">\r
- <Filter>Source\mixer\audio</Filter>\r
+ <ClInclude Include="..\mixer\image\image_transform.h">\r
+ <Filter>Source\mixer\image</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\gpu\device_buffer.h">\r
+ <ClInclude Include="..\mixer\gpu\device_buffer.h">\r
<Filter>Source\mixer\gpu</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\gpu\host_buffer.h">\r
+ <ClInclude Include="..\mixer\gpu\host_buffer.h">\r
<Filter>Source\mixer\gpu</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\gpu\ogl_device.h">\r
+ <ClInclude Include="..\mixer\gpu\ogl_device.h">\r
<Filter>Source\mixer\gpu</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\frame\draw_frame.h">\r
+ <ClInclude Include="..\mixer\frame\draw_frame.h">\r
<Filter>Source\mixer\frame</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\frame\pixel_format.h">\r
+ <ClInclude Include="..\mixer\frame\pixel_format.h">\r
<Filter>Source\mixer\frame</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\frame\read_frame.h">\r
+ <ClInclude Include="..\mixer\frame\read_frame.h">\r
<Filter>Source\mixer\frame</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\frame\write_frame.h">\r
+ <ClInclude Include="..\mixer\frame\write_frame.h">\r
<Filter>Source\mixer\frame</Filter>\r
</ClInclude>\r
- <ClInclude Include="producer\frame_producer_device.h">\r
- <Filter>Source\producer</Filter>\r
- </ClInclude>\r
- <ClInclude Include="producer\layer.h">\r
- <Filter>Source\producer</Filter>\r
- </ClInclude>\r
- <ClInclude Include="mixer\frame_factory.h">\r
- <Filter>Source\mixer</Filter>\r
- </ClInclude>\r
- <ClInclude Include="mixer\image\image_transform.h">\r
- <Filter>Source\mixer\image</Filter>\r
+ <ClInclude Include="..\mixer\audio\audio_mixer.h">\r
+ <Filter>Source\mixer\audio</Filter>\r
</ClInclude>\r
- <ClInclude Include="mixer\audio\audio_transform.h">\r
+ <ClInclude Include="..\mixer\audio\audio_transform.h">\r
<Filter>Source\mixer\audio</Filter>\r
</ClInclude>\r
</ItemGroup>\r
<ClCompile Include="consumer\ffmpeg\ffmpeg_consumer.cpp">\r
<Filter>Source\consumer\ffmpeg</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame_mixer_device.cpp">\r
+ <ClCompile Include="producer\frame_producer_device.cpp">\r
+ <Filter>Source\producer</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="producer\layer.cpp">\r
+ <Filter>Source\producer</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="..\mixer\frame_mixer_device.cpp">\r
<Filter>Source\mixer</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\image\image_kernel.cpp">\r
+ <ClCompile Include="..\mixer\image\image_kernel.cpp">\r
<Filter>Source\mixer\image</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\image\image_mixer.cpp">\r
+ <ClCompile Include="..\mixer\image\image_mixer.cpp">\r
<Filter>Source\mixer\image</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\audio\audio_mixer.cpp">\r
- <Filter>Source\mixer\audio</Filter>\r
+ <ClCompile Include="..\mixer\image\image_transform.cpp">\r
+ <Filter>Source\mixer\image</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\gpu\device_buffer.cpp">\r
+ <ClCompile Include="..\mixer\gpu\device_buffer.cpp">\r
<Filter>Source\mixer\gpu</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\gpu\host_buffer.cpp">\r
+ <ClCompile Include="..\mixer\gpu\host_buffer.cpp">\r
<Filter>Source\mixer\gpu</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\gpu\ogl_device.cpp">\r
+ <ClCompile Include="..\mixer\gpu\ogl_device.cpp">\r
<Filter>Source\mixer\gpu</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame\draw_frame.cpp">\r
+ <ClCompile Include="..\mixer\frame\draw_frame.cpp">\r
<Filter>Source\mixer\frame</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame\read_frame.cpp">\r
+ <ClCompile Include="..\mixer\frame\read_frame.cpp">\r
<Filter>Source\mixer\frame</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\frame\write_frame.cpp">\r
+ <ClCompile Include="..\mixer\frame\write_frame.cpp">\r
<Filter>Source\mixer\frame</Filter>\r
</ClCompile>\r
- <ClCompile Include="producer\frame_producer_device.cpp">\r
- <Filter>Source\producer</Filter>\r
- </ClCompile>\r
- <ClCompile Include="producer\layer.cpp">\r
- <Filter>Source\producer</Filter>\r
- </ClCompile>\r
- <ClCompile Include="mixer\image\image_transform.cpp">\r
- <Filter>Source\mixer\image</Filter>\r
+ <ClCompile Include="..\mixer\audio\audio_mixer.cpp">\r
+ <Filter>Source\mixer\audio</Filter>\r
</ClCompile>\r
- <ClCompile Include="mixer\audio\audio_transform.cpp">\r
+ <ClCompile Include="..\mixer\audio\audio_transform.cpp">\r
<Filter>Source\mixer\audio</Filter>\r
</ClCompile>\r
</ItemGroup>\r
\r
#include "color_producer.h"\r
\r
-#include "../../mixer/frame/draw_frame.h"\r
+#include <mixer/frame/draw_frame.h>\r
\r
#include <sstream>\r
\r
\r
#include "decklink_producer.h"\r
\r
-#include "../../mixer/frame/draw_frame.h"\r
+#include <mixer/frame/draw_frame.h>\r
#include "../../consumer/decklink/DeckLinkAPI_h.h" // TODO: Change this\r
#include "../../consumer/decklink/util.h" // TODO: Change this\r
\r
#include "audio/audio_decoder.h"\r
#include "video/video_decoder.h"\r
\r
-#include "../../video_format.h"\r
-#include "../../mixer/frame/draw_frame.h"\r
-#include "../../mixer/audio/audio_transform.h"\r
+#include <core/video_format.h>\r
+#include <mixer/frame/draw_frame.h>\r
+#include <mixer/audio/audio_transform.h>\r
\r
#include <common/env.h>\r
\r
\r
#include "video_decoder.h"\r
\r
-#include "../../../video_format.h"\r
-#include "../../../mixer/frame/draw_frame.h"\r
-#include "../../../mixer/image/image_transform.h"\r
-\r
#include <common/memory/safe_ptr.h>\r
\r
+#include <core/video_format.h>\r
+\r
+#include <mixer/frame/draw_frame.h>\r
+#include <mixer/image/image_transform.h>\r
+\r
#include <tbb/parallel_for.h>\r
\r
#include <algorithm>\r
#pragma once\r
\r
-#include "../../../mixer/frame_mixer_device.h"\r
+#include <common/memory/safe_ptr.h>\r
\r
-#include <memory>\r
+#include <mixer/frame_mixer_device.h>\r
\r
struct AVCodecContext;\r
\r
void initialize(const safe_ptr<frame_factory>& frame_factory);\r
private:\r
struct implementation;\r
- std::shared_ptr<implementation> impl_;\r
+ safe_ptr<implementation> impl_;\r
};\r
\r
}}}
\ No newline at end of file
#include "flash_producer.h"\r
#include "FlashAxContainer.h"\r
\r
-#include "../../video_format.h"\r
+#include <core/video_format.h>\r
\r
-#include "../../mixer/frame/draw_frame.h"\r
-#include "../../mixer/frame_mixer_device.h"\r
+#include <mixer/frame/draw_frame.h>\r
+#include <mixer/frame_mixer_device.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/utility/timer.h>\r
#include "image_producer.h"\r
#include "image_loader.h"\r
\r
-#include "../../mixer/frame_mixer_device.h"\r
-#include "../../mixer/frame/draw_frame.h"\r
-#include "../../video_format.h"\r
+#include <core/video_format.h>\r
+\r
+#include <mixer/frame_mixer_device.h>\r
+#include <mixer/frame/draw_frame.h>\r
\r
#include <common/env.h>\r
\r
\r
#include "transition_producer.h"\r
\r
-#include "../../video_format.h"\r
-#include "../../mixer/frame/draw_frame.h"\r
-#include "../../mixer/frame_mixer_device.h"\r
-#include "../../mixer/image/image_transform.h"\r
-#include "../../mixer/audio/audio_mixer.h"\r
-#include "../../mixer/audio/audio_transform.h"\r
+#include <core/video_format.h>\r
+\r
+#include <mixer/frame/draw_frame.h>\r
+#include <mixer/frame_mixer_device.h>\r
+#include <mixer/image/image_transform.h>\r
+#include <mixer/audio/audio_mixer.h>\r
+#include <mixer/audio/audio_transform.h>\r
\r
#include <boost/range/algorithm/copy.hpp>\r
\r
--- /dev/null
+#include "../../stdafx.h"\r
+\r
+#include "audio_transform.h"\r
+\r
+namespace caspar { namespace core {\r
+ \r
+audio_transform::audio_transform()\r
+ : gain_(1.0){}\r
+\r
+void audio_transform::set_gain(double value)\r
+{\r
+ gain_ = value;\r
+}\r
+\r
+double audio_transform::get_gain() const\r
+{\r
+ return gain_;\r
+}\r
+\r
+audio_transform& audio_transform::operator*=(const audio_transform &other) \r
+{\r
+ gain_ *= other.gain_;\r
+ return *this;\r
+}\r
+\r
+const audio_transform audio_transform::operator*(const audio_transform &other) const\r
+{\r
+ return audio_transform(*this) *= other;\r
+}\r
+\r
+}}
\ No newline at end of file
--- /dev/null
+#pragma once\r
+\r
+namespace caspar { namespace core {\r
+\r
+class audio_transform\r
+{\r
+public:\r
+ audio_transform();\r
+\r
+ void set_gain(double value);\r
+ double get_gain() const;\r
+\r
+ audio_transform& operator*=(const audio_transform &other);\r
+ const audio_transform operator*(const audio_transform &other) const;\r
+private:\r
+ double gain_;\r
+};\r
+\r
+}}
\ No newline at end of file
#include "../audio/audio_mixer.h"\r
#include "../audio/audio_transform.h"\r
#include "pixel_format.h"\r
-#include "../../video_format.h"\r
+\r
+#include <core/video_format.h>\r
\r
#include <boost/range/algorithm.hpp>\r
\r
\r
#include "draw_frame.h"\r
\r
-#include "../../video_format.h"\r
+#include "../../core/video_format.h"\r
\r
#include <boost/noncopyable.hpp>\r
#include <boost/range/iterator_range.hpp>\r
\r
#include "../gpu/host_buffer.h"\r
\r
-#include "../../video_format.h"\r
+#include <core/video_format.h>\r
\r
#include <boost/noncopyable.hpp>\r
#include <boost/range/iterator_range.hpp>\r
\r
#include "audio/audio_mixer.h"\r
#include "audio/audio_transform.h"\r
-#include "image/image_mixer.h"\r
-#include "image/image_transform.h"\r
-\r
#include "frame/write_frame.h"\r
#include "frame/read_frame.h"\r
-\r
-#include "../video_format.h"\r
+#include "image/image_mixer.h"\r
+#include "image/image_transform.h"\r
\r
#include <common/exception/exceptions.h>\r
#include <common/concurrency/executor.h>\r
#include <common/gl/gl_check.h>\r
\r
+#include <core/video_format.h>\r
+\r
#include <tbb/concurrent_queue.h>\r
#include <tbb/concurrent_unordered_map.h>\r
\r
#pragma once\r
\r
-#include "../../video_format.h"\r
+#include <core/video_format.h>\r
+\r
#include "../frame/pixel_format.h"\r
\r
#include <memory>\r
\r
#include "../gpu/host_buffer.h"\r
\r
-#include "../../video_format.h"\r
+#include <core/video_format.h>\r
\r
#include <boost/tuple/tuple.hpp>\r
#include <boost/thread/future.hpp>\r
--- /dev/null
+#include "../../StdAfx.h"\r
+\r
+#include "image_transform.h"\r
+\r
+namespace caspar { namespace core {\r
+ \r
+image_transform::image_transform() \r
+ : opacity_(1.0)\r
+ , gain_(1.0)\r
+ , mode_(video_mode::invalid)\r
+{\r
+ std::fill(fill_translation_.begin(), fill_translation_.end(), 0.0);\r
+ std::fill(fill_scale_.begin(), fill_scale_.end(), 1.0);\r
+ std::fill(key_translation_.begin(), key_translation_.end(), 0.0);\r
+ std::fill(key_scale_.begin(), key_scale_.end(), 1.0);\r
+}\r
+\r
+void image_transform::set_opacity(double value)\r
+{\r
+ opacity_ = value;\r
+}\r
+\r
+double image_transform::get_opacity() const\r
+{\r
+ return opacity_;\r
+}\r
+\r
+void image_transform::set_gain(double value)\r
+{\r
+ gain_ = value;\r
+}\r
+\r
+double image_transform::get_gain() const\r
+{\r
+ return gain_;\r
+}\r
+\r
+void image_transform::set_image_translation(double x, double y)\r
+{\r
+ fill_translation_[0] = x;\r
+ fill_translation_[1] = y;\r
+}\r
+\r
+void image_transform::set_image_scale(double x, double y)\r
+{\r
+ fill_scale_[0] = x;\r
+ fill_scale_[1] = y; \r
+}\r
+\r
+std::array<double, 2> image_transform::get_image_translation() const\r
+{\r
+ return fill_translation_;\r
+}\r
+\r
+std::array<double, 2> image_transform::get_image_scale() const\r
+{\r
+ return fill_scale_;\r
+}\r
+\r
+void image_transform::set_mask_translation(double x, double y)\r
+{\r
+ key_translation_[0] = x;\r
+ key_translation_[1] = y;\r
+}\r
+\r
+void image_transform::set_mask_scale(double x, double y)\r
+{\r
+ key_scale_[0] = x;\r
+ key_scale_[1] = y; \r
+}\r
+\r
+std::array<double, 2> image_transform::get_mask_translation() const\r
+{\r
+ return key_translation_;\r
+}\r
+\r
+std::array<double, 2> image_transform::get_mask_scale() const\r
+{\r
+ return key_scale_;\r
+}\r
+\r
+void image_transform::set_mode(video_mode::type mode)\r
+{\r
+ mode_ = mode;\r
+}\r
+\r
+video_mode::type image_transform::get_mode() const\r
+{\r
+ return mode_;\r
+}\r
+\r
+image_transform& image_transform::operator*=(const image_transform &other)\r
+{\r
+ opacity_ *= other.opacity_;\r
+ mode_ = other.mode_;\r
+ gain_ *= other.gain_;\r
+ fill_translation_[0] += other.fill_translation_[0]*fill_scale_[0];\r
+ fill_translation_[1] += other.fill_translation_[1]*fill_scale_[1];\r
+ fill_scale_[0] *= other.fill_scale_[0];\r
+ fill_scale_[1] *= other.fill_scale_[1];\r
+ key_translation_[0] += other.key_translation_[0]*key_scale_[0];\r
+ key_translation_[1] += other.key_translation_[1]*key_scale_[1];\r
+ key_scale_[0] *= other.key_scale_[0];\r
+ key_scale_[1] *= other.key_scale_[1];\r
+ return *this;\r
+}\r
+\r
+const image_transform image_transform::operator*(const image_transform &other) const\r
+{\r
+ return image_transform(*this) *= other;\r
+}\r
+\r
+}}
\ No newline at end of file
--- /dev/null
+#pragma once\r
+\r
+#include "../gpu/host_buffer.h"\r
+\r
+#include <core/video_format.h>\r
+\r
+#include <boost/tuple/tuple.hpp>\r
+#include <boost/thread/future.hpp>\r
+#include <boost/noncopyable.hpp>\r
+\r
+#include <memory>\r
+#include <array>\r
+\r
+namespace caspar { namespace core {\r
+\r
+struct pixel_format_desc;\r
+ \r
+class image_transform \r
+{\r
+public:\r
+\r
+ image_transform();\r
+\r
+ void set_opacity(double value);\r
+ double get_opacity() const;\r
+\r
+ void set_gain(double value);\r
+ double get_gain() const;\r
+ \r
+ void set_image_translation(double x, double y);\r
+ std::array<double, 2> get_image_translation() const;\r
+\r
+ void set_image_scale(double x, double y);\r
+ std::array<double, 2> get_image_scale() const;\r
+ \r
+ void set_mask_translation(double x, double y);\r
+ std::array<double, 2> get_mask_translation() const;\r
+\r
+ void set_mask_scale(double x, double y);\r
+ std::array<double, 2> get_mask_scale() const;\r
+\r
+ void set_mode(video_mode::type mode);\r
+ video_mode::type get_mode() const;\r
+\r
+ image_transform& operator*=(const image_transform &other);\r
+ const image_transform operator*(const image_transform &other) const;\r
+private:\r
+ double opacity_;\r
+ double gain_;\r
+ std::array<double, 2> fill_translation_; \r
+ std::array<double, 2> fill_scale_; \r
+ std::array<double, 2> key_translation_; \r
+ std::array<double, 2> key_scale_; \r
+ video_mode::type mode_;\r
+};\r
+\r
+}}
\ No newline at end of file
\r
#include "AMCPCommandsImpl.h"\r
#include "AMCPProtocolStrategy.h"\r
+\r
#include "../media.h"\r
\r
-#include <core/mixer/image/image_transform.h>\r
-#include <core/mixer/audio/audio_transform.h>\r
+#include <common/env.h>\r
\r
#include <core/producer/frame_producer.h>\r
#include <core/video_format.h>\r
#include <core/producer/transition/transition_producer.h>\r
#include <core/producer/flash/cg_producer.h>\r
\r
-#include <common/env.h>\r
+#include <mixer/image/image_transform.h>\r
+#include <mixer/audio/audio_transform.h>\r
\r
#include <algorithm>\r
#include <locale>\r
{\r
if(_parameters[1] == L"OPACITY")\r
{\r
- double value = boost::lexical_cast<double>(_parameters[2]);\r
+ double value = boost::lexical_cast<double>(_parameters.at(2));\r
auto transform = GetChannel()->mixer().get_image_transform(GetLayerIndex());\r
transform.set_opacity(value);\r
GetChannel()->mixer().set_image_transform(GetLayerIndex(), std::move(transform));\r
}\r
else if(_parameters[1] == L"GAIN")\r
{\r
- double value = boost::lexical_cast<double>(_parameters[2]);\r
+ double value = boost::lexical_cast<double>(_parameters.at(2));\r
auto transform = GetChannel()->mixer().get_image_transform(GetLayerIndex());\r
transform.set_gain(value);\r
GetChannel()->mixer().set_image_transform(GetLayerIndex(), std::move(transform));\r
auto transform = GetChannel()->mixer().get_image_transform(GetLayerIndex());\r
transform.set_image_translation(x, y);\r
transform.set_image_scale(x_s, y_s);\r
+ transform.set_mask_translation(0.0, 0.0);\r
+ transform.set_mask_scale(1.0, 1.0);\r
GetChannel()->mixer().set_image_transform(GetLayerIndex(), std::move(transform));\r
}\r
else if(_parameters[1] == L"CLIP_RECT")\r
double x_s = boost::lexical_cast<double>(_parameters.at(4));\r
double y_s = boost::lexical_cast<double>(_parameters.at(5));\r
auto transform = GetChannel()->mixer().get_image_transform(GetLayerIndex());\r
+ transform.set_image_translation(0.0, 0.0);\r
+ transform.set_image_scale(1.0, 1.0);\r
transform.set_mask_translation(x, y);\r
transform.set_mask_scale(x_s, y_s);\r
GetChannel()->mixer().set_image_transform(GetLayerIndex(), std::move(transform));\r