#include "consumer/frame_consumer_device.h"\r
#include "mixer/frame_mixer_device.h"\r
#include "producer/frame_producer_device.h"\r
-\r
-#include "mixer/frame/basic_frame.h"\r
-#include "mixer/frame_mixer_device.h"\r
-\r
#include "producer/layer.h"\r
\r
#include <common/concurrency/executor.h>\r
--- /dev/null
+#pragma once\r
+\r
+#include <boost/noncopyable.hpp>\r
+#include <boost/range/iterator_range.hpp>\r
+\r
+#include <memory>\r
+#include <vector>\r
+\r
+#include <common/memory/safe_ptr.h>\r
+\r
+namespace caspar { namespace core {\r
+ \r
+class read_frame\r
+{\r
+public:\r
+ virtual const boost::iterator_range<const unsigned char*> image_data() const {return boost::iterator_range<const unsigned char*>();}\r
+ virtual const boost::iterator_range<const short*> audio_data() const {return boost::iterator_range<const short*>();}\r
+\r
+ static safe_ptr<const read_frame> empty()\r
+ {\r
+ return safe_ptr<const read_frame>();\r
+ }\r
+};\r
+\r
+}}
\ No newline at end of file
</ItemDefinitionGroup>\r
<ItemGroup>\r
<ClInclude Include="channel.h" />\r
+ <ClInclude Include="consumer\frame\read_frame.h" />\r
<ClInclude Include="consumer\frame_consumer_device.h" />\r
<ClInclude Include="consumer\frame_consumer.h" />\r
<ClInclude Include="producer\color\color_producer.h" />\r
+ <ClInclude Include="producer\frame\audio_transform.h" />\r
+ <ClInclude Include="producer\frame\basic_frame.h" />\r
+ <ClInclude Include="producer\frame\frame_factory.h" />\r
+ <ClInclude Include="producer\frame\frame_visitor.h" />\r
+ <ClInclude Include="producer\frame\image_transform.h" />\r
+ <ClInclude Include="producer\frame\pixel_format.h" />\r
+ <ClInclude Include="producer\frame\write_frame.h" />\r
<ClInclude Include="producer\frame_producer.h" />\r
<ClInclude Include="producer\frame_producer_device.h" />\r
<ClInclude Include="producer\layer.h" />\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
+ <ClCompile Include="producer\frame\audio_transform.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
+ <ClCompile Include="producer\frame\basic_frame.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
+ <ClCompile Include="producer\frame\image_transform.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../../StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
<ClCompile Include="producer\frame_producer.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">Create</PrecompiledHeader>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">Create</PrecompiledHeader>\r
</ClCompile>\r
- <ClCompile Include="video_format.cpp" />\r
+ <ClCompile Include="video_format.cpp">\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">StdAfx.h</PrecompiledHeaderFile>\r
+ </ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ProjectReference Include="..\common\common.vcxproj">\r
<Project>{02308602-7fe0-4253-b96e-22134919f56a}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
<ImportGroup Label="ExtensionTargets">\r
<Filter Include="producer\color">\r
<UniqueIdentifier>{78b16c14-bf29-4511-9122-684ff513dbf5}</UniqueIdentifier>\r
</Filter>\r
+ <Filter Include="producer\frame">\r
+ <UniqueIdentifier>{b19721c1-8dd1-45fb-b9e3-212b548ebbb6}</UniqueIdentifier>\r
+ </Filter>\r
+ <Filter Include="consumer\frame">\r
+ <UniqueIdentifier>{fc8d2ce0-e849-4f8e-83bf-494ab4455b80}</UniqueIdentifier>\r
+ </Filter>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="producer\transition\transition_producer.h">\r
<Filter>producer\transition</Filter>\r
</ClInclude>\r
- <ClInclude Include="video_format.h" />\r
- <ClInclude Include="producer\layer.h" />\r
<ClInclude Include="channel.h" />\r
<ClInclude Include="StdAfx.h" />\r
<ClInclude Include="consumer\frame_consumer_device.h">\r
<ClInclude Include="producer\color\color_producer.h">\r
<Filter>producer\color</Filter>\r
</ClInclude>\r
+ <ClInclude Include="producer\layer.h">\r
+ <Filter>producer</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\audio_transform.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\basic_frame.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\frame_factory.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\frame_visitor.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\image_transform.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\pixel_format.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="producer\frame\write_frame.h">\r
+ <Filter>producer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="consumer\frame\read_frame.h">\r
+ <Filter>consumer\frame</Filter>\r
+ </ClInclude>\r
+ <ClInclude Include="video_format.h" />\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="producer\transition\transition_producer.cpp">\r
<Filter>producer\transition</Filter>\r
</ClCompile>\r
- <ClCompile Include="producer\layer.cpp" />\r
<ClCompile Include="channel.cpp" />\r
<ClCompile Include="StdAfx.cpp" />\r
- <ClCompile Include="video_format.cpp" />\r
<ClCompile Include="consumer\frame_consumer.cpp">\r
<Filter>consumer</Filter>\r
</ClCompile>\r
<ClCompile Include="producer\color\color_producer.cpp">\r
<Filter>producer\color</Filter>\r
</ClCompile>\r
+ <ClCompile Include="producer\layer.cpp">\r
+ <Filter>producer</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="producer\frame\basic_frame.cpp">\r
+ <Filter>producer\frame</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="producer\frame\image_transform.cpp">\r
+ <Filter>producer\frame</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="producer\frame\audio_transform.cpp">\r
+ <Filter>producer\frame</Filter>\r
+ </ClCompile>\r
+ <ClCompile Include="video_format.cpp" />\r
</ItemGroup>\r
</Project>
\ No newline at end of file
+++ /dev/null
-/*\r
-* copyright (c) 2010 Sveriges Television AB <info@casparcg.com>\r
-*\r
-* This file is part of CasparCG.\r
-*\r
-* CasparCG is free software: you can redistribute it and/or modify\r
-* it under the terms of the GNU General Public License as published by\r
-* the Free Software Foundation, either version 3 of the License, or\r
-* (at your option) any later version.\r
-*\r
-* CasparCG is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-* GNU General Public License for more details.\r
-\r
-* You should have received a copy of the GNU General Public License\r
-* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
-*\r
-*/\r
- \r
-#include "..\StdAfx.h"\r
-\r
-#include "video_format.h"\r
-\r
-#include <boost/algorithm/string.hpp>\r
-\r
-#include <array>\r
-\r
-#define DEFINE_VIDEOFORMATDESC(w, h, m, f, s, fmt) { (fmt), (w), (h), (m), (m == video_mode::progressive ? f : f/2.0), (1.0/(m == video_mode::progressive ? f : f/2.0)), ((w)*(h)*4), (s) }\r
-\r
-namespace caspar { namespace core {\r
- \r
-const video_format_desc format_descs[video_format::invalid] = \r
-{ \r
- DEFINE_VIDEOFORMATDESC(720, 576, video_mode::upper, 50, TEXT("PAL"), video_format::pal ), \r
- //DEFINE_VIDEOFORMATDESC(720, 486, video_mode::lower, 60/1.001, TEXT("NTSC"), video_format::ntsc ), \r
- //DEFINE_VIDEOFORMATDESC(720, 576, video_mode::progressive, 25, TEXT("576p2500"), video_format::x576p2500 ),\r
- DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 25, TEXT("720p2500"), video_format::x720p2500 ), \r
- DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 50, TEXT("720p5000"), video_format::x720p5000 ), \r
- //DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 60/1.001, TEXT("720p5994"), video_format::x720p5994 ),\r
- //DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 60, TEXT("720p6000"), video_format::x720p6000 ),\r
- //DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 24/1.001, TEXT("1080p2397"), video_format::x1080p2397),\r
- //DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 24, TEXT("1080p2400"), video_format::x1080p2400),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::upper, 50, TEXT("1080i5000"), video_format::x1080i5000),\r
- //DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::upper, 60/1.001, TEXT("1080i5994"), video_format::x1080i5994),\r
- //DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::upper, 60, TEXT("1080i6000"), video_format::x1080i6000),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 25, TEXT("1080p2500"), video_format::x1080p2500),\r
- //DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 30/1.001, TEXT("1080p2997"), video_format::x1080p2997),\r
- //DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 30, TEXT("1080p3000"), video_format::x1080p3000),\r
- DEFINE_VIDEOFORMATDESC(0, 0, video_mode::invalid, -1, TEXT("invalid"), video_format::invalid)\r
-};\r
-\r
-const video_format_desc& video_format_desc::get(video_format::type format) \r
-{\r
- return format_descs[format];\r
-}\r
-\r
-const video_format_desc& video_format_desc::get(const std::wstring& name) \r
-{\r
- for(int n = 0; n < video_format::invalid; ++n)\r
- {\r
- if(boost::iequals(format_descs[n].name, name))\r
- return format_descs[n];\r
- }\r
- return format_descs[video_format::invalid];\r
-}\r
-\r
-}}\r
-\r
+++ /dev/null
-#pragma once\r
-\r
-#include <string>\r
-\r
-#include "../../common/compiler/vs/disable_silly_warnings.h"\r
-\r
-namespace caspar { namespace core {\r
- \r
-struct video_format \r
-{ \r
- enum type\r
- {\r
- pal = 0,\r
- //ntsc,\r
- //x576p2500,\r
- x720p2500,\r
- x720p5000,\r
- //x720p5994,\r
- //x720p6000,\r
- //x1080p2397,\r
- //x1080p2400,\r
- x1080i5000,\r
- //x1080i5994,\r
- //x1080i6000,\r
- x1080p2500,\r
- //x1080p2997,\r
- //x1080p3000,\r
- count,\r
- invalid\r
- };\r
-};\r
-\r
-struct video_mode \r
-{ \r
- enum type\r
- {\r
- progressive,\r
- lower,\r
- upper,\r
- count,\r
- invalid\r
- };\r
-};\r
-\r
-struct video_format_desc\r
-{\r
- video_format::type format; // video output format\r
-\r
- size_t width; // output frame width\r
- size_t height; // output frame height\r
- video_mode::type mode; // progressive, interlaced upper field first, interlaced lower field first\r
- double fps; // actual framerate, e.g. i50 = 25 fps, p50 = 50 fps\r
- double interval; // time between frames\r
- size_t size; // output frame size in bytes \r
- std::wstring name; // name of output format\r
-\r
- static const video_format_desc& get(video_format::type format);\r
- static const video_format_desc& get(const std::wstring& name);\r
-};\r
-\r
-inline bool operator==(const video_format_desc& rhs, const video_format_desc& lhs)\r
-{\r
- return rhs.format == lhs.format;\r
-}\r
-\r
-inline bool operator!=(const video_format_desc& rhs, const video_format_desc& lhs)\r
-{\r
- return !(rhs == lhs);\r
-}\r
-\r
-inline std::wostream& operator<<(std::wostream& out, const video_format_desc& format_desc)\r
-{\r
- out << format_desc.name.c_str();\r
- return out;\r
-}\r
-\r
-}}
\ No newline at end of file
\r
#include "color_producer.h"\r
\r
-#include <mixer/frame/write_frame.h>\r
+#include <core/producer/frame/write_frame.h>\r
\r
#include <sstream>\r
\r
-#include "../stdafx.h"\r
+#include "../../stdafx.h"\r
\r
#include "audio_transform.h"\r
\r
-#include "../stdafx.h"\r
+#include "../../stdafx.h"\r
\r
#include "basic_frame.h"\r
\r
-#include "../image/image_transform.h"\r
-#include "../image/image_mixer.h"\r
-#include "../audio/audio_mixer.h"\r
-#include "../audio/audio_transform.h"\r
+#include "image_transform.h"\r
+#include "audio_transform.h"\r
#include "pixel_format.h"\r
-\r
-#include <core/video_format.h>\r
+#include "../../video_format.h"\r
\r
#include <boost/range/algorithm.hpp>\r
\r
#pragma once\r
\r
-#include "../fwd.h"\r
-\r
#include "frame_visitor.h"\r
+#include "../../video_format.h"\r
\r
#include <common/memory/safe_ptr.h>\r
-#include <core/video_format.h>\r
\r
#include <boost/noncopyable.hpp>\r
#include <boost/range/iterator_range.hpp>\r
{\r
public:\r
basic_frame(); \r
- basic_frame(safe_ptr<write_frame>&& image, std::vector<short>&& audio);\r
basic_frame(const safe_ptr<basic_frame>& frame);\r
basic_frame(safe_ptr<basic_frame>&& frame);\r
basic_frame(const std::vector<safe_ptr<basic_frame>>& frames);\r
*/\r
#pragma once\r
\r
-#include "../fwd.h"\r
+#include "write_frame.h"\r
\r
#include "pixel_format.h"\r
+#include "../../video_format.h"\r
\r
#include <common/memory/safe_ptr.h>\r
\r
-#include <core/video_format.h>\r
+#include <boost/noncopyable.hpp>\r
\r
namespace caspar { namespace core {\r
\r
-#include "../stdafx.h"\r
+#include "../../stdafx.h"\r
\r
#include "image_transform.h"\r
\r
#pragma once\r
\r
-#include "../gpu/host_buffer.h"\r
-\r
#include <core/video_format.h>\r
\r
#include <boost/tuple/tuple.hpp>\r
--- /dev/null
+#pragma once\r
+\r
+#include "basic_frame.h"\r
+\r
+#include "../../video_format.h"\r
+\r
+#include <boost/noncopyable.hpp>\r
+#include <boost/range/iterator_range.hpp>\r
+\r
+#include <memory>\r
+#include <vector>\r
+\r
+namespace caspar { namespace core {\r
+ \r
+struct pixel_format_desc;\r
+\r
+class write_frame : public basic_frame, boost::noncopyable\r
+{\r
+public: \r
+ virtual boost::iterator_range<unsigned char*> image_data(size_t plane_index = 0) = 0;\r
+ virtual std::vector<short>& audio_data() = 0;\r
+ \r
+ virtual const boost::iterator_range<const unsigned char*> image_data(size_t plane_index = 0) const = 0;\r
+ virtual const boost::iterator_range<const short*> audio_data() const = 0;\r
+\r
+ virtual void accept(frame_visitor& visitor) = 0;\r
+\r
+ virtual void tag(int tag) = 0;\r
+ virtual int tag() const = 0;\r
+};\r
+typedef std::shared_ptr<write_frame> write_frame_impl_ptr;\r
+\r
+\r
+}}
\ No newline at end of file
#include <common/memory/safe_ptr.h>\r
#include <common/utility/printer.h>\r
\r
-#include <mixer/frame/basic_frame.h>\r
-#include <mixer/frame/frame_factory.h>\r
+#include "../producer/frame/basic_frame.h"\r
+#include "../producer/frame/frame_factory.h"\r
\r
#include <boost/noncopyable.hpp>\r
\r
\r
#include "frame_producer_device.h"\r
\r
-#include <mixer/frame/basic_frame.h>\r
-#include <mixer/frame/frame_factory.h>\r
+#include <core/producer/frame/basic_frame.h>\r
+#include <core/producer/frame/frame_factory.h>\r
\r
#include "layer.h"\r
\r
#include <common/utility/assert.h>\r
#include <common/utility/printer.h>\r
\r
-#include <mixer/frame/basic_frame.h>\r
-#include <mixer/image/image_mixer.h>\r
-#include <mixer/audio/audio_mixer.h>\r
-#include <mixer/audio/audio_transform.h>\r
+#include "../producer/frame/basic_frame.h"\r
+#include "../producer/frame/audio_transform.h"\r
\r
#include <tbb/spin_mutex.h>\r
\r
\r
#include <core/video_format.h>\r
\r
-#include <mixer/frame/basic_frame.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/producer/frame/basic_frame.h>\r
+#include <core/producer/frame/image_transform.h>\r
+#include <core/producer/frame/audio_transform.h>\r
\r
namespace caspar { namespace core { \r
\r
+++ /dev/null
-/*\r
-* copyright (c) 2010 Sveriges Television AB <info@casparcg.com>\r
-*\r
-* This file is part of CasparCG.\r
-*\r
-* CasparCG is free software: you can redistribute it and/or modify\r
-* it under the terms of the GNU General Public License as published by\r
-* the Free Software Foundation, either version 3 of the License, or\r
-* (at your option) any later version.\r
-*\r
-* CasparCG is distributed in the hope that it will be useful,\r
-* but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r
-* GNU General Public License for more details.\r
-\r
-* You should have received a copy of the GNU General Public License\r
-* along with CasparCG. If not, see <http://www.gnu.org/licenses/>.\r
-*\r
-*/\r
- \r
-#include "StdAfx.h"\r
-\r
-#include "video_format.h"\r
-\r
-#include <boost/algorithm/string.hpp>\r
-\r
-#include <array>\r
-\r
-#define DEFINE_VIDEOFORMATDESC(w, h, m, f, s, fmt) { (fmt), (w), (h), (m), (m == video_mode::progressive ? f : f/2.0), (1.0/(m == video_mode::progressive ? f : f/2.0)), ((w)*(h)*4), (s)}\r
-\r
-namespace caspar { namespace core {\r
- \r
-const video_format_desc format_descs[video_format::count] = \r
-{ \r
- DEFINE_VIDEOFORMATDESC(720, 576, video_mode::upper, 50, TEXT("pal"), video_format::pal ), \r
- DEFINE_VIDEOFORMATDESC(720, 486, video_mode::lower, 60/1.001, TEXT("ntsc"), video_format::ntsc ), \r
- DEFINE_VIDEOFORMATDESC(720, 576, video_mode::progressive, 25, TEXT("576p2500"), video_format::x576p2500 ),\r
- DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 25, TEXT("720p2500"), video_format::x720p2500 ), \r
- DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 50, TEXT("720p5000"), video_format::x720p5000 ), \r
- DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 60/1.001, TEXT("720p5994"), video_format::x720p5994 ),\r
- DEFINE_VIDEOFORMATDESC(1280, 720, video_mode::progressive, 60, TEXT("720p6000"), video_format::x720p6000 ),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 24/1.001, TEXT("1080p2397"), video_format::x1080p2397),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 24, TEXT("1080p2400"), video_format::x1080p2400),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::upper, 50, TEXT("1080i5000"), video_format::x1080i5000),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::upper, 60/1.001, TEXT("1080i5994"), video_format::x1080i5994),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::upper, 60, TEXT("1080i6000"), video_format::x1080i6000),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 25, TEXT("1080p2500"), video_format::x1080p2500),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 30/1.001, TEXT("1080p2997"), video_format::x1080p2997),\r
- DEFINE_VIDEOFORMATDESC(1920, 1080, video_mode::progressive, 30, TEXT("1080p3000"), video_format::x1080p3000),\r
- DEFINE_VIDEOFORMATDESC(0, 0, video_mode::invalid, -1, TEXT("invalid"), video_format::invalid )\r
-};\r
-\r
-const video_format_desc& video_format_desc::get(video_format::type format) \r
-{\r
- return format_descs[format];\r
-}\r
-\r
-const video_format_desc& video_format_desc::get(const std::wstring& name) \r
-{\r
- for(int n = 0; n < video_format::invalid; ++n)\r
- {\r
- if(boost::iequals(format_descs[n].name, name))\r
- return format_descs[n];\r
- }\r
- return format_descs[video_format::invalid];\r
-}\r
-\r
-}}\r
-\r
+++ /dev/null
-#pragma once\r
-\r
-#include <string>\r
-\r
-#include <common/compiler/vs/disable_silly_warnings.h>\r
-\r
-namespace caspar { namespace core {\r
- \r
-struct video_format \r
-{ \r
- enum type\r
- {\r
- pal = 0,\r
- ntsc,\r
- x576p2500,\r
- x720p2500,\r
- x720p5000,\r
- x720p5994,\r
- x720p6000,\r
- x1080p2397,\r
- x1080p2400,\r
- x1080i5000,\r
- x1080i5994,\r
- x1080i6000,\r
- x1080p2500,\r
- x1080p2997,\r
- x1080p3000,\r
- invalid,\r
- count\r
- };\r
-};\r
-\r
-struct video_mode \r
-{ \r
- enum type\r
- {\r
- progressive,\r
- lower,\r
- upper,\r
- count,\r
- invalid\r
- };\r
-};\r
-\r
-struct video_format_desc\r
-{\r
- video_format::type format; // video output format\r
-\r
- size_t width; // output frame width\r
- size_t height; // output frame height\r
- video_mode::type mode; // progressive, interlaced upper field first, interlaced lower field first\r
- double fps; // actual framerate, e.g. i50 = 25 fps, p50 = 50 fps\r
- double interval; // time between frames\r
- size_t size; // output frame size in bytes \r
- std::wstring name; // name of output format\r
-\r
- static const video_format_desc& get(video_format::type format);\r
- static const video_format_desc& get(const std::wstring& name);\r
-};\r
-\r
-inline bool operator==(const video_format_desc& rhs, const video_format_desc& lhs)\r
-{\r
- return rhs.format == lhs.format;\r
-}\r
-\r
-inline bool operator!=(const video_format_desc& rhs, const video_format_desc& lhs)\r
-{\r
- return !(rhs == lhs);\r
-}\r
-\r
-inline std::wostream& operator<<(std::wostream& out, const video_format_desc& format_desc)\r
-{\r
- out << format_desc.name.c_str();\r
- return out;\r
-}\r
-\r
-}}
\ No newline at end of file
#include "../stdafx.h"\r
\r
#include "audio_mixer.h"\r
-#include "audio_transform.h"\r
\r
-#include "../frame/basic_frame.h"\r
-#include "../frame/write_frame.h"\r
+#include "../gpu/gpu_write_frame.h"\r
+\r
+#include <core/producer/frame/audio_transform.h>\r
\r
namespace caspar { namespace core {\r
\r
#pragma once\r
\r
-#include "../frame/frame_visitor.h"\r
+#include <core/producer/frame/frame_visitor.h>\r
+\r
+#include <boost/noncopyable.hpp>\r
\r
namespace caspar { namespace core {\r
\r
class audio_transform;\r
\r
-class audio_mixer : public frame_visitor\r
+class audio_mixer : public core::frame_visitor, boost::noncopyable\r
{\r
public:\r
audio_mixer();\r
\r
#include "frame_mixer_device.h"\r
\r
+#include "gpu/gpu_read_frame.h"\r
+#include "gpu/gpu_write_frame.h"\r
+\r
+#include <core/producer/frame/audio_transform.h>\r
+#include <core/producer/frame/image_transform.h>\r
+\r
#include "audio/audio_mixer.h"\r
-#include "audio/audio_transform.h"\r
-#include "frame/write_frame.h"\r
-#include "frame/read_frame.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
\r
auto image = mix_image(frames);\r
auto audio = mix_audio(frames);\r
- output_(make_safe<const read_frame>(std::move(image.get()), std::move(audio)));\r
+ output_(make_safe<const gpu_read_frame>(std::move(image.get()), std::move(audio)));\r
\r
diag_->update_value("tick-time", static_cast<float>(wait_perf_timer_.elapsed()/format_desc_.interval*0.5));\r
wait_perf_timer_.reset();\r
\r
safe_ptr<write_frame> create_frame(const pixel_format_desc& desc)\r
{\r
- return make_safe<write_frame>(desc, image_mixer_.create_buffers(desc));\r
+ return make_safe<gpu_write_frame>(desc, image_mixer_.create_buffers(desc));\r
}\r
\r
void set_image_transform(const image_transform& transform, int mix_duration)\r
\r
#include "fwd.h"\r
\r
-#include "frame/frame_factory.h"\r
+#include <core/video_format.h>\r
+#include <core/producer/frame/pixel_format.h>\r
+#include <core/producer/frame/frame_factory.h>\r
\r
#include "image/image_mixer.h"\r
#include "audio/audio_mixer.h"\r
\r
-#include "frame/write_frame.h"\r
-#include "frame/pixel_format.h"\r
+#include "gpu/gpu_write_frame.h"\r
\r
#include <common/memory/safe_ptr.h>\r
#include <common/utility/printer.h>\r
#include "../stdafx.h"\r
\r
-#include "read_frame.h"\r
+#include "gpu_read_frame.h"\r
\r
#include "../gpu/host_buffer.h"\r
\r
\r
namespace caspar { namespace core {\r
\r
-struct read_frame::implementation : boost::noncopyable\r
+struct gpu_read_frame::implementation : boost::noncopyable\r
{\r
safe_ptr<const host_buffer> image_data_;\r
std::vector<short> audio_data_;\r
, audio_data_(std::move(audio_data)){} \r
};\r
\r
-read_frame::read_frame(){}\r
-read_frame::read_frame(safe_ptr<const host_buffer>&& image_data, std::vector<short>&& audio_data) : impl_(new implementation(std::move(image_data), std::move(audio_data))){}\r
+gpu_read_frame::gpu_read_frame(safe_ptr<const host_buffer>&& image_data, std::vector<short>&& audio_data) : impl_(new implementation(std::move(image_data), std::move(audio_data))){}\r
\r
-const boost::iterator_range<const unsigned char*> read_frame::image_data() const\r
+const boost::iterator_range<const unsigned char*> gpu_read_frame::image_data() const\r
{\r
- if(!impl_ || !impl_->image_data_->data())\r
+ if(!impl_->image_data_->data())\r
return boost::iterator_range<const unsigned char*>();\r
auto ptr = static_cast<const unsigned char*>(impl_->image_data_->data());\r
return boost::iterator_range<const unsigned char*>(ptr, ptr + impl_->image_data_->size());\r
}\r
-const boost::iterator_range<const short*> read_frame::audio_data() const\r
+const boost::iterator_range<const short*> gpu_read_frame::audio_data() const\r
{\r
- if(!impl_)\r
- return boost::iterator_range<const short*>();\r
return boost::iterator_range<const short*>(impl_->audio_data_.data(), impl_->audio_data_.data() + impl_->audio_data_.size());\r
}\r
\r
\r
#include "../gpu/host_buffer.h" \r
\r
+#include <core/consumer/frame/read_frame.h>\r
+\r
#include <boost/noncopyable.hpp>\r
#include <boost/range/iterator_range.hpp>\r
\r
\r
namespace caspar { namespace core {\r
\r
-class read_frame\r
+class gpu_read_frame : public core::read_frame\r
{\r
public:\r
- read_frame();\r
- read_frame(safe_ptr<const host_buffer>&& image_data, std::vector<short>&& audio_data);\r
+ gpu_read_frame(safe_ptr<const host_buffer>&& image_data, std::vector<short>&& audio_data);\r
\r
const boost::iterator_range<const unsigned char*> image_data() const;\r
const boost::iterator_range<const short*> audio_data() const;\r
#include "../stdafx.h"\r
\r
-#include "write_frame.h"\r
+#include "gpu_write_frame.h"\r
\r
-#include "basic_frame.h"\r
-#include "pixel_format.h"\r
+#include <core/producer/frame/pixel_format.h>\r
\r
#include "../image/image_mixer.h"\r
#include "../audio/audio_mixer.h"\r
\r
namespace caspar { namespace core {\r
\r
-struct write_frame::implementation : boost::noncopyable\r
+struct gpu_write_frame::implementation : boost::noncopyable\r
{ \r
std::vector<safe_ptr<host_buffer>> buffers_;\r
std::vector<short> audio_data_;\r
const pixel_format_desc desc_;\r
- const int tag_;\r
+ int tag_;\r
\r
public:\r
implementation(const pixel_format_desc& desc, const std::vector<safe_ptr<host_buffer>>& buffers) \r
, buffers_(buffers)\r
, tag_(std::numeric_limits<int>::min()){}\r
\r
- void accept(write_frame& self, frame_visitor& visitor)\r
+ void accept(gpu_write_frame& self, frame_visitor& visitor)\r
{\r
visitor.begin(self);\r
visitor.visit(self);\r
}\r
};\r
\r
-write_frame::write_frame(const pixel_format_desc& desc, const std::vector<safe_ptr<host_buffer>>& buffers) : impl_(new implementation(desc, buffers)){}\r
-write_frame::write_frame(write_frame&& other) : impl_(std::move(other.impl_)){}\r
-void write_frame::swap(write_frame& other){impl_.swap(other.impl_);}\r
-write_frame& write_frame::operator=(write_frame&& other)\r
+gpu_write_frame::gpu_write_frame(const pixel_format_desc& desc, const std::vector<safe_ptr<host_buffer>>& buffers) : impl_(new implementation(desc, buffers)){}\r
+gpu_write_frame::gpu_write_frame(gpu_write_frame&& other) : impl_(std::move(other.impl_)){}\r
+void gpu_write_frame::swap(gpu_write_frame& other){impl_.swap(other.impl_);}\r
+gpu_write_frame& gpu_write_frame::operator=(gpu_write_frame&& other)\r
{\r
- write_frame temp(std::move(other));\r
+ gpu_write_frame temp(std::move(other));\r
temp.swap(*this);\r
return *this;\r
}\r
-void write_frame::accept(frame_visitor& visitor){impl_->accept(*this, visitor);}\r
-boost::iterator_range<unsigned char*> write_frame::image_data(size_t index){return impl_->image_data(index);}\r
-std::vector<short>& write_frame::audio_data() { return impl_->audio_data_; }\r
-const boost::iterator_range<const unsigned char*> write_frame::image_data(size_t index) const\r
+void gpu_write_frame::accept(frame_visitor& visitor){impl_->accept(*this, visitor);}\r
+boost::iterator_range<unsigned char*> gpu_write_frame::image_data(size_t index){return impl_->image_data(index);}\r
+std::vector<short>& gpu_write_frame::audio_data() { return impl_->audio_data_; }\r
+const boost::iterator_range<const unsigned char*> gpu_write_frame::image_data(size_t index) const\r
{\r
return boost::iterator_range<const unsigned char*>(impl_->image_data(index).begin(), impl_->image_data(index).end());\r
}\r
-const boost::iterator_range<const short*> write_frame::audio_data() const\r
+const boost::iterator_range<const short*> gpu_write_frame::audio_data() const\r
{\r
return boost::iterator_range<const short*>(impl_->audio_data_.data(), impl_->audio_data_.data() + impl_->audio_data_.size());\r
}\r
-void write_frame::tag(int tag) { impl_->tag_ = tag;}\r
-int write_frame::tag() const {return impl_->tag_;}\r
-const pixel_format_desc& write_frame::get_pixel_format_desc() const{return impl_->desc_;}\r
-std::vector<safe_ptr<host_buffer>>& write_frame::get_plane_buffers(){return impl_->buffers_;}\r
+void gpu_write_frame::tag(int tag) { impl_->tag_ = tag;}\r
+int gpu_write_frame::tag() const {return impl_->tag_;}\r
+const pixel_format_desc& gpu_write_frame::get_pixel_format_desc() const{return impl_->desc_;}\r
+std::vector<safe_ptr<host_buffer>>& gpu_write_frame::get_plane_buffers(){return impl_->buffers_;}\r
}}
\ No newline at end of file
\r
#include "../fwd.h"\r
\r
-#include "basic_frame.h"\r
+#include <core/producer/frame/write_frame.h>\r
+#include <core/video_format.h>\r
\r
#include "../gpu/host_buffer.h"\r
\r
-#include <core/video_format.h>\r
-\r
#include <boost/noncopyable.hpp>\r
#include <boost/range/iterator_range.hpp>\r
\r
\r
struct pixel_format_desc;\r
\r
-class write_frame : public basic_frame, boost::noncopyable\r
+class gpu_write_frame : public core::write_frame\r
{\r
public: \r
- explicit write_frame(const pixel_format_desc& desc, const std::vector<safe_ptr<host_buffer>>& buffers);\r
- write_frame(write_frame&& other);\r
- write_frame& operator=(write_frame&& other);\r
+ explicit gpu_write_frame(const pixel_format_desc& desc, const std::vector<safe_ptr<host_buffer>>& buffers);\r
+ gpu_write_frame(gpu_write_frame&& other);\r
+ gpu_write_frame& operator=(gpu_write_frame&& other);\r
\r
- void swap(write_frame& other);\r
+ void swap(gpu_write_frame& other);\r
\r
boost::iterator_range<unsigned char*> image_data(size_t plane_index = 0); \r
std::vector<short>& audio_data();\r
struct implementation;\r
std::shared_ptr<implementation> impl_;\r
};\r
-typedef std::shared_ptr<write_frame> write_frame_impl_ptr;\r
+typedef std::shared_ptr<gpu_write_frame> gpu_write_frame_impl_ptr;\r
\r
\r
}}
\ No newline at end of file
\r
#include "image_kernel.h"\r
\r
-#include "image_transform.h"\r
-\r
#include <common/exception/exceptions.h>\r
#include <common/gl/gl_check.h>\r
\r
+#include <core/producer/frame/image_transform.h>\r
+\r
#include <Glee.h>\r
\r
#include <boost/noncopyable.hpp>\r
#pragma once\r
\r
#include <core/video_format.h>\r
-\r
-#include "../frame/pixel_format.h"\r
+#include <core/producer/frame/pixel_format.h>\r
\r
#include <memory>\r
\r
\r
#include "image_mixer.h"\r
#include "image_kernel.h"\r
-#include "image_transform.h"\r
-\r
-#include "../frame/basic_frame.h"\r
-#include "../frame/write_frame.h"\r
\r
#include "../gpu/ogl_device.h"\r
#include "../gpu/host_buffer.h"\r
#include "../gpu/device_buffer.h"\r
+#include "../gpu/gpu_write_frame.h"\r
\r
#include <common/exception/exceptions.h>\r
#include <common/gl/gl_check.h>\r
#include <common/concurrency/executor.h>\r
\r
+#include <core/producer/frame/image_transform.h>\r
+\r
#include <Glee.h>\r
#include <SFML/Window/Context.hpp>\r
#include <unordered_map>\r
\r
void visit(write_frame& frame)\r
{\r
- auto& desc = frame.get_pixel_format_desc();\r
- auto& buffers = frame.get_plane_buffers();\r
+ auto gpu_frame = static_cast<gpu_write_frame*>(&frame);\r
+ auto& desc = gpu_frame->get_pixel_format_desc();\r
+ auto& buffers = gpu_frame->get_plane_buffers();\r
\r
auto transform = transform_stack_.top();\r
context_->begin_invoke([=]\r
#pragma once\r
\r
-#include "../frame/frame_visitor.h"\r
+#include <core/producer/frame/frame_visitor.h>\r
\r
#include "../gpu/host_buffer.h"\r
\r
struct pixel_format_desc; \r
class image_transform;\r
\r
-class image_mixer : public frame_visitor, boost::noncopyable\r
+class image_mixer : public core::frame_visitor, boost::noncopyable\r
{\r
public:\r
image_mixer(const video_format_desc& format_desc);\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="audio\audio_transform.cpp">\r
+ <ClCompile Include="frame_mixer_device.cpp" />\r
+ <ClCompile Include="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
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="frame\basic_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="gpu\gpu_read_frame.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
- <ClCompile Include="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
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
- <ClCompile Include="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
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="frame_mixer_device.cpp" />\r
- <ClCompile Include="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 Include="gpu\gpu_write_frame.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
+ <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
<ClCompile Include="gpu\host_buffer.cpp">\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
<PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
</ClCompile>\r
- <ClCompile Include="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
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
- <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
- </ClCompile>\r
<ClCompile Include="StdAfx.cpp">\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">Create</PrecompiledHeader>\r
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">Create</PrecompiledHeader>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="audio\audio_mixer.h" />\r
- <ClInclude Include="audio\audio_transform.h" />\r
- <ClInclude Include="frame\basic_frame.h" />\r
- <ClInclude Include="frame\frame_factory.h" />\r
- <ClInclude Include="frame\frame_visitor.h" />\r
- <ClInclude Include="frame\pixel_format.h" />\r
- <ClInclude Include="frame\read_frame.h" />\r
- <ClInclude Include="frame\write_frame.h" />\r
<ClInclude Include="frame_mixer_device.h" />\r
<ClInclude Include="fwd.h" />\r
<ClInclude Include="gpu\device_buffer.h" />\r
+ <ClInclude Include="gpu\gpu_read_frame.h" />\r
+ <ClInclude Include="gpu\gpu_write_frame.h" />\r
<ClInclude Include="gpu\host_buffer.h" />\r
<ClInclude Include="gpu\ogl_device.h" />\r
<ClInclude Include="image\image_kernel.h" />\r
<ClInclude Include="image\image_mixer.h" />\r
- <ClInclude Include="image\image_transform.h" />\r
<ClInclude Include="StdAfx.h" />\r
</ItemGroup>\r
<ItemGroup>\r
<Filter Include="audio">\r
<UniqueIdentifier>{ad4b4d9e-2c3d-48fb-977f-edce86b653e1}</UniqueIdentifier>\r
</Filter>\r
- <Filter Include="frame">\r
- <UniqueIdentifier>{d42d9881-e19e-4128-91dd-5b7279c2b5e5}</UniqueIdentifier>\r
- </Filter>\r
<Filter Include="gpu">\r
<UniqueIdentifier>{3c5b1ceb-6788-4278-98cc-0c5865cda30a}</UniqueIdentifier>\r
</Filter>\r
<ClCompile Include="gpu\device_buffer.cpp">\r
<Filter>gpu</Filter>\r
</ClCompile>\r
- <ClCompile Include="frame\read_frame.cpp">\r
- <Filter>frame</Filter>\r
- </ClCompile>\r
- <ClCompile Include="frame\write_frame.cpp">\r
- <Filter>frame</Filter>\r
- </ClCompile>\r
<ClCompile Include="frame_mixer_device.cpp" />\r
<ClCompile Include="StdAfx.cpp" />\r
<ClCompile Include="image\image_kernel.cpp">\r
<ClCompile Include="image\image_mixer.cpp">\r
<Filter>image</Filter>\r
</ClCompile>\r
- <ClCompile Include="frame\basic_frame.cpp">\r
- <Filter>frame</Filter>\r
- </ClCompile>\r
- <ClCompile Include="image\image_transform.cpp">\r
- <Filter>image</Filter>\r
+ <ClCompile Include="gpu\gpu_read_frame.cpp">\r
+ <Filter>gpu</Filter>\r
</ClCompile>\r
- <ClCompile Include="audio\audio_transform.cpp">\r
- <Filter>audio</Filter>\r
+ <ClCompile Include="gpu\gpu_write_frame.cpp">\r
+ <Filter>gpu</Filter>\r
</ClCompile>\r
</ItemGroup>\r
<ItemGroup>\r
<ClInclude Include="gpu\ogl_device.h">\r
<Filter>gpu</Filter>\r
</ClInclude>\r
- <ClInclude Include="frame\pixel_format.h">\r
- <Filter>frame</Filter>\r
- </ClInclude>\r
- <ClInclude Include="frame\read_frame.h">\r
- <Filter>frame</Filter>\r
- </ClInclude>\r
- <ClInclude Include="frame\write_frame.h">\r
- <Filter>frame</Filter>\r
- </ClInclude>\r
<ClInclude Include="StdAfx.h" />\r
<ClInclude Include="frame_mixer_device.h" />\r
<ClInclude Include="fwd.h" />\r
<ClInclude Include="image\image_mixer.h">\r
<Filter>image</Filter>\r
</ClInclude>\r
- <ClInclude Include="frame\frame_visitor.h">\r
- <Filter>frame</Filter>\r
- </ClInclude>\r
- <ClInclude Include="frame\frame_factory.h">\r
- <Filter>frame</Filter>\r
- </ClInclude>\r
- <ClInclude Include="frame\basic_frame.h">\r
- <Filter>frame</Filter>\r
- </ClInclude>\r
- <ClInclude Include="image\image_transform.h">\r
- <Filter>image</Filter>\r
+ <ClInclude Include="gpu\gpu_write_frame.h">\r
+ <Filter>gpu</Filter>\r
</ClInclude>\r
- <ClInclude Include="audio\audio_transform.h">\r
- <Filter>audio</Filter>\r
+ <ClInclude Include="gpu\gpu_read_frame.h">\r
+ <Filter>gpu</Filter>\r
</ClInclude>\r
</ItemGroup>\r
</Project>
\ No newline at end of file
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
<ImportGroup Label="ExtensionTargets">\r
#include "../util/util.h"\r
#include "../util/memory.h"\r
\r
-#include <mixer/frame/read_frame.h>\r
+#include <core/consumer/frame/read_frame.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/diagnostics/graph.h>\r
\r
#include <core/video_format.h>\r
\r
-#include <mixer/frame/read_frame.h>\r
+#include <core/consumer/frame/read_frame.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/diagnostics/graph.h>\r
\r
auto buffer_size = static_cast<size_t>(frame_time_scale_/frame_duration_)/4;\r
for(size_t n = 0; n < buffer_size; ++n)\r
- schedule_next_video(safe_ptr<const core::read_frame>());\r
+ schedule_next_video(core::read_frame::empty());\r
\r
video_frame_buffer_.set_capacity(buffer_size);\r
audio_frame_buffer_.set_capacity(buffer_size);\r
</ItemGroup>\r
<ItemGroup>\r
<Midl Include="interop\DeckLinkAPI.idl">\r
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">true</ExcludedFromBuild>\r
- <ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">true</ExcludedFromBuild>\r
<OutputDirectory Condition="'$(Configuration)|$(Platform)'=='Develop|Win32'">interop\</OutputDirectory>\r
<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)'=='Develop|Win32'">true</ExcludedFromBuild>\r
</Midl>\r
<Midl Include="interop\DeckLinkAPI_v7_1.idl">\r
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">true</ExcludedFromBuild>\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
<ImportGroup Label="ExtensionTargets">\r
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Wed Mar 09 11:25:59 2011\r
+/* at Wed Mar 09 13:57:51 2011\r
*/\r
/* Compiler settings for interop\DeckLinkAPI.idl:\r
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
{ bmdModeNTSC = 0x6e747363,\r
bmdModeNTSC2398 = 0x6e743233,\r
bmdModePAL = 0x70616c20,\r
+ bmdModeNTSCp = 0x6e747370,\r
+ bmdModePALp = 0x70616c70,\r
bmdModeHD1080p2398 = 0x32337073,\r
bmdModeHD1080p24 = 0x32347073,\r
bmdModeHD1080p25 = 0x48703235,\r
{ bmdVideo3DPackingSidebySideHalf = 0x73627368,\r
bmdVideo3DPackingLinebyLine = 0x6c62796c,\r
bmdVideo3DPackingTopAndBottom = 0x7461626f,\r
+ bmdVideo3DPackingFramePacking = 0x6672706b,\r
bmdVideo3DPackingLeftOnly = 0x6c656674,\r
bmdVideo3DPackingRightOnly = 0x72696768\r
} BMDVideo3DPackingFormat;\r
virtual BMDVideo3DPackingFormat STDMETHODCALLTYPE Get3DPackingFormat( void) = 0;\r
\r
virtual HRESULT STDMETHODCALLTYPE GetFrameForRightEye( \r
- /* [in] */ IDeckLinkVideoFrame **rightEyeFrame) = 0;\r
+ /* [out] */ IDeckLinkVideoFrame **rightEyeFrame) = 0;\r
\r
};\r
\r
\r
HRESULT ( STDMETHODCALLTYPE *GetFrameForRightEye )( \r
IDeckLinkVideoFrame3DExtensions * This,\r
- /* [in] */ IDeckLinkVideoFrame **rightEyeFrame);\r
+ /* [out] */ IDeckLinkVideoFrame **rightEyeFrame);\r
\r
END_INTERFACE\r
} IDeckLinkVideoFrame3DExtensionsVtbl;\r
\r
\r
/* File created by MIDL compiler version 7.00.0555 */\r
-/* at Wed Mar 09 11:25:59 2011\r
+/* at Wed Mar 09 13:57:51 2011\r
*/\r
/* Compiler settings for interop\DeckLinkAPI.idl:\r
Oicf, W1, Zp8, env=Win32 (32b run), target_arch=X86 7.00.0555 \r
#include <common/exception/exceptions.h>\r
#include <common/utility/timer.h>\r
\r
-#include <mixer/frame/write_frame.h>\r
+#include <core/producer/frame/write_frame.h>\r
\r
#include <tbb/concurrent_queue.h>\r
#include <tbb/atomic.h>\r
\r
#include "ffmpeg_consumer.h"\r
\r
-#include <mixer/frame/read_frame.h>\r
+#include <core/consumer/frame/read_frame.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/utility/string.h>\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />\r
<ImportGroup Label="ExtensionTargets">\r
#include "audio/audio_decoder.h"\r
#include "video/video_decoder.h"\r
\r
-#include <core/video_format.h>\r
#include <common/utility/timer.h>\r
#include <common/diagnostics/graph.h>\r
-#include <mixer/frame/basic_frame.h>\r
-#include <mixer/audio/audio_transform.h>\r
+\r
+#include <core/producer/frame/basic_frame.h>\r
+#include <core/producer/frame/audio_transform.h>\r
+#include <core/video_format.h>\r
\r
#include <common/env.h>\r
#include <common/utility/timer.h>\r
\r
#include <core/video_format.h>\r
\r
-#include <mixer/frame/basic_frame.h>\r
-#include <mixer/image/image_transform.h>\r
+#include <core/producer/frame/basic_frame.h>\r
+#include <core/producer/frame/image_transform.h>\r
\r
#include <tbb/parallel_for.h>\r
\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<ItemGroup>\r
<Midl Include="interop\Flash9e.IDL">\r
\r
#include <core/video_format.h>\r
\r
-#include <mixer/frame/basic_frame.h>\r
+#include <core/producer/frame/basic_frame.h>\r
#include <mixer/frame_mixer_device.h>\r
\r
#include <common/concurrency/executor.h>\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="image.cpp" />\r
#include <core/video_format.h>\r
\r
#include <mixer/frame_mixer_device.h>\r
-#include <mixer/frame/basic_frame.h>\r
+#include <core/producer/frame/basic_frame.h>\r
\r
#include <common/env.h>\r
\r
\r
#include <core/video_format.h>\r
\r
-#include <mixer/frame/read_frame.h>\r
+#include <core/consumer/frame/read_frame.h>\r
\r
#include <SFML/Audio.hpp>\r
\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="consumer\oal_consumer.cpp">\r
#include "ogl_consumer.h"\r
\r
#include <core/video_format.h>\r
-#include <mixer/frame/read_frame.h>\r
+#include <core/consumer/frame/read_frame.h>\r
\r
#include <common/gl/gl_check.h>\r
#include <common/concurrency/executor.h>\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="consumer\ogl_consumer.cpp">\r
\r
#include <core/video_format.h>\r
\r
-#include <mixer/frame/write_frame.h>\r
-#include <mixer/frame/frame_factory.h>\r
+#include <core/producer/frame/write_frame.h>\r
+#include <core/producer/frame/frame_factory.h>\r
\r
#include <common/concurrency/executor.h>\r
#include <common/env.h>\r
<ProjectReference Include="..\..\core\core.vcxproj">\r
<Project>{79388c20-6499-4bf6-b8b9-d8c33d7d4ddd}</Project>\r
</ProjectReference>\r
- <ProjectReference Include="..\..\mixer\mixer.vcxproj">\r
- <Project>{477e12a4-1b28-4ff7-b46d-76606bdd1891}</Project>\r
- </ProjectReference>\r
</ItemGroup>\r
<ItemGroup>\r
<ClCompile Include="interop\XcpControlHost.cpp">\r
#include <modules/flash/producer/cg_producer.h>\r
#include <core/producer/transition/transition_producer.h>\r
\r
-#include <mixer/image/image_transform.h>\r
-#include <mixer/audio/audio_transform.h>\r
+#include <core/producer/frame/image_transform.h>\r
+#include <core/producer/frame/audio_transform.h>\r
\r
#include <algorithm>\r
#include <locale>\r