]> 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>
Fri, 4 Mar 2011 13:51:48 +0000 (13:51 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 4 Mar 2011 13:51:48 +0000 (13:51 +0000)
common/diagnostics/graph.cpp
common/diagnostics/graph.h
core/core.vcxproj.filters
core/producer/image/image_producer.cpp
core/producer/image/image_producer.h
mixer/frame_mixer_device.cpp
shell/main.cpp

index ae9024da5cc9fd14f10912f79e4f9906bce05cae..80d135e7f4f8baf825d4ed2b34bce8903e9febec 100644 (file)
@@ -381,4 +381,131 @@ safe_ptr<graph> create_graph(const printer& parent_printer)
        return safe_ptr<graph>(new graph(parent_printer));\r
 }\r
 \r
+\r
+//namespace v2\r
+//{    \r
+//     \r
+//struct line::implementation\r
+//{\r
+//     std::wstring name_;\r
+//     boost::circular_buffer<data> ticks_;\r
+//\r
+//     implementation(const std::wstring& name) \r
+//             : name_(name)\r
+//             , ticks_(1024){}\r
+//     \r
+//     void update_value(float value)\r
+//     {\r
+//             ticks_.push_back();\r
+//             ticks_.back().value = value;\r
+//     }\r
+//\r
+//     void set_value(float value)\r
+//     {\r
+//             ticks_.clear();\r
+//             update_value(value);\r
+//     }\r
+//};\r
+//\r
+//line::line(){}\r
+//line::line(const std::wstring& name) : impl_(new implementation(name)){}\r
+//std::wstring line::print() const {return impl_->name_;}\r
+//void line::update_value(float value){impl_->update_value(value);}\r
+//void line::set_value(float value){impl_->set_value(value);}\r
+//boost::circular_buffer<data>& line::ticks() { return impl_->ticks_;}\r
+//\r
+//struct graph::implementation\r
+//{\r
+//     std::map<std::wstring, line> lines_;\r
+//     color                                            color_;\r
+//     printer                                          printer_;\r
+//\r
+//     implementation(const std::wstring& name) \r
+//             : printer_([=]{return name;}){}\r
+//\r
+//     implementation(const printer& parent_printer) \r
+//             : printer_(parent_printer){}\r
+//     \r
+//     void update_value(const std::wstring& name, float value)\r
+//     {\r
+//             auto it = lines_.find(name);\r
+//             if(it == lines_.end())\r
+//                     it = lines_.insert(std::make_pair(name, line(name))).first;\r
+//\r
+//             it->second.update_value(value);\r
+//     }\r
+//\r
+//     void set_value(const std::wstring& name, float value)\r
+//     {\r
+//             auto it = lines_.find(name);\r
+//             if(it == lines_.end())\r
+//                     it = lines_.insert(std::make_pair(name, line(name))).first;\r
+//\r
+//             it->second.set_value(value);\r
+//     }\r
+//     \r
+//     void set_color(const std::wstring& name, color color)\r
+//     {\r
+//             color_ = color;\r
+//     }\r
+//\r
+//     std::map<std::wstring, line>& get_lines()\r
+//     {\r
+//             return lines_;\r
+//     }\r
+//     \r
+//     color get_color() const\r
+//     {\r
+//             return color_;\r
+//     }\r
+//\r
+//     std::wstring print() const\r
+//     {\r
+//             return printer_ ? printer_() : L"graph";\r
+//     }\r
+//};\r
+//     \r
+//graph::graph(const std::wstring& name) : impl_(new implementation(name)){}\r
+//graph::graph(const printer& parent_printer) : impl_(new implementation(parent_printer)){}\r
+//void graph::update_value(const std::wstring& name, float value){impl_->update_value(name, value);}\r
+//void graph::set_value(const std::wstring& name, float value){impl_->set_value(name, value);}\r
+//void graph::set_color(const std::wstring& name, color c){impl_->set_color(name, c);}\r
+//color graph::get_color() const {return impl_->get_color();}\r
+//std::wstring graph::print() const {return impl_->print();}\r
+//\r
+//safe_ptr<graph> graph::clone() const \r
+//{\r
+//     safe_ptr<graph> clone(new graph(std::wstring(L"")));\r
+//     clone->impl_->printer_ = impl_->printer_;\r
+//     clone->impl_->lines_ = impl_->lines_;\r
+//     clone->impl_->color_ = impl_->color_;   \r
+//}\r
+//\r
+//std::map<std::wstring, line>& graph::get_lines() {impl_->get_lines();}\r
+//\r
+//std::vector<safe_ptr<graph>> g_graphs;\r
+//\r
+//safe_ptr<graph> create_graph(const std::string& name)\r
+//{\r
+//     g_graphs.push_back(make_safe<graph>(name));\r
+//     return g_graphs.back();\r
+//}\r
+//\r
+//safe_ptr<graph> create_graph(const printer& parent_printer)\r
+//{\r
+//     g_graphs.push_back(make_safe<graph>(parent_printer));\r
+//     return g_graphs.back();\r
+//}\r
+//\r
+//static std::vector<safe_ptr<graph>> get_all_graphs()\r
+//{\r
+//     std::vector<safe_ptr<graph>> graphs;\r
+//     BOOST_FOREACH(auto& graph, g_graphs)\r
+//             graphs.push_back(graph->clone());\r
+//\r
+//     return graphs;\r
+//}\r
+//\r
+//}\r
+\r
 }}
