]> git.sesse.net Git - casparcg/blobdiff - core/video_format.h
Fix CPU hogging on EOF in ffmpeg producer.
[casparcg] / core / video_format.h
index 377309f91fdee4c6133b94da6b3a4b1458a68c10..90ff1f806ecd640a55ade16b7dc0796206e603bc 100644 (file)
 
 #pragma once
 
-#include <common/enum_class.h>
-
 #include <vector>
 #include <string>
 #include <cstddef>
 
+#include <common/enum_class.h>
+
 namespace caspar { namespace core {
        
-struct video_format_def 
+enum class video_format
 { 
-       enum type 
-       {
-               pal,            
-               ntsc,           
-               x576p2500,      
-               x720p2500,      
-               x720p5000,
-               x720p2398,
-               x720p2400,
-               x720p2997,
-               x720p5994,
-               x720p3000,
-               x720p6000,
-               x1080p2398,
-               x1080p2400,     
-               x1080i5000,     
-               x1080i5994,     
-               x1080i6000,     
-               x1080p2500,     
-               x1080p2997,     
-               x1080p3000,     
-               x1080p5000,
-               x1080p5994,
-               x1080p6000,
-               invalid,
-               count
-       };
+       pal,            
+       ntsc,           
+       x576p2500,      
+       x720p2500,      
+       x720p5000,
+       x720p2398,
+       x720p2400,
+       x720p2997,
+       x720p5994,
+       x720p3000,
+       x720p6000,
+       x1080p2398,
+       x1080p2400,     
+       x1080i5000,     
+       x1080i5994,     
+       x1080i6000,     
+       x1080p2500,     
+       x1080p2997,     
+       x1080p3000,     
+       x1080p5000,
+       x1080p5994,
+       x1080p6000,
+       x1556p2398,
+       x1556p2400,
+       x1556p2500,
+       dci1080p2398,
+       dci1080p2400,
+       dci1080p2500,
+       x2160p2398,
+       x2160p2400,
+       x2160p2500,
+       x2160p2997,
+       x2160p3000,
+       dci2160p2398,
+       dci2160p2400,
+       dci2160p2500,
+       invalid,
+       count
 };
-typedef enum_class<video_format_def> video_format;
 
-struct field_mode_def
+enum class field_mode
 {
-       enum type 
-       {
-               empty           = 0,
-               lower           = 1,
-               upper           = 2,
-               progressive = 3, // NOTE: progressive == lower | upper;
-       };
-       static_assert((lower | upper) == progressive, "");
+       empty           = 0,
+       lower           = 1,
+       upper           = 2,
+       progressive = 3 // NOTE: progressive == lower | upper;
 };
-typedef enum_class<field_mode_def> field_mode;
+ENUM_ENABLE_BITWISE(field_mode);
+//static_assert((field_mode::lower | field_mode::upper) == field_mode::progressive, "");
 
-struct video_format_desc sealed
+struct video_format_desc final
 {
        video_format            format;         
 
@@ -82,7 +89,7 @@ struct video_format_desc sealed
        int                                     height;         
        int                                     square_width;
        int                                     square_height;
-       field_mode                      field_mode;     // progressive, interlaced upper field first, interlaced lower field first
+       core::field_mode        field_mode;     // progressive, interlaced upper field first, interlaced lower field first
        double                          fps;            // actual framerate = duration/time_scale, e.g. i50 = 25 fps, p50 = 50 fps
        int                                     time_scale;
        int                                     duration;
@@ -91,8 +98,7 @@ struct video_format_desc sealed
        std::wstring            name;           // name of output format
 
        int                                     audio_sample_rate;
-       int                                     audio_channels;
-       std::vector<int>        audio_cadence;
+       std::vector<int>        audio_cadence;  // rotating optimal number of samples per frame
 
        video_format_desc(video_format format,
                                          int width,
@@ -114,4 +120,4 @@ bool operator!=(const video_format_desc& rhs, const video_format_desc& lhs);
 
 std::wostream& operator<<(std::wostream& out, const video_format_desc& format_desc);
 
-}}
\ No newline at end of file
+}}