]> git.sesse.net Git - casparcg/commitdiff
2.0.2: playlist_producer: Added as a simple example/template how to make a playlist...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 25 Nov 2011 15:58:56 +0000 (15:58 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 25 Nov 2011 15:58:56 +0000 (15:58 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.2@1655 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/core.vcxproj
core/core.vcxproj.filters
core/producer/frame_producer.cpp
core/producer/frame_producer.h
protocol/cii/CIIProtocolStrategy.cpp
shell/casparcg.config

index c79e4a08e7cac028fd9a3cd95f5a691684c080a0..9c971c9213f1dbe36cdfd7ff823d3c17cc7319cf 100644 (file)
     <ClInclude Include="mixer\image\blending_glsl.h" />\r
     <ClInclude Include="mixer\image\blend_modes.h" />\r
     <ClInclude Include="mixer\image\image_shader.h" />\r
+    <ClInclude Include="producer\playlist\playlist_producer.h" />\r
     <ClInclude Include="video_channel.h" />\r
     <ClInclude Include="consumer\output.h" />\r
     <ClInclude Include="consumer\frame_consumer.h" />\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\playlist\playlist_producer.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="video_channel.cpp" />\r
     <ClCompile Include="consumer\frame_consumer.cpp">\r
       <PrecompiledHeaderFile Condition="'$(Configuration)|$(Platform)'=='Profile|Win32'">../StdAfx.h</PrecompiledHeaderFile>\r
index b9995b672e2c30862ef91965dd3586a805d2a0b0..9e786645c49ede2619833feab176a73d65488563 100644 (file)
@@ -34,6 +34,9 @@
     <Filter Include="source\consumer">\r
       <UniqueIdentifier>{35d7835f-f813-4b4b-8d8d-8a35dfef68d3}</UniqueIdentifier>\r
     </Filter>\r
+    <Filter Include="source\producer\playlist">\r
+      <UniqueIdentifier>{80ce21ca-5ecd-48c1-97d2-c20ea8e2f2b6}</UniqueIdentifier>\r
+    </Filter>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="producer\transition\transition_producer.h">\r
     <ClInclude Include="mixer\audio\audio_util.h">\r
       <Filter>source\mixer\audio</Filter>\r
     </ClInclude>\r
+    <ClInclude Include="producer\playlist\playlist_producer.h">\r
+      <Filter>source\producer\playlist</Filter>\r
+    </ClInclude>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClCompile Include="producer\transition\transition_producer.cpp">\r
     <ClCompile Include="producer\frame\frame_transform.cpp">\r
       <Filter>source\producer\frame</Filter>\r
     </ClCompile>\r
+    <ClCompile Include="producer\playlist\playlist_producer.cpp">\r
+      <Filter>source\producer\playlist</Filter>\r
+    </ClCompile>\r
   </ItemGroup>\r
 </Project>
\ No newline at end of file
index 454c8ee22b7afa8e1134dbadd9bac3e6745187b0..7b0c2327665d7aefd88efe6bca673b47d8ef510b 100644 (file)
@@ -25,6 +25,7 @@
 #include "frame/frame_transform.h"\r
 \r
 #include "color/color_producer.h"\r
+#include "playlist/playlist_producer.h"\r
 #include "separated/separated_producer.h"\r
 \r
 #include <common/memory/safe_ptr.h>\r
@@ -185,6 +186,9 @@ safe_ptr<core::frame_producer> do_create_producer(const safe_ptr<frame_factory>&
        if(producer == frame_producer::empty())\r
                producer = create_color_producer(my_frame_factory, params);\r
        \r
+       if(producer == frame_producer::empty())\r
+               producer = create_playlist_producer(my_frame_factory, params);\r
+\r
        return producer;\r
 }\r
 \r
@@ -224,4 +228,14 @@ safe_ptr<core::frame_producer> create_producer(const safe_ptr<frame_factory>& my
        return producer;\r
 }\r
 \r
+\r
+safe_ptr<core::frame_producer> create_producer(const safe_ptr<frame_factory>& factory, const std::wstring& params)\r
+{\r
+       std::wstringstream iss(params);\r
+       std::vector<std::wstring> tokens;\r
+       typedef std::istream_iterator<std::wstring, wchar_t, std::char_traits<wchar_t> > iterator;\r
+       std::copy(iterator(iss),  iterator(), std::back_inserter(tokens));\r
+       return create_producer(factory, tokens);\r
+}\r
+\r
 }}
\ No newline at end of file
index 21c2ab26e03bd3720be546e34e4b6d3aaad25755..c271501d66106d94bda0def7e09978f327d333e5 100644 (file)
@@ -70,6 +70,7 @@ safe_ptr<basic_frame> receive_and_follow(safe_ptr<frame_producer>& producer, int
 typedef std::function<safe_ptr<core::frame_producer>(const safe_ptr<frame_factory>&, const std::vector<std::wstring>&)> producer_factory_t;\r
 void register_producer_factory(const producer_factory_t& factory); // Not thread-safe.\r
 safe_ptr<core::frame_producer> create_producer(const safe_ptr<frame_factory>&, const std::vector<std::wstring>& params);\r
+safe_ptr<core::frame_producer> create_producer(const safe_ptr<frame_factory>&, const std::wstring& params);\r
 safe_ptr<core::frame_producer> create_destroy_proxy(safe_ptr<core::frame_producer>&& producer);\r
 \r
 template<typename T>\r
index f0768555350b3daeb3732ef28007192354ad371e..1a381ca82c19594bce652d954ad7a5f18ff8ebec 100644 (file)
@@ -213,7 +213,7 @@ void CIIProtocolStrategy::DisplayMediaFile(const std::wstring& filename)
        transition.type = transition::mix;\r
        transition.duration = 12;\r
 \r
-       auto pFP = create_producer(GetChannel()->mixer(), boost::assign::list_of(filename));\r
+       auto pFP = create_producer(GetChannel()->mixer(), filename);\r
        auto pTransition = create_transition_producer(GetChannel()->get_video_format_desc().field_mode, pFP, transition);\r
 \r
        try\r
index a06fb8ab2342fc77f90f181654433d72cc383b28..0884567ab60c4c5ff93e02a87ca2745e9aee2bb5 100644 (file)
@@ -1,10 +1,10 @@
 <?xml version="1.0" encoding="utf-8"?>\r
 <configuration>\r
   <paths>\r
-    <media-path>L:\casparcg\_media\</media-path>\r
+    <media-path>C:\casparmedia\_media\</media-path>\r
     <log-path>L:\casparcg\_log\</log-path>\r
     <data-path>L:\casparcg\_data\</data-path>\r
-    <template-path>L:\casparcg\_templates\</template-path>\r
+    <template-path>C:\casparmedia\_templates\</template-path>\r
   </paths>\r
   <blend-modes>true</blend-modes>\r
   <auto-transcode>true</auto-transcode>\r
@@ -13,7 +13,7 @@
     <channel>\r
       <video-mode>PAL</video-mode>\r
       <consumers>\r
-        <decklink></decklink>\r
+        <screen></screen>\r
       </consumers>\r
     </channel>\r
   </channels>\r