]> git.sesse.net Git - casparcg/commitdiff
Make ffmpeg producer send osc messages while at eof.
authorHelge Norberg <helge.norberg@gmail.com>
Wed, 5 Jun 2013 16:06:23 +0000 (18:06 +0200)
committerHelge Norberg <helge.norberg@gmail.com>
Wed, 5 Jun 2013 16:06:23 +0000 (18:06 +0200)
modules/ffmpeg/producer/ffmpeg_producer.cpp

index 57411482b5a69eabd0af45c6d2648b91974b6349..60a0d8cd60b29b237379e86d535b807c11bb86b1 100644 (file)
@@ -182,17 +182,22 @@ public:
                \r
                graph_->set_value("frame-time", frame_timer_.elapsed()*format_desc_.fps*0.5);\r
 \r
-               if(frame_buffer_.empty())\r
+               if (frame_buffer_.empty())\r
                {\r
                        if (input_.eof())\r
                        {\r
+                               send_osc();\r
                                return std::make_pair(last_frame(), -1);\r
-                       } else if (resource_type_ == FFMPEG_FILE)\r
+                       }\r
+                       else if (resource_type_ == FFMPEG_FILE)\r
                        {\r
                                graph_->set_tag("underflow");  \r
+                               send_osc();\r
                                return std::make_pair(core::basic_frame::late(), -1);     \r
-                       } else\r
+                       }\r
+                       else\r
                        {\r
+                               send_osc();\r
                                return std::make_pair(last_frame(), -1);\r
                        }\r
                }\r
@@ -206,7 +211,14 @@ public:
                graph_->set_text(print());\r
 \r
                last_frame_ = frame.first;\r
-                                       \r
+\r
+               send_osc();\r
+\r
+               return frame;\r
+       }\r
+\r
+       void send_osc()\r
+       {\r
                monitor_subject_        << core::monitor::message("/profiler/time")             % frame_timer_.elapsed() % (1.0/format_desc_.fps);                      \r
                                                                \r
                monitor_subject_        << core::monitor::message("/file/time")                 % (file_frame_number()/fps_) \r
@@ -216,8 +228,6 @@ public:
                                                        << core::monitor::message("/file/fps")                  % fps_\r
                                                        << core::monitor::message("/file/path")                 % filename_\r
                                                        << core::monitor::message("/loop")                              % input_.loop();\r
-\r
-               return frame;\r
        }\r
        \r
        safe_ptr<core::basic_frame> render_specific_frame(uint32_t file_position, int hints)\r