\ No newline at end of file
index 08590f67f03fab936cb000328f2457abb59d0003..dc8aac1e64fb34d077cf6f2a9656057e9baeb302 100644 (file)
@@ -5,6 +5,11 @@
 #include "../utility/printer.h"\r
 \r
 #include <string>\r
+#include <vector>\r
+#include <map>\r
+\r
+#include <boost/range/iterator_range.hpp>\r
+#include <boost/circular_buffer.hpp>\r
 \r
 namespace caspar { namespace diagnostics {\r
        \r
@@ -42,4 +47,59 @@ private:
 safe_ptr<graph> create_graph(const std::string& name);\r
 safe_ptr<graph> create_graph(const printer& parent_printer);\r
        \r
+//namespace v2\r
+//{\r
+//     \r
+//     struct data\r
+//     {\r
+//             float value;\r
+//     };\r
+//\r
+//     class line\r
+//     {\r
+//     public:\r
+//             line();\r
+//             line(const std::wstring& name);\r
+//             std::wstring print() const;\r
+//             void update_value(float value);\r
+//             void set_value(float value);\r
+//             void set_tag(const std::wstring& tag);\r
+//\r
+//             boost::circular_buffer<data>& ticks();\r
+//     private:\r
+//             struct implementation;\r
+//             std::shared_ptr<implementation> impl_;\r
+//     };\r
+//     \r
+//     class graph;\r
+//\r
+//\r
+//     class graph\r
+//     {\r
+//     public:\r
+//             graph(const std::wstring& name);\r
+//             graph(const printer& parent_printer);\r
+//\r
+//             void update_value(const std::wstring& name, float value);\r
+//             void set_value(const std::wstring& name, float value);\r
+//\r
+//             void set_guide(const std::wstring& name, float value);\r
+//             void set_color(const std::wstring& name, color c);\r
+//\r
+//             color get_color() const;\r
+//             std::map<std::wstring, line>& get_lines();\r
+//\r
+//             std::wstring print() const;\r
+//\r
+//             safe_ptr<graph> clone() const;\r
+//     private:\r
+//             struct implementation;\r
+//             std::shared_ptr<implementation> impl_;\r
+//     };\r
+//     \r
+//     static safe_ptr<graph> create_graph(const std::wstring& name);\r
+//     static safe_ptr<graph> create_graph(const printer& parent_printer);\r
+//     static std::vector<safe_ptr<graph>> get_all_graphs();\r
+//}\r
+\r
 }}
\ No newline at end of file
index 80d30fe7ed694f12f7c127972555c5fb13748627..868a9f5732f85bdd8ae26e35f4e631964cd991a2 100644 (file)
@@ -70,6 +70,9 @@
     <Filter Include="Source\producer\silverlight\interop">\r
       <UniqueIdentifier>{865b1b03-83c0-4c59-b896-f98cd3323c00}</UniqueIdentifier>\r
     </Filter>\r
+    <Filter Include="Source\producer\diagnostics">\r
+      <UniqueIdentifier>{fb911bef-1f24-492e-9806-827d8609b866}</UniqueIdentifier>\r
+    </Filter>\r
   </ItemGroup>\r
   <ItemGroup>\r
     <ClInclude Include="consumer\decklink\DeckLinkAPI_h.h">\r
index 6123cdcf744c85b8acb55b973e714328b9d57a07..f3cbd23e8d8d99bb77268ae6858417ff145b45a9 100644 (file)
@@ -24,12 +24,7 @@ struct image_producer : public frame_producer
        std::shared_ptr<frame_factory> frame_factory_;\r
        std::wstring filename_;\r
        safe_ptr<draw_frame> frame_;\r
-\r
-       image_producer(image_producer&& other) \r
-               : frame_factory_(std::move(other.frame_factory_))\r
-               , filename_(std::move(other.filename_))\r
-               , frame_(draw_frame::empty()){}\r
-\r
+       \r
        image_producer(const std::wstring& filename) \r
                : filename_(filename), frame_(draw_frame::empty())      {}\r
        \r
@@ -72,7 +67,7 @@ safe_ptr<frame_producer> create_image_producer(const  std::vector<std::wstring>&
        return make_safe<image_producer>(filename + L"." + *ext);\r
 }\r
 \r
-std::wstring get_fill_version()\r
+std::wstring get_image_version()\r
 {\r
        return widen(std::string(FreeImage_GetVersion()));\r
 }\r
index 6ea7e27e12b6b5c22b837951b27c539b8a54764c..35e516ed6caf777a289c25b08325f353be232bc4 100644 (file)
@@ -9,6 +9,6 @@ namespace caspar { namespace core { namespace image {
 \r
 safe_ptr<frame_producer> create_image_producer(const std::vector<std::wstring>& params);\r
 \r
-std::wstring get_fill_version();\r
+std::wstring get_image_version();\r
 \r
 }}}
\ No newline at end of file
index ed771010bdecc70c5b1b57ee14e22a15d8ca4a75..14f8baabfb76dc44ffebb1ac12fc5fe7fe54d930 100644 (file)
@@ -145,6 +145,7 @@ public:
                        graph_->update("frame-time", static_cast<float>(perf_timer_.elapsed()/format_desc_.interval*0.5));\r
 \r
                        output_(make_safe<const read_frame>(std::move(image.get()), std::move(audio)));\r
+\r
                        graph_->update("tick-time", static_cast<float>(wait_perf_timer_.elapsed()/format_desc_.interval*0.5));\r
                        wait_perf_timer_.reset();\r
 \r
@@ -158,35 +159,43 @@ public:
                return make_safe<write_frame>(desc, image_mixer_.create_buffers(desc));\r
        }\r
                                \r
-       void set_image_transform(const image_transform& transform, int)\r
+       void set_image_transform(const image_transform& transform, int mix_duration)\r
        {\r
                executor_.invoke([&]\r
                {\r
-                       root_image_transform_ = transform;\r
+                       auto src = root_image_transform_.fetch();\r
+                       auto dst = transform;\r
+                       root_image_transform_ = basic_animated_value<image_transform>(src, dst, mix_duration);\r
                });\r
        }\r
 \r
-       void set_audio_transform(const audio_transform& transform, int)\r
+       void set_audio_transform(const audio_transform& transform, int mix_duration)\r
        {\r
                executor_.invoke([&]\r
                {\r
-                       root_audio_transform_ = transform;\r
+                       auto src = root_audio_transform_.fetch();\r
+                       auto dst = transform;\r
+                       root_audio_transform_ = basic_animated_value<audio_transform>(src, dst, mix_duration);\r
                });\r
        }\r
 \r
-       void set_image_transform(int index, const image_transform& transform, int)\r
+       void set_image_transform(int index, const image_transform& transform, int mix_duration)\r
        {\r
                executor_.invoke([&]\r
                {\r
-                       image_transforms_[index] = transform;\r
+                       auto src = image_transforms_[index].fetch();\r
+                       auto dst = transform;\r
+                       image_transforms_[index] = basic_animated_value<image_transform>(src, dst, mix_duration);\r
                });\r
        }\r
 \r
-       void set_audio_transform(int index, const audio_transform& transform, int)\r
+       void set_audio_transform(int index, const audio_transform& transform, int mix_duration)\r
        {\r
                executor_.invoke([&]\r
                {\r
-                       audio_transforms_[index] = transform;\r
+                       auto src = audio_transforms_[index].fetch();\r
+                       auto dst = transform;\r
+                       audio_transforms_[index] = basic_animated_value<audio_transform>(src, dst, mix_duration);\r
                });\r
        }\r
        \r
index 7afb8d2849d01f13a380755b8583b8b5a0ef0c7c..f7497fa882c7cd310554b3cd1eb873bd665edae3 100644 (file)
@@ -119,7 +119,7 @@ void print_version()
        CASPAR_LOG(info) << L"Starting CasparCG Video and Graphics Playout Server " << env::version();\r
        CASPAR_LOG(info) << L"Flash " << flash::get_flash_version();\r
        CASPAR_LOG(info) << L"Flash-Template-Host " << flash::get_cg_version();\r
-       CASPAR_LOG(info) << L"FreeImage " << image::get_fill_version();\r
+       CASPAR_LOG(info) << L"FreeImage " << image::get_image_version();\r
        \r
        std::wstring decklink_devices;\r
        BOOST_FOREACH(auto& device, get_decklink_device_list())\r