]> git.sesse.net Git - casparcg/commitdiff
-NTSC square should be 540 high.
authorronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 30 Dec 2011 09:02:34 +0000 (09:02 +0000)
committerronag <ronag@362d55ac-95cf-4e76-9f9a-cbaa9c17b72d>
Fri, 30 Dec 2011 09:02:34 +0000 (09:02 +0000)
-Possible to choose aspect-ratio in ogl-consumer.

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

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

index 833f491b5adb8c0e04b385d0e12049e30f3d6df1..6922aa0f95a42490c4ec448cc326f4115e3d305a 100644 (file)
@@ -51,7 +51,7 @@ namespace caspar { namespace core {
 const video_format_desc format_descs[video_format::count] =  \r
 {                                                                         \r
        DEFINE_VIDEOFORMATDESC(video_format::pal                ,720,  576,  1024, 576,  field_mode::upper,                     25,             1,               boost::assign::list_of(3840),                                                  L"PAL"), \r
-       DEFINE_VIDEOFORMATDESC(video_format::ntsc               ,720,  486,  720,  534,  field_mode::lower,                     30000,  1001,    boost::assign::list_of(3204)(3202)(3204)(3202)(3204),  L"NTSC"), \r
+       DEFINE_VIDEOFORMATDESC(video_format::ntsc               ,720,  486,  720,  540,  field_mode::lower,                     30000,  1001,    boost::assign::list_of(3204)(3202)(3204)(3202)(3204),  L"NTSC"), \r
        DEFINE_VIDEOFORMATDESC(video_format::x576p2500  ,1024, 576,  1024, 576,  field_mode::progressive,       25,             1,               boost::assign::list_of(3840),                                                  L"576p2500"),\r
        DEFINE_VIDEOFORMATDESC(video_format::x720p2500  ,1280, 720,  1280, 720,  field_mode::progressive,       25,             1,               boost::assign::list_of(3840),                                                  L"720p2500"), \r
        DEFINE_VIDEOFORMATDESC(video_format::x720p5000  ,1280, 720,  1280, 720,  field_mode::progressive,       50,             1,               boost::assign::list_of(1920),                                                  L"720p5000"), \r
index ce80c2a6a63b7a28980930ff7ebbb936e96c4ba5..7d0acb226235b3a9a8abd3daf34ac7585558ffa5 100644 (file)
@@ -80,12 +80,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
        size_t                  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
@@ -94,6 +102,7 @@ struct configuration
                , windowed(true)\r
                , auto_deinterlace(true)\r
                , key_only(false)\r
+               , aspect(aspect_invalid)\r
        {\r
        }\r
 };\r
@@ -106,7 +115,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
@@ -141,6 +150,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
@@ -526,6 +547,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 feb23bb2f2d748d823f72f19407cce2f0a027b14..be912f891e7356a4d32ef2023977662f8d258420 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
-        <bluefish>\r
+        <screen>\r
           <device>1</device>\r
-          <embedded-audio>true</embedded-audio>\r
-        </bluefish>\r
-        <bluefish>\r
-          <device>2</device>\r
-          <embedded-audio>true</embedded-audio>\r
-        </bluefish>\r
+          <aspect-ratio>4:3</aspect-ratio>\r
+        </screen>\r
       </consumers>\r
     </channel>\r
   </channels>\r
@@ -67,6 +63,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