]> git.sesse.net Git - casparcg/commitdiff
Merged from trunk:
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 30 Dec 2011 09:18:32 +0000 (09:18 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 30 Dec 2011 09:18:32 +0000 (09:18 +0000)
r1964

---------------------
r1963
-NTSC square should be 540 high. -Possible to choose aspect-ratio in ogl-consumer.
---------------------

git-svn-id: https://casparcg.svn.sourceforge.net/svnroot/casparcg/server/branches/2.1.0@1965 362d55ac-95cf-4e76-9f9a-cbaa9c17b72d

core/video_format.cpp
modules/ogl/consumer/ogl_consumer.cpp
shell/casparcg.config

index 61f434147fc5c98c70b790a2c13cd7ee3573a860..a06d94b78c824c486e6c2fd0fc3de94571e768d8 100644 (file)
@@ -30,7 +30,7 @@ namespace caspar { namespace core {
        \r
 const std::vector<video_format_desc> format_descs = boost::assign::list_of\r
        (video_format_desc(video_format::pal,                    720,  576, 1024, 576,  field_mode::upper,                         25,     1, L"PAL",           boost::assign::list_of<int>(3840)))\r
-       (video_format_desc(video_format::ntsc,                   720,  486,  720, 534,  field_mode::lower,                      30000,  1001, L"NTSC",          boost::assign::list_of<int>(3204)(3202)(3204)(3202)(3204)))\r
+       (video_format_desc(video_format::ntsc,                   720,  486,  720, 540,  field_mode::lower,                      30000,  1001, L"NTSC",          boost::assign::list_of<int>(3204)(3202)(3204)(3202)(3204)))\r
        (video_format_desc(video_format::x576p2500,              720,  576,  720, 576,  field_mode::progressive,           25,     1, L"576p2500",      boost::assign::list_of<int>(3840)                                               ))\r
        (video_format_desc(video_format::x720p2500,             1280,  720, 1280, 720,  field_mode::progressive,           25,     1, L"720p2500",      boost::assign::list_of<int>(3840)                                               )) \r
        (video_format_desc(video_format::x720p5000,             1280,  720, 1280, 720,  field_mode::progressive,           50,     1, L"720p5000",      boost::assign::list_of<int>(1920)                                               )) \r
index 2406c62d12885cda72000bba9ea036fdf9437c44..bf2e69c801e690f72656203f69b4ab65d6c37690 100644 (file)
@@ -81,12 +81,20 @@ enum stretch
 \r
 struct configuration\r
 {\r
+       enum aspect_ratio\r
+       {\r
+               aspect_4_3 = 0,\r
+               aspect_16_9,\r
+               aspect_invalid,\r
+       };\r
+               \r
        std::wstring    name;\r
        int                     screen_index;\r
        stretch                 stretch;\r
        bool                    windowed;\r
        bool                    auto_deinterlace;\r
        bool                    key_only;\r
+       aspect_ratio    aspect; \r
 \r
        configuration()\r
                : name(L"ogl")\r
@@ -95,6 +103,7 @@ struct configuration
                , windowed(true)\r
                , auto_deinterlace(true)\r
                , key_only(false)\r
+               , aspect(aspect_invalid)\r
        {\r
        }\r
 };\r
@@ -107,7 +116,7 @@ struct ogl_consumer : boost::noncopyable
 \r
        GLuint                                  texture_;\r
        std::vector<GLuint>             pbos_;\r
-       \r
+                       \r
        float                                   width_;\r
        float                                   height_;        \r
        unsigned int                    screen_x_;\r
@@ -142,6 +151,18 @@ public:
                , square_height_(format_desc.square_height)\r
                , filter_(format_desc.field_mode == core::field_mode::progressive || !config.auto_deinterlace ? L"" : L"YADIF=0:-1", boost::assign::list_of(PIX_FMT_BGRA))\r
        {               \r
+               if(format_desc_.format == core::video_format::ntsc && config_.aspect == configuration::aspect_4_3)\r
+               {\r
+                       // Use default values which are 4:3.\r
+               }\r
+               else\r
+               {\r
+                       if(config_.aspect == configuration::aspect_16_9)\r
+                               square_width_ = (format_desc.height*16)/9;\r
+                       else if(config_.aspect == configuration::aspect_4_3)\r
+                               square_width_ = (format_desc.height*4)/3;\r
+               }\r
+\r
                frame_buffer_.set_capacity(2);\r
                \r
                graph_->set_color("tick-time", diagnostics::color(0.0f, 0.6f, 0.9f));   \r
@@ -530,6 +551,12 @@ safe_ptr<core::frame_consumer> create_consumer(const boost::property_tree::wptre
                config.stretch = stretch::uniform;\r
        else if(stretch_str == L"uniform_to_fill")\r
                config.stretch = stretch::uniform_to_fill;\r
+\r
+       auto aspect_str = ptree.get(L"aspect-ratio", L"default");\r
+       if(aspect_str == L"16:9")\r
+               config.aspect = configuration::aspect_16_9;\r
+       else if(aspect_str == L"4:3")\r
+               config.aspect = configuration::aspect_4_3;\r
        \r
        return make_safe<ogl_consumer_proxy>(config);\r
 }\r
index 9aa5e31e3c1ebb17bf036d7d9aa6fe7b59c59814..a04a777b18534eed8299144ea2648d2ee42a2e5f 100644 (file)
   <channel-grid>true</channel-grid>\r
   <channels>\r
     <channel>\r
-      <video-mode>720p5000</video-mode>\r
+      <video-mode>PAL</video-mode>\r
       <consumers>\r
-        <screen></screen>\r
-        <system-audio></system-audio>\r
+        <screen>\r
+          <device>1</device>\r
+          <aspect-ratio></aspect-ratio>\r
+        </screen>\r
       </consumers>\r
     </channel>\r
   </channels>\r
@@ -58,6 +60,7 @@
       <audio></audio>\r
       <screen>\r
         <device>[0..]</device>\r
+        <aspect-ratio>default [default|4:3|16:9]</aspect-ratio>\r
         <stretch>fill [none|fill|uniform|uniform_to_fill]</stretch>\r
         <windowed>false [true|false]</windowed>\r
         <key-only>false [true|false]</key-only>\r