]> git.sesse.net Git - nageru/blobdiff - nageru/timecode_renderer.cpp
Include the Nageru version in the timecode display.
[nageru] / nageru / timecode_renderer.cpp
index a923acd4f3554d1a6d653d9e7ca045dbd24d4dd3..7f72d41f1c3817595dc7c62d225a7a0da279b192 100644 (file)
@@ -14,6 +14,8 @@
 #include <sys/time.h>
 
 #include "flags.h"
+#include "embedded_files.h"
+#include "shared/read_file.h"
 
 using namespace std;
 using namespace movit;
@@ -21,44 +23,13 @@ using namespace movit;
 TimecodeRenderer::TimecodeRenderer(movit::ResourcePool *resource_pool, unsigned display_width, unsigned display_height)
        : resource_pool(resource_pool), display_width(display_width), display_height(display_height), height(28)
 {
-       string vert_shader =
-               "#version 130 \n"
-               " \n"
-               "in vec2 position; \n"
-               "in vec2 texcoord; \n"
-               "out vec2 tc0; \n"
-               " \n"
-               "void main() \n"
-               "{ \n"
-               "    // The result of glOrtho(0.0, 1.0, 0.0, 1.0, 0.0, 1.0) is: \n"
-               "    // \n"
-               "    //   2.000  0.000  0.000 -1.000 \n"
-               "    //   0.000  2.000  0.000 -1.000 \n"
-               "    //   0.000  0.000 -2.000 -1.000 \n"
-               "    //   0.000  0.000  0.000  1.000 \n"
-               "    gl_Position = vec4(2.0 * position.x - 1.0, 2.0 * position.y - 1.0, -1.0, 1.0); \n"
-               "    tc0 = texcoord; \n"
-               "} \n";
-       string frag_shader =
-               "#version 130 \n"
-               "in vec2 tc0; \n"
-               "uniform sampler2D tex; \n"
-               "out vec4 Y, CbCr, YCbCr; \n"
-               "void main() { \n"
-               "    vec4 gray = texture(tex, tc0); \n";
-       if (global_flags.ten_bit_output) {
-               frag_shader +=
-                       "    gray.r = gray.r * ((940.0-16.0)/65535.0) + 16.0/65535.0; \n"  // Limited-range Y'CbCr.
-                       "    CbCr = vec4(512.0/65535.0, 512.0/65535.0, 0.0, 1.0); \n";
+       string vert_shader = read_file("timecode.vert", _binary_timecode_vert_data, _binary_timecode_vert_size);
+       string frag_shader;
+       if (global_flags.bit_depth > 8) {
+               frag_shader = read_file("timecode_10bit.frag", _binary_timecode_10bit_frag_data, _binary_timecode_10bit_frag_size);
        } else {
-               frag_shader +=
-                       "    gray.r = gray.r * ((235.0-16.0)/255.0) + 16.0/255.0; \n"  // Limited-range Y'CbCr.
-                       "    CbCr = vec4(128.0/255.0, 128.0/255.0, 0.0, 1.0); \n";
+               frag_shader = read_file("timecode.frag", _binary_timecode_frag_data, _binary_timecode_frag_size);
        }
-       frag_shader +=
-               "    Y = gray.rrra; \n"
-               "    YCbCr = vec4(Y.r, CbCr.r, CbCr.g, CbCr.a); \n"
-               "} \n";
 
        vector<string> frag_shader_outputs;
        program_num = resource_pool->compile_glsl_program(vert_shader, frag_shader, frag_shader_outputs);
@@ -123,7 +94,7 @@ string TimecodeRenderer::get_timecode_text(double pts, unsigned frame_num)
        unsigned stream_time_hour = stream_time / 60;
 
        char timecode_text[512];
-       snprintf(timecode_text, sizeof(timecode_text), "Nageru - %s.%03u UTC - Stream time %02u:%02u:%02u.%03u (frame %u)",
+       snprintf(timecode_text, sizeof(timecode_text), "Nageru " NAGERU_VERSION " - %s.%03u UTC - Stream time %02u:%02u:%02u.%03u (frame %u)",
                clock_text, msecs, stream_time_hour, stream_time_min, stream_time_sec, stream_time_ms, frame_num);
        return timecode_text;
 }
@@ -141,6 +112,7 @@ void TimecodeRenderer::render_string_to_buffer(const string &text)
 
        painter.setPen(Qt::white);
        QFont font = painter.font();
+       font.setFamily("Noto Sans");
        font.setPointSize(16);
        painter.setFont(font);