]> git.sesse.net Git - casparcg/commitdiff
2.0.0.2: ogl_consumer - Added support to square pixels.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 11 Mar 2011 20:15:29 +0000 (20:15 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 11 Mar 2011 20:15:29 +0000 (20:15 +0000)
git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.0.0.2@552 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

modules/ogl/consumer/ogl_consumer.cpp
shell/caspar.config

index 47b73f83c2d20c00ef6b27949cebb97b1bf1b212..8cbb6f759c45cc274deb17b0559ba8f780bcc36e 100644 (file)
@@ -67,6 +67,9 @@ struct ogl_consumer::implementation : boost::noncopyable
        safe_ptr<diagnostics::graph> graph_;\r
        timer perf_timer_;\r
 \r
+       size_t square_width_;\r
+       size_t square_height_;\r
+\r
        executor executor_;\r
 public:\r
        implementation(unsigned int screen_index, stretch stretch, bool windowed) \r
@@ -94,6 +97,20 @@ public:
                format_desc_ = format_desc;\r
                parent_printer_ = parent_printer;\r
 \r
+               square_width_ = format_desc_.width;\r
+               square_height_ = format_desc_.height;\r
+                                               \r
+               if(format_desc_.format == core::video_format::pal)\r
+               {\r
+                       square_width_ = 768;\r
+                       square_height_ = 576;\r
+               }\r
+               else if(format_desc_.format == core::video_format::ntsc)\r
+               {\r
+                       square_width_ = 720;\r
+                       square_height_ = 547;\r
+               }\r
+\r
                screen_width_ = format_desc.width;\r
                screen_height_ = format_desc.height;\r
 #ifdef _WIN32\r
@@ -118,8 +135,8 @@ public:
                if(!EnumDisplaySettings(displayDevices[screen_index_].DeviceName, ENUM_CURRENT_SETTINGS, &devmode))\r
                        BOOST_THROW_EXCEPTION(invalid_operation() << arg_name_info("screen_index") << msg_info(narrow(print()) + " EnumDisplaySettings"));\r
                \r
-               screen_width_ = windowed_ ? format_desc_.width : devmode.dmPelsWidth;\r
-               screen_height_ = windowed_ ? format_desc_.height : devmode.dmPelsHeight;\r
+               screen_width_ = windowed_ ? square_width_ : devmode.dmPelsWidth;\r
+               screen_height_ = windowed_ ? square_height_ : devmode.dmPelsHeight;\r
 #else\r
                if(!windowed)\r
                        BOOST_THROW_EXCEPTION(not_supported() << msg_info(narrow(print() + " doesn't support non-Win32 fullscreen"));\r
@@ -188,15 +205,15 @@ public:
                \r
        std::pair<float, float> None()\r
        {\r
-               float width = static_cast<float>(format_desc_.width)/static_cast<float>(screen_width_);\r
-               float height = static_cast<float>(format_desc_.height)/static_cast<float>(screen_height_);\r
+               float width = static_cast<float>(square_width_)/static_cast<float>(screen_width_);\r
+               float height = static_cast<float>(square_height_)/static_cast<float>(screen_height_);\r
 \r
                return std::make_pair(width, height);\r
        }\r
 \r
        std::pair<float, float> Uniform()\r
        {\r
-               float aspect = static_cast<float>(format_desc_.width)/static_cast<float>(format_desc_.height);\r
+               float aspect = static_cast<float>(square_width_)/static_cast<float>(square_height_);\r
                float width = std::min(1.0f, static_cast<float>(screen_height_)*aspect/static_cast<float>(screen_width_));\r
                float height = static_cast<float>(screen_width_*width)/static_cast<float>(screen_height_*aspect);\r
 \r
@@ -210,8 +227,8 @@ public:
 \r
        std::pair<float, float> UniformToFill()\r
        {\r
-               float wr = static_cast<float>(format_desc_.width)/static_cast<float>(screen_width_);\r
-               float hr = static_cast<float>(format_desc_.height)/static_cast<float>(screen_height_);\r
+               float wr = static_cast<float>(square_width_)/static_cast<float>(screen_width_);\r
+               float hr = static_cast<float>(square_height_)/static_cast<float>(screen_height_);\r
                float r_inv = 1.0f/std::min(wr, hr);\r
 \r
                float width = wr*r_inv;\r
index 60316945402a68778cabe77d8d8c0e87fea4e454..0bf5fd4e640a43e9ed794b19e44938939151bc98 100644 (file)
@@ -12,7 +12,7 @@
   </diagnostics>\r
   <channels>\r
     <channel>\r
-      <videomode>1080i5000</videomode>\r
+      <videomode>PAL</videomode>\r
       <consumers>\r
         <ogl>\r
           <device>1</device>\r