]> git.sesse.net Git - casparcg/blobdiff - modules/ffmpeg/producer/ffmpeg_producer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / modules / ffmpeg / producer / ffmpeg_producer.cpp
index 919011fc208e9eb5bfb4f9a0a4cec86a188a0e0c..68e358b562069793dcf29996af140d6641f02d0e 100644 (file)
@@ -83,6 +83,8 @@ struct ffmpeg_producer : public core::frame_producer
        const uint32_t                                                                                          length_;\r
                \r
        int64_t                                                                                                         frame_number_;\r
+\r
+       spl::shared_ptr<core::draw_frame>                                                       last_frame_;\r
        \r
 public:\r
        explicit ffmpeg_producer(const spl::shared_ptr<core::frame_factory>& frame_factory, const std::wstring& filename, const std::wstring& filter, bool loop, uint32_t start, uint32_t length) \r
@@ -94,6 +96,7 @@ public:
                , start_(start)\r
                , length_(length)\r
                , frame_number_(0)\r
+               , last_frame_(core::draw_frame::empty())\r
        {\r
                graph_->set_color("frame-time", diagnostics::color(0.1f, 1.0f, 0.1f));\r
                graph_->set_color("underflow", diagnostics::color(0.6f, 0.3f, 0.9f));   \r
@@ -166,9 +169,17 @@ public:
                ++frame_number_;\r
 \r
                graph_->set_text(print());\r
+               \r
+               if(frame != core::draw_frame::late())\r
+                       last_frame_ = spl::make_shared_ptr(frame);\r
 \r
                return spl::make_shared_ptr(frame);\r
        }\r
+\r
+       virtual spl::shared_ptr<core::draw_frame> last_frame() const override\r
+       {\r
+               return core::draw_frame::still(last_frame_);\r
+       }\r
        \r
        virtual uint32_t nb_frames() const override\r
        {\r