]> git.sesse.net Git - casparcg/commitdiff
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 8 Mar 2012 16:10:08 +0000 (16:10 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Thu, 8 Mar 2012 16:10:08 +0000 (16:10 +0000)
core/producer/layer.cpp
core/producer/layer.h
core/producer/stage.cpp
core/producer/stage.h
protocol/amcp/AMCPCommandsImpl.cpp

index c4004c4c5a5ac20f9e31ed1fc147c19f5f39047c..aee50f441c3ff2b3502a68362ac905e354cce15d 100644 (file)
@@ -69,7 +69,7 @@ public:
                is_paused_ = false;\r
        }\r
 \r
-       void load(spl::shared_ptr<frame_producer> producer, const boost::optional<int32_t>& auto_play_delta)\r
+       void load(spl::shared_ptr<frame_producer> producer, bool preview, const boost::optional<int32_t>& auto_play_delta)\r
        {               \r
                background_->unsubscribe(background_event_subject_);\r
                background_ = std::move(producer);\r
@@ -77,6 +77,13 @@ public:
 \r
                auto_play_delta_ = auto_play_delta;\r
 \r
+               if(preview)\r
+               {\r
+                       play();\r
+                       foreground_->receive(0);\r
+                       pause();\r
+               }\r
+\r
                if(auto_play_delta_ && foreground_ == frame_producer::empty())\r
                        play();\r
        }\r
@@ -191,7 +198,7 @@ void layer::swap(layer& other)
 {      \r
        impl_.swap(other.impl_);\r
 }\r
-void layer::load(spl::shared_ptr<frame_producer> frame_producer, const boost::optional<int32_t>& auto_play_delta){return impl_->load(std::move(frame_producer), auto_play_delta);}     \r
+void layer::load(spl::shared_ptr<frame_producer> frame_producer, bool preview, const boost::optional<int32_t>& auto_play_delta){return impl_->load(std::move(frame_producer), preview, auto_play_delta);}      \r
 void layer::play(){impl_->play();}\r
 void layer::pause(){impl_->pause();}\r
 void layer::stop(){impl_->stop();}\r
index 58768ba0f0bdc7b3d04bfdb96be0e357a09a096c..4eac589b19187f7a89f1cc2b92cf5a794a72c1c0 100644 (file)
@@ -55,7 +55,7 @@ public:
 \r
        void swap(layer& other);  \r
                \r
-       void load(spl::shared_ptr<class frame_producer> producer, const boost::optional<int32_t>& auto_play_delta = nullptr); \r
+       void load(spl::shared_ptr<class frame_producer> producer, bool preview, const boost::optional<int32_t>& auto_play_delta = nullptr); \r
        void play(); \r
        void pause(); \r
        void stop(); \r
index 7b410513676179d566e1ae3ef18776333e168de8..66df2e68505f5a6cfde73d6a4883ade6f68b8b17 100644 (file)
@@ -177,11 +177,11 @@ public:
                }, task_priority::high_priority);\r
        }\r
                \r
-       void load(int index, const spl::shared_ptr<frame_producer>& producer, const boost::optional<int32_t>& auto_play_delta)\r
+       void load(int index, const spl::shared_ptr<frame_producer>& producer, bool preview, const boost::optional<int32_t>& auto_play_delta)\r
        {\r
                executor_.begin_invoke([=]\r
                {\r
-                       get_layer(index).load(producer, auto_play_delta);                       \r
+                       get_layer(index).load(producer, preview, auto_play_delta);                      \r
                }, task_priority::high_priority);\r
        }\r
 \r
@@ -335,7 +335,7 @@ void stage::apply_transforms(const std::vector<stage::transform_tuple_t>& transf
 void stage::apply_transform(int index, const std::function<core::frame_transform(core::frame_transform)>& transform, unsigned int mix_duration, const tweener& tween){impl_->apply_transform(index, transform, mix_duration, tween);}\r
 void stage::clear_transforms(int index){impl_->clear_transforms(index);}\r
 void stage::clear_transforms(){impl_->clear_transforms();}\r
-void stage::load(int index, const spl::shared_ptr<frame_producer>& producer, const boost::optional<int32_t>& auto_play_delta){impl_->load(index, producer, auto_play_delta);}\r
+void stage::load(int index, const spl::shared_ptr<frame_producer>& producer, bool preview, const boost::optional<int32_t>& auto_play_delta){impl_->load(index, producer, preview, auto_play_delta);}\r
 void stage::pause(int index){impl_->pause(index);}\r
 void stage::play(int index){impl_->play(index);}\r
 void stage::stop(int index){impl_->stop(index);}\r
index 51486f897a9a5aa23ea4d8d2f2a9257785163807..6c50ac614d8435c0b6c613b2029770c8eb71e5aa 100644 (file)
@@ -65,7 +65,7 @@ public:
        void clear_transforms(int index);\r
        void clear_transforms();\r
                                \r
-       void load(int index, const spl::shared_ptr<class frame_producer>& producer, const boost::optional<int32_t>& auto_play_delta = nullptr);\r
+       void load(int index, const spl::shared_ptr<class frame_producer>& producer, bool preview = false, const boost::optional<int32_t>& auto_play_delta = nullptr);\r
        void pause(int index);\r
        void play(int index);\r
        void stop(int index);\r
index 2afebb5873ca1a8ac7c4a3491691ceeb3689f661..4807562bc4028f93abfc64ec5011cfe50788dc50 100644 (file)
@@ -742,9 +742,9 @@ bool LoadbgCommand::DoExecute()
 \r
                auto pFP2 = create_transition_producer(GetChannel()->video_format_desc().field_mode, pFP, transitionInfo);\r
                if(auto_play)\r
-                       GetChannel()->stage().load(GetLayerIndex(), pFP2, transitionInfo.duration); // TODO: LOOP\r
+                       GetChannel()->stage().load(GetLayerIndex(), pFP2, false, transitionInfo.duration); // TODO: LOOP\r
                else\r
-                       GetChannel()->stage().load(GetLayerIndex(), pFP2); // TODO: LOOP\r
+                       GetChannel()->stage().load(GetLayerIndex(), pFP2, false); // TODO: LOOP\r
        \r
                SetReplyString(TEXT("202 LOADBG OK\r\n"));\r
 \r