]> 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>
Sat, 10 Mar 2012 16:11:53 +0000 (16:11 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sat, 10 Mar 2012 16:11:53 +0000 (16:11 +0000)
accelerator/ogl/image/image_mixer.cpp
accelerator/ogl/util/buffer.cpp
accelerator/ogl/util/device.cpp

index aff13a894768ef30595a8f7f01b64136fe3e5816..24342dac5b13bd2b593fc26afb91682499c03816 100644 (file)
@@ -145,9 +145,9 @@ private:
                // Fix frames           \r
                BOOST_FOREACH(auto& item, layer.items)          \r
                {\r
-                       if(std::abs(item.transform.fill_scale[1]-1.0) > 1.0/target_texture->height() ||\r
-                          std::abs(item.transform.fill_translation[1]) > 1.0/target_texture->height())         \r
-                               CASPAR_LOG(warning) << L"[image_mixer] Frame should be deinterlaced. Send FILTER DEINTERLACE_BOB when creating producer.";      \r
+                       //if(std::abs(item.transform.fill_scale[1]-1.0) > 1.0/target_texture->height() ||\r
+                       //   std::abs(item.transform.fill_translation[1]) > 1.0/target_texture->height())               \r
+                       //      CASPAR_LOG(warning) << L"[image_mixer] Frame should be deinterlaced. Send FILTER DEINTERLACE_BOB when creating producer.";      \r
 \r
                        if(item.pix_desc.planes.at(0).height == 480) // NTSC DV\r
                        {\r
index 702ad0c1cab57849fdf25ea416efbb7c251b2213..2d6ef6704e324e765e762c68c1b068fc2f7f7e51 100644 (file)
@@ -85,7 +85,7 @@ public:
                data_ = (uint8_t*)GL2(glMapBuffer(target_, usage_ == GL_STREAM_DRAW ? GL_WRITE_ONLY : GL_READ_ONLY));  \r
 \r
                if(timer.elapsed() > 0.01)\r
-                       CASPAR_LOG(warning) << L"[buffer] Performance warning. Buffer mapping blocked more than 10ms.";\r
+                       CASPAR_LOG(warning) << L"[buffer] Performance warning. Buffer mapping blocked more than 10ms: " << timer.elapsed();\r
 \r
                GL(glBindBuffer(target_, 0));\r
                if(!data_)\r
index a54a8c9459fa9a1abb0995f55bf263d34076c3a7..109d47ef5fcaed7fe3000d067066cd98113a5e76 100644 (file)
@@ -51,6 +51,9 @@
 #include <array>\r
 #include <unordered_map>\r
 \r
+#include <asmlib.h>\r
+#include <tbb/parallel_for.h>\r
+\r
 tbb::atomic<int> g_count = tbb::atomic<int>();\r
 \r
 namespace caspar { namespace accelerator { namespace ogl {\r
@@ -227,8 +230,13 @@ struct device::impl : public std::enable_shared_from_this<impl>
        \r
        boost::unique_future<spl::shared_ptr<texture>> copy_async(const array<std::uint8_t>& source, int width, int height, int stride)\r
        {\r
-               auto buf = source.storage<spl::shared_ptr<buffer>>();\r
-                               \r
+               //auto buf = source.storage<spl::shared_ptr<buffer>>();\r
+               auto buf = create_buffer(source.size(), buffer::usage::write_only);\r
+               tbb::parallel_for(tbb::blocked_range<std::size_t>(0, source.size()), [&](const tbb::blocked_range<std::size_t>& r)\r
+               {\r
+                       A_memcpy(buf->data() + r.begin(), source.data() + r.begin(), r.size());\r
+               });\r
+\r
                return render_executor_.begin_invoke([=]() -> spl::shared_ptr<texture>\r
                {\r
                        auto texture = create_texture(width, height, stride, false);\r