]> git.sesse.net Git - casparcg/blobdiff - modules/image/producer/image_scroll_producer.cpp
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches...
[casparcg] / modules / image / producer / image_scroll_producer.cpp
index c722ae9b288e95dc3f7fab9b69ffdfaac834e80c..860a0391e4fb0989fdaa11c02666737cdef016ef 100644 (file)
@@ -45,7 +45,7 @@
 \r
 using namespace boost::assign;\r
 \r
-namespace caspar {\r
+namespace caspar { namespace image {\r
                \r
 struct image_scroll_producer : public core::frame_producer\r
 {      \r
@@ -84,7 +84,11 @@ struct image_scroll_producer : public core::frame_producer
                {\r
                        while(count > 0)\r
                        {\r
-                               auto frame = frame_factory->create_frame(reinterpret_cast<void*>(rand()), width_, format_desc_.height);\r
+                               core::pixel_format_desc desc;\r
+                               desc.pix_fmt = core::pixel_format::bgra;\r
+                               desc.planes.push_back(core::pixel_format_desc::plane(width_, format_desc_.height, 4));\r
+                               auto frame = frame_factory->create_frame(reinterpret_cast<void*>(rand()), desc);\r
+\r
                                if(count >= frame->image_data().size())\r
                                {       \r
                                        std::copy_n(bytes + count - frame->image_data().size(), frame->image_data().size(), frame->image_data().begin());\r
@@ -113,7 +117,10 @@ struct image_scroll_producer : public core::frame_producer
                        int i = 0;\r
                        while(count > 0)\r
                        {\r
-                               auto frame = frame_factory->create_frame(reinterpret_cast<void*>(rand()), format_desc_.width, height_);\r
+                               core::pixel_format_desc desc;\r
+                               desc.pix_fmt = core::pixel_format::bgra;\r
+                               desc.planes.push_back(core::pixel_format_desc::plane(format_desc_.width, height_, 4));\r
+                               auto frame = frame_factory->create_frame(reinterpret_cast<void*>(rand()), desc);\r
                                if(count >= frame->image_data().size())\r
                                {       \r
                                        for(size_t y = 0; y < height_; ++y)\r
@@ -152,7 +159,7 @@ struct image_scroll_producer : public core::frame_producer
        \r
        // frame_producer\r
 \r
-       virtual safe_ptr<core::basic_frame> receive(int)\r
+       virtual safe_ptr<core::basic_frame> receive(int) override\r
        {               \r
                delta_ += speed_;\r
 \r
@@ -167,7 +174,7 @@ struct image_scroll_producer : public core::frame_producer
                        for(size_t n = 0; n < frames_.size(); ++n)\r
                        {\r
                                frames_[n]->get_frame_transform().fill_translation[0] = start_offset_[0];\r
-                               frames_[n]->get_frame_transform().fill_translation[0] = start_offset_[1] -0.5*(n+1) + delta_ * 0.5/static_cast<double>(format_desc_.height);\r
+                               frames_[n]->get_frame_transform().fill_translation[1] = start_offset_[1] - (n+1) + delta_ * 0.5/static_cast<double>(format_desc_.height);\r
                        }\r
                }\r
                else\r
@@ -177,41 +184,41 @@ struct image_scroll_producer : public core::frame_producer
 \r
                        for(size_t n = 0; n < frames_.size(); ++n)\r
                        {\r
-                               frames_[n]->get_frame_transform().fill_translation[0] = start_offset_[0] -0.5*(n+1) + delta_ * 0.5/static_cast<double>(format_desc_.height);                            \r
+                               frames_[n]->get_frame_transform().fill_translation[0] = start_offset_[0] - (n+1) + delta_ * 0.5/static_cast<double>(format_desc_.width);                                \r
                                frames_[n]->get_frame_transform().fill_translation[1] = start_offset_[1];\r
                        }\r
                }\r
 \r
-               return last_frame_ = core::basic_frame(frames_);\r
+               return last_frame_ = make_safe<core::basic_frame>(frames_);\r
        }\r
 \r
-       virtual safe_ptr<core::basic_frame> last_frame() const\r
+       virtual safe_ptr<core::basic_frame> last_frame() const override\r
        {\r
                return last_frame_;\r
        }\r
                \r
-       virtual std::wstring print() const\r
+       virtual std::wstring print() const override\r
        {\r
                return L"image_scroll_producer[" + filename_ + L"]";\r
        }\r
 \r
-       virtual int64_t nb_frames() const \r
+       virtual int64_t nb_frames() const override\r
        {\r
                if(height_ > format_desc_.height)\r
                {\r
                        auto length = (height_ - format_desc_.height);\r
-                       return (length/std::abs(speed_) + length % std::abs(delta_));\r
+                       return length/std::abs(speed_);// + length % std::abs(delta_));\r
                }\r
                else\r
                {\r
                        auto length = (width_ - format_desc_.width);\r
-                       auto result = (length/std::abs(speed_) + length % std::abs(delta_));\r
+                       auto result = length/std::abs(speed_);// + length % std::abs(delta_));\r
                        return result;\r
                }\r
        }\r
 };\r
 \r
-safe_ptr<core::frame_producer> create_image_scroll_producer(const safe_ptr<core::frame_factory>& frame_factory, const std::vector<std::wstring>& params)\r
+safe_ptr<core::frame_producer> create_scroll_producer(const safe_ptr<core::frame_factory>& frame_factory, const std::vector<std::wstring>& params)\r
 {\r
        static const std::vector<std::wstring> extensions = list_of(L"png")(L"tga")(L"bmp")(L"jpg")(L"jpeg")(L"gif")(L"tiff")(L"tif")(L"jp2")(L"jpx")(L"j2k")(L"j2c");\r
        std::wstring filename = env::media_folder() + L"\\" + params[0];\r
@@ -238,5 +245,4 @@ safe_ptr<core::frame_producer> create_image_scroll_producer(const safe_ptr<core:
        return make_safe<image_scroll_producer>(frame_factory, filename + L"." + *ext, speed);\r
 }\r
 \r
-\r
-}
\ No newline at end of file
+}}
\ No newline at end of file