From: Steinar H. Gunderson Date: Fri, 17 Mar 2017 18:59:42 +0000 (+0100) Subject: Fix timecode rendering for 10-bit output. X-Git-Tag: 1.5.0~6 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=d19f8f6618e639fef7ba630c7e63fb4bab87f857;p=nageru Fix timecode rendering for 10-bit output. --- diff --git a/timecode_renderer.cpp b/timecode_renderer.cpp index 218120e..b70904a 100644 --- a/timecode_renderer.cpp +++ b/timecode_renderer.cpp @@ -13,6 +13,8 @@ #include #include +#include "flags.h" + using namespace std; using namespace movit; @@ -44,11 +46,19 @@ TimecodeRenderer::TimecodeRenderer(movit::ResourcePool *resource_pool, unsigned "out vec4 Y, CbCr, RGBA; \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. - " Y = gray.rrra; \n" - " CbCr = vec4(128.0/255.0, 128.0/255.0, 0.0, 1.0); \n" - "} \n"; + " RGBA = gray.rrra; \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. + " Y = gray.rrra; \n" + " 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. + " Y = gray.rrra; \n" + " CbCr = vec4(128.0/255.0, 128.0/255.0, 0.0, 1.0); \n"; + } + frag_shader += "} \n"; vector frag_shader_outputs; program_num = resource_pool->compile_glsl_program(vert_shader, frag_shader, frag_shader_outputs);