]> 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>
Sun, 30 Jan 2011 11:08:05 +0000 (11:08 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Sun, 30 Jan 2011 11:08:05 +0000 (11:08 +0000)
common/diagnostics/graph.cpp
common/diagnostics/graph.h
core/consumer/bluefish/bluefish_consumer.cpp
core/consumer/ogl/ogl_consumer.cpp
core/producer/ffmpeg/ffmpeg_producer.cpp
core/producer/ffmpeg/input.cpp
core/producer/flash/flash_producer.cpp
mixer/frame_mixer_device.cpp

index a3c7cd44dc3d222d518974d4be699281379e1108..660381d405398ac537b177a8aa355054d933ee10 100644 (file)
@@ -22,7 +22,7 @@ namespace caspar { namespace diagnostics {
 struct drawable\r
 {\r
        virtual ~drawable(){}\r
-       virtual void draw(double dy, double y) = 0;\r
+       virtual void draw() = 0;\r
 };\r
 \r
 class context\r
@@ -46,21 +46,30 @@ class context
 \r
        void render()\r
        {\r
+               glLoadIdentity();\r
+               glTranslated(-1.0f, -1.0f, 0.0f);\r
+               glScaled(2.0f, 2.0f, 1.0f);\r
+\r
                float dy = 1.0/static_cast<float>(std::max<int>(5, drawables_.size()));\r
-               float y = 1.0-dy;\r
+\r
+               glTranslated(0.0f, (1.0-dy), 0.0f);\r
                for(auto it = drawables_.begin(); it != drawables_.end();)\r
                {\r
                        auto drawable = it->lock();\r
                        if(drawable)\r
                        {\r
-                               drawable->draw(dy, y);          \r
-                               y -= dy;// + 0.01;\r
+                               glPushMatrix();\r
+                                       glScaled(1.0f, dy, 1.0f);\r
+                                       drawable->draw();\r
+                               glPopMatrix();\r
+                               glTranslated(0.0f, -dy, 0.0f);\r
                                ++it;\r
                        }\r
                        else                    \r
                                it = drawables_.erase(it);                      \r
-               }\r
+               }               \r
        }       \r
+\r
        static context& get_instance()\r
        {\r
                static context impl;\r
@@ -104,25 +113,20 @@ class line
 {\r
        boost::circular_buffer<float> line_data_;\r
        std::vector<float> tick_data_;\r
-       std::array<float, 3> color_;\r
+       color c_;\r
 public:\r
        line(size_t res = 600)\r
                : line_data_(res)\r
-       {\r
-               color(1.0f, 1.0f, 1.0f);\r
-       }\r
+               , c_(1.0f, 1.0f, 1.0f){}\r
        \r
        void update(float value)\r
        {\r
                tick_data_.push_back(value);\r
        }\r
        \r
-       void color(float r, float g, float b)\r
-       {\r
-               color_[0] = r; color_[1] = g; color_[2] = b;\r
-       }\r
+       void set_color(color c){c_ = c;}\r
        \r
-       void draw(double dy, double y)\r
+       void draw()\r
        {\r
                float dx = 1.0f/static_cast<float>(line_data_.capacity());\r
                float x = static_cast<float>(line_data_.capacity()-line_data_.size())*dx;\r
@@ -139,36 +143,32 @@ public:
                }\r
                \r
                glBegin(GL_LINE_STRIP);\r
-               glColor4f(color_[0], color_[1], color_[2], 1.0f);                       \r
+               glColor4f(c_.red, c_.green, c_.blue, 1.0f);                     \r
                for(size_t n = 0; n < line_data_.size(); ++n)                           \r
-                       glVertex3f((x+n*dx)*2.0f-1.0f, (y + dy * std::max(0.05f, std::min(0.95f, line_data_[n]*0.8f + 0.1f))) * 2.0f - 1.0f, 0.0f);             \r
+                       glVertex3f(x+n*dx, std::max(0.05f, std::min(0.95f, line_data_[n]*0.8f + 0.1f)), 0.0f);          \r
                glEnd();\r
        }\r
 };\r
        \r
 class guide\r
 {\r
-       std::array<float, 3> color_;\r
+       color c_;\r
        float value_;\r
 public:\r
-       guide() : value_(0.0f)\r
-       {\r
-               color_[0] = color_[1] = color_[2] = 0.0f;\r
-       }\r
+       guide() : value_(0.0f){}\r
 \r
-       guide(float value, float r, float g, float b) : value_(value)\r
-       {\r
-               color_[0] = r; color_[1] = g; color_[2] = b;\r
-       }\r
+       guide(float value, color c) \r
+               : value_(value)\r
+               , c_(c){}\r
                        \r
-       void draw(double dy, double y)\r
+       void draw()\r
        {               \r
                glEnable(GL_LINE_STIPPLE);\r
                glLineStipple(3, 0xAAAA);\r
                glBegin(GL_LINE_STRIP);\r
-               glColor4f(color_[0], color_[1], color_[2], 1.0f);                               \r
-                       glVertex3f(0.0f*2.0f-1.0f, (y + dy * (value_ * 0.8f + 0.1f)) * 2.0f - 1.0f, 0.0f);              \r
-                       glVertex3f(1.0f*2.0f-1.0f, (y + dy * (value_ * 0.8f + 0.1f)) * 2.0f - 1.0f, 0.0f);      \r
+               glColor4f(c_.red, c_.green, c_.blue, 1.0f);                             \r
+                       glVertex3f(0.0f, value_ * 0.8f + 0.1f, 0.0f);           \r
+                       glVertex3f(1.0f, value_ * 0.8f + 0.1f, 0.0f);   \r
                glEnd();\r
                glDisable(GL_LINE_STIPPLE);\r
        }\r
@@ -181,8 +181,8 @@ struct graph::implementation : public drawable
 \r
        implementation(const std::string&)\r
        {\r
-               guides_["max"] = diagnostics::guide(1.0f, 0.4f, 0.4f, 0.4f);\r
-               guides_["min"] = diagnostics::guide(0.0f, 0.4f, 0.4f, 0.4f);\r
+               guides_["max"] = diagnostics::guide(1.0f, color(0.4f, 0.4f, 0.4f));\r
+               guides_["min"] = diagnostics::guide(0.0f, color(0.4f, 0.4f, 0.4f));\r
        }\r
 \r
        void update(const std::string& name, float value)\r
@@ -193,38 +193,38 @@ struct graph::implementation : public drawable
                });\r
        }\r
 \r
