X-Git-Url: https://git.sesse.net/?a=blobdiff_plain;f=timecode_renderer.cpp;h=d42020aa7eb0d48cb138b3d631459e00573d567c;hb=96cb6414f85e0ef4d660b7bd56267303e80fcd05;hp=218120e151971eebb75f35f9af46ef2ee147f9b9;hpb=7f726d57e80de3e18686f0e45482ca48db91e82f;p=nageru diff --git a/timecode_renderer.cpp b/timecode_renderer.cpp index 218120e..d42020a 100644 --- a/timecode_renderer.cpp +++ b/timecode_renderer.cpp @@ -13,6 +13,8 @@ #include #include +#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 frag_shader_outputs;