]> git.sesse.net Git - casparcg/blobdiff - core/producer/layer.cpp
2.0. auto-play: Improved and refactored.
[casparcg] / core / producer / layer.cpp
index 3e575cac2cd2545be9a6dc46aa8c56f73a9a9e7e..a3d67e5a1512eb8062dc3408cc51529df27f8739 100644 (file)
@@ -39,22 +39,23 @@ public:
                : foreground_(frame_producer::empty())\r
                , background_(frame_producer::empty())\r
                , is_paused_(false)\r
-               , auto_play_delta_(-1){}\r
+               , auto_play_delta_(-1)\r
+               , frame_number_(0){}\r
        \r
-       void pause(){is_paused_ = true;}\r
-       void resume(){is_paused_ = false;}\r
+       void pause()\r
+       {\r
+               is_paused_ = true;\r
+       }\r
+\r
+       void resume()\r
+       {\r
+               is_paused_ = false;\r
+       }\r
 \r
        void load(const safe_ptr<frame_producer>& producer, bool preview, int auto_play_delta)\r
        {               \r
-               background_     = producer;\r
-\r
-               if(auto_play_delta > -1)\r
-               {\r
-                       if(foreground_->nb_frames() > 0)\r
-                               auto_play_delta_ = auto_play_delta;\r
-                       else\r
-                               CASPAR_LOG(warning) << foreground_->print() << L" Producer in foreground does not support auto-play.";\r
-               }\r
+               background_              = producer;\r
+               auto_play_delta_ = auto_play_delta;\r
 \r
                if(preview) // Play the first frame and pause.\r
                {                       \r
@@ -62,9 +63,6 @@ public:
                        receive();\r
                        pause();\r
                }\r
-\r
-               if(auto_play_delta >= 0 && foreground_ == frame_producer::empty())\r
-                       play();\r
        }\r
        \r
        void play()\r
@@ -96,19 +94,7 @@ public:
                if(frame == core::basic_frame::late())\r
                        return foreground_->last_frame();\r
                \r
-               if(auto_play_delta_ == 0)\r
-               {\r
-                       if(frame == core::basic_frame::eof())\r
-                       {\r
-                               CASPAR_ASSERT(frames_left == 0);\r
-\r
-                               CASPAR_LOG(info) << L"Automatically playing next clip with " << auto_play_delta_ << " frames offset.";\r
-                               \r
-                               play();\r
-                               frame = receive();\r
-                       }\r
-               }\r
-               else if(auto_play_delta_ > 0)\r
+               if(auto_play_delta_ >= 0)\r
                {\r
                        if(frames_left <= 0 || frame == core::basic_frame::eof())\r
                        {\r