Kaynağa Gözat

(#88) Add messages limit to video params

rexim 5 yıl önce
ebeveyn
işleme
90c13132fc
4 değiştirilmiş dosya ile 18 ekleme ve 10 silme
  1. 2 3
      src/vodus_main.cpp
  2. 9 3
      src/vodus_video_params.cpp
  3. 1 0
      src/vodus_video_params.hpp
  4. 6 4
      video.params

+ 2 - 3
src/vodus_main.cpp

@@ -452,7 +452,6 @@ int main_(int argc, char *argv[])
 {
     const char *log_filepath = nullptr;
     const char *output_filepath = nullptr;
-    size_t messages_limit = VODUS_MESSAGES_CAPACITY;
 
     Video_Params params = default_video_params();
 
@@ -517,7 +516,7 @@ int main_(int argc, char *argv[])
         } else if (arg == "--output"_sv || arg == "-o"_sv) {
             CSTR_PARAMETER(output_filepath);
         } else if (arg == "--limit"_sv) {
-            INTEGER_PARAMETER(size_t, messages_limit);
+            INTEGER_PARAMETER(size_t, params.messages_limit);
         } else if (arg == "--width"_sv) {
             INTEGER_PARAMETER(size_t, params.width);
         } else if (arg == "--height"_sv) {
@@ -676,7 +675,7 @@ int main_(int argc, char *argv[])
         messages[messages_size].message = message.trim();
         messages_size++;
     }
-    messages_size = min(messages_size, messages_limit);
+    messages_size = min(messages_size, params.messages_limit);
     std::sort(messages, messages + messages_size,
               [](const Message &m1, const Message &m2) {
                   return m1.timestamp < m2.timestamp;

+ 9 - 3
src/vodus_video_params.cpp

@@ -21,6 +21,7 @@ void print1(FILE *stream, Video_Params params)
     println(stream, "    .text_color = ", params.text_color, ",");
     println(stream, "    .bitrate = ", params.bitrate, ",");
     println(stream, "    .font = ", params.font, ",");
+    println(stream, "    .message_limit = ", params.messages_limit, ",");
     print(stream, "}");
 }
 
@@ -30,11 +31,12 @@ Video_Params default_video_params() {
     params.width             = 1920;
     params.height            = 1080;
     params.font_size         = 128;
-    params.background_color = {32, 32, 32, 255};
-    params.nickname_color   = {255, 100, 100, 255};
-    params.text_color       = {200, 200, 200, 255};
+    params.background_color  = {32, 32, 32, 255};
+    params.nickname_color    = {255, 100, 100, 255};
+    params.text_color        = {200, 200, 200, 255};
     params.bitrate           = 400'000;
     params.font              = ""_sv;
+    params.messages_limit     = VODUS_MESSAGES_CAPACITY;
     return params;
 }
 
@@ -97,6 +99,10 @@ Video_Params video_params_from_file(const char *filepath)
                     filepath, ":", line_number, ": `", value, "` is not a number");
             } else if ("font"_sv == key) {
                 result.font = value;
+            } else if ("limit"_sv == key) {
+                expect_into(
+                    result.messages_limit, value.as_integer<size_t>(),
+                    filepath, ":", line_number, ": `", value, "` is not a number");
             } else {
                 println(stderr, "Unknown Video Parameter `", key, "`");
                 abort();

+ 1 - 0
src/vodus_video_params.hpp

@@ -12,6 +12,7 @@ struct Video_Params
     Pixel32 text_color;
     int bitrate;
     String_View font;
+    size_t messages_limit;
 };
 
 void print1(FILE *stream, Video_Params params);

+ 6 - 4
video.params

@@ -1,5 +1,7 @@
-fps = 69
-width = 690
-height = 420
-background_color = FFFF00FF
 font = assets/ComicNeue_Bold.otf
+font_size = 46
+fps = 30
+width = 704
+height = 576
+limit = 20
+bitrate = 6000000