]> git.sesse.net Git - casparcg/blobdiff - core/video_format.cpp
Added boost::rational framerate in video_format_desc for convenience.
[casparcg] / core / video_format.cpp
index 792afb4623aeef64da6c22a2003c4af858a1a2bd..30db1e3fc259b1896e458c68c5ceb0a9f9c566e1 100644 (file)
 namespace caspar { namespace core {
        
        const std::vector<video_format_desc> format_descs = {
-               { video_format::pal,          720,  576,  1024, 576,  field_mode::upper,       25,    1,    L"PAL",          { 1920                         } },
+               { video_format::pal,          720,  576,  1024, 576,  field_mode::upper,       25000, 1000, L"PAL",          { 1920                         } },
                { video_format::ntsc,         720,  486,  720,  540,  field_mode::lower,       30000, 1001, L"NTSC",         { 1602, 1601, 1602, 1601, 1602 } },
-               { video_format::x576p2500,    720,  576,  1024, 576,  field_mode::progressive, 25,    1,    L"576p2500",     { 1920                         } },
+               { video_format::x576p2500,    720,  576,  1024, 576,  field_mode::progressive, 25000, 1000, L"576p2500",     { 1920                         } },
                { video_format::x720p2398,    1280, 720,  1280, 720,  field_mode::progressive, 24000, 1001, L"720p2398",     { 2002                         } },
-               { video_format::x720p2400,    1280, 720,  1280, 720,  field_mode::progressive, 24,    1,    L"720p2400",     { 2000                         } },
-               { video_format::x720p2500,    1280, 720,  1280, 720,  field_mode::progressive, 25,    1,    L"720p2500",     { 1920                         } },
-               { video_format::x720p5000,    1280, 720,  1280, 720,  field_mode::progressive, 50,    1,    L"720p5000",     { 960                          } },
+               { video_format::x720p2400,    1280, 720,  1280, 720,  field_mode::progressive, 24000, 1000, L"720p2400",     { 2000                         } },
+               { video_format::x720p2500,    1280, 720,  1280, 720,  field_mode::progressive, 25000, 1000, L"720p2500",     { 1920                         } },
+               { video_format::x720p5000,    1280, 720,  1280, 720,  field_mode::progressive, 50000, 1000, L"720p5000",     { 960                          } },
                { video_format::x720p2997,    1280, 720,  1280, 720,  field_mode::progressive, 30000, 1001, L"720p2997",     { 1602, 1601, 1602, 1601, 1602 } },
                { video_format::x720p5994,    1280, 720,  1280, 720,  field_mode::progressive, 60000, 1001, L"720p5994",     { 801,  800,  801,  801,  801  } },
-               { video_format::x720p3000,    1280, 720,  1280, 720,  field_mode::progressive, 30,    1,    L"720p3000",     { 1600                         } },
-               { video_format::x720p6000,    1280, 720,  1280, 720,  field_mode::progressive, 60,    1,    L"720p6000",     { 800                          } },
+               { video_format::x720p3000,    1280, 720,  1280, 720,  field_mode::progressive, 30000, 1000, L"720p3000",     { 1600                         } },
+               { video_format::x720p6000,    1280, 720,  1280, 720,  field_mode::progressive, 60000, 1000, L"720p6000",     { 800                          } },
                { video_format::x1080p2398,   1920, 1080, 1920, 1080, field_mode::progressive, 24000, 1001, L"1080p2398",    { 2002                         } },
-               { video_format::x1080p2400,   1920, 1080, 1920, 1080, field_mode::progressive, 24,    1,    L"1080p2400",    { 2000                         } },
-               { video_format::x1080i5000,   1920, 1080, 1920, 1080, field_mode::upper,       25,    1,    L"1080i5000",    { 1920                         } },
+               { video_format::x1080p2400,   1920, 1080, 1920, 1080, field_mode::progressive, 24000, 1000, L"1080p2400",    { 2000                         } },
+               { video_format::x1080i5000,   1920, 1080, 1920, 1080, field_mode::upper,       25000, 1000, L"1080i5000",    { 1920                         } },
                { video_format::x1080i5994,   1920, 1080, 1920, 1080, field_mode::upper,       30000, 1001, L"1080i5994",    { 1602, 1601, 1602, 1601, 1602 } },
-               { video_format::x1080i6000,   1920, 1080, 1920, 1080, field_mode::upper,       30,    1,    L"1080i6000",    { 1600                         } },
-               { video_format::x1080p2500,   1920, 1080, 1920, 1080, field_mode::progressive, 25,    1,    L"1080p2500",    { 1920                         } },
+               { video_format::x1080i6000,   1920, 1080, 1920, 1080, field_mode::upper,       30000, 1000, L"1080i6000",    { 1600                         } },
+               { video_format::x1080p2500,   1920, 1080, 1920, 1080, field_mode::progressive, 25000, 1000, L"1080p2500",    { 1920                         } },
                { video_format::x1080p2997,   1920, 1080, 1920, 1080, field_mode::progressive, 30000, 1001, L"1080p2997",    { 1602, 1601, 1602, 1601, 1602 } },
-               { video_format::x1080p3000,   1920, 1080, 1920, 1080, field_mode::progressive, 30,    1,    L"1080p3000",    { 1600                         } },
-               { video_format::x1080p5000,   1920, 1080, 1920, 1080, field_mode::progressive, 50,    1,    L"1080p5000",    { 960                          } },
+               { video_format::x1080p3000,   1920, 1080, 1920, 1080, field_mode::progressive, 30000, 1000, L"1080p3000",    { 1600                         } },
+               { video_format::x1080p5000,   1920, 1080, 1920, 1080, field_mode::progressive, 50000, 1000, L"1080p5000",    { 960                          } },
                { video_format::x1080p5994,   1920, 1080, 1920, 1080, field_mode::progressive, 60000, 1001, L"1080p5994",    { 801,  800,  801,  801,  801  } },
-               { video_format::x1080p6000,   1920, 1080, 1920, 1080, field_mode::progressive, 60,    1,    L"1080p6000",    { 800                          } },
+               { video_format::x1080p6000,   1920, 1080, 1920, 1080, field_mode::progressive, 60000, 1000, L"1080p6000",    { 800                          } },
                { video_format::x1556p2398,   2048, 1556, 2048, 1556, field_mode::progressive, 24000, 1001, L"1556p2398",    { 2002                         } },
-               { video_format::x1556p2400,   2048, 1556, 2048, 1556, field_mode::progressive, 24,    1,    L"1556p2400",    { 2000                         } },
-               { video_format::x1556p2500,   2048, 1556, 2048, 1556, field_mode::progressive, 25,    1,    L"1556p2500",    { 1920                         } },
+               { video_format::x1556p2400,   2048, 1556, 2048, 1556, field_mode::progressive, 24000, 1000, L"1556p2400",    { 2000                         } },
+               { video_format::x1556p2500,   2048, 1556, 2048, 1556, field_mode::progressive, 25000, 1000, L"1556p2500",    { 1920                         } },
                { video_format::dci1080p2398, 2048, 1080, 2048, 1080, field_mode::progressive, 24000, 1001, L"dci1080p2398", { 2002                         } },
-               { video_format::dci1080p2400, 2048, 1080, 2048, 1080, field_mode::progressive, 24,    1,    L"dci1080p2400", { 2000                         } },
-               { video_format::dci1080p2500, 2048, 1080, 2048, 1080, field_mode::progressive, 25,    1,    L"dci1080p2500", { 1920                         } },
+               { video_format::dci1080p2400, 2048, 1080, 2048, 1080, field_mode::progressive, 24000, 1000, L"dci1080p2400", { 2000                         } },
+               { video_format::dci1080p2500, 2048, 1080, 2048, 1080, field_mode::progressive, 25000, 1000, L"dci1080p2500", { 1920                         } },
                { video_format::x2160p2398,   3840, 2160, 3840, 2160, field_mode::progressive, 24000, 1001, L"2160p2398",    { 2002                         } },
-               { video_format::x2160p2400,   3840, 2160, 3840, 2160, field_mode::progressive, 24,    1,    L"2160p2400",    { 2000                         } },
-               { video_format::x2160p2500,   3840, 2160, 3840, 2160, field_mode::progressive, 25,    1,    L"2160p2500",    { 1920                         } },
+               { video_format::x2160p2400,   3840, 2160, 3840, 2160, field_mode::progressive, 24000, 1000, L"2160p2400",    { 2000                         } },
+               { video_format::x2160p2500,   3840, 2160, 3840, 2160, field_mode::progressive, 25000, 1000, L"2160p2500",    { 1920                         } },
                { video_format::x2160p2997,   3840, 2160, 3840, 2160, field_mode::progressive, 30000, 1001, L"2160p2997",    { 1602, 1601, 1602, 1601, 1602 } },
-               { video_format::x2160p3000,   3840, 2160, 3840, 2160, field_mode::progressive, 30,    1,    L"2160p3000",    { 1600                         } },
+               { video_format::x2160p3000,   3840, 2160, 3840, 2160, field_mode::progressive, 30000, 1000, L"2160p3000",    { 1600                         } },
                { video_format::dci2160p2398, 4096, 2160, 4096, 2160, field_mode::progressive, 24000, 1001, L"dci2160p2398", { 2002                         } },
-               { video_format::dci2160p2400, 4096, 2160, 4096, 2160, field_mode::progressive, 24,    1,    L"dci2160p2400", { 2000                         } },
-               { video_format::dci2160p2500, 4096, 2160, 4096, 2160, field_mode::progressive, 25,    1,    L"dci2160p2500", { 1920                         } },
+               { video_format::dci2160p2400, 4096, 2160, 4096, 2160, field_mode::progressive, 24000, 1000, L"dci2160p2400", { 2000                         } },
+               { video_format::dci2160p2500, 4096, 2160, 4096, 2160, field_mode::progressive, 25000, 1000, L"dci2160p2500", { 1920                         } },
                { video_format::invalid,      0,    0,    0,    0,    field_mode::progressive, 1,     1,    L"invalid",      { 1                            } }
        };
 
@@ -85,6 +85,7 @@ video_format_desc::video_format_desc(
        , square_height(square_height)
        , field_mode(field_mode)
        , fps(static_cast<double>(time_scale) / static_cast<double>(duration))
+       , framerate(time_scale, duration)
        , time_scale(time_scale)
        , duration(duration)
        , field_count(field_mode == core::field_mode::progressive ? 1 : 2)