vlc | branch: master | Thomas Guillem <[email protected]> | Fri Feb 3 15:00:57 2017 +0100| [1ff9b0449e9d3d5d5e29beb4460ebab5bfefff0a] | committer: Thomas Guillem
opengl: converter: merge generic and xyz12 > http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=1ff9b0449e9d3d5d5e29beb4460ebab5bfefff0a --- modules/video_output/opengl/converters.c | 105 +++++++++++++++--------------- modules/video_output/opengl/internal.h | 4 -- modules/video_output/opengl/vout_helper.c | 1 - 3 files changed, 52 insertions(+), 58 deletions(-) diff --git a/modules/video_output/opengl/converters.c b/modules/video_output/opengl/converters.c index dbf0a90..97df079 100644 --- a/modules/video_output/opengl/converters.c +++ b/modules/video_output/opengl/converters.c @@ -846,53 +846,6 @@ common_init(opengl_tex_converter_t *tc) return VLC_SUCCESS; } -GLuint -opengl_tex_converter_generic_init(const video_format_t *fmt, - opengl_tex_converter_t *tc) -{ - const vlc_chroma_description_t *desc = - vlc_fourcc_GetChromaDescription(fmt->i_chroma); - if (!desc || desc->plane_count == 0) - return 0; - - video_color_space_t space; - const vlc_fourcc_t *(*get_fallback)(vlc_fourcc_t i_fourcc); - if (vlc_fourcc_IsYUV(fmt->i_chroma)) - { - GLint max_texture_units = 0; - glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &max_texture_units); - if (max_texture_units < 3) - return 0; - - get_fallback = vlc_fourcc_GetYUVFallback; - space = fmt->space; - } - else - { - get_fallback = vlc_fourcc_GetRGBFallback; - space = COLOR_SPACE_UNDEF; - } - - const vlc_fourcc_t *list = get_fallback(fmt->i_chroma); - GLuint fragment_shader = 0; - while (*list && fragment_shader == 0) - { - fragment_shader = opengl_fragment_shader_init(tc, GL_TEXTURE_2D, *list, - space); - list++; - } - if (fragment_shader == 0) - return 0; - - if (common_init(tc) != VLC_SUCCESS) - { - tc->api->DeleteShader(fragment_shader); - return 0; - } - - return fragment_shader; -} - static int tc_xyz12_fetch_locations(opengl_tex_converter_t *tc, GLuint program) { @@ -909,13 +862,9 @@ tc_xyz12_prepare_shader(const opengl_tex_converter_t *tc, tc->api->Uniform1i(tc->uloc.Texture[0], 0); } -GLuint -opengl_tex_converter_xyz12_init(const video_format_t *fmt, - opengl_tex_converter_t *tc) +static GLuint +tc_xyz12_init(const video_format_t *fmt, opengl_tex_converter_t *tc) { - if (fmt->i_chroma != VLC_CODEC_XYZ12) - return 0; - tc->chroma = VLC_CODEC_XYZ12; tc->tex_count = 1; tc->tex_target = GL_TEXTURE_2D; @@ -971,3 +920,53 @@ opengl_tex_converter_xyz12_init(const video_format_t *fmt, tc->api->CompileShader(fragment_shader); return fragment_shader; } + +GLuint +opengl_tex_converter_generic_init(const video_format_t *fmt, + opengl_tex_converter_t *tc) +{ + const vlc_chroma_description_t *desc = + vlc_fourcc_GetChromaDescription(fmt->i_chroma); + if (!desc || desc->plane_count == 0) + return 0; + + if (fmt->i_chroma == VLC_CODEC_XYZ12) + return tc_xyz12_init(fmt, tc); + + video_color_space_t space; + const vlc_fourcc_t *(*get_fallback)(vlc_fourcc_t i_fourcc); + if (vlc_fourcc_IsYUV(fmt->i_chroma)) + { + GLint max_texture_units = 0; + glGetIntegerv(GL_MAX_TEXTURE_IMAGE_UNITS, &max_texture_units); + if (max_texture_units < 3) + return 0; + + get_fallback = vlc_fourcc_GetYUVFallback; + space = fmt->space; + } + else + { + get_fallback = vlc_fourcc_GetRGBFallback; + space = COLOR_SPACE_UNDEF; + } + + const vlc_fourcc_t *list = get_fallback(fmt->i_chroma); + GLuint fragment_shader = 0; + while (*list && fragment_shader == 0) + { + fragment_shader = opengl_fragment_shader_init(tc, GL_TEXTURE_2D, *list, + space); + list++; + } + if (fragment_shader == 0) + return 0; + + if (common_init(tc) != VLC_SUCCESS) + { + tc->api->DeleteShader(fragment_shader); + return 0; + } + + return fragment_shader; +} diff --git a/modules/video_output/opengl/internal.h b/modules/video_output/opengl/internal.h index fc1ee22..f2d5d04 100644 --- a/modules/video_output/opengl/internal.h +++ b/modules/video_output/opengl/internal.h @@ -323,10 +323,6 @@ extern GLuint opengl_tex_converter_generic_init(const video_format_t *, opengl_tex_converter_t *); -extern GLuint -opengl_tex_converter_xyz12_init(const video_format_t *, - opengl_tex_converter_t *); - #ifdef __ANDROID__ extern GLuint opengl_tex_converter_anop_init(const video_format_t *, diff --git a/modules/video_output/opengl/vout_helper.c b/modules/video_output/opengl/vout_helper.c index 2c8961a..321b8f6 100644 --- a/modules/video_output/opengl/vout_helper.c +++ b/modules/video_output/opengl/vout_helper.c @@ -51,7 +51,6 @@ static opengl_tex_converter_init_cb opengl_tex_converter_init_cbs[] = { opengl_tex_converter_generic_init, - opengl_tex_converter_xyz12_init, #ifdef __ANDROID__ opengl_tex_converter_anop_init, #endif _______________________________________________ vlc-commits mailing list [email protected] https://mailman.videolan.org/listinfo/vlc-commits