-       void color(const std::string& name, float r, float g, float b)\r
+       void set_color(const std::string& name, color c)\r
        {\r
                context::begin_invoke([=]\r
                {\r
-                       lines_[name].color(r, g, b);\r
+                       lines_[name].set_color(c);\r
                });\r
        }\r
        \r
-       void line(const std::string& name, float value, float r, float g, float b)\r
+       void add_guide(const std::string& name, float value, color c)\r
        {\r
                context::begin_invoke([=]\r
                {\r
-                       guides_[name] = diagnostics::guide(value, r, g, b);\r
+                       guides_[name] = diagnostics::guide(value, c);\r
                });\r
        }\r
 \r
 private:\r
-       void draw(double dy, double y)\r
+       void draw()\r
        {\r
                glBegin(GL_QUADS);\r
                        glColor4f(1.0f, 1.0f, 1.0f, 0.2f);      \r
-                       glVertex2f(0.0f*2.0f-1.0f, (y + dy*0.99 )*2.0f-1.0f);\r
-                       glVertex2f(1.0f*2.0f-1.0f, (y + dy*0.99 )*2.0f-1.0f);\r
-                       glVertex2f(1.0f*2.0f-1.0f, (y + dy*0.01)*2.0f-1.0f);    \r
-                       glVertex2f(0.0f*2.0f-1.0f, (y + dy*0.01)*2.0f-1.0f);    \r
+                       glVertex2f(1.0f, 0.99f);\r
+                       glVertex2f(0.0f, 0.99f);\r
+                       glVertex2f(0.0f, 0.01f);        \r
+                       glVertex2f(1.0f, 0.01f);        \r
                glEnd();\r
                \r
                for(auto it = guides_.begin(); it != guides_.end(); ++it)\r
-                       it->second.draw(dy, y);\r
+                       it->second.draw();\r
 \r
                for(auto it = lines_.begin(); it != lines_.end(); ++it)\r
-                       it->second.draw(dy, y);\r
+                       it->second.draw();\r
        }\r
 \r
        implementation(implementation&);\r
@@ -236,8 +236,8 @@ graph::graph(const std::string& name) : impl_(new implementation(name))
        context::register_drawable(impl_);\r
 }\r
 void graph::update(const std::string& name, float value){impl_->update(name, value);}\r
-void graph::color(const std::string& name, float r, float g, float b){impl_->color(name, r, g, b);}\r
-void graph::line(const std::string& name, float value, float r, float g, float b){impl_->line(name, value, r, g, b);}\r
+void graph::set_color(const std::string& name, color c){impl_->set_color(name, c);}\r
+void graph::add_guide(const std::string& name, float value, color c){impl_->add_guide(name, value, c);}\r
 \r
 safe_ptr<graph> create_graph(const std::string& name)\r
 {\r
index dfaa07803e409fcc66787b66010a93b90926c179..52bfe76074552d56c0f79b6526ec62dd1fa56580 100644 (file)
@@ -6,14 +6,28 @@
 \r
 namespace caspar { namespace diagnostics {\r
        \r
+struct color\r
+{\r
+       float red;\r
+       float green;\r
+       float blue;\r
+       float alpha;\r
+       \r
+       color(float r = 0.0f, float g = 0.0f, float b = 0.0f, float a = 1.0f)\r
+               : red(r)\r
+               , green(g)\r
+               , blue(b)\r
+               , alpha(a){}\r
+};\r
+\r
 class graph\r
 {\r
        friend safe_ptr<graph> create_graph(const std::string& name);\r
        graph(const std::string& name);\r
 public:\r
        void update(const std::string& name, float value);\r
-       void color(const std::string& name, float r, float g, float b);\r
-       void line(const std::string& name, float value, float r, float g, float b);\r
+       void add_guide(const std::string& name, float value, color c);\r
+       void set_color(const std::string& name, color c);\r
 private:\r
        struct implementation;\r
        std::shared_ptr<implementation> impl_;\r
index 89f44d7050c1072cdf881dfa26064fd2030b32b8..2c1f4be8b8809e43434ea59fed372b851a05bb30 100644 (file)
@@ -114,8 +114,8 @@ public:
                , engine_mode_(VIDEO_ENGINE_FRAMESTORE)         \r
                , embed_audio_(embed_audio)\r
        {\r
-               graph_->line("frame_time_target", 0.5, 0.5f, 0.0f, 0.0f);\r
-               graph_->color("frame_time", 1.0f, 0.0f, 0.0f);  \r
+               graph_->add_guide("frame_time_target", 0.5, diagnostics::color(0.5f, 0.0f, 0.0f));\r
+               graph_->set_color("frame_time", diagnostics::color(1.0f, 0.0f, 0.0f));  \r
        }\r
 \r
        ~implementation()\r
index 351df16494bc60715274c21b5aa24956c0fc3d20..ff286ac36f9a4de5d0a7b7f03a0b6012aab4b6eb 100644 (file)
@@ -81,8 +81,8 @@ public:
                , screen_index_(screen_index)\r
                , graph_(diagnostics::create_graph("ogl_consumer"))\r
        {               \r
-               graph_->line("frame_time_target", 0.5, 0.5f, 0.0f, 0.0f);\r
-               graph_->color("frame_time", 1.0f, 0.0f, 0.0f);\r
+               graph_->add_guide("frame_time_target", 0.5, diagnostics::color(0.5f, 0.0f, 0.0f));\r
+               graph_->set_color("frame_time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
 \r
                CASPAR_LOG(info) << "Sucessfully started ogl_consumer";\r
        }\r
index a1359f25a138a28aed0fa307be77c9d3190712ce..20892484b3232ed2bdf27f2b781176ab4c92c9a8 100644 (file)
@@ -46,8 +46,8 @@ public:
                , last_frame_(draw_frame(draw_frame::empty()))\r
                , input_(graph_, filename, loop)\r
        {\r
-               graph_->line("frame_time_target", 0.5, 0.5f, 0.0f, 0.0f);\r
-               graph_->color("frame_time",  1.0f, 0.0f, 0.0f);\r
+               graph_->add_guide("frame_time_target", 0.5, diagnostics::color(0.5f, 0.0f, 0.0f));\r
+               graph_->set_color("frame_time",  diagnostics::color(1.0f, 0.0f, 0.0f));\r
        }\r
 \r
        ~ffmpeg_producer()\r
index 48e4cd7f98ad5edf55e15c073091cb72ab16f37e..bc4c240ceae3ebd9a89735267b014ad00b1bfdf8 100644 (file)
@@ -60,7 +60,7 @@ public:
                , audio_s_index_(-1)\r
                , filename_(filename)\r
        {                       \r
-               graph_->color("input_buffer_size", 0.0f, 1.0f, 1.0f);           \r
+               graph_->set_color("input_buffer_size", diagnostics::color(0.0f, 1.0f, 1.0f));           \r
 \r
                int errn;\r
                AVFormatContext* weak_format_context_;\r
index 325b2d24084e9b646e563cf5aaf589b8d2e5ccac..09f81065ac34698ac30ed1f1c18c837955ffff4e 100644 (file)
@@ -76,8 +76,8 @@ public:
                , ax_(nullptr)\r
                , head_(draw_frame::empty())\r
        {\r
-               graph_->line("frame_time_target", 0.5f, 0.5f, 0.0f, 0.0f);\r
-               graph_->color("frame_time", 1.0f, 0.0f, 0.0f);          \r
+               graph_->add_guide("frame_time_target", 0.5f, diagnostics::color(0.5f, 0.0f, 0.0f));\r
+               graph_->set_color("frame_time", diagnostics::color(1.0f, 0.0f, 0.0f));          \r
                CASPAR_LOG(info) << print() << L" Started";\r
                \r
                if(FAILED(CComObject<caspar::flash::FlashAxContainer>::CreateInstance(&ax_)))\r
@@ -191,8 +191,8 @@ public:
                if(!boost::filesystem::exists(filename))\r
                        BOOST_THROW_EXCEPTION(file_not_found() << boost::errinfo_file_name(narrow(filename)));  \r
 \r
-               graph_->line("buffer_size_target", 0.5, 0.0f, 0.5f, 0.0f);      \r
-               graph_->color("buffer_size", 0.0f, 1.0f, 0.0f); \r
+               graph_->add_guide("buffer_size_target", 0.5, diagnostics::color(0.0f, 0.5f, 0.0f));     \r
+               graph_->set_color("buffer_size", diagnostics::color(0.0f, 1.0f, 0.0f)); \r
        }\r
 \r
        ~implementation()\r
index 259996e0eede9d73548558cf63b7cc1187b4f252..e8310d9eb18f7926a14a977458b00d850b02e21a 100644 (file)
@@ -49,10 +49,10 @@ public:
                , image_mixer_(format_desc)\r
                , output_(output)\r
        {\r
-               graph_->line("frame_time_target", 0.5f, 0.5f, 0.0f, 0.0f);\r
-               graph_->line("buffer_size_target", 1.0f, 0.5f, 0.0f, 0.0f);     \r
-               graph_->color("frame_time", 1.0f, 0.0f, 0.0f);\r
-               graph_->color("buffer_size", 0.0f, 1.0f, 0.0f);         \r
+               graph_->add_guide("frame_time_target", 0.5f, diagnostics::color(0.5f, 0.0f, 0.0f));\r
+               graph_->add_guide("buffer_size_target", 1.0f, diagnostics::color(0.5f, 0.0f, 0.0f));    \r
+               graph_->set_color("frame_time", diagnostics::color(1.0f, 0.0f, 0.0f));\r
+               graph_->set_color("buffer_size", diagnostics::color( 0.0f, 1.0f, 0.0f));                \r
                executor_.start();\r
                executor_.set_capacity(2);\r
        }\r