]> git.sesse.net Git - nageru/blobdiff - timecode_renderer.cpp
Fix some GCC 8 warnings.
[nageru] / timecode_renderer.cpp
index 218120e151971eebb75f35f9af46ef2ee147f9b9..a923acd4f3554d1a6d653d9e7ca045dbd24d4dd3 100644 (file)
@@ -13,6 +13,8 @@
 #include <movit/util.h>
 #include <sys/time.h>
 
+#include "flags.h"
+
 using namespace std;
 using namespace movit;
 
@@ -41,13 +43,21 @@ TimecodeRenderer::TimecodeRenderer(movit::ResourcePool *resource_pool, unsigned
                "#version 130 \n"
                "in vec2 tc0; \n"
                "uniform sampler2D tex; \n"
-               "out vec4 Y, CbCr, RGBA; \n"
+               "out vec4 Y, CbCr, YCbCr; \n"
                "void main() { \n"
-               "    vec4 gray = texture(tex, tc0); \n"
-               "    RGBA = gray.rrra; \n"
-               "    gray.r = gray.r * ((235.0-16.0)/255.0) + 16.0/255.0; \n"  // Limited-range Y'CbCr.
+               "    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";
+       } 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 +=
                "    Y = gray.rrra; \n"
-               "    CbCr = vec4(128.0/255.0, 128.0/255.0, 0.0, 1.0); \n"
+               "    YCbCr = vec4(Y.r, CbCr.r, CbCr.g, CbCr.a); \n"
                "} \n";
 
        vector<string> frag_shader_outputs;
@@ -112,7 +122,7 @@ string TimecodeRenderer::get_timecode_text(double pts, unsigned frame_num)
        unsigned stream_time_min = stream_time % 60;
        unsigned stream_time_hour = stream_time / 60;
 
-       char timecode_text[256];
+       char timecode_text[512];
        snprintf(timecode_text, sizeof(timecode_text), "Nageru - %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;