]> git.sesse.net Git - casparcg/commitdiff
Added support for caspar-layers in the CII-protocol
authornirklas <nirklas@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 15 Feb 2012 14:29:25 +0000 (14:29 +0000)
committernirklas <nirklas@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Wed, 15 Feb 2012 14:29:25 +0000 (14:29 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/trunk@2417 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

protocol/cii/CIICommandsImpl.cpp
protocol/cii/CIICommandsImpl.h

index 3253097f754f2a39ea54521bc1a29b11d1b34d4f..2ede1c070c1cad3220d3cd958f13e86f2b0fb614 100644 (file)
@@ -30,6 +30,9 @@
 #include <algorithm>\r
 #include <modules/flash/producer/cg_producer.h>\r
 #include <boost/locale.hpp>\r
+#include <boost/algorithm/string/trim.hpp>\r
+#include <boost/algorithm/string/split.hpp>\r
+#include <boost/lexical_cast.hpp>\r
 \r
 namespace caspar { namespace protocol { namespace cii {\r
 \r
@@ -167,11 +170,11 @@ void KeydataCommand::Execute()
 \r
        //TODO: Need to be checked for validity\r
        else if(state_ == 1)\r
-               flash::get_default_cg_producer(pCIIStrategy_->GetChannel())->stop(layer_, 0);\r
+               flash::get_default_cg_producer(pCIIStrategy_->GetChannel(), casparLayer_)->stop(layer_, 0);\r
        else if(state_ == 2)\r
-               pCIIStrategy_->GetChannel()->stage()->clear(flash::cg_producer::DEFAULT_LAYER);\r
+               pCIIStrategy_->GetChannel()->stage()->clear();\r
        else if(state_ == 3)\r
-               flash::get_default_cg_producer(pCIIStrategy_->GetChannel())->play(layer_);\r
+               flash::get_default_cg_producer(pCIIStrategy_->GetChannel(), casparLayer_)->play(layer_);\r
 }\r
 \r
 void KeydataCommand::Setup(const std::vector<std::wstring>& parameters) {\r
@@ -191,8 +194,29 @@ void KeydataCommand::Setup(const std::vector<std::wstring>& parameters) {
                state_ = 0;\r
        }\r
 \r
-       if(parameters.size() > 2)       \r
-               layer_ = _ttoi(parameters[2].c_str());  \r
+       casparLayer_ = flash::cg_producer::DEFAULT_LAYER;\r
+       if(parameters.size() > 2)\r
+       {\r
+               //The layer parameter now supports casparlayers.\r
+               //the format is [CasparLayer]-[FlashLayer]\r
+               std::wstring str = boost::trim_copy(parameters[2]);\r
+               std::vector<std::wstring> split;\r
+               boost::split(split, str, boost::is_any_of("-"));\r
+               \r
+               try\r
+               {\r
+                       casparLayer_ = boost::lexical_cast<int>(split[0]);\r
+\r
+                       if(split.size() > 1)\r
+                               layer_ = boost::lexical_cast<int>(split[1]);\r
+               }\r
+               catch(...)\r
+               { \r
+                       casparLayer_ = flash::cg_producer::DEFAULT_LAYER;\r
+                       layer_ = 0;\r
+               }\r
+       }\r
+\r
 \r
        if(parameters[1].at(0) == 27)   //NEPTUNE:      Y\<27>\X                        Stop layer X.\r
                state_ = 1;\r
index 166fff5dca10d6022c50d185fb660dcaee1e5738..f1fd1e83a3127056ddae1352c71ece36c83d070e 100644 (file)
@@ -114,7 +114,7 @@ private:
 class KeydataCommand : public ICIICommand\r
 {\r
 public:\r
-       KeydataCommand(CIIProtocolStrategy* pPS) : pCIIStrategy_(pPS), state_(-1), layer_(0)\r
+       KeydataCommand(CIIProtocolStrategy* pPS) : pCIIStrategy_(pPS), state_(-1), layer_(0), casparLayer_(0)\r
        {}\r
 \r
        virtual int GetMinimumParameters() {\r
@@ -128,6 +128,7 @@ private:
        std::wstring titleName_;\r
        int state_;\r
        int layer_;\r
+       int casparLayer_;\r
 \r
        CIIProtocolStrategy* pCIIStrategy_;\r
 };\r