X-Git-Url: http://git.cinelerra-gg.org/git/?a=blobdiff_plain;f=cinelerra-5.1%2Fcinelerra%2Fplayback3d.h;h=feca07092feacaf437f5cdcd23d8ccafbaa3c619;hb=5ac2037d8e5ab71a1915389cd08b458cfb60d64f;hp=314f392a30c19ab976b6726f2d5c3d597364a11b;hpb=af44bff549c39ac8bb6e42a791e7a211e1013526;p=goodguy%2Fhistory.git diff --git a/cinelerra-5.1/cinelerra/playback3d.h b/cinelerra-5.1/cinelerra/playback3d.h index 314f392a..feca0709 100644 --- a/cinelerra-5.1/cinelerra/playback3d.h +++ b/cinelerra-5.1/cinelerra/playback3d.h @@ -42,30 +42,38 @@ // use static presets YUV in bccolors.h #define BC_GL_MATRIX(shader, mat) \ - glUniformMatrix3fv(glGetUniformLocation(shader, #mat), 1, 0, YUV::mat) + glUniformMatrix3fv(glGetUniformLocation(shader, #mat), 1, 1, YUV::mat) +#define BC_GL_VECTOR(shader, vec) \ + glUniform3fv(glGetUniformLocation(shader, #vec), 1, YUV::vec) -#define BC_GL_YMINF(shader,mat) \ - glUniform1f(glGetUniformLocation(shader, "yminf"), YUV::mat[9]) +#define BC_GL_YMINF(shader) \ + glUniform1f(glGetUniformLocation(shader, "yminf"), YUV::yuv.get_yminf()) #define BC_GL_RGB_TO_YUV(shader) do { \ BC_GL_MATRIX(shader, rgb_to_yuv_matrix); \ - BC_GL_YMINF(shader, rgb_to_yuv_matrix); \ + BC_GL_YMINF(shader); \ +} while(0) + +#define BC_GL_RGB_TO_Y(shader) do { \ + BC_GL_VECTOR(shader, rgb_to_y_vector); \ + BC_GL_YMINF(shader); \ } while(0) #define BC_GL_YUV_TO_RGB(shader) do { \ BC_GL_MATRIX(shader, yuv_to_rgb_matrix); \ - BC_GL_YMINF(shader, yuv_to_rgb_matrix); \ + BC_GL_YMINF(shader); \ } while(0) #define BC_GL_COLORS(shader) do { \ BC_GL_MATRIX(shader, yuv_to_rgb_matrix); \ BC_GL_MATRIX(shader, rgb_to_yuv_matrix); \ - BC_GL_YMINF(shader, rgb_to_yuv_matrix); \ + BC_GL_YMINF(shader); \ } while(0) #define bc_gl_yuv_to_rgb "uniform mat3 yuv_to_rgb_matrix;\n" #define bc_gl_rgb_to_yuv "uniform mat3 rgb_to_yuv_matrix;\n" +#define bc_gl_rgb_to_y "uniform vec3 rgb_to_y_vector;\n" #define bc_gl_yminf "uniform float yminf;\n" #define bc_gl_colors bc_gl_yuv_to_rgb bc_gl_rgb_to_yuv bc_gl_yminf @@ -319,7 +327,7 @@ private: // Called by write_buffer and clear_frame to initialize OpenGL flags void init_frame(Playback3DCommand *command); void write_buffer_sync(Playback3DCommand *command); - void draw_output(Playback3DCommand *command); + void draw_output(Playback3DCommand *command, int flip_y); void clear_output_sync(Playback3DCommand *command); void clear_input_sync(Playback3DCommand *command); void overlay_sync(Playback3DCommand *command